1 Introduction

I want to use this document to examine our first round of persistence samples. I checked my email from Najib and did not find a sample sheet but did find an explanation of the three sample types we expect.

In preparation for this, I downloaded a new hg38 genome. Since the panamensis asembly has not significantly changed (excepting the putative long read genome which I have not yet seen), I am just using the same one.

2 Loading annotation

The hg38 genome I got is from 202405. The various ensembl archive servers have been having troubles recently, so I may need to cherry-pick one which is working. I will therefore also load annotations from org.He.eg.db in case ensembl is not responding.

## Ok, so useast.ensembl is failing today, let us use the jan2024 archive?
#hs_annot <- load_biomart_annotations(archive = FALSE, species = "hsapiens")
## Seems like the 202401 archive is a good choice, it is explicitly the hg38_111 release.
## and it is waaaaay faster (like 100x) than useast right now.

## Note, I am explicitly not using the archive in the following invocation because none of them were
## responding, so that was a whole big annoying thing.
hs_annot <- load_biomart_annotations(archive = FALSE, species = "hsapiens")
## The biomart annotations file already exists, loading from it.
hs_orgdb <- load_orgdb_annotations("org.Hs.eg.db", fields = c("SYMBOL", "ENSEMBL", "ENTREZID"))[["genes"]]
## Loading required package: AnnotationDbi
## Loading required package: stats4
## Loading required package: BiocGenerics
## Loading required package: generics
## 
## Attaching package: 'generics'
## The following objects are masked from 'package:base':
## 
##     as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, setequal, union
## 
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:hpgltools':
## 
##     conditions, conditions<-, IQR, mad, sd, var
## The following objects are masked from 'package:stats':
## 
##     IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
## 
##     anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call, duplicated, eval, evalq, Filter,
##     Find, get, grep, grepl, is.unsorted, lapply, Map, mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
##     Position, rank, rbind, Reduce, rownames, sapply, saveRDS, table, tapply, unique, unsplit, which.max, which.min
## Loading required package: Biobase
## Welcome to Bioconductor
## 
##     Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see 'citation("Biobase")',
##     and for packages 'citation("pkgname")'.
## 
## Attaching package: 'Biobase'
## The following objects are masked from 'package:hpgltools':
## 
##     exprs<-, notes, pData<-, sampleNames<-
## Loading required package: IRanges
## Loading required package: S4Vectors
## 
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:utils':
## 
##     findMatches
## The following objects are masked from 'package:base':
## 
##     expand.grid, I, unname
## 
## Unable to find CDSNAME, setting it to GENENAME.
## Unable to find GENE_TYPE, setting it to GENETYPE.
## Unable to find CDSCHROM in the db, removing it.
## Unable to find CDSSTRAND in the db, removing it.
## Unable to find CDSSTART in the db, removing it.
## Unable to find CDSEND in the db, removing it.
## Extracted all gene ids.
## Attempting to select: GENENAME, GENETYPE, SYMBOL, ENSEMBL, ENTREZID
## 'select()' returned 1:many mapping between keys and columns
panamensis_orgdb_idx <- grep(pattern = "^org.+panamen.+MHOM.+db$", x = rownames(installed.packages()))
panamensis_orgdb <- tail(rownames(installed.packages())[panamensis_orgdb_idx], n = 1)
lp_annot <- load_orgdb_annotations(panamensis_orgdb, keytype = "gid")
## 
## Unable to find CDSNAME, setting it to ANNOT_EXTERNAL_DB_NAME.
## Unable to find CDSCHROM in the db, removing it.
## Unable to find CDSSTRAND in the db, removing it.
## Unable to find CDSSTART in the db, removing it.
## Unable to find CDSEND in the db, removing it.
## Extracted all gene ids.
## Attempting to select: ANNOT_EXTERNAL_DB_NAME, GENE_TYPE
## 'select()' returned 1:1 mapping between keys and columns
major_db <- "org.Lmajor.Friedlin.v68.eg.db"
library(major_db, character.only = TRUE)
## 
all_columns <- keytypes(org.Lmajor.Friedlin.v68.eg.db)
wanted_idx <- grepl(pattern = "^ANNOT", x = all_columns)
wanted_columns <- all_columns[wanted_idx]
gene_ids <- keys(org.Lmajor.Friedlin.v68.eg.db)
major_annotations <- load_orgdb_annotations(major_db, keytype = "gid", fields = wanted_columns)
## Unable to find CDSNAME, setting it to ANNOT_EXTERNAL_DB_NAME.
## Unable to find CDSCHROM in the db, removing it.
## Unable to find CDSSTRAND in the db, removing it.
## Unable to find CDSSTART in the db, removing it.
## Unable to find CDSEND in the db, removing it.
## Extracted all gene ids.
## Attempting to select: ANNOT_EXTERNAL_DB_NAME, GENE_TYPE, ANNOT_AA_SEQUENCE_ID, ANNOT_ANNOTATED_GO_COMPONENT, ANNOT_ANNOTATED_GO_FUNCTION, ANNOT_ANNOTATED_GO_ID_COMPONENT, ANNOT_ANNOTATED_GO_ID_FUNCTION, ANNOT_ANNOTATED_GO_ID_PROCESS, ANNOT_ANNOTATED_GO_PROCESS, ANNOT_ANTICODON, ANNOT_APOLLO_LINK_OUT, ANNOT_APOLLO_TRANSCRIPT_DESCRIPTION, ANNOT_CDS, ANNOT_CDS_LENGTH, ANNOT_CHROMOSOME, ANNOT_CODING_END, ANNOT_CODING_START, ANNOT_EC_NUMBERS, ANNOT_EC_NUMBERS_DERIVED, ANNOT_END_MAX, ANNOT_EXON_COUNT, ANNOT_EXTERNAL_DB_NAME, ANNOT_EXTERNAL_DB_VERSION, ANNOT_FIVE_PRIME_UTR_LENGTH, ANNOT_GENE_CONTEXT_END, ANNOT_GENE_CONTEXT_START, ANNOT_GENE_END_MAX, ANNOT_GENE_END_MAX_TEXT, ANNOT_GENE_ENTREZ_ID, ANNOT_GENE_ENTREZ_LINK_DISPLAYTEXT, ANNOT_GENE_ENTREZ_LINK_URL, ANNOT_GENE_EXON_COUNT, ANNOT_GENE_HTS_NONCODING_SNPS, ANNOT_GENE_HTS_NONSYN_SYN_RATIO, ANNOT_GENE_HTS_NONSYNONYMOUS_SNPS, ANNOT_GENE_HTS_STOP_CODON_SNPS, ANNOT_GENE_HTS_SYNONYMOUS_SNPS, ANNOT_GENE_LOCATION_TEXT, ANNOT_GENE_NAME, ANNOT_GENE_ORTHOLOG_NUMBER, ANNOT_GENE_ORTHOMCL_NAME, ANNOT_GENE_PARALOG_NUMBER, ANNOT_GENE_PREVIOUS_IDS, ANNOT_GENE_PRODUCT, ANNOT_GENE_START_MIN, ANNOT_GENE_START_MIN_TEXT, ANNOT_GENE_TOTAL_HTS_SNPS, ANNOT_GENE_TRANSCRIPT_COUNT, ANNOT_GENE_TYPE, ANNOT_GENOMIC_SEQUENCE_LENGTH, ANNOT_GENUS_SPECIES, ANNOT_HAS_MISSING_TRANSCRIPTS, ANNOT_INTERPRO_DESCRIPTION, ANNOT_INTERPRO_ID, ANNOT_IS_DEPRECATED, ANNOT_IS_PSEUDO, ANNOT_ISOELECTRIC_POINT, ANNOT_LOCATION_TEXT, ANNOT_MAP_LOCATION, ANNOT_MCMC_LOCATION, ANNOT_MOLECULAR_WEIGHT, ANNOT_NCBI_TAX_ID, ANNOT_ORTHOMCL_LINK, ANNOT_OVERVIEW, ANNOT_PFAM_DESCRIPTION, ANNOT_PFAM_ID, ANNOT_PIRSF_DESCRIPTION, ANNOT_PIRSF_ID, ANNOT_PREDICTED_GO_COMPONENT, ANNOT_PREDICTED_GO_FUNCTION, ANNOT_PREDICTED_GO_ID_COMPONENT, ANNOT_PREDICTED_GO_ID_FUNCTION, ANNOT_PREDICTED_GO_ID_PROCESS, ANNOT_PREDICTED_GO_PROCESS, ANNOT_PRIMARY_KEY, ANNOT_PROB_MAP, ANNOT_PROB_MCMC, ANNOT_PROSITEPROFILES_DESCRIPTION, ANNOT_PROSITEPROFILES_ID, ANNOT_PROTEIN_LENGTH, ANNOT_PROTEIN_SEQUENCE, ANNOT_PROTEIN_SOURCE_ID, ANNOT_PSEUDO_STRING, ANNOT_SEQUENCE_DATABASE_NAME, ANNOT_SEQUENCE_ID, ANNOT_SIGNALP_PEPTIDE, ANNOT_SMART_DESCRIPTION, ANNOT_SMART_ID, ANNOT_SNPOVERVIEW, ANNOT_SO_ID, ANNOT_SO_TERM_DEFINITION, ANNOT_SO_TERM_NAME, ANNOT_SO_VERSION, ANNOT_START_MIN, ANNOT_STRAND, ANNOT_STRAND_PLUS_MINUS, ANNOT_SUPERFAMILY_DESCRIPTION, ANNOT_SUPERFAMILY_ID, ANNOT_THREE_PRIME_UTR_LENGTH, ANNOT_TIGRFAM_DESCRIPTION, ANNOT_TIGRFAM_ID, ANNOT_TM_COUNT, ANNOT_TRANS_FOUND_PER_GENE_INTERNAL, ANNOT_TRANSCRIPT_INDEX_PER_GENE, ANNOT_TRANSCRIPT_LENGTH, ANNOT_TRANSCRIPT_LINK, ANNOT_TRANSCRIPT_PRODUCT, ANNOT_TRANSCRIPT_SEQUENCE, ANNOT_TRANSCRIPTS_FOUND_PER_GENE, ANNOT_UNIPROT_IDS, ANNOT_UNIPROT_LINKS
## 'select()' returned 1:1 mapping between keys and columns

This is a little silly, but I am going to reload the annotations using the previous invocation to extract the annotation table without having to think. The previous block loads the orgdb for me, so I can just use that to get the fun annotations.

lp_org_annot <- load_orgdb_annotations(panamensis_orgdb, keytype = "gid", fields = "^annot")
## Unable to find CDSNAME, setting it to ANNOT_EXTERNAL_DB_NAME.
## Unable to find CDSCHROM in the db, removing it.
## Unable to find CDSSTRAND in the db, removing it.
## Unable to find CDSSTART in the db, removing it.
## Unable to find CDSEND in the db, removing it.
## Extracted all gene ids.
## Attempting to select: ANNOT_EXTERNAL_DB_NAME, GENE_TYPE, ANNOT_AA_SEQUENCE_ID, ANNOT_ANNOTATED_GO_COMPONENT, ANNOT_ANNOTATED_GO_FUNCTION, ANNOT_ANNOTATED_GO_ID_COMPONENT, ANNOT_ANNOTATED_GO_ID_FUNCTION, ANNOT_ANNOTATED_GO_ID_PROCESS, ANNOT_ANNOTATED_GO_PROCESS, ANNOT_ANTICODON, ANNOT_APOLLO_LINK_OUT, ANNOT_APOLLO_TRANSCRIPT_DESCRIPTION, ANNOT_CDS, ANNOT_CDS_LENGTH, ANNOT_CHROMOSOME, ANNOT_CODING_END, ANNOT_CODING_START, ANNOT_EC_NUMBERS, ANNOT_EC_NUMBERS_DERIVED, ANNOT_END_MAX, ANNOT_EXON_COUNT, ANNOT_EXTERNAL_DB_NAME, ANNOT_EXTERNAL_DB_VERSION, ANNOT_FIVE_PRIME_UTR_LENGTH, ANNOT_GENE_CONTEXT_END, ANNOT_GENE_CONTEXT_START, ANNOT_GENE_END_MAX, ANNOT_GENE_END_MAX_TEXT, ANNOT_GENE_ENTREZ_ID, ANNOT_GENE_ENTREZ_LINK, ANNOT_GENE_EXON_COUNT, ANNOT_GENE_HTS_NONCODING_SNPS, ANNOT_GENE_HTS_NONSYN_SYN_RATIO, ANNOT_GENE_HTS_NONSYNONYMOUS_SNPS, ANNOT_GENE_HTS_STOP_CODON_SNPS, ANNOT_GENE_HTS_SYNONYMOUS_SNPS, ANNOT_GENE_LOCATION_TEXT, ANNOT_GENE_NAME, ANNOT_GENE_ORTHOLOG_NUMBER, ANNOT_GENE_ORTHOMCL_NAME, ANNOT_GENE_PARALOG_NUMBER, ANNOT_GENE_PREVIOUS_IDS, ANNOT_GENE_PRODUCT, ANNOT_GENE_START_MIN, ANNOT_GENE_START_MIN_TEXT, ANNOT_GENE_TOTAL_HTS_SNPS, ANNOT_GENE_TRANSCRIPT_COUNT, ANNOT_GENE_TYPE, ANNOT_GENOMIC_SEQUENCE_LENGTH, ANNOT_GENUS_SPECIES, ANNOT_HAS_MISSING_TRANSCRIPTS, ANNOT_INTERPRO_DESCRIPTION, ANNOT_INTERPRO_ID, ANNOT_IS_DEPRECATED, ANNOT_IS_PSEUDO, ANNOT_ISOELECTRIC_POINT, ANNOT_LOCATION_TEXT, ANNOT_MAP_LOCATION, ANNOT_MCMC_LOCATION, ANNOT_MOLECULAR_WEIGHT, ANNOT_NCBI_TAX_ID, ANNOT_ORTHOMCL_LINK, ANNOT_OVERVIEW, ANNOT_PFAM_DESCRIPTION, ANNOT_PFAM_ID, ANNOT_PIRSF_DESCRIPTION, ANNOT_PIRSF_ID, ANNOT_PREDICTED_GO_COMPONENT, ANNOT_PREDICTED_GO_FUNCTION, ANNOT_PREDICTED_GO_ID_COMPONENT, ANNOT_PREDICTED_GO_ID_FUNCTION, ANNOT_PREDICTED_GO_ID_PROCESS, ANNOT_PREDICTED_GO_PROCESS, ANNOT_PRIMARY_KEY, ANNOT_PROB_MAP, ANNOT_PROB_MCMC, ANNOT_PROSITEPROFILES_DESCRIPTION, ANNOT_PROSITEPROFILES_ID, ANNOT_PROTEIN_LENGTH, ANNOT_PROTEIN_SEQUENCE, ANNOT_PROTEIN_SOURCE_ID, ANNOT_PSEUDO_STRING, ANNOT_SEQUENCE_DATABASE_NAME, ANNOT_SEQUENCE_ID, ANNOT_SIGNALP_PEPTIDE, ANNOT_SMART_DESCRIPTION, ANNOT_SMART_ID, ANNOT_SNPOVERVIEW, ANNOT_SO_ID, ANNOT_SO_TERM_DEFINITION, ANNOT_SO_TERM_NAME, ANNOT_SO_VERSION, ANNOT_START_MIN, ANNOT_STRAND, ANNOT_STRAND_PLUS_MINUS, ANNOT_SUPERFAMILY_DESCRIPTION, ANNOT_SUPERFAMILY_ID, ANNOT_THREE_PRIME_UTR_LENGTH, ANNOT_TIGRFAM_DESCRIPTION, ANNOT_TIGRFAM_ID, ANNOT_TM_COUNT, ANNOT_TRANS_FOUND_PER_GENE_INTERNAL, ANNOT_TRANSCRIPT_INDEX_PER_GENE, ANNOT_TRANSCRIPT_LENGTH, ANNOT_TRANSCRIPT_LINK, ANNOT_TRANSCRIPT_PRODUCT, ANNOT_TRANSCRIPT_SEQUENCE, ANNOT_TRANSCRIPTS_FOUND_PER_GENE, ANNOT_UNIPROT_IDS, ANNOT_UNIPROT_LINKS
## 'select()' returned 1:1 mapping between keys and columns

3 Colors

I want a reminder to set the colors for the various states in the data. A fun thing I did recently: I can automagically pull colors from the backgrounds of cells in the sample sheet! Not really relevant right now, but fun.

chosen_colors <- list(
  "sample_type" = list(),
  "detectionparasiteby7sl" = list(),
  "library_type" = list(),
  "nasal_7sl_status" = list(),
  "any_7sl_status" = list()
  "participant_code" = list(),
  "detection_type" = list(),
  "hs" = list(),
  "clinical_presentation" = list(),
  "sample_7sl" = list())
## Error in parse(text = input): <text>:7:3: unexpected string constant
## 6:   "any_7sl_status" = list()
## 7:   "participant_code"
##      ^

4 Collect preprocessed metadata

Use my new sample sheet here. I got the idea recently to make a copy of any freshly downloaded sample sheet and give it the suffix ’_readwrite’ so that I remember to never open the samplesheet by itself in rw.

current_samplesheet <- "sample_sheets/Persistence_v2.1_20261007_readwrite.xlsx"
first_spec <- make_rnaseq_spec()
input <- read_metadata(current_samplesheet)
colnames(input)
##  [1] "seq"                                         "hpgl_identifier"                             "aim"                                        
##  [4] "participant_code"                            "sample_type"                                 "tube_label_origin"                          
##  [7] "number_of_vials"                             "sample_collection_date"                      "exp_person"                                 
## [10] "clinical_presentation"                       "parasite"                                    "prior_host_hpgl_code"                       
## [13] "prior_parasite_hpgl_code"                    "initial_recurrent"                           "drug_susceptibility_perc_reduction_gluc"    
## [16] "drug_susceptibility_perc_reduction_mlf"      "zymodeme_by_electrophoresis"                 "zymodeme_by_pca"                            
## [19] "rna_extraction_date"                         "rna_volume_ul"                               "rna_qc_date"                                
## [22] "rna_nanodrop_ng_ul"                          "X260_280_ratio"                              "X260_230_ratio"                             
## [25] "rna_bioanalyzer_or_qubit_ng_ul"              "rin"                                         "rna_qc_passed"                              
## [28] "library_type"                                "library_version"                             "library_name"                               
## [31] "library_const_date"                          "rna_used_to_construct_libraries_ul"          "rna_used_to_construct_libraries_ng"         
## [34] "library_qc_date"                             "lib_qc_passed"                               "library_volume_ul"                          
## [37] "unique_dual_index_set"                       "unique_dual_index_plate_coordinate"          "unique_dual_index_id"                       
## [40] "concentrations_determined_by_1"              "primer_conc_ng_ul_30100bp_region_1"          "adapter_dimer_conc_ng_ul_100200bp_region_1" 
## [43] "library_conc_ng_ul_2001000bp_region_1"       "library_molarity_nm_2001000bp_region_1"      "library_ave_frag_size_bp_2001000bp_region_1"
## [46] "calculated_adapter_dimer_percent_1"          "concentrations_determined_by_2"              "primer_conc_ng_ul_30100bp_region_2"         
## [49] "adapter_dimer_conc_ng_ul_100200bp_region_2"  "library_conc_ng_ul_2001000bp_region_2"       "library_molarity_nm_2001000bp_region_2"     
## [52] "library_ave_frag_size_bp_2001000bp_region_2" "calculated_adapter_dimer_percent_2"          "library_volume_ul_sent_to_umd"              
## [55] "shipment_date"                               "bbiagtc_date_received"                       "bbiagtc_library_cleanup"                    
## [58] "bbiagtc_date_sequenced"                      "bbiagtc_sequence_batch"                      "bbiagtc_pe_reads_pf"                        
## [61] "bbiagtc_fastp_duplication_rate"              "hisat2inputreads"                            "lpsingleconaligned"                         
## [64] "hg38singleconaligned"                        "lpmulticonaligned"                           "hg38multiconaligned"                        
## [67] "lpsingleallaligned"                          "hg38singleallaligned"                        "lpmultiallaligned"                          
## [70] "hg38multiallaligned"                         "lppercentmappedfromlog"                      "hg38percentmappedfromlog"                   
## [73] "lphisatobservedcds"                          "hg38hisatobservedcds"                        "krakenmatrix"                               
## [76] "lphisatgenematrix"                           "hg38hisatgenematrix"                         "lpsalmontranscriptmatrix"                   
## [79] "hg38salmontranscriptmatrix"                  "detectionparasiteby7sl"                      "detectionparasiteby18s"                     
## [82] "detectionparasitebykdnasec"                  "metabolomicnasalswaborplasma"                "immunophenotypingnasalswaborpbmcs"
summary(as.factor(input[["detectionparasiteby7sl"]]))
## negative positive      NAs 
##      153       29       71
pre_meta <- gather_preprocessing_metadata(
  starting_metadata = current_samplesheet, id_column = "hpgl_identifier",
  specification = first_spec, new_metadata = "persistence_hs_modified.xlsx",
  basedir = "preprocessing", species = c("hg38_115", "lpanamensis_mhomcol_v68"))
## Dropped 47 rows from the sample metadata because the sample ID is blank.
## There are 2 duplicate rows in the sample ID column.
## Did not find the condition column in the sample sheet.
## Filling it in as undefined.
## Did not find the batch column in the sample sheet.
## Filling it in as undefined.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(input_df[[column]], na.rm = TRUE): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]): argument is not numeric or logical: returning NA
## Warning in dispatch_regex_search(meta, search, replace, input_file_spec, : NAs introduced by coercion
## Warning in dispatch_regex_search(meta, search, replace, input_file_spec, : NAs introduced by coercion
## Writing new metadata to: persistence_hs_modified.xlsx
## Deleting the file persistence_hs_modified.xlsx before writing the tables.
summary(as.factor(pre_meta[["new_meta"]][["detectionparasiteby7sl"]]))
## negative positive      NAs 
##      115       21       70
## I think I will force everything to lowercase no spaces
modified_meta <- pre_meta[["new_meta"]]

## Added the following line to gather_preprocessing_metadata()
rownames(modified_meta) <- make.names(modified_meta[["hpgl_identifier"]], unique = TRUE)

## FIXME: 202511: I broke something in some of these functions and it is pulling
## the wrong information for number of observed genes.
head(modified_meta)
##          seq hpgl_identifier  aim participant_code sample_type tube_label_origin number_of_vials sample_collection_date exp_person
## PRHU0001   1        PRHU0001 aim1           PP1006       PBMCs      PP1006 PBMCs               1             2020-01-28         LG
## PRHU0002   2        PRHU0002 aim1           PP2001  nasal swab         PP2001 HN               1             2020-02-04         LG
## PRHU0009   4        PRHU0009 aim1           PP2003       PBMCs      PP2003 PBMCs               1                   <NA>         LG
## PRHU0010   5        PRHU0010 aim1           PP2004       PBMCs      PP2004 PBMCs               1             2020-04-04         LG
## PRHU0011   6        PRHU0011 aim1           PP2005       PBMCs      PP2005 PBMCs               1             2020-04-11         LG
## PRHU0018   7        PRHU0018 aim1           PP2003        WBCs       PP2003 WBCs               1             2020-03-21         LG
##          clinical_presentation parasite            prior_host_hpgl_code prior_parasite_hpgl_code initial_recurrent
## PRHU0001                    HD     <NA>                            <NA>                     <NA>              <NA>
## PRHU0002                    HD     <NA>                            <NA>                     <NA>              <NA>
## PRHU0009                  H-CL     <NA> TMRC30130; TMRC30124; TMRC30131                     <NA>              <NA>
## PRHU0010                  H-CL     <NA>                            <NA>                     <NA>              <NA>
## PRHU0011                  H-CL     <NA>                            <NA>                     <NA>              <NA>
## PRHU0018                  H-CL     <NA> TMRC30130; TMRC30124; TMRC30131                     <NA>              <NA>
##          drug_susceptibility_perc_reduction_gluc drug_susceptibility_perc_reduction_mlf zymodeme_by_electrophoresis zymodeme_by_pca
## PRHU0001                                    <NA>                                   <NA>                        <NA>            <NA>
## PRHU0002                                    <NA>                                   <NA>                        <NA>            <NA>
## PRHU0009                                    <NA>                                   <NA>                        <NA>            <NA>
## PRHU0010                                    <NA>                                   <NA>                        <NA>            <NA>
## PRHU0011                                    <NA>                                   <NA>                        <NA>            <NA>
## PRHU0018                                    <NA>                                   <NA>                        <NA>            <NA>
##          rna_extraction_date rna_volume_ul rna_qc_date rna_nanodrop_ng_ul X260_280_ratio X260_230_ratio rna_bioanalyzer_or_qubit_ng_ul rin
## PRHU0001          2020-01-30            25  2020-02-14             338.43           2.04           1.73                            407  NA
## PRHU0002          2020-02-13            25  2020-02-14              84.82           2.08           1.97                            101  NA
## PRHU0009          2020-05-05            25  2020-05-05              115.1           1.99           1.34                            167 8.0
## PRHU0010          2020-05-05            25  2020-05-05             185.28           2.03           1.91                            264 8.5
## PRHU0011          2020-05-05            25  2020-05-05              70.12           1.95           0.85                            113 8.7
## PRHU0018          2020-03-21            30  2020-05-01              49.55           2.06           1.56                             70 9.1
##          rna_qc_passed library_type library_version             library_name library_const_date rna_used_to_construct_libraries_ul
## PRHU0001           yes         mRNA               1      PP1006.PBMCs.mRNA.1         2020-02-08                               1.48
## PRHU0002           yes         mRNA               1 PP2001.nasal swab.mRNA.1         2020-02-14                               3.54
## PRHU0009           yes         mRNA               1      PP2003.PBMCs.mRNA.1         2020-06-04                               1.79
## PRHU0010           yes         mRNA               1      PP2004.PBMCs.mRNA.1         2020-06-04                               1.14
## PRHU0011           yes         mRNA               1      PP2005.PBMCs.mRNA.1         2020-06-04                               2.65
## PRHU0018           yes         mRNA               1       PP2003.WBCs.mRNA.1         2020-06-04                               4.29
##          rna_used_to_construct_libraries_ng library_qc_date lib_qc_passed library_volume_ul                 unique_dual_index_set
## PRHU0001                                500      2020-02-11           yes                15 IDT for Illumina RNA UD Indexes Set A
## PRHU0002                                300      2020-02-15           yes                15 IDT for Illumina RNA UD Indexes Set A
## PRHU0009                                300      2020-06-10           yes                15 IDT for Illumina RNA UD Indexes Set A
## PRHU0010                                300      2020-06-10           yes                15 IDT for Illumina RNA UD Indexes Set A
## PRHU0011                                300      2020-06-10           yes                15 IDT for Illumina RNA UD Indexes Set A
## PRHU0018                                300      2020-06-10           yes                15 IDT for Illumina RNA UD Indexes Set A
##          unique_dual_index_plate_coordinate unique_dual_index_id concentrations_determined_by_1 primer_conc_ng_ul_30100bp_region_1
## PRHU0001                                C04              UDP0027                    TapeStation                                  -
## PRHU0002                                F04              UDP0030                    TapeStation                                  -
## PRHU0009                                B05              UDP0034                    Bioanalyzer                               0.49
## PRHU0010                                C05              UDP0035                    Bioanalyzer                               0.58
## PRHU0011                                D05              UDP0036                    Bioanalyzer                                0.7
## PRHU0018                                E05              UDP0037                    Bioanalyzer                               0.58
##          adapter_dimer_conc_ng_ul_100200bp_region_1 library_conc_ng_ul_2001000bp_region_1 library_molarity_nm_2001000bp_region_1
## PRHU0001                                          -                                 69.50                                  321.0
## PRHU0002                                          -                                 17.50                                   82.3
## PRHU0009                                       0.27                                 60.64                                  293.3
## PRHU0010                                       0.35                                 64.84                                  314.0
## PRHU0011                                       0.27                                 56.86                                  279.9
## PRHU0018                                       0.12                                 85.33                                  421.9
##          library_ave_frag_size_bp_2001000bp_region_1 calculated_adapter_dimer_percent_1 concentrations_determined_by_2
## PRHU0001                                         353                                  0                           <NA>
## PRHU0002                                         345                                  0                           <NA>
## PRHU0009                                         336                0.00445250659630607                           <NA>
## PRHU0010                                         340                 0.0053979025293029                           <NA>
## PRHU0011                                         330                0.00474850510024622                           <NA>
## PRHU0018                                         328                0.00140630493378648                           <NA>
##          primer_conc_ng_ul_30100bp_region_2 adapter_dimer_conc_ng_ul_100200bp_region_2 library_conc_ng_ul_2001000bp_region_2
## PRHU0001                               <NA>                                       <NA>                                    NA
## PRHU0002                               <NA>                                       <NA>                                    NA
## PRHU0009                               <NA>                                       <NA>                                    NA
## PRHU0010                               <NA>                                       <NA>                                    NA
## PRHU0011                               <NA>                                       <NA>                                    NA
## PRHU0018                               <NA>                                       <NA>                                    NA
##          library_molarity_nm_2001000bp_region_2 library_ave_frag_size_bp_2001000bp_region_2 calculated_adapter_dimer_percent_2
## PRHU0001                                     NA                                          NA                                 NA
## PRHU0002                                     NA                                          NA                                 NA
## PRHU0009                                     NA                                          NA                                 NA
## PRHU0010                                     NA                                          NA                                 NA
## PRHU0011                                     NA                                          NA                                 NA
## PRHU0018                                     NA                                          NA                                 NA
##          library_volume_ul_sent_to_umd shipment_date bbiagtc_date_received bbiagtc_library_cleanup bbiagtc_date_sequenced
## PRHU0001                            14    2020-02-19            2020-04-04              not needed             2020-05-02
## PRHU0002                            14    2020-02-19            2020-04-04              not needed             2020-05-02
## PRHU0009                            14    2020-08-25            2020-11-04              not needed             2020-11-07
## PRHU0010                            14    2020-08-25            2020-11-04                     yes             2020-11-07
## PRHU0011                            14    2020-08-25            2020-11-04              not needed             2020-11-07
## PRHU0018                            14    2020-08-25            2020-11-04              not needed             2020-11-07
##          bbiagtc_sequence_batch bbiagtc_pe_reads_pf bbiagtc_fastp_duplication_rate hisat2inputreads lpsingleconaligned hg38singleconaligned
## PRHU0001                PERS001            13167287                           13.9               NA                 NA                   NA
## PRHU0002                PERS001             9815642                           18.4               NA                 NA                   NA
## PRHU0009                PERS002            23614271                           19.9               NA                 NA                   NA
## PRHU0010                PERS002            22777166                           16.9               NA                 NA                   NA
## PRHU0011                PERS002            23458700                           20.4               NA                 NA                   NA
## PRHU0018                PERS002            20907177                           16.6               NA                 NA                   NA
##          lpmulticonaligned hg38multiconaligned lpsingleallaligned hg38singleallaligned lpmultiallaligned hg38multiallaligned
## PRHU0001                NA                  NA                 NA                   NA                NA                  NA
## PRHU0002                NA                  NA                 NA                   NA                NA                  NA
## PRHU0009                NA                  NA                 NA                   NA                NA                  NA
## PRHU0010                NA                  NA                 NA                   NA                NA                  NA
## PRHU0011                NA                  NA                 NA                   NA                NA                  NA
## PRHU0018                NA                  NA                 NA                   NA                NA                  NA
##          lppercentmappedfromlog hg38percentmappedfromlog lphisatobservedcds hg38hisatobservedcds krakenmatrix lphisatgenematrix
## PRHU0001                     NA                       NA                 NA                   NA         <NA>              <NA>
## PRHU0002                     NA                       NA                 NA                   NA         <NA>              <NA>
## PRHU0009                     NA                       NA                 NA                   NA         <NA>              <NA>
## PRHU0010                     NA                       NA                 NA                   NA         <NA>              <NA>
## PRHU0011                     NA                       NA                 NA                   NA         <NA>              <NA>
## PRHU0018                     NA                       NA                 NA                   NA         <NA>              <NA>
##          hg38hisatgenematrix detectionparasiteby7sl detectionparasiteby18s detectionparasitebykdnasec metabolomicnasalswaborplasma
## PRHU0001                <NA>               negative                   <NA>                       <NA>                         <NA>
## PRHU0002                <NA>               negative                   <NA>                       <NA>                          yes
## PRHU0009                <NA>               negative                   <NA>                       <NA>                          yes
## PRHU0010                <NA>               negative                   <NA>                       <NA>                          yes
## PRHU0011                <NA>               positive                   <NA>                       <NA>                          yes
## PRHU0018                <NA>               positive               positive                       <NA>                          yes
##          immunophenotypingnasalswaborpbmcs condition     batch sampleid trimomatic_input trimomatic_output trimomatic_percent fastqc_pct_gc
## PRHU0001                              <NA> undefined undefined PRHU0001         13167287          12085247              0.918            49
## PRHU0002                              <NA> undefined undefined PRHU0002               NA                NA                 NA            50
## PRHU0009                              <NA> undefined undefined PRHU0009         23614271          22272928              0.943            51
## PRHU0010                              <NA> undefined undefined PRHU0010         22777166          21621102              0.949            51
## PRHU0011                              <NA> undefined undefined PRHU0011         23458700          22252717              0.949            51
## PRHU0018                              <NA> undefined undefined PRHU0018         20907177          19815284              0.948            52
##          fastp_stats_fastp_version             fastp_stats_sequencing fastp_stats_before_filtering.total_reads
## PRHU0001                    0.26.0 paired end (59 cycles + 59 cycles)                                 26334574
## PRHU0002                    0.26.0 paired end (59 cycles + 59 cycles)                                 19631284
## PRHU0009                    0.26.0 paired end (59 cycles + 59 cycles)                                 47228542
## PRHU0010                    0.26.0 paired end (59 cycles + 59 cycles)                                 45554332
## PRHU0011                    0.26.0 paired end (59 cycles + 59 cycles)                                 46917400
## PRHU0018                    0.26.0 paired end (59 cycles + 59 cycles)                                 41814354
##          fastp_stats_before_filtering.total_bases fastp_stats_before_filtering.q20_bases fastp_stats_before_filtering.q30_bases
## PRHU0001                               1537141332                             1483778476                             1421391509
## PRHU0002                               1146889898                             1107692660                             1060592786
## PRHU0009                               2751413261                             2705939886                             2609086781
## PRHU0010                               2660310891                             2625708398                             2532148717
## PRHU0011                               2737124181                             2698488467                             2603383176
## PRHU0018                               2441104816                             2408286992                             2320982582
##          fastp_stats_before_filtering.q20_rate fastp_stats_before_filtering.q30_rate fastp_stats_before_filtering.read1_mean_length
## PRHU0001                              0.965284                              0.924698                                             58
## PRHU0002                              0.965823                              0.924756                                             58
## PRHU0009                              0.983473                              0.948272                                             58
## PRHU0010                              0.986993                              0.951824                                             58
## PRHU0011                              0.985885                              0.951138                                             58
## PRHU0018                              0.986556                              0.950792                                             58
##          fastp_stats_before_filtering.read2_mean_length fastp_stats_before_filtering.gc_content fastp_stats_after_filtering.total_reads
## PRHU0001                                             58                                0.495877                                22544922
## PRHU0002                                             58                                0.497415                                15922490
## PRHU0009                                             58                                0.512464                                37529230
## PRHU0010                                             58                                0.515926                                37574754
## PRHU0011                                             58                                0.519911                                37095802
## PRHU0018                                             58                                 0.52082                                34639776
##          fastp_stats_after_filtering.total_bases fastp_stats_after_filtering.q20_bases fastp_stats_after_filtering.q30_bases
## PRHU0001                              1318104348                            1276124238                            1221709944
## PRHU0002                               930885102                             900358964                             861357979
## PRHU0009                              2193048423                            2169861196                            2090875519
## PRHU0010                              2196201730                            2173535393                            2095503252
## PRHU0011                              2167873036                            2145364147                            2067968633
## PRHU0018                              2024201869                            2002864759                            1929726103
##          fastp_stats_after_filtering.q20_rate fastp_stats_after_filtering.q30_rate fastp_stats_after_filtering.read1_mean_length
## PRHU0001                             0.968151                             0.926869                                            58
## PRHU0002                             0.967207                             0.925311                                            58
## PRHU0009                             0.989427                             0.953411                                            58
## PRHU0010                             0.989679                             0.954149                                            58
## PRHU0011                             0.989617                             0.953916                                            58
## PRHU0018                             0.989459                             0.953327                                            58
##          fastp_stats_after_filtering.read2_mean_length fastp_stats_after_filtering.gc_content fastp_stats_passed_filter_reads
## PRHU0001                                            58                               0.498084                        26059422
## PRHU0002                                            58                               0.502073                        19463292
## PRHU0009                                            58                               0.516925                        46465958
## PRHU0010                                            58                               0.518235                        45101000
## PRHU0011                                            58                               0.524196                        46357106
## PRHU0018                                            58                               0.523151                        41388904
##          fastp_stats_corrected_reads fastp_stats_corrected_bases fastp_stats_low_quality_reads fastp_stats_too_many_N_reads
## PRHU0001                       34317                       44064                        256456                          120
## PRHU0002                       24196                       31069                        153482                           76
## PRHU0009                       96116                      117982                        683466                          554
## PRHU0010                       85367                      105586                        392346                          318
## PRHU0011                       82299                      100241                        498760                          424
## PRHU0018                       84087                      103069                        375302                          474
##          fastp_stats_low_complexity_reads fastp_stats_too_short_reads fastp_stats_too_long_reads fastp_stats_rate
## PRHU0001                            18576                           0                          0         0.138303
## PRHU0002                            14434                           0                          0         0.183586
## PRHU0009                            78564                           0                          0         0.198086
## PRHU0010                            60668                           0                          0         0.168274
## PRHU0011                            61110                           0                          0         0.202799
## PRHU0018                            49674                           0                          0          0.16479
##          fastp_stats_adapter_trimmed_reads fastp_stats_adapter_trimmed_bases fastp_stats_read1_adapter_sequence
## PRHU0001                             81032                            321971                        unspecified
## PRHU0002                             55222                            384645                        unspecified
## PRHU0009                            239054                            698954                        unspecified
## PRHU0010                            152840                            578602                        unspecified
## PRHU0011                            174070                            623811                        unspecified
## PRHU0018                            177134                            669440                        unspecified
##          fastp_stats_read2_adapter_sequence fastp_stats_read1_adapter_counts.A fastp_stats_read1_adapter_counts.others
## PRHU0001                        unspecified                              31766                                    8615
## PRHU0002                        unspecified                              15707                                   11739
## PRHU0009                        unspecified                             101534                                   17707
## PRHU0010                        unspecified                              60488                                   15632
## PRHU0011                        unspecified                              70256                                   16520
## PRHU0018                        unspecified                              69867                                   18417
##          fastp_stats_read2_adapter_counts.A fastp_stats_read2_adapter_counts.others fastp_stats_read1_adapter_counts.G
## PRHU0001                              31833                                    8683                              undef
## PRHU0002                              15863                                   11748                              undef
## PRHU0009                             101948                                   17579                              undef
## PRHU0010                              60796                                   15624                              undef
## PRHU0011                              70348                                   16687                              undef
## PRHU0018                              70321                                   18246                              undef
##          fastp_stats_read1_adapter_counts.AN fastp_stats_read1_adapter_counts.ANN fastp_stats_read2_adapter_counts.AN
## PRHU0001                               undef                                undef                               undef
## PRHU0002                               undef                                undef                               undef
## PRHU0009                               undef                                undef                               undef
## PRHU0010                               undef                                undef                               undef
## PRHU0011                               undef                                undef                               undef
## PRHU0018                               undef                                undef                               undef
##          fastp_stats_read2_adapter_counts.ANN fastp_stats_read1_adapter_counts.C fastp_stats_read1_adapter_counts.T
## PRHU0001                                undef                              undef                              undef
## PRHU0002                                undef                              undef                              undef
## PRHU0009                                undef                              undef                              undef
## PRHU0010                                undef                              undef                              undef
## PRHU0011                                undef                              undef                              undef
## PRHU0018                                undef                              undef                              undef
##          fastp_stats_read1_adapter_counts.ANNN fastp_stats_read2_adapter_counts.C fastp_stats_read2_adapter_counts.ANNN
## PRHU0001                                 undef                              undef                                 undef
## PRHU0002                                 undef                              undef                                 undef
## PRHU0009                                 undef                              undef                                 undef
## PRHU0010                                 undef                              undef                                 undef
## PRHU0011                                 undef                              undef                                 undef
## PRHU0018                                 undef                              undef                                 undef
##          fastp_stats_read2_adapter_counts.G fastp_stats_read1_adapter_counts.N fastp_stats_read1_adapter_counts.NN
## PRHU0001                              undef                              undef                               undef
## PRHU0002                              undef                              undef                               undef
## PRHU0009                              undef                              undef                               undef
## PRHU0010                              undef                              undef                               undef
## PRHU0011                              undef                              undef                               undef
## PRHU0018                              undef                              undef                               undef
##          fastp_stats_read1_adapter_counts.NNN fastp_stats_read1_adapter_counts.NNNN fastp_stats_read2_adapter_counts.N
## PRHU0001                                undef                                 undef                              undef
## PRHU0002                                undef                                 undef                              undef
## PRHU0009                                undef                                 undef                              undef
## PRHU0010                                undef                                 undef                              undef
## PRHU0011                                undef                                 undef                              undef
## PRHU0018                                undef                                 undef                              undef
##          fastp_stats_read2_adapter_counts.GC fastp_stats_read2_adapter_counts.NN fastp_stats_read2_adapter_counts.NNN
## PRHU0001                               undef                               undef                                undef
## PRHU0002                               undef                               undef                                undef
## PRHU0009                               undef                               undef                                undef
## PRHU0010                               undef                               undef                                undef
## PRHU0011                               undef                               undef                                undef
## PRHU0018                               undef                               undef                                undef
##          fastp_stats_read2_adapter_counts.NNNN fastp_stats_read2_adapter_counts.ACTGTCT fastp_stats_read2_adapter_counts.ACTGTCTAT
## PRHU0001                                 undef                                    undef                                      undef
## PRHU0002                                 undef                                    undef                                      undef
## PRHU0009                                 undef                                    undef                                      undef
## PRHU0010                                 undef                                    undef                                      undef
## PRHU0011                                 undef                                    undef                                      undef
## PRHU0018                                 undef                                    undef                                      undef
##          kraken_bacterial_classified kraken_bacterial_unclassified kraken_first_bacterial_species kraken_first_bacterial_species_reads
## PRHU0001                      418110                      11667137          Staphylococcus aureus                               117628
## PRHU0002                      324998                       8681618         Bacillus thuringiensis                                48125
## PRHU0009                       86840                        866454        Porphyrobacter sp. GA68                                11937
## PRHU0010                       76438                       1056370          Klebsiella pneumoniae                                 7070
## PRHU0011                       70332                        803596          Klebsiella pneumoniae                                 6002
## PRHU0018                       46603                        619808            Priestia megaterium                                 7831
##          kraken_viral_classified kraken_viral_unclassified kraken_first_viral_species kraken_first_viral_species_reads
## PRHU0001                   58135                  12027112      Proteus virus Isfahan                            35851
## PRHU0002                   43789                   8962827      Proteus virus Isfahan                            28527
## PRHU0009                  197113                  22075815      Proteus virus Isfahan                           146195
## PRHU0010                  132560                  21488542      Proteus virus Isfahan                            90884
## PRHU0011                  204047                  22048670      Proteus virus Isfahan                           160954
## PRHU0018                  108172                  19707112      Proteus virus Isfahan                            74208
##                                                                   kraken_matrix_viral
## PRHU0001 preprocessing/PRHU0001/outputs/20250918kraken_viral/kraken_report_matrix.tsv
## PRHU0002       preprocessing/PRHU0002/outputs/11kraken_viral/kraken_report_matrix.tsv
## PRHU0009 preprocessing/PRHU0009/outputs/20250918kraken_viral/kraken_report_matrix.tsv
## PRHU0010 preprocessing/PRHU0010/outputs/20250918kraken_viral/kraken_report_matrix.tsv
## PRHU0011 preprocessing/PRHU0011/outputs/20250918kraken_viral/kraken_report_matrix.tsv
## PRHU0018 preprocessing/PRHU0018/outputs/20250918kraken_viral/kraken_report_matrix.tsv
##                                                            kraken_matrix_bacterial pattern_match_reads_searched pattern_match_sl_observed
## PRHU0001 preprocessing/PRHU0001/outputs/02kraken_bacteria/kraken_report_matrix.tsv                     12085247                        NA
## PRHU0002 preprocessing/PRHU0002/outputs/02kraken_bacteria/kraken_report_matrix.tsv                      9006616                        NA
## PRHU0009 preprocessing/PRHU0009/outputs/06kraken_bacteria/kraken_report_matrix.tsv                     22272928                        NA
## PRHU0010 preprocessing/PRHU0010/outputs/06kraken_bacteria/kraken_report_matrix.tsv                     21621102                        NA
## PRHU0011 preprocessing/PRHU0011/outputs/06kraken_bacteria/kraken_report_matrix.tsv                     22252717                        NA
## PRHU0018 preprocessing/PRHU0018/outputs/06kraken_bacteria/kraken_report_matrix.tsv                     19815284                        NA
##          pattern_match_sl_forward pattern_match_polyA_observed pattern_match_polyA_forward pattern_match_polyA_revcomp
## PRHU0001                       NA                           NA                          NA                          NA
## PRHU0002                       NA                           NA                          NA                          NA
## PRHU0009                       NA                           NA                          NA                          NA
## PRHU0010                       NA                           NA                          NA                          NA
## PRHU0011                       NA                           NA                          NA                          NA
## PRHU0018                       NA                           NA                          NA                          NA
##          pattern_match_proportion_SL hisat_rrna_input_reads_hg38_115 hisat_rrna_input_reads_lpanamensis_mhomcol_v68
## PRHU0001                          NA                        12085247                                             NA
## PRHU0002                          NA                         9006616                                             NA
## PRHU0009                          NA                        22272928                                             NA
## PRHU0010                          NA                        21621102                                             NA
## PRHU0011                          NA                        22252717                                             NA
## PRHU0018                          NA                        19815284                                             NA
##          hisat_rrna_single_concordant_hg38_115 hisat_rrna_single_concordant_lpanamensis_mhomcol_v68 hisat_rrna_multi_concordant_hg38_115
## PRHU0001                                 73426                                                   NA                                    0
## PRHU0002                                 80682                                                   NA                                    3
## PRHU0009                                408744                                                   NA                                   40
## PRHU0010                                149371                                                   NA                                    6
## PRHU0011                                200482                                                   NA                                    1
## PRHU0018                                117268                                                   NA                                    3
##          hisat_rrna_multi_concordant_lpanamensis_mhomcol_v68 hisat_rrna_percent_log_hg38_115 hisat_rrna_percent_log_lpanamensis_mhomcol_v68
## PRHU0001                                                  NA                            0.63                                             NA
## PRHU0002                                                  NA                            0.94                                             NA
## PRHU0009                                                  NA                            1.93                                             NA
## PRHU0010                                                  NA                            0.73                                             NA
## PRHU0011                                                  NA                            0.94                                             NA
## PRHU0018                                                  NA                            0.62                                             NA
##          hisat_genome_input_reads_hg38_115 hisat_genome_input_reads_lpanamensis_mhomcol_v68 hisat_genome_single_concordant_hg38_115
## PRHU0001                          12085247                                         12085247                                11027565
## PRHU0002                           9006616                                          9006616                                 8119315
## PRHU0009                          22272928                                         22272928                                19763135
## PRHU0010                          21621102                                         21621102                                19276929
## PRHU0011                          22252717                                         22252717                                19973324
## PRHU0018                          19815284                                         19815284                                18103721
##          hisat_genome_single_concordant_lpanamensis_mhomcol_v68 hisat_genome_multi_concordant_hg38_115
## PRHU0001                                                    838                                 621289
## PRHU0002                                                    760                                 505363
## PRHU0009                                                   1382                                1516414
## PRHU0010                                                    559                                1171082
## PRHU0011                                                    662                                1356659
## PRHU0018                                                    415                                1010925
##          hisat_genome_multi_concordant_lpanamensis_mhomcol_v68 hisat_genome_single_all_hg38_115
## PRHU0001                                                    99                           365382
## PRHU0002                                                   102                           282669
## PRHU0009                                                   102                           790119
## PRHU0010                                                    96                           920497
## PRHU0011                                                    82                           758139
## PRHU0018                                                    62                           536623
##          hisat_genome_single_all_lpanamensis_mhomcol_v68 hisat_genome_multi_all_hg38_115 hisat_genome_multi_all_lpanamensis_mhomcol_v68
## PRHU0001                                           14329                           84362                                           6702
## PRHU0002                                           13432                           71982                                           7507
## PRHU0009                                           22507                          235198                                          17740
## PRHU0010                                           10941                          242320                                          12474
## PRHU0011                                           12590                          206128                                          13330
## PRHU0018                                            8241                          133869                                           9468
##          hisat_unmapped_hg38_115 hisat_unmapped_lpanamensis_mhomcol_v68 hisat_genome_percent_log_hg38_115
## PRHU0001                   36996                               24147571                             99.85
## PRHU0002                  131347                               17990551                             99.27
## PRHU0009                  220613                               44502561                             99.50
## PRHU0010                  189403                               43217431                             99.56
## PRHU0011                  233569                               44477964                             99.48
## PRHU0018                  177472                               39611887                             99.55
##          hisat_genome_percent_log_lpanamensis_mhomcol_v68 hisat_observed_genes_hg38_115 hisat_observed_genes_lpanamensis_mhomcol_v68
## PRHU0001                                             0.09                         15025                                            7
## PRHU0002                                             0.13                         15857                                            8
## PRHU0009                                             0.10                         15625                                            4
## PRHU0010                                             0.06                         15627                                            3
## PRHU0011                                             0.06                         15722                                            2
## PRHU0018                                             0.05                         15210                                            3
##                                  hisat_observed_median_exprs_hg38_115 hisat_observed_median_exprs_lpanamensis_mhomcol_v68
## PRHU0001                                                         <NA>                                                <NA>
## PRHU0002                                                         <NA>                                                <NA>
## PRHU0009 gene:ENSG00000163297\t4\t79901146\t80125454\t-\t224309\t1060                                                <NA>
## PRHU0010                                                         <NA>                                                <NA>
## PRHU0011                                                         <NA>                                                <NA>
## PRHU0018                                                         <NA>                                                <NA>
##                                                           hisat_alignment_hg38_115
## PRHU0001 preprocessing/PRHU0001/outputs/20250918hisat_hg38_115/hg38_115_genome.bam
## PRHU0002 preprocessing/PRHU0002/outputs/20250918hisat_hg38_115/hg38_115_genome.bam
## PRHU0009 preprocessing/PRHU0009/outputs/20250918hisat_hg38_115/hg38_115_genome.bam
## PRHU0010 preprocessing/PRHU0010/outputs/20250918hisat_hg38_115/hg38_115_genome.bam
## PRHU0011 preprocessing/PRHU0011/outputs/20250918hisat_hg38_115/hg38_115_genome.bam
## PRHU0018 preprocessing/PRHU0018/outputs/20250918hisat_hg38_115/hg38_115_genome.bam
##                                                                          hisat_alignment_lpanamensis_mhomcol_v68 salmon_mapped_hg38_115
## PRHU0001 preprocessing/PRHU0001/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome.bam                     NA
## PRHU0002 preprocessing/PRHU0002/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome.bam                     NA
## PRHU0009 preprocessing/PRHU0009/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome.bam                     NA
## PRHU0010 preprocessing/PRHU0010/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome.bam                     NA
## PRHU0011 preprocessing/PRHU0011/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome.bam                     NA
## PRHU0018 preprocessing/PRHU0018/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome.bam                     NA
##          salmon_mapped_lpanamensis_mhomcol_v68 salmon_percent_hg38_115 salmon_percent_lpanamensis_mhomcol_v68 salmon_observed_genes_hg38_115
## PRHU0001                                   228                 54.6219                             0.00188660                          40892
## PRHU0002                                    NA                 61.0939                             0.02397130                          37639
## PRHU0009                                   514                 53.7645                             0.00230773                          47176
## PRHU0010                                   532                 55.2906                             0.00246056                          47162
## PRHU0011                                   564                 56.4814                             0.00253452                          46983
## PRHU0018                                   411                 57.3811                             0.00207416                          43731
##          salmon_observed_genes_lpanamensis_mhomcol_v68                                 input_r1                                 input_r2
## PRHU0001                                            12 unprocessed/PRHU0001_S49_R1_001.fastq.gz unprocessed/PRHU0001_S49_R2_001.fastq.gz
## PRHU0002                                            12                                                                                  
## PRHU0009                                            14  unprocessed/PRHU0009_S7_R1_001.fastq.gz  unprocessed/PRHU0009_S7_R2_001.fastq.gz
## PRHU0010                                            13  unprocessed/PRHU0010_S8_R1_001.fastq.gz  unprocessed/PRHU0010_S8_R2_001.fastq.gz
## PRHU0011                                            15  unprocessed/PRHU0011_S9_R1_001.fastq.gz  unprocessed/PRHU0011_S9_R2_001.fastq.gz
## PRHU0018                                            14 unprocessed/PRHU0018_S16_R1_001.fastq.gz unprocessed/PRHU0018_S16_R2_001.fastq.gz
##                                                                                      hisat_count_table_hg38_115
## PRHU0001 preprocessing/PRHU0001/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz
## PRHU0002 preprocessing/PRHU0002/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz
## PRHU0009 preprocessing/PRHU0009/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz
## PRHU0010 preprocessing/PRHU0010/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz
## PRHU0011 preprocessing/PRHU0011/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz
## PRHU0018 preprocessing/PRHU0018/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz
##                                                                                                                    hisat_count_table_lpanamensis_mhomcol_v68
## PRHU0001 preprocessing/PRHU0001/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome-paired_s2_protein_coding_gene_ID_fcounts.csv.xz
## PRHU0002 preprocessing/PRHU0002/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome-paired_s2_protein_coding_gene_ID_fcounts.csv.xz
## PRHU0009 preprocessing/PRHU0009/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome-paired_s2_protein_coding_gene_ID_fcounts.csv.xz
## PRHU0010 preprocessing/PRHU0010/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome-paired_s2_protein_coding_gene_ID_fcounts.csv.xz
## PRHU0011 preprocessing/PRHU0011/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome-paired_s2_protein_coding_gene_ID_fcounts.csv.xz
## PRHU0018 preprocessing/PRHU0018/outputs/20250918hisat_lpanamensis_mhomcol_v68/lpanamensis_mhomcol_v68_genome-paired_s2_protein_coding_gene_ID_fcounts.csv.xz
##                                            salmon_count_table_hg38_115
## PRHU0001 preprocessing/PRHU0001/outputs/80salmon_hg38_115_CDS/quant.sf
## PRHU0002 preprocessing/PRHU0002/outputs/80salmon_hg38_115_CDS/quant.sf
## PRHU0009 preprocessing/PRHU0009/outputs/80salmon_hg38_115_CDS/quant.sf
## PRHU0010 preprocessing/PRHU0010/outputs/80salmon_hg38_115_CDS/quant.sf
## PRHU0011 preprocessing/PRHU0011/outputs/80salmon_hg38_115_CDS/quant.sf
## PRHU0018 preprocessing/PRHU0018/outputs/80salmon_hg38_115_CDS/quant.sf
##                                                  salmon_count_table_lpanamensis_mhomcol_v68
## PRHU0001 preprocessing/PRHU0001/outputs/20250918salmon_lpanamensis_mhomcol_v68_CDS/quant.sf
## PRHU0002 preprocessing/PRHU0002/outputs/20250918salmon_lpanamensis_mhomcol_v68_CDS/quant.sf
## PRHU0009 preprocessing/PRHU0009/outputs/20250918salmon_lpanamensis_mhomcol_v68_CDS/quant.sf
## PRHU0010 preprocessing/PRHU0010/outputs/20250918salmon_lpanamensis_mhomcol_v68_CDS/quant.sf
## PRHU0011 preprocessing/PRHU0011/outputs/20250918salmon_lpanamensis_mhomcol_v68_CDS/quant.sf
## PRHU0018 preprocessing/PRHU0018/outputs/20250918salmon_lpanamensis_mhomcol_v68_CDS/quant.sf
head(modified_meta[["salmon_observed_genes_hg38_115"]])
## [1] 40892 37639 47176 47162 46983 43731
modified_meta[["detectionparasiteby7sl"]] <- sanitize_metadata(
  modified_meta[["detectionparasiteby7sl"]], lower = TRUE, spaces = TRUE, punct = FALSE)
summary(modified_meta[["detectionparasiteby7sl"]])
##      negative notapplicable      positive 
##           115            70            21

I would like to have a combination of clinical presentation and sampletype as well:

modified_meta[["sample_type"]] <- sanitize_metadata(
  modified_meta[["sample_type"]], lower = TRUE, spaces = TRUE, punct = FALSE)
summary(modified_meta[["sample_type"]])
##           lesionswab          macrophages            nasalswab                  par             parasite                pbmcs 
##                    5                   13                   30                   16                   31                   30 
## skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   29                   22                   30
modified_meta[["clinical_presentation"]] <- sanitize_metadata(
  modified_meta[["clinical_presentation"]], lower = TRUE, spaces = TRUE, punct = FALSE)
summary(modified_meta[["clinical_presentation"]])
##            cl          h-cl            hd notapplicable 
##             5           149            24            28
modified_meta[["type_presentation"]] <- as.factor(paste0(as.character(modified_meta[["sample_type"]]), "_",
                                                         as.character(modified_meta[["clinical_presentation"]])))
summary(modified_meta[["type_presentation"]])
##             lesionswab_cl macrophages_notapplicable            nasalswab_h-cl              nasalswab_hd                  par_h-cl 
##                         5                        13                        21                         9                        16 
##             parasite_h-cl    parasite_notapplicable                pbmcs_h-cl                  pbmcs_hd skinbiopsynon-lesion_h-cl 
##                        16                        15                        25                         5                        23 
##   skinbiopsynon-lesion_hd       skinbiopsyscar_h-cl                 wbcs_h-cl                   wbcs_hd 
##                         6                        22                        26                         4

Create a factor of the 7SL detection of nasal samples. Note, we need to recast the NAs as undefined. I would have sworn that my gather function would do that?

modified_meta[["nasal_7sl_status"]] <- as.character(modified_meta[["detectionparasiteby7sl"]])

nasal_samples <- modified_meta[["sample_type"]] == "nasalswab"
summary(nasal_samples)
##    Mode   FALSE    TRUE 
## logical     176      30
sl_positive <- modified_meta[["nasal_7sl_status"]] == "positive"
summary(sl_positive)
##    Mode   FALSE    TRUE 
## logical     185      21
nasal_positive <- nasal_samples & sl_positive
summary(nasal_positive)
##    Mode   FALSE    TRUE 
## logical     196      10
nasal_positive_samples <- rownames(modified_meta)[nasal_positive]
nasal_positive_people <- modified_meta[nasal_positive_samples, "participant_code"]
nasal_positive_people
##  [1] "PP1009" "PP2020" "PP1009" "PP2005" "PP2006" "PP2019" "PP2020" "PP2005" "PP2019" "PP2005"
nasal_positive_people_samples <- modified_meta[["participant_code"]] %in% nasal_positive_people
modified_meta[["nasal_7sl_status"]] <- "negative"
modified_meta[nasal_positive_people_samples, "nasal_7sl_status"] <- "positive"
modified_meta[["nasal_7sl_status"]] <- as.factor(modified_meta[["nasal_7sl_status"]])
summary(modified_meta[["nasal_7sl_status"]])
## negative positive 
##      173       33

Similarly create a factor of people with any 7SL positive sample.

modified_meta[["any_7sl_status"]] <- "negative"
positive_samples <- as.character(modified_meta[["detectionparasiteby7sl"]]) == "positive"
positive_people <- modified_meta[positive_samples, "participant_code"]
positive_people_idx <- !duplicated(positive_people)
positive_people_sorted <- sort(positive_people[positive_people_idx])
persister_people_samples <- modified_meta[["participant_code"]] %in% positive_people_sorted
modified_meta[persister_people_samples, "any_7sl_status"] <- "positive"
modified_meta[["any_7sl_status"]] <- as.factor(modified_meta[["any_7sl_status"]])
summary(modified_meta[["any_7sl_status"]])
## negative positive 
##      147       59
positive_people_sorted
##  [1] "PP1009" "PP1018" "PP1023" "PP2003" "PP2005" "PP2006" "PP2019" "PP2020" "PP2021" "PP2022" "PP2026"

4.1 Add combination of detection and library type

Also add a category separating all skin samples from everything else.

modified_meta[["detection_type"]] <- as.factor(
  paste0(as.character(modified_meta[["detectionparasiteby7sl"]]), "_",
         as.character(modified_meta[["library_type"]])))
summary(modified_meta[["detection_type"]])
##      negative_mRNA        negative_RZ       negative_SL1       negative_SL2 notapplicable_mRNA   notapplicable_RZ  notapplicable_SL1 
##                106                  7                  1                  1                 46                  1                 15 
##  notapplicable_SL2      positive_mRNA        positive_RZ       positive_SL2 
##                  8                 13                  5                  3
modified_meta[["skinp"]] <- "not_skin"
skin_idx <- grepl(x = modified_meta[["sample_type"]], pattern = "^skin")
summary(skin_idx)
##    Mode   FALSE    TRUE 
## logical     155      51
modified_meta[skin_idx, "skinp"] <- "skin"
modified_meta[["skinp"]] <- as.factor(modified_meta[["skinp"]])
summary(modified_meta[["skinp"]])
## not_skin     skin 
##      155       51

5 The purpose of the post 202608 samples

In the last round of sequencing of human samples, we received a series of purely healthy samples; these are from individuals with no history of Leishmaniasis and are intended to provide a comparison point against everything else we are looking at in this dataset.

human_meta_idx <- modified_meta[["aim"]] == "aim1"
human_meta <- modified_meta[human_meta_idx, ]
table(human_meta[["clinical_presentation"]])
## 
##            cl          h-cl            hd notapplicable 
##             0           113            20             0
table(human_meta[["type_presentation"]])
## 
##             lesionswab_cl macrophages_notapplicable            nasalswab_h-cl              nasalswab_hd                  par_h-cl 
##                         0                         0                        19                         7                         0 
##             parasite_h-cl    parasite_notapplicable                pbmcs_h-cl                  pbmcs_hd skinbiopsynon-lesion_h-cl 
##                         0                         0                        25                         5                        23 
##   skinbiopsynon-lesion_hd       skinbiopsyscar_h-cl                 wbcs_h-cl                   wbcs_hd 
##                         4                        21                        25                         4

Thus, in theory we can perform a series of comparisons among the ‘Clinical Presentation’ factor in the sample design. By itself, this would give us a 20 vs. 113 sample comparison of healthy people vs. people who came to the clinic.

6 Collect gene annotations

I should have all my load_xyz_annotation functions return some of the same elements in their retlists.

lp_genes <- lp_annot[["genes"]]
hg_genes <- hs_annot[["gene_annotations"]]

7 Quick peek at the SL samples, hg38 release 115

7.1 Gather the transcript and gene annotations.

hg_tx <- hs_annot[["annotation"]]
hg_map <- hs_annot[["gene_tx_map"]]
lp_genes <- lp_annot[["genes"]]

7.2 Figure out which samples do not have 7SL categories

undef_7sl <- is.na(human_meta[["detectionparasiteby7sl"]])
summary(undef_7sl)
##    Mode   FALSE 
## logical     133
sample_7sl <- paste0(human_meta[["sample_type"]], "_",
                     human_meta[["detectionparasiteby7sl"]])
sample_7sl <- as.factor(gsub(x = sample_7sl, pattern = "[[:space:]]", replacement = "_"))
summary(sample_7sl)
##            nasalswab_negative       nasalswab_notapplicable            nasalswab_positive                pbmcs_negative 
##                            16                             2                             8                            26 
##                pbmcs_positive skinbiopsynon-lesion_negative skinbiopsynon-lesion_positive       skinbiopsyscar_negative 
##                             4                            26                             1                            21 
##                 wbcs_negative                 wbcs_positive 
##                            24                             5
human_meta[["sample_7sl"]] <- sample_7sl

7.3 Healthy vs scar samples

healthy_vs_scar <- gsub(x = human_meta[["sample_type"]],
                        pattern = "^skinbiopsy ", replacement = "")
human_meta[["hs"]] <- NA
skin_samples <- grepl(x = human_meta[["sample_type"]], pattern = "^skin")
human_meta[skin_samples, "hs"] <- "healthy"
scar_samples <- grepl(x = human_meta[["sample_type"]], pattern = "scar")
human_meta[scar_samples, "hs"] <- "scar"
human_meta[["hs"]] <- as.factor(human_meta[["hs"]])
summary(human_meta[["hs"]])
## healthy    scar     NAs 
##      27      21      85

7.4 Clean up missing 7SL detection samples

I think the last of these has been fixed since the last time I updated this sheet.

undef_7sl <- is.na(colData(hs_hisat)[["detectionparasiteby7sl"]])
## Error in `h()`:
## ! error in evaluating the argument 'x' in selecting a method for function 'colData': object 'hs_hisat' not found
summary(undef_7sl)
##    Mode   FALSE 
## logical     133
if (sum(undef_7sl)) {
  colData(hs_salmon)[undef_7sl, "detectionparasiteby7sl"] <- "unknown"
  colData(hs_hisat)[undef_7sl, "detectionparasiteby7sl"] <- "unknown"
} else {
  message("There appear to be no missing 7SL entries.")
}
## There appear to be no missing 7SL entries.

7.6 Combine 7SL status and the sample type into one factor

sample_7sl <- as.factor(paste0(human_meta[["sample_type"]], "_",
                               human_meta[["detectionparasiteby7sl"]]))
summary(sample_7sl)
##            nasalswab_negative       nasalswab_notapplicable            nasalswab_positive                pbmcs_negative 
##                            16                             2                             8                            26 
##                pbmcs_positive skinbiopsynon-lesion_negative skinbiopsynon-lesion_positive       skinbiopsyscar_negative 
##                             4                            26                             1                            21 
##                 wbcs_negative                 wbcs_positive 
##                            24                             5

7.7 Create initial hisat/salmon tables

hs_salmon <- create_se(human_meta, gene_info = hg_tx,
                       tx_gene_map = hg_map, file_column = "salmon_count_table_hg38_115") %>%
  set_conditions(fact = "sample_type") %>%
  set_batches(fact = "library_type")
## Reading the sample metadata.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## The sample definitions comprises: 133 rows(samples) and 184 columns(metadata fields).
## In some cases, (notably salmon) the format of the IDs used by this can be tricky.
## It is likely to require the transcript ID followed by a '.' and the ensembl column:
## 'transcript_version', which is explicitly different than the gene version column.
## If this is not correctly performed, very few genes will be observed
## Rewriting the transcript<->gene map to remove tx versions.
## reading in files with read_tsv
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 
## transcripts missing from tx2gene: 151231
## summarizing abundance
## summarizing counts
## summarizing length
## Warning in create_se(human_meta, gene_info = hg_tx, tx_gene_map = hg_map, : Some samples were removed when cross referencing the samples
## against the count data.
## Matched 10885 annotations and counts.
## Saving the summarized experiment to 'se.rda'.
## The final summarized experiment has 10885 rows and 184 columns.
## The numbers of samples by condition are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   20                   25                   19                   16                   23
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## mRNA   RZ 
##   91   12
hs_hisat <- create_se(human_meta, gene_info = hg_genes,
                      file_column = "hisat_count_table_hg38_115") %>%
  set_conditions(fact = "sample_type") %>%
  set_batches(fact = "library_type")
## Reading the sample metadata.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## The sample definitions comprises: 133 rows(samples) and 184 columns(metadata fields).
## Warning in create_se(human_meta, gene_info = hg_genes, file_column = "hisat_count_table_hg38_115"): Some samples were removed when cross
## referencing the samples against the count data.
## Matched 21571 annotations and counts.
## Some annotations were lost in merging, setting them to 'undefined'.
## Saving the summarized experiment to 'se.rda'.
## The final summarized experiment has 21571 rows and 184 columns.
## The numbers of samples by condition are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   25                   30                   27                   21                   29
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## mRNA   RZ 
##  120   12

7.7.1 Write out cpm values of all samples

hs_salmon_cpm <- write_normalized_se(
  hs_salmon, excel = glue("excel/cpm/hs_salmon_all_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 3015 low-count genes (7870 remaining).
## transform_counts: Found 494278 values equal to 0, adding 1 to the matrix.
hs_hisat_cpm <- write_normalized_se(
  hs_hisat, excel = glue("excel/cpm/hs_hisat_all_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 165117 values equal to 0, adding 1 to the matrix.

7.8 Separate the mRNA samples from ribo-zero

Note, when we are finished, we will be using only the mRNA samples and ignoring the ribo-zero. But there are some questions about the data provided by the two libraries.

hs_salmon_mrna <- set_conditions(hs_salmon, fact = "sample_type") %>%
  subset_se(subset = "library_type=='mRNA'") %>%
  set_batches("detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   20                   25                   19                   16                   23
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## negative positive 
##       81       10
hs_salmon_rz <- set_conditions(hs_salmon, fact = "sample_type") %>%
  subset_se(subset = "library_type=='RZ'") %>%
  set_batches("detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   20                   25                   19                   16                   23
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## negative positive 
##        7        5
hs_hisat_mrna <- set_conditions(hs_hisat, fact = "sample_type") %>%
  subset_se(subset = "library_type=='mRNA'") %>%
  set_batches("detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   25                   30                   27                   21                   29
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
##      negative notapplicable      positive 
##           106             1            13
hs_hisat_rz <- set_conditions(hs_hisat, fact = "sample_type") %>%
  subset_se(subset = "library_type=='RZ'") %>%
  set_batches("detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   25                   30                   27                   21                   29
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## negative positive 
##        7        5

7.8.1 Write those out as well

hs_salmon_mrna_cpm <- write_normalized_se(
  hs_salmon_mrna, excel = glue("excel/cpm/hs_salmon_mrna_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 3570 low-count genes (7315 remaining).
## transform_counts: Found 390200 values equal to 0, adding 1 to the matrix.
hs_salmon_rz_cpm <- write_normalized_se(
  hs_salmon_rz, excel = glue("excel/cpm/hs_salmon_rz_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 5861 low-count genes (5024 remaining).
## transform_counts: Found 25004 values equal to 0, adding 1 to the matrix.
hs_hisat_mrna_cpm <- write_normalized_se(
  hs_hisat_mrna, excel = glue("excel/cpm/hs_hisat_mrna_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 5874 low-count genes (15697 remaining).
## transform_counts: Found 140373 values equal to 0, adding 1 to the matrix.
hs_hisat_rz_cpm <- write_normalized_se(
  hs_hisat_rz, excel = glue("excel/cpm/hs_hisat_rz_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 7058 low-count genes (14513 remaining).
## transform_counts: Found 3326 values equal to 0, adding 1 to the matrix.

7.9 Extract only the healthy/scar samples, only mRNA

hs_salmon_mrna_health <- subset_se(hs_salmon, subset = "hs=='healthy'|hs=='scar'") %>%
  set_conditions(fact = "hs")
## The numbers of samples by condition are:
## 
## healthy    scar 
##      19      16
## Setting colors with no pre-defined colors, using the Dark2 palette.
hs_hisat_mrna_health <- subset_se(hs_hisat_mrna, subset = "hs=='healthy'|hs=='scar'") %>%
  set_conditions(fact = "hs")
## The numbers of samples by condition are:
## 
## healthy    scar 
##      25      20
## Setting colors with no pre-defined colors, using the Dark2 palette.

7.9.1 Write these out

hs_salmon_mrna_health_cpm <- write_normalized_se(
  hs_salmon_mrna_health, excel = glue("excel/cpm/hs_salmon_mrna_health_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 5185 low-count genes (5700 remaining).
## transform_counts: Found 100828 values equal to 0, adding 1 to the matrix.
hs_hisat_mrna_health_cpm <- write_normalized_se(
  hs_hisat_mrna_health, excel = glue("excel/cpm/hs_hisat_mrna_health_samples-v{ver}.xlsx"))
## Writing the first sheet, containing a legend and some summary data.
## Removing 7367 low-count genes (14204 remaining).
## transform_counts: Found 5921 values equal to 0, adding 1 to the matrix.

8 HU Metadata

8.1 Percent of reads mapped to the genome by hisat

hs_mapped_mrna <- plot_metadata_factor(hs_hisat_mrna, column = "hisat_genome_percent_log_hg38_115")
pp(file = "images/hs_mapped_mrna_violin.png", image = hs_mapped_mrna)

hs_mapped_rz <- plot_metadata_factor(hs_hisat_rz, column = "hisat_genome_percent_log_hg38_115")
pp(file = "images/hs_mapped_rz_violin.png", image = hs_mapped_rz)
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
## Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.

8.2 Number of gene observed by salmon

hs_observed_mrna <- plot_metadata_factor(hs_hisat_mrna, column = "salmon_observed_genes_hg38_115")
hs_observed_mrna

hs_observed_rz <- plot_metadata_factor(hs_hisat_rz, column = "salmon_observed_genes_hg38_115")
hs_observed_rz
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.

8.3 Percent reads quantified to the human transcriptome by salmon

hs_pct_mrna <- plot_metadata_factor(hs_salmon_mrna, column = "salmon_percent_hg38_115")
hs_pct_mrna

hs_pct_rz <- plot_metadata_factor(hs_salmon_rz, column = "salmon_percent_hg38_115")
hs_pct_rz
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.

8.4 Number of kraken identified bacterial reads

While at this, add a column dividing the kraken bacterial classified reads from the total reads.

hs_kraken_mrna <- plot_metadata_factor(hs_salmon_mrna, column = "kraken_bacterial_classified")
pp(file = "images/hs_kraken_bacterial_reads_mrna_libraries.png", image = hs_kraken_mrna)

hs_kraken_rz <- plot_metadata_factor(hs_salmon_rz, column = "kraken_bacterial_classified")
pp(file = "images/hs_kraken_bacterial_reads_rz_libraries.png", image = hs_kraken_rz)
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
## Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.

colData(hs_salmon_mrna)[["pct_kraken_bacterial"]] <- colData(hs_salmon_mrna)[["kraken_bacterial_classified"]] /
  colData(hs_salmon_mrna)[["trimomatic_output"]]
colData(hs_salmon_rz)[["pct_kraken_bacterial"]] <- colData(hs_salmon_rz)[["kraken_bacterial_classified"]] /
  colData(hs_salmon_rz)[["trimomatic_output"]]
hs_kraken_pct_mrna <- plot_metadata_factor(hs_salmon_mrna, column = "pct_kraken_bacterial")
pp(file = "images/hs_kraken_bacterial_pct_reads_mrna_libraries.png", image = hs_kraken_pct_mrna)
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_ydensity()`).
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_boxplot()`).
## Warning: Removed 1 row containing missing values or values outside the scale range (`geom_point()`).
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_ydensity()`).
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_boxplot()`).
## Warning: Removed 1 row containing missing values or values outside the scale range (`geom_point()`).

hs_kraken_pct_rz <- plot_metadata_factor(hs_salmon_rz, column = "pct_kraken_bacterial")
pp(file = "images/hs_kraken_bacterial_pct_reads_rz_libraries.png", image = hs_kraken_pct_rz)
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_ydensity()`).
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_boxplot()`).
## Warning: Removed 1 row containing missing values or values outside the scale range (`geom_point()`).
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_ydensity()`).
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
## Warning: Removed 1 row containing non-finite outside the scale range (`stat_boxplot()`).
## Warning: Removed 1 row containing missing values or values outside the scale range (`geom_point()`).

8.5 Sankey of a few factors

hs_sankey <- plot_meta_sankey(
  hs_salmon, factors = c("detectionparasiteby7sl", "sample_type", "library_type"))
## Warning: attributes are not identical across measure variables; they will be dropped
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the ggsankey package.
##   Please report the issue at <https://github.com/davidsjoberg/ggsankey/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
pp(file = "images/hs_detect_sampletype_libtype_sankey.png", image = hs_sankey[["plot"]])

hs_sankey <- plot_meta_sankey(
  hs_salmon, factors = c("sample_type", "detectionparasiteby7sl", "library_type"))
## Warning: attributes are not identical across measure variables; they will be dropped
pp(file = "images/hs_sampletype_detection_libtype_sankey.png", image = hs_sankey[["plot"]])

9 Write out the metadata in its current state

write_xlsx(data = modified_meta, excel = "sample_sheets/human_samples_202511_with_nasal_factor.xlsx")
## Deleting the file sample_sheets/human_samples_202511_with_nasal_factor.xlsx before writing the tables.
## write_xlsx() wrote sample_sheets/human_samples_202511_with_nasal_factor.xlsx.
## The cursor is on sheet first, row: 209 column: 212.

10 nonzero/libsize/etc

plot_legend(hs_salmon)
## The colors used in the expressionset are: #1B9E77, #66A61E, #7570B3, #D95F02, #E7298A.

pp(file = "images/hs_salmon_quantreads.png", image = plot_libsize(hs_salmon, yscale = FALSE),
   width = 24, height = 9)

pp(file = "images/hs_salmon_nonzero.png", image = plot_nonzero(hs_salmon, y_intercept = 0.40))
## The following samples have less than 7075.25 features.
##   [1] "PRHU0001" "PRHU0002" "PRHU0009" "PRHU0010" "PRHU0011" "PRHU0018" "PRHU0019" "PRHU0020" "PRHU0012" "PRHU0013" "PRHU0014" "PRHU0021"
##  [13] "PRHU0022" "PRHU0023" "PRHU0015" "PRHU0016" "PRHU0017" "PRHU0024" "PRHU0025" "PRHU0026" "PRHU0038" "PRHU0006" "PRHU0007" "PRHU0008"
##  [25] "PRHU0005" "PRHU0004" "PRHU0003" "PRHU0027" "PRHU0028" "PRHU0029" "PRHU0030" "PRHU0031" "PRHU0032" "PRHU0035" "PRHU0033" "PRHU0034"
##  [37] "PRHU0036" "PRHU0037" "PRHU0039" "PRHU0040" "PRHU0041" "PRHU0042" "PRHU0043" "PRHU0044" "PRHU0045" "PRHU0046" "PRHU0047" "PRHU0048"
##  [49] "PRHU0049" "PRHU0050" "PRHU0051" "PRHU0052" "PRHU0053" "PRHU0054" "PRHU0055" "PRHU0056" "PRHU0057" "PRHU0058" "PRHU0059" "PRHU0060"
##  [61] "PRHU0061" "PRHU0062" "PRHU0063" "PRHU0064" "PRHU0065" "PRHU0066" "PRHU0067" "PRHU0068" "PRHU0069" "PRHU0070" "PRHU0071" "PRHU0072"
##  [73] "PRHU0073" "PRHU0074" "PRHU0075" "PRHU0076" "PRHU0077" "PRHU0078" "PRHU0079" "PRHU0080" "PRHU0081" "PRHU0082" "PRHU0083" "PRHU0084"
##  [85] "PRHU0085" "PRHU0086" "PRHU0087" "PRHU0088" "PRHU0089" "PRHU0090" "PRHU0091" "PRHU0092" "PRHU0093" "PRHU0094" "PRHU0095" "PRHU0096"
##  [97] "PRHU0097" "PRHU0098" "PRHU0099" "PRHU0100" "PRHU0101" "PRHU0102" "PRHU0103"
## Scale for colour is already present.
## Adding another scale for colour, which will replace the existing scale.
## Scale for fill is already present.
## Adding another scale for fill, which will replace the existing scale.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the hpgltools package.
##   Please report the issue to the authors.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.

pp(file = "images/hs_hisat_quantreads.png", image = plot_libsize(hs_hisat, yscale = FALSE),
   width = 24, height = 9)

pp(file = "images/hs_hisat_nonzero.png", image = plot_nonzero(hs_hisat))
## Scale for colour is already present.
## Adding another scale for colour, which will replace the existing scale.
## Scale for fill is already present.
## Adding another scale for fill, which will replace the existing scale.

pp(file = "images/hs_hisat_mrna_libsize.png", image = plot_libsize(hs_hisat_mrna))

pp(file = "images/hs_hisat_rz_libsize.png", image = plot_libsize(hs_hisat_rz))

11 Extract the nasal samples and see how many mRNA and ribozero are of the same person

hs_hisat_nasal <- subset_se(hs_hisat, subset = "sample_type=='nasalswab'") %>%
  set_conditions(fact = "detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##      negative notapplicable      positive 
##            16             1             8
## Setting colors with no pre-defined colors, using the Dark2 palette.
person_libtype <- colData(hs_hisat_nasal)[, c("participant_code", "library_type")]
table(person_libtype)
##                 library_type
## participant_code mRNA RZ
##           PP1009    1  1
##           PP1011    1  1
##           PP1023    1  0
##           PP1024    1  0
##           PP1025    1  0
##           PP1026    1  0
##           PP1041    1  0
##           PP1042    1  0
##           PP1043    1  0
##           PP1044    1  0
##           PP2001    1  1
##           PP2005    1  1
##           PP2006    0  1
##           PP2007    0  1
##           PP2008    0  1
##           PP2019    0  1
##           PP2020    1  1
##           PP2021    1  0
##           PP2022    1  0
##           PP2030    1  0
## We have both library types for 4 people: 1009, 1011, 2001, and 2020.

person_libtype_model_nbb <- set_batches(hs_hisat_nasal, fact = "library_type") %>%
  normalize(transform = "log2", convert = "cpm", batch = "pca", filter = TRUE) %>%
  normalize(batch = "svaseq")
## The number of samples by batch are:
## 
## mRNA   RZ 
##   16    9
## Removing 7481 low-count genes (14090 remaining).
## transform_counts: Found 1062 values less than 0.
## transform_counts: Found 1062 values equal to 0, adding 1 to the matrix.
## Setting 218 entries to zero.
newnames <- colData(hs_hisat_nasal)[["participant_code"]]
pp(file = "images/pca_batch_then_sva.png",
   image = plot_pca(person_libtype_model_nbb, exp_names = newnames, plot_labels = TRUE),
   width = 12, height = 12)

person_presentation <- colData(hs_hisat_nasal)[, c("participant_code", "clinical_presentation")]
table(person_presentation)
##                 clinical_presentation
## participant_code cl h-cl hd notapplicable
##           PP1009  0    2  0             0
##           PP1011  0    2  0             0
##           PP1023  0    1  0             0
##           PP1024  0    1  0             0
##           PP1025  0    1  0             0
##           PP1026  0    1  0             0
##           PP1041  0    0  1             0
##           PP1042  0    0  1             0
##           PP1043  0    0  1             0
##           PP1044  0    0  1             0
##           PP2001  0    0  2             0
##           PP2005  0    2  0             0
##           PP2006  0    1  0             0
##           PP2007  0    1  0             0
##           PP2008  0    1  0             0
##           PP2019  0    1  0             0
##           PP2020  0    2  0             0
##           PP2021  0    1  0             0
##           PP2022  0    1  0             0
##           PP2030  0    1  0             0
## Note to self, person 2001 is our lone nasal healthy donor.

hs_hisat_nasal_nohealthy <- subset_se(hs_hisat_nasal, subset = "clinical_presentation!='HD'")
hs_hisat_nasal_nohealthy
## class: SummarizedExperiment 
## dim: 21571 25 
## metadata(7): notes title ... study researcher
## assays(1): ''
## rownames(21571): ENSG00000000003 ENSG00000000005 ... ENSG00000310590 ENSG00000310592
## rowData names(11): ensembl_transcript_id version ... end_position hgnc_symbol
## colnames(25): PRHU0002 PRHU0038 ... PRHU0131 PRHU0119
## colData names(185): seq hpgl_identifier ... hs color
newnames <- colData(hs_hisat_nasal_nohealthy)[["participant_code"]]
hs_hisat_nasal_nh_norm <- normalize(hs_hisat_nasal_nohealthy, transform = "log2", convert = "cpm",
                                    filter = TRUE, norm = "quant")
## Removing 7481 low-count genes (14090 remaining).
## transform_counts: Found 95 values equal to 0, adding 1 to the matrix.
pp(file = "images/hs_hisat_nasal_nh_norm_pca.png",
   image = plot_pca(hs_hisat_nasal_nh_norm, exp_names = newnames, plot_labels = TRUE))

hs_hisat_nasal_nh_nb <- normalize(hs_hisat_nasal_nohealthy, transform = "log2", convert = "cpm",
                                  filter = TRUE, batch = "svaseq")
## Removing 7481 low-count genes (14090 remaining).
## transform_counts: Found 915 values less than 0.
## transform_counts: Found 915 values equal to 0, adding 1 to the matrix.
pp(file = "images/hs_hisat_nasal_nh_nb_pca.png",
   image = plot_pca(hs_hisat_nasal_nh_nb, exp_names = newnames, plot_labels = TRUE))

hs_hisat_nasal_nh_norm <- set_batches(hs_hisat_nasal_nh_norm, fact = "participant_code")
## The number of samples by batch are:
## 
## PP1009 PP1011 PP1023 PP1024 PP1025 PP1026 PP1041 PP1042 PP1043 PP1044 PP2001 PP2005 PP2006 PP2007 PP2008 PP2019 PP2020 PP2021 PP2022 PP2030 
##      2      2      1      1      1      1      1      1      1      1      2      2      1      1      1      1      2      1      1      1
plot_pca(hs_hisat_nasal_nh_norm)
## Warning in ggplot2::guide_legend(overwrite.aes = list(size = plot_size)): Arguments in `...` must be used.
## ✖ Problematic argument:
## • overwrite.aes = list(size = plot_size)
## ℹ Did you misspell an argument name?
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, notapplicable, positive
## Shapes are defined by PP1009, PP1011, PP1023, PP1024, PP1025, PP1026, PP1041, PP1042, PP1043, PP1044, PP2001, PP2005, PP2006, PP2007, PP2008, PP2019, PP2020, PP2021, PP2022, PP2030.

hs_hisat_nasal_nh_de <- all_pairwise(hs_hisat_nasal_nohealthy, filter = TRUE, model_svs = "svaseq",
                                     model_fstring = "~ 0 + condition")
##      negative notapplicable      positive 
##            16             1             8
## Removing 7481 low-count genes (14090 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 23963 entries to zero.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## This contrast put the denominator first.
## This contrast put the denominator first.
## conditions
##      negative notapplicable      positive 
##            16             1             8
## calcNormFactors has been renamed to normLibSizes
## conditions
##      negative notapplicable      positive 
##            16             1             8
## conditions
##      negative notapplicable      positive 
##            16             1             8 
## Error in NOISeq::noiseqbio(norm_input, k = k, norm = norm, factor = condition_column,  : 
##   ERROR: To run NOISeqBIO at least two replicates per condition are needed.
##          Please, run NOISeq if there are not enough replicates in your experiment.
## Warning in correlate_de_tables(results, annot_df = annot_df, extra_contrasts = extra_contrasts): The noiseq results are not of class
## hpgltools::noiseq_pairwise.
hs_hisat_nasal_nh_table <- combine_de_tables(
  hs_hisat_nasal_nh_de, excel = "excel/hs_hisat_nasal_nh_table.xlsx")
## Deleting the file excel/hs_hisat_nasal_nh_table.xlsx before writing the tables.
## Looking for subscript invalid names, end of extract_keepers.

Try removing the samples for which we have a duplicate/person across mRNA and Rz, removing only the Rz samples.

The cheesy easy way to do this is to just check for person PP1009, 1011, 2001 2020 && library_type = RZ, but it should be trivial to do it in a smarter way… But I will probably mess that up the first time and don’t want to be too annoying.

11.1 We have both library types for 4 people: 1009, 1011, 2001, and 2020.

excluded_duplicates <- subset_se(hs_hisat_nasal_nohealthy,
                                 subset = "!(participant_code=='PP1009'&library_type=='RZ')") %>%
  subset_se(subset = "!(participant_code=='PP1011'&library_type=='RZ')") %>%
  subset_se(subset = "!(participant_code=='PP2001'&library_type=='RZ')") %>%
  subset_se(subset = "!(participant_code=='PP2020'&library_type=='RZ')")

excluded_duplicates_norm <- normalize(excluded_duplicates, transform = "log2", convert = "cpm",
                                      norm = "quant", filter = TRUE)
## Removing 7658 low-count genes (13913 remaining).
## transform_counts: Found 402 values equal to 0, adding 1 to the matrix.
newnames <- colData(excluded_duplicates)[["participant_code"]]
pp(file = "images/excluded_duplicates_norm_pca.png",
   image = plot_pca(excluded_duplicates_norm, exp_names = newnames, plot_labels = TRUE))
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure

excluded_duplicates_nb <- normalize(excluded_duplicates, transform = "log2", convert = "cpm",
                                    batch = "svaseq", filter = TRUE)
## Removing 7658 low-count genes (13913 remaining).
## transform_counts: Found 560 values less than 0.
## transform_counts: Found 560 values equal to 0, adding 1 to the matrix.
pp(file = "images/excluded_duplicates_nb_pca.png",
   image = plot_pca(excluded_duplicates_nb, exp_names = newnames, plot_labels = TRUE))

excluded_duplicates_de <- all_pairwise(excluded_duplicates, filter = TRUE, model_svs = "svaseq",
                                       model_fstring = "~ 0 + condition")
##      negative notapplicable      positive 
##            14             1             6
## Removing 7658 low-count genes (13913 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 18021 entries to zero.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## This contrast put the denominator first.
## This contrast put the denominator first.
## conditions
##      negative notapplicable      positive 
##            14             1             6
## calcNormFactors has been renamed to normLibSizes
## conditions
##      negative notapplicable      positive 
##            14             1             6
## conditions
##      negative notapplicable      positive 
##            14             1             6 
## Error in NOISeq::noiseqbio(norm_input, k = k, norm = norm, factor = condition_column,  : 
##   ERROR: To run NOISeqBIO at least two replicates per condition are needed.
##          Please, run NOISeq if there are not enough replicates in your experiment.
## Warning in correlate_de_tables(results, annot_df = annot_df, extra_contrasts = extra_contrasts): The noiseq results are not of class
## hpgltools::noiseq_pairwise.
excluded_duplicates_table <- combine_de_tables(excluded_duplicates_de, excel = "excel/excluded_duplicates_table.xlsx")
## Deleting the file excel/excluded_duplicates_table.xlsx before writing the tables.
## Looking for subscript invalid names, end of extract_keepers.
excluded_duplicates_table
## A set of combined differential expression results.
##                       table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 notapplicable_vs_negative           1             4           2             1           0             0
## 2      positive_vs_negative         132            30         112            17          88            10
## 3 positive_vs_notapplicable           4             1           2             1           0             0
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the UpSetR package.
##   Please report the issue at <https://github.com/hms-dbmi/UpSetR/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the UpSetR package.
##   Please report the issue at <https://github.com/hms-dbmi/UpSetR/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Plot describing unique/shared genes in a differential expression table.

excluded_duplicates_sig <- extract_significant_genes(excluded_duplicates_table, excel = "excel/excluded_duplicates_sig.xlsx")
## Deleting the file excel/excluded_duplicates_sig.xlsx before writing the tables.
excluded_duplicates_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                           deseq_up deseq_down
## notapplicable_vs_negative        1          4
## positive_vs_negative           132         30
## positive_vs_notapplicable        4          1

excluded_up <- excluded_duplicates_sig[["deseq"]][["ups"]][["positive_vs_negative"]]
excluded_down <- excluded_duplicates_sig[["deseq"]][["downs"]][["positive_vs_negative"]]

excluded_up_gp <- simple_gprofiler(excluded_up)
excluded_up_gp
excluded_up_gp_bp_plots <- plot_enrichresult(excluded_up_gp[["BP_enrich"]])
## Warning: showCategory (30) is larger than available items (25). Using 25
## Warning: showCategory (30) is larger than available items (25). Using 25
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
## Warning: showCategory (30) is larger than available items (25). Using 25
## showCategory (30) is larger than available items (25). Using 25
pp(file = "images/excluded_up_gp_bp_go.png", image = excluded_up_gp_bp_plots[["go"]])

pp(file = "images/excluded_up_gp_bp_dot.png", image = excluded_up_gp_bp_plots[["dot"]])

excluded_down_gp <- simple_gprofiler(excluded_down)
excluded_down_gp
excluded_down_gp_bp_plots <- plot_enrichresult(excluded_down_gp[["BP_enrich"]])
## There are insufficient significant results to plot.
pp(file = "images/excluded_down_gp_bp_go.png", image = excluded_down_gp_bp_plots[["go"]])
## Error in `pp()`:
## ! The image does not appear to exist.
pp(file = "images/excluded_down_gp_bp_dot.png", image = excluded_down_gp_bp_plots[["dot"]])
## Error in `pp()`:
## ! The image does not appear to exist.

12 Normalize

A couple plots of all the salmon samples colored by sample type.

hs_salmon_norm <- normalize(hs_salmon, transform = "log2", convert = "cpm",
                            filter = TRUE, norm = "quant")
## Removing 3015 low-count genes (7870 remaining).
## transform_counts: Found 494278 values equal to 0, adding 1 to the matrix.
hs_salmon_corheat <- plot_corheat(hs_salmon_norm)
pp(file = "images/hs_salmon_sampletype_pca.png", image = plot_pca(hs_salmon_norm))

hs_hisat_norm <- normalize(hs_hisat, transform = "log2", convert = "cpm",
                           filter = TRUE, norm = "quant")
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 21908 values equal to 0, adding 1 to the matrix.
hs_hisat_corheat <- plot_corheat(hs_hisat_norm)
pp(file = "images/hs_hisat_sampletype_corheat.png")
hs_hisat_corheat
## A heatmap of pairwise sample correlations ranging from: 
## 0.371396107834044 to 0.990527166242753.
dev.off()
## png 
##   2
hs_hisat_corheat
## A heatmap of pairwise sample correlations ranging from: 
## 0.371396107834044 to 0.990527166242753.

hs_hisat_pca <- plot_pca(hs_hisat_norm)
pp(file = "images/hs_hisat_sampletype_pca.png", image = plot_pca(hs_hisat_norm))

12.1 Remove samples without 7SL detection state

While we are at it, color by the 7SL detection and shape by sample type (Rz/mRNA).

In this instance I have separate colors for 7SL+ and 7SL- combined with celltype.

hs_hisat_detected <- subset_se(hs_hisat, subset = "detectionparasiteby7sl!='unknown'") %>%
  subset_se(subset = "detectionparasiteby7sl!='notapplicable'") %>%
  set_conditions(fact = "sample_7sl") %>%
  set_batches("sample_type")
## The numbers of samples by condition are:
## 
##            nasalswab_negative            nasalswab_positive                pbmcs_negative                pbmcs_positive 
##                            16                             8                            26                             4 
## skinbiopsynon-lesion_negative skinbiopsynon-lesion_positive       skinbiopsyscar_negative                 wbcs_negative 
##                            26                             1                            21                            24 
##                 wbcs_positive 
##                             5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   24                   30                   27                   21                   29

Print a PCA of this using our generic normalization.

hs_hisat_detect_norm <- normalize(hs_hisat_detected, transform = "log2", convert = "cpm",
                                  filter = TRUE, norm = "quant")
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 21908 values equal to 0, adding 1 to the matrix.
hs_hisat_detect_pca <- plot_pca(hs_hisat_detect_norm)
pp(file = "images/hs_hisat_7sldetected_pca.png", image = hs_hisat_detect_pca, width = 18, height = 9)

Followed by the same samples treated with SVA.

hs_hisat_detect_nb <- normalize(hs_hisat_detected, transform = "log2", convert = "cpm",
                                filter = TRUE, batch = "svaseq")
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 36985 values less than 0.
## transform_counts: Found 36985 values equal to 0, adding 1 to the matrix.
pp(file = "images/hs_hisat_7sldetected_sva_pca.png",
   image = plot_pca(hs_hisat_detect_nb), height = 9, width = 18)

hs_hisat_only_7sl <- set_conditions(hs_hisat_detected, fact = "detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
## negative positive 
##      113       18
## Setting colors with no pre-defined colors, using the Dark2 palette.
hs_hisat_7sl_nb <- normalize(hs_hisat_only_7sl, transform = "log2", convert = "cpm",
                             batch = "svaseq", filter = TRUE)
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 22881 values less than 0.
## transform_counts: Found 22881 values equal to 0, adding 1 to the matrix.
pp(file = "images/hs_hisat_7sl_sva_pca.png", image = plot_pca(hs_hisat_7sl_nb),
   height = 9, width = 18)

13 Compare distribution of RZ/Stranded libraries

Maria Adelaida is interested in the distribution of the relatively few rz samples vs the relatively large number of stranded mRNA libraries.

I think it is likely that the nasal samples are of primary interest.

Oh, it turns out the automatically generated colors for this are terrible. Maybe we do not care, there are so few 7SL positive mRNA samples that it is basically irrelevant.

hs_hisat_mrna_7sl <- set_conditions(hs_hisat_mrna, fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
##      negative notapplicable      positive 
##           106             1            13
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_mRNA positive_mRNA 
##           106            13
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   15                   30                   25                   20                   29
hs_hisat_mrna_7sl_norm <- normalize(hs_hisat_mrna_7sl, convert = "cpm", filter = TRUE,
                                    norm = "quant", transform = "log2")
## Removing 5874 low-count genes (15697 remaining).
## transform_counts: Found 24749 values equal to 0, adding 1 to the matrix.
## This still clusters primarily by sample type, and there are precious few positive samples.
plot_pca(hs_hisat_mrna_7sl_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by nasalswab, pbmcs, skinbiopsynon-lesion, skinbiopsyscar, wbcs.

Replot this following treatment with SVA. At least in this instance it is possible to differentiate the sample types in the blob.

hs_hisat_mrna_7sl_nb <- normalize(hs_hisat_mrna_7sl, convert = "cpm", filter = TRUE,
                                  batch = "sva", transform = "log2")
## Removing 5874 low-count genes (15697 remaining).
## transform_counts: Found 15901 values less than 0.
## transform_counts: Found 15901 values equal to 0, adding 1 to the matrix.
hs_hisat_mrna_sva_pca <- plot_pca(hs_hisat_mrna_7sl_nb)
pp(file = "images/hs_hisat_mrna_sva_pca.png")
hs_hisat_mrna_sva_pca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by nasalswab, pbmcs, skinbiopsynon-lesion, skinbiopsyscar, wbcs.
dev.off()
## png 
##   2
hs_hisat_mrna_sva_pca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by nasalswab, pbmcs, skinbiopsynon-lesion, skinbiopsyscar, wbcs.

13.1 Perform DESeq using these

table(conditions(hs_hisat_mrna_7sl))
## Error:
## ! unable to find an inherited method for function 'conditions' for signature 'object = "SummarizedExperiment"'
hs_hisat_mrna_7sl_de <- all_pairwise(hs_hisat_mrna_7sl, model_fstring = "~ 0 + condition",
                                     model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_mRNA positive_mRNA 
##           106            13
## Removing 5874 low-count genes (15697 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 345302 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## 1 rows did not converge in beta, labelled in mcols(object)$betaConv. Use larger maxit argument with nbinomWaldTest
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_mRNA positive_mRNA 
##           106            13
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_mRNA positive_mRNA 
##           106            13
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_mRNA positive_mRNA 
##           106            13
hs_hisat_mrna_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 p_RNA___RN
## basic_vs_deseq   0.1490497
## basic_vs_dream   0.3170209
## basic_vs_ebseq   0.6061506
## basic_vs_edger   0.1915985
## basic_vs_limma   0.2866776
## basic_vs_noiseq  0.3221382
## deseq_vs_dream   0.3338728
## deseq_vs_ebseq   0.6026272
## deseq_vs_edger   0.3650626
## deseq_vs_limma   0.2847882
## deseq_vs_noiseq  0.3390230
## dream_vs_ebseq   0.4760589
## dream_vs_edger   0.7027551
## dream_vs_limma   0.9396614
## dream_vs_noiseq  0.3694242
## ebseq_vs_edger   0.4337269
## ebseq_vs_limma   0.4217813
## ebseq_vs_noiseq  0.6186556
## edger_vs_limma   0.6621643
## edger_vs_noiseq  0.4324803
## limma_vs_noiseq  0.5049929
pp(file = "images/7sl_only_de_corheat.png", image = hs_hisat_mrna_7sl_de[[""]])
## Error in `pp()`:
## ! The image does not appear to exist.
hs_hisat_mrna_7sl_table <- combine_de_tables(
  hs_hisat_mrna_7sl_de,
  excel = glue("excel/de_tables/hs_hisat_all_mrna_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_hisat_mrna_7sl_table
## A set of combined differential expression results.
##                            table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_mRNA_vs_negative_mRNA           7            55           5             0           2             1
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

pp(file = "images/sig_deseq_7sl_genes.png", image = hs_hisat_mrna_7sl_table[["plots"]][["positive_mRNA_vs_negative_mRNA"]][["deseq_vol_plots"]])

hs_hisat_mrna_7sl_sig <- extract_significant_genes(
  hs_hisat_mrna_7sl_table,
  excel = glue("excel/de_sig/hs_hisat_all_mrna_7sl_sig-v{ver}.xlsx"))
hs_hisat_mrna_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                                deseq_up deseq_down
## positive_mRNA_vs_negative_mRNA        7         55

13.1.1 Salmon nasal samples, mRNA libraries

Now restrict to just the nasal samples.

hs_salmon_nasal_mrna_7sl <- subset_se(hs_salmon_mrna, subset = "sample_type=='nasalswab'") %>%
  set_conditions(fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "participant_code")
## The numbers of samples by condition are:
## 
## negative positive 
##        9        2
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_mRNA positive_mRNA 
##             9             2
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## PP1009 PP1011 PP1023 PP1024 PP1025 PP1026 PP2001 PP2020 PP2021 PP2022 PP2030 
##      1      1      1      1      1      1      1      1      1      1      1
hs_hisat_nasal_mrna_7sl <- subset_se(hs_hisat_mrna, subset = "sample_type=='nasalswab'") %>%
  set_conditions(fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "participant_code")
## The numbers of samples by condition are:
## 
##      negative notapplicable      positive 
##            12             1             3
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_mRNA positive_mRNA 
##            12             3
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## PP1009 PP1011 PP1023 PP1024 PP1025 PP1026 PP1042 PP1043 PP1044 PP2001 PP2005 PP2020 PP2021 PP2022 PP2030 
##      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1

Print the normalized PCA showing only a couple of positive samples in this set.

Small note: I slightly changed how set_conditions works to drop unused levels.

hs_hisat_nasal_mrna_7sl_norm <- normalize(hs_hisat_nasal_mrna_7sl, convert = "cpm",
                                          filter = TRUE, norm = "quant", transform = "log2")
## Removing 8184 low-count genes (13387 remaining).
## transform_counts: Found 43 values equal to 0, adding 1 to the matrix.
hs_hisat_nasal_mrna_7sl_pca <- plot_pca(hs_hisat_nasal_mrna_7sl_norm)
## Warning in ggplot2::guide_legend(overwrite.aes = list(size = plot_size)): Arguments in `...` must be used.
## ✖ Problematic argument:
## • overwrite.aes = list(size = plot_size)
## ℹ Did you misspell an argument name?
pp(file = "images/hs_hisat_nasal_mrna_7sl_norm_pca.png",
   image = hs_hisat_nasal_mrna_7sl_pca)

hs_hisat_nasal_mrna_7sl_nb <- normalize(hs_hisat_nasal_mrna_7sl, convert = "cpm", filter = TRUE,
                                        batch = "sva", transform = "log2")
## Removing 8184 low-count genes (13387 remaining).
## transform_counts: Found 230 values less than 0.
## transform_counts: Found 230 values equal to 0, adding 1 to the matrix.
hs_hisat_nasal_mrna_7sl_nb_pca <- plot_pca(hs_hisat_nasal_mrna_7sl_nb)
## Warning in ggplot2::guide_legend(overwrite.aes = list(size = plot_size)): Arguments in `...` must be used.
## ✖ Problematic argument:
## • overwrite.aes = list(size = plot_size)
## ℹ Did you misspell an argument name?
pp(file = "images/hs_hisat_nasal_mrna_7sl_sva_pca.png",
   image = hs_hisat_nasal_mrna_7sl_nb_pca)

13.1.2 Perform pairwise analysis of these

hs_hisat_nasal_mrna_7sl_de <- all_pairwise(hs_hisat_nasal_mrna_7sl, model_fstring = "~ 0 + condition",
                                           model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_mRNA positive_mRNA 
##            12             3
## Removing 8184 low-count genes (13387 remaining).
## Warning in ggplot2::guide_legend(overwrite.aes = list(size = plot_size)): Arguments in `...` must be used.
## ✖ Problematic argument:
## • overwrite.aes = list(size = plot_size)
## ℹ Did you misspell an argument name?
## Arguments in `...` must be used.
## ✖ Problematic argument:
## • overwrite.aes = list(size = plot_size)
## ℹ Did you misspell an argument name?
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 6602 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_mRNA positive_mRNA 
##            12             3
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_mRNA positive_mRNA 
##            12             3
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_mRNA positive_mRNA 
##            12             3
hs_hisat_nasal_mrna_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 p_RNA___RN
## basic_vs_deseq   0.7084687
## basic_vs_dream   0.7909874
## basic_vs_ebseq   0.8097290
## basic_vs_edger   0.7826199
## basic_vs_limma   0.8107395
## basic_vs_noiseq  0.8636917
## deseq_vs_dream   0.8245755
## deseq_vs_ebseq   0.8685864
## deseq_vs_edger   0.9520459
## deseq_vs_limma   0.8229842
## deseq_vs_noiseq  0.8390690
## dream_vs_ebseq   0.7468057
## dream_vs_edger   0.9071112
## dream_vs_limma   0.9775754
## dream_vs_noiseq  0.7779064
## ebseq_vs_edger   0.8794028
## ebseq_vs_limma   0.7628400
## ebseq_vs_noiseq  0.9820948
## edger_vs_limma   0.9046415
## edger_vs_noiseq  0.8764531
## limma_vs_noiseq  0.7950424
hs_hisat_nasal_mrna_7sl_table <- combine_de_tables(
  hs_hisat_nasal_mrna_7sl_de,
  excel = glue("excel/de_tables/hs_hisat_nasal_mrna_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_hisat_nasal_mrna_7sl_table
## A set of combined differential expression results.
##                            table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_mRNA_vs_negative_mRNA           9             1          13             0           3             0
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

hs_hisat_nasal_mrna_7sl_sig <- extract_significant_genes(
  hs_hisat_nasal_mrna_7sl_table,
  excel = glue("excel/de_sig/hs_hisat_nasal_mrna_7sl_sig-v{ver}.xlsx"))
hs_hisat_nasal_mrna_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                                deseq_up deseq_down
## positive_mRNA_vs_negative_mRNA        9          1

13.2 Repeat with the ribo zero samples

13.2.1 7SL samples, ribozero

Extract the ribozero samples into a new datastructure.

hs_hisat_rz_7sl <- set_conditions(hs_hisat_rz, fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## negative positive 
##        7        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_RZ positive_RZ 
##           7           5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
##            nasalswab skinbiopsynon-lesion       skinbiopsyscar 
##                    9                    2                    1
hs_salmon_rz_7sl <- set_conditions(hs_salmon_rz, fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## negative positive 
##        7        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_RZ positive_RZ 
##           7           5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
##            nasalswab skinbiopsynon-lesion       skinbiopsyscar 
##                    9                    2                    1

and play with them.

hs_hisat_rz_7sl_norm <- normalize(hs_hisat_rz_7sl, convert = "cpm", filter = TRUE,
                                  norm = "quant", transform = "log2")
## Removing 7058 low-count genes (14513 remaining).
## transform_counts: Found 317 values equal to 0, adding 1 to the matrix.
## This still clusters primarily by sample type, and there are precious few positive samples.
hs_hisat_rz_7sl_norm_pca <- plot_pca(hs_hisat_rz_7sl_norm)
pp(file = "imaegs/hs_hisat_rz_7sl_norm_pca.png",
   image = hs_hisat_rz_7sl_norm_pca)

hs_salmon_rz_7sl_norm <- normalize(hs_salmon_rz_7sl, convert = "cpm", filter = TRUE,
                                   norm = "quant", transform = "log2")
## Removing 5861 low-count genes (5024 remaining).
## transform_counts: Found 25004 values equal to 0, adding 1 to the matrix.
plot_pca(hs_salmon_rz_7sl_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_RZ, positive_RZ
## Shapes are defined by nasalswab, skinbiopsynon-lesion, skinbiopsyscar.

hs_hisat_rz_7sl_de <- all_pairwise(hs_hisat_rz_7sl, model_fstring = "~ 0 + condition",
                                   model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_RZ positive_RZ 
##           7           5
## Removing 7058 low-count genes (14513 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 13470 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           7           5
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_RZ positive_RZ 
##           7           5
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           7           5
hs_hisat_rz_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 ps_RZ___RZ
## basic_vs_deseq   0.4975228
## basic_vs_dream   0.5059912
## basic_vs_ebseq   0.7284212
## basic_vs_edger   0.4713859
## basic_vs_limma   0.5216288
## basic_vs_noiseq  0.4452867
## deseq_vs_dream   0.9303126
## deseq_vs_ebseq   0.4567858
## deseq_vs_edger   0.9475635
## deseq_vs_limma   0.9274922
## deseq_vs_noiseq  0.7956467
## dream_vs_ebseq   0.4494630
## dream_vs_edger   0.8721083
## dream_vs_limma   0.9931848
## dream_vs_noiseq  0.8420597
## ebseq_vs_edger   0.4884993
## ebseq_vs_limma   0.4257163
## ebseq_vs_noiseq  0.5017234
## edger_vs_limma   0.8665323
## edger_vs_noiseq  0.7561021
## limma_vs_noiseq  0.8195530
hs_hisat_rz_7sl_table <- combine_de_tables(
  hs_hisat_rz_7sl_de,
  excel = glue("excel/de_tables/hs_hisat_rz_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_hisat_rz_7sl_table
## A set of combined differential expression results.
##                        table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_RZ_vs_negative_RZ          44            22          64            34           0             0
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

hs_hisat_rz_7sl_sig <- extract_significant_genes(
  hs_hisat_rz_7sl_table,
  excel = glue("excel/de_sig/hs_hisat_rz_7sl_sig-v{ver}.xlsx"))
hs_hisat_rz_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                            deseq_up deseq_down
## positive_RZ_vs_negative_RZ       44         22

13.2.2 Salmon 7SL samples, ribozero

hs_salmon_rz_7sl_de <- all_pairwise(hs_salmon_rz_7sl, model_fstring = "~ 0 + condition",
                                   model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_RZ positive_RZ 
##           7           5
## Removing 5861 low-count genes (5024 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 26490 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           7           5
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_RZ positive_RZ 
##           7           5
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           7           5
hs_salmon_rz_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 ps_RZ___RZ
## basic_vs_deseq   0.4238662
## basic_vs_dream   0.6337968
## basic_vs_ebseq   0.6778526
## basic_vs_edger   0.5149572
## basic_vs_limma   0.6094502
## basic_vs_noiseq  0.6304777
## deseq_vs_dream   0.6678288
## deseq_vs_ebseq   0.4592409
## deseq_vs_edger   0.8448381
## deseq_vs_limma   0.6170263
## deseq_vs_noiseq  0.6359009
## dream_vs_ebseq   0.5011153
## dream_vs_edger   0.8165980
## dream_vs_limma   0.9644507
## dream_vs_noiseq  0.7516089
## ebseq_vs_edger   0.5631190
## ebseq_vs_limma   0.4599039
## ebseq_vs_noiseq  0.7097083
## edger_vs_limma   0.7557171
## edger_vs_noiseq  0.7517053
## limma_vs_noiseq  0.7346500
hs_salmon_rz_7sl_table <- combine_de_tables(
  hs_salmon_rz_7sl_de,
  excel = glue("excel/de_tables/hs_salmon_rz_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_salmon_rz_7sl_table
## A set of combined differential expression results.
##                        table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_RZ_vs_negative_RZ          29            42          42            34           7             2
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

hs_salmon_rz_7sl_sig <- extract_significant_genes(
  hs_salmon_rz_7sl_table,
  excel = glue("excel/de_sig/hs_salmon_rz_7sl_sig-v{ver}.xlsx"))
hs_salmon_rz_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                            deseq_up deseq_down
## positive_RZ_vs_negative_RZ       29         42

13.2.3 7SL nasal samples, ribozero

Now restrict to just the nasal samples.

hs_hisat_nasal_rz_7sl <- subset_se(hs_hisat_rz_7sl, subset = "sample_type=='nasalswab'") %>%
  set_conditions(fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## negative positive 
##        4        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_RZ positive_RZ 
##           4           5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## nasalswab 
##         9
hs_hisat_nasal_rz_7sl_norm <- normalize(hs_hisat_nasal_rz_7sl, convert = "cpm", filter = TRUE,
                                        norm = "quant", transform = "log2")
## Removing 8088 low-count genes (13483 remaining).
## transform_counts: Found 11 values equal to 0, adding 1 to the matrix.
hs_hisat_nasal_rz_7sl_npca <- plot_pca(hs_hisat_nasal_rz_7sl_norm)
pp(file = "images/hs_hisat_nasal_rz_7sl_npca.png")
hs_hisat_nasal_rz_7sl_npca[["plot"]]
dev.off()
## png 
##   2
hs_hisat_nasal_rz_7sl_npca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_RZ, positive_RZ
## Shapes are defined by nasalswab.

hs_hisat_nasal_rz_7sl_nb <- normalize(hs_hisat_nasal_rz_7sl, convert = "cpm", filter = TRUE,
                                    batch = "sva", transform = "log2")
## Removing 8088 low-count genes (13483 remaining).
## transform_counts: Found 174 values less than 0.
## transform_counts: Found 174 values equal to 0, adding 1 to the matrix.
hs_hisat_nasal_rz_7sl_nbpca <- plot_pca(hs_hisat_nasal_rz_7sl_nb)
pp(file = "images/hs_hisat_nasal_rz_7sl_nbpca.png")
hs_hisat_nasal_rz_7sl_nbpca[["plot"]]
dev.off()
## png 
##   2
hs_hisat_nasal_rz_7sl_nbpca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_RZ, positive_RZ
## Shapes are defined by nasalswab.

hs_salmon_nasal_rz_7sl <- subset_se(hs_salmon_rz_7sl, subset = "sample_type=='nasalswab'") %>%
  set_conditions(fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## negative positive 
##        4        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_RZ positive_RZ 
##           4           5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## nasalswab 
##         9
hs_salmon_nasal_rz_7sl_norm <- normalize(hs_salmon_nasal_rz_7sl, convert = "cpm", filter = TRUE,
                                        norm = "quant", transform = "log2")
## Removing 6872 low-count genes (4013 remaining).
## transform_counts: Found 11896 values equal to 0, adding 1 to the matrix.
hs_salmon_nasal_rz_7sl_npca <- plot_pca(hs_salmon_nasal_rz_7sl_norm)
pp(file = "images/hs_salmon_nasal_rz_7sl_npca.png")
hs_salmon_nasal_rz_7sl_npca[["plot"]]
dev.off()
## png 
##   2
hs_salmon_nasal_rz_7sl_npca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_RZ, positive_RZ
## Shapes are defined by nasalswab.

hs_salmon_nasal_rz_7sl_nb <- normalize(hs_salmon_nasal_rz_7sl, convert = "cpm", filter = TRUE,
                                    batch = "sva", transform = "log2")
## Removing 6872 low-count genes (4013 remaining).
## transform_counts: Found 3848 values less than 0.
## transform_counts: Found 3848 values equal to 0, adding 1 to the matrix.
hs_salmon_nasal_rz_7sl_nbpca <- plot_pca(hs_salmon_nasal_rz_7sl_nb)
pp(file = "images/hs_salmon_nasal_rz_7sl_nbpca.png")
hs_salmon_nasal_rz_7sl_nbpca[["plot"]]
dev.off()
## png 
##   2
hs_salmon_nasal_rz_7sl_nbpca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_RZ, positive_RZ
## Shapes are defined by nasalswab.

13.2.3.1 DE of this ever shrinking set

hs_hisat_nasal_rz_7sl_de <- all_pairwise(hs_hisat_nasal_rz_7sl, model_fstring = "~ 0 + condition",
                                         model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_RZ positive_RZ 
##           4           5
## Removing 8088 low-count genes (13483 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 3677 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           4           5
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_RZ positive_RZ 
##           4           5
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           4           5
hs_hisat_nasal_rz_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 ps_RZ___RZ
## basic_vs_deseq   0.9409616
## basic_vs_dream   0.9393628
## basic_vs_ebseq   0.8627583
## basic_vs_edger   0.9430131
## basic_vs_limma   0.9344504
## basic_vs_noiseq  0.8672976
## deseq_vs_dream   0.9263685
## deseq_vs_ebseq   0.8455327
## deseq_vs_edger   0.9990189
## deseq_vs_limma   0.9245912
## deseq_vs_noiseq  0.8505229
## dream_vs_ebseq   0.8927150
## dream_vs_edger   0.9297926
## dream_vs_limma   0.9919308
## dream_vs_noiseq  0.8992863
## ebseq_vs_edger   0.8514828
## ebseq_vs_limma   0.8695064
## ebseq_vs_noiseq  0.9993307
## edger_vs_limma   0.9278476
## edger_vs_noiseq  0.8564436
## limma_vs_noiseq  0.8777438
hs_hisat_nasal_rz_7sl_table <- combine_de_tables(
  hs_hisat_nasal_rz_7sl_de,
  excel = glue("excel/de_tables/hs_hisat_nasal_rz_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_hisat_nasal_rz_7sl_table
## A set of combined differential expression results.
##                        table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_RZ_vs_negative_RZ          11             4          31             7           0             1
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

hs_hisat_nasal_rz_7sl_sig <- extract_significant_genes(
  hs_hisat_nasal_rz_7sl_table,
  excel = glue("excel/de_sig/hs_hisat_nasal_rz_7sl_sig-v{ver}.xlsx"))
hs_hisat_nasal_rz_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                            deseq_up deseq_down
## positive_RZ_vs_negative_RZ       11          4

hs_salmon_nasal_rz_7sl_de <- all_pairwise(hs_salmon_nasal_rz_7sl, model_fstring = "~ 0 + condition",
                                         model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_RZ positive_RZ 
##           4           5
## Removing 6872 low-count genes (4013 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 12728 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           4           5
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_RZ positive_RZ 
##           4           5
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_RZ positive_RZ 
##           4           5
hs_salmon_nasal_rz_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 ps_RZ___RZ
## basic_vs_deseq   0.6382512
## basic_vs_dream   0.8538690
## basic_vs_ebseq   0.7075406
## basic_vs_edger   0.7398921
## basic_vs_limma   0.8785550
## basic_vs_noiseq  0.8325153
## deseq_vs_dream   0.7227097
## deseq_vs_ebseq   0.6190429
## deseq_vs_edger   0.8955159
## deseq_vs_limma   0.6933449
## deseq_vs_noiseq  0.6411391
## dream_vs_ebseq   0.7020063
## dream_vs_edger   0.8299055
## dream_vs_limma   0.9754756
## dream_vs_noiseq  0.7862041
## ebseq_vs_edger   0.7750562
## ebseq_vs_limma   0.7102171
## ebseq_vs_noiseq  0.9350743
## edger_vs_limma   0.8004156
## edger_vs_noiseq  0.7817831
## limma_vs_noiseq  0.7978367
hs_salmon_nasal_rz_7sl_table <- combine_de_tables(
  hs_salmon_nasal_rz_7sl_de,
  excel = glue("excel/de_tables/hs_salmon_nasal_rz_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_salmon_nasal_rz_7sl_table
## A set of combined differential expression results.
##                        table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_RZ_vs_negative_RZ           8            35          23            67           4             0
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

hs_salmon_nasal_rz_7sl_sig <- extract_significant_genes(
  hs_salmon_nasal_rz_7sl_table,
  excel = glue("excel/de_sig/hs_salmon_nasal_rz_7sl_sig-v{ver}.xlsx"))
hs_salmon_nasal_rz_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                            deseq_up deseq_down
## positive_RZ_vs_negative_RZ        8         35

13.3 Compare 7SL status for the PBMC samples

hs_hisat_pbmc_7sl <- subset_se(hs_hisat, subset = "sample_type=='pbmcs'") %>%
  set_conditions(fact = "detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
## negative positive 
##       26        4
## Setting colors with no pre-defined colors, using the Dark2 palette.
hs_hisat_pbmc_mrna_7sl_norm <- normalize(hs_hisat_pbmc_7sl, transform = "log2",
                                        convert = "cpm", norm = "quant",
                                        filter = TRUE)
## Removing 9085 low-count genes (12486 remaining).
## transform_counts: Found 29 values equal to 0, adding 1 to the matrix.
hs_hisat_pbmc_mrna_7sl_npca <- plot_pca(hs_hisat_pbmc_mrna_7sl_norm)
hs_hisat_pbmc_mrna_7sl_npca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA.

pp(file = "images/hs_hisat_pbmc_mrna_7sl_npca.png",
   image = hs_hisat_pbmc_mrna_7sl_npca$plot)

13.4 Extract the blood cells (not PBMC)

13.4.1 Hisat

hs_hisat_wbc_mrna_7sl <- subset_se(hs_hisat_mrna, subset = "sample_type=='wbcs'") %>%
  set_conditions(fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## negative positive 
##       24        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_mRNA positive_mRNA 
##            24             5
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## wbcs 
##   29
hs_hisat_wbc_mrna_7sl_norm <- normalize(hs_hisat_wbc_mrna_7sl, transform = "log2",
                                        convert = "cpm", norm = "quant",
                                        filter = TRUE)
## Removing 9451 low-count genes (12120 remaining).
## transform_counts: Found 37 values equal to 0, adding 1 to the matrix.
hs_hisat_wbc_mrna_7sl_npca <- plot_pca(hs_hisat_wbc_mrna_7sl_norm)
hs_hisat_wbc_mrna_7sl_npca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by wbcs.

pp(file = "images/hs_hisat_wbc_mrna_7sl_npca.png",
   image = hs_hisat_wbc_mrna_7sl_npca$plot)

hs_hisat_wbc_mrna_7sl_nb <- normalize(hs_hisat_wbc_mrna_7sl, transform = "log2",
                                      convert = "cpm", batch = "svaseq",
                                      filter = TRUE)
## Removing 9451 low-count genes (12120 remaining).
## transform_counts: Found 327 values less than 0.
## transform_counts: Found 327 values equal to 0, adding 1 to the matrix.
hs_hisat_wbc_mrna_7sl_nbpca <- plot_pca(hs_hisat_wbc_mrna_7sl_nb)
hs_hisat_wbc_mrna_7sl_nbpca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by wbcs.

pp(file = "images/hs_hisat_wbc_mrna_7sl_nbpca.png")
hs_hisat_wbc_mrna_7sl_nbpca$plot
dev.off()
## png 
##   2

13.4.2 Salmon

hs_salmon_wbc_mrna_7sl <- subset_se(hs_salmon_mrna, subset = "sample_type=='wbcs'") %>%
  set_conditions(fact = "detectionparasiteby7sl") %>%
  subset_se(subset = "condition!='notapplicable'") %>%
  set_conditions(fact = "detection_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## negative positive 
##       19        4
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The numbers of samples by condition are:
## 
## negative_mRNA positive_mRNA 
##            19             4
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## wbcs 
##   23
hs_salmon_wbc_mrna_7sl_norm <- normalize(hs_salmon_wbc_mrna_7sl, transform = "log2",
                                        convert = "cpm", norm = "quant",
                                        filter = TRUE)
## Removing 5882 low-count genes (5003 remaining).
## transform_counts: Found 46809 values equal to 0, adding 1 to the matrix.
hs_salmon_wbc_mrna_7sl_npca <- plot_pca(hs_salmon_wbc_mrna_7sl_norm)
hs_salmon_wbc_mrna_7sl_npca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by wbcs.

pp(file = "images/hs_salmon_wbc_mrna_7sl_npca.png",
   image = hs_salmon_wbc_mrna_7sl_npca$plot)

hs_salmon_wbc_mrna_7sl_nb <- normalize(hs_salmon_wbc_mrna_7sl, transform = "log2",
                                      convert = "cpm", batch = "svaseq",
                                      filter = TRUE)
## Removing 5882 low-count genes (5003 remaining).
## transform_counts: Found 15805 values less than 0.
## transform_counts: Found 15805 values equal to 0, adding 1 to the matrix.
hs_salmon_wbc_mrna_7sl_nbpca <- plot_pca(hs_salmon_wbc_mrna_7sl_nb)
hs_salmon_wbc_mrna_7sl_nbpca
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative_mRNA, positive_mRNA
## Shapes are defined by wbcs.

pp(file = "images/hs_salmon_wbc_mrna_7sl_nbpca.png",
   image = hs_salmon_wbc_mrna_7sl_nbpca$plot)

hs_salmon_wbc_mrna_7sl_de <- all_pairwise(hs_salmon_wbc_mrna_7sl, model_fstring = "~ 0 + condition",
                                          model_svs = "svaseq", filter = TRUE, force = TRUE)
## negative_mRNA positive_mRNA 
##            19             4
## Removing 5882 low-count genes (5003 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 48484 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## -- note: fitType='parametric', but the dispersion trend was not well captured by the
##    function: y = a/x + b, and a local regression fit was automatically substituted.
##    specify fitType='local' or 'mean' to avoid this message next time.
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_mRNA positive_mRNA 
##            19             4
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative_mRNA positive_mRNA 
##            19             4
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative_mRNA positive_mRNA 
##            19             4
hs_salmon_wbc_mrna_7sl_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 p_RNA___RN
## basic_vs_deseq   0.4576421
## basic_vs_dream   0.9115531
## basic_vs_ebseq   0.5885339
## basic_vs_edger   0.7318327
## basic_vs_limma   0.9051631
## basic_vs_noiseq  0.7614593
## deseq_vs_dream   0.4508623
## deseq_vs_ebseq   0.6529414
## deseq_vs_edger   0.7140047
## deseq_vs_limma   0.4373145
## deseq_vs_noiseq  0.6661746
## dream_vs_ebseq   0.5853173
## dream_vs_edger   0.7371504
## dream_vs_limma   0.9902388
## dream_vs_noiseq  0.7291375
## ebseq_vs_edger   0.8002916
## ebseq_vs_limma   0.5627182
## ebseq_vs_noiseq  0.9018166
## edger_vs_limma   0.7231412
## edger_vs_noiseq  0.8631201
## limma_vs_noiseq  0.7114644
hs_salmon_wbc_mrna_7sl_table <- combine_de_tables(
  hs_salmon_wbc_mrna_7sl_de,
  excel = glue("excel/de_tables/hs_salmon_wbc_mrna_7sl_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_salmon_wbc_mrna_7sl_table
## A set of combined differential expression results.
##                            table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_mRNA_vs_negative_mRNA          41           203          22            15           7             3
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

hs_salmon_wbc_mrna_7sl_sig <- extract_significant_genes(
  hs_salmon_wbc_mrna_7sl_table,
  excel = glue("excel/sig_tables/hs_salmon_wbc_mrna_7sl_sig-v{ver}.xlsx"))
hs_salmon_wbc_mrna_7sl_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                                deseq_up deseq_down
## positive_mRNA_vs_negative_mRNA       41        203

14 Healthy vs Scar samples

One query from our last meeting which I forgot about until I reread my TODO notes: compare the samples marked as healthy compared to those marked as scar. These are two distantly separate skin biopsies of the same person.

hs_hisat_skin_mrna_7sl <- subset_se(hs_hisat_mrna, subset = "hs=='scar'|hs=='healthy'")
hs_hisat_scarvs_mrna <- set_conditions(hs_hisat_skin_mrna_7sl, fact = "hs")
## The numbers of samples by condition are:
## 
## healthy    scar 
##      25      20
## Setting colors with no pre-defined colors, using the Dark2 palette.
hs_hisat_scarvs_de <- all_pairwise(hs_hisat_scarvs_mrna, filter = TRUE,
                                   model_svs = "svaseq", model_fstring = "~ 0 + condition")
## healthy    scar 
##      25      20
## Removing 7367 low-count genes (14204 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 35875 entries to zero.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## conditions
## healthy    scar 
##      25      20
## calcNormFactors has been renamed to normLibSizes
## conditions
## healthy    scar 
##      25      20
## conditions
## healthy    scar 
##      25      20
hs_hisat_scarvs_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 scr_vs_hlt
## basic_vs_deseq   0.7220332
## basic_vs_dream   0.8350298
## basic_vs_ebseq   0.7706083
## basic_vs_edger   0.7381484
## basic_vs_limma   0.8370038
## basic_vs_noiseq  0.8764495
## deseq_vs_dream   0.9390006
## deseq_vs_ebseq   0.9348352
## deseq_vs_edger   0.9973377
## deseq_vs_limma   0.9348631
## deseq_vs_noiseq  0.9114047
## dream_vs_ebseq   0.9067304
## dream_vs_edger   0.9481686
## dream_vs_limma   0.9947109
## dream_vs_noiseq  0.9309838
## ebseq_vs_edger   0.9445094
## ebseq_vs_limma   0.9004439
## ebseq_vs_noiseq  0.9641659
## edger_vs_limma   0.9438002
## edger_vs_noiseq  0.9207857
## limma_vs_noiseq  0.9279679
hs_hisat_scarvs_table <- combine_de_tables(
  hs_hisat_scarvs_de,
  excel = glue("excel/de_tables/hs_hisat_scarvs_mrna_table-v{ver}.xlsx"))
## Looking for subscript invalid names, end of extract_keepers.
hs_hisat_scarvs_table
## A set of combined differential expression results.
##             table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 scar_vs_healthy         127           132         125           125         105            59
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

pp(file = "images/hisat_scarvs_deseq_genes.png", image = hs_hisat_scarvs_table[["plots"]][["scar_vs_nonlesion"]][["deseq_vol_plots"]])
## Error in `pp()`:
## ! The image does not appear to exist.
hs_hisat_scarvs_sig <- extract_significant_genes(
  hs_hisat_scarvs_table,
  excel = glue("excel/sig_tables/hs_hisat_scarvs_mrna_sig-v{ver}.xlsx"))
hs_hisat_scarvs_sig
## A set of genes deemed significant according to deseq.
## The parameters defining significant were:
## LFC cutoff: 1 adj P cutoff: 0.05
##                 deseq_up deseq_down
## scar_vs_healthy      127        132

15 Take a peek at the kraken results

hs_kraken_viral <- create_se(pre_meta[["new_meta"]], file_column = "kraken_matrix_viral",
                             handle_na = "zero")
## Reading the sample metadata.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## The sample definitions comprises: 206 rows(samples) and 200 columns(metadata fields).
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0002/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0009/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0010/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0011/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0018/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0019/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0020/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0012/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0013/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0014/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0021/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0022/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0023/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0015/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0016/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0017/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0024/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0025/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0026/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0038/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0006/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0007/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0008/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0005/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0004/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0015/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0016/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0017/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0018/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0019/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0020/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0021/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0022/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0023/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0001/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0002/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0003/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0004/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0005/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0006/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0007/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0008/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0009/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0010/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0011/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0012/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0013/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0014/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0003/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0027/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0028/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0029/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0030/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0031/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0032/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0035/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0033/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0034/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0036/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0037/outputs/20250918kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0039/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0040/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0041/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0042/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0043/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0044/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0045/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0046/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0047/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0048/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0049/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0050/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0051/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0052/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0053/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0054/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0055/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0056/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0057/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0058/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0059/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0060/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0061/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0062/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0063/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0064/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0065/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0066/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0067/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0068/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0069/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0070/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0071/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0072/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0073/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0074/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0075/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0076/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0077/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0078/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0079/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0080/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0081/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0082/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0083/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0084/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0085/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0086/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0087/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0088/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0089/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0090/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0091/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0092/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0093/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0094/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0095/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0096/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0097/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0098/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0099/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0100/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0101/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0102/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0103/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0104/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0106/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0116/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0113/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0112/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0024/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0025/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0026/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0027/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0028/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0108/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0115/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0114/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0110/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0107/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0109/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0105/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0111/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0117/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0118/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0123/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0124/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0031/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0032/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0033/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0034/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0035/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0036/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0037/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0038/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0039/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0040/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0044/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0125/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0126/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0127/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0128/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0129/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0130/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0131/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0132/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0119/outputs/11kraken_viral/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in create_se(pre_meta[["new_meta"]], file_column = "kraken_matrix_viral", : Some samples were removed when cross referencing the
## samples against the count data.
## Warning in create_se(pre_meta[["new_meta"]], file_column = "kraken_matrix_viral", : There are some NAs in this data, the 'handle_nas'
## parameter may be required.
## Matched 574 annotations and counts.
## Saving the summarized experiment to 'se.rda'.
## The final summarized experiment has 574 rows and 200 columns.
hs_kraken_viral <- set_conditions(hs_kraken_viral, fact = "sample_type") %>%
  set_batches("detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##             nasal swab             Nasal Swab                    par               parasite                  PBMCs skin biopsy non-lesion 
##                     20                      5                     11                     28                     29                     26 
##       skin biopsy scar                   WBCs 
##                     21                     28
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## negative positive  unknown 
##      110       18       40
kraken_viral_norm <- normalize(hs_kraken_viral, filter = TRUE, norm = "cpm", transform = "log2")
## Removing 0 low-count genes (574 remaining).
## Did not recognize the normalization, leaving the table alone.
##   Recognized normalizations include: 'qsmooth', 'sf', 'sf2', 'vsd', 'quant',
##   'tmm', 'qsmooth_median', 'upperquartile', and 'rle.'
## transform_counts: Found 89608 values equal to 0, adding 1 to the matrix.
plot_corheat(kraken_viral_norm)
## A heatmap of pairwise sample correlations ranging from: 
## 0.14944097277619 to 0.973957039533747.

plot_disheat(kraken_viral_norm)
## A heatmap of pairwise sample distances ranging from: 
## 5.77516038127018 to 40.2472163754132.

plot_pca(kraken_viral_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by nasal swab, Nasal Swab, par, parasite, PBMCs, skin biopsy non-lesion, skin biopsy scar, WBCs
## Shapes are defined by negative, positive, unknown.

nasal_kraken_viral <- subset_se(hs_kraken_viral, subset = "condition=='nasal swab'")
nasal_norm <- normalize(nasal_kraken_viral, filter = TRUE, norm = "cpm", transform = "log2")
## Removing 0 low-count genes (574 remaining).
## Did not recognize the normalization, leaving the table alone.
##   Recognized normalizations include: 'qsmooth', 'sf', 'sf2', 'vsd', 'quant',
##   'tmm', 'qsmooth_median', 'upperquartile', and 'rle.'
## transform_counts: Found 10544 values equal to 0, adding 1 to the matrix.
plot_corheat(nasal_norm)
## A heatmap of pairwise sample correlations ranging from: 
## 0.767642773612499 to 0.959202277096667.

hs_kraken_bacteria <- create_se(pre_meta[["new_meta"]], file_column = "kraken_matrix_bacterial",
                                handle_na = "zero")
## Reading the sample metadata.
## Checking the state of the condition column.
## Checking the state of the batch column.
## Checking the condition factor.
## The sample definitions comprises: 206 rows(samples) and 200 columns(metadata fields).
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0002/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0009/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0010/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0011/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0018/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0019/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0020/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0012/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0013/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0014/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0021/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0022/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0023/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0015/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0016/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0017/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0024/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0025/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0026/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0038/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0006/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0007/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0008/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0005/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0004/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0015/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0016/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0017/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0018/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0019/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0020/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0021/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0022/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0023/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0001/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0002/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0003/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0004/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0005/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0006/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0007/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0008/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0009/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0010/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0011/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0012/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0013/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0014/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0003/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0027/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0028/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0029/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0030/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0031/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0032/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0035/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0033/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0034/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0036/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0037/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0001/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0002/outputs/03kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0003/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0004/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0005/outputs/03kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0006/outputs/03kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0007/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0009/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0010/outputs/03kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0011/outputs/03kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0012/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0008/outputs/03kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0015/outputs/02kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0017/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0018/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0019/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0020/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0021/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0022/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0023/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0024/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0025/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0026/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRSL0027/outputs/06kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0039/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0040/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0041/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0042/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0043/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0044/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0045/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0046/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0047/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0048/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0049/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0050/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0051/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0052/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0053/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0054/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0055/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0056/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0057/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0058/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0059/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0060/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0061/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0062/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0063/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0064/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0065/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0066/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0067/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0068/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0069/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0070/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0071/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0072/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0073/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0074/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0075/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0076/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0077/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0078/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0079/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0080/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0081/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0082/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0083/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0084/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0085/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0086/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0087/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0088/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0089/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0090/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0091/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0092/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0093/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0094/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0095/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0096/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0097/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0098/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0099/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0100/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0101/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0102/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0103/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0104/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0106/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0116/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0113/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0112/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0024/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0025/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0026/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0027/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0028/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0108/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0115/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0114/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0110/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0107/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0109/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0105/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0111/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0117/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0118/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0123/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0124/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0031/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0032/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0033/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0034/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0035/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0036/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0037/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0038/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0039/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0040/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRCS0044/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0125/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0126/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0127/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0128/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0129/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0130/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0131/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0132/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in first_rownames != current_rownames: longer object length is not a multiple of shorter object length
## Warning in read_counts(ids, files, countdir = countdir, file_type = file_type, : The file:
## /mnt/iscsi/scratch/atb/rnaseq/lpanamensis_persistence_2023/preprocessing/PRHU0119/outputs/11kraken_bacteria/kraken_report_matrix.tsv has
## mismatched rownames.
## Warning in create_se(pre_meta[["new_meta"]], file_column = "kraken_matrix_bacterial", : Some samples were removed when cross referencing the
## samples against the count data.
## Warning in create_se(pre_meta[["new_meta"]], file_column = "kraken_matrix_bacterial", : There are some NAs in this data, the 'handle_nas'
## parameter may be required.
## Matched 1767 annotations and counts.
## Saving the summarized experiment to 'se.rda'.
## The final summarized experiment has 1767 rows and 200 columns.
hs_kraken_bacteria <- set_conditions(hs_kraken_bacteria, fact = "sample_type") %>%
  set_batches("detectionparasiteby7sl")
## The numbers of samples by condition are:
## 
##            lesion swab            macrophages             nasal swab             Nasal Swab                    par               parasite 
##                      5                     13                     21                      5                     11                     30 
##                  PBMCs skin biopsy non-lesion       skin biopsy scar                   WBCs 
##                     29                     27                     22                     29
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
## negative positive  unknown 
##      111       20       61
kraken_bacteria_norm <- normalize(hs_kraken_bacteria, filter = TRUE,
                                  norm = "cpm", transform = "log2")
## Removing 0 low-count genes (1767 remaining).
## Did not recognize the normalization, leaving the table alone.
##   Recognized normalizations include: 'qsmooth', 'sf', 'sf2', 'vsd', 'quant',
##   'tmm', 'qsmooth_median', 'upperquartile', and 'rle.'
## transform_counts: Found 177516 values equal to 0, adding 1 to the matrix.
plot_corheat(kraken_bacteria_norm)
## A heatmap of pairwise sample correlations ranging from: 
## 0.349710698232674 to 0.964450742643494.

plot_disheat(kraken_bacteria_norm)
## A heatmap of pairwise sample distances ranging from: 
## 32.6551513666332 to 162.969109084411.

plot_pca(kraken_bacteria_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by lesion swab, macrophages, nasal swab, Nasal Swab, par, parasite, PBMCs, skin biopsy non-lesion, skin biopsy scar, WBCs
## Shapes are defined by negative, positive, unknown.

16 Nasal as a proxy for everything else

In the beginning of this document, I created a peculiar factor out of the nasal sample 7SL state and applied its result to every other sample for each person; thus a person who was positive for the nasal sample was deemed positive for everything. Let us see what that looks like…

nasal_7sl_salmon_se <- set_conditions(hs_salmon, fact = "nasal_7sl_status")
## The numbers of samples by condition are:
## 
## negative positive 
##       84       19
## Setting colors with no pre-defined colors, using the Dark2 palette.
nasal_7sl_hisat_se <- set_conditions(hs_hisat, fact = "nasal_7sl_status")
## The numbers of samples by condition are:
## 
## negative positive 
##      103       29
## Setting colors with no pre-defined colors, using the Dark2 palette.
nasal_7sl_salmon_se_nb <- normalize(nasal_7sl_salmon_se, transform = "log2", convert = "cpm",
                                    filter = TRUE, batch = "svaseq")
## Removing 3015 low-count genes (7870 remaining).
## transform_counts: Found 161726 values less than 0.
## transform_counts: Found 161726 values equal to 0, adding 1 to the matrix.
plot_pca(nasal_7sl_salmon_se_nb)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA, RZ.

nasal_7sl_hisat_se_nb <- normalize(nasal_7sl_hisat_se, transform = "log2", convert = "cpm",
                                   filter = TRUE, batch = "svaseq")
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 20773 values less than 0.
## transform_counts: Found 20773 values equal to 0, adding 1 to the matrix.
plot_pca(nasal_7sl_hisat_se_nb)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA, RZ.

nasal_7sl_salmon_de <- all_pairwise(nasal_7sl_salmon_se, filter = TRUE, force = TRUE,
                             model_svs = "svaseq", model_fstring = "~ 0 + condition")
## negative positive 
##       84       19
## Removing 3015 low-count genes (7870 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 519317 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative positive 
##       84       19
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative positive 
##       84       19
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative positive 
##       84       19
nasal_7sl_salmon_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 pstv_vs_ng
## basic_vs_deseq   0.2155639
## basic_vs_dream   0.5394501
## basic_vs_ebseq   0.4294889
## basic_vs_edger   0.4129502
## basic_vs_limma   0.4958869
## basic_vs_noiseq  0.5870426
## deseq_vs_dream   0.3296758
## deseq_vs_ebseq   0.6054542
## deseq_vs_edger   0.5827008
## deseq_vs_limma   0.2599123
## deseq_vs_noiseq  0.4783114
## dream_vs_ebseq   0.4035646
## dream_vs_edger   0.6802855
## dream_vs_limma   0.9071873
## dream_vs_noiseq  0.5494830
## ebseq_vs_edger   0.6304198
## ebseq_vs_limma   0.3208948
## ebseq_vs_noiseq  0.7107129
## edger_vs_limma   0.5845931
## edger_vs_noiseq  0.6616207
## limma_vs_noiseq  0.4870543
nasal_7sl_hisat_de <- all_pairwise(nasal_7sl_hisat_se, filter = TRUE,
                                   model_svs = "svaseq", model_fstring = "~ 0 + condition")
## negative positive 
##      103       29
## Removing 5557 low-count genes (16014 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 408837 entries to zero.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## conditions
## negative positive 
##      103       29
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative positive 
##      103       29
## conditions
## negative positive 
##      103       29
nasal_7sl_hisat_de
## A pairwise differential expression with results from: basic, deseq, ebseq, edger, limma, noiseq.
## This used a surrogate/batch estimate from: svaseq.
## The primary analysis performed 1 comparisons.
## The logFC agreement among the methods follows:
##                 pstv_vs_ng
## basic_vs_deseq   0.4026190
## basic_vs_dream   0.5423231
## basic_vs_ebseq   0.7400646
## basic_vs_edger   0.5238615
## basic_vs_limma   0.5712230
## basic_vs_noiseq  0.4952898
## deseq_vs_dream   0.5635112
## deseq_vs_ebseq   0.5971996
## deseq_vs_edger   0.8020767
## deseq_vs_limma   0.5464769
## deseq_vs_noiseq  0.5474146
## dream_vs_ebseq   0.6699376
## dream_vs_edger   0.7638931
## dream_vs_limma   0.9711045
## dream_vs_noiseq  0.7290749
## ebseq_vs_edger   0.7038600
## ebseq_vs_limma   0.6672232
## ebseq_vs_noiseq  0.7781966
## edger_vs_limma   0.7368432
## edger_vs_noiseq  0.7338731
## limma_vs_noiseq  0.7180644
nasal_7sl_salmon_table <- combine_de_tables(nasal_7sl_salmon_de, excel = "excel/nasal_7sl_proxy_table.xlsx")
## Deleting the file excel/nasal_7sl_proxy_table.xlsx before writing the tables.
## Looking for subscript invalid names, end of extract_keepers.
nasal_7sl_salmon_table
## A set of combined differential expression results.
##                  table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_vs_negative          20           159          27            35          31            12
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

nasal_7sl_hisat_table <- combine_de_tables(nasal_7sl_hisat_de, excel = "excel/nasal_7sl_hisat_proxy_table.xlsx")
## Looking for subscript invalid names, end of extract_keepers.
nasal_7sl_hisat_table
## A set of combined differential expression results.
##                  table deseq_sigup deseq_sigdown edger_sigup edger_sigdown limma_sigup limma_sigdown
## 1 positive_vs_negative          16            12          29            10          13             3
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## Plot describing unique/shared genes in a differential expression table.

Oh, Maria Adelaida was actually looking only for the PBMC samples.

pbmc_nasal_7sl_se <- subset_se(hs_salmon, subset = "condition=='pbmcs'") %>%
  set_conditions(fact = "nasal_7sl_status")
## The numbers of samples by condition are:
## 
## negative positive 
##       21        4
## Setting colors with no pre-defined colors, using the Dark2 palette.
pbmc_nasal_7sl_hisat_se <- subset_se(hs_hisat, subset = "condition=='pbmcs'") %>%
  set_conditions(fact = "nasal_7sl_status")
## The numbers of samples by condition are:
## 
## negative positive 
##       25        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
pbmc_nasal_hisat_norm <- normalize(pbmc_nasal_7sl_hisat_se, transform = "log2", convert = "cpm",
                                   norm = "quant", filter = TRUE)
## Removing 9085 low-count genes (12486 remaining).
## transform_counts: Found 29 values equal to 0, adding 1 to the matrix.
plot_pca(pbmc_nasal_hisat_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA.

pbmc_nasal_hisat_nb <- normalize(pbmc_nasal_7sl_hisat_se, transform = "log2", convert = "cpm",
                                 batch = "svaseq", filter = "simple")
## Removing 3837 low-count genes (17734 remaining).
## transform_counts: Found 27306 values less than 0.
## transform_counts: Found 27306 values equal to 0, adding 1 to the matrix.
plot_pca(pbmc_nasal_hisat_nb)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA.

pbmc_nasal_7sl_de <- all_pairwise(pbmc_nasal_7sl_se, filter = "simple", force = TRUE,
                                  model_svs = "svaseq", model_fstring = "~ 0 + condition")
## negative positive 
##       21        4
## Removing 4033 low-count genes (6852 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 93084 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## -- note: fitType='parametric', but the dispersion trend was not well captured by the
##    function: y = a/x + b, and a local regression fit was automatically substituted.
##    specify fitType='local' or 'mean' to avoid this message next time.
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative positive 
##       21        4
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative positive 
##       21        4
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative positive 
##       21        4
pbmc_nasal_7sl_table <- combine_de_tables(pbmc_nasal_7sl_de, excel = "excel/pbmc_nasal_proxy.xlsx")
## Deleting the file excel/pbmc_nasal_proxy.xlsx before writing the tables.
## Looking for subscript invalid names, end of extract_keepers.

17 TODO 202512

Repeat this nasal proxy test using each of the other cell types.

The factors of likely interest are: “wbcs” “nasal swab” ideally both “skin biopsy healthy” and “skin biopsy scar” but perhaps only “skin biopsy”.

wbc_nasal_7sl_se <- subset_se(hs_salmon, subset = "condition=='wbcs'") %>%
  set_conditions(fact = "nasal_7sl_status")
## The numbers of samples by condition are:
## 
## negative positive 
##       19        4
## Setting colors with no pre-defined colors, using the Dark2 palette.
wbc_nasal_7sl_hisat_se <- subset_se(hs_hisat, subset = "condition=='wbcs'") %>%
  set_conditions(fact = "nasal_7sl_status")
## The numbers of samples by condition are:
## 
## negative positive 
##       24        5
## Setting colors with no pre-defined colors, using the Dark2 palette.
wbc_nasal_hisat_norm <- normalize(wbc_nasal_7sl_hisat_se, transform = "log2", convert = "cpm",
                                  filter = "simple", norm = "quant")
## Removing 4025 low-count genes (17546 remaining).
## transform_counts: Found 71429 values equal to 0, adding 1 to the matrix.
plot_pca(wbc_nasal_hisat_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA.

wbc_nasal_hisat_nb <- normalize(wbc_nasal_7sl_hisat_se, transform = "log2", convert = "cpm",
                                filter = "simple", batch = "svaseq")
## Removing 4025 low-count genes (17546 remaining).
## transform_counts: Found 27379 values less than 0.
## transform_counts: Found 27379 values equal to 0, adding 1 to the matrix.
plot_pca(wbc_nasal_hisat_nb)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by negative, positive
## Shapes are defined by mRNA.

wbc_nasal_7sl_de <- all_pairwise(wbc_nasal_7sl_se, filter = "simple", force = TRUE,
                                 model_svs = "svaseq", model_fstring = "~ 0 + condition")
## negative positive 
##       19        4
## Removing 4252 low-count genes (6633 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 82619 entries to zero.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## -- note: fitType='parametric', but the dispersion trend was not well captured by the
##    function: y = a/x + b, and a local regression fit was automatically substituted.
##    specify fitType='local' or 'mean' to avoid this message next time.
## final dispersion estimates
## This contrast put the denominator first.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative positive 
##       19        4
## calcNormFactors has been renamed to normLibSizes
## conditions
## negative positive 
##       19        4
## Warning in choose_binom_dataset(input, force = force): This data was inappropriately forced into integers.
## conditions
## negative positive 
##       19        4
wbc_nasal_7sl_table <- combine_de_tables(wbc_nasal_7sl_de, excel = "excel/wbc_nasal_proxy.xlsx")
## Deleting the file excel/wbc_nasal_proxy.xlsx before writing the tables.
## Looking for subscript invalid names, end of extract_keepers.

18 Upload count tables for Mariana

ready <- tar_meta_column(hs_hisat, column = "hisat_count_table_hg38_115")
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0001/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0002/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0009/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0010/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0011/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0018/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0019/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0020/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0012/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0013/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0014/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0021/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0022/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0023/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0015/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0016/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0017/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0024/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0025/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0026/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0038/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0006/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0007/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0008/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0005/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0004/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0003/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0027/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0028/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0029/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0030/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0031/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0032/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0035/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0033/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0034/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0036/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0037/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0039/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0040/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0041/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0042/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0043/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0044/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0045/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0046/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0047/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0048/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0049/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0050/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0051/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0052/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0053/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0054/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0055/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0056/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0057/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0058/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0059/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0060/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0061/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0062/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0063/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0064/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0065/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0066/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0067/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0068/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0069/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0070/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0071/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0072/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0073/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0074/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0075/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0076/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0077/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0078/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0079/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0080/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0081/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0082/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0083/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0084/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0085/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0086/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0087/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0088/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0089/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0090/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0091/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0092/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0093/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0094/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0095/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0096/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0097/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0098/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0099/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0100/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0101/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0102/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning in utils::tar(output, files = include_list, compression = compression): storing paths of more than 100 bytes is not portable:
##   'preprocessing/PRHU0103/outputs/20250918hisat_hg38_115/hg38_115_genome-paired_s2_gene_ID_fcounts.csv.xz'
## Warning: invalid uid value replaced by that for user 'nobody'
ready <- tar_meta_column(hs_hisat, column = "salmon_count_table_hg38_115")
## Warning: invalid uid value replaced by that for user 'nobody'

19 Explicit comparison of library types

libtype_se <- set_conditions(hs_hisat, fact = "library_type") %>%
  set_batches(fact = "sample_type")
## The numbers of samples by condition are:
## 
## mRNA   RZ 
##  120   12
## Setting colors with no pre-defined colors, using the Dark2 palette.
## The number of samples by batch are:
## 
##            nasalswab                pbmcs skinbiopsynon-lesion       skinbiopsyscar                 wbcs 
##                   25                   30                   27                   21                   29
libtype_norm <- normalize(libtype_se, transform = "log2", convert = "cpm", norm = "quant", filter = TRUE)
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 21908 values equal to 0, adding 1 to the matrix.
pp(file = "images/libtype_norm_pca.png", image = plot_pca(libtype_norm))
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure
## Warning in MASS::cov.trob(data[, vars], wt = weight * nrow(data)): Probable convergence failure

libtype_nb <- normalize(libtype_se, transform = "log2", convert = "cpm", batch = "svaseq", filter = TRUE)
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 24218 values less than 0.
## transform_counts: Found 24218 values equal to 0, adding 1 to the matrix.
pp(file = "images/libtype_nb_pca.png", image = plot_pca(libtype_nb))

libtype_de <- all_pairwise(libtype_se, filter = TRUE, model_svs = "svaseq",
                           model_fstring = "~ 0 + condition")
## mRNA   RZ 
##  120   12
## Removing 5557 low-count genes (16014 remaining).
## Basic step 0/3: Normalizing data.
## Basic step 0/3: Converting data.
## I think this is failing? SummarizedExperiment
## Basic step 0/3: Transforming data.
## Setting 408837 entries to zero.
## This received a matrix of SVs.
## converting counts to integer mode
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## This contrast put the denominator first.
## conditions
## mRNA   RZ 
##  120   12
## calcNormFactors has been renamed to normLibSizes
## conditions
## mRNA   RZ 
##  120   12
## conditions
## mRNA   RZ 
##  120   12

20 202610: Clinical Presentation: Healthy vs not

As of 202610, we have 20 samples which were never infected and 113 which have visited the clinic and are currently deemed healthy. These span all the celltypes. Let us take a moment and look at them.

presentation_se <- set_conditions(hs_hisat, fact = "clinical_presentation")
## The numbers of samples by condition are:
## 
## h-cl   hd 
##  113   19
## Setting colors with no pre-defined colors, using the Dark2 palette.
presentation_norm <- normalize(presentation_se, filter = TRUE, convert = "cpm",
                               norm = "quant", transform = "log2")
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 21908 values equal to 0, adding 1 to the matrix.
plot_pca(presentation_norm)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by h-cl, hd
## Shapes are defined by mRNA, RZ.

presentation_nb <- normalize(presentation_se, filter = TRUE, convert = "cpm",
                              batch = "svaseq", transform = "log2")
## Removing 5557 low-count genes (16014 remaining).
## transform_counts: Found 20200 values less than 0.
## transform_counts: Found 20200 values equal to 0, adding 1 to the matrix.
plot_pca(presentation_nb)
## The result of performing a fast_svd dimension reduction.
## The x-axis is PC1 and the y-axis is PC2
## Colors are defined by h-cl, hd
## Shapes are defined by mRNA, RZ.

LS0tCnRpdGxlOiAiRXhhbWluaW5nIHRoZSBodW1hbiBwZXJzaXN0ZW5jZSBzYW1wbGVzIgphdXRob3I6ICJhdGIgYWJlbGV3QGdtYWlsLmNvbSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgZmlnX2NhcHRpb246IHRydWUKICAgIGZpZ19oZWlnaHQ6IDcKICAgIGZpZ193aWR0aDogNwogICAgaGlnaGxpZ2h0OiB6ZW5idXJuCiAgICBrZWVwX21kOiBmYWxzZQogICAgbW9kZTogc2VsZmNvbnRhaW5lZAogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQogICAgdGhlbWU6IHJlYWRhYmxlCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiBmYWxzZQogICAgICBzbW9vdGhfc2Nyb2xsOiBmYWxzZQotLS0KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHksIHRkIHsKICBmb250LXNpemU6IDE2cHg7Cn0KY29kZS5yewogIGZvbnQtc2l6ZTogMTZweDsKfQpwcmUgewogIGZvbnQtc2l6ZTogMTZweAp9CmJvZHkgLm1haW4tY29udGFpbmVyIHsKICBtYXgtd2lkdGg6IDE2MDBweDsKfQo8L3N0eWxlPgoKYGBge3Igb3B0aW9ucywgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShocGdsdG9vbHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShyZXRpY3VsYXRlKQp0dCA8LSB0cnkoZGV2dG9vbHM6OmxvYWRfYWxsKCJ+L2hwZ2x0b29scyIpKQprbml0cjo6b3B0c19rbml0JHNldCgKICBwcm9ncmVzcyA9IFRSVUUsIHZlcmJvc2UgPSBUUlVFLCB3aWR0aCA9IDkwLCBlY2hvID0gVFJVRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGVycm9yID0gVFJVRSwgZmlnLndpZHRoID0gOCwgZmlnLmhlaWdodCA9IDgsIGZpZy5yZXRpbmEgPSAyLAogIG91dC53aWR0aCA9ICIxMDAlIiwgZGV2ID0gInBuZyIsCiAgZGV2LmFyZ3MgPSBsaXN0KHBuZyA9IGxpc3QodHlwZSA9ICJjYWlyby1wbmciKSkpCm9sZF9vcHRpb25zIDwtIG9wdGlvbnMoc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFLCBrbml0ci5kdXBsaWNhdGUubGFiZWwgPSAiYWxsb3ciKQpnZ3Bsb3QyOjp0aGVtZV9zZXQoZ2dwbG90Mjo6dGhlbWVfYncoYmFzZV9zaXplID0gMTIpKQpwcmV2aW91c19maWxlIDwtICIiCnZlciA8LSBmb3JtYXQoU3lzLkRhdGUoKSwgIiVZJW0lZCIpCgojI3RtcCA8LSBzbShsb2FkbWUoZmlsZW5hbWU9cGFzdGUwKGdzdWIocGF0dGVybj0iXFwuUm1kIiwgcmVwbGFjZT0iIiwgeD1wcmV2aW91c19maWxlKSwgIi12IiwgdmVyLCAiLnJkYS54eiIpKSkKcm1kX2ZpbGUgPC0gImh1bWFuX3NhbXBsZXNfMjAyNjEwLlJtZCIKYGBgCgojIEludHJvZHVjdGlvbgoKSSB3YW50IHRvIHVzZSB0aGlzIGRvY3VtZW50IHRvIGV4YW1pbmUgb3VyIGZpcnN0IHJvdW5kIG9mIHBlcnNpc3RlbmNlCnNhbXBsZXMuICBJIGNoZWNrZWQgbXkgZW1haWwgZnJvbSBOYWppYiBhbmQgZGlkIG5vdCBmaW5kIGEgc2FtcGxlCnNoZWV0IGJ1dCBkaWQgZmluZCBhbiBleHBsYW5hdGlvbiBvZiB0aGUgdGhyZWUgc2FtcGxlIHR5cGVzIHdlIGV4cGVjdC4KCkluIHByZXBhcmF0aW9uIGZvciB0aGlzLCBJIGRvd25sb2FkZWQgYSBuZXcgaGczOCBnZW5vbWUuICBTaW5jZSB0aGUKcGFuYW1lbnNpcyBhc2VtYmx5IGhhcyBub3Qgc2lnbmlmaWNhbnRseSBjaGFuZ2VkIChleGNlcHRpbmcgdGhlCnB1dGF0aXZlIGxvbmcgcmVhZCBnZW5vbWUgd2hpY2ggSSBoYXZlIG5vdCB5ZXQgc2VlbiksIEkgYW0ganVzdCB1c2luZwp0aGUgc2FtZSBvbmUuCgojIExvYWRpbmcgYW5ub3RhdGlvbgoKVGhlIGhnMzggZ2Vub21lIEkgZ290IGlzIGZyb20gMjAyNDA1LiAgVGhlIHZhcmlvdXMgZW5zZW1ibCBhcmNoaXZlIHNlcnZlcnMgaGF2ZSBiZWVuIGhhdmluZyB0cm91YmxlcwpyZWNlbnRseSwgc28gSSBtYXkgbmVlZCB0byBjaGVycnktcGljayBvbmUgd2hpY2ggaXMgd29ya2luZy4gIEkgd2lsbCB0aGVyZWZvcmUgYWxzbyBsb2FkIGFubm90YXRpb25zCmZyb20gb3JnLkhlLmVnLmRiIGluIGNhc2UgZW5zZW1ibCBpcyBub3QgcmVzcG9uZGluZy4KCmBgYHtyfQojIyBPaywgc28gdXNlYXN0LmVuc2VtYmwgaXMgZmFpbGluZyB0b2RheSwgbGV0IHVzIHVzZSB0aGUgamFuMjAyNCBhcmNoaXZlPwojaHNfYW5ub3QgPC0gbG9hZF9iaW9tYXJ0X2Fubm90YXRpb25zKGFyY2hpdmUgPSBGQUxTRSwgc3BlY2llcyA9ICJoc2FwaWVucyIpCiMjIFNlZW1zIGxpa2UgdGhlIDIwMjQwMSBhcmNoaXZlIGlzIGEgZ29vZCBjaG9pY2UsIGl0IGlzIGV4cGxpY2l0bHkgdGhlIGhnMzhfMTExIHJlbGVhc2UuCiMjIGFuZCBpdCBpcyB3YWFhYWF5IGZhc3RlciAobGlrZSAxMDB4KSB0aGFuIHVzZWFzdCByaWdodCBub3cuCgojIyBOb3RlLCBJIGFtIGV4cGxpY2l0bHkgbm90IHVzaW5nIHRoZSBhcmNoaXZlIGluIHRoZSBmb2xsb3dpbmcgaW52b2NhdGlvbiBiZWNhdXNlIG5vbmUgb2YgdGhlbSB3ZXJlCiMjIHJlc3BvbmRpbmcsIHNvIHRoYXQgd2FzIGEgd2hvbGUgYmlnIGFubm95aW5nIHRoaW5nLgpoc19hbm5vdCA8LSBsb2FkX2Jpb21hcnRfYW5ub3RhdGlvbnMoYXJjaGl2ZSA9IEZBTFNFLCBzcGVjaWVzID0gImhzYXBpZW5zIikKaHNfb3JnZGIgPC0gbG9hZF9vcmdkYl9hbm5vdGF0aW9ucygib3JnLkhzLmVnLmRiIiwgZmllbGRzID0gYygiU1lNQk9MIiwgIkVOU0VNQkwiLCAiRU5UUkVaSUQiKSlbWyJnZW5lcyJdXQoKcGFuYW1lbnNpc19vcmdkYl9pZHggPC0gZ3JlcChwYXR0ZXJuID0gIl5vcmcuK3BhbmFtZW4uK01IT00uK2RiJCIsIHggPSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkpCnBhbmFtZW5zaXNfb3JnZGIgPC0gdGFpbChyb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSlbcGFuYW1lbnNpc19vcmdkYl9pZHhdLCBuID0gMSkKbHBfYW5ub3QgPC0gbG9hZF9vcmdkYl9hbm5vdGF0aW9ucyhwYW5hbWVuc2lzX29yZ2RiLCBrZXl0eXBlID0gImdpZCIpCgptYWpvcl9kYiA8LSAib3JnLkxtYWpvci5GcmllZGxpbi52NjguZWcuZGIiCmxpYnJhcnkobWFqb3JfZGIsIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKYWxsX2NvbHVtbnMgPC0ga2V5dHlwZXMob3JnLkxtYWpvci5GcmllZGxpbi52NjguZWcuZGIpCndhbnRlZF9pZHggPC0gZ3JlcGwocGF0dGVybiA9ICJeQU5OT1QiLCB4ID0gYWxsX2NvbHVtbnMpCndhbnRlZF9jb2x1bW5zIDwtIGFsbF9jb2x1bW5zW3dhbnRlZF9pZHhdCmdlbmVfaWRzIDwtIGtleXMob3JnLkxtYWpvci5GcmllZGxpbi52NjguZWcuZGIpCm1ham9yX2Fubm90YXRpb25zIDwtIGxvYWRfb3JnZGJfYW5ub3RhdGlvbnMobWFqb3JfZGIsIGtleXR5cGUgPSAiZ2lkIiwgZmllbGRzID0gd2FudGVkX2NvbHVtbnMpCmBgYAoKVGhpcyBpcyBhIGxpdHRsZSBzaWxseSwgYnV0IEkgYW0gZ29pbmcgdG8gcmVsb2FkIHRoZSBhbm5vdGF0aW9ucyB1c2luZwp0aGUgcHJldmlvdXMgaW52b2NhdGlvbiB0byBleHRyYWN0IHRoZSBhbm5vdGF0aW9uIHRhYmxlIHdpdGhvdXQgaGF2aW5nCnRvIHRoaW5rLiAgVGhlIHByZXZpb3VzIGJsb2NrIGxvYWRzIHRoZSBvcmdkYiBmb3IgbWUsIHNvIEkgY2FuIGp1c3QKdXNlIHRoYXQgdG8gZ2V0IHRoZSBmdW4gYW5ub3RhdGlvbnMuCgpgYGB7cn0KbHBfb3JnX2Fubm90IDwtIGxvYWRfb3JnZGJfYW5ub3RhdGlvbnMocGFuYW1lbnNpc19vcmdkYiwga2V5dHlwZSA9ICJnaWQiLCBmaWVsZHMgPSAiXmFubm90IikKYGBgCgojIENvbG9ycwoKSSB3YW50IGEgcmVtaW5kZXIgdG8gc2V0IHRoZSBjb2xvcnMgZm9yIHRoZSB2YXJpb3VzIHN0YXRlcyBpbiB0aGUgZGF0YS4gIEEgZnVuIHRoaW5nIEkgZGlkIHJlY2VudGx5OgpJIGNhbiBhdXRvbWFnaWNhbGx5IHB1bGwgY29sb3JzIGZyb20gdGhlIGJhY2tncm91bmRzIG9mIGNlbGxzIGluIHRoZSBzYW1wbGUgc2hlZXQhICBOb3QgcmVhbGx5CnJlbGV2YW50IHJpZ2h0IG5vdywgYnV0IGZ1bi4KCmBgYHtyfQpjaG9zZW5fY29sb3JzIDwtIGxpc3QoCiAgInNhbXBsZV90eXBlIiA9IGxpc3QoKSwKICAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIgPSBsaXN0KCksCiAgImxpYnJhcnlfdHlwZSIgPSBsaXN0KCksCiAgIm5hc2FsXzdzbF9zdGF0dXMiID0gbGlzdCgpLAogICJhbnlfN3NsX3N0YXR1cyIgPSBsaXN0KCkKICAicGFydGljaXBhbnRfY29kZSIgPSBsaXN0KCksCiAgImRldGVjdGlvbl90eXBlIiA9IGxpc3QoKSwKICAiaHMiID0gbGlzdCgpLAogICJjbGluaWNhbF9wcmVzZW50YXRpb24iID0gbGlzdCgpLAogICJzYW1wbGVfN3NsIiA9IGxpc3QoKSkKYGBgCgojIENvbGxlY3QgcHJlcHJvY2Vzc2VkIG1ldGFkYXRhCgpVc2UgbXkgbmV3IHNhbXBsZSBzaGVldCBoZXJlLiAgSSBnb3QgdGhlIGlkZWEgcmVjZW50bHkgdG8gbWFrZSBhIGNvcHkgb2YgYW55IGZyZXNobHkgZG93bmxvYWRlZApzYW1wbGUgc2hlZXQgYW5kIGdpdmUgaXQgdGhlIHN1ZmZpeCAnX3JlYWR3cml0ZScgc28gdGhhdCBJIHJlbWVtYmVyIHRvIG5ldmVyIG9wZW4gdGhlIHNhbXBsZXNoZWV0IGJ5Cml0c2VsZiBpbiBydy4KCmBgYHtyfQpjdXJyZW50X3NhbXBsZXNoZWV0IDwtICJzYW1wbGVfc2hlZXRzL1BlcnNpc3RlbmNlX3YyLjFfMjAyNjEwMDdfcmVhZHdyaXRlLnhsc3giCmZpcnN0X3NwZWMgPC0gbWFrZV9ybmFzZXFfc3BlYygpCmlucHV0IDwtIHJlYWRfbWV0YWRhdGEoY3VycmVudF9zYW1wbGVzaGVldCkKY29sbmFtZXMoaW5wdXQpCnN1bW1hcnkoYXMuZmFjdG9yKGlucHV0W1siZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCJdXSkpCgpwcmVfbWV0YSA8LSBnYXRoZXJfcHJlcHJvY2Vzc2luZ19tZXRhZGF0YSgKICBzdGFydGluZ19tZXRhZGF0YSA9IGN1cnJlbnRfc2FtcGxlc2hlZXQsIGlkX2NvbHVtbiA9ICJocGdsX2lkZW50aWZpZXIiLAogIHNwZWNpZmljYXRpb24gPSBmaXJzdF9zcGVjLCBuZXdfbWV0YWRhdGEgPSAicGVyc2lzdGVuY2VfaHNfbW9kaWZpZWQueGxzeCIsCiAgYmFzZWRpciA9ICJwcmVwcm9jZXNzaW5nIiwgc3BlY2llcyA9IGMoImhnMzhfMTE1IiwgImxwYW5hbWVuc2lzX21ob21jb2xfdjY4IikpCnN1bW1hcnkoYXMuZmFjdG9yKHByZV9tZXRhW1sibmV3X21ldGEiXV1bWyJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIl1dKSkKIyMgSSB0aGluayBJIHdpbGwgZm9yY2UgZXZlcnl0aGluZyB0byBsb3dlcmNhc2Ugbm8gc3BhY2VzCm1vZGlmaWVkX21ldGEgPC0gcHJlX21ldGFbWyJuZXdfbWV0YSJdXQoKIyMgQWRkZWQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIGdhdGhlcl9wcmVwcm9jZXNzaW5nX21ldGFkYXRhKCkKcm93bmFtZXMobW9kaWZpZWRfbWV0YSkgPC0gbWFrZS5uYW1lcyhtb2RpZmllZF9tZXRhW1siaHBnbF9pZGVudGlmaWVyIl1dLCB1bmlxdWUgPSBUUlVFKQoKIyMgRklYTUU6IDIwMjUxMTogSSBicm9rZSBzb21ldGhpbmcgaW4gc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgYW5kIGl0IGlzIHB1bGxpbmcKIyMgdGhlIHdyb25nIGluZm9ybWF0aW9uIGZvciBudW1iZXIgb2Ygb2JzZXJ2ZWQgZ2VuZXMuCmhlYWQobW9kaWZpZWRfbWV0YSkKaGVhZChtb2RpZmllZF9tZXRhW1sic2FsbW9uX29ic2VydmVkX2dlbmVzX2hnMzhfMTE1Il1dKQptb2RpZmllZF9tZXRhW1siZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCJdXSA8LSBzYW5pdGl6ZV9tZXRhZGF0YSgKICBtb2RpZmllZF9tZXRhW1siZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCJdXSwgbG93ZXIgPSBUUlVFLCBzcGFjZXMgPSBUUlVFLCBwdW5jdCA9IEZBTFNFKQpzdW1tYXJ5KG1vZGlmaWVkX21ldGFbWyJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIl1dKQpgYGAKCkkgd291bGQgbGlrZSB0byBoYXZlIGEgY29tYmluYXRpb24gb2YgY2xpbmljYWwgcHJlc2VudGF0aW9uIGFuZCBzYW1wbGV0eXBlIGFzIHdlbGw6CgpgYGB7cn0KbW9kaWZpZWRfbWV0YVtbInNhbXBsZV90eXBlIl1dIDwtIHNhbml0aXplX21ldGFkYXRhKAogIG1vZGlmaWVkX21ldGFbWyJzYW1wbGVfdHlwZSJdXSwgbG93ZXIgPSBUUlVFLCBzcGFjZXMgPSBUUlVFLCBwdW5jdCA9IEZBTFNFKQpzdW1tYXJ5KG1vZGlmaWVkX21ldGFbWyJzYW1wbGVfdHlwZSJdXSkKbW9kaWZpZWRfbWV0YVtbImNsaW5pY2FsX3ByZXNlbnRhdGlvbiJdXSA8LSBzYW5pdGl6ZV9tZXRhZGF0YSgKICBtb2RpZmllZF9tZXRhW1siY2xpbmljYWxfcHJlc2VudGF0aW9uIl1dLCBsb3dlciA9IFRSVUUsIHNwYWNlcyA9IFRSVUUsIHB1bmN0ID0gRkFMU0UpCnN1bW1hcnkobW9kaWZpZWRfbWV0YVtbImNsaW5pY2FsX3ByZXNlbnRhdGlvbiJdXSkKbW9kaWZpZWRfbWV0YVtbInR5cGVfcHJlc2VudGF0aW9uIl1dIDwtIGFzLmZhY3RvcihwYXN0ZTAoYXMuY2hhcmFjdGVyKG1vZGlmaWVkX21ldGFbWyJzYW1wbGVfdHlwZSJdXSksICJfIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKG1vZGlmaWVkX21ldGFbWyJjbGluaWNhbF9wcmVzZW50YXRpb24iXV0pKSkKc3VtbWFyeShtb2RpZmllZF9tZXRhW1sidHlwZV9wcmVzZW50YXRpb24iXV0pCmBgYAoKQ3JlYXRlIGEgZmFjdG9yIG9mIHRoZSA3U0wgZGV0ZWN0aW9uIG9mIG5hc2FsIHNhbXBsZXMuICBOb3RlLCB3ZSBuZWVkCnRvIHJlY2FzdCB0aGUgTkFzIGFzIHVuZGVmaW5lZC4gIEkgd291bGQgaGF2ZSBzd29ybiB0aGF0IG15IGdhdGhlcgpmdW5jdGlvbiB3b3VsZCBkbyB0aGF0PwoKYGBge3J9Cm1vZGlmaWVkX21ldGFbWyJuYXNhbF83c2xfc3RhdHVzIl1dIDwtIGFzLmNoYXJhY3Rlcihtb2RpZmllZF9tZXRhW1siZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCJdXSkKCm5hc2FsX3NhbXBsZXMgPC0gbW9kaWZpZWRfbWV0YVtbInNhbXBsZV90eXBlIl1dID09ICJuYXNhbHN3YWIiCnN1bW1hcnkobmFzYWxfc2FtcGxlcykKc2xfcG9zaXRpdmUgPC0gbW9kaWZpZWRfbWV0YVtbIm5hc2FsXzdzbF9zdGF0dXMiXV0gPT0gInBvc2l0aXZlIgpzdW1tYXJ5KHNsX3Bvc2l0aXZlKQpuYXNhbF9wb3NpdGl2ZSA8LSBuYXNhbF9zYW1wbGVzICYgc2xfcG9zaXRpdmUKc3VtbWFyeShuYXNhbF9wb3NpdGl2ZSkKbmFzYWxfcG9zaXRpdmVfc2FtcGxlcyA8LSByb3duYW1lcyhtb2RpZmllZF9tZXRhKVtuYXNhbF9wb3NpdGl2ZV0KbmFzYWxfcG9zaXRpdmVfcGVvcGxlIDwtIG1vZGlmaWVkX21ldGFbbmFzYWxfcG9zaXRpdmVfc2FtcGxlcywgInBhcnRpY2lwYW50X2NvZGUiXQpuYXNhbF9wb3NpdGl2ZV9wZW9wbGUKbmFzYWxfcG9zaXRpdmVfcGVvcGxlX3NhbXBsZXMgPC0gbW9kaWZpZWRfbWV0YVtbInBhcnRpY2lwYW50X2NvZGUiXV0gJWluJSBuYXNhbF9wb3NpdGl2ZV9wZW9wbGUKbW9kaWZpZWRfbWV0YVtbIm5hc2FsXzdzbF9zdGF0dXMiXV0gPC0gIm5lZ2F0aXZlIgptb2RpZmllZF9tZXRhW25hc2FsX3Bvc2l0aXZlX3Blb3BsZV9zYW1wbGVzLCAibmFzYWxfN3NsX3N0YXR1cyJdIDwtICJwb3NpdGl2ZSIKbW9kaWZpZWRfbWV0YVtbIm5hc2FsXzdzbF9zdGF0dXMiXV0gPC0gYXMuZmFjdG9yKG1vZGlmaWVkX21ldGFbWyJuYXNhbF83c2xfc3RhdHVzIl1dKQpzdW1tYXJ5KG1vZGlmaWVkX21ldGFbWyJuYXNhbF83c2xfc3RhdHVzIl1dKQpgYGAKClNpbWlsYXJseSBjcmVhdGUgYSBmYWN0b3Igb2YgcGVvcGxlIHdpdGggYW55IDdTTCBwb3NpdGl2ZSBzYW1wbGUuCgpgYGB7cn0KbW9kaWZpZWRfbWV0YVtbImFueV83c2xfc3RhdHVzIl1dIDwtICJuZWdhdGl2ZSIKcG9zaXRpdmVfc2FtcGxlcyA8LSBhcy5jaGFyYWN0ZXIobW9kaWZpZWRfbWV0YVtbImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXV0pID09ICJwb3NpdGl2ZSIKcG9zaXRpdmVfcGVvcGxlIDwtIG1vZGlmaWVkX21ldGFbcG9zaXRpdmVfc2FtcGxlcywgInBhcnRpY2lwYW50X2NvZGUiXQpwb3NpdGl2ZV9wZW9wbGVfaWR4IDwtICFkdXBsaWNhdGVkKHBvc2l0aXZlX3Blb3BsZSkKcG9zaXRpdmVfcGVvcGxlX3NvcnRlZCA8LSBzb3J0KHBvc2l0aXZlX3Blb3BsZVtwb3NpdGl2ZV9wZW9wbGVfaWR4XSkKcGVyc2lzdGVyX3Blb3BsZV9zYW1wbGVzIDwtIG1vZGlmaWVkX21ldGFbWyJwYXJ0aWNpcGFudF9jb2RlIl1dICVpbiUgcG9zaXRpdmVfcGVvcGxlX3NvcnRlZAptb2RpZmllZF9tZXRhW3BlcnNpc3Rlcl9wZW9wbGVfc2FtcGxlcywgImFueV83c2xfc3RhdHVzIl0gPC0gInBvc2l0aXZlIgptb2RpZmllZF9tZXRhW1siYW55XzdzbF9zdGF0dXMiXV0gPC0gYXMuZmFjdG9yKG1vZGlmaWVkX21ldGFbWyJhbnlfN3NsX3N0YXR1cyJdXSkKc3VtbWFyeShtb2RpZmllZF9tZXRhW1siYW55XzdzbF9zdGF0dXMiXV0pCnBvc2l0aXZlX3Blb3BsZV9zb3J0ZWQKYGBgCgojIyBBZGQgY29tYmluYXRpb24gb2YgZGV0ZWN0aW9uIGFuZCBsaWJyYXJ5IHR5cGUKCkFsc28gYWRkIGEgY2F0ZWdvcnkgc2VwYXJhdGluZyBhbGwgc2tpbiBzYW1wbGVzIGZyb20gZXZlcnl0aGluZyBlbHNlLgoKYGBge3J9Cm1vZGlmaWVkX21ldGFbWyJkZXRlY3Rpb25fdHlwZSJdXSA8LSBhcy5mYWN0b3IoCiAgcGFzdGUwKGFzLmNoYXJhY3Rlcihtb2RpZmllZF9tZXRhW1siZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCJdXSksICJfIiwKICAgICAgICAgYXMuY2hhcmFjdGVyKG1vZGlmaWVkX21ldGFbWyJsaWJyYXJ5X3R5cGUiXV0pKSkKc3VtbWFyeShtb2RpZmllZF9tZXRhW1siZGV0ZWN0aW9uX3R5cGUiXV0pCgptb2RpZmllZF9tZXRhW1sic2tpbnAiXV0gPC0gIm5vdF9za2luIgpza2luX2lkeCA8LSBncmVwbCh4ID0gbW9kaWZpZWRfbWV0YVtbInNhbXBsZV90eXBlIl1dLCBwYXR0ZXJuID0gIl5za2luIikKc3VtbWFyeShza2luX2lkeCkKbW9kaWZpZWRfbWV0YVtza2luX2lkeCwgInNraW5wIl0gPC0gInNraW4iCm1vZGlmaWVkX21ldGFbWyJza2lucCJdXSA8LSBhcy5mYWN0b3IobW9kaWZpZWRfbWV0YVtbInNraW5wIl1dKQpzdW1tYXJ5KG1vZGlmaWVkX21ldGFbWyJza2lucCJdXSkKYGBgCgojIFRoZSBwdXJwb3NlIG9mIHRoZSBwb3N0IDIwMjYwOCBzYW1wbGVzCgpJbiB0aGUgbGFzdCByb3VuZCBvZiBzZXF1ZW5jaW5nIG9mIGh1bWFuIHNhbXBsZXMsIHdlIHJlY2VpdmVkIGEgc2VyaWVzIG9mIHB1cmVseSBoZWFsdGh5IHNhbXBsZXM7CnRoZXNlIGFyZSBmcm9tIGluZGl2aWR1YWxzIHdpdGggbm8gaGlzdG9yeSBvZiBMZWlzaG1hbmlhc2lzIGFuZCBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIGNvbXBhcmlzb24KcG9pbnQgYWdhaW5zdCBldmVyeXRoaW5nIGVsc2Ugd2UgYXJlIGxvb2tpbmcgYXQgaW4gdGhpcyBkYXRhc2V0LgoKYGBge3J9Cmh1bWFuX21ldGFfaWR4IDwtIG1vZGlmaWVkX21ldGFbWyJhaW0iXV0gPT0gImFpbTEiCmh1bWFuX21ldGEgPC0gbW9kaWZpZWRfbWV0YVtodW1hbl9tZXRhX2lkeCwgXQp0YWJsZShodW1hbl9tZXRhW1siY2xpbmljYWxfcHJlc2VudGF0aW9uIl1dKQp0YWJsZShodW1hbl9tZXRhW1sidHlwZV9wcmVzZW50YXRpb24iXV0pCmBgYAoKVGh1cywgaW4gdGhlb3J5IHdlIGNhbiBwZXJmb3JtIGEgc2VyaWVzIG9mIGNvbXBhcmlzb25zIGFtb25nIHRoZSAnQ2xpbmljYWwgUHJlc2VudGF0aW9uJyBmYWN0b3IgaW4KdGhlIHNhbXBsZSBkZXNpZ24uICBCeSBpdHNlbGYsIHRoaXMgd291bGQgZ2l2ZSB1cyBhIDIwIHZzLiAxMTMgc2FtcGxlIGNvbXBhcmlzb24gb2YgaGVhbHRoeSBwZW9wbGUKdnMuIHBlb3BsZSB3aG8gY2FtZSB0byB0aGUgY2xpbmljLgoKIyBDb2xsZWN0IGdlbmUgYW5ub3RhdGlvbnMKCkkgc2hvdWxkIGhhdmUgYWxsIG15IGxvYWRfeHl6X2Fubm90YXRpb24gZnVuY3Rpb25zIHJldHVybiBzb21lIG9mIHRoZQpzYW1lIGVsZW1lbnRzIGluIHRoZWlyIHJldGxpc3RzLgoKYGBge3J9CmxwX2dlbmVzIDwtIGxwX2Fubm90W1siZ2VuZXMiXV0KaGdfZ2VuZXMgPC0gaHNfYW5ub3RbWyJnZW5lX2Fubm90YXRpb25zIl1dCmBgYAoKIyBRdWljayBwZWVrIGF0IHRoZSBTTCBzYW1wbGVzLCBoZzM4IHJlbGVhc2UgMTE1CgojIyBHYXRoZXIgdGhlIHRyYW5zY3JpcHQgYW5kIGdlbmUgYW5ub3RhdGlvbnMuCgpgYGB7cn0KaGdfdHggPC0gaHNfYW5ub3RbWyJhbm5vdGF0aW9uIl1dCmhnX21hcCA8LSBoc19hbm5vdFtbImdlbmVfdHhfbWFwIl1dCmxwX2dlbmVzIDwtIGxwX2Fubm90W1siZ2VuZXMiXV0KYGBgCgojIyBGaWd1cmUgb3V0IHdoaWNoIHNhbXBsZXMgZG8gbm90IGhhdmUgN1NMIGNhdGVnb3JpZXMKCmBgYHtyfQp1bmRlZl83c2wgPC0gaXMubmEoaHVtYW5fbWV0YVtbImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXV0pCnN1bW1hcnkodW5kZWZfN3NsKQpzYW1wbGVfN3NsIDwtIHBhc3RlMChodW1hbl9tZXRhW1sic2FtcGxlX3R5cGUiXV0sICJfIiwKICAgICAgICAgICAgICAgICAgICAgaHVtYW5fbWV0YVtbImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXV0pCnNhbXBsZV83c2wgPC0gYXMuZmFjdG9yKGdzdWIoeCA9IHNhbXBsZV83c2wsIHBhdHRlcm4gPSAiW1s6c3BhY2U6XV0iLCByZXBsYWNlbWVudCA9ICJfIikpCnN1bW1hcnkoc2FtcGxlXzdzbCkKaHVtYW5fbWV0YVtbInNhbXBsZV83c2wiXV0gPC0gc2FtcGxlXzdzbApgYGAKCiMjIEhlYWx0aHkgdnMgc2NhciBzYW1wbGVzCgpgYGB7cn0KaGVhbHRoeV92c19zY2FyIDwtIGdzdWIoeCA9IGh1bWFuX21ldGFbWyJzYW1wbGVfdHlwZSJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiA9ICJec2tpbmJpb3BzeSAiLCByZXBsYWNlbWVudCA9ICIiKQpodW1hbl9tZXRhW1siaHMiXV0gPC0gTkEKc2tpbl9zYW1wbGVzIDwtIGdyZXBsKHggPSBodW1hbl9tZXRhW1sic2FtcGxlX3R5cGUiXV0sIHBhdHRlcm4gPSAiXnNraW4iKQpodW1hbl9tZXRhW3NraW5fc2FtcGxlcywgImhzIl0gPC0gImhlYWx0aHkiCnNjYXJfc2FtcGxlcyA8LSBncmVwbCh4ID0gaHVtYW5fbWV0YVtbInNhbXBsZV90eXBlIl1dLCBwYXR0ZXJuID0gInNjYXIiKQpodW1hbl9tZXRhW3NjYXJfc2FtcGxlcywgImhzIl0gPC0gInNjYXIiCmh1bWFuX21ldGFbWyJocyJdXSA8LSBhcy5mYWN0b3IoaHVtYW5fbWV0YVtbImhzIl1dKQpzdW1tYXJ5KGh1bWFuX21ldGFbWyJocyJdXSkKYGBgCgojIyBDbGVhbiB1cCBtaXNzaW5nIDdTTCBkZXRlY3Rpb24gc2FtcGxlcwoKSSB0aGluayB0aGUgbGFzdCBvZiB0aGVzZSBoYXMgYmVlbiBmaXhlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgdXBkYXRlZAp0aGlzIHNoZWV0LgoKYGBge3J9CnVuZGVmXzdzbCA8LSBpcy5uYShjb2xEYXRhKGhzX2hpc2F0KVtbImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXV0pCnN1bW1hcnkodW5kZWZfN3NsKQppZiAoc3VtKHVuZGVmXzdzbCkpIHsKICBjb2xEYXRhKGhzX3NhbG1vbilbdW5kZWZfN3NsLCAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCJdIDwtICJ1bmtub3duIgogIGNvbERhdGEoaHNfaGlzYXQpW3VuZGVmXzdzbCwgImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXSA8LSAidW5rbm93biIKfSBlbHNlIHsKICBtZXNzYWdlKCJUaGVyZSBhcHBlYXIgdG8gYmUgbm8gbWlzc2luZyA3U0wgZW50cmllcy4iKQp9CmBgYAoKIyMgUHJpbnQgY3VycmVudCBzdGF0ZQoKYGBge3J9CnRhYmxlKGh1bWFuX21ldGFbWyJsaWJyYXJ5X3R5cGUiXV0pCnRhYmxlKGh1bWFuX21ldGFbWyJkZXRlY3Rpb25fdHlwZSJdXSkKdGFibGUoaHVtYW5fbWV0YVtbImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXV0pCnRhYmxlKGh1bWFuX21ldGFbWyJjbGluaWNhbF9wcmVzZW50YXRpb24iXV0pCmBgYAoKIyMgQ29tYmluZSA3U0wgc3RhdHVzIGFuZCB0aGUgc2FtcGxlIHR5cGUgaW50byBvbmUgZmFjdG9yCgpgYGB7cn0Kc2FtcGxlXzdzbCA8LSBhcy5mYWN0b3IocGFzdGUwKGh1bWFuX21ldGFbWyJzYW1wbGVfdHlwZSJdXSwgIl8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHVtYW5fbWV0YVtbImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiXV0pKQpzdW1tYXJ5KHNhbXBsZV83c2wpCmBgYAoKIyMgQ3JlYXRlIGluaXRpYWwgaGlzYXQvc2FsbW9uIHRhYmxlcwoKYGBge3J9CmhzX3NhbG1vbiA8LSBjcmVhdGVfc2UoaHVtYW5fbWV0YSwgZ2VuZV9pbmZvID0gaGdfdHgsCiAgICAgICAgICAgICAgICAgICAgICAgdHhfZ2VuZV9tYXAgPSBoZ19tYXAsIGZpbGVfY29sdW1uID0gInNhbG1vbl9jb3VudF90YWJsZV9oZzM4XzExNSIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAic2FtcGxlX3R5cGUiKSAlPiUKICBzZXRfYmF0Y2hlcyhmYWN0ID0gImxpYnJhcnlfdHlwZSIpCgpoc19oaXNhdCA8LSBjcmVhdGVfc2UoaHVtYW5fbWV0YSwgZ2VuZV9pbmZvID0gaGdfZ2VuZXMsCiAgICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbHVtbiA9ICJoaXNhdF9jb3VudF90YWJsZV9oZzM4XzExNSIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAic2FtcGxlX3R5cGUiKSAlPiUKICBzZXRfYmF0Y2hlcyhmYWN0ID0gImxpYnJhcnlfdHlwZSIpCmBgYAoKCiMjIyBXcml0ZSBvdXQgY3BtIHZhbHVlcyBvZiBhbGwgc2FtcGxlcwoKYGBge3J9CmhzX3NhbG1vbl9jcG0gPC0gd3JpdGVfbm9ybWFsaXplZF9zZSgKICBoc19zYWxtb24sIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvY3BtL2hzX3NhbG1vbl9hbGxfc2FtcGxlcy12e3Zlcn0ueGxzeCIpKQpoc19oaXNhdF9jcG0gPC0gd3JpdGVfbm9ybWFsaXplZF9zZSgKICBoc19oaXNhdCwgZXhjZWwgPSBnbHVlKCJleGNlbC9jcG0vaHNfaGlzYXRfYWxsX3NhbXBsZXMtdnt2ZXJ9Lnhsc3giKSkKYGBgCgojIyBTZXBhcmF0ZSB0aGUgbVJOQSBzYW1wbGVzIGZyb20gcmliby16ZXJvCgpOb3RlLCB3aGVuIHdlIGFyZSBmaW5pc2hlZCwgd2Ugd2lsbCBiZSB1c2luZyBvbmx5IHRoZSBtUk5BIHNhbXBsZXMgYW5kCmlnbm9yaW5nIHRoZSByaWJvLXplcm8uICBCdXQgdGhlcmUgYXJlIHNvbWUgcXVlc3Rpb25zIGFib3V0IHRoZSBkYXRhCnByb3ZpZGVkIGJ5IHRoZSB0d28gbGlicmFyaWVzLgoKYGBge3J9CmhzX3NhbG1vbl9tcm5hIDwtIHNldF9jb25kaXRpb25zKGhzX3NhbG1vbiwgZmFjdCA9ICJzYW1wbGVfdHlwZSIpICU+JQogIHN1YnNldF9zZShzdWJzZXQgPSAibGlicmFyeV90eXBlPT0nbVJOQSciKSAlPiUKICBzZXRfYmF0Y2hlcygiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpCgpoc19zYWxtb25fcnogPC0gc2V0X2NvbmRpdGlvbnMoaHNfc2FsbW9uLCBmYWN0ID0gInNhbXBsZV90eXBlIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICJsaWJyYXJ5X3R5cGU9PSdSWiciKSAlPiUKICBzZXRfYmF0Y2hlcygiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpCgpoc19oaXNhdF9tcm5hIDwtIHNldF9jb25kaXRpb25zKGhzX2hpc2F0LCBmYWN0ID0gInNhbXBsZV90eXBlIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICJsaWJyYXJ5X3R5cGU9PSdtUk5BJyIpICU+JQogIHNldF9iYXRjaGVzKCJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIikKCmhzX2hpc2F0X3J6IDwtIHNldF9jb25kaXRpb25zKGhzX2hpc2F0LCBmYWN0ID0gInNhbXBsZV90eXBlIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICJsaWJyYXJ5X3R5cGU9PSdSWiciKSAlPiUKICBzZXRfYmF0Y2hlcygiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpCmBgYAoKIyMjIFdyaXRlIHRob3NlIG91dCBhcyB3ZWxsCgpgYGB7cn0KaHNfc2FsbW9uX21ybmFfY3BtIDwtIHdyaXRlX25vcm1hbGl6ZWRfc2UoCiAgaHNfc2FsbW9uX21ybmEsIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvY3BtL2hzX3NhbG1vbl9tcm5hX3NhbXBsZXMtdnt2ZXJ9Lnhsc3giKSkKaHNfc2FsbW9uX3J6X2NwbSA8LSB3cml0ZV9ub3JtYWxpemVkX3NlKAogIGhzX3NhbG1vbl9yeiwgZXhjZWwgPSBnbHVlKCJleGNlbC9jcG0vaHNfc2FsbW9uX3J6X3NhbXBsZXMtdnt2ZXJ9Lnhsc3giKSkKCmhzX2hpc2F0X21ybmFfY3BtIDwtIHdyaXRlX25vcm1hbGl6ZWRfc2UoCiAgaHNfaGlzYXRfbXJuYSwgZXhjZWwgPSBnbHVlKCJleGNlbC9jcG0vaHNfaGlzYXRfbXJuYV9zYW1wbGVzLXZ7dmVyfS54bHN4IikpCmhzX2hpc2F0X3J6X2NwbSA8LSB3cml0ZV9ub3JtYWxpemVkX3NlKAogIGhzX2hpc2F0X3J6LCBleGNlbCA9IGdsdWUoImV4Y2VsL2NwbS9oc19oaXNhdF9yel9zYW1wbGVzLXZ7dmVyfS54bHN4IikpCmBgYAoKIyMgRXh0cmFjdCBvbmx5IHRoZSBoZWFsdGh5L3NjYXIgc2FtcGxlcywgb25seSBtUk5BCgpgYGB7cn0KaHNfc2FsbW9uX21ybmFfaGVhbHRoIDwtIHN1YnNldF9zZShoc19zYWxtb24sIHN1YnNldCA9ICJocz09J2hlYWx0aHknfGhzPT0nc2NhciciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImhzIikKCmhzX2hpc2F0X21ybmFfaGVhbHRoIDwtIHN1YnNldF9zZShoc19oaXNhdF9tcm5hLCBzdWJzZXQgPSAiaHM9PSdoZWFsdGh5J3xocz09J3NjYXInIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJocyIpCmBgYAoKIyMjIFdyaXRlIHRoZXNlIG91dAoKYGBge3J9CmhzX3NhbG1vbl9tcm5hX2hlYWx0aF9jcG0gPC0gd3JpdGVfbm9ybWFsaXplZF9zZSgKICBoc19zYWxtb25fbXJuYV9oZWFsdGgsIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvY3BtL2hzX3NhbG1vbl9tcm5hX2hlYWx0aF9zYW1wbGVzLXZ7dmVyfS54bHN4IikpCmhzX2hpc2F0X21ybmFfaGVhbHRoX2NwbSA8LSB3cml0ZV9ub3JtYWxpemVkX3NlKAogIGhzX2hpc2F0X21ybmFfaGVhbHRoLCBleGNlbCA9IGdsdWUoImV4Y2VsL2NwbS9oc19oaXNhdF9tcm5hX2hlYWx0aF9zYW1wbGVzLXZ7dmVyfS54bHN4IikpCmBgYAoKIyBIVSBNZXRhZGF0YQoKIyMgUGVyY2VudCBvZiByZWFkcyBtYXBwZWQgdG8gdGhlIGdlbm9tZSBieSBoaXNhdAoKYGBge3J9CmhzX21hcHBlZF9tcm5hIDwtIHBsb3RfbWV0YWRhdGFfZmFjdG9yKGhzX2hpc2F0X21ybmEsIGNvbHVtbiA9ICJoaXNhdF9nZW5vbWVfcGVyY2VudF9sb2dfaGczOF8xMTUiKQpwcChmaWxlID0gImltYWdlcy9oc19tYXBwZWRfbXJuYV92aW9saW4ucG5nIiwgaW1hZ2UgPSBoc19tYXBwZWRfbXJuYSkKCgpoc19tYXBwZWRfcnogPC0gcGxvdF9tZXRhZGF0YV9mYWN0b3IoaHNfaGlzYXRfcnosIGNvbHVtbiA9ICJoaXNhdF9nZW5vbWVfcGVyY2VudF9sb2dfaGczOF8xMTUiKQpwcChmaWxlID0gImltYWdlcy9oc19tYXBwZWRfcnpfdmlvbGluLnBuZyIsIGltYWdlID0gaHNfbWFwcGVkX3J6KQpgYGAKCiMjIE51bWJlciBvZiBnZW5lIG9ic2VydmVkIGJ5IHNhbG1vbgoKYGBge3J9CmhzX29ic2VydmVkX21ybmEgPC0gcGxvdF9tZXRhZGF0YV9mYWN0b3IoaHNfaGlzYXRfbXJuYSwgY29sdW1uID0gInNhbG1vbl9vYnNlcnZlZF9nZW5lc19oZzM4XzExNSIpCmhzX29ic2VydmVkX21ybmEKCmhzX29ic2VydmVkX3J6IDwtIHBsb3RfbWV0YWRhdGFfZmFjdG9yKGhzX2hpc2F0X3J6LCBjb2x1bW4gPSAic2FsbW9uX29ic2VydmVkX2dlbmVzX2hnMzhfMTE1IikKaHNfb2JzZXJ2ZWRfcnoKYGBgCgojIyBQZXJjZW50IHJlYWRzIHF1YW50aWZpZWQgdG8gdGhlIGh1bWFuIHRyYW5zY3JpcHRvbWUgYnkgc2FsbW9uCgpgYGB7cn0KaHNfcGN0X21ybmEgPC0gcGxvdF9tZXRhZGF0YV9mYWN0b3IoaHNfc2FsbW9uX21ybmEsIGNvbHVtbiA9ICJzYWxtb25fcGVyY2VudF9oZzM4XzExNSIpCmhzX3BjdF9tcm5hCgpoc19wY3RfcnogPC0gcGxvdF9tZXRhZGF0YV9mYWN0b3IoaHNfc2FsbW9uX3J6LCBjb2x1bW4gPSAic2FsbW9uX3BlcmNlbnRfaGczOF8xMTUiKQpoc19wY3RfcnoKYGBgCgojIyBOdW1iZXIgb2Yga3Jha2VuIGlkZW50aWZpZWQgYmFjdGVyaWFsIHJlYWRzCgpXaGlsZSBhdCB0aGlzLCBhZGQgYSBjb2x1bW4gZGl2aWRpbmcgdGhlIGtyYWtlbiBiYWN0ZXJpYWwgY2xhc3NpZmllZApyZWFkcyBmcm9tIHRoZSB0b3RhbCByZWFkcy4KCmBgYHtyfQpoc19rcmFrZW5fbXJuYSA8LSBwbG90X21ldGFkYXRhX2ZhY3Rvcihoc19zYWxtb25fbXJuYSwgY29sdW1uID0gImtyYWtlbl9iYWN0ZXJpYWxfY2xhc3NpZmllZCIpCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2tyYWtlbl9iYWN0ZXJpYWxfcmVhZHNfbXJuYV9saWJyYXJpZXMucG5nIiwgaW1hZ2UgPSBoc19rcmFrZW5fbXJuYSkKCmhzX2tyYWtlbl9yeiA8LSBwbG90X21ldGFkYXRhX2ZhY3Rvcihoc19zYWxtb25fcnosIGNvbHVtbiA9ICJrcmFrZW5fYmFjdGVyaWFsX2NsYXNzaWZpZWQiKQpwcChmaWxlID0gImltYWdlcy9oc19rcmFrZW5fYmFjdGVyaWFsX3JlYWRzX3J6X2xpYnJhcmllcy5wbmciLCBpbWFnZSA9IGhzX2tyYWtlbl9yeikKCmNvbERhdGEoaHNfc2FsbW9uX21ybmEpW1sicGN0X2tyYWtlbl9iYWN0ZXJpYWwiXV0gPC0gY29sRGF0YShoc19zYWxtb25fbXJuYSlbWyJrcmFrZW5fYmFjdGVyaWFsX2NsYXNzaWZpZWQiXV0gLwogIGNvbERhdGEoaHNfc2FsbW9uX21ybmEpW1sidHJpbW9tYXRpY19vdXRwdXQiXV0KY29sRGF0YShoc19zYWxtb25fcnopW1sicGN0X2tyYWtlbl9iYWN0ZXJpYWwiXV0gPC0gY29sRGF0YShoc19zYWxtb25fcnopW1sia3Jha2VuX2JhY3RlcmlhbF9jbGFzc2lmaWVkIl1dIC8KICBjb2xEYXRhKGhzX3NhbG1vbl9yeilbWyJ0cmltb21hdGljX291dHB1dCJdXQpoc19rcmFrZW5fcGN0X21ybmEgPC0gcGxvdF9tZXRhZGF0YV9mYWN0b3IoaHNfc2FsbW9uX21ybmEsIGNvbHVtbiA9ICJwY3Rfa3Jha2VuX2JhY3RlcmlhbCIpCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2tyYWtlbl9iYWN0ZXJpYWxfcGN0X3JlYWRzX21ybmFfbGlicmFyaWVzLnBuZyIsIGltYWdlID0gaHNfa3Jha2VuX3BjdF9tcm5hKQoKaHNfa3Jha2VuX3BjdF9yeiA8LSBwbG90X21ldGFkYXRhX2ZhY3Rvcihoc19zYWxtb25fcnosIGNvbHVtbiA9ICJwY3Rfa3Jha2VuX2JhY3RlcmlhbCIpCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2tyYWtlbl9iYWN0ZXJpYWxfcGN0X3JlYWRzX3J6X2xpYnJhcmllcy5wbmciLCBpbWFnZSA9IGhzX2tyYWtlbl9wY3RfcnopCmBgYAoKIyMgU2Fua2V5IG9mIGEgZmV3IGZhY3RvcnMKCmBgYHtyfQpoc19zYW5rZXkgPC0gcGxvdF9tZXRhX3NhbmtleSgKICBoc19zYWxtb24sIGZhY3RvcnMgPSBjKCJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIiwgInNhbXBsZV90eXBlIiwgImxpYnJhcnlfdHlwZSIpKQpwcChmaWxlID0gImltYWdlcy9oc19kZXRlY3Rfc2FtcGxldHlwZV9saWJ0eXBlX3NhbmtleS5wbmciLCBpbWFnZSA9IGhzX3NhbmtleVtbInBsb3QiXV0pCgpoc19zYW5rZXkgPC0gcGxvdF9tZXRhX3NhbmtleSgKICBoc19zYWxtb24sIGZhY3RvcnMgPSBjKCJzYW1wbGVfdHlwZSIsICJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIiwgImxpYnJhcnlfdHlwZSIpKQpwcChmaWxlID0gImltYWdlcy9oc19zYW1wbGV0eXBlX2RldGVjdGlvbl9saWJ0eXBlX3NhbmtleS5wbmciLCBpbWFnZSA9IGhzX3NhbmtleVtbInBsb3QiXV0pCmBgYAoKIyBXcml0ZSBvdXQgdGhlIG1ldGFkYXRhIGluIGl0cyBjdXJyZW50IHN0YXRlCgpgYGB7cn0Kd3JpdGVfeGxzeChkYXRhID0gbW9kaWZpZWRfbWV0YSwgZXhjZWwgPSAic2FtcGxlX3NoZWV0cy9odW1hbl9zYW1wbGVzXzIwMjUxMV93aXRoX25hc2FsX2ZhY3Rvci54bHN4IikKYGBgCgojIG5vbnplcm8vbGlic2l6ZS9ldGMKCmBgYHtyfQpwbG90X2xlZ2VuZChoc19zYWxtb24pCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX3NhbG1vbl9xdWFudHJlYWRzLnBuZyIsIGltYWdlID0gcGxvdF9saWJzaXplKGhzX3NhbG1vbiwgeXNjYWxlID0gRkFMU0UpLAogICB3aWR0aCA9IDI0LCBoZWlnaHQgPSA5KQpwcChmaWxlID0gImltYWdlcy9oc19zYWxtb25fbm9uemVyby5wbmciLCBpbWFnZSA9IHBsb3Rfbm9uemVybyhoc19zYWxtb24sIHlfaW50ZXJjZXB0ID0gMC40MCkpCgpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9xdWFudHJlYWRzLnBuZyIsIGltYWdlID0gcGxvdF9saWJzaXplKGhzX2hpc2F0LCB5c2NhbGUgPSBGQUxTRSksCiAgIHdpZHRoID0gMjQsIGhlaWdodCA9IDkpCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0X25vbnplcm8ucG5nIiwgaW1hZ2UgPSBwbG90X25vbnplcm8oaHNfaGlzYXQpKQoKcHAoZmlsZSA9ICJpbWFnZXMvaHNfaGlzYXRfbXJuYV9saWJzaXplLnBuZyIsIGltYWdlID0gcGxvdF9saWJzaXplKGhzX2hpc2F0X21ybmEpKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9yel9saWJzaXplLnBuZyIsIGltYWdlID0gcGxvdF9saWJzaXplKGhzX2hpc2F0X3J6KSkKYGBgCgojIEV4dHJhY3QgdGhlIG5hc2FsIHNhbXBsZXMgYW5kIHNlZSBob3cgbWFueSBtUk5BIGFuZCByaWJvemVybyBhcmUgb2YgdGhlIHNhbWUgcGVyc29uCgpgYGB7cn0KaHNfaGlzYXRfbmFzYWwgPC0gc3Vic2V0X3NlKGhzX2hpc2F0LCBzdWJzZXQgPSAic2FtcGxlX3R5cGU9PSduYXNhbHN3YWInIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIikKcGVyc29uX2xpYnR5cGUgPC0gY29sRGF0YShoc19oaXNhdF9uYXNhbClbLCBjKCJwYXJ0aWNpcGFudF9jb2RlIiwgImxpYnJhcnlfdHlwZSIpXQp0YWJsZShwZXJzb25fbGlidHlwZSkKIyMgV2UgaGF2ZSBib3RoIGxpYnJhcnkgdHlwZXMgZm9yIDQgcGVvcGxlOiAxMDA5LCAxMDExLCAyMDAxLCBhbmQgMjAyMC4KCnBlcnNvbl9saWJ0eXBlX21vZGVsX25iYiA8LSBzZXRfYmF0Y2hlcyhoc19oaXNhdF9uYXNhbCwgZmFjdCA9ICJsaWJyYXJ5X3R5cGUiKSAlPiUKICBub3JtYWxpemUodHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsIGJhdGNoID0gInBjYSIsIGZpbHRlciA9IFRSVUUpICU+JQogIG5vcm1hbGl6ZShiYXRjaCA9ICJzdmFzZXEiKQpuZXduYW1lcyA8LSBjb2xEYXRhKGhzX2hpc2F0X25hc2FsKVtbInBhcnRpY2lwYW50X2NvZGUiXV0KcHAoZmlsZSA9ICJpbWFnZXMvcGNhX2JhdGNoX3RoZW5fc3ZhLnBuZyIsCiAgIGltYWdlID0gcGxvdF9wY2EocGVyc29uX2xpYnR5cGVfbW9kZWxfbmJiLCBleHBfbmFtZXMgPSBuZXduYW1lcywgcGxvdF9sYWJlbHMgPSBUUlVFKSwKICAgd2lkdGggPSAxMiwgaGVpZ2h0ID0gMTIpCgpwZXJzb25fcHJlc2VudGF0aW9uIDwtIGNvbERhdGEoaHNfaGlzYXRfbmFzYWwpWywgYygicGFydGljaXBhbnRfY29kZSIsICJjbGluaWNhbF9wcmVzZW50YXRpb24iKV0KdGFibGUocGVyc29uX3ByZXNlbnRhdGlvbikKIyMgTm90ZSB0byBzZWxmLCBwZXJzb24gMjAwMSBpcyBvdXIgbG9uZSBuYXNhbCBoZWFsdGh5IGRvbm9yLgoKaHNfaGlzYXRfbmFzYWxfbm9oZWFsdGh5IDwtIHN1YnNldF9zZShoc19oaXNhdF9uYXNhbCwgc3Vic2V0ID0gImNsaW5pY2FsX3ByZXNlbnRhdGlvbiE9J0hEJyIpCmhzX2hpc2F0X25hc2FsX25vaGVhbHRoeQpuZXduYW1lcyA8LSBjb2xEYXRhKGhzX2hpc2F0X25hc2FsX25vaGVhbHRoeSlbWyJwYXJ0aWNpcGFudF9jb2RlIl1dCmhzX2hpc2F0X25hc2FsX25oX25vcm0gPC0gbm9ybWFsaXplKGhzX2hpc2F0X25hc2FsX25vaGVhbHRoeSwgdHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IFRSVUUsIG5vcm0gPSAicXVhbnQiKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9uYXNhbF9uaF9ub3JtX3BjYS5wbmciLAogICBpbWFnZSA9IHBsb3RfcGNhKGhzX2hpc2F0X25hc2FsX25oX25vcm0sIGV4cF9uYW1lcyA9IG5ld25hbWVzLCBwbG90X2xhYmVscyA9IFRSVUUpKQoKaHNfaGlzYXRfbmFzYWxfbmhfbmIgPC0gbm9ybWFsaXplKGhzX2hpc2F0X25hc2FsX25vaGVhbHRoeSwgdHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBUUlVFLCBiYXRjaCA9ICJzdmFzZXEiKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9uYXNhbF9uaF9uYl9wY2EucG5nIiwKICAgaW1hZ2UgPSBwbG90X3BjYShoc19oaXNhdF9uYXNhbF9uaF9uYiwgZXhwX25hbWVzID0gbmV3bmFtZXMsIHBsb3RfbGFiZWxzID0gVFJVRSkpCgpoc19oaXNhdF9uYXNhbF9uaF9ub3JtIDwtIHNldF9iYXRjaGVzKGhzX2hpc2F0X25hc2FsX25oX25vcm0sIGZhY3QgPSAicGFydGljaXBhbnRfY29kZSIpCnBsb3RfcGNhKGhzX2hpc2F0X25hc2FsX25oX25vcm0pCgpoc19oaXNhdF9uYXNhbF9uaF9kZSA8LSBhbGxfcGFpcndpc2UoaHNfaGlzYXRfbmFzYWxfbm9oZWFsdGh5LCBmaWx0ZXIgPSBUUlVFLCBtb2RlbF9zdnMgPSAic3Zhc2VxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX2ZzdHJpbmcgPSAifiAwICsgY29uZGl0aW9uIikKaHNfaGlzYXRfbmFzYWxfbmhfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMoCiAgaHNfaGlzYXRfbmFzYWxfbmhfZGUsIGV4Y2VsID0gImV4Y2VsL2hzX2hpc2F0X25hc2FsX25oX3RhYmxlLnhsc3giKQpgYGAKClRyeSByZW1vdmluZyB0aGUgc2FtcGxlcyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGR1cGxpY2F0ZS9wZXJzb24gYWNyb3NzCm1STkEgYW5kIFJ6LCByZW1vdmluZyBvbmx5IHRoZSBSeiBzYW1wbGVzLgoKVGhlIGNoZWVzeSBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHRvIGp1c3QgY2hlY2sgZm9yIHBlcnNvbiBQUDEwMDksCjEwMTEsIDIwMDEgMjAyMCAmJiBsaWJyYXJ5X3R5cGUgPSBSWiwgYnV0IGl0IHNob3VsZCBiZSB0cml2aWFsIHRvIGRvCml0IGluIGEgc21hcnRlciB3YXkuLi4gQnV0IEkgd2lsbCBwcm9iYWJseSBtZXNzIHRoYXQgdXAgdGhlIGZpcnN0IHRpbWUKYW5kIGRvbid0IHdhbnQgdG8gYmUgdG9vIGFubm95aW5nLgoKIyMgV2UgaGF2ZSBib3RoIGxpYnJhcnkgdHlwZXMgZm9yIDQgcGVvcGxlOiAxMDA5LCAxMDExLCAyMDAxLCBhbmQgMjAyMC4KCmBgYHtyfQpleGNsdWRlZF9kdXBsaWNhdGVzIDwtIHN1YnNldF9zZShoc19oaXNhdF9uYXNhbF9ub2hlYWx0aHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldCA9ICIhKHBhcnRpY2lwYW50X2NvZGU9PSdQUDEwMDknJmxpYnJhcnlfdHlwZT09J1JaJykiKSAlPiUKICBzdWJzZXRfc2Uoc3Vic2V0ID0gIiEocGFydGljaXBhbnRfY29kZT09J1BQMTAxMScmbGlicmFyeV90eXBlPT0nUlonKSIpICU+JQogIHN1YnNldF9zZShzdWJzZXQgPSAiIShwYXJ0aWNpcGFudF9jb2RlPT0nUFAyMDAxJyZsaWJyYXJ5X3R5cGU9PSdSWicpIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICIhKHBhcnRpY2lwYW50X2NvZGU9PSdQUDIwMjAnJmxpYnJhcnlfdHlwZT09J1JaJykiKQoKZXhjbHVkZWRfZHVwbGljYXRlc19ub3JtIDwtIG5vcm1hbGl6ZShleGNsdWRlZF9kdXBsaWNhdGVzLCB0cmFuc2Zvcm0gPSAibG9nMiIsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtID0gInF1YW50IiwgZmlsdGVyID0gVFJVRSkKbmV3bmFtZXMgPC0gY29sRGF0YShleGNsdWRlZF9kdXBsaWNhdGVzKVtbInBhcnRpY2lwYW50X2NvZGUiXV0KcHAoZmlsZSA9ICJpbWFnZXMvZXhjbHVkZWRfZHVwbGljYXRlc19ub3JtX3BjYS5wbmciLAogICBpbWFnZSA9IHBsb3RfcGNhKGV4Y2x1ZGVkX2R1cGxpY2F0ZXNfbm9ybSwgZXhwX25hbWVzID0gbmV3bmFtZXMsIHBsb3RfbGFiZWxzID0gVFJVRSkpCgpleGNsdWRlZF9kdXBsaWNhdGVzX25iIDwtIG5vcm1hbGl6ZShleGNsdWRlZF9kdXBsaWNhdGVzLCB0cmFuc2Zvcm0gPSAibG9nMiIsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSAic3Zhc2VxIiwgZmlsdGVyID0gVFJVRSkKcHAoZmlsZSA9ICJpbWFnZXMvZXhjbHVkZWRfZHVwbGljYXRlc19uYl9wY2EucG5nIiwKICAgaW1hZ2UgPSBwbG90X3BjYShleGNsdWRlZF9kdXBsaWNhdGVzX25iLCBleHBfbmFtZXMgPSBuZXduYW1lcywgcGxvdF9sYWJlbHMgPSBUUlVFKSkKCmV4Y2x1ZGVkX2R1cGxpY2F0ZXNfZGUgPC0gYWxsX3BhaXJ3aXNlKGV4Y2x1ZGVkX2R1cGxpY2F0ZXMsIGZpbHRlciA9IFRSVUUsIG1vZGVsX3N2cyA9ICJzdmFzZXEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIpCmV4Y2x1ZGVkX2R1cGxpY2F0ZXNfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMoZXhjbHVkZWRfZHVwbGljYXRlc19kZSwgZXhjZWwgPSAiZXhjZWwvZXhjbHVkZWRfZHVwbGljYXRlc190YWJsZS54bHN4IikKZXhjbHVkZWRfZHVwbGljYXRlc190YWJsZQpleGNsdWRlZF9kdXBsaWNhdGVzX3NpZyA8LSBleHRyYWN0X3NpZ25pZmljYW50X2dlbmVzKGV4Y2x1ZGVkX2R1cGxpY2F0ZXNfdGFibGUsIGV4Y2VsID0gImV4Y2VsL2V4Y2x1ZGVkX2R1cGxpY2F0ZXNfc2lnLnhsc3giKQpleGNsdWRlZF9kdXBsaWNhdGVzX3NpZwoKZXhjbHVkZWRfdXAgPC0gZXhjbHVkZWRfZHVwbGljYXRlc19zaWdbWyJkZXNlcSJdXVtbInVwcyJdXVtbInBvc2l0aXZlX3ZzX25lZ2F0aXZlIl1dCmV4Y2x1ZGVkX2Rvd24gPC0gZXhjbHVkZWRfZHVwbGljYXRlc19zaWdbWyJkZXNlcSJdXVtbImRvd25zIl1dW1sicG9zaXRpdmVfdnNfbmVnYXRpdmUiXV0KCmV4Y2x1ZGVkX3VwX2dwIDwtIHNpbXBsZV9ncHJvZmlsZXIoZXhjbHVkZWRfdXApCmV4Y2x1ZGVkX3VwX2dwCmV4Y2x1ZGVkX3VwX2dwX2JwX3Bsb3RzIDwtIHBsb3RfZW5yaWNocmVzdWx0KGV4Y2x1ZGVkX3VwX2dwW1siQlBfZW5yaWNoIl1dKQpwcChmaWxlID0gImltYWdlcy9leGNsdWRlZF91cF9ncF9icF9nby5wbmciLCBpbWFnZSA9IGV4Y2x1ZGVkX3VwX2dwX2JwX3Bsb3RzW1siZ28iXV0pCnBwKGZpbGUgPSAiaW1hZ2VzL2V4Y2x1ZGVkX3VwX2dwX2JwX2RvdC5wbmciLCBpbWFnZSA9IGV4Y2x1ZGVkX3VwX2dwX2JwX3Bsb3RzW1siZG90Il1dKQoKZXhjbHVkZWRfZG93bl9ncCA8LSBzaW1wbGVfZ3Byb2ZpbGVyKGV4Y2x1ZGVkX2Rvd24pCmV4Y2x1ZGVkX2Rvd25fZ3AKZXhjbHVkZWRfZG93bl9ncF9icF9wbG90cyA8LSBwbG90X2VucmljaHJlc3VsdChleGNsdWRlZF9kb3duX2dwW1siQlBfZW5yaWNoIl1dKQpwcChmaWxlID0gImltYWdlcy9leGNsdWRlZF9kb3duX2dwX2JwX2dvLnBuZyIsIGltYWdlID0gZXhjbHVkZWRfZG93bl9ncF9icF9wbG90c1tbImdvIl1dKQpwcChmaWxlID0gImltYWdlcy9leGNsdWRlZF9kb3duX2dwX2JwX2RvdC5wbmciLCBpbWFnZSA9IGV4Y2x1ZGVkX2Rvd25fZ3BfYnBfcGxvdHNbWyJkb3QiXV0pCmBgYAoKIyBOb3JtYWxpemUKCkEgY291cGxlIHBsb3RzIG9mIGFsbCB0aGUgc2FsbW9uIHNhbXBsZXMgY29sb3JlZCBieSBzYW1wbGUgdHlwZS4KCmBgYHtyfQpoc19zYWxtb25fbm9ybSA8LSBub3JtYWxpemUoaHNfc2FsbW9uLCB0cmFuc2Zvcm0gPSAibG9nMiIsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IFRSVUUsIG5vcm0gPSAicXVhbnQiKQpoc19zYWxtb25fY29yaGVhdCA8LSBwbG90X2NvcmhlYXQoaHNfc2FsbW9uX25vcm0pCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX3NhbG1vbl9zYW1wbGV0eXBlX3BjYS5wbmciLCBpbWFnZSA9IHBsb3RfcGNhKGhzX3NhbG1vbl9ub3JtKSkKCmhzX2hpc2F0X25vcm0gPC0gbm9ybWFsaXplKGhzX2hpc2F0LCB0cmFuc2Zvcm0gPSAibG9nMiIsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gVFJVRSwgbm9ybSA9ICJxdWFudCIpCmhzX2hpc2F0X2NvcmhlYXQgPC0gcGxvdF9jb3JoZWF0KGhzX2hpc2F0X25vcm0pCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0X3NhbXBsZXR5cGVfY29yaGVhdC5wbmciKQpoc19oaXNhdF9jb3JoZWF0CmRldi5vZmYoKQpoc19oaXNhdF9jb3JoZWF0CmhzX2hpc2F0X3BjYSA8LSBwbG90X3BjYShoc19oaXNhdF9ub3JtKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9zYW1wbGV0eXBlX3BjYS5wbmciLCBpbWFnZSA9IHBsb3RfcGNhKGhzX2hpc2F0X25vcm0pKQpgYGAKCiMjIFJlbW92ZSBzYW1wbGVzIHdpdGhvdXQgN1NMIGRldGVjdGlvbiBzdGF0ZQoKV2hpbGUgd2UgYXJlIGF0IGl0LCBjb2xvciBieSB0aGUgN1NMIGRldGVjdGlvbiBhbmQgc2hhcGUgYnkgc2FtcGxlCnR5cGUgKFJ6L21STkEpLgoKSW4gdGhpcyBpbnN0YW5jZSBJIGhhdmUgc2VwYXJhdGUgY29sb3JzIGZvciA3U0wrIGFuZCA3U0wtIGNvbWJpbmVkCndpdGggY2VsbHR5cGUuCgpgYGB7cn0KaHNfaGlzYXRfZGV0ZWN0ZWQgPC0gc3Vic2V0X3NlKGhzX2hpc2F0LCBzdWJzZXQgPSAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCE9J3Vua25vd24nIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIT0nbm90YXBwbGljYWJsZSciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gInNhbXBsZV83c2wiKSAlPiUKICBzZXRfYmF0Y2hlcygic2FtcGxlX3R5cGUiKQpgYGAKClByaW50IGEgUENBIG9mIHRoaXMgdXNpbmcgb3VyIGdlbmVyaWMgbm9ybWFsaXphdGlvbi4KCmBgYHtyfQpoc19oaXNhdF9kZXRlY3Rfbm9ybSA8LSBub3JtYWxpemUoaHNfaGlzYXRfZGV0ZWN0ZWQsIHRyYW5zZm9ybSA9ICJsb2cyIiwgY29udmVydCA9ICJjcG0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gVFJVRSwgbm9ybSA9ICJxdWFudCIpCmhzX2hpc2F0X2RldGVjdF9wY2EgPC0gcGxvdF9wY2EoaHNfaGlzYXRfZGV0ZWN0X25vcm0pCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0XzdzbGRldGVjdGVkX3BjYS5wbmciLCBpbWFnZSA9IGhzX2hpc2F0X2RldGVjdF9wY2EsIHdpZHRoID0gMTgsIGhlaWdodCA9IDkpCmBgYAoKRm9sbG93ZWQgYnkgdGhlIHNhbWUgc2FtcGxlcyB0cmVhdGVkIHdpdGggU1ZBLgoKYGBge3J9CmhzX2hpc2F0X2RldGVjdF9uYiA8LSBub3JtYWxpemUoaHNfaGlzYXRfZGV0ZWN0ZWQsIHRyYW5zZm9ybSA9ICJsb2cyIiwgY29udmVydCA9ICJjcG0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IFRSVUUsIGJhdGNoID0gInN2YXNlcSIpCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0XzdzbGRldGVjdGVkX3N2YV9wY2EucG5nIiwKICAgaW1hZ2UgPSBwbG90X3BjYShoc19oaXNhdF9kZXRlY3RfbmIpLCBoZWlnaHQgPSA5LCB3aWR0aCA9IDE4KQoKaHNfaGlzYXRfb25seV83c2wgPC0gc2V0X2NvbmRpdGlvbnMoaHNfaGlzYXRfZGV0ZWN0ZWQsIGZhY3QgPSAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpCmhzX2hpc2F0XzdzbF9uYiA8LSBub3JtYWxpemUoaHNfaGlzYXRfb25seV83c2wsIHRyYW5zZm9ybSA9ICJsb2cyIiwgY29udmVydCA9ICJjcG0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gInN2YXNlcSIsIGZpbHRlciA9IFRSVUUpCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0XzdzbF9zdmFfcGNhLnBuZyIsIGltYWdlID0gcGxvdF9wY2EoaHNfaGlzYXRfN3NsX25iKSwKICAgaGVpZ2h0ID0gOSwgd2lkdGggPSAxOCkKYGBgCgojIENvbXBhcmUgZGlzdHJpYnV0aW9uIG9mIFJaL1N0cmFuZGVkIGxpYnJhcmllcwoKTWFyaWEgQWRlbGFpZGEgaXMgaW50ZXJlc3RlZCBpbiB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSByZWxhdGl2ZWx5IGZldwpyeiBzYW1wbGVzIHZzIHRoZSByZWxhdGl2ZWx5IGxhcmdlIG51bWJlciBvZiBzdHJhbmRlZCBtUk5BIGxpYnJhcmllcy4KCkkgdGhpbmsgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIG5hc2FsIHNhbXBsZXMgYXJlIG9mIHByaW1hcnkgaW50ZXJlc3QuCgpPaCwgaXQgdHVybnMgb3V0IHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBjb2xvcnMgZm9yIHRoaXMgYXJlCnRlcnJpYmxlLiAgTWF5YmUgd2UgZG8gbm90IGNhcmUsIHRoZXJlIGFyZSBzbyBmZXcgN1NMIHBvc2l0aXZlIG1STkEKc2FtcGxlcyB0aGF0IGl0IGlzIGJhc2ljYWxseSBpcnJlbGV2YW50LgoKYGBge3J9CmhzX2hpc2F0X21ybmFfN3NsIDwtIHNldF9jb25kaXRpb25zKGhzX2hpc2F0X21ybmEsIGZhY3QgPSAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpICU+JQogIHN1YnNldF9zZShzdWJzZXQgPSAiY29uZGl0aW9uIT0nbm90YXBwbGljYWJsZSciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImRldGVjdGlvbl90eXBlIikgJT4lCiAgc2V0X2JhdGNoZXMoZmFjdCA9ICJzYW1wbGVfdHlwZSIpCmhzX2hpc2F0X21ybmFfN3NsX25vcm0gPC0gbm9ybWFsaXplKGhzX2hpc2F0X21ybmFfN3NsLCBjb252ZXJ0ID0gImNwbSIsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm0gPSAicXVhbnQiLCB0cmFuc2Zvcm0gPSAibG9nMiIpCiMjIFRoaXMgc3RpbGwgY2x1c3RlcnMgcHJpbWFyaWx5IGJ5IHNhbXBsZSB0eXBlLCBhbmQgdGhlcmUgYXJlIHByZWNpb3VzIGZldyBwb3NpdGl2ZSBzYW1wbGVzLgpwbG90X3BjYShoc19oaXNhdF9tcm5hXzdzbF9ub3JtKQpgYGAKClJlcGxvdCB0aGlzIGZvbGxvd2luZyB0cmVhdG1lbnQgd2l0aCBTVkEuICBBdCBsZWFzdCBpbiB0aGlzIGluc3RhbmNlCml0IGlzIHBvc3NpYmxlIHRvIGRpZmZlcmVudGlhdGUgdGhlIHNhbXBsZSB0eXBlcyBpbiB0aGUgYmxvYi4KCmBgYHtyfQpoc19oaXNhdF9tcm5hXzdzbF9uYiA8LSBub3JtYWxpemUoaHNfaGlzYXRfbXJuYV83c2wsIGNvbnZlcnQgPSAiY3BtIiwgZmlsdGVyID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gInN2YSIsIHRyYW5zZm9ybSA9ICJsb2cyIikKaHNfaGlzYXRfbXJuYV9zdmFfcGNhIDwtIHBsb3RfcGNhKGhzX2hpc2F0X21ybmFfN3NsX25iKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9tcm5hX3N2YV9wY2EucG5nIikKaHNfaGlzYXRfbXJuYV9zdmFfcGNhCmRldi5vZmYoKQpoc19oaXNhdF9tcm5hX3N2YV9wY2EKYGBgCgojIyBQZXJmb3JtIERFU2VxIHVzaW5nIHRoZXNlCgpgYGB7cn0KdGFibGUoY29uZGl0aW9ucyhoc19oaXNhdF9tcm5hXzdzbCkpCmhzX2hpc2F0X21ybmFfN3NsX2RlIDwtIGFsbF9wYWlyd2lzZShoc19oaXNhdF9tcm5hXzdzbCwgbW9kZWxfZnN0cmluZyA9ICJ+IDAgKyBjb25kaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfc3ZzID0gInN2YXNlcSIsIGZpbHRlciA9IFRSVUUsIGZvcmNlID0gVFJVRSkKaHNfaGlzYXRfbXJuYV83c2xfZGUKcHAoZmlsZSA9ICJpbWFnZXMvN3NsX29ubHlfZGVfY29yaGVhdC5wbmciLCBpbWFnZSA9IGhzX2hpc2F0X21ybmFfN3NsX2RlW1siIl1dKQoKaHNfaGlzYXRfbXJuYV83c2xfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMoCiAgaHNfaGlzYXRfbXJuYV83c2xfZGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV90YWJsZXMvaHNfaGlzYXRfYWxsX21ybmFfN3NsX3RhYmxlLXZ7dmVyfS54bHN4IikpCmhzX2hpc2F0X21ybmFfN3NsX3RhYmxlCnBwKGZpbGUgPSAiaW1hZ2VzL3NpZ19kZXNlcV83c2xfZ2VuZXMucG5nIiwgaW1hZ2UgPSBoc19oaXNhdF9tcm5hXzdzbF90YWJsZVtbInBsb3RzIl1dW1sicG9zaXRpdmVfbVJOQV92c19uZWdhdGl2ZV9tUk5BIl1dW1siZGVzZXFfdm9sX3Bsb3RzIl1dKQoKaHNfaGlzYXRfbXJuYV83c2xfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgaHNfaGlzYXRfbXJuYV83c2xfdGFibGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV9zaWcvaHNfaGlzYXRfYWxsX21ybmFfN3NsX3NpZy12e3Zlcn0ueGxzeCIpKQpoc19oaXNhdF9tcm5hXzdzbF9zaWcKYGBgCgojIyMgU2FsbW9uIG5hc2FsIHNhbXBsZXMsIG1STkEgbGlicmFyaWVzCgpOb3cgcmVzdHJpY3QgdG8ganVzdCB0aGUgbmFzYWwgc2FtcGxlcy4KCmBgYHtyfQpoc19zYWxtb25fbmFzYWxfbXJuYV83c2wgPC0gc3Vic2V0X3NlKGhzX3NhbG1vbl9tcm5hLCBzdWJzZXQgPSAic2FtcGxlX3R5cGU9PSduYXNhbHN3YWInIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICJjb25kaXRpb24hPSdub3RhcHBsaWNhYmxlJyIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAiZGV0ZWN0aW9uX3R5cGUiKSAlPiUKICBzZXRfYmF0Y2hlcyhmYWN0ID0gInBhcnRpY2lwYW50X2NvZGUiKQoKaHNfaGlzYXRfbmFzYWxfbXJuYV83c2wgPC0gc3Vic2V0X3NlKGhzX2hpc2F0X21ybmEsIHN1YnNldCA9ICJzYW1wbGVfdHlwZT09J25hc2Fsc3dhYiciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiKSAlPiUKICBzdWJzZXRfc2Uoc3Vic2V0ID0gImNvbmRpdGlvbiE9J25vdGFwcGxpY2FibGUnIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJkZXRlY3Rpb25fdHlwZSIpICU+JQogIHNldF9iYXRjaGVzKGZhY3QgPSAicGFydGljaXBhbnRfY29kZSIpCmBgYAoKUHJpbnQgdGhlIG5vcm1hbGl6ZWQgUENBIHNob3dpbmcgb25seSBhIGNvdXBsZSBvZiBwb3NpdGl2ZSBzYW1wbGVzIGluCnRoaXMgc2V0LgoKU21hbGwgbm90ZTogSSBzbGlnaHRseSBjaGFuZ2VkIGhvdyBzZXRfY29uZGl0aW9ucyB3b3JrcyB0byBkcm9wIHVudXNlZCBsZXZlbHMuCgpgYGB7cn0KaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfbm9ybSA8LSBub3JtYWxpemUoaHNfaGlzYXRfbmFzYWxfbXJuYV83c2wsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gVFJVRSwgbm9ybSA9ICJxdWFudCIsIHRyYW5zZm9ybSA9ICJsb2cyIikKaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfcGNhIDwtIHBsb3RfcGNhKGhzX2hpc2F0X25hc2FsX21ybmFfN3NsX25vcm0pCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0X25hc2FsX21ybmFfN3NsX25vcm1fcGNhLnBuZyIsCiAgIGltYWdlID0gaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfcGNhKQpgYGAKCmBgYHtyfQpoc19oaXNhdF9uYXNhbF9tcm5hXzdzbF9uYiA8LSBub3JtYWxpemUoaHNfaGlzYXRfbmFzYWxfbXJuYV83c2wsIGNvbnZlcnQgPSAiY3BtIiwgZmlsdGVyID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gInN2YSIsIHRyYW5zZm9ybSA9ICJsb2cyIikKaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfbmJfcGNhIDwtIHBsb3RfcGNhKGhzX2hpc2F0X25hc2FsX21ybmFfN3NsX25iKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9uYXNhbF9tcm5hXzdzbF9zdmFfcGNhLnBuZyIsCiAgIGltYWdlID0gaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfbmJfcGNhKQpgYGAKCiMjIyBQZXJmb3JtIHBhaXJ3aXNlIGFuYWx5c2lzIG9mIHRoZXNlCgpgYGB7cn0KaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfZGUgPC0gYWxsX3BhaXJ3aXNlKGhzX2hpc2F0X25hc2FsX21ybmFfN3NsLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9zdnMgPSAic3Zhc2VxIiwgZmlsdGVyID0gVFJVRSwgZm9yY2UgPSBUUlVFKQpoc19oaXNhdF9uYXNhbF9tcm5hXzdzbF9kZQoKaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMoCiAgaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfZGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV90YWJsZXMvaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfdGFibGUtdnt2ZXJ9Lnhsc3giKSkKaHNfaGlzYXRfbmFzYWxfbXJuYV83c2xfdGFibGUKCmhzX2hpc2F0X25hc2FsX21ybmFfN3NsX3NpZyA8LSBleHRyYWN0X3NpZ25pZmljYW50X2dlbmVzKAogIGhzX2hpc2F0X25hc2FsX21ybmFfN3NsX3RhYmxlLAogIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvZGVfc2lnL2hzX2hpc2F0X25hc2FsX21ybmFfN3NsX3NpZy12e3Zlcn0ueGxzeCIpKQpoc19oaXNhdF9uYXNhbF9tcm5hXzdzbF9zaWcKYGBgCgojIyBSZXBlYXQgd2l0aCB0aGUgcmlibyB6ZXJvIHNhbXBsZXMKCiMjIyA3U0wgc2FtcGxlcywgcmlib3plcm8KCkV4dHJhY3QgdGhlIHJpYm96ZXJvIHNhbXBsZXMgaW50byBhIG5ldyBkYXRhc3RydWN0dXJlLgoKYGBge3J9CmhzX2hpc2F0X3J6XzdzbCA8LSBzZXRfY29uZGl0aW9ucyhoc19oaXNhdF9yeiwgZmFjdCA9ICJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIikgJT4lCiAgc3Vic2V0X3NlKHN1YnNldCA9ICJjb25kaXRpb24hPSdub3RhcHBsaWNhYmxlJyIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAiZGV0ZWN0aW9uX3R5cGUiKSAlPiUKICBzZXRfYmF0Y2hlcyhmYWN0ID0gInNhbXBsZV90eXBlIikKCmhzX3NhbG1vbl9yel83c2wgPC0gc2V0X2NvbmRpdGlvbnMoaHNfc2FsbW9uX3J6LCBmYWN0ID0gImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiKSAlPiUKICBzdWJzZXRfc2Uoc3Vic2V0ID0gImNvbmRpdGlvbiE9J25vdGFwcGxpY2FibGUnIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJkZXRlY3Rpb25fdHlwZSIpICU+JQogIHNldF9iYXRjaGVzKGZhY3QgPSAic2FtcGxlX3R5cGUiKQpgYGAKCmFuZCBwbGF5IHdpdGggdGhlbS4KCmBgYHtyfQpoc19oaXNhdF9yel83c2xfbm9ybSA8LSBub3JtYWxpemUoaHNfaGlzYXRfcnpfN3NsLCBjb252ZXJ0ID0gImNwbSIsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtID0gInF1YW50IiwgdHJhbnNmb3JtID0gImxvZzIiKQojIyBUaGlzIHN0aWxsIGNsdXN0ZXJzIHByaW1hcmlseSBieSBzYW1wbGUgdHlwZSwgYW5kIHRoZXJlIGFyZSBwcmVjaW91cyBmZXcgcG9zaXRpdmUgc2FtcGxlcy4KaHNfaGlzYXRfcnpfN3NsX25vcm1fcGNhIDwtIHBsb3RfcGNhKGhzX2hpc2F0X3J6XzdzbF9ub3JtKQpwcChmaWxlID0gImltYWVncy9oc19oaXNhdF9yel83c2xfbm9ybV9wY2EucG5nIiwKICAgaW1hZ2UgPSBoc19oaXNhdF9yel83c2xfbm9ybV9wY2EpCgpoc19zYWxtb25fcnpfN3NsX25vcm0gPC0gbm9ybWFsaXplKGhzX3NhbG1vbl9yel83c2wsIGNvbnZlcnQgPSAiY3BtIiwgZmlsdGVyID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtID0gInF1YW50IiwgdHJhbnNmb3JtID0gImxvZzIiKQpwbG90X3BjYShoc19zYWxtb25fcnpfN3NsX25vcm0pCmBgYAoKYGBge3J9CmhzX2hpc2F0X3J6XzdzbF9kZSA8LSBhbGxfcGFpcndpc2UoaHNfaGlzYXRfcnpfN3NsLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfc3ZzID0gInN2YXNlcSIsIGZpbHRlciA9IFRSVUUsIGZvcmNlID0gVFJVRSkKaHNfaGlzYXRfcnpfN3NsX2RlCmhzX2hpc2F0X3J6XzdzbF90YWJsZSA8LSBjb21iaW5lX2RlX3RhYmxlcygKICBoc19oaXNhdF9yel83c2xfZGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV90YWJsZXMvaHNfaGlzYXRfcnpfN3NsX3RhYmxlLXZ7dmVyfS54bHN4IikpCmhzX2hpc2F0X3J6XzdzbF90YWJsZQpoc19oaXNhdF9yel83c2xfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgaHNfaGlzYXRfcnpfN3NsX3RhYmxlLAogIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvZGVfc2lnL2hzX2hpc2F0X3J6XzdzbF9zaWctdnt2ZXJ9Lnhsc3giKSkKaHNfaGlzYXRfcnpfN3NsX3NpZwpgYGAKCiMjIyBTYWxtb24gN1NMIHNhbXBsZXMsIHJpYm96ZXJvCgpgYGB7cn0KaHNfc2FsbW9uX3J6XzdzbF9kZSA8LSBhbGxfcGFpcndpc2UoaHNfc2FsbW9uX3J6XzdzbCwgbW9kZWxfZnN0cmluZyA9ICJ+IDAgKyBjb25kaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3N2cyA9ICJzdmFzZXEiLCBmaWx0ZXIgPSBUUlVFLCBmb3JjZSA9IFRSVUUpCmhzX3NhbG1vbl9yel83c2xfZGUKaHNfc2FsbW9uX3J6XzdzbF90YWJsZSA8LSBjb21iaW5lX2RlX3RhYmxlcygKICBoc19zYWxtb25fcnpfN3NsX2RlLAogIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvZGVfdGFibGVzL2hzX3NhbG1vbl9yel83c2xfdGFibGUtdnt2ZXJ9Lnhsc3giKSkKaHNfc2FsbW9uX3J6XzdzbF90YWJsZQpoc19zYWxtb25fcnpfN3NsX3NpZyA8LSBleHRyYWN0X3NpZ25pZmljYW50X2dlbmVzKAogIGhzX3NhbG1vbl9yel83c2xfdGFibGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV9zaWcvaHNfc2FsbW9uX3J6XzdzbF9zaWctdnt2ZXJ9Lnhsc3giKSkKaHNfc2FsbW9uX3J6XzdzbF9zaWcKYGBgCgojIyMgN1NMIG5hc2FsIHNhbXBsZXMsIHJpYm96ZXJvCgpOb3cgcmVzdHJpY3QgdG8ganVzdCB0aGUgbmFzYWwgc2FtcGxlcy4KCmBgYHtyfQpoc19oaXNhdF9uYXNhbF9yel83c2wgPC0gc3Vic2V0X3NlKGhzX2hpc2F0X3J6XzdzbCwgc3Vic2V0ID0gInNhbXBsZV90eXBlPT0nbmFzYWxzd2FiJyIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpICU+JQogIHN1YnNldF9zZShzdWJzZXQgPSAiY29uZGl0aW9uIT0nbm90YXBwbGljYWJsZSciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImRldGVjdGlvbl90eXBlIikgJT4lCiAgc2V0X2JhdGNoZXMoZmFjdCA9ICJzYW1wbGVfdHlwZSIpCgpoc19oaXNhdF9uYXNhbF9yel83c2xfbm9ybSA8LSBub3JtYWxpemUoaHNfaGlzYXRfbmFzYWxfcnpfN3NsLCBjb252ZXJ0ID0gImNwbSIsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtID0gInF1YW50IiwgdHJhbnNmb3JtID0gImxvZzIiKQpoc19oaXNhdF9uYXNhbF9yel83c2xfbnBjYSA8LSBwbG90X3BjYShoc19oaXNhdF9uYXNhbF9yel83c2xfbm9ybSkKcHAoZmlsZSA9ICJpbWFnZXMvaHNfaGlzYXRfbmFzYWxfcnpfN3NsX25wY2EucG5nIikKaHNfaGlzYXRfbmFzYWxfcnpfN3NsX25wY2FbWyJwbG90Il1dCmRldi5vZmYoKQpoc19oaXNhdF9uYXNhbF9yel83c2xfbnBjYQoKaHNfaGlzYXRfbmFzYWxfcnpfN3NsX25iIDwtIG5vcm1hbGl6ZShoc19oaXNhdF9uYXNhbF9yel83c2wsIGNvbnZlcnQgPSAiY3BtIiwgZmlsdGVyID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSAic3ZhIiwgdHJhbnNmb3JtID0gImxvZzIiKQpoc19oaXNhdF9uYXNhbF9yel83c2xfbmJwY2EgPC0gcGxvdF9wY2EoaHNfaGlzYXRfbmFzYWxfcnpfN3NsX25iKQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF9uYXNhbF9yel83c2xfbmJwY2EucG5nIikKaHNfaGlzYXRfbmFzYWxfcnpfN3NsX25icGNhW1sicGxvdCJdXQpkZXYub2ZmKCkKaHNfaGlzYXRfbmFzYWxfcnpfN3NsX25icGNhCmBgYAoKYGBge3J9CmhzX3NhbG1vbl9uYXNhbF9yel83c2wgPC0gc3Vic2V0X3NlKGhzX3NhbG1vbl9yel83c2wsIHN1YnNldCA9ICJzYW1wbGVfdHlwZT09J25hc2Fsc3dhYiciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImRldGVjdGlvbnBhcmFzaXRlYnk3c2wiKSAlPiUKICBzdWJzZXRfc2Uoc3Vic2V0ID0gImNvbmRpdGlvbiE9J25vdGFwcGxpY2FibGUnIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJkZXRlY3Rpb25fdHlwZSIpICU+JQogIHNldF9iYXRjaGVzKGZhY3QgPSAic2FtcGxlX3R5cGUiKQoKaHNfc2FsbW9uX25hc2FsX3J6XzdzbF9ub3JtIDwtIG5vcm1hbGl6ZShoc19zYWxtb25fbmFzYWxfcnpfN3NsLCBjb252ZXJ0ID0gImNwbSIsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtID0gInF1YW50IiwgdHJhbnNmb3JtID0gImxvZzIiKQpoc19zYWxtb25fbmFzYWxfcnpfN3NsX25wY2EgPC0gcGxvdF9wY2EoaHNfc2FsbW9uX25hc2FsX3J6XzdzbF9ub3JtKQpwcChmaWxlID0gImltYWdlcy9oc19zYWxtb25fbmFzYWxfcnpfN3NsX25wY2EucG5nIikKaHNfc2FsbW9uX25hc2FsX3J6XzdzbF9ucGNhW1sicGxvdCJdXQpkZXYub2ZmKCkKaHNfc2FsbW9uX25hc2FsX3J6XzdzbF9ucGNhCgpoc19zYWxtb25fbmFzYWxfcnpfN3NsX25iIDwtIG5vcm1hbGl6ZShoc19zYWxtb25fbmFzYWxfcnpfN3NsLCBjb252ZXJ0ID0gImNwbSIsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gInN2YSIsIHRyYW5zZm9ybSA9ICJsb2cyIikKaHNfc2FsbW9uX25hc2FsX3J6XzdzbF9uYnBjYSA8LSBwbG90X3BjYShoc19zYWxtb25fbmFzYWxfcnpfN3NsX25iKQpwcChmaWxlID0gImltYWdlcy9oc19zYWxtb25fbmFzYWxfcnpfN3NsX25icGNhLnBuZyIpCmhzX3NhbG1vbl9uYXNhbF9yel83c2xfbmJwY2FbWyJwbG90Il1dCmRldi5vZmYoKQpoc19zYWxtb25fbmFzYWxfcnpfN3NsX25icGNhCmBgYAoKIyMjIyBERSBvZiB0aGlzIGV2ZXIgc2hyaW5raW5nIHNldAoKYGBge3J9CmhzX2hpc2F0X25hc2FsX3J6XzdzbF9kZSA8LSBhbGxfcGFpcndpc2UoaHNfaGlzYXRfbmFzYWxfcnpfN3NsLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfc3ZzID0gInN2YXNlcSIsIGZpbHRlciA9IFRSVUUsIGZvcmNlID0gVFJVRSkKaHNfaGlzYXRfbmFzYWxfcnpfN3NsX2RlCmhzX2hpc2F0X25hc2FsX3J6XzdzbF90YWJsZSA8LSBjb21iaW5lX2RlX3RhYmxlcygKICBoc19oaXNhdF9uYXNhbF9yel83c2xfZGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV90YWJsZXMvaHNfaGlzYXRfbmFzYWxfcnpfN3NsX3RhYmxlLXZ7dmVyfS54bHN4IikpCmhzX2hpc2F0X25hc2FsX3J6XzdzbF90YWJsZQpoc19oaXNhdF9uYXNhbF9yel83c2xfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgaHNfaGlzYXRfbmFzYWxfcnpfN3NsX3RhYmxlLAogIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvZGVfc2lnL2hzX2hpc2F0X25hc2FsX3J6XzdzbF9zaWctdnt2ZXJ9Lnhsc3giKSkKaHNfaGlzYXRfbmFzYWxfcnpfN3NsX3NpZwpgYGAKCmBgYHtyfQpoc19zYWxtb25fbmFzYWxfcnpfN3NsX2RlIDwtIGFsbF9wYWlyd2lzZShoc19zYWxtb25fbmFzYWxfcnpfN3NsLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfc3ZzID0gInN2YXNlcSIsIGZpbHRlciA9IFRSVUUsIGZvcmNlID0gVFJVRSkKaHNfc2FsbW9uX25hc2FsX3J6XzdzbF9kZQpoc19zYWxtb25fbmFzYWxfcnpfN3NsX3RhYmxlIDwtIGNvbWJpbmVfZGVfdGFibGVzKAogIGhzX3NhbG1vbl9uYXNhbF9yel83c2xfZGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV90YWJsZXMvaHNfc2FsbW9uX25hc2FsX3J6XzdzbF90YWJsZS12e3Zlcn0ueGxzeCIpKQpoc19zYWxtb25fbmFzYWxfcnpfN3NsX3RhYmxlCmhzX3NhbG1vbl9uYXNhbF9yel83c2xfc2lnIDwtIGV4dHJhY3Rfc2lnbmlmaWNhbnRfZ2VuZXMoCiAgaHNfc2FsbW9uX25hc2FsX3J6XzdzbF90YWJsZSwKICBleGNlbCA9IGdsdWUoImV4Y2VsL2RlX3NpZy9oc19zYWxtb25fbmFzYWxfcnpfN3NsX3NpZy12e3Zlcn0ueGxzeCIpKQpoc19zYWxtb25fbmFzYWxfcnpfN3NsX3NpZwpgYGAKCiMjIENvbXBhcmUgN1NMIHN0YXR1cyBmb3IgdGhlIFBCTUMgc2FtcGxlcwoKYGBge3J9CmhzX2hpc2F0X3BibWNfN3NsIDwtIHN1YnNldF9zZShoc19oaXNhdCwgc3Vic2V0ID0gInNhbXBsZV90eXBlPT0ncGJtY3MnIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIikKCmhzX2hpc2F0X3BibWNfbXJuYV83c2xfbm9ybSA8LSBub3JtYWxpemUoaHNfaGlzYXRfcGJtY183c2wsIHRyYW5zZm9ybSA9ICJsb2cyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnQgPSAiY3BtIiwgbm9ybSA9ICJxdWFudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBUUlVFKQpoc19oaXNhdF9wYm1jX21ybmFfN3NsX25wY2EgPC0gcGxvdF9wY2EoaHNfaGlzYXRfcGJtY19tcm5hXzdzbF9ub3JtKQpoc19oaXNhdF9wYm1jX21ybmFfN3NsX25wY2EKcHAoZmlsZSA9ICJpbWFnZXMvaHNfaGlzYXRfcGJtY19tcm5hXzdzbF9ucGNhLnBuZyIsCiAgIGltYWdlID0gaHNfaGlzYXRfcGJtY19tcm5hXzdzbF9ucGNhJHBsb3QpCmBgYAoKIyMgRXh0cmFjdCB0aGUgYmxvb2QgY2VsbHMgKG5vdCBQQk1DKQoKIyMjIEhpc2F0CgpgYGB7cn0KaHNfaGlzYXRfd2JjX21ybmFfN3NsIDwtIHN1YnNldF9zZShoc19oaXNhdF9tcm5hLCBzdWJzZXQgPSAic2FtcGxlX3R5cGU9PSd3YmNzJyIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpICU+JQogIHN1YnNldF9zZShzdWJzZXQgPSAiY29uZGl0aW9uIT0nbm90YXBwbGljYWJsZSciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImRldGVjdGlvbl90eXBlIikgJT4lCiAgc2V0X2JhdGNoZXMoZmFjdCA9ICJzYW1wbGVfdHlwZSIpCgpoc19oaXNhdF93YmNfbXJuYV83c2xfbm9ybSA8LSBub3JtYWxpemUoaHNfaGlzYXRfd2JjX21ybmFfN3NsLCB0cmFuc2Zvcm0gPSAibG9nMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ID0gImNwbSIsIG5vcm0gPSAicXVhbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gVFJVRSkKaHNfaGlzYXRfd2JjX21ybmFfN3NsX25wY2EgPC0gcGxvdF9wY2EoaHNfaGlzYXRfd2JjX21ybmFfN3NsX25vcm0pCmhzX2hpc2F0X3diY19tcm5hXzdzbF9ucGNhCnBwKGZpbGUgPSAiaW1hZ2VzL2hzX2hpc2F0X3diY19tcm5hXzdzbF9ucGNhLnBuZyIsCiAgIGltYWdlID0gaHNfaGlzYXRfd2JjX21ybmFfN3NsX25wY2EkcGxvdCkKCmhzX2hpc2F0X3diY19tcm5hXzdzbF9uYiA8LSBub3JtYWxpemUoaHNfaGlzYXRfd2JjX21ybmFfN3NsLCB0cmFuc2Zvcm0gPSAibG9nMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydCA9ICJjcG0iLCBiYXRjaCA9ICJzdmFzZXEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IFRSVUUpCmhzX2hpc2F0X3diY19tcm5hXzdzbF9uYnBjYSA8LSBwbG90X3BjYShoc19oaXNhdF93YmNfbXJuYV83c2xfbmIpCmhzX2hpc2F0X3diY19tcm5hXzdzbF9uYnBjYQpwcChmaWxlID0gImltYWdlcy9oc19oaXNhdF93YmNfbXJuYV83c2xfbmJwY2EucG5nIikKaHNfaGlzYXRfd2JjX21ybmFfN3NsX25icGNhJHBsb3QKZGV2Lm9mZigpCmBgYAoKIyMjIFNhbG1vbgoKYGBge3J9CmhzX3NhbG1vbl93YmNfbXJuYV83c2wgPC0gc3Vic2V0X3NlKGhzX3NhbG1vbl9tcm5hLCBzdWJzZXQgPSAic2FtcGxlX3R5cGU9PSd3YmNzJyIpICU+JQogIHNldF9jb25kaXRpb25zKGZhY3QgPSAiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpICU+JQogIHN1YnNldF9zZShzdWJzZXQgPSAiY29uZGl0aW9uIT0nbm90YXBwbGljYWJsZSciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gImRldGVjdGlvbl90eXBlIikgJT4lCiAgc2V0X2JhdGNoZXMoZmFjdCA9ICJzYW1wbGVfdHlwZSIpCgpoc19zYWxtb25fd2JjX21ybmFfN3NsX25vcm0gPC0gbm9ybWFsaXplKGhzX3NhbG1vbl93YmNfbXJuYV83c2wsIHRyYW5zZm9ybSA9ICJsb2cyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnQgPSAiY3BtIiwgbm9ybSA9ICJxdWFudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBUUlVFKQpoc19zYWxtb25fd2JjX21ybmFfN3NsX25wY2EgPC0gcGxvdF9wY2EoaHNfc2FsbW9uX3diY19tcm5hXzdzbF9ub3JtKQpoc19zYWxtb25fd2JjX21ybmFfN3NsX25wY2EKcHAoZmlsZSA9ICJpbWFnZXMvaHNfc2FsbW9uX3diY19tcm5hXzdzbF9ucGNhLnBuZyIsCiAgIGltYWdlID0gaHNfc2FsbW9uX3diY19tcm5hXzdzbF9ucGNhJHBsb3QpCgpoc19zYWxtb25fd2JjX21ybmFfN3NsX25iIDwtIG5vcm1hbGl6ZShoc19zYWxtb25fd2JjX21ybmFfN3NsLCB0cmFuc2Zvcm0gPSAibG9nMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydCA9ICJjcG0iLCBiYXRjaCA9ICJzdmFzZXEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IFRSVUUpCmhzX3NhbG1vbl93YmNfbXJuYV83c2xfbmJwY2EgPC0gcGxvdF9wY2EoaHNfc2FsbW9uX3diY19tcm5hXzdzbF9uYikKaHNfc2FsbW9uX3diY19tcm5hXzdzbF9uYnBjYQpwcChmaWxlID0gImltYWdlcy9oc19zYWxtb25fd2JjX21ybmFfN3NsX25icGNhLnBuZyIsCiAgIGltYWdlID0gaHNfc2FsbW9uX3diY19tcm5hXzdzbF9uYnBjYSRwbG90KQpgYGAKCmBgYHtyfQpoc19zYWxtb25fd2JjX21ybmFfN3NsX2RlIDwtIGFsbF9wYWlyd2lzZShoc19zYWxtb25fd2JjX21ybmFfN3NsLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3N2cyA9ICJzdmFzZXEiLCBmaWx0ZXIgPSBUUlVFLCBmb3JjZSA9IFRSVUUpCmhzX3NhbG1vbl93YmNfbXJuYV83c2xfZGUKCmhzX3NhbG1vbl93YmNfbXJuYV83c2xfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMoCiAgaHNfc2FsbW9uX3diY19tcm5hXzdzbF9kZSwKICBleGNlbCA9IGdsdWUoImV4Y2VsL2RlX3RhYmxlcy9oc19zYWxtb25fd2JjX21ybmFfN3NsX3RhYmxlLXZ7dmVyfS54bHN4IikpCmhzX3NhbG1vbl93YmNfbXJuYV83c2xfdGFibGUKaHNfc2FsbW9uX3diY19tcm5hXzdzbF9zaWcgPC0gZXh0cmFjdF9zaWduaWZpY2FudF9nZW5lcygKICBoc19zYWxtb25fd2JjX21ybmFfN3NsX3RhYmxlLAogIGV4Y2VsID0gZ2x1ZSgiZXhjZWwvc2lnX3RhYmxlcy9oc19zYWxtb25fd2JjX21ybmFfN3NsX3NpZy12e3Zlcn0ueGxzeCIpKQpoc19zYWxtb25fd2JjX21ybmFfN3NsX3NpZwpgYGAKCiMgSGVhbHRoeSB2cyBTY2FyIHNhbXBsZXMKCk9uZSBxdWVyeSBmcm9tIG91ciBsYXN0IG1lZXRpbmcgd2hpY2ggSSBmb3Jnb3QgYWJvdXQgdW50aWwgSSByZXJlYWQgbXkKVE9ETyBub3RlczogY29tcGFyZSB0aGUgc2FtcGxlcyBtYXJrZWQgYXMgaGVhbHRoeSBjb21wYXJlZCB0byB0aG9zZQptYXJrZWQgYXMgc2Nhci4gIFRoZXNlIGFyZSB0d28gZGlzdGFudGx5IHNlcGFyYXRlIHNraW4gYmlvcHNpZXMgb2YgdGhlCnNhbWUgcGVyc29uLgoKYGBge3J9CmhzX2hpc2F0X3NraW5fbXJuYV83c2wgPC0gc3Vic2V0X3NlKGhzX2hpc2F0X21ybmEsIHN1YnNldCA9ICJocz09J3NjYXInfGhzPT0naGVhbHRoeSciKQpoc19oaXNhdF9zY2FydnNfbXJuYSA8LSBzZXRfY29uZGl0aW9ucyhoc19oaXNhdF9za2luX21ybmFfN3NsLCBmYWN0ID0gImhzIikKCmhzX2hpc2F0X3NjYXJ2c19kZSA8LSBhbGxfcGFpcndpc2UoaHNfaGlzYXRfc2NhcnZzX21ybmEsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfc3ZzID0gInN2YXNlcSIsIG1vZGVsX2ZzdHJpbmcgPSAifiAwICsgY29uZGl0aW9uIikKaHNfaGlzYXRfc2NhcnZzX2RlCmhzX2hpc2F0X3NjYXJ2c190YWJsZSA8LSBjb21iaW5lX2RlX3RhYmxlcygKICBoc19oaXNhdF9zY2FydnNfZGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9kZV90YWJsZXMvaHNfaGlzYXRfc2NhcnZzX21ybmFfdGFibGUtdnt2ZXJ9Lnhsc3giKSkKaHNfaGlzYXRfc2NhcnZzX3RhYmxlCnBwKGZpbGUgPSAiaW1hZ2VzL2hpc2F0X3NjYXJ2c19kZXNlcV9nZW5lcy5wbmciLCBpbWFnZSA9IGhzX2hpc2F0X3NjYXJ2c190YWJsZVtbInBsb3RzIl1dW1sic2Nhcl92c19ub25sZXNpb24iXV1bWyJkZXNlcV92b2xfcGxvdHMiXV0pCmhzX2hpc2F0X3NjYXJ2c19zaWcgPC0gZXh0cmFjdF9zaWduaWZpY2FudF9nZW5lcygKICBoc19oaXNhdF9zY2FydnNfdGFibGUsCiAgZXhjZWwgPSBnbHVlKCJleGNlbC9zaWdfdGFibGVzL2hzX2hpc2F0X3NjYXJ2c19tcm5hX3NpZy12e3Zlcn0ueGxzeCIpKQpoc19oaXNhdF9zY2FydnNfc2lnCmBgYAoKIyBUYWtlIGEgcGVlayBhdCB0aGUga3Jha2VuIHJlc3VsdHMKCmBgYHtyfQpoc19rcmFrZW5fdmlyYWwgPC0gY3JlYXRlX3NlKHByZV9tZXRhW1sibmV3X21ldGEiXV0sIGZpbGVfY29sdW1uID0gImtyYWtlbl9tYXRyaXhfdmlyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9uYSA9ICJ6ZXJvIikKaHNfa3Jha2VuX3ZpcmFsIDwtIHNldF9jb25kaXRpb25zKGhzX2tyYWtlbl92aXJhbCwgZmFjdCA9ICJzYW1wbGVfdHlwZSIpICU+JQogIHNldF9iYXRjaGVzKCJkZXRlY3Rpb25wYXJhc2l0ZWJ5N3NsIikKCmtyYWtlbl92aXJhbF9ub3JtIDwtIG5vcm1hbGl6ZShoc19rcmFrZW5fdmlyYWwsIGZpbHRlciA9IFRSVUUsIG5vcm0gPSAiY3BtIiwgdHJhbnNmb3JtID0gImxvZzIiKQpwbG90X2NvcmhlYXQoa3Jha2VuX3ZpcmFsX25vcm0pCnBsb3RfZGlzaGVhdChrcmFrZW5fdmlyYWxfbm9ybSkKcGxvdF9wY2Eoa3Jha2VuX3ZpcmFsX25vcm0pCgpuYXNhbF9rcmFrZW5fdmlyYWwgPC0gc3Vic2V0X3NlKGhzX2tyYWtlbl92aXJhbCwgc3Vic2V0ID0gImNvbmRpdGlvbj09J25hc2FsIHN3YWInIikKbmFzYWxfbm9ybSA8LSBub3JtYWxpemUobmFzYWxfa3Jha2VuX3ZpcmFsLCBmaWx0ZXIgPSBUUlVFLCBub3JtID0gImNwbSIsIHRyYW5zZm9ybSA9ICJsb2cyIikKcGxvdF9jb3JoZWF0KG5hc2FsX25vcm0pCgpoc19rcmFrZW5fYmFjdGVyaWEgPC0gY3JlYXRlX3NlKHByZV9tZXRhW1sibmV3X21ldGEiXV0sIGZpbGVfY29sdW1uID0gImtyYWtlbl9tYXRyaXhfYmFjdGVyaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbmEgPSAiemVybyIpCmhzX2tyYWtlbl9iYWN0ZXJpYSA8LSBzZXRfY29uZGl0aW9ucyhoc19rcmFrZW5fYmFjdGVyaWEsIGZhY3QgPSAic2FtcGxlX3R5cGUiKSAlPiUKICBzZXRfYmF0Y2hlcygiZGV0ZWN0aW9ucGFyYXNpdGVieTdzbCIpCgprcmFrZW5fYmFjdGVyaWFfbm9ybSA8LSBub3JtYWxpemUoaHNfa3Jha2VuX2JhY3RlcmlhLCBmaWx0ZXIgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybSA9ICJjcG0iLCB0cmFuc2Zvcm0gPSAibG9nMiIpCnBsb3RfY29yaGVhdChrcmFrZW5fYmFjdGVyaWFfbm9ybSkKcGxvdF9kaXNoZWF0KGtyYWtlbl9iYWN0ZXJpYV9ub3JtKQpwbG90X3BjYShrcmFrZW5fYmFjdGVyaWFfbm9ybSkKYGBgCgojIE5hc2FsIGFzIGEgcHJveHkgZm9yIGV2ZXJ5dGhpbmcgZWxzZQoKSW4gdGhlIGJlZ2lubmluZyBvZiB0aGlzIGRvY3VtZW50LCBJIGNyZWF0ZWQgYSBwZWN1bGlhciBmYWN0b3Igb3V0IG9mCnRoZSBuYXNhbCBzYW1wbGUgN1NMIHN0YXRlIGFuZCBhcHBsaWVkIGl0cyByZXN1bHQgdG8gZXZlcnkgb3RoZXIKc2FtcGxlIGZvciBlYWNoIHBlcnNvbjsgdGh1cyBhIHBlcnNvbiB3aG8gd2FzIHBvc2l0aXZlIGZvciB0aGUgbmFzYWwKc2FtcGxlIHdhcyBkZWVtZWQgcG9zaXRpdmUgZm9yIGV2ZXJ5dGhpbmcuICBMZXQgdXMgc2VlIHdoYXQgdGhhdCBsb29rcwpsaWtlLi4uCgpgYGB7cn0KbmFzYWxfN3NsX3NhbG1vbl9zZSA8LSBzZXRfY29uZGl0aW9ucyhoc19zYWxtb24sIGZhY3QgPSAibmFzYWxfN3NsX3N0YXR1cyIpCm5hc2FsXzdzbF9oaXNhdF9zZSA8LSBzZXRfY29uZGl0aW9ucyhoc19oaXNhdCwgZmFjdCA9ICJuYXNhbF83c2xfc3RhdHVzIikKCm5hc2FsXzdzbF9zYWxtb25fc2VfbmIgPC0gbm9ybWFsaXplKG5hc2FsXzdzbF9zYWxtb25fc2UsIHRyYW5zZm9ybSA9ICJsb2cyIiwgY29udmVydCA9ICJjcG0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBUUlVFLCBiYXRjaCA9ICJzdmFzZXEiKQpwbG90X3BjYShuYXNhbF83c2xfc2FsbW9uX3NlX25iKQpuYXNhbF83c2xfaGlzYXRfc2VfbmIgPC0gbm9ybWFsaXplKG5hc2FsXzdzbF9oaXNhdF9zZSwgdHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gVFJVRSwgYmF0Y2ggPSAic3Zhc2VxIikKcGxvdF9wY2EobmFzYWxfN3NsX2hpc2F0X3NlX25iKQoKbmFzYWxfN3NsX3NhbG1vbl9kZSA8LSBhbGxfcGFpcndpc2UobmFzYWxfN3NsX3NhbG1vbl9zZSwgZmlsdGVyID0gVFJVRSwgZm9yY2UgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3N2cyA9ICJzdmFzZXEiLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIpCm5hc2FsXzdzbF9zYWxtb25fZGUKbmFzYWxfN3NsX2hpc2F0X2RlIDwtIGFsbF9wYWlyd2lzZShuYXNhbF83c2xfaGlzYXRfc2UsIGZpbHRlciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfc3ZzID0gInN2YXNlcSIsIG1vZGVsX2ZzdHJpbmcgPSAifiAwICsgY29uZGl0aW9uIikKbmFzYWxfN3NsX2hpc2F0X2RlCgpuYXNhbF83c2xfc2FsbW9uX3RhYmxlIDwtIGNvbWJpbmVfZGVfdGFibGVzKG5hc2FsXzdzbF9zYWxtb25fZGUsIGV4Y2VsID0gImV4Y2VsL25hc2FsXzdzbF9wcm94eV90YWJsZS54bHN4IikKbmFzYWxfN3NsX3NhbG1vbl90YWJsZQpuYXNhbF83c2xfaGlzYXRfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMobmFzYWxfN3NsX2hpc2F0X2RlLCBleGNlbCA9ICJleGNlbC9uYXNhbF83c2xfaGlzYXRfcHJveHlfdGFibGUueGxzeCIpCm5hc2FsXzdzbF9oaXNhdF90YWJsZQpgYGAKCk9oLCBNYXJpYSBBZGVsYWlkYSB3YXMgYWN0dWFsbHkgbG9va2luZyBvbmx5IGZvciB0aGUgUEJNQyBzYW1wbGVzLgoKYGBge3J9CnBibWNfbmFzYWxfN3NsX3NlIDwtIHN1YnNldF9zZShoc19zYWxtb24sIHN1YnNldCA9ICJjb25kaXRpb249PSdwYm1jcyciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gIm5hc2FsXzdzbF9zdGF0dXMiKQpwYm1jX25hc2FsXzdzbF9oaXNhdF9zZSA8LSBzdWJzZXRfc2UoaHNfaGlzYXQsIHN1YnNldCA9ICJjb25kaXRpb249PSdwYm1jcyciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gIm5hc2FsXzdzbF9zdGF0dXMiKQoKcGJtY19uYXNhbF9oaXNhdF9ub3JtIDwtIG5vcm1hbGl6ZShwYm1jX25hc2FsXzdzbF9oaXNhdF9zZSwgdHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybSA9ICJxdWFudCIsIGZpbHRlciA9IFRSVUUpCnBsb3RfcGNhKHBibWNfbmFzYWxfaGlzYXRfbm9ybSkKCnBibWNfbmFzYWxfaGlzYXRfbmIgPC0gbm9ybWFsaXplKHBibWNfbmFzYWxfN3NsX2hpc2F0X3NlLCB0cmFuc2Zvcm0gPSAibG9nMiIsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSAic3Zhc2VxIiwgZmlsdGVyID0gInNpbXBsZSIpCnBsb3RfcGNhKHBibWNfbmFzYWxfaGlzYXRfbmIpCgpwYm1jX25hc2FsXzdzbF9kZSA8LSBhbGxfcGFpcndpc2UocGJtY19uYXNhbF83c2xfc2UsIGZpbHRlciA9ICJzaW1wbGUiLCBmb3JjZSA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9zdnMgPSAic3Zhc2VxIiwgbW9kZWxfZnN0cmluZyA9ICJ+IDAgKyBjb25kaXRpb24iKQpwYm1jX25hc2FsXzdzbF90YWJsZSA8LSBjb21iaW5lX2RlX3RhYmxlcyhwYm1jX25hc2FsXzdzbF9kZSwgZXhjZWwgPSAiZXhjZWwvcGJtY19uYXNhbF9wcm94eS54bHN4IikKYGBgCgojIFRPRE8gMjAyNTEyCgpSZXBlYXQgdGhpcyBuYXNhbCBwcm94eSB0ZXN0IHVzaW5nIGVhY2ggb2YgdGhlIG90aGVyIGNlbGwgdHlwZXMuCgpUaGUgZmFjdG9ycyBvZiBsaWtlbHkgaW50ZXJlc3QgYXJlOiAid2JjcyIgIm5hc2FsIHN3YWIiIGlkZWFsbHkgYm90aAoic2tpbiBiaW9wc3kgaGVhbHRoeSIgYW5kICJza2luIGJpb3BzeSBzY2FyIiBidXQgcGVyaGFwcyBvbmx5ICJza2luCmJpb3BzeSIuCgpgYGB7cn0Kd2JjX25hc2FsXzdzbF9zZSA8LSBzdWJzZXRfc2UoaHNfc2FsbW9uLCBzdWJzZXQgPSAiY29uZGl0aW9uPT0nd2JjcyciKSAlPiUKICBzZXRfY29uZGl0aW9ucyhmYWN0ID0gIm5hc2FsXzdzbF9zdGF0dXMiKQp3YmNfbmFzYWxfN3NsX2hpc2F0X3NlIDwtIHN1YnNldF9zZShoc19oaXNhdCwgc3Vic2V0ID0gImNvbmRpdGlvbj09J3diY3MnIikgJT4lCiAgc2V0X2NvbmRpdGlvbnMoZmFjdCA9ICJuYXNhbF83c2xfc3RhdHVzIikKCndiY19uYXNhbF9oaXNhdF9ub3JtIDwtIG5vcm1hbGl6ZSh3YmNfbmFzYWxfN3NsX2hpc2F0X3NlLCB0cmFuc2Zvcm0gPSAibG9nMiIsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICJzaW1wbGUiLCBub3JtID0gInF1YW50IikKcGxvdF9wY2Eod2JjX25hc2FsX2hpc2F0X25vcm0pCndiY19uYXNhbF9oaXNhdF9uYiA8LSBub3JtYWxpemUod2JjX25hc2FsXzdzbF9oaXNhdF9zZSwgdHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gInNpbXBsZSIsIGJhdGNoID0gInN2YXNlcSIpCnBsb3RfcGNhKHdiY19uYXNhbF9oaXNhdF9uYikKCndiY19uYXNhbF83c2xfZGUgPC0gYWxsX3BhaXJ3aXNlKHdiY19uYXNhbF83c2xfc2UsIGZpbHRlciA9ICJzaW1wbGUiLCBmb3JjZSA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3N2cyA9ICJzdmFzZXEiLCBtb2RlbF9mc3RyaW5nID0gIn4gMCArIGNvbmRpdGlvbiIpCndiY19uYXNhbF83c2xfdGFibGUgPC0gY29tYmluZV9kZV90YWJsZXMod2JjX25hc2FsXzdzbF9kZSwgZXhjZWwgPSAiZXhjZWwvd2JjX25hc2FsX3Byb3h5Lnhsc3giKQpgYGAKCiMgVXBsb2FkIGNvdW50IHRhYmxlcyBmb3IgTWFyaWFuYQoKYGBge3J9CnJlYWR5IDwtIHRhcl9tZXRhX2NvbHVtbihoc19oaXNhdCwgY29sdW1uID0gImhpc2F0X2NvdW50X3RhYmxlX2hnMzhfMTE1IikKcmVhZHkgPC0gdGFyX21ldGFfY29sdW1uKGhzX2hpc2F0LCBjb2x1bW4gPSAic2FsbW9uX2NvdW50X3RhYmxlX2hnMzhfMTE1IikKYGBgCgojIEV4cGxpY2l0IGNvbXBhcmlzb24gb2YgbGlicmFyeSB0eXBlcwoKYGBge3J9CmxpYnR5cGVfc2UgPC0gc2V0X2NvbmRpdGlvbnMoaHNfaGlzYXQsIGZhY3QgPSAibGlicmFyeV90eXBlIikgJT4lCiAgc2V0X2JhdGNoZXMoZmFjdCA9ICJzYW1wbGVfdHlwZSIpCmxpYnR5cGVfbm9ybSA8LSBub3JtYWxpemUobGlidHlwZV9zZSwgdHJhbnNmb3JtID0gImxvZzIiLCBjb252ZXJ0ID0gImNwbSIsIG5vcm0gPSAicXVhbnQiLCBmaWx0ZXIgPSBUUlVFKQpwcChmaWxlID0gImltYWdlcy9saWJ0eXBlX25vcm1fcGNhLnBuZyIsIGltYWdlID0gcGxvdF9wY2EobGlidHlwZV9ub3JtKSkKCmxpYnR5cGVfbmIgPC0gbm9ybWFsaXplKGxpYnR5cGVfc2UsIHRyYW5zZm9ybSA9ICJsb2cyIiwgY29udmVydCA9ICJjcG0iLCBiYXRjaCA9ICJzdmFzZXEiLCBmaWx0ZXIgPSBUUlVFKQpwcChmaWxlID0gImltYWdlcy9saWJ0eXBlX25iX3BjYS5wbmciLCBpbWFnZSA9IHBsb3RfcGNhKGxpYnR5cGVfbmIpKQoKbGlidHlwZV9kZSA8LSBhbGxfcGFpcndpc2UobGlidHlwZV9zZSwgZmlsdGVyID0gVFJVRSwgbW9kZWxfc3ZzID0gInN2YXNlcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX2ZzdHJpbmcgPSAifiAwICsgY29uZGl0aW9uIikKYGBgCgojIDIwMjYxMDogQ2xpbmljYWwgUHJlc2VudGF0aW9uOiBIZWFsdGh5IHZzIG5vdAoKQXMgb2YgMjAyNjEwLCB3ZSBoYXZlIDIwIHNhbXBsZXMgd2hpY2ggd2VyZSBuZXZlciBpbmZlY3RlZCBhbmQgMTEzIHdoaWNoIGhhdmUgdmlzaXRlZCB0aGUgY2xpbmljIGFuZAphcmUgY3VycmVudGx5IGRlZW1lZCBoZWFsdGh5LiAgVGhlc2Ugc3BhbiBhbGwgdGhlIGNlbGx0eXBlcy4gIExldCB1cyB0YWtlIGEgbW9tZW50IGFuZCBsb29rIGF0IHRoZW0uCgpgYGB7cn0KcHJlc2VudGF0aW9uX3NlIDwtIHNldF9jb25kaXRpb25zKGhzX2hpc2F0LCBmYWN0ID0gImNsaW5pY2FsX3ByZXNlbnRhdGlvbiIpCnByZXNlbnRhdGlvbl9ub3JtIDwtIG5vcm1hbGl6ZShwcmVzZW50YXRpb25fc2UsIGZpbHRlciA9IFRSVUUsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm0gPSAicXVhbnQiLCB0cmFuc2Zvcm0gPSAibG9nMiIpCnBsb3RfcGNhKHByZXNlbnRhdGlvbl9ub3JtKQoKcHJlc2VudGF0aW9uX25iIDwtIG5vcm1hbGl6ZShwcmVzZW50YXRpb25fc2UsIGZpbHRlciA9IFRSVUUsIGNvbnZlcnQgPSAiY3BtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSAic3Zhc2VxIiwgdHJhbnNmb3JtID0gImxvZzIiKQpwbG90X3BjYShwcmVzZW50YXRpb25fbmIpCmBgYAo=