1 Sample Estimation

Let us see what we can learn about our mystery samples!

1.1 Generate expressionsets

In my previous iteration, I neglected to include the nonesmeraldo, unassigned, and combined haplotype data. Let us fix that here. As an aside, in a separate previous iteration, I combined some of the older (tophat2-based from 2015) data with this data to see how these newer samples cluster with the previous samples. I want to do that again, but this time keep it separate.

1.1.1 The set of all haplotypes

Caveat: This is using hisat2 quantifications.

all_new_hisat <- create_expt("sample_sheets/all_samples.xlsx", file_column="allhisatfile",
                             gene_info=hisat_clbr_annot)
## Reading the sample metadata.
## The sample definitions comprises: 13 rows(samples) and 10 columns(metadata fields).
## Reading count tables.
## Reading count tables with read.table().
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1168/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1169/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows and merges to 25114 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1170/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows and merges to 25114 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1171/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows and merges to 25114 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1172/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows and merges to 25114 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1173/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows and merges to 25114 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/hpgl1174/outputs/hisat2_tcruzi_all/forward.count.xz contains 25114 rows and merges to 25114 rows.
## Finished reading count tables.
## Matched 25099 annotations and counts.
## Bringing together the count matrix and gene information.
## Some annotations were lost in merging, setting them to 'undefined'.
## The final expressionset has 25109 rows and 7 columns.
all_new_written <- sm(write_expt(
  all_new_hisat,
  excel=paste0("excel/all_new_hisat_written-v", ver, ".xlsx")))
all_new_hisat_semantic <- semantic_expt_filter(all_new_hisat,
                                               semantic_column="annot_gene_product")
## Hit 928 genes for term mucin.
## Now the matrix has 24181 elements.
## Hit 1523 genes for term sialidase.
## Now the matrix has 22658 elements.
## Hit 752 genes for term RHS.
## Now the matrix has 21906 elements.
## Hit 1331 genes for term MASP.
## Now the matrix has 20575 elements.
## Hit 564 genes for term DGF.
## Now the matrix has 20011 elements.
## Hit 424 genes for term GP63.
## Now the matrix has 19587 elements.

1.1.2 All haplotypes, salmon

all_new_salmon <- create_expt("sample_sheets/all_samples.xlsx", file_column="allsalmonfile",
                              gene_info=clbr_annot)
## Reading the sample metadata.
## The sample definitions comprises: 13 rows(samples) and 10 columns(metadata fields).
## Reading count tables.
## Reading salmon data with tximport.
## Finished reading count tables.
## Matched 23304 annotations and counts.
## Bringing together the count matrix and gene information.
## Some annotations were lost in merging, setting them to 'undefined'.
## The final expressionset has 23305 rows and 7 columns.
all_new_salmon_semantic <- semantic_expt_filter(all_new_salmon,
                                                semantic_column="annot_gene_product")
## Hit 928 genes for term mucin.
## Now the matrix has 22377 elements.
## Hit 1523 genes for term sialidase.
## Now the matrix has 20854 elements.
## Hit 752 genes for term RHS.
## Now the matrix has 20102 elements.
## Hit 1331 genes for term MASP.
## Now the matrix has 18771 elements.
## Hit 564 genes for term DGF.
## Now the matrix has 18207 elements.
## Hit 424 genes for term GP63.
## Now the matrix has 17783 elements.
all_salmon_written <- sm(write_expt(
  all_new_salmon,
  excel=paste0("excel/all_new_salmon_written-v", ver, ".xlsx")))

1.1.3 Esmeraldo

Caveat: This is using salmon quantifications.

esmer_new <- create_expt("sample_sheets/all_samples.xlsx", file_column="esmerfile",
                       gene_info=salmon_clbr_annot)
## Reading the sample metadata.
## The sample definitions comprises: 13 rows(samples) and 10 columns(metadata fields).
## Reading count tables.
## Reading salmon data with tximport.
## Finished reading count tables.
## Matched 8994 annotations and counts.
## Bringing together the count matrix and gene information.
## Some annotations were lost in merging, setting them to 'undefined'.
## The final expressionset has 10473 rows and 7 columns.
esmer_new_written <- sm(write_expt(
  esmer_new,
  excel=paste0("excel/esmer_new_salmon_written-v", ver, ".xlsx")))

1.1.4 Non-Esmeraldo

Caveat: This is using salmon quantifications.

nonesmer_new <- create_expt("sample_sheets/all_samples.xlsx", file_column="nonesmerfile",
                       gene_info=salmon_clbr_annot)
## Reading the sample metadata.
## The sample definitions comprises: 13 rows(samples) and 10 columns(metadata fields).
## Reading count tables.
## Reading salmon data with tximport.
## Finished reading count tables.
## Matched 9327 annotations and counts.
## Bringing together the count matrix and gene information.
## Some annotations were lost in merging, setting them to 'undefined'.
## The final expressionset has 10958 rows and 7 columns.
nonesmer_new_written <- sm(write_expt(
  nonesmer_new,
  excel=paste0("excel/nonesmer_new_salmon_written-v", ver, ".xlsx")))

1.1.5 Unassigned

Caveat: This is using salmon quantifications.

unassigned_new <- create_expt("sample_sheets/all_samples.xlsx", file_column="unassignedfile",
                              gene_info=salmon_clbr_annot)
## Reading the sample metadata.
## The sample definitions comprises: 13 rows(samples) and 10 columns(metadata fields).
## Reading count tables.
## Reading salmon data with tximport.
## Finished reading count tables.
## Matched 1184 annotations and counts.
## Bringing together the count matrix and gene information.
## Some annotations were lost in merging, setting them to 'undefined'.
## The final expressionset has 2507 rows and 7 columns.

1.1.6 Combine new and previous data

The previous data was via tophat, so it should only be combined with the hisat data.

all_previous <- create_expt("sample_sheets/all_samples.xlsx", file_column="alltophatfile",
                            gene_info=clbr_annot)
## Reading the sample metadata.
## The sample definitions comprises: 13 rows(samples) and 10 columns(metadata fields).
## Reading count tables.
## Reading count tables with read.table().
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/previous/hpgl0483/accepted_hits.count.xz contains 25105 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/previous/hpgl0486/accepted_hits.count.xz contains 25105 rows and merges to 25105 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/previous/hpgl0487/accepted_hits.count.xz contains 25105 rows and merges to 25105 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/previous/hpgl0488/accepted_hits.count.xz contains 25105 rows and merges to 25105 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/previous/hpgl0490/accepted_hits.count.xz contains 25105 rows and merges to 25105 rows.
## /cbcbsub/cbcb/nelsayed-scratch/atb/rnaseq/tcruzi_2019/preprocessing/previous/hpgl0481/accepted_hits.count.xz contains 25105 rows and merges to 25105 rows.
## Finished reading count tables.
## Matched 25099 annotations and counts.
## Bringing together the count matrix and gene information.
## Some annotations were lost in merging, setting them to 'undefined'.
## The final expressionset has 25100 rows and 6 columns.
current_names <- gsub(x=rownames(exprs(all_new_hisat)), pattern="^exon_", replacement="")
current_names <- make.names(gsub(x=current_names, pattern="\\.\\d+$", replacement=""), unique=TRUE)
## Copy the new data to a fresh file in case of error.
all_current <- set_expt_genenames(all_new_hisat, ids=current_names)

all_both <- combine_expts(all_previous, all_current)
## Warning in alleq(levels(x[[nm]]), levels(y[[nm]])): 2 string mismatches
## Warning: data frame column 'condition' levels not all.equal
## Warning in alleq(levels(x[[nm]]), levels(y[[nm]])): 1 string mismatch
## Warning: data frame column 'batch' levels not all.equal
dim(exprs(all_both))
## [1] 25109    13
summary(exprs(all_both))
##     hpgl0483         hpgl0486         hpgl0487         hpgl0488     
##  Min.   :     0   Min.   :     0   Min.   :     0   Min.   :     0  
##  1st Qu.:    90   1st Qu.:   123   1st Qu.:   105   1st Qu.:   259  
##  Median :   383   Median :   536   Median :   450   Median :   662  
##  Mean   :   781   Mean   :  1123   Mean   :   925   Mean   :  1267  
##  3rd Qu.:   850   3rd Qu.:  1212   3rd Qu.:  1004   3rd Qu.:  1341  
##  Max.   :147296   Max.   :199098   Max.   :165468   Max.   :187351  
##     hpgl0490         hpgl0481         hpgl1168       hpgl1169   
##  Min.   :     0   Min.   :     0   Min.   :   0   Min.   :   0  
##  1st Qu.:   178   1st Qu.:   236   1st Qu.:   2   1st Qu.:   3  
##  Median :   552   Median :   637   Median :  26   Median :  29  
##  Mean   :  1086   Mean   :  1216   Mean   :  69   Mean   :  76  
##  3rd Qu.:  1208   3rd Qu.:  1284   3rd Qu.:  76   3rd Qu.:  84  
##  Max.   :151001   Max.   :163528   Max.   :5060   Max.   :5281  
##     hpgl1170       hpgl1171       hpgl1172       hpgl1173   
##  Min.   :   0   Min.   :   0   Min.   :   0   Min.   :   0  
##  1st Qu.:   3   1st Qu.:   2   1st Qu.:   3   1st Qu.:   3  
##  Median :  27   Median :  28   Median :  34   Median :  36  
##  Mean   :  70   Mean   :  70   Mean   :  83   Mean   :  87  
##  3rd Qu.:  78   3rd Qu.:  78   3rd Qu.:  94   3rd Qu.: 100  
##  Max.   :4837   Max.   :6463   Max.   :6116   Max.   :7064  
##     hpgl1174   
##  Min.   :   0  
##  1st Qu.:   3  
##  Median :  30  
##  Mean   :  73  
##  3rd Qu.:  84  
##  Max.   :6722
written_both <- write_expt(all_both, excel="excel/both_written_20190813.xlsx")
## Writing the first sheet, containing a legend and some summary data.

## Writing the raw reads.
## Graphing the raw reads.

## Writing the normalized reads.
## Graphing the normalized reads.

## Writing the median reads by factor.
## The factor epi has 3 rows.
## The factor tryp has 3 rows.
## The factor unknown has 4 rows.
## The factor wt has 3 rows.

1.2 Coverage of new vs. previous

all_libsize <- plot_libsize(all_both)
## The scale difference between the smallest and largest
## libraries is > 10. Assuming a log10 scale is better, set scale=FALSE if not.
all_libsize$plot

all_norm <- normalize_expt(all_both, norm="quant", transform="log2", convert="cpm", filter=TRUE)
## This function will replace the expt$expressionset slot with:
## log2(cpm(quant(cbcb(data))))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Not correcting the count-data for batch effects.  If batch is
##  included in EdgerR/limma's model, then this is probably wise; but in extreme
##  batch effects this is a good parameter to play with.
## Step 1: performing count filter with option: cbcb
## Removing 2425 low-count genes (22684 remaining).
## Step 2: normalizing the data with quant.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 55 values equal to 0, adding 1 to the matrix.
## Step 5: not doing batch correction.
all_pca <- plot_pca(all_norm)
all_pca$plot

2 Look at data distributions

Normalize and plot a couple plots for these and see how they look.

all_hisat_norm <- sm(normalize_expt(all_new_hisat, norm="quant", convert="cpm",
                                    transform="log2"))
plot_pca(all_hisat_norm)$plot

plot_corheat(all_hisat_norm)$plot

all_salmon_norm <- sm(normalize_expt(all_new_salmon, norm="quant", convert="cpm",
                                    transform="log2"))
plot_pca(all_salmon_norm)$plot

plot_corheat(all_salmon_norm)$plot

esmer_new_norm <- sm(normalize_expt(esmer_new, norm="quant", convert="cpm",
                                    transform="log2"))
plot_pca(esmer_new_norm)$plot

plot_corheat(esmer_new_norm)$plot

nonesmer_new_norm <- sm(normalize_expt(nonesmer_new, norm="quant", convert="cpm",
                                       transform="log2"))
plot_pca(nonesmer_new_norm)$plot

plot_corheat(nonesmer_new_norm)$plot

unas_new_norm <- sm(normalize_expt(unassigned_new, norm="quant", convert="cpm",
                                   transform="log2"))
plot_pca(unas_new_norm)$plot

plot_corheat(unas_new_norm)$plot

2.1 Compare old/new data

The big caveat here is of course the coverage. That reminds me, I have been meaning to make the size of the glyphs correspond to the samples’ relative coverage. This is a great dataset to illustrate that idea.

all_both_norm <- sm(normalize_expt(all_both, norm="quant", convert="cpm",
                                   transform="log2"))
plot_pca(all_both_norm)$plot

all_both_norm_sva <- normalize_expt(all_both, norm="quant", convert="cpm",
                                    transform="log2", batch="svaseq")
## This function will replace the expt$expressionset slot with:
## log2(svaseq(cpm(quant(data))))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Filter is false, this should likely be set to something, good
##  choices include cbcb, kofa, pofa (anything but FALSE).  If you want this to
##  stay FALSE, keep in mind that if other normalizations are performed, then the
##  resulting libsizes are likely to be strange (potentially negative!)
## Warning in normalize_expt(all_both, norm = "quant", convert = "cpm",
## transform = "log2", : Quantile normalization and sva do not always play
## well together.
## Step 1: not doing count filtering.
## Step 2: normalizing the data with quant.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 4293 values equal to 0, adding 1 to the matrix.
## Step 5: doing batch correction with svaseq.
## Note to self:  If you get an error like 'x contains missing values' The data has too many 0's and needs a stronger low-count filter applied.
## Passing off to all_adjusters.
## batch_counts: Before batch/surrogate estimation, 283089 entries are x>1: 86.7%.
## batch_counts: Before batch/surrogate estimation, 4293 entries are x==0: 1.32%.
## batch_counts: Before batch/surrogate estimation, 39035 entries are 0<x<1: 12.0%.
## The be method chose 6 surrogate variable(s).
## Attempting svaseq estimation with 6 surrogates.
## There are 2137 (0.655%) elements which are < 0 after batch correction.
plot_pca(all_both_norm_sva)$plot

2.2 Get DE Tables

For each data set, perform the wt vs. not DE analysis. Print some plots of the results later. My all_pairwise() function is very chatty. I will let it talk for the first run, but then stop it for the later.

2.2.1 All haplotypes

keepers <- list(
  "ko_vs_wt" = c("unknown", "wt"))

all_hisat_de <- all_pairwise(all_new_hisat, model_batch=FALSE, do_ebseq=TRUE)
## This function will replace the expt$expressionset slot with:
## log2(cpm(quant(cbcb(data))))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Not correcting the count-data for batch effects.  If batch is
##  included in EdgerR/limma's model, then this is probably wise; but in extreme
##  batch effects this is a good parameter to play with.
## Step 1: performing count filter with option: cbcb
## Removing 5600 low-count genes (19509 remaining).
## Step 2: normalizing the data with quant.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 1163 values equal to 0, adding 1 to the matrix.
## Step 5: not doing batch correction.
## Plotting a PCA before surrogates/batch inclusion.
## Assuming no batch in model for testing pca.
## Finished running DE analyses, collecting outputs.
## Comparing analyses.
all_semantichisat_de <- all_pairwise(all_new_hisat_semantic, model_batch=FALSE)
## This function will replace the expt$expressionset slot with:
## log2(cpm(quant(cbcb(data))))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Not correcting the count-data for batch effects.  If batch is
##  included in EdgerR/limma's model, then this is probably wise; but in extreme
##  batch effects this is a good parameter to play with.
## Step 1: performing count filter with option: cbcb
## Removing 3749 low-count genes (15838 remaining).
## Step 2: normalizing the data with quant.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 607 values equal to 0, adding 1 to the matrix.
## Step 5: not doing batch correction.
## Plotting a PCA before surrogates/batch inclusion.
## Assuming no batch in model for testing pca.
## Finished running DE analyses, collecting outputs.
## Comparing analyses.
all_semantichisat_tables <- combine_de_tables(
  all_semantichisat_de, keepers=keepers, excel="excel/semantic_combined-v20190813.xlsx")
## Deleting the file excel/semantic_combined-v20190813.xlsx before writing the tables.
## Writing a legend of columns.
## Printing a pca plot before/after surrogates/batch estimation.
## Working on 1/1: ko_vs_wt which is: unknown/wt.
## Found inverse table with wt_vs_unknown
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Adding venn plots for ko_vs_wt.
## Limma expression coefficients for ko_vs_wt; R^2: 0.985; equation: y = 0.993x + 0.0241
## Edger expression coefficients for ko_vs_wt; R^2: 0.988; equation: y = 0.99x + 0.0668
## DESeq2 expression coefficients for ko_vs_wt; R^2: 0.967; equation: y = 0.951x + 0.313
## Writing summary information.
## Performing save of excel/semantic_combined-v20190813.xlsx.
all_semantichisat_sig <- extract_significant_genes(
  all_semantichisat_tables, excel="excel/semantic_sig-v20190813.xlsx")
## Writing a legend of columns.
## Writing excel data according to limma for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 102 genes.
## After (adj)p filter, the down genes table has 70 genes.
## After fold change filter, the up genes table has 12 genes.
## After fold change filter, the down genes table has 21 genes.
## Printing significant genes to the file: excel/semantic_sig-v20190813.xlsx
## 1/1: Creating significant table up_limma_ko_vs_wt
## Writing excel data according to edger for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 833 genes.
## After (adj)p filter, the down genes table has 784 genes.
## After fold change filter, the up genes table has 131 genes.
## After fold change filter, the down genes table has 73 genes.
## Printing significant genes to the file: excel/semantic_sig-v20190813.xlsx
## 1/1: Creating significant table up_edger_ko_vs_wt
## Writing excel data according to deseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 504 genes.
## After (adj)p filter, the down genes table has 513 genes.
## After fold change filter, the up genes table has 54 genes.
## After fold change filter, the down genes table has 22 genes.
## Printing significant genes to the file: excel/semantic_sig-v20190813.xlsx
## 1/1: Creating significant table up_deseq_ko_vs_wt
## Writing excel data according to ebseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 280 genes.
## After (adj)p filter, the down genes table has 457 genes.
## After fold change filter, the up genes table has 33 genes.
## After fold change filter, the down genes table has 20 genes.
## Printing significant genes to the file: excel/semantic_sig-v20190813.xlsx
## 1/1: Creating significant table up_ebseq_ko_vs_wt
## Writing excel data according to basic for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 0 genes.
## After (adj)p filter, the down genes table has 1 genes.
## After fold change filter, the up genes table has 0 genes.
## After fold change filter, the down genes table has 0 genes.
## Printing significant genes to the file: excel/semantic_sig-v20190813.xlsx
## The up table ko_vs_wt is empty.
## The down table ko_vs_wt is empty.
## Adding significance bar plots.
all_semantichisat_int <- intersect_significant(
  all_semantichisat_tables, excel="excel/semantic_int-v20190813.xlsx")
all_hisat_tables <- combine_de_tables(
  all_hisat_de,
  keepers=keepers,
  excel=paste0("excel/all_hisat_tables-v", ver, ".xlsx"))
## Deleting the file excel/all_hisat_tables-v20190513.xlsx before writing the tables.
## Writing a legend of columns.
## Printing a pca plot before/after surrogates/batch estimation.
## Working on 1/1: ko_vs_wt which is: unknown/wt.
## Found inverse table with wt_vs_unknown
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Adding venn plots for ko_vs_wt.
## Limma expression coefficients for ko_vs_wt; R^2: 0.98; equation: y = 0.99x + 0.0353
## Edger expression coefficients for ko_vs_wt; R^2: 0.982; equation: y = 0.987x + 0.0757
## DESeq2 expression coefficients for ko_vs_wt; R^2: 0.963; equation: y = 0.966x + 0.199
## Writing summary information.
## Performing save of excel/all_hisat_tables-v20190513.xlsx.
## It is so weird that limma/deseq/edger do not agree for this data,
## this should be looked into further. Ahh, looking at the all_new_tables.xlsx file,
## I think I see the answer.  The pairwise_summary worksheet shows that the logFC values
## are very similar, but the plots of p-values to the right of the table show
## significantly different thresholds of 'significant.'

## extract_significant_genes() talks too much, I am silencing it in all invocations.
all_hisat_sig <- sm(extract_significant_genes(
  all_hisat_tables,
  excel=paste0("excel/all_hisat_significant-v", ver, ".xlsx")))

all_hisat_0.1_sig <- extract_significant_genes(
  all_hisat_tables, p=0.1,
  excel="excel/all_hisat_p0.1-v20190813.xlsx")
## Writing a legend of columns.
## Writing excel data according to limma for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 353 genes.
## After (adj)p filter, the down genes table has 373 genes.
## After fold change filter, the up genes table has 48 genes.
## After fold change filter, the down genes table has 103 genes.
## Printing significant genes to the file: excel/all_hisat_p0.1-v20190813.xlsx
## 1/1: Creating significant table up_limma_ko_vs_wt
## Writing excel data according to edger for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 1194 genes.
## After (adj)p filter, the down genes table has 1285 genes.
## After fold change filter, the up genes table has 216 genes.
## After fold change filter, the down genes table has 238 genes.
## Printing significant genes to the file: excel/all_hisat_p0.1-v20190813.xlsx
## 1/1: Creating significant table up_edger_ko_vs_wt
## Writing excel data according to deseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 779 genes.
## After (adj)p filter, the down genes table has 815 genes.
## After fold change filter, the up genes table has 77 genes.
## After fold change filter, the down genes table has 41 genes.
## Printing significant genes to the file: excel/all_hisat_p0.1-v20190813.xlsx
## 1/1: Creating significant table up_deseq_ko_vs_wt
## Writing excel data according to ebseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 372 genes.
## After (adj)p filter, the down genes table has 525 genes.
## After fold change filter, the up genes table has 50 genes.
## After fold change filter, the down genes table has 39 genes.
## Printing significant genes to the file: excel/all_hisat_p0.1-v20190813.xlsx
## 1/1: Creating significant table up_ebseq_ko_vs_wt
## Writing excel data according to basic for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 6 genes.
## After (adj)p filter, the down genes table has 6 genes.
## After fold change filter, the up genes table has 1 genes.
## After fold change filter, the down genes table has 3 genes.
## Printing significant genes to the file: excel/all_hisat_p0.1-v20190813.xlsx
## 1/1: Creating significant table up_basic_ko_vs_wt
## Adding significance bar plots.
all_hisat_0.1_int <- intersect_significant(
  all_hisat_tables, p=0.1,
  excel="excel/all_hisat_p0.1_intersect-v20190813.xlsx")
all_hisat_sig <- extract_significant_genes(
  all_hisat_tables, excel="excel/significant_genes.xlsx")
## Writing a legend of columns.
## Writing excel data according to limma for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 115 genes.
## After (adj)p filter, the down genes table has 102 genes.
## After fold change filter, the up genes table has 19 genes.
## After fold change filter, the down genes table has 49 genes.
## Printing significant genes to the file: excel/significant_genes.xlsx
## 1/1: Creating significant table up_limma_ko_vs_wt
## Writing excel data according to edger for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 816 genes.
## After (adj)p filter, the down genes table has 896 genes.
## After fold change filter, the up genes table has 149 genes.
## After fold change filter, the down genes table has 166 genes.
## Printing significant genes to the file: excel/significant_genes.xlsx
## 1/1: Creating significant table up_edger_ko_vs_wt
## Writing excel data according to deseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 525 genes.
## After (adj)p filter, the down genes table has 548 genes.
## After fold change filter, the up genes table has 60 genes.
## After fold change filter, the down genes table has 32 genes.
## Printing significant genes to the file: excel/significant_genes.xlsx
## 1/1: Creating significant table up_deseq_ko_vs_wt
## Writing excel data according to ebseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 301 genes.
## After (adj)p filter, the down genes table has 460 genes.
## After fold change filter, the up genes table has 40 genes.
## After fold change filter, the down genes table has 33 genes.
## Printing significant genes to the file: excel/significant_genes.xlsx
## 1/1: Creating significant table up_ebseq_ko_vs_wt
## Writing excel data according to basic for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 0 genes.
## After (adj)p filter, the down genes table has 1 genes.
## After fold change filter, the up genes table has 0 genes.
## After fold change filter, the down genes table has 0 genes.
## Printing significant genes to the file: excel/significant_genes.xlsx
## The up table ko_vs_wt is empty.
## The down table ko_vs_wt is empty.
## Adding significance bar plots.
all_hisat_inter <- intersect_significant(
  all_hisat_tables,
  excel="excel/all_hisat_new_intersections-v20190813.xlsx")
all_salmon_de <- sm(all_pairwise(all_new_salmon, model_batch=FALSE, do_ebseq=TRUE))
all_salmon_tables <- sm(combine_de_tables(
  all_salmon_de,
  keepers=keepers,
  excel=paste0("excel/all_salmon_tables-v", ver, ".xlsx")))
all_salmon_sig <- sm(extract_significant_genes(
  all_salmon_tables,
  excel=paste0("excel/all_salmon_significant-v", ver, ".xlsx")))

all_semanticsalmon_de <- all_pairwise(all_new_salmon_semantic, model_batch=FALSE)
## This function will replace the expt$expressionset slot with:
## log2(cpm(quant(cbcb(data))))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Not correcting the count-data for batch effects.  If batch is
##  included in EdgerR/limma's model, then this is probably wise; but in extreme
##  batch effects this is a good parameter to play with.
## Step 1: performing count filter with option: cbcb
## Removing 1423 low-count genes (16360 remaining).
## Step 2: normalizing the data with quant.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 869 values equal to 0, adding 1 to the matrix.
## Step 5: not doing batch correction.
## Plotting a PCA before surrogates/batch inclusion.
## Assuming no batch in model for testing pca.
## Finished running DE analyses, collecting outputs.
## Comparing analyses.
all_semanticsalmon_tables <- combine_de_tables(
  all_semanticsalmon_de, keepers=keepers, excel="excel/semantic_salmon_combined-v20190813.xlsx")
## Deleting the file excel/semantic_salmon_combined-v20190813.xlsx before writing the tables.
## Writing a legend of columns.
## Printing a pca plot before/after surrogates/batch estimation.
## Working on 1/1: ko_vs_wt which is: unknown/wt.
## Found inverse table with wt_vs_unknown
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Adding venn plots for ko_vs_wt.
## Limma expression coefficients for ko_vs_wt; R^2: 0.974; equation: y = 0.986x + 0.0596
## Edger expression coefficients for ko_vs_wt; R^2: 0.976; equation: y = 0.982x + 0.11
## DESeq2 expression coefficients for ko_vs_wt; R^2: 0.966; equation: y = 0.95x + 0.301
## Writing summary information.
## Performing save of excel/semantic_salmon_combined-v20190813.xlsx.
all_semanticsalmon_sig <- extract_significant_genes(
  all_semanticsalmon_tables, excel="excel/semantic_salmon_sig-v20190813.xlsx")
## Writing a legend of columns.
## Writing excel data according to limma for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 263 genes.
## After (adj)p filter, the down genes table has 215 genes.
## After fold change filter, the up genes table has 24 genes.
## After fold change filter, the down genes table has 51 genes.
## Printing significant genes to the file: excel/semantic_salmon_sig-v20190813.xlsx
## 1/1: Creating significant table up_limma_ko_vs_wt
## Writing excel data according to edger for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 977 genes.
## After (adj)p filter, the down genes table has 1050 genes.
## After fold change filter, the up genes table has 99 genes.
## After fold change filter, the down genes table has 135 genes.
## Printing significant genes to the file: excel/semantic_salmon_sig-v20190813.xlsx
## 1/1: Creating significant table up_edger_ko_vs_wt
## Writing excel data according to deseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 272 genes.
## After (adj)p filter, the down genes table has 370 genes.
## After fold change filter, the up genes table has 7 genes.
## After fold change filter, the down genes table has 11 genes.
## Printing significant genes to the file: excel/semantic_salmon_sig-v20190813.xlsx
## 1/1: Creating significant table up_deseq_ko_vs_wt
## Writing excel data according to ebseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 107 genes.
## After (adj)p filter, the down genes table has 256 genes.
## After fold change filter, the up genes table has 10 genes.
## After fold change filter, the down genes table has 17 genes.
## Printing significant genes to the file: excel/semantic_salmon_sig-v20190813.xlsx
## 1/1: Creating significant table up_ebseq_ko_vs_wt
## Writing excel data according to basic for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 1 genes.
## After (adj)p filter, the down genes table has 0 genes.
## After fold change filter, the up genes table has 0 genes.
## After fold change filter, the down genes table has 0 genes.
## Printing significant genes to the file: excel/semantic_salmon_sig-v20190813.xlsx
## The up table ko_vs_wt is empty.
## The down table ko_vs_wt is empty.
## Adding significance bar plots.
all_semanticsalmon_int <- intersect_significant(
  all_semanticsalmon_tables, excel="excel/semantic_salmon_int-v20190813.xlsx")
all_semantichisat_de <- all_pairwise(all_new_hisat_semantic, model_batch=FALSE)
## This function will replace the expt$expressionset slot with:
## log2(cpm(quant(cbcb(data))))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Not correcting the count-data for batch effects.  If batch is
##  included in EdgerR/limma's model, then this is probably wise; but in extreme
##  batch effects this is a good parameter to play with.
## Step 1: performing count filter with option: cbcb
## Removing 3749 low-count genes (15838 remaining).
## Step 2: normalizing the data with quant.
## Step 3: converting the data with cpm.
## Step 4: transforming the data with log2.
## transform_counts: Found 607 values equal to 0, adding 1 to the matrix.
## Step 5: not doing batch correction.
## Plotting a PCA before surrogates/batch inclusion.
## Assuming no batch in model for testing pca.
## Finished running DE analyses, collecting outputs.
## Comparing analyses.
all_semantichisat_tables <- combine_de_tables(
  all_semantichisat_de, keepers=keepers, excel="excel/semantic_hisat_combined-v20190813.xlsx")
## Deleting the file excel/semantic_hisat_combined-v20190813.xlsx before writing the tables.
## Writing a legend of columns.
## Printing a pca plot before/after surrogates/batch estimation.
## Working on 1/1: ko_vs_wt which is: unknown/wt.
## Found inverse table with wt_vs_unknown
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Used Bon Ferroni corrected t test(s) between columns.
## Adding venn plots for ko_vs_wt.
## Limma expression coefficients for ko_vs_wt; R^2: 0.985; equation: y = 0.993x + 0.0241
## Edger expression coefficients for ko_vs_wt; R^2: 0.988; equation: y = 0.99x + 0.0668
## DESeq2 expression coefficients for ko_vs_wt; R^2: 0.967; equation: y = 0.951x + 0.313
## Writing summary information.
## Performing save of excel/semantic_hisat_combined-v20190813.xlsx.
all_semantichisat_sig <- extract_significant_genes(
  all_semantichisat_tables, excel="excel/semantic_hisat_sig-v20190813.xlsx")
## Writing a legend of columns.
## Writing excel data according to limma for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 102 genes.
## After (adj)p filter, the down genes table has 70 genes.
## After fold change filter, the up genes table has 12 genes.
## After fold change filter, the down genes table has 21 genes.
## Printing significant genes to the file: excel/semantic_hisat_sig-v20190813.xlsx
## 1/1: Creating significant table up_limma_ko_vs_wt
## Writing excel data according to edger for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 833 genes.
## After (adj)p filter, the down genes table has 784 genes.
## After fold change filter, the up genes table has 131 genes.
## After fold change filter, the down genes table has 73 genes.
## Printing significant genes to the file: excel/semantic_hisat_sig-v20190813.xlsx
## 1/1: Creating significant table up_edger_ko_vs_wt
## Writing excel data according to deseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 504 genes.
## After (adj)p filter, the down genes table has 513 genes.
## After fold change filter, the up genes table has 54 genes.
## After fold change filter, the down genes table has 22 genes.
## Printing significant genes to the file: excel/semantic_hisat_sig-v20190813.xlsx
## 1/1: Creating significant table up_deseq_ko_vs_wt
## Writing excel data according to ebseq for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 280 genes.
## After (adj)p filter, the down genes table has 457 genes.
## After fold change filter, the up genes table has 33 genes.
## After fold change filter, the down genes table has 20 genes.
## Printing significant genes to the file: excel/semantic_hisat_sig-v20190813.xlsx
## 1/1: Creating significant table up_ebseq_ko_vs_wt
## Writing excel data according to basic for ko_vs_wt: 1/5.
## After (adj)p filter, the up genes table has 0 genes.
## After (adj)p filter, the down genes table has 1 genes.
## After fold change filter, the up genes table has 0 genes.
## After fold change filter, the down genes table has 0 genes.
## Printing significant genes to the file: excel/semantic_hisat_sig-v20190813.xlsx
## The up table ko_vs_wt is empty.
## The down table ko_vs_wt is empty.
## Adding significance bar plots.
all_semantichisat_int <- intersect_significant(
  all_semantichisat_tables, excel="excel/semantic_hisat_int-v20190813.xlsx")
salmon_table <- all_salmon_tables[["data"]][[1]]
hisat_table <- all_hisat_tables[["data"]][[1]]
rownames(hisat_table) <- gsub(pattern="^exon_", replacement="", x=rownames(hisat_table))
rownames(hisat_table) <- gsub(pattern="\\.1$", replacement="", x=rownames(hisat_table))
merged_table <- merge(salmon_table, hisat_table, by="row.names")
cor.test(merged_table[["limma_logfc.x"]], merged_table[["limma_logfc.y"]], method="spearman")
## Warning in cor.test.default(merged_table[["limma_logfc.x"]],
## merged_table[["limma_logfc.y"]], : Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  merged_table[["limma_logfc.x"]] and merged_table[["limma_logfc.y"]]
## S = 5.2e+11, p-value <2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##    rho 
## 0.7523
cor.test(merged_table[["deseq_logfc.x"]], merged_table[["deseq_logfc.y"]], method="spearman")
## Warning in cor.test.default(merged_table[["deseq_logfc.x"]],
## merged_table[["deseq_logfc.y"]], : Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  merged_table[["deseq_logfc.x"]] and merged_table[["deseq_logfc.y"]]
## S = 5.4e+11, p-value <2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##    rho 
## 0.7433
cor.test(merged_table[["edger_logfc.x"]], merged_table[["edger_logfc.y"]], method="spearman")
## Warning in cor.test.default(merged_table[["edger_logfc.x"]],
## merged_table[["edger_logfc.y"]], : Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  merged_table[["edger_logfc.x"]] and merged_table[["edger_logfc.y"]]
## S = 5.4e+11, p-value <2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##    rho 
## 0.7421
## holy crap I utterly expected these to be much higher, in other data sets they were >= 0.98.
test <- plot_linear_scatter(merged_table[, c("deseq_logfc.x", "deseq_logfc.y")])
## Used Bon Ferroni corrected t test(s) between columns.
test[["scatter"]]

2.2.2 Esmeraldo

esmer_new_de <- sm(all_pairwise(esmer_new, model_batch=FALSE, do_ebseq=TRUE))
esmer_new_tables <- sm(combine_de_tables(
  esmer_new_de,
  keepers=keepers,
  excel=paste0("excel/esmer_new_tables-v", ver, ".xlsx")))
esmer_new_sig <- sm(extract_significant_genes(
  esmer_new_tables,
  excel=paste0("excel/esmer_new_significant-v", ver, ".xlsx")))

2.2.3 Non-Esmeraldo

nonesmer_new_de <- sm(all_pairwise(nonesmer_new, model_batch=FALSE, do_ebseq=TRUE))
nonesmer_new_tables <- sm(combine_de_tables(
  nonesmer_new_de,
  keepers=keepers,
  excel=paste0("excel/nonesmer_new_tables-v", ver, ".xlsx")))
nonesmer_new_sig <- sm(extract_significant_genes(
  nonesmer_new_tables,
  excel=paste0("excel/nonesmer_new_significant-v", ver, ".xlsx")))

2.3 Compare Esmeraldo and Non-Esmeraldo

library(EuPathDB)
## Loading required package: GenomeInfoDbData
## 
## This is EuPathDB version 1.6.0
##  Read 'EuPathDB()' to get started.
esmer_names <- get_eupath_pkgnames(esmer_entry)
## Error in get_eupath_pkgnames(esmer_entry): could not find function "get_eupath_pkgnames"
library(esmer_names$orgdb, character=TRUE)
## Error in library(esmer_names$orgdb, character = TRUE): there is no package called 'org.Tcruzi.CL.Brener.Esmeraldo.like.v43.eg.db'
nonesmer_names <- get_eupath_pkgnames(nonesmer_entry)
## Error in get_eupath_pkgnames(nonesmer_entry): could not find function "get_eupath_pkgnames"
library(nonesmer_names$orgdb, character=TRUE)
## Error in library(nonesmer_names$orgdb, character = TRUE): there is no package called 'org.Tcruzi.CL.Brener.Non.Esmeraldo.like.v43.eg.db'
unas_names <- get_eupath_pkgnames(unas_entry)
## Error in get_eupath_pkgnames(unas_entry): could not find function "get_eupath_pkgnames"
library(unas_names$orgdb, character=TRUE)
## Error in library(unas_names$orgdb, character = TRUE): there is no package called 'org.Tcruzi.CL.Brener.v43.eg.db'
esmer_db <- get0(esmer_names$orgdb)
nonesmer_db <- get0(nonesmer_names$orgdb)

esmer_orthos <- load_orgdb_go(
  esmer_db,
  columns=c("orthologs_gene_id", "orthologs_gid", "orthologs_organism", "orthologs_product"))
## Assuming Homo.sapiens.
## Loading required package: AnnotationDbi
## Loading required package: stats4
## Loading required package: IRanges
## Loading required package: S4Vectors
## 
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:base':
## 
##     expand.grid
## Loading required package: OrganismDbi
## Loading required package: GenomicFeatures
## Loading required package: GenomeInfoDb
## Loading required package: GenomicRanges
## Loading required package: GO.db
## Error: package 'org.Hs.eg.db' required by 'Homo.sapiens' could not be found
nonesmer_idx <- grepl(x=esmer_orthos[["ORTHOLOGS_ORGANISM"]], pattern="Non")
nonesmer_table <- esmer_orthos[nonesmer_idx, ]

3 Variant positions

snp_cond_expt <- count_expt_snps(all_new_hisat, type="percent")
## Making a matrix of percentages.
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
## Parsed with column specification:
## cols(
##   `# chr_pos_ref_alt` = col_character(),
##   diff_count = col_double(),
##   all_count = col_double(),
##   pct = col_double()
## )
snp_numbers <- plot_libsize(snp_cond_expt)
snp_numbers$plot

snp_cond_sets <- get_snp_sets(snp_cond_expt, factor="condition")
## The factor wt has 3 rows.
## The factor unknown has 4 rows.
snp_cond_summary <- snps_vs_genes(all_new_hisat, snp_cond_sets)
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': Tcruzi_10142, Tcruzi_1024, Tcruzi_1043, Tcruzi_1061, Tcruzi_10659, Tcruzi_10699, Tcruzi_10888, Tcruzi_11148, Tcruzi_11256, Tcruzi_11260, Tcruzi_11316, Tcruzi_11512, Tcruzi_11664, Tcruzi_11809, Tcruzi_11828, Tcruzi_11864, Tcruzi_11994, Tcruzi_12097, Tcruzi_12098, Tcruzi_12161, Tcruzi_1217, Tcruzi_12178, Tcruzi_12292, Tcruzi_12515, Tcruzi_12519, Tcruzi_12626, Tcruzi_12727, Tcruzi_12964, Tcruzi_13041, Tcruzi_13052, Tcruzi_13134, Tcruzi_13226, Tcruzi_13277, Tcruzi_13309, Tcruzi_13381, Tcruzi_134, Tcruzi_13502, Tcruzi_13537, Tcruzi_13555, Tcruzi_13604, Tcruzi_13609, Tcruzi_13788, Tcruzi_13827, Tcruzi_13965, Tcruzi_13993, Tcruzi_14180, Tcruzi_14413, Tcruzi_14581, Tcruzi_14624, Tcruzi_14652, Tcruzi_14667, Tcruzi_14725, Tcruzi_14746, Tcruzi_14871, Tcruzi_14905, Tcruzi_14934, Tcruzi_14940, Tcruzi_15133, Tcruzi_15331, Tcruzi_15352, Tcruzi_15418, Tcruzi_15478, Tcruzi_15516, Tcruzi_15530, Tcruzi_15648, Tcruzi_15786, Tcruzi_15826, Tcruzi_15844, Tcruzi_15882, Tcruzi_16007, Tcruzi_16223, Tcruzi_16277, Tcruzi_16337, Tcruzi_16425, Tcruzi_16458, Tcruzi_16473, Tcruzi_16698, Tcruzi_16730, Tcruzi_16804, Tcruzi_16822, Tcruzi_16903, Tcruzi_16916, Tcruzi_16958, Tcruzi_17030, Tcruzi_1707, Tcruzi_17101, Tcruzi_17327, Tcruzi_17524, Tcruzi_17575, Tcruzi_17711, Tcruzi_1802, Tcruzi_18174, Tcruzi_18279, Tcruzi_18304, Tcruzi_18645, Tcruzi_1910, Tcruzi_19158, Tcruzi_19253, Tcruzi_19299, Tcruzi_19312, Tcruzi_1944, Tcruzi_19532, Tcruzi_19635, Tcruzi_19638, Tcruzi_1967, Tcruzi_19749, Tcruzi_19773, Tcruzi_19776, Tcruzi_20136, Tcruzi_20222, Tcruzi_20390, Tcruzi_20478, Tcruzi_20654, Tcruzi_20690, Tcruzi_2073, Tcruzi_20778, Tcruzi_20808, Tcruzi_20878, Tcruzi_20907, Tcruzi_20996, Tcruzi_21034, Tcruzi_21091, Tcruzi_21298, Tcruzi_21319, Tcruzi_21518, Tcruzi_21871, Tcruzi_21955, Tcruzi_21978, Tcruzi_22268, Tcruzi_22401, Tcruzi_22687, Tcruzi_22770, Tcruzi_22816, Tcruzi_22993, Tcruzi_23021, Tcruzi_23224, Tcruzi_23336, Tcruzi_23396, Tcruzi_23491, Tcruzi_23871, Tcruzi_23901, Tcruzi_23970, Tcruzi_24008, Tcruzi_24108, Tcruzi_24225, Tcruzi_24524, Tcruzi_24686, Tcruzi_24721, Tcruzi_24722, Tcruzi_24887, Tcruzi_24909, Tcruzi_25049, Tcruzi_25087, Tcruzi_25179, Tcruzi_25185, Tcruzi_25206, Tcruzi_25250, Tcruzi_25273, Tcruzi_25408, Tcruzi_25424, Tcruzi_25458, Tcruzi_2548, Tcruzi_25576, Tcruzi_25713, Tcruzi_25982, Tcruzi_26318, Tcruzi_27154, Tcruzi_27286, Tcruzi_2732, Tcruzi_27732, Tcruzi_27907, Tcruzi_27909, Tcruzi_27955, Tcruzi_28032, Tcruzi_28052, Tcruzi_28059, Tcruzi_2842, Tcruzi_28454, Tcruzi_28602, Tcruzi_2868, Tcruzi_29037, Tcruzi_29089, Tcruzi_29090, Tcruzi_29208, Tcruzi_29232, Tcruzi_2930, Tcruzi_29329, Tcruzi_29371, Tcruzi_29639, Tcruzi_30347, Tcruzi_30405, Tcruzi_30838, Tcruzi_3086, Tcruzi_30976, Tcruzi_31047, Tcruzi_31125, Tcruzi_31363, Tcruzi_31765, Tcruzi_3210, Tcruzi_32224, Tcruzi_32364, Tcruzi_32487, Tcruzi_32551, Tcruzi_32658, Tcruzi_3291, Tcruzi_32953, Tcruzi_3421, Tcruzi_3501, Tcruzi_3587, Tcruzi_3924, Tcruzi_4211, Tcruzi_5188, Tcruzi_524, Tcruzi_6456, Tcruzi_6480, Tcruzi_6531, Tcruzi_6636, Tcruzi_6652, Tcruzi_6753, Tcruzi_6791, Tcruzi_681, Tcruzi_7322, Tcruzi_8977, Tcruzi_9080, Tcruzi_9095, Tcruzi_9277, Tcruzi_9299, Tcruzi_9362, Tcruzi_9372, Tcruzi_9395, Tcruzi_9447, Tcruzi_9545, Tcruzi_9682, Tcruzi_9730, Tcruzi_981, Tcruzi_9856, Tcruzi_9971, Tcruzi_9991
##   - in 'y': TcChr1-P, TcChr1-S, TcChr15-P, TcChr3-P, Tcruzi_10059, Tcruzi_10145, Tcruzi_1016, Tcruzi_10656, Tcruzi_1095, Tcruzi_1102, Tcruzi_11180, Tcruzi_11431, Tcruzi_11586, Tcruzi_11767, Tcruzi_11788, Tcruzi_1189, Tcruzi_12118, Tcruzi_12248, Tcruzi_12275, Tcruzi_12697, Tcruzi_12995, Tcruzi_13037, Tcruzi_13347, Tcruzi_1349, Tcruzi_1372, Tcruzi_13834, Tcruzi_1409, Tcruzi_14105, Tcruzi_14178, Tcruzi_14377, Tcruzi_149, Tcruzi_14980, Tcruzi_15295, Tcruzi_1534, Tcruzi_1550, Tcruzi_1648, Tcruzi_1676, Tcruzi_1681, Tcruzi_1699, Tcruzi_17087, Tcruzi_17328, Tcruzi_1806, Tcruzi_18207, Tcruzi_18236, Tcruzi_18273, Tcruzi_1878, Tcruzi_19089, Tcruzi_19748, Tcruzi_1976, Tcruzi_19997, Tcruzi_20168, Tcruzi_2022, Tcruzi_2025, Tcruzi_2057, Tcruzi_2065, Tcruzi_21421, Tcruzi_2150, Tcruzi_22113, Tcruzi_2240, Tcruzi_2307, Tcruzi_23428, Tcruzi_23437, Tcruzi_23566, Tcruzi_238, Tcruzi_2416, Tcruzi_24365, Tcruzi_24516, Tcruzi_25155, Tcruzi_2522, Tcruzi_25287, Tcruzi_25302, Tcruzi_25378, Tcruzi_25507, Tcruzi_25599, Tcruzi_25905, Tcruzi_26149, Tcruzi_2621, Tcruzi_2651, Tcruzi_26525, Tcruzi_26549, Tcruzi_26567, Tcruzi_2692, Tcruzi_27517, Tcruzi_27577, Tcruzi_2767, Tcruzi_29049, Tcruzi_29321, Tcruzi_29363, Tcruzi_2942, Tcruzi_2943, Tcruzi_29909, Tcruzi_3020, Tcruzi_3032, Tcruzi_3062, Tcruzi_3108, Tcruzi_315, Tcruzi_3182, Tcruzi_31930, Tcruzi_3257, Tcruzi_3295, Tcruzi_330, Tcruzi_3323, Tcruzi_3380, Tcruzi_3425, Tcruzi_3522, Tcruzi_3614, Tcruzi_3656, Tcruzi_368, Tcruzi_3689, Tcruzi_3700, Tcruzi_372, Tcruzi_3778, Tcruzi_3862, Tcruzi_3977, Tcruzi_4047, Tcruzi_4073, Tcruzi_4127, Tcruzi_4130, Tcruzi_4148, Tcruzi_4181, Tcruzi_4213, Tcruzi_4226, Tcruzi_4269, Tcruzi_4289, Tcruzi_4305, Tcruzi_4325, Tcruzi_4453, Tcruzi_448, Tcruzi_4492, Tcruzi_4560, Tcruzi_4572, Tcruzi_4573, Tcruzi_4593, Tcruzi_4596, Tcruzi_4606, Tcruzi_4612, Tcruzi_4625, Tcruzi_4635, Tcruzi_4651, Tcruzi_4652, Tcruzi_4663, Tcruzi_4675, Tcruzi_4689, Tcruzi_4695, Tcruzi_4706, Tcruzi_4708, Tcruzi_4709, Tcruzi_4711, Tcruzi_4712, Tcruzi_4728, Tcruzi_4729, Tcruzi_4767, Tcruzi_4772, Tcruzi_4794, Tcruzi_481, Tcruzi_4862, Tcruzi_4874, Tcruzi_4889, Tcruzi_4891, Tcruzi_4931, Tcruzi_4952, Tcruzi_4956, Tcruzi_4959, Tcruzi_4977, Tcruzi_5023, Tcruzi_5066, Tcruzi_5105, Tcruzi_5156, Tcruzi_5185, Tcruzi_5194, Tcruzi_5318, Tcruzi_5327, Tcruzi_5333, Tcruzi_5350, Tcruzi_5355, Tcruzi_5356, Tcruzi_5362, Tcruzi_5373, Tcruzi_5385, Tcruzi_5397, Tcruzi_5398, Tcruzi_5406, Tcruzi_5407, Tcruzi_5411, Tcruzi_5416, Tcruzi_5436, Tcruzi_5437, Tcruzi_5441, Tcruzi_5448, Tcruzi_5449, Tcruzi_5450, Tcruzi_5458, Tcruzi_5479, Tcruzi_5480, Tcruzi_5487, Tcruzi_5488, Tcruzi_5493, Tcruzi_5494, Tcruzi_5501, Tcruzi_5503, Tcruzi_5504, Tcruzi_5508, Tcruzi_551, Tcruzi_5511, Tcruzi_5517, Tcruzi_5531, Tcruzi_5532, Tcruzi_5533, Tcruzi_5538, Tcruzi_5570, Tcruzi_5592, Tcruzi_5597, Tcruzi_5599, Tcruzi_56, Tcruzi_5612, Tcruzi_565, Tcruzi_5673, Tcruzi_5680, Tcruzi_5682, Tcruzi_5697, Tcruzi_5702, Tcruzi_5704, Tcruzi_5711, Tcruzi_5721, Tcruzi_5722, Tcruzi_5723, Tcruzi_5724, Tcruzi_5732, Tcruzi_5733, Tcruzi_5783, Tcruzi_5793, Tcruzi_5813, Tcruzi_5814, Tcruzi_5837, Tcruzi_5838, Tcruzi_5841, Tcruzi_5842, Tcruzi_5843, Tcruzi_5846, Tcruzi_5871, Tcruzi_5926, Tcruzi_5927, Tcruzi_5928, Tcruzi_5931, Tcruzi_5939, Tcruzi_5940, Tcruzi_5988, Tcruzi_5992, Tcruzi_5993, Tcruzi_6002, Tcruzi_6004, Tcruzi_6008, Tcruzi_6012, Tcruzi_6016, Tcruzi_6030, Tcruzi_6038, Tcruzi_6041, Tcruzi_6043, Tcruzi_6044, Tcruzi_6045, Tcruzi_6047, Tcruzi_6050, Tcruzi_6059, Tcruzi_6100, Tcruzi_6105, Tcruzi_6106, Tcruzi_6121, Tcruzi_6199, Tcruzi_621, Tcruzi_6243, Tcruzi_6244, Tcruzi_6254, Tcruzi_6262, Tcruzi_6263, Tcruzi_6267, Tcruzi_6273, Tcruzi_6276, Tcruzi_6281, Tcruzi_6282, Tcruzi_6294, Tcruzi_6296, Tcruzi_6306, Tcruzi_6310, Tcruzi_6312, Tcruzi_6314, Tcruzi_6334, Tcruzi_6336, Tcruzi_6338, Tcruzi_6341, Tcruzi_6348, Tcruzi_6357, Tcruzi_6358, Tcruzi_6374, Tcruzi_6377, Tcruzi_6378, Tcruzi_6385, Tcruzi_6392, Tcruzi_6393, Tcruzi_6396, Tcruzi_6399, Tcruzi_6402, Tcruzi_6408, Tcruzi_6423, Tcruzi_6431, Tcruzi_6434, Tcruzi_6441, Tcruzi_6460, Tcruzi_6462, Tcruzi_6463, Tcruzi_6474, Tcruzi_6478, Tcruzi_6483, Tcruzi_6486, Tcruzi_6487, Tcruzi_6490, Tcruzi_6494, Tcruzi_6497, Tcruzi_6498, Tcruzi_6503, Tcruzi_6509, Tcruzi_6511, Tcruzi_6525, Tcruzi_6548, Tcruzi_655, Tcruzi_6575, Tcruzi_6579, Tcruzi_6588, Tcruzi_6602, Tcruzi_6616, Tcruzi_6617, Tcruzi_6633, Tcruzi_6640, Tcruzi_6643, Tcruzi_6646, Tcruzi_6647, Tcruzi_6657, Tcruzi_6658, Tcruzi_6661, Tcruzi_6669, Tcruzi_6672, Tcruzi_6683, Tcruzi_6695, Tcruzi_6697, Tcruzi_6698, Tcruzi_6702, Tcruzi_6712, Tcruzi_6723, Tcruzi_6735, Tcruzi_6736, Tcruzi_6738, Tcruzi_6743, Tcruzi_6747, Tcruzi_6749, Tcruzi_6750, Tcruzi_6751, Tcruzi_6752, Tcruzi_6754, Tcruzi_6758, Tcruzi_6760, Tcruzi_6767, Tcruzi_6768, Tcruzi_6772, Tcruzi_6773, Tcruzi_6776, Tcruzi_6779, Tcruzi_6780, Tcruzi_6784, Tcruzi_6785, Tcruzi_

## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': Tcruzi_10142, Tcruzi_1024, Tcruzi_1043, Tcruzi_1061, Tcruzi_10659, Tcruzi_10699, Tcruzi_10888, Tcruzi_11148, Tcruzi_11256, Tcruzi_11260, Tcruzi_11316, Tcruzi_11512, Tcruzi_11664, Tcruzi_11809, Tcruzi_11828, Tcruzi_11864, Tcruzi_11994, Tcruzi_12097, Tcruzi_12098, Tcruzi_12161, Tcruzi_1217, Tcruzi_12178, Tcruzi_12292, Tcruzi_12515, Tcruzi_12519, Tcruzi_12626, Tcruzi_12727, Tcruzi_12964, Tcruzi_13041, Tcruzi_13052, Tcruzi_13134, Tcruzi_13226, Tcruzi_13277, Tcruzi_13309, Tcruzi_13381, Tcruzi_134, Tcruzi_13502, Tcruzi_13537, Tcruzi_13555, Tcruzi_13604, Tcruzi_13609, Tcruzi_13788, Tcruzi_13827, Tcruzi_13965, Tcruzi_13993, Tcruzi_14180, Tcruzi_14413, Tcruzi_14581, Tcruzi_14624, Tcruzi_14652, Tcruzi_14667, Tcruzi_14725, Tcruzi_14746, Tcruzi_14871, Tcruzi_14905, Tcruzi_14934, Tcruzi_14940, Tcruzi_15133, Tcruzi_15331, Tcruzi_15352, Tcruzi_15418, Tcruzi_15478, Tcruzi_15516, Tcruzi_15530, Tcruzi_15648, Tcruzi_15786, Tcruzi_15826, Tcruzi_15844, Tcruzi_15882, Tcruzi_16007, Tcruzi_16223, Tcruzi_16277, Tcruzi_16337, Tcruzi_16425, Tcruzi_16458, Tcruzi_16473, Tcruzi_16698, Tcruzi_16730, Tcruzi_16804, Tcruzi_16822, Tcruzi_16903, Tcruzi_16916, Tcruzi_16958, Tcruzi_17030, Tcruzi_1707, Tcruzi_17101, Tcruzi_17327, Tcruzi_17524, Tcruzi_17575, Tcruzi_17711, Tcruzi_1802, Tcruzi_18174, Tcruzi_18279, Tcruzi_18304, Tcruzi_18645, Tcruzi_1910, Tcruzi_19158, Tcruzi_19253, Tcruzi_19299, Tcruzi_19312, Tcruzi_1944, Tcruzi_19532, Tcruzi_19635, Tcruzi_19638, Tcruzi_1967, Tcruzi_19749, Tcruzi_19773, Tcruzi_19776, Tcruzi_20136, Tcruzi_20222, Tcruzi_20390, Tcruzi_20478, Tcruzi_20654, Tcruzi_20690, Tcruzi_2073, Tcruzi_20778, Tcruzi_20808, Tcruzi_20878, Tcruzi_20907, Tcruzi_20996, Tcruzi_21034, Tcruzi_21091, Tcruzi_21298, Tcruzi_21319, Tcruzi_21518, Tcruzi_21871, Tcruzi_21955, Tcruzi_21978, Tcruzi_22268, Tcruzi_22401, Tcruzi_22687, Tcruzi_22770, Tcruzi_22816, Tcruzi_22993, Tcruzi_23021, Tcruzi_23224, Tcruzi_23336, Tcruzi_23396, Tcruzi_23491, Tcruzi_23871, Tcruzi_23901, Tcruzi_23970, Tcruzi_24008, Tcruzi_24108, Tcruzi_24225, Tcruzi_24524, Tcruzi_24686, Tcruzi_24721, Tcruzi_24722, Tcruzi_24887, Tcruzi_24909, Tcruzi_25049, Tcruzi_25087, Tcruzi_25179, Tcruzi_25185, Tcruzi_25206, Tcruzi_25250, Tcruzi_25273, Tcruzi_25408, Tcruzi_25424, Tcruzi_25458, Tcruzi_2548, Tcruzi_25576, Tcruzi_25713, Tcruzi_25982, Tcruzi_26318, Tcruzi_27154, Tcruzi_27286, Tcruzi_2732, Tcruzi_27732, Tcruzi_27907, Tcruzi_27909, Tcruzi_27955, Tcruzi_28032, Tcruzi_28052, Tcruzi_28059, Tcruzi_2842, Tcruzi_28454, Tcruzi_28602, Tcruzi_2868, Tcruzi_29037, Tcruzi_29089, Tcruzi_29090, Tcruzi_29208, Tcruzi_29232, Tcruzi_2930, Tcruzi_29329, Tcruzi_29371, Tcruzi_29639, Tcruzi_30347, Tcruzi_30405, Tcruzi_30838, Tcruzi_3086, Tcruzi_30976, Tcruzi_31047, Tcruzi_31125, Tcruzi_31363, Tcruzi_31765, Tcruzi_3210, Tcruzi_32224, Tcruzi_32364, Tcruzi_32487, Tcruzi_32551, Tcruzi_32658, Tcruzi_3291, Tcruzi_32953, Tcruzi_3421, Tcruzi_3501, Tcruzi_3587, Tcruzi_3924, Tcruzi_4211, Tcruzi_5188, Tcruzi_524, Tcruzi_6456, Tcruzi_6480, Tcruzi_6531, Tcruzi_6636, Tcruzi_6652, Tcruzi_6753, Tcruzi_6791, Tcruzi_681, Tcruzi_7322, Tcruzi_8977, Tcruzi_9080, Tcruzi_9095, Tcruzi_9277, Tcruzi_9299, Tcruzi_9362, Tcruzi_9372, Tcruzi_9395, Tcruzi_9447, Tcruzi_9545, Tcruzi_9682, Tcruzi_9730, Tcruzi_981, Tcruzi_9856, Tcruzi_9971, Tcruzi_9991
##   - in 'y': TcChr1-P, TcChr1-S, TcChr15-P, TcChr3-P, Tcruzi_10059, Tcruzi_10145, Tcruzi_1016, Tcruzi_10656, Tcruzi_1095, Tcruzi_1102, Tcruzi_11180, Tcruzi_11431, Tcruzi_11586, Tcruzi_11767, Tcruzi_11788, Tcruzi_1189, Tcruzi_12118, Tcruzi_12248, Tcruzi_12275, Tcruzi_12697, Tcruzi_12995, Tcruzi_13037, Tcruzi_13347, Tcruzi_1349, Tcruzi_1372, Tcruzi_13834, Tcruzi_1409, Tcruzi_14105, Tcruzi_14178, Tcruzi_14377, Tcruzi_149, Tcruzi_14980, Tcruzi_15295, Tcruzi_1534, Tcruzi_1550, Tcruzi_1648, Tcruzi_1676, Tcruzi_1681, Tcruzi_1699, Tcruzi_17087, Tcruzi_17328, Tcruzi_1806, Tcruzi_18207, Tcruzi_18236, Tcruzi_18273, Tcruzi_1878, Tcruzi_19089, Tcruzi_19748, Tcruzi_1976, Tcruzi_19997, Tcruzi_20168, Tcruzi_2022, Tcruzi_2025, Tcruzi_2057, Tcruzi_2065, Tcruzi_21421, Tcruzi_2150, Tcruzi_22113, Tcruzi_2240, Tcruzi_2307, Tcruzi_23428, Tcruzi_23437, Tcruzi_23566, Tcruzi_238, Tcruzi_2416, Tcruzi_24365, Tcruzi_24516, Tcruzi_25155, Tcruzi_2522, Tcruzi_25287, Tcruzi_25302, Tcruzi_25378, Tcruzi_25507, Tcruzi_25599, Tcruzi_25905, Tcruzi_26149, Tcruzi_2621, Tcruzi_2651, Tcruzi_26525, Tcruzi_26549, Tcruzi_26567, Tcruzi_2692, Tcruzi_27517, Tcruzi_27577, Tcruzi_2767, Tcruzi_29049, Tcruzi_29321, Tcruzi_29363, Tcruzi_2942, Tcruzi_2943, Tcruzi_29909, Tcruzi_3020, Tcruzi_3032, Tcruzi_3062, Tcruzi_3108, Tcruzi_315, Tcruzi_3182, Tcruzi_31930, Tcruzi_3257, Tcruzi_3295, Tcruzi_330, Tcruzi_3323, Tcruzi_3380, Tcruzi_3425, Tcruzi_3522, Tcruzi_3614, Tcruzi_3656, Tcruzi_368, Tcruzi_3689, Tcruzi_3700, Tcruzi_372, Tcruzi_3778, Tcruzi_3862, Tcruzi_3977, Tcruzi_4047, Tcruzi_4073, Tcruzi_4127, Tcruzi_4130, Tcruzi_4148, Tcruzi_4181, Tcruzi_4213, Tcruzi_4226, Tcruzi_4269, Tcruzi_4289, Tcruzi_4305, Tcruzi_4325, Tcruzi_4453, Tcruzi_448, Tcruzi_4492, Tcruzi_4560, Tcruzi_4572, Tcruzi_4573, Tcruzi_4593, Tcruzi_4596, Tcruzi_4606, Tcruzi_4612, Tcruzi_4625, Tcruzi_4635, Tcruzi_4651, Tcruzi_4652, Tcruzi_4663, Tcruzi_4675, Tcruzi_4689, Tcruzi_4695, Tcruzi_4706, Tcruzi_4708, Tcruzi_4709, Tcruzi_4711, Tcruzi_4712, Tcruzi_4728, Tcruzi_4729, Tcruzi_4767, Tcruzi_4772, Tcruzi_4794, Tcruzi_481, Tcruzi_4862, Tcruzi_4874, Tcruzi_4889, Tcruzi_4891, Tcruzi_4931, Tcruzi_4952, Tcruzi_4956, Tcruzi_4959, Tcruzi_4977, Tcruzi_5023, Tcruzi_5066, Tcruzi_5105, Tcruzi_5156, Tcruzi_5185, Tcruzi_5194, Tcruzi_5318, Tcruzi_5327, Tcruzi_5333, Tcruzi_5350, Tcruzi_5355, Tcruzi_5356, Tcruzi_5362, Tcruzi_5373, Tcruzi_5385, Tcruzi_5397, Tcruzi_5398, Tcruzi_5406, Tcruzi_5407, Tcruzi_5411, Tcruzi_5416, Tcruzi_5436, Tcruzi_5437, Tcruzi_5441, Tcruzi_5448, Tcruzi_5449, Tcruzi_5450, Tcruzi_5458, Tcruzi_5479, Tcruzi_5480, Tcruzi_5487, Tcruzi_5488, Tcruzi_5493, Tcruzi_5494, Tcruzi_5501, Tcruzi_5503, Tcruzi_5504, Tcruzi_5508, Tcruzi_551, Tcruzi_5511, Tcruzi_5517, Tcruzi_5531, Tcruzi_5532, Tcruzi_5533, Tcruzi_5538, Tcruzi_5570, Tcruzi_5592, Tcruzi_5597, Tcruzi_5599, Tcruzi_56, Tcruzi_5612, Tcruzi_565, Tcruzi_5673, Tcruzi_5680, Tcruzi_5682, Tcruzi_5697, Tcruzi_5702, Tcruzi_5704, Tcruzi_5711, Tcruzi_5721, Tcruzi_5722, Tcruzi_5723, Tcruzi_5724, Tcruzi_5732, Tcruzi_5733, Tcruzi_5783, Tcruzi_5793, Tcruzi_5813, Tcruzi_5814, Tcruzi_5837, Tcruzi_5838, Tcruzi_5841, Tcruzi_5842, Tcruzi_5843, Tcruzi_5846, Tcruzi_5871, Tcruzi_5926, Tcruzi_5927, Tcruzi_5928, Tcruzi_5931, Tcruzi_5939, Tcruzi_5940, Tcruzi_5988, Tcruzi_5992, Tcruzi_5993, Tcruzi_6002, Tcruzi_6004, Tcruzi_6008, Tcruzi_6012, Tcruzi_6016, Tcruzi_6030, Tcruzi_6038, Tcruzi_6041, Tcruzi_6043, Tcruzi_6044, Tcruzi_6045, Tcruzi_6047, Tcruzi_6050, Tcruzi_6059, Tcruzi_6100, Tcruzi_6105, Tcruzi_6106, Tcruzi_6121, Tcruzi_6199, Tcruzi_621, Tcruzi_6243, Tcruzi_6244, Tcruzi_6254, Tcruzi_6262, Tcruzi_6263, Tcruzi_6267, Tcruzi_6273, Tcruzi_6276, Tcruzi_6281, Tcruzi_6282, Tcruzi_6294, Tcruzi_6296, Tcruzi_6306, Tcruzi_6310, Tcruzi_6312, Tcruzi_6314, Tcruzi_6334, Tcruzi_6336, Tcruzi_6338, Tcruzi_6341, Tcruzi_6348, Tcruzi_6357, Tcruzi_6358, Tcruzi_6374, Tcruzi_6377, Tcruzi_6378, Tcruzi_6385, Tcruzi_6392, Tcruzi_6393, Tcruzi_6396, Tcruzi_6399, Tcruzi_6402, Tcruzi_6408, Tcruzi_6423, Tcruzi_6431, Tcruzi_6434, Tcruzi_6441, Tcruzi_6460, Tcruzi_6462, Tcruzi_6463, Tcruzi_6474, Tcruzi_6478, Tcruzi_6483, Tcruzi_6486, Tcruzi_6487, Tcruzi_6490, Tcruzi_6494, Tcruzi_6497, Tcruzi_6498, Tcruzi_6503, Tcruzi_6509, Tcruzi_6511, Tcruzi_6525, Tcruzi_6548, Tcruzi_655, Tcruzi_6575, Tcruzi_6579, Tcruzi_6588, Tcruzi_6602, Tcruzi_6616, Tcruzi_6617, Tcruzi_6633, Tcruzi_6640, Tcruzi_6643, Tcruzi_6646, Tcruzi_6647, Tcruzi_6657, Tcruzi_6658, Tcruzi_6661, Tcruzi_6669, Tcruzi_6672, Tcruzi_6683, Tcruzi_6695, Tcruzi_6697, Tcruzi_6698, Tcruzi_6702, Tcruzi_6712, Tcruzi_6723, Tcruzi_6735, Tcruzi_6736, Tcruzi_6738, Tcruzi_6743, Tcruzi_6747, Tcruzi_6749, Tcruzi_6750, Tcruzi_6751, Tcruzi_6752, Tcruzi_6754, Tcruzi_6758, Tcruzi_6760, Tcruzi_6767, Tcruzi_6768, Tcruzi_6772, Tcruzi_6773, Tcruzi_6776, Tcruzi_6779, Tcruzi_6780, Tcruzi_6784, Tcruzi_6785, Tcruzi_
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': TcChr1-P, TcChr1-S, TcChr15-P, TcChr3-P, Tcruzi_10059, Tcruzi_10145, Tcruzi_1016, Tcruzi_10656, Tcruzi_1095, Tcruzi_1102, Tcruzi_11180, Tcruzi_11431, Tcruzi_11586, Tcruzi_11767, Tcruzi_11788, Tcruzi_1189, Tcruzi_12118, Tcruzi_12248, Tcruzi_12275, Tcruzi_12697, Tcruzi_12995, Tcruzi_13037, Tcruzi_13347, Tcruzi_1349, Tcruzi_1372, Tcruzi_13834, Tcruzi_1409, Tcruzi_14105, Tcruzi_14178, Tcruzi_14377, Tcruzi_149, Tcruzi_14980, Tcruzi_15295, Tcruzi_1534, Tcruzi_1550, Tcruzi_1648, Tcruzi_1676, Tcruzi_1681, Tcruzi_1699, Tcruzi_17087, Tcruzi_17328, Tcruzi_1806, Tcruzi_18207, Tcruzi_18236, Tcruzi_18273, Tcruzi_1878, Tcruzi_19089, Tcruzi_19748, Tcruzi_1976, Tcruzi_19997, Tcruzi_20168, Tcruzi_2022, Tcruzi_2025, Tcruzi_2057, Tcruzi_2065, Tcruzi_21421, Tcruzi_2150, Tcruzi_22113, Tcruzi_2240, Tcruzi_2307, Tcruzi_23428, Tcruzi_23437, Tcruzi_23566, Tcruzi_238, Tcruzi_2416, Tcruzi_24365, Tcruzi_24516, Tcruzi_25155, Tcruzi_2522, Tcruzi_25287, Tcruzi_25302, Tcruzi_25378, Tcruzi_25507, Tcruzi_25599, Tcruzi_25905, Tcruzi_26149, Tcruzi_2621, Tcruzi_2651, Tcruzi_26525, Tcruzi_26549, Tcruzi_26567, Tcruzi_2692, Tcruzi_27517, Tcruzi_27577, Tcruzi_2767, Tcruzi_29049, Tcruzi_29321, Tcruzi_29363, Tcruzi_2942, Tcruzi_2943, Tcruzi_29909, Tcruzi_3020, Tcruzi_3032, Tcruzi_3062, Tcruzi_3108, Tcruzi_315, Tcruzi_3182, Tcruzi_31930, Tcruzi_3257, Tcruzi_3295, Tcruzi_330, Tcruzi_3323, Tcruzi_3380, Tcruzi_3425, Tcruzi_3522, Tcruzi_3614, Tcruzi_3656, Tcruzi_368, Tcruzi_3689, Tcruzi_3700, Tcruzi_372, Tcruzi_3778, Tcruzi_3862, Tcruzi_3977, Tcruzi_4047, Tcruzi_4073, Tcruzi_4127, Tcruzi_4130, Tcruzi_4148, Tcruzi_4181, Tcruzi_4213, Tcruzi_4226, Tcruzi_4269, Tcruzi_4289, Tcruzi_4305, Tcruzi_4325, Tcruzi_4453, Tcruzi_448, Tcruzi_4492, Tcruzi_4560, Tcruzi_4572, Tcruzi_4573, Tcruzi_4593, Tcruzi_4596, Tcruzi_4606, Tcruzi_4612, Tcruzi_4625, Tcruzi_4635, Tcruzi_4651, Tcruzi_4652, Tcruzi_4663, Tcruzi_4675, Tcruzi_4689, Tcruzi_4695, Tcruzi_4706, Tcruzi_4708, Tcruzi_4709, Tcruzi_4711, Tcruzi_4712, Tcruzi_4728, Tcruzi_4729, Tcruzi_4767, Tcruzi_4772, Tcruzi_4794, Tcruzi_481, Tcruzi_4862, Tcruzi_4874, Tcruzi_4889, Tcruzi_4891, Tcruzi_4931, Tcruzi_4952, Tcruzi_4956, Tcruzi_4959, Tcruzi_4977, Tcruzi_5023, Tcruzi_5066, Tcruzi_5105, Tcruzi_5156, Tcruzi_5185, Tcruzi_5194, Tcruzi_5318, Tcruzi_5327, Tcruzi_5333, Tcruzi_5350, Tcruzi_5355, Tcruzi_5356, Tcruzi_5362, Tcruzi_5373, Tcruzi_5385, Tcruzi_5397, Tcruzi_5398, Tcruzi_5406, Tcruzi_5407, Tcruzi_5411, Tcruzi_5416, Tcruzi_5436, Tcruzi_5437, Tcruzi_5441, Tcruzi_5448, Tcruzi_5449, Tcruzi_5450, Tcruzi_5458, Tcruzi_5479, Tcruzi_5480, Tcruzi_5487, Tcruzi_5488, Tcruzi_5493, Tcruzi_5494, Tcruzi_5501, Tcruzi_5503, Tcruzi_5504, Tcruzi_5508, Tcruzi_551, Tcruzi_5511, Tcruzi_5517, Tcruzi_5531, Tcruzi_5532, Tcruzi_5533, Tcruzi_5538, Tcruzi_5570, Tcruzi_5592, Tcruzi_5597, Tcruzi_5599, Tcruzi_56, Tcruzi_5612, Tcruzi_565, Tcruzi_5673, Tcruzi_5680, Tcruzi_5682, Tcruzi_5697, Tcruzi_5702, Tcruzi_5704, Tcruzi_5711, Tcruzi_5721, Tcruzi_5722, Tcruzi_5723, Tcruzi_5724, Tcruzi_5732, Tcruzi_5733, Tcruzi_5783, Tcruzi_5793, Tcruzi_5813, Tcruzi_5814, Tcruzi_5837, Tcruzi_5838, Tcruzi_5841, Tcruzi_5842, Tcruzi_5843, Tcruzi_5846, Tcruzi_5871, Tcruzi_5926, Tcruzi_5927, Tcruzi_5928, Tcruzi_5931, Tcruzi_5939, Tcruzi_5940, Tcruzi_5988, Tcruzi_5992, Tcruzi_5993, Tcruzi_6002, Tcruzi_6004, Tcruzi_6008, Tcruzi_6012, Tcruzi_6016, Tcruzi_6030, Tcruzi_6038, Tcruzi_6041, Tcruzi_6043, Tcruzi_6044, Tcruzi_6045, Tcruzi_6047, Tcruzi_6050, Tcruzi_6059, Tcruzi_6100, Tcruzi_6105, Tcruzi_6106, Tcruzi_6121, Tcruzi_6199, Tcruzi_621, Tcruzi_6243, Tcruzi_6244, Tcruzi_6254, Tcruzi_6262, Tcruzi_6263, Tcruzi_6267, Tcruzi_6273, Tcruzi_6276, Tcruzi_6281, Tcruzi_6282, Tcruzi_6294, Tcruzi_6296, Tcruzi_6306, Tcruzi_6310, Tcruzi_6312, Tcruzi_6314, Tcruzi_6334, Tcruzi_6336, Tcruzi_6338, Tcruzi_6341, Tcruzi_6348, Tcruzi_6357, Tcruzi_6358, Tcruzi_6374, Tcruzi_6377, Tcruzi_6378, Tcruzi_6385, Tcruzi_6392, Tcruzi_6393, Tcruzi_6396, Tcruzi_6399, Tcruzi_6402, Tcruzi_6408, Tcruzi_6423, Tcruzi_6431, Tcruzi_6434, Tcruzi_6441, Tcruzi_6460, Tcruzi_6462, Tcruzi_6463, Tcruzi_6474, Tcruzi_6478, Tcruzi_6483, Tcruzi_6486, Tcruzi_6487, Tcruzi_6490, Tcruzi_6494, Tcruzi_6497, Tcruzi_6498, Tcruzi_6503, Tcruzi_6509, Tcruzi_6511, Tcruzi_6525, Tcruzi_6548, Tcruzi_655, Tcruzi_6575, Tcruzi_6579, Tcruzi_6588, Tcruzi_6602, Tcruzi_6616, Tcruzi_6617, Tcruzi_6633, Tcruzi_6640, Tcruzi_6643, Tcruzi_6646, Tcruzi_6647, Tcruzi_6657, Tcruzi_6658, Tcruzi_6661, Tcruzi_6669, Tcruzi_6672, Tcruzi_6683, Tcruzi_6695, Tcruzi_6697, Tcruzi_6698, Tcruzi_6702, Tcruzi_6712, Tcruzi_6723, Tcruzi_6735, Tcruzi_6736, Tcruzi_6738, Tcruzi_6743, Tcruzi_6747, Tcruzi_6749, Tcruzi_6750, Tcruzi_6751, Tcruzi_6752, Tcruzi_6754, Tcruzi_6758, Tcruzi_6760, Tcruzi_6767, Tcruzi_6768, Tcruzi_6772, Tcruzi_6773, Tcruzi_6776, Tcruzi_6779, Tcruzi_6780, Tcruzi_6784, Tcruzi_6785, Tcruzi_6786, Tcruzi_6788, Tcruzi_6789, Tcruzi_6792, Tcruzi_6794, Tcruzi_6795, Tcruzi_6798, Tcruzi_6799, Tcruzi_6801, Tcruzi_6806, Tcruzi_6807, Tcruzi_6812, Tcruzi_6816, Tcruzi_6819, Tcruzi_6820, Tcruzi_6821, Tcruzi_6826, Tcruzi_6838, Tcruzi_6839, Tcruzi_6843, Tcruzi_6844, Tcruzi_6845, Tcruzi_6852, Tcruzi_6856, Tcruzi_6859, Tcruzi_6868, Tcruzi_6884, Tcruzi_6891, Tcruzi_6910, Tcruzi_6913, Tcruzi_6918, Tcruzi_6921, Tcruzi_6938, Tcruzi_6949, Tcruzi_6950, Tcruzi_6951, Tcruzi_6954, Tcruzi_6983, Tcruzi_6990, Tcruzi_6992, Tcruzi_6994, Tcruzi_6995, Tcruzi_7001, Tcruzi_7002, Tcruzi_7011, Tcruzi_7033, Tcruzi_7036, Tcruzi_7050, Tcruzi_7060, Tcruzi_7077, Tcruzi_7101, Tcruzi_7114, Tcruzi_7125, Tcruzi_7126, Tcruzi_7132, Tcruzi_7133, Tcruzi_7134, Tcruzi_7138, Tcruzi_7139, Tcruzi_7166, Tcruzi_7213, Tcruzi_7214, Tcruzi_7215, Tcruzi_7217, Tcruzi_7226, Tcruzi_7227, Tcruzi_7229, Tcruzi_7235, Tcruzi_7237, Tcruzi_7242, Tcruzi_7243, Tcruzi_7245, Tcruzi_7246, Tcruzi_7255, Tcruzi_7256, Tcruzi_7258, Tcruzi_7261, Tcruzi_7264, Tcruzi_7267, Tcruzi_7270, Tcruzi_7282, Tcruzi_7287, Tcruzi_7288, Tcruzi_7293, Tcruzi_7295, Tcruzi_7305, Tcruzi_7306, Tcruzi_7316, Tcruzi_7317, Tcruzi_7319, Tcruzi_7321, Tcruzi_7325, Tcruzi_7332, Tcruzi_7335, Tcruzi_7338, Tcruzi_7351, Tcruzi_7352, Tcruzi_7357, Tcruzi_7359, Tcruzi_7363, Tcruzi_7370, Tcruzi_7384, Tcruzi_7386, Tcruzi_7389, Tcruzi_7390, Tcruzi_7392, Tcruzi_7393, Tcruzi_7403, Tcruzi_7418, Tcruzi_7419, Tcruzi_7430, Tcruzi_7433, Tcruzi_7436, Tcruzi_7437, Tcruzi_7449, Tcruzi_7450, Tcruzi_7451, Tcruzi_7481, Tcruzi_7483, Tcruzi_7484, Tcruzi_7490, Tcruzi_7496, Tcruzi_7501, Tcruzi_7509, Tcruzi_7516, Tcruzi_7533, Tcruzi_7567, Tcruzi_7568, Tcruzi_7573, Tcruzi_7576, Tcruzi_7577, Tcruzi_7582, Tcruzi_7583, Tcruzi_7588, Tcruzi_7589, Tcruzi_763, Tcruzi_7631, Tcruzi_7632, Tcruzi_7658, Tcruzi_7659, Tcruzi_767, Tcruzi_7670, Tcruzi_7671, Tcruzi_7672, Tcruzi_7673, Tcruzi_7674, Tcruzi_7679, Tcruzi_768, Tcruzi_7680, Tcruzi_7681, Tcruzi_7682, Tcruzi_7687, Tcruzi_7688, Tcruzi_7689, Tcruzi_7690, Tcruzi_7697, Tcruzi_7734, Tcruzi_7735, Tcruzi_7736, Tcruzi_7745, Tcruzi_7746, Tcruzi_7747, Tcruzi_7748, Tcruzi_7756, Tcruzi_7757, Tcruzi_7776, Tcruzi_7780, Tcruzi_7788, Tcruzi_7790, Tcruzi_7791, Tcruzi_7792, Tcruzi_7795, Tcruzi_7796, Tcruzi_7803, Tcruzi_7806, Tcruzi_7809, Tcruzi_7817, Tcruzi_7826, Tcruzi_7834, Tcruzi_7837, Tcruzi_7855, Tcruzi_7856, Tcruzi_7857, Tcruzi_7858, Tcruzi_7859, Tcruzi_7860, Tcruzi_7861, Tcruzi_7862, Tcruzi_7872, Tcruzi_7895, Tcruzi_7896, Tcruzi_7934, Tcruzi_7935, Tcruzi_7936, Tcruzi_7987, Tcruzi_7988, Tcruzi_8027, Tcruzi_8028, Tcruzi_8057, Tcruzi_8059, Tcruzi_8068, Tcruzi_8071, Tcruzi_8074, Tcruzi_8076, Tcruzi_8077, Tcruzi_8078, Tcruzi_8079, Tcruzi_8080, Tcruzi_8081, Tcruzi_8082, Tcruzi_8093, Tcruzi_8094, Tcruzi_8098, Tcruzi_81, Tcruzi_8100, Tcruzi_8104, Tcruzi_8108, Tcruzi_8109, Tcruzi_8111, Tcruzi_8119, Tcruzi_8120, Tcruzi_8121, Tcruzi_8125, Tcruzi_8126, Tcruzi_8130, Tcruzi_8151, Tcruzi_8161, Tcruzi_8168, Tcruzi_8169, Tcruzi_8189, Tcruzi_8202, Tcruzi_8210, Tcruzi_8211, Tcruzi_8220, Tcruzi_8226, Tcruzi_8238, Tcruzi_8239, Tcruzi_8255, Tcruzi_8256, Tcruzi_828, Tcruzi_8302, Tcruzi_8308, Tcruzi_8315, Tcruzi_8316, Tcruzi_8339, Tcruzi_8377, Tcruzi_8394, Tcruzi_8395, Tcruzi_8396, Tcruzi_8397, Tcruzi_8398, Tcruzi_8399, Tcruzi_8400, Tcruzi_8401,
snp_cond_genes <- snps_vs_intersections(all_new_hisat, snp_cond_sets,
                                          chr_column="chromosome")
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': Tcruzi_11260, Tcruzi_15530, Tcruzi_16730, Tcruzi_19635, Tcruzi_20222, Tcruzi_20907, Tcruzi_2548, Tcruzi_28052, Tcruzi_2930, Tcruzi_32224, Tcruzi_6456
##   - in 'y': 56, 81, 149, 238, 315, 330, 368, 372, 448, 481, 551, 565, 621, 655, 763, 767, 768, 828, 884, 889, 919, 937, 993, 1016, 1095, 1102, 1189, 1349, 1372, 1409, 1534, 1550, 1648, 1676, 1681, 1699, 1806, 1878, 1976, 2022, 2025, 2057, 2065, 2150, 2240, 2307, 2416, 2522, 2621, 2651, 2692, 2767, 2942, 2943, 3020, 3032, 3062, 3108, 3182, 3257, 3295, 3323, 3380, 3425, 3522, 3614, 3656, 3689, 3700, 3778, 3862, 3977, 4047, 4073, 4127, 4130, 4148, 4181, 4213, 4226, 4269, 4289, 4305, 4325, 4453, 4492, 4560, 4572, 4573, 4593, 4596, 4606, 4612, 4625, 4635, 4651, 4652, 4663, 4675, 4689, 4695, 4706, 4708, 4709, 4711, 4712, 4728, 4729, 4767, 4772, 4794, 4862, 4874, 4889, 4891, 4931, 4952, 4956, 4959, 4977, 5023, 5066, 5105, 5156, 5185, 5194, 5318, 5327, 5333, 5340, 5350, 5355, 5356, 5362, 5373, 5385, 5397, 5398, 5406, 5407, 5411, 5416, 5436, 5437, 5441, 5448, 5449, 5450, 5458, 5479, 5480, 5487, 5488, 5493, 5494, 5501, 5503, 5504, 5508, 5511, 5517, 5531, 5532, 5533, 5538, 5570, 5589, 5592, 5597, 5599, 5612, 5673, 5680, 5682, 5697, 5702, 5704, 5711, 5721, 5722, 5723, 5724, 5732, 5733, 5783, 5793, 5813, 5814, 5837, 5838, 5841, 5842, 5843, 5845, 5846, 5871, 5916, 5926, 5927, 5928, 5931, 5939, 5940, 5988, 5992, 5993, 6002, 6004, 6008, 6012, 6016, 6030, 6038, 6041, 6043, 6044, 6045, 6047, 6050, 6059, 6100, 6105, 6106, 6121, 6199, 6243, 6244, 6254, 6262, 6263, 6267, 6273, 6276, 6278, 6281, 6282, 6284, 6294, 6295, 6296, 6306, 6310, 6312, 6314, 6324, 6334, 6336, 6338, 6341, 6348, 6357, 6358, 6374, 6377, 6378, 6385, 6392, 6393, 6396, 6399, 6402, 6408, 6423, 6431, 6434, 6441, 6460, 6462, 6463, 6474, 6478, 6483, 6486, 6487, 6490, 6494, 6497, 6498, 6503, 6509, 6511, 6525, 6548, 6575, 6579, 6588, 6602, 6616, 6617, 6633, 6640, 6643, 6646, 6647, 6657, 6658, 6661, 6669, 6672, 6683, 6695, 6697, 6698, 6702, 6712, 6723, 6735, 6736, 6738, 6743, 6747, 6749, 6750, 6751, 6752, 6754, 6758, 6760, 6767, 6768, 6772, 6773, 6776, 6779, 6780, 6784, 6785, 6786, 6788, 6789, 6792, 6794, 6795, 6797, 6798, 6799, 6801, 6806, 6807, 6812, 6816, 6819, 6820, 6821, 6826, 6838, 6839, 6843, 6844, 6845, 6852, 6856, 6859, 6868, 6875, 6884, 6891, 6908, 6910, 6913, 6918, 6921, 6935, 6938, 6949, 6950, 6951, 6954, 6983, 6990, 6992, 6994, 6995, 7001, 7002, 7011, 7033, 7036, 7050, 7054, 7060, 7077, 7101, 7113, 7114, 7125, 7126, 7132, 7133, 7134, 7138, 7139, 7166, 7213, 7214, 7215, 7217, 7226, 7227, 7229, 7235, 7237, 7242, 7243, 7245, 7246, 7255, 7256, 7258, 7261, 7264, 7267, 7270, 7274, 7282, 7287, 7288, 7293, 7295, 7305, 7306, 7316, 7317, 7319, 7321, 7325, 7332, 7335, 7338, 7351, 7352, 7357, 7359, 7363, 7370, 7384, 7386, 7389, 7390, 7392, 7393, 7403, 7418, 7419, 7430, 7433, 7436, 7437, 7449, 7450, 7451, 7481, 7483, 7484, 7490, 7496, 7501, 7509, 7516, 7533, 7567, 7568, 7573, 7576, 7577, 7582, 7583, 7588, 7589, 7631, 7632, 7658, 7659, 7670, 7671, 7672, 7673, 7674, 7679, 7680, 7681, 7682, 7687, 7688, 7689, 7690, 7697, 7734, 7735, 7736, 7742, 7745, 7746, 7747, 7748, 7756, 7757, 7776, 7780, 7788, 7790, 7791, 7792, 7795, 7796, 7803, 7806, 7809, 7817, 7826, 7834, 7837, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7872, 7895, 7896, 7934, 7935, 7936, 7987, 7988, 8027, 8028, 8057, 8059, 8068, 8071, 8074, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8093, 8094, 8098, 8100, 8104, 8108, 8109, 8111, 8119, 8120, 8121, 8125, 8126, 8130, 8151, 8161, 8168, 8169, 8189, 8202, 8203, 8210, 8211, 8220, 8226, 8238, 8239, 8255, 8256, 8302, 8308, 8315, 8316, 8339, 8377, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8410, 8411, 8412, 8413, 8423, 8424, 8425, 8426, 8428, 8437, 8464, 8495, 8496, 8497, 8503, 8504, 8506, 8516, 8519, 8529, 8532, 8535, 8540, 8541, 8544, 8545, 8546, 8547, 8548, 8552, 8560, 8561, 8562, 8566, 8567, 8568, 8569, 8584, 8585, 8586, 8591, 8592, 8593, 8594, 8596, 8597, 8598, 8608, 8617, 8618, 8625, 8626, 8675, 8697, 8698, 8699, 8718, 8719, 8720, 8782, 8783, 8784, 8785, 8859, 9108, 9155, 9158, 9229, 9549, 9921, 10059, 10145, 10656, 11180, 11431, 11586, 11767, 11788, 12118, 12248, 12275, 12697, 12995, 13037, 13339, 13347, 13834, 14105, 14178, 14377, 14980, 15295, 17087, 17328, 18207, 18236, 18273, 19089, 19748, 19997, 20168, 21421, 21424, 22036, 22113, 23428, 23437, 23566, 24365, 24516, 25155, 25287, 25302, 25378, 25507, 25599, 25905, 26149, 26525, 26549, 26567, 27517, 27577, 29049, 29321, 29363, 29909, 31930, TcChr1-P, TcChr1-S, TcChr11-P, TcChr11-S, TcChr12-P, TcChr12-S, TcChr13-P, TcChr13-S, TcChr15-P, TcChr15-S, TcChr16-S, TcChr17-P, TcChr17-S, TcChr18-P, TcChr18-S, TcChr19-P, TcChr19-S, TcChr2-P, TcChr21-P, TcChr21-S, TcChr22-S, TcChr23-P, TcChr23-S, TcChr24-P, TcChr25-S, TcChr27-P, TcChr28-P, TcChr28-S, TcChr29-P, TcChr29-S, TcChr3-P, TcChr30-P, TcChr31-P, TcChr32-P, TcChr33-P, TcChr33-S, TcChr35-P, TcChr35-S, TcChr38-P, TcChr38-S, TcChr39-P, TcChr4-P, TcChr40-S, TcChr41-P, TcChr5-S, TcChr6-P, TcChr6-S, TcChr7-P, TcChr7-S, TcChr8-P, TcChr8-S
##   Make sure to always combine/compare objects based on the same reference
##   genome (use suppressWarnings() to suppress this warning).
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': 56, 81, 149, 238, 315, 330, 368, 372, 448, 481, 551, 565, 621, 655, 763, 767, 768, 828, 884, 889, 919, 937, 993, 1016, 1095, 1102, 1189, 1349, 1372, 1409, 1534, 1550, 1648, 1676, 1681, 1699, 1806, 1878, 1976, 2022, 2025, 2057, 2065, 2150, 2240, 2307, 2416, 2522, 2621, 2651, 2692, 2767, 2942, 2943, 3020, 3032, 3062, 3108, 3182, 3257, 3295, 3323, 3380, 3425, 3522, 3614, 3656, 3689, 3700, 3778, 3862, 3977, 4047, 4073, 4127, 4130, 4148, 4181, 4213, 4226, 4269, 4289, 4305, 4325, 4453, 4492, 4560, 4572, 4573, 4593, 4596, 4606, 4612, 4625, 4635, 4651, 4652, 4663, 4675, 4689, 4695, 4706, 4708, 4709, 4711, 4712, 4728, 4729, 4767, 4772, 4794, 4862, 4874, 4889, 4891, 4931, 4952, 4956, 4959, 4977, 5023, 5066, 5105, 5156, 5185, 5194, 5318, 5327, 5333, 5340, 5350, 5355, 5356, 5362, 5373, 5385, 5397, 5398, 5406, 5407, 5411, 5416, 5436, 5437, 5441, 5448, 5449, 5450, 5458, 5479, 5480, 5487, 5488, 5493, 5494, 5501, 5503, 5504, 5508, 5511, 5517, 5531, 5532, 5533, 5538, 5570, 5589, 5592, 5597, 5599, 5612, 5673, 5680, 5682, 5697, 5702, 5704, 5711, 5721, 5722, 5723, 5724, 5732, 5733, 5783, 5793, 5813, 5814, 5837, 5838, 5841, 5842, 5843, 5845, 5846, 5871, 5916, 5926, 5927, 5928, 5931, 5939, 5940, 5988, 5992, 5993, 6002, 6004, 6008, 6012, 6016, 6030, 6038, 6041, 6043, 6044, 6045, 6047, 6050, 6059, 6100, 6105, 6106, 6121, 6199, 6243, 6244, 6254, 6262, 6263, 6267, 6273, 6276, 6278, 6281, 6282, 6284, 6294, 6295, 6296, 6306, 6310, 6312, 6314, 6324, 6334, 6336, 6338, 6341, 6348, 6357, 6358, 6374, 6377, 6378, 6385, 6392, 6393, 6396, 6399, 6402, 6408, 6423, 6431, 6434, 6441, 6460, 6462, 6463, 6474, 6478, 6483, 6486, 6487, 6490, 6494, 6497, 6498, 6503, 6509, 6511, 6525, 6548, 6575, 6579, 6588, 6602, 6616, 6617, 6633, 6640, 6643, 6646, 6647, 6657, 6658, 6661, 6669, 6672, 6683, 6695, 6697, 6698, 6702, 6712, 6723, 6735, 6736, 6738, 6743, 6747, 6749, 6750, 6751, 6752, 6754, 6758, 6760, 6767, 6768, 6772, 6773, 6776, 6779, 6780, 6784, 6785, 6786, 6788, 6789, 6792, 6794, 6795, 6797, 6798, 6799, 6801, 6806, 6807, 6812, 6816, 6819, 6820, 6821, 6826, 6838, 6839, 6843, 6844, 6845, 6852, 6856, 6859, 6868, 6875, 6884, 6891, 6908, 6910, 6913, 6918, 6921, 6935, 6938, 6949, 6950, 6951, 6954, 6983, 6990, 6992, 6994, 6995, 7001, 7002, 7011, 7033, 7036, 7050, 7054, 7060, 7077, 7101, 7113, 7114, 7125, 7126, 7132, 7133, 7134, 7138, 7139, 7166, 7213, 7214, 7215, 7217, 7226, 7227, 7229, 7235, 7237, 7242, 7243, 7245, 7246, 7255, 7256, 7258, 7261, 7264, 7267, 7270, 7274, 7282, 7287, 7288, 7293, 7295, 7305, 7306, 7316, 7317, 7319, 7321, 7325, 7332, 7335, 7338, 7351, 7352, 7357, 7359, 7363, 7370, 7384, 7386, 7389, 7390, 7392, 7393, 7403, 7418, 7419, 7430, 7433, 7436, 7437, 7449, 7450, 7451, 7481, 7483, 7484, 7490, 7496, 7501, 7509, 7516, 7533, 7567, 7568, 7573, 7576, 7577, 7582, 7583, 7588, 7589, 7631, 7632, 7658, 7659, 7670, 7671, 7672, 7673, 7674, 7679, 7680, 7681, 7682, 7687, 7688, 7689, 7690, 7697, 7734, 7735, 7736, 7742, 7745, 7746, 7747, 7748, 7756, 7757, 7776, 7780, 7788, 7790, 7791, 7792, 7795, 7796, 7803, 7806, 7809, 7817, 7826, 7834, 7837, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7872, 7895, 7896, 7934, 7935, 7936, 7987, 7988, 8027, 8028, 8057, 8059, 8068, 8071, 8074, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8093, 8094, 8098, 8100, 8104, 8108, 8109, 8111, 8119, 8120, 8121, 8125, 8126, 8130, 8151, 8161, 8168, 8169, 8189, 8202, 8203, 8210, 8211, 8220, 8226, 8238, 8239, 8255, 8256, 8302, 8308, 8315, 8316, 8339, 8377, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8410, 8411, 8412, 8413, 8423, 8424, 8425, 8426, 8428, 8437, 8464, 8495, 8496, 8497, 8503, 8504, 8506, 8516, 8519, 8529, 8532, 8535, 8540, 8541, 8544, 8545, 8546, 8547, 8548, 8552, 8560, 8561, 8562, 8566, 8567, 8568, 8569, 8584, 8585, 8586, 8591, 8592, 8593, 8594, 8596, 8597, 8598, 8608, 8617, 8618, 8625, 8626, 8675, 8697, 8698, 8699, 8718, 8719, 8720, 8782, 8783, 8784, 8785, 8859, 9108, 9155, 9158, 9229, 9549, 9921, 10059, 10145, 10656, 11180, 11431, 11586, 11767, 11788, 12118, 12248, 12275, 12697, 12995, 13037, 13339, 13347, 13834, 14105, 14178, 14377, 14980, 15295, 17087, 17328, 18207, 18236, 18273, 19089, 19748, 19997, 20168, 21421, 21424, 22036, 22113, 23428, 23437, 23566, 24365, 24516, 25155, 25287, 25302, 25378, 25507, 25599, 25905, 26149, 26525, 26549, 26567, 27517, 27577, 29049, 29321, 29363, 29909, 31930, TcChr1-P, TcChr1-S, TcChr11-P, TcChr11-S, TcChr12-P, TcChr12-S, TcChr13-P, TcChr13-S, TcChr15-P, TcChr15-S, TcChr16-S, TcChr17-P, TcChr17-S, TcChr18-P, TcChr18-S, TcChr19-P, TcChr19-S, TcChr2-P, TcChr21-P, TcChr21-S, TcChr22-S, TcChr23-P, TcChr23-S, TcChr24-P, TcChr25-S, TcChr27-P, TcChr28-P, TcChr28-S, TcChr29-P, TcChr29-S, TcChr3-P, TcChr30-P, TcChr31-P, TcChr32-P, TcChr33-P, TcChr33-S, TcChr35-P, TcChr35-S, TcChr38-P, TcChr38-S, TcChr39-P, TcChr4-P, TcChr40-S, TcChr41-P, TcChr5-S, TcChr6-P, TcChr6-S, TcChr7-P, TcChr7-S, TcChr8-P, TcChr8-S
##   - in 'y': Tcruzi_11260, Tcruzi_15530, Tcruzi_16730, Tcruzi_19635, Tcruzi_20222, Tcruzi_20907, Tcruzi_2548, Tcruzi_28052, Tcruzi_2930, Tcruzi_32224, Tcruzi_6456
##   Make sure to always combine/compare objects based on the same reference
##   genome (use suppressWarnings() to suppress this warning).
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': Tcruzi_11316, Tcruzi_12626, Tcruzi_13502, Tcruzi_14624, Tcruzi_15133, Tcruzi_15418, Tcruzi_15516, Tcruzi_15648, Tcruzi_16223, Tcruzi_16277, Tcruzi_16916, Tcruzi_18304, Tcruzi_20654, Tcruzi_20878, Tcruzi_21319, Tcruzi_21518, Tcruzi_23021, Tcruzi_23396, Tcruzi_23970, Tcruzi_24524, Tcruzi_24686, Tcruzi_25087, Tcruzi_25408, Tcruzi_26318, Tcruzi_29371, Tcruzi_30347, Tcruzi_3086, Tcruzi_31765, Tcruzi_32487, Tcruzi_3291, Tcruzi_6480, Tcruzi_6908, Tcruzi_7113, Tcruzi_8516, Tcruzi_9856
##   - in 'y': 56, 81, 149, 238, 315, 330, 368, 372, 448, 481, 551, 565, 621, 655, 763, 767, 768, 828, 884, 889, 919, 937, 993, 1016, 1095, 1102, 1189, 1349, 1372, 1409, 1534, 1550, 1648, 1676, 1681, 1699, 1806, 1878, 1976, 2022, 2025, 2057, 2065, 2150, 2240, 2307, 2416, 2522, 2621, 2651, 2692, 2767, 2942, 2943, 3020, 3032, 3062, 3108, 3182, 3257, 3295, 3323, 3380, 3425, 3522, 3614, 3656, 3689, 3700, 3778, 3862, 3977, 4047, 4073, 4127, 4130, 4148, 4181, 4213, 4226, 4269, 4289, 4305, 4325, 4453, 4492, 4560, 4572, 4573, 4593, 4596, 4606, 4612, 4625, 4635, 4651, 4652, 4663, 4675, 4689, 4695, 4706, 4708, 4709, 4711, 4712, 4728, 4729, 4767, 4772, 4794, 4862, 4874, 4889, 4891, 4931, 4952, 4956, 4959, 4977, 5023, 5066, 5105, 5156, 5185, 5194, 5318, 5327, 5333, 5340, 5350, 5355, 5356, 5362, 5373, 5385, 5397, 5398, 5406, 5407, 5411, 5416, 5436, 5437, 5441, 5448, 5449, 5450, 5458, 5479, 5480, 5487, 5488, 5493, 5494, 5501, 5503, 5504, 5508, 5511, 5517, 5531, 5532, 5533, 5538, 5570, 5589, 5592, 5597, 5599, 5612, 5673, 5680, 5682, 5697, 5702, 5704, 5711, 5721, 5722, 5723, 5724, 5732, 5733, 5783, 5793, 5813, 5814, 5837, 5838, 5841, 5842, 5843, 5845, 5846, 5871, 5916, 5926, 5927, 5928, 5931, 5939, 5940, 5988, 5992, 5993, 6002, 6004, 6008, 6012, 6016, 6030, 6038, 6041, 6043, 6044, 6045, 6047, 6050, 6059, 6100, 6105, 6106, 6121, 6199, 6243, 6244, 6254, 6262, 6263, 6267, 6273, 6276, 6278, 6281, 6282, 6284, 6294, 6295, 6296, 6306, 6310, 6312, 6314, 6324, 6334, 6336, 6338, 6341, 6348, 6357, 6358, 6374, 6377, 6378, 6385, 6392, 6393, 6396, 6399, 6402, 6408, 6423, 6431, 6434, 6441, 6460, 6462, 6463, 6474, 6478, 6483, 6486, 6487, 6490, 6494, 6497, 6498, 6503, 6509, 6511, 6525, 6548, 6575, 6579, 6588, 6602, 6616, 6617, 6633, 6640, 6643, 6646, 6647, 6657, 6658, 6661, 6669, 6672, 6683, 6695, 6697, 6698, 6702, 6712, 6723, 6735, 6736, 6738, 6743, 6747, 6749, 6750, 6751, 6752, 6754, 6758, 6760, 6767, 6768, 6772, 6773, 6776, 6779, 6780, 6784, 6785, 6786, 6788, 6789, 6792, 6794, 6795, 6797, 6798, 6799, 6801, 6806, 6807, 6812, 6816, 6819, 6820, 6821, 6826, 6838, 6839, 6843, 6844, 6845, 6852, 6856, 6859, 6868, 6875, 6884, 6891, 6908, 6910, 6913, 6918, 6921, 6935, 6938, 6949, 6950, 6951, 6954, 6983, 6990, 6992, 6994, 6995, 7001, 7002, 7011, 7033, 7036, 7050, 7054, 7060, 7077, 7101, 7113, 7114, 7125, 7126, 7132, 7133, 7134, 7138, 7139, 7166, 7213, 7214, 7215, 7217, 7226, 7227, 7229, 7235, 7237, 7242, 7243, 7245, 7246, 7255, 7256, 7258, 7261, 7264, 7267, 7270, 7274, 7282, 7287, 7288, 7293, 7295, 7305, 7306, 7316, 7317, 7319, 7321, 7325, 7332, 7335, 7338, 7351, 7352, 7357, 7359, 7363, 7370, 7384, 7386, 7389, 7390, 7392, 7393, 7403, 7418, 7419, 7430, 7433, 7436, 7437, 7449, 7450, 7451, 7481, 7483, 7484, 7490, 7496, 7501, 7509, 7516, 7533, 7567, 7568, 7573, 7576, 7577, 7582, 7583, 7588, 7589, 7631, 7632, 7658, 7659, 7670, 7671, 7672, 7673, 7674, 7679, 7680, 7681, 7682, 7687, 7688, 7689, 7690, 7697, 7734, 7735, 7736, 7742, 7745, 7746, 7747, 7748, 7756, 7757, 7776, 7780, 7788, 7790, 7791, 7792, 7795, 7796, 7803, 7806, 7809, 7817, 7826, 7834, 7837, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7872, 7895, 7896, 7934, 7935, 7936, 7987, 7988, 8027, 8028, 8057, 8059, 8068, 8071, 8074, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8093, 8094, 8098, 8100, 8104, 8108, 8109, 8111, 8119, 8120, 8121, 8125, 8126, 8130, 8151, 8161, 8168, 8169, 8189, 8202, 8203, 8210, 8211, 8220, 8226, 8238, 8239, 8255, 8256, 8302, 8308, 8315, 8316, 8339, 8377, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8410, 8411, 8412, 8413, 8423, 8424, 8425, 8426, 8428, 8437, 8464, 8495, 8496, 8497, 8503, 8504, 8506, 8516, 8519, 8529, 8532, 8535, 8540, 8541, 8544, 8545, 8546, 8547, 8548, 8552, 8560, 8561, 8562, 8566, 8567, 8568, 8569, 8584, 8585, 8586, 8591, 8592, 8593, 8594, 8596, 8597, 8598, 8608, 8617, 8618, 8625, 8626, 8675, 8697, 8698, 8699, 8718, 8719, 8720, 8782, 8783, 8784, 8785, 8859, 9108, 9155, 9158, 9229, 9549, 9921, 10059, 10145, 10656, 11180, 11431, 11586, 11767, 11788, 12118, 12248, 12275, 12697, 12995, 13037, 13339, 13347, 13834, 14105, 14178, 14377, 14980, 15295, 17087, 17328, 18207, 18236, 18273, 19089, 19748, 19997, 20168, 21421, 21424, 22036, 22113, 23428, 23437, 23566, 24365, 24516, 25155, 25287, 25302, 25378, 25507, 25599, 25905, 26149, 26525, 26549, 26567, 27517, 27577, 29049, 29321, 29363, 29909, 31930, TcChr1-P, TcChr1-S, TcChr11-P, TcChr11-S, TcChr12-P, TcChr13-S, TcChr15-P, TcChr15-S, TcChr16-P, TcChr17-P, TcChr18-P, TcChr18-S, TcChr19-S, TcChr21-P, TcChr21-S, TcChr23-P, TcChr23-S, TcChr24-P, TcChr25-S, TcChr27-S, TcChr28-P, TcChr28-S, TcChr3-P, TcChr3-S, TcChr31-P, TcChr38-P, TcChr4-P, TcChr4-S, TcChr41-P, TcChr5-S, TcChr6-P, TcChr7-P, TcChr8-P, TcChr8-S
##   Make sure to always combine/compare objects based on the same reference
##   genome (use suppressWarnings() to suppress this warning).
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': 56, 81, 149, 238, 315, 330, 368, 372, 448, 481, 551, 565, 621, 655, 763, 767, 768, 828, 884, 889, 919, 937, 993, 1016, 1095, 1102, 1189, 1349, 1372, 1409, 1534, 1550, 1648, 1676, 1681, 1699, 1806, 1878, 1976, 2022, 2025, 2057, 2065, 2150, 2240, 2307, 2416, 2522, 2621, 2651, 2692, 2767, 2942, 2943, 3020, 3032, 3062, 3108, 3182, 3257, 3295, 3323, 3380, 3425, 3522, 3614, 3656, 3689, 3700, 3778, 3862, 3977, 4047, 4073, 4127, 4130, 4148, 4181, 4213, 4226, 4269, 4289, 4305, 4325, 4453, 4492, 4560, 4572, 4573, 4593, 4596, 4606, 4612, 4625, 4635, 4651, 4652, 4663, 4675, 4689, 4695, 4706, 4708, 4709, 4711, 4712, 4728, 4729, 4767, 4772, 4794, 4862, 4874, 4889, 4891, 4931, 4952, 4956, 4959, 4977, 5023, 5066, 5105, 5156, 5185, 5194, 5318, 5327, 5333, 5340, 5350, 5355, 5356, 5362, 5373, 5385, 5397, 5398, 5406, 5407, 5411, 5416, 5436, 5437, 5441, 5448, 5449, 5450, 5458, 5479, 5480, 5487, 5488, 5493, 5494, 5501, 5503, 5504, 5508, 5511, 5517, 5531, 5532, 5533, 5538, 5570, 5589, 5592, 5597, 5599, 5612, 5673, 5680, 5682, 5697, 5702, 5704, 5711, 5721, 5722, 5723, 5724, 5732, 5733, 5783, 5793, 5813, 5814, 5837, 5838, 5841, 5842, 5843, 5845, 5846, 5871, 5916, 5926, 5927, 5928, 5931, 5939, 5940, 5988, 5992, 5993, 6002, 6004, 6008, 6012, 6016, 6030, 6038, 6041, 6043, 6044, 6045, 6047, 6050, 6059, 6100, 6105, 6106, 6121, 6199, 6243, 6244, 6254, 6262, 6263, 6267, 6273, 6276, 6278, 6281, 6282, 6284, 6294, 6295, 6296, 6306, 6310, 6312, 6314, 6324, 6334, 6336, 6338, 6341, 6348, 6357, 6358, 6374, 6377, 6378, 6385, 6392, 6393, 6396, 6399, 6402, 6408, 6423, 6431, 6434, 6441, 6460, 6462, 6463, 6474, 6478, 6483, 6486, 6487, 6490, 6494, 6497, 6498, 6503, 6509, 6511, 6525, 6548, 6575, 6579, 6588, 6602, 6616, 6617, 6633, 6640, 6643, 6646, 6647, 6657, 6658, 6661, 6669, 6672, 6683, 6695, 6697, 6698, 6702, 6712, 6723, 6735, 6736, 6738, 6743, 6747, 6749, 6750, 6751, 6752, 6754, 6758, 6760, 6767, 6768, 6772, 6773, 6776, 6779, 6780, 6784, 6785, 6786, 6788, 6789, 6792, 6794, 6795, 6797, 6798, 6799, 6801, 6806, 6807, 6812, 6816, 6819, 6820, 6821, 6826, 6838, 6839, 6843, 6844, 6845, 6852, 6856, 6859, 6868, 6875, 6884, 6891, 6908, 6910, 6913, 6918, 6921, 6935, 6938, 6949, 6950, 6951, 6954, 6983, 6990, 6992, 6994, 6995, 7001, 7002, 7011, 7033, 7036, 7050, 7054, 7060, 7077, 7101, 7113, 7114, 7125, 7126, 7132, 7133, 7134, 7138, 7139, 7166, 7213, 7214, 7215, 7217, 7226, 7227, 7229, 7235, 7237, 7242, 7243, 7245, 7246, 7255, 7256, 7258, 7261, 7264, 7267, 7270, 7274, 7282, 7287, 7288, 7293, 7295, 7305, 7306, 7316, 7317, 7319, 7321, 7325, 7332, 7335, 7338, 7351, 7352, 7357, 7359, 7363, 7370, 7384, 7386, 7389, 7390, 7392, 7393, 7403, 7418, 7419, 7430, 7433, 7436, 7437, 7449, 7450, 7451, 7481, 7483, 7484, 7490, 7496, 7501, 7509, 7516, 7533, 7567, 7568, 7573, 7576, 7577, 7582, 7583, 7588, 7589, 7631, 7632, 7658, 7659, 7670, 7671, 7672, 7673, 7674, 7679, 7680, 7681, 7682, 7687, 7688, 7689, 7690, 7697, 7734, 7735, 7736, 7742, 7745, 7746, 7747, 7748, 7756, 7757, 7776, 7780, 7788, 7790, 7791, 7792, 7795, 7796, 7803, 7806, 7809, 7817, 7826, 7834, 7837, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7872, 7895, 7896, 7934, 7935, 7936, 7987, 7988, 8027, 8028, 8057, 8059, 8068, 8071, 8074, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8093, 8094, 8098, 8100, 8104, 8108, 8109, 8111, 8119, 8120, 8121, 8125, 8126, 8130, 8151, 8161, 8168, 8169, 8189, 8202, 8203, 8210, 8211, 8220, 8226, 8238, 8239, 8255, 8256, 8302, 8308, 8315, 8316, 8339, 8377, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8410, 8411, 8412, 8413, 8423, 8424, 8425, 8426, 8428, 8437, 8464, 8495, 8496, 8497, 8503, 8504, 8506, 8516, 8519, 8529, 8532, 8535, 8540, 8541, 8544, 8545, 8546, 8547, 8548, 8552, 8560, 8561, 8562, 8566, 8567, 8568, 8569, 8584, 8585, 8586, 8591, 8592, 8593, 8594, 8596, 8597, 8598, 8608, 8617, 8618, 8625, 8626, 8675, 8697, 8698, 8699, 8718, 8719, 8720, 8782, 8783, 8784, 8785, 8859, 9108, 9155, 9158, 9229, 9549, 9921, 10059, 10145, 10656, 11180, 11431, 11586, 11767, 11788, 12118, 12248, 12275, 12697, 12995, 13037, 13339, 13347, 13834, 14105, 14178, 14377, 14980, 15295, 17087, 17328, 18207, 18236, 18273, 19089, 19748, 19997, 20168, 21421, 21424, 22036, 22113, 23428, 23437, 23566, 24365, 24516, 25155, 25287, 25302, 25378, 25507, 25599, 25905, 26149, 26525, 26549, 26567, 27517, 27577, 29049, 29321, 29363, 29909, 31930, TcChr1-P, TcChr1-S, TcChr11-P, TcChr11-S, TcChr12-P, TcChr13-S, TcChr15-P, TcChr15-S, TcChr16-P, TcChr17-P, TcChr18-P, TcChr18-S, TcChr19-S, TcChr21-P, TcChr21-S, TcChr23-P, TcChr23-S, TcChr24-P, TcChr25-S, TcChr27-S, TcChr28-P, TcChr28-S, TcChr3-P, TcChr3-S, TcChr31-P, TcChr38-P, TcChr4-P, TcChr4-S, TcChr41-P, TcChr5-S, TcChr6-P, TcChr7-P, TcChr8-P, TcChr8-S
##   - in 'y': Tcruzi_11316, Tcruzi_12626, Tcruzi_13502, Tcruzi_14624, Tcruzi_15133, Tcruzi_15418, Tcruzi_15516, Tcruzi_15648, Tcruzi_16223, Tcruzi_16277, Tcruzi_16916, Tcruzi_18304, Tcruzi_20654, Tcruzi_20878, Tcruzi_21319, Tcruzi_21518, Tcruzi_23021, Tcruzi_23396, Tcruzi_23970, Tcruzi_24524, Tcruzi_24686, Tcruzi_25087, Tcruzi_25408, Tcruzi_26318, Tcruzi_29371, Tcruzi_30347, Tcruzi_3086, Tcruzi_31765, Tcruzi_32487, Tcruzi_3291, Tcruzi_6480, Tcruzi_6908, Tcruzi_7113, Tcruzi_8516, Tcruzi_9856
##   Make sure to always combine/compare objects based on the same reference
##   genome (use suppressWarnings() to suppress this warning).
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': Tcruzi_1061, Tcruzi_13827, Tcruzi_14624, Tcruzi_14746, Tcruzi_16698, Tcruzi_17030, Tcruzi_17524, Tcruzi_20778, Tcruzi_20878, Tcruzi_22268, Tcruzi_23491, Tcruzi_23901, Tcruzi_24008, Tcruzi_24686, Tcruzi_32658, Tcruzi_6480, Tcruzi_7274, Tcruzi_7742, Tcruzi_8516
##   - in 'y': 56, 81, 149, 238, 315, 330, 368, 372, 448, 481, 551, 565, 621, 655, 763, 767, 768, 828, 884, 889, 919, 937, 993, 1016, 1095, 1102, 1189, 1349, 1372, 1409, 1534, 1550, 1648, 1676, 1681, 1699, 1806, 1878, 1976, 2022, 2025, 2057, 2065, 2150, 2240, 2307, 2416, 2522, 2621, 2651, 2692, 2767, 2942, 2943, 3020, 3032, 3062, 3108, 3182, 3257, 3295, 3323, 3380, 3425, 3522, 3614, 3656, 3689, 3700, 3778, 3862, 3977, 4047, 4073, 4127, 4130, 4148, 4181, 4213, 4226, 4269, 4289, 4305, 4325, 4453, 4492, 4560, 4572, 4573, 4593, 4596, 4606, 4612, 4625, 4635, 4651, 4652, 4663, 4675, 4689, 4695, 4706, 4708, 4709, 4711, 4712, 4728, 4729, 4767, 4772, 4794, 4862, 4874, 4889, 4891, 4931, 4952, 4956, 4959, 4977, 5023, 5066, 5105, 5156, 5185, 5194, 5318, 5327, 5333, 5340, 5350, 5355, 5356, 5362, 5373, 5385, 5397, 5398, 5406, 5407, 5411, 5416, 5436, 5437, 5441, 5448, 5449, 5450, 5458, 5479, 5480, 5487, 5488, 5493, 5494, 5501, 5503, 5504, 5508, 5511, 5517, 5531, 5532, 5533, 5538, 5570, 5589, 5592, 5597, 5599, 5612, 5673, 5680, 5682, 5697, 5702, 5704, 5711, 5721, 5722, 5723, 5724, 5732, 5733, 5783, 5793, 5813, 5814, 5837, 5838, 5841, 5842, 5843, 5845, 5846, 5871, 5916, 5926, 5927, 5928, 5931, 5939, 5940, 5988, 5992, 5993, 6002, 6004, 6008, 6012, 6016, 6030, 6038, 6041, 6043, 6044, 6045, 6047, 6050, 6059, 6100, 6105, 6106, 6121, 6199, 6243, 6244, 6254, 6262, 6263, 6267, 6273, 6276, 6278, 6281, 6282, 6284, 6294, 6295, 6296, 6306, 6310, 6312, 6314, 6324, 6334, 6336, 6338, 6341, 6348, 6357, 6358, 6374, 6377, 6378, 6385, 6392, 6393, 6396, 6399, 6402, 6408, 6423, 6431, 6434, 6441, 6460, 6462, 6463, 6474, 6478, 6483, 6486, 6487, 6490, 6494, 6497, 6498, 6503, 6509, 6511, 6525, 6548, 6575, 6579, 6588, 6602, 6616, 6617, 6633, 6640, 6643, 6646, 6647, 6657, 6658, 6661, 6669, 6672, 6683, 6695, 6697, 6698, 6702, 6712, 6723, 6735, 6736, 6738, 6743, 6747, 6749, 6750, 6751, 6752, 6754, 6758, 6760, 6767, 6768, 6772, 6773, 6776, 6779, 6780, 6784, 6785, 6786, 6788, 6789, 6792, 6794, 6795, 6797, 6798, 6799, 6801, 6806, 6807, 6812, 6816, 6819, 6820, 6821, 6826, 6838, 6839, 6843, 6844, 6845, 6852, 6856, 6859, 6868, 6875, 6884, 6891, 6908, 6910, 6913, 6918, 6921, 6935, 6938, 6949, 6950, 6951, 6954, 6983, 6990, 6992, 6994, 6995, 7001, 7002, 7011, 7033, 7036, 7050, 7054, 7060, 7077, 7101, 7113, 7114, 7125, 7126, 7132, 7133, 7134, 7138, 7139, 7166, 7213, 7214, 7215, 7217, 7226, 7227, 7229, 7235, 7237, 7242, 7243, 7245, 7246, 7255, 7256, 7258, 7261, 7264, 7267, 7270, 7274, 7282, 7287, 7288, 7293, 7295, 7305, 7306, 7316, 7317, 7319, 7321, 7325, 7332, 7335, 7338, 7351, 7352, 7357, 7359, 7363, 7370, 7384, 7386, 7389, 7390, 7392, 7393, 7403, 7418, 7419, 7430, 7433, 7436, 7437, 7449, 7450, 7451, 7481, 7483, 7484, 7490, 7496, 7501, 7509, 7516, 7533, 7567, 7568, 7573, 7576, 7577, 7582, 7583, 7588, 7589, 7631, 7632, 7658, 7659, 7670, 7671, 7672, 7673, 7674, 7679, 7680, 7681, 7682, 7687, 7688, 7689, 7690, 7697, 7734, 7735, 7736, 7742, 7745, 7746, 7747, 7748, 7756, 7757, 7776, 7780, 7788, 7790, 7791, 7792, 7795, 7796, 7803, 7806, 7809, 7817, 7826, 7834, 7837, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7872, 7895, 7896, 7934, 7935, 7936, 7987, 7988, 8027, 8028, 8057, 8059, 8068, 8071, 8074, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8093, 8094, 8098, 8100, 8104, 8108, 8109, 8111, 8119, 8120, 8121, 8125, 8126, 8130, 8151, 8161, 8168, 8169, 8189, 8202, 8203, 8210, 8211, 8220, 8226, 8238, 8239, 8255, 8256, 8302, 8308, 8315, 8316, 8339, 8377, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8410, 8411, 8412, 8413, 8423, 8424, 8425, 8426, 8428, 8437, 8464, 8495, 8496, 8497, 8503, 8504, 8506, 8516, 8519, 8529, 8532, 8535, 8540, 8541, 8544, 8545, 8546, 8547, 8548, 8552, 8560, 8561, 8562, 8566, 8567, 8568, 8569, 8584, 8585, 8586, 8591, 8592, 8593, 8594, 8596, 8597, 8598, 8608, 8617, 8618, 8625, 8626, 8675, 8697, 8698, 8699, 8718, 8719, 8720, 8782, 8783, 8784, 8785, 8859, 9108, 9155, 9158, 9229, 9549, 9921, 10059, 10145, 10656, 11180, 11431, 11586, 11767, 11788, 12118, 12248, 12275, 12697, 12995, 13037, 13339, 13347, 13834, 14105, 14178, 14377, 14980, 15295, 17087, 17328, 18207, 18236, 18273, 19089, 19748, 19997, 20168, 21421, 21424, 22036, 22113, 23428, 23437, 23566, 24365, 24516, 25155, 25287, 25302, 25378, 25507, 25599, 25905, 26149, 26525, 26549, 26567, 27517, 27577, 29049, 29321, 29363, 29909, 31930, TcChr1-P, TcChr1-S, TcChr10-P, TcChr10-S, TcChr11-P, TcChr11-S, TcChr12-P, TcChr13-S, TcChr15-P, TcChr15-S, TcChr16-P, TcChr16-S, TcChr17-S, TcChr18-P, TcChr18-S, TcChr19-S, TcChr2-S, TcChr21-P, TcChr21-S, TcChr22-P, TcChr22-S, TcChr23-S, TcChr24-P, TcChr24-S, TcChr25-P, TcChr28-P, TcChr28-S, TcChr29-P, TcChr3-P, TcChr3-S, TcChr31-P, TcChr33-P, TcChr35-S, TcChr36-P, TcChr38-P, TcChr4-P, TcChr4-S, TcChr41-S, TcChr5-S, TcChr6-P, TcChr6-S, TcChr7-S, TcChr8-P
##   Make sure to always combine/compare objects based on the same reference
##   genome (use suppressWarnings() to suppress this warning).
## Warning in .Seqinfo.mergexy(x, y): Each of the 2 combined objects has sequence levels not in the other:
##   - in 'x': 56, 81, 149, 238, 315, 330, 368, 372, 448, 481, 551, 565, 621, 655, 763, 767, 768, 828, 884, 889, 919, 937, 993, 1016, 1095, 1102, 1189, 1349, 1372, 1409, 1534, 1550, 1648, 1676, 1681, 1699, 1806, 1878, 1976, 2022, 2025, 2057, 2065, 2150, 2240, 2307, 2416, 2522, 2621, 2651, 2692, 2767, 2942, 2943, 3020, 3032, 3062, 3108, 3182, 3257, 3295, 3323, 3380, 3425, 3522, 3614, 3656, 3689, 3700, 3778, 3862, 3977, 4047, 4073, 4127, 4130, 4148, 4181, 4213, 4226, 4269, 4289, 4305, 4325, 4453, 4492, 4560, 4572, 4573, 4593, 4596, 4606, 4612, 4625, 4635, 4651, 4652, 4663, 4675, 4689, 4695, 4706, 4708, 4709, 4711, 4712, 4728, 4729, 4767, 4772, 4794, 4862, 4874, 4889, 4891, 4931, 4952, 4956, 4959, 4977, 5023, 5066, 5105, 5156, 5185, 5194, 5318, 5327, 5333, 5340, 5350, 5355, 5356, 5362, 5373, 5385, 5397, 5398, 5406, 5407, 5411, 5416, 5436, 5437, 5441, 5448, 5449, 5450, 5458, 5479, 5480, 5487, 5488, 5493, 5494, 5501, 5503, 5504, 5508, 5511, 5517, 5531, 5532, 5533, 5538, 5570, 5589, 5592, 5597, 5599, 5612, 5673, 5680, 5682, 5697, 5702, 5704, 5711, 5721, 5722, 5723, 5724, 5732, 5733, 5783, 5793, 5813, 5814, 5837, 5838, 5841, 5842, 5843, 5845, 5846, 5871, 5916, 5926, 5927, 5928, 5931, 5939, 5940, 5988, 5992, 5993, 6002, 6004, 6008, 6012, 6016, 6030, 6038, 6041, 6043, 6044, 6045, 6047, 6050, 6059, 6100, 6105, 6106, 6121, 6199, 6243, 6244, 6254, 6262, 6263, 6267, 6273, 6276, 6278, 6281, 6282, 6284, 6294, 6295, 6296, 6306, 6310, 6312, 6314, 6324, 6334, 6336, 6338, 6341, 6348, 6357, 6358, 6374, 6377, 6378, 6385, 6392, 6393, 6396, 6399, 6402, 6408, 6423, 6431, 6434, 6441, 6460, 6462, 6463, 6474, 6478, 6483, 6486, 6487, 6490, 6494, 6497, 6498, 6503, 6509, 6511, 6525, 6548, 6575, 6579, 6588, 6602, 6616, 6617, 6633, 6640, 6643, 6646, 6647, 6657, 6658, 6661, 6669, 6672, 6683, 6695, 6697, 6698, 6702, 6712, 6723, 6735, 6736, 6738, 6743, 6747, 6749, 6750, 6751, 6752, 6754, 6758, 6760, 6767, 6768, 6772, 6773, 6776, 6779, 6780, 6784, 6785, 6786, 6788, 6789, 6792, 6794, 6795, 6797, 6798, 6799, 6801, 6806, 6807, 6812, 6816, 6819, 6820, 6821, 6826, 6838, 6839, 6843, 6844, 6845, 6852, 6856, 6859, 6868, 6875, 6884, 6891, 6908, 6910, 6913, 6918, 6921, 6935, 6938, 6949, 6950, 6951, 6954, 6983, 6990, 6992, 6994, 6995, 7001, 7002, 7011, 7033, 7036, 7050, 7054, 7060, 7077, 7101, 7113, 7114, 7125, 7126, 7132, 7133, 7134, 7138, 7139, 7166, 7213, 7214, 7215, 7217, 7226, 7227, 7229, 7235, 7237, 7242, 7243, 7245, 7246, 7255, 7256, 7258, 7261, 7264, 7267, 7270, 7274, 7282, 7287, 7288, 7293, 7295, 7305, 7306, 7316, 7317, 7319, 7321, 7325, 7332, 7335, 7338, 7351, 7352, 7357, 7359, 7363, 7370, 7384, 7386, 7389, 7390, 7392, 7393, 7403, 7418, 7419, 7430, 7433, 7436, 7437, 7449, 7450, 7451, 7481, 7483, 7484, 7490, 7496, 7501, 7509, 7516, 7533, 7567, 7568, 7573, 7576, 7577, 7582, 7583, 7588, 7589, 7631, 7632, 7658, 7659, 7670, 7671, 7672, 7673, 7674, 7679, 7680, 7681, 7682, 7687, 7688, 7689, 7690, 7697, 7734, 7735, 7736, 7742, 7745, 7746, 7747, 7748, 7756, 7757, 7776, 7780, 7788, 7790, 7791, 7792, 7795, 7796, 7803, 7806, 7809, 7817, 7826, 7834, 7837, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7872, 7895, 7896, 7934, 7935, 7936, 7987, 7988, 8027, 8028, 8057, 8059, 8068, 8071, 8074, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8093, 8094, 8098, 8100, 8104, 8108, 8109, 8111, 8119, 8120, 8121, 8125, 8126, 8130, 8151, 8161, 8168, 8169, 8189, 8202, 8203, 8210, 8211, 8220, 8226, 8238, 8239, 8255, 8256, 8302, 8308, 8315, 8316, 8339, 8377, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8410, 8411, 8412, 8413, 8423, 8424, 8425, 8426, 8428, 8437, 8464, 8495, 8496, 8497, 8503, 8504, 8506, 8516, 8519, 8529, 8532, 8535, 8540, 8541, 8544, 8545, 8546, 8547, 8548, 8552, 8560, 8561, 8562, 8566, 8567, 8568, 8569, 8584, 8585, 8586, 8591, 8592, 8593, 8594, 8596, 8597, 8598, 8608, 8617, 8618, 8625, 8626, 8675, 8697, 8698, 8699, 8718, 8719, 8720, 8782, 8783, 8784, 8785, 8859, 9108, 9155, 9158, 9229, 9549, 9921, 10059, 10145, 10656, 11180, 11431, 11586, 11767, 11788, 12118, 12248, 12275, 12697, 12995, 13037, 13339, 13347, 13834, 14105, 14178, 14377, 14980, 15295, 17087, 17328, 18207, 18236, 18273, 19089, 19748, 19997, 20168, 21421, 21424, 22036, 22113, 23428, 23437, 23566, 24365, 24516, 25155, 25287, 25302, 25378, 25507, 25599, 25905, 26149, 26525, 26549, 26567, 27517, 27577, 29049, 29321, 29363, 29909, 31930, TcChr1-P, TcChr1-S, TcChr10-P, TcChr10-S, TcChr11-P, TcChr11-S, TcChr12-P, TcChr13-S, TcChr15-P, TcChr15-S, TcChr16-P, TcChr16-S, TcChr17-S, TcChr18-P, TcChr18-S, TcChr19-S, TcChr2-S, TcChr21-P, TcChr21-S, TcChr22-P, TcChr22-S, TcChr23-S, TcChr24-P, TcChr24-S, TcChr25-P, TcChr28-P, TcChr28-S, TcChr29-P, TcChr3-P, TcChr3-S, TcChr31-P, TcChr33-P, TcChr35-S, TcChr36-P, TcChr38-P, TcChr4-P, TcChr4-S, TcChr41-S, TcChr5-S, TcChr6-P, TcChr6-S, TcChr7-S, TcChr8-P
##   - in 'y': Tcruzi_1061, Tcruzi_13827, Tcruzi_14624, Tcruzi_14746, Tcruzi_16698, Tcruzi_17030, Tcruzi_17524, Tcruzi_20778, Tcruzi_20878, Tcruzi_22268, Tcruzi_23491, Tcruzi_23901, Tcruzi_24008, Tcruzi_24686, Tcruzi_32658, Tcruzi_6480, Tcruzi_7274, Tcruzi_7742, Tcruzi_8516
##   Make sure to always combine/compare objects based on the same reference
##   genome (use suppressWarnings() to suppress this warning).
snp_norm <- normalize_expt(snp_cond_expt, filter=TRUE, transform="log2")
## This function will replace the expt$expressionset slot with:
## log2(cbcb(data))
## It will save copies of each step along the way
##  in expt$normalized with the corresponding libsizes. Keep libsizes in mind
##  when invoking limma.  The appropriate libsize is non-log(cpm(normalized)).
##  This is most likely kept at:
##  'new_expt$normalized$intermediate_counts$normalization$libsizes'
##  A copy of this may also be found at:
##  new_expt$best_libsize
## Leaving the data unconverted.  It is often advisable to cpm/rpkm
##  the data to normalize for sampling differences, keep in mind though that rpkm
##  has some annoying biases, and voom() by default does a cpm (though hpgl_voom()
##  will try to detect this).
## Leaving the data unnormalized.  This is necessary for DESeq, but
##  EdgeR/limma might benefit from normalization.  Good choices include quantile,
##  size-factor, tmm, etc.
## Not correcting the count-data for batch effects.  If batch is
##  included in EdgerR/limma's model, then this is probably wise; but in extreme
##  batch effects this is a good parameter to play with.
## Step 1: performing count filter with option: cbcb
## Removing 0 low-count genes (4539 remaining).
## Step 2: not normalizing the data.
## Step 3: not converting the data.
## Step 4: transforming the data with log2.
## transform_counts: Found 21113 values equal to 0, adding 1 to the matrix.
## Step 5: not doing batch correction.
test <- plot_corheat(snp_norm)

test2 <- plot_sample_heatmap(snp_norm, Rowv=FALSE)

des <- snp_norm$design
library(Heatplus)
##hmcols <- colorRampPalette(c("yellow","black","darkblue"))(256)
correlations <- hpgl_dist(exprs(snp_norm))
mydendro <- list(
  "clustfun" = hclust,
  "lwd" = 2.0)
col_data <- as.data.frame(des[, c("condition")])
row_data <- as.data.frame(des[, c("sampleid")])
colnames(col_data) <- c("condition")
colnames(row_data) <- c("sampleid")
myannot <- list(
  "Col" = list("data" = col_data),
  "Row" = list("data" = row_data))
myclust <- list("cuth" = 1.0,
                "col" = BrewerClusterCol)
mylabs <- list(
  "Row" = list("nrow" = 4),
  "Col" = list("nrow" = 4))
hmcols <- colorRampPalette(c("darkblue", "beige"))(333)
map1 <- annHeatmap2(
  correlations,
  dendrogram=mydendro,
  annotation=myannot,
  cluster=myclust,
  labels=mylabs,
  col=hmcols)
## Warning in breakColors(breaks, col): more colors than classes: ignoring 55
## last colors
plot(map1)

num_clusters <- max(map1[["cluster"]][["Row"]][["grp"]])
chosen_palette <- "Dark2"
new_colors <- grDevices::colorRampPalette(
                           RColorBrewer::brewer.pal(num_clusters, chosen_palette))(num_clusters)
myclust <- list("cuth" = 1.0,
                "col" = new_colors)
map2 <- annHeatmap2(
  correlations,
  dendrogram=mydendro,
  annotation=myannot,
  cluster=myclust,
  labels=mylabs,
  scale="none",
  col=hmcols)
## Warning in breakColors(breaks, col): more colors than classes: ignoring 149
## last colors
plot(map2)

if (!isTRUE(get0("skip_load"))) {
  pander::pander(sessionInfo())
  message(paste0("This is hpgltools commit: ", get_git_commit()))
  message(paste0("Saving to ", savefile))
  tmp <- sm(saveme(filename=savefile))
}
## If you wish to reproduce this exact build of hpgltools, invoke the following:
## > git clone http://github.com/abelew/hpgltools.git
## > git reset f3c1e03852c87dc60c7e72e726bb640572e695ff
## This is hpgltools commit: Thu Aug 22 15:32:44 2019 -0400: f3c1e03852c87dc60c7e72e726bb640572e695ff
## Saving to 01_annotation_v20190513.rda.xz
tmp <- loadme(filename=savefile)
LS0tCnRpdGxlOiAiVC4gY3J1emkgMjAxOTA1MTM6IFNhbXBsZSBFc3RpbWF0aW9uIgphdXRob3I6ICJhdGIgYWJlbGV3QGdtYWlsLmNvbSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiBodG1sX2RvY3VtZW50OgogIGNvZGVfZG93bmxvYWQ6IHRydWUKICBjb2RlX2ZvbGRpbmc6IHNob3cKICBmaWdfY2FwdGlvbjogdHJ1ZQogIGZpZ19oZWlnaHQ6IDcKICBmaWdfd2lkdGg6IDcKICBoaWdobGlnaHQ6IGRlZmF1bHQKICBrZWVwX21kOiBmYWxzZQogIG1vZGU6IHNlbGZjb250YWluZWQKICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQogIHRoZW1lOiByZWFkYWJsZQogIHRvYzogdHJ1ZQogIHRvY19mbG9hdDoKICAgY29sbGFwc2VkOiBmYWxzZQogICBzbW9vdGhfc2Nyb2xsOiBmYWxzZQotLS0KCjxzdHlsZT4KICBib2R5IC5tYWluLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDE2MDBweDsKICB9Cjwvc3R5bGU+CgpgYGB7ciBvcHRpb25zLCBpbmNsdWRlPUZBTFNFfQppZiAoIWlzVFJVRShnZXQwKCJza2lwX2xvYWQiKSkpIHsKICBsaWJyYXJ5KGhwZ2x0b29scykKICB0dCA8LSBzbShkZXZ0b29sczo6bG9hZF9hbGwoIi9kYXRhL2hwZ2x0b29scyIpKQogIGtuaXRyOjpvcHRzX2tuaXQkc2V0KHByb2dyZXNzPVRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UUlVFLAogICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTkwLAogICAgICAgICAgICAgICAgICAgICAgIGVjaG89VFJVRSkKICBrbml0cjo6b3B0c19jaHVuayRzZXQoZXJyb3I9VFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlnLndpZHRoPTgsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZy5oZWlnaHQ9OCwKICAgICAgICAgICAgICAgICAgICAgICAgZHBpPTk2KQogIG9sZF9vcHRpb25zIDwtIG9wdGlvbnMoZGlnaXRzPTQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzQXNGYWN0b3JzPUZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAga25pdHIuZHVwbGljYXRlLmxhYmVsPSJhbGxvdyIpCiAgZ2dwbG90Mjo6dGhlbWVfc2V0KGdncGxvdDI6OnRoZW1lX2J3KGJhc2Vfc2l6ZT0xMikpCiAgdmVyIDwtICIyMDE5MDUxMyIKICBwcmV2aW91c19maWxlIDwtIHBhc3RlMCgiMDFfYW5ub3RhdGlvbl92IiwgdmVyLCAiLlJtZCIpCgogIHRtcCA8LSB0cnkoc20obG9hZG1lKGZpbGVuYW1lPWdzdWIocGF0dGVybj0iXFwuUm1kIiwgcmVwbGFjZT0iXFwucmRhXFwueHoiLCB4PXByZXZpb3VzX2ZpbGUpKSkpCiAgcm1kX2ZpbGUgPC0gcGFzdGUwKCIwMV9hbm5vdGF0aW9uX3YiLCB2ZXIsICIuUm1kIikKICBzYXZlZmlsZSA8LSBnc3ViKHBhdHRlcm49IlxcLlJtZCIsIHJlcGxhY2U9IlxcLnJkYVxcLnh6IiwgeD1ybWRfZmlsZSkKfQpgYGAKCiMgU2FtcGxlIEVzdGltYXRpb24KCkxldCB1cyBzZWUgd2hhdCB3ZSBjYW4gbGVhcm4gYWJvdXQgb3VyIG15c3Rlcnkgc2FtcGxlcyEKCiMjIEdlbmVyYXRlIGV4cHJlc3Npb25zZXRzCgpJbiBteSBwcmV2aW91cyBpdGVyYXRpb24sIEkgbmVnbGVjdGVkIHRvIGluY2x1ZGUgdGhlIG5vbmVzbWVyYWxkbywgdW5hc3NpZ25lZCwKYW5kIGNvbWJpbmVkIGhhcGxvdHlwZSBkYXRhLiAgTGV0IHVzIGZpeCB0aGF0IGhlcmUuICBBcyBhbiBhc2lkZSwgaW4gYSBzZXBhcmF0ZQpwcmV2aW91cyBpdGVyYXRpb24sIEkgY29tYmluZWQgc29tZSBvZiB0aGUgb2xkZXIgKHRvcGhhdDItYmFzZWQgZnJvbSAyMDE1KSBkYXRhCndpdGggdGhpcyBkYXRhIHRvIHNlZSBob3cgdGhlc2UgbmV3ZXIgc2FtcGxlcyBjbHVzdGVyIHdpdGggdGhlIHByZXZpb3VzCnNhbXBsZXMuICBJIHdhbnQgdG8gZG8gdGhhdCBhZ2FpbiwgYnV0IHRoaXMgdGltZSBrZWVwIGl0IHNlcGFyYXRlLgoKIyMjIFRoZSBzZXQgb2YgYWxsIGhhcGxvdHlwZXMKCkNhdmVhdDogVGhpcyBpcyB1c2luZyBoaXNhdDIgcXVhbnRpZmljYXRpb25zLgoKYGBge3IgYWxsX25ld19oaXNhdDIsIGZpZy5zaG93PSJoaWRlIn0KYWxsX25ld19oaXNhdCA8LSBjcmVhdGVfZXhwdCgic2FtcGxlX3NoZWV0cy9hbGxfc2FtcGxlcy54bHN4IiwgZmlsZV9jb2x1bW49ImFsbGhpc2F0ZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZV9pbmZvPWhpc2F0X2NsYnJfYW5ub3QpCmFsbF9uZXdfd3JpdHRlbiA8LSBzbSh3cml0ZV9leHB0KAogIGFsbF9uZXdfaGlzYXQsCiAgZXhjZWw9cGFzdGUwKCJleGNlbC9hbGxfbmV3X2hpc2F0X3dyaXR0ZW4tdiIsIHZlciwgIi54bHN4IikpKQoKYWxsX25ld19oaXNhdF9zZW1hbnRpYyA8LSBzZW1hbnRpY19leHB0X2ZpbHRlcihhbGxfbmV3X2hpc2F0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljX2NvbHVtbj0iYW5ub3RfZ2VuZV9wcm9kdWN0IikKYGBgCgojIyMgQWxsIGhhcGxvdHlwZXMsIHNhbG1vbgoKYGBge3IgYWxsX25ld19zYWxtb24sIGZpZy5zaG93PSJoaWRlIn0KYWxsX25ld19zYWxtb24gPC0gY3JlYXRlX2V4cHQoInNhbXBsZV9zaGVldHMvYWxsX3NhbXBsZXMueGxzeCIsIGZpbGVfY29sdW1uPSJhbGxzYWxtb25maWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZV9pbmZvPWNsYnJfYW5ub3QpCmFsbF9uZXdfc2FsbW9uX3NlbWFudGljIDwtIHNlbWFudGljX2V4cHRfZmlsdGVyKGFsbF9uZXdfc2FsbW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY19jb2x1bW49ImFubm90X2dlbmVfcHJvZHVjdCIpCmFsbF9zYWxtb25fd3JpdHRlbiA8LSBzbSh3cml0ZV9leHB0KAogIGFsbF9uZXdfc2FsbW9uLAogIGV4Y2VsPXBhc3RlMCgiZXhjZWwvYWxsX25ld19zYWxtb25fd3JpdHRlbi12IiwgdmVyLCAiLnhsc3giKSkpCmBgYAoKIyMjIEVzbWVyYWxkbwoKQ2F2ZWF0OiBUaGlzIGlzIHVzaW5nIHNhbG1vbiBxdWFudGlmaWNhdGlvbnMuCgpgYGB7ciBlc21lcl9uZXdfZGF0YSwgZmlnLnNob3c9ImhpZGUifQplc21lcl9uZXcgPC0gY3JlYXRlX2V4cHQoInNhbXBsZV9zaGVldHMvYWxsX3NhbXBsZXMueGxzeCIsIGZpbGVfY29sdW1uPSJlc21lcmZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgIGdlbmVfaW5mbz1zYWxtb25fY2xicl9hbm5vdCkKZXNtZXJfbmV3X3dyaXR0ZW4gPC0gc20od3JpdGVfZXhwdCgKICBlc21lcl9uZXcsCiAgZXhjZWw9cGFzdGUwKCJleGNlbC9lc21lcl9uZXdfc2FsbW9uX3dyaXR0ZW4tdiIsIHZlciwgIi54bHN4IikpKQpgYGAKCiMjIyBOb24tRXNtZXJhbGRvCgpDYXZlYXQ6IFRoaXMgaXMgdXNpbmcgc2FsbW9uIHF1YW50aWZpY2F0aW9ucy4KCmBgYHtyIG5vbmVzbWVyX25ld19kYXRhLCBmaWcuc2hvdz0iaGlkZSJ9Cm5vbmVzbWVyX25ldyA8LSBjcmVhdGVfZXhwdCgic2FtcGxlX3NoZWV0cy9hbGxfc2FtcGxlcy54bHN4IiwgZmlsZV9jb2x1bW49Im5vbmVzbWVyZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgZ2VuZV9pbmZvPXNhbG1vbl9jbGJyX2Fubm90KQpub25lc21lcl9uZXdfd3JpdHRlbiA8LSBzbSh3cml0ZV9leHB0KAogIG5vbmVzbWVyX25ldywKICBleGNlbD1wYXN0ZTAoImV4Y2VsL25vbmVzbWVyX25ld19zYWxtb25fd3JpdHRlbi12IiwgdmVyLCAiLnhsc3giKSkpCmBgYAoKIyMjIFVuYXNzaWduZWQKCkNhdmVhdDogVGhpcyBpcyB1c2luZyBzYWxtb24gcXVhbnRpZmljYXRpb25zLgoKYGBge3IgdW5hc19uZXdfZGF0YSwgZmlnLnNob3c9ImhpZGUifQp1bmFzc2lnbmVkX25ldyA8LSBjcmVhdGVfZXhwdCgic2FtcGxlX3NoZWV0cy9hbGxfc2FtcGxlcy54bHN4IiwgZmlsZV9jb2x1bW49InVuYXNzaWduZWRmaWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZV9pbmZvPXNhbG1vbl9jbGJyX2Fubm90KQpgYGAKCiMjIyBDb21iaW5lIG5ldyBhbmQgcHJldmlvdXMgZGF0YQoKVGhlIHByZXZpb3VzIGRhdGEgd2FzIHZpYSB0b3BoYXQsIHNvIGl0IHNob3VsZCBvbmx5IGJlIGNvbWJpbmVkIHdpdGggdGhlIGhpc2F0CmRhdGEuCgpgYGB7ciBjb21iaW5lX2V4cHJlc3Npb25zZXRzfQphbGxfcHJldmlvdXMgPC0gY3JlYXRlX2V4cHQoInNhbXBsZV9zaGVldHMvYWxsX3NhbXBsZXMueGxzeCIsIGZpbGVfY29sdW1uPSJhbGx0b3BoYXRmaWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVfaW5mbz1jbGJyX2Fubm90KQpjdXJyZW50X25hbWVzIDwtIGdzdWIoeD1yb3duYW1lcyhleHBycyhhbGxfbmV3X2hpc2F0KSksIHBhdHRlcm49Il5leG9uXyIsIHJlcGxhY2VtZW50PSIiKQpjdXJyZW50X25hbWVzIDwtIG1ha2UubmFtZXMoZ3N1Yih4PWN1cnJlbnRfbmFtZXMsIHBhdHRlcm49IlxcLlxcZCskIiwgcmVwbGFjZW1lbnQ9IiIpLCB1bmlxdWU9VFJVRSkKIyMgQ29weSB0aGUgbmV3IGRhdGEgdG8gYSBmcmVzaCBmaWxlIGluIGNhc2Ugb2YgZXJyb3IuCmFsbF9jdXJyZW50IDwtIHNldF9leHB0X2dlbmVuYW1lcyhhbGxfbmV3X2hpc2F0LCBpZHM9Y3VycmVudF9uYW1lcykKCmFsbF9ib3RoIDwtIGNvbWJpbmVfZXhwdHMoYWxsX3ByZXZpb3VzLCBhbGxfY3VycmVudCkKZGltKGV4cHJzKGFsbF9ib3RoKSkKc3VtbWFyeShleHBycyhhbGxfYm90aCkpCgp3cml0dGVuX2JvdGggPC0gd3JpdGVfZXhwdChhbGxfYm90aCwgZXhjZWw9ImV4Y2VsL2JvdGhfd3JpdHRlbl8yMDE5MDgxMy54bHN4IikKYGBgCgojIyBDb3ZlcmFnZSBvZiBuZXcgdnMuIHByZXZpb3VzCgpgYGB7ciBwbG90X2xpYnNpemV9CmFsbF9saWJzaXplIDwtIHBsb3RfbGlic2l6ZShhbGxfYm90aCkKYWxsX2xpYnNpemUkcGxvdAoKYWxsX25vcm0gPC0gbm9ybWFsaXplX2V4cHQoYWxsX2JvdGgsIG5vcm09InF1YW50IiwgdHJhbnNmb3JtPSJsb2cyIiwgY29udmVydD0iY3BtIiwgZmlsdGVyPVRSVUUpCmFsbF9wY2EgPC0gcGxvdF9wY2EoYWxsX25vcm0pCmFsbF9wY2EkcGxvdApgYGAKCiMgTG9vayBhdCBkYXRhIGRpc3RyaWJ1dGlvbnMKCk5vcm1hbGl6ZSBhbmQgcGxvdCBhIGNvdXBsZSBwbG90cyBmb3IgdGhlc2UgYW5kIHNlZSBob3cgdGhleSBsb29rLgoKYGBge3IgZGlzdHJpYnV0aW9uc30KYWxsX2hpc2F0X25vcm0gPC0gc20obm9ybWFsaXplX2V4cHQoYWxsX25ld19oaXNhdCwgbm9ybT0icXVhbnQiLCBjb252ZXJ0PSJjcG0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09ImxvZzIiKSkKcGxvdF9wY2EoYWxsX2hpc2F0X25vcm0pJHBsb3QKcGxvdF9jb3JoZWF0KGFsbF9oaXNhdF9ub3JtKSRwbG90CgphbGxfc2FsbW9uX25vcm0gPC0gc20obm9ybWFsaXplX2V4cHQoYWxsX25ld19zYWxtb24sIG5vcm09InF1YW50IiwgY29udmVydD0iY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJsb2cyIikpCnBsb3RfcGNhKGFsbF9zYWxtb25fbm9ybSkkcGxvdApwbG90X2NvcmhlYXQoYWxsX3NhbG1vbl9ub3JtKSRwbG90Cgplc21lcl9uZXdfbm9ybSA8LSBzbShub3JtYWxpemVfZXhwdChlc21lcl9uZXcsIG5vcm09InF1YW50IiwgY29udmVydD0iY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJsb2cyIikpCnBsb3RfcGNhKGVzbWVyX25ld19ub3JtKSRwbG90CnBsb3RfY29yaGVhdChlc21lcl9uZXdfbm9ybSkkcGxvdAoKbm9uZXNtZXJfbmV3X25vcm0gPC0gc20obm9ybWFsaXplX2V4cHQobm9uZXNtZXJfbmV3LCBub3JtPSJxdWFudCIsIGNvbnZlcnQ9ImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0ibG9nMiIpKQpwbG90X3BjYShub25lc21lcl9uZXdfbm9ybSkkcGxvdApwbG90X2NvcmhlYXQobm9uZXNtZXJfbmV3X25vcm0pJHBsb3QKCnVuYXNfbmV3X25vcm0gPC0gc20obm9ybWFsaXplX2V4cHQodW5hc3NpZ25lZF9uZXcsIG5vcm09InF1YW50IiwgY29udmVydD0iY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09ImxvZzIiKSkKcGxvdF9wY2EodW5hc19uZXdfbm9ybSkkcGxvdApwbG90X2NvcmhlYXQodW5hc19uZXdfbm9ybSkkcGxvdApgYGAKCiMjIENvbXBhcmUgb2xkL25ldyBkYXRhCgpUaGUgYmlnIGNhdmVhdCBoZXJlIGlzIG9mIGNvdXJzZSB0aGUgY292ZXJhZ2UuICBUaGF0IHJlbWluZHMgbWUsIEkgaGF2ZSBiZWVuCm1lYW5pbmcgdG8gbWFrZSB0aGUgc2l6ZSBvZiB0aGUgZ2x5cGhzIGNvcnJlc3BvbmQgdG8gdGhlIHNhbXBsZXMnIHJlbGF0aXZlCmNvdmVyYWdlLiAgVGhpcyBpcyBhIGdyZWF0IGRhdGFzZXQgdG8gaWxsdXN0cmF0ZSB0aGF0IGlkZWEuCgpgYGB7ciBvbGRfbmV3X3BjYX0KYWxsX2JvdGhfbm9ybSA8LSBzbShub3JtYWxpemVfZXhwdChhbGxfYm90aCwgbm9ybT0icXVhbnQiLCBjb252ZXJ0PSJjcG0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0ibG9nMiIpKQpwbG90X3BjYShhbGxfYm90aF9ub3JtKSRwbG90CmFsbF9ib3RoX25vcm1fc3ZhIDwtIG5vcm1hbGl6ZV9leHB0KGFsbF9ib3RoLCBub3JtPSJxdWFudCIsIGNvbnZlcnQ9ImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT0ibG9nMiIsIGJhdGNoPSJzdmFzZXEiKQpwbG90X3BjYShhbGxfYm90aF9ub3JtX3N2YSkkcGxvdApgYGAKCiMjIEdldCBERSBUYWJsZXMKCkZvciBlYWNoIGRhdGEgc2V0LCBwZXJmb3JtIHRoZSB3dCB2cy4gbm90IERFIGFuYWx5c2lzLiAgUHJpbnQgc29tZSBwbG90cyBvZiB0aGUKcmVzdWx0cyBsYXRlci4gIE15IGFsbF9wYWlyd2lzZSgpIGZ1bmN0aW9uIGlzIHZlcnkgY2hhdHR5LiAgSSB3aWxsIGxldCBpdCB0YWxrCmZvciB0aGUgZmlyc3QgcnVuLCBidXQgdGhlbiBzdG9wIGl0IGZvciB0aGUgbGF0ZXIuCgojIyMgQWxsIGhhcGxvdHlwZXMKCmBgYHtyIGFsbF9kZV9hbmFseXNlcywgZmlnLnNob3c9ImhpZGUifQprZWVwZXJzIDwtIGxpc3QoCiAgImtvX3ZzX3d0IiA9IGMoInVua25vd24iLCAid3QiKSkKCmFsbF9oaXNhdF9kZSA8LSBhbGxfcGFpcndpc2UoYWxsX25ld19oaXNhdCwgbW9kZWxfYmF0Y2g9RkFMU0UsIGRvX2Vic2VxPVRSVUUpCgoKYWxsX3NlbWFudGljaGlzYXRfZGUgPC0gYWxsX3BhaXJ3aXNlKGFsbF9uZXdfaGlzYXRfc2VtYW50aWMsIG1vZGVsX2JhdGNoPUZBTFNFKQphbGxfc2VtYW50aWNoaXNhdF90YWJsZXMgPC0gY29tYmluZV9kZV90YWJsZXMoCiAgYWxsX3NlbWFudGljaGlzYXRfZGUsIGtlZXBlcnM9a2VlcGVycywgZXhjZWw9ImV4Y2VsL3NlbWFudGljX2NvbWJpbmVkLXYyMDE5MDgxMy54bHN4IikKYWxsX3NlbWFudGljaGlzYXRfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgYWxsX3NlbWFudGljaGlzYXRfdGFibGVzLCBleGNlbD0iZXhjZWwvc2VtYW50aWNfc2lnLXYyMDE5MDgxMy54bHN4IikKYWxsX3NlbWFudGljaGlzYXRfaW50IDwtIGludGVyc2VjdF9zaWduaWZpY2FudCgKICBhbGxfc2VtYW50aWNoaXNhdF90YWJsZXMsIGV4Y2VsPSJleGNlbC9zZW1hbnRpY19pbnQtdjIwMTkwODEzLnhsc3giKQoKYWxsX2hpc2F0X3RhYmxlcyA8LSBjb21iaW5lX2RlX3RhYmxlcygKICBhbGxfaGlzYXRfZGUsCiAga2VlcGVycz1rZWVwZXJzLAogIGV4Y2VsPXBhc3RlMCgiZXhjZWwvYWxsX2hpc2F0X3RhYmxlcy12IiwgdmVyLCAiLnhsc3giKSkKIyMgSXQgaXMgc28gd2VpcmQgdGhhdCBsaW1tYS9kZXNlcS9lZGdlciBkbyBub3QgYWdyZWUgZm9yIHRoaXMgZGF0YSwKIyMgdGhpcyBzaG91bGQgYmUgbG9va2VkIGludG8gZnVydGhlci4gQWhoLCBsb29raW5nIGF0IHRoZSBhbGxfbmV3X3RhYmxlcy54bHN4IGZpbGUsCiMjIEkgdGhpbmsgSSBzZWUgdGhlIGFuc3dlci4gIFRoZSBwYWlyd2lzZV9zdW1tYXJ5IHdvcmtzaGVldCBzaG93cyB0aGF0IHRoZSBsb2dGQyB2YWx1ZXMKIyMgYXJlIHZlcnkgc2ltaWxhciwgYnV0IHRoZSBwbG90cyBvZiBwLXZhbHVlcyB0byB0aGUgcmlnaHQgb2YgdGhlIHRhYmxlIHNob3cKIyMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgdGhyZXNob2xkcyBvZiAnc2lnbmlmaWNhbnQuJwoKIyMgZXh0cmFjdF9zaWduaWZpY2FudF9nZW5lcygpIHRhbGtzIHRvbyBtdWNoLCBJIGFtIHNpbGVuY2luZyBpdCBpbiBhbGwgaW52b2NhdGlvbnMuCmFsbF9oaXNhdF9zaWcgPC0gc20oZXh0cmFjdF9zaWduaWZpY2FudF9nZW5lcygKICBhbGxfaGlzYXRfdGFibGVzLAogIGV4Y2VsPXBhc3RlMCgiZXhjZWwvYWxsX2hpc2F0X3NpZ25pZmljYW50LXYiLCB2ZXIsICIueGxzeCIpKSkKCmFsbF9oaXNhdF8wLjFfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgYWxsX2hpc2F0X3RhYmxlcywgcD0wLjEsCiAgZXhjZWw9ImV4Y2VsL2FsbF9oaXNhdF9wMC4xLXYyMDE5MDgxMy54bHN4IikKYWxsX2hpc2F0XzAuMV9pbnQgPC0gaW50ZXJzZWN0X3NpZ25pZmljYW50KAogIGFsbF9oaXNhdF90YWJsZXMsIHA9MC4xLAogIGV4Y2VsPSJleGNlbC9hbGxfaGlzYXRfcDAuMV9pbnRlcnNlY3QtdjIwMTkwODEzLnhsc3giKQoKYWxsX2hpc2F0X3NpZyA8LSBleHRyYWN0X3NpZ25pZmljYW50X2dlbmVzKAogIGFsbF9oaXNhdF90YWJsZXMsIGV4Y2VsPSJleGNlbC9zaWduaWZpY2FudF9nZW5lcy54bHN4IikKYWxsX2hpc2F0X2ludGVyIDwtIGludGVyc2VjdF9zaWduaWZpY2FudCgKICBhbGxfaGlzYXRfdGFibGVzLAogIGV4Y2VsPSJleGNlbC9hbGxfaGlzYXRfbmV3X2ludGVyc2VjdGlvbnMtdjIwMTkwODEzLnhsc3giKQoKYWxsX3NhbG1vbl9kZSA8LSBzbShhbGxfcGFpcndpc2UoYWxsX25ld19zYWxtb24sIG1vZGVsX2JhdGNoPUZBTFNFLCBkb19lYnNlcT1UUlVFKSkKYWxsX3NhbG1vbl90YWJsZXMgPC0gc20oY29tYmluZV9kZV90YWJsZXMoCiAgYWxsX3NhbG1vbl9kZSwKICBrZWVwZXJzPWtlZXBlcnMsCiAgZXhjZWw9cGFzdGUwKCJleGNlbC9hbGxfc2FsbW9uX3RhYmxlcy12IiwgdmVyLCAiLnhsc3giKSkpCmFsbF9zYWxtb25fc2lnIDwtIHNtKGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgYWxsX3NhbG1vbl90YWJsZXMsCiAgZXhjZWw9cGFzdGUwKCJleGNlbC9hbGxfc2FsbW9uX3NpZ25pZmljYW50LXYiLCB2ZXIsICIueGxzeCIpKSkKCmFsbF9zZW1hbnRpY3NhbG1vbl9kZSA8LSBhbGxfcGFpcndpc2UoYWxsX25ld19zYWxtb25fc2VtYW50aWMsIG1vZGVsX2JhdGNoPUZBTFNFKQphbGxfc2VtYW50aWNzYWxtb25fdGFibGVzIDwtIGNvbWJpbmVfZGVfdGFibGVzKAogIGFsbF9zZW1hbnRpY3NhbG1vbl9kZSwga2VlcGVycz1rZWVwZXJzLCBleGNlbD0iZXhjZWwvc2VtYW50aWNfc2FsbW9uX2NvbWJpbmVkLXYyMDE5MDgxMy54bHN4IikKYWxsX3NlbWFudGljc2FsbW9uX3NpZyA8LSBleHRyYWN0X3NpZ25pZmljYW50X2dlbmVzKAogIGFsbF9zZW1hbnRpY3NhbG1vbl90YWJsZXMsIGV4Y2VsPSJleGNlbC9zZW1hbnRpY19zYWxtb25fc2lnLXYyMDE5MDgxMy54bHN4IikKYWxsX3NlbWFudGljc2FsbW9uX2ludCA8LSBpbnRlcnNlY3Rfc2lnbmlmaWNhbnQoCiAgYWxsX3NlbWFudGljc2FsbW9uX3RhYmxlcywgZXhjZWw9ImV4Y2VsL3NlbWFudGljX3NhbG1vbl9pbnQtdjIwMTkwODEzLnhsc3giKQoKYWxsX3NlbWFudGljaGlzYXRfZGUgPC0gYWxsX3BhaXJ3aXNlKGFsbF9uZXdfaGlzYXRfc2VtYW50aWMsIG1vZGVsX2JhdGNoPUZBTFNFKQphbGxfc2VtYW50aWNoaXNhdF90YWJsZXMgPC0gY29tYmluZV9kZV90YWJsZXMoCiAgYWxsX3NlbWFudGljaGlzYXRfZGUsIGtlZXBlcnM9a2VlcGVycywgZXhjZWw9ImV4Y2VsL3NlbWFudGljX2hpc2F0X2NvbWJpbmVkLXYyMDE5MDgxMy54bHN4IikKYWxsX3NlbWFudGljaGlzYXRfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgYWxsX3NlbWFudGljaGlzYXRfdGFibGVzLCBleGNlbD0iZXhjZWwvc2VtYW50aWNfaGlzYXRfc2lnLXYyMDE5MDgxMy54bHN4IikKYWxsX3NlbWFudGljaGlzYXRfaW50IDwtIGludGVyc2VjdF9zaWduaWZpY2FudCgKICBhbGxfc2VtYW50aWNoaXNhdF90YWJsZXMsIGV4Y2VsPSJleGNlbC9zZW1hbnRpY19oaXNhdF9pbnQtdjIwMTkwODEzLnhsc3giKQoKc2FsbW9uX3RhYmxlIDwtIGFsbF9zYWxtb25fdGFibGVzW1siZGF0YSJdXVtbMV1dCmhpc2F0X3RhYmxlIDwtIGFsbF9oaXNhdF90YWJsZXNbWyJkYXRhIl1dW1sxXV0Kcm93bmFtZXMoaGlzYXRfdGFibGUpIDwtIGdzdWIocGF0dGVybj0iXmV4b25fIiwgcmVwbGFjZW1lbnQ9IiIsIHg9cm93bmFtZXMoaGlzYXRfdGFibGUpKQpyb3duYW1lcyhoaXNhdF90YWJsZSkgPC0gZ3N1YihwYXR0ZXJuPSJcXC4xJCIsIHJlcGxhY2VtZW50PSIiLCB4PXJvd25hbWVzKGhpc2F0X3RhYmxlKSkKbWVyZ2VkX3RhYmxlIDwtIG1lcmdlKHNhbG1vbl90YWJsZSwgaGlzYXRfdGFibGUsIGJ5PSJyb3cubmFtZXMiKQpjb3IudGVzdChtZXJnZWRfdGFibGVbWyJsaW1tYV9sb2dmYy54Il1dLCBtZXJnZWRfdGFibGVbWyJsaW1tYV9sb2dmYy55Il1dLCBtZXRob2Q9InNwZWFybWFuIikKY29yLnRlc3QobWVyZ2VkX3RhYmxlW1siZGVzZXFfbG9nZmMueCJdXSwgbWVyZ2VkX3RhYmxlW1siZGVzZXFfbG9nZmMueSJdXSwgbWV0aG9kPSJzcGVhcm1hbiIpCmNvci50ZXN0KG1lcmdlZF90YWJsZVtbImVkZ2VyX2xvZ2ZjLngiXV0sIG1lcmdlZF90YWJsZVtbImVkZ2VyX2xvZ2ZjLnkiXV0sIG1ldGhvZD0ic3BlYXJtYW4iKQojIyBob2x5IGNyYXAgSSB1dHRlcmx5IGV4cGVjdGVkIHRoZXNlIHRvIGJlIG11Y2ggaGlnaGVyLCBpbiBvdGhlciBkYXRhIHNldHMgdGhleSB3ZXJlID49IDAuOTguCnRlc3QgPC0gcGxvdF9saW5lYXJfc2NhdHRlcihtZXJnZWRfdGFibGVbLCBjKCJkZXNlcV9sb2dmYy54IiwgImRlc2VxX2xvZ2ZjLnkiKV0pCnRlc3RbWyJzY2F0dGVyIl1dCmBgYAoKIyMjIEVzbWVyYWxkbwoKYGBge3IgZXNtZXJfZGVfYW5hbHlzZXMsIGZpZy5zaG93PSJoaWRlIn0KZXNtZXJfbmV3X2RlIDwtIHNtKGFsbF9wYWlyd2lzZShlc21lcl9uZXcsIG1vZGVsX2JhdGNoPUZBTFNFLCBkb19lYnNlcT1UUlVFKSkKZXNtZXJfbmV3X3RhYmxlcyA8LSBzbShjb21iaW5lX2RlX3RhYmxlcygKICBlc21lcl9uZXdfZGUsCiAga2VlcGVycz1rZWVwZXJzLAogIGV4Y2VsPXBhc3RlMCgiZXhjZWwvZXNtZXJfbmV3X3RhYmxlcy12IiwgdmVyLCAiLnhsc3giKSkpCmVzbWVyX25ld19zaWcgPC0gc20oZXh0cmFjdF9zaWduaWZpY2FudF9nZW5lcygKICBlc21lcl9uZXdfdGFibGVzLAogIGV4Y2VsPXBhc3RlMCgiZXhjZWwvZXNtZXJfbmV3X3NpZ25pZmljYW50LXYiLCB2ZXIsICIueGxzeCIpKSkKYGBgCgojIyMgTm9uLUVzbWVyYWxkbwoKYGBge3Igbm9lc21lcl9kZV9hbmFseXNlcywgZmlnLnNob3c9ImhpZGUifQpub25lc21lcl9uZXdfZGUgPC0gc20oYWxsX3BhaXJ3aXNlKG5vbmVzbWVyX25ldywgbW9kZWxfYmF0Y2g9RkFMU0UsIGRvX2Vic2VxPVRSVUUpKQpub25lc21lcl9uZXdfdGFibGVzIDwtIHNtKGNvbWJpbmVfZGVfdGFibGVzKAogIG5vbmVzbWVyX25ld19kZSwKICBrZWVwZXJzPWtlZXBlcnMsCiAgZXhjZWw9cGFzdGUwKCJleGNlbC9ub25lc21lcl9uZXdfdGFibGVzLXYiLCB2ZXIsICIueGxzeCIpKSkKbm9uZXNtZXJfbmV3X3NpZyA8LSBzbShleHRyYWN0X3NpZ25pZmljYW50X2dlbmVzKAogIG5vbmVzbWVyX25ld190YWJsZXMsCiAgZXhjZWw9cGFzdGUwKCJleGNlbC9ub25lc21lcl9uZXdfc2lnbmlmaWNhbnQtdiIsIHZlciwgIi54bHN4IikpKQpgYGAKCiMjIENvbXBhcmUgRXNtZXJhbGRvIGFuZCBOb24tRXNtZXJhbGRvCgpgYGB7ciBlc21lcl9ub25fY29tcGFyZX0KbGlicmFyeShFdVBhdGhEQikKZXNtZXJfbmFtZXMgPC0gZ2V0X2V1cGF0aF9wa2duYW1lcyhlc21lcl9lbnRyeSkKbGlicmFyeShlc21lcl9uYW1lcyRvcmdkYiwgY2hhcmFjdGVyPVRSVUUpCm5vbmVzbWVyX25hbWVzIDwtIGdldF9ldXBhdGhfcGtnbmFtZXMobm9uZXNtZXJfZW50cnkpCmxpYnJhcnkobm9uZXNtZXJfbmFtZXMkb3JnZGIsIGNoYXJhY3Rlcj1UUlVFKQp1bmFzX25hbWVzIDwtIGdldF9ldXBhdGhfcGtnbmFtZXModW5hc19lbnRyeSkKbGlicmFyeSh1bmFzX25hbWVzJG9yZ2RiLCBjaGFyYWN0ZXI9VFJVRSkKZXNtZXJfZGIgPC0gZ2V0MChlc21lcl9uYW1lcyRvcmdkYikKbm9uZXNtZXJfZGIgPC0gZ2V0MChub25lc21lcl9uYW1lcyRvcmdkYikKCmVzbWVyX29ydGhvcyA8LSBsb2FkX29yZ2RiX2dvKAogIGVzbWVyX2RiLAogIGNvbHVtbnM9Yygib3J0aG9sb2dzX2dlbmVfaWQiLCAib3J0aG9sb2dzX2dpZCIsICJvcnRob2xvZ3Nfb3JnYW5pc20iLCAib3J0aG9sb2dzX3Byb2R1Y3QiKSkKCm5vbmVzbWVyX2lkeCA8LSBncmVwbCh4PWVzbWVyX29ydGhvc1tbIk9SVEhPTE9HU19PUkdBTklTTSJdXSwgcGF0dGVybj0iTm9uIikKbm9uZXNtZXJfdGFibGUgPC0gZXNtZXJfb3J0aG9zW25vbmVzbWVyX2lkeCwgXQpgYGAKCiMgVmFyaWFudCBwb3NpdGlvbnMKCmBgYHtyIHZhcmlhbnRzfQpzbnBfY29uZF9leHB0IDwtIGNvdW50X2V4cHRfc25wcyhhbGxfbmV3X2hpc2F0LCB0eXBlPSJwZXJjZW50IikKc25wX251bWJlcnMgPC0gcGxvdF9saWJzaXplKHNucF9jb25kX2V4cHQpCnNucF9udW1iZXJzJHBsb3QKCnNucF9jb25kX3NldHMgPC0gZ2V0X3NucF9zZXRzKHNucF9jb25kX2V4cHQsIGZhY3Rvcj0iY29uZGl0aW9uIikKCnNucF9jb25kX3N1bW1hcnkgPC0gc25wc192c19nZW5lcyhhbGxfbmV3X2hpc2F0LCBzbnBfY29uZF9zZXRzKQpzbnBfY29uZF9nZW5lcyA8LSBzbnBzX3ZzX2ludGVyc2VjdGlvbnMoYWxsX25ld19oaXNhdCwgc25wX2NvbmRfc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyX2NvbHVtbj0iY2hyb21vc29tZSIpCgpzbnBfbm9ybSA8LSBub3JtYWxpemVfZXhwdChzbnBfY29uZF9leHB0LCBmaWx0ZXI9VFJVRSwgdHJhbnNmb3JtPSJsb2cyIikKdGVzdCA8LSBwbG90X2NvcmhlYXQoc25wX25vcm0pCnRlc3QyIDwtIHBsb3Rfc2FtcGxlX2hlYXRtYXAoc25wX25vcm0sIFJvd3Y9RkFMU0UpCgpkZXMgPC0gc25wX25vcm0kZGVzaWduCmxpYnJhcnkoSGVhdHBsdXMpCiMjaG1jb2xzIDwtIGNvbG9yUmFtcFBhbGV0dGUoYygieWVsbG93IiwiYmxhY2siLCJkYXJrYmx1ZSIpKSgyNTYpCmNvcnJlbGF0aW9ucyA8LSBocGdsX2Rpc3QoZXhwcnMoc25wX25vcm0pKQpteWRlbmRybyA8LSBsaXN0KAogICJjbHVzdGZ1biIgPSBoY2x1c3QsCiAgImx3ZCIgPSAyLjApCmNvbF9kYXRhIDwtIGFzLmRhdGEuZnJhbWUoZGVzWywgYygiY29uZGl0aW9uIildKQpyb3dfZGF0YSA8LSBhcy5kYXRhLmZyYW1lKGRlc1ssIGMoInNhbXBsZWlkIildKQpjb2xuYW1lcyhjb2xfZGF0YSkgPC0gYygiY29uZGl0aW9uIikKY29sbmFtZXMocm93X2RhdGEpIDwtIGMoInNhbXBsZWlkIikKbXlhbm5vdCA8LSBsaXN0KAogICJDb2wiID0gbGlzdCgiZGF0YSIgPSBjb2xfZGF0YSksCiAgIlJvdyIgPSBsaXN0KCJkYXRhIiA9IHJvd19kYXRhKSkKbXljbHVzdCA8LSBsaXN0KCJjdXRoIiA9IDEuMCwKICAgICAgICAgICAgICAgICJjb2wiID0gQnJld2VyQ2x1c3RlckNvbCkKbXlsYWJzIDwtIGxpc3QoCiAgIlJvdyIgPSBsaXN0KCJucm93IiA9IDQpLAogICJDb2wiID0gbGlzdCgibnJvdyIgPSA0KSkKaG1jb2xzIDwtIGNvbG9yUmFtcFBhbGV0dGUoYygiZGFya2JsdWUiLCAiYmVpZ2UiKSkoMzMzKQptYXAxIDwtIGFubkhlYXRtYXAyKAogIGNvcnJlbGF0aW9ucywKICBkZW5kcm9ncmFtPW15ZGVuZHJvLAogIGFubm90YXRpb249bXlhbm5vdCwKICBjbHVzdGVyPW15Y2x1c3QsCiAgbGFiZWxzPW15bGFicywKICBjb2w9aG1jb2xzKQpwbG90KG1hcDEpCm51bV9jbHVzdGVycyA8LSBtYXgobWFwMVtbImNsdXN0ZXIiXV1bWyJSb3ciXV1bWyJncnAiXV0pCmNob3Nlbl9wYWxldHRlIDwtICJEYXJrMiIKbmV3X2NvbG9ycyA8LSBnckRldmljZXM6OmNvbG9yUmFtcFBhbGV0dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChudW1fY2x1c3RlcnMsIGNob3Nlbl9wYWxldHRlKSkobnVtX2NsdXN0ZXJzKQpteWNsdXN0IDwtIGxpc3QoImN1dGgiID0gMS4wLAogICAgICAgICAgICAgICAgImNvbCIgPSBuZXdfY29sb3JzKQptYXAyIDwtIGFubkhlYXRtYXAyKAogIGNvcnJlbGF0aW9ucywKICBkZW5kcm9ncmFtPW15ZGVuZHJvLAogIGFubm90YXRpb249bXlhbm5vdCwKICBjbHVzdGVyPW15Y2x1c3QsCiAgbGFiZWxzPW15bGFicywKICBzY2FsZT0ibm9uZSIsCiAgY29sPWhtY29scykKcGxvdChtYXAyKQpgYGAKCmBgYHtyIHNhdmVtZX0KaWYgKCFpc1RSVUUoZ2V0MCgic2tpcF9sb2FkIikpKSB7CiAgcGFuZGVyOjpwYW5kZXIoc2Vzc2lvbkluZm8oKSkKICBtZXNzYWdlKHBhc3RlMCgiVGhpcyBpcyBocGdsdG9vbHMgY29tbWl0OiAiLCBnZXRfZ2l0X2NvbW1pdCgpKSkKICBtZXNzYWdlKHBhc3RlMCgiU2F2aW5nIHRvICIsIHNhdmVmaWxlKSkKICB0bXAgPC0gc20oc2F2ZW1lKGZpbGVuYW1lPXNhdmVmaWxlKSkKfQpgYGAKCmBgYHtyIGxvYWRtZV9hZnRlciwgZXZhbD1GQUxTRX0KdG1wIDwtIGxvYWRtZShmaWxlbmFtZT1zYXZlZmlsZSkKYGBgCg==