diff --git a/tests/test_humanpopgen.nf.test b/tests/test_humanpopgen.nf.test new file mode 100644 index 00000000..ee89cfcb --- /dev/null +++ b/tests/test_humanpopgen.nf.test @@ -0,0 +1,142 @@ +nextflow_pipeline { + + name "Test pipeline: NFCORE_EAGER" + script "main.nf" + tag "pipeline" + tag "nfcore_eager" + tag "test_humanpopgen" + profile "test_humanpopgen" + + test("Test `test_humanpopgen` profile:") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + + /////////////////// + // DOCUMENTATION // + /////////////////// + + // The contents of each top level results directory should be tested with individually named snapshots. + // Within each snapshot, there should be two to three distinct variables, that contain the files to be tested. + // - stable_name_ is for files with variable md5sums (i.e. content) so only names will be compared + // - stable_content_ is for files with stable md5sums (i.e. content) so md5sums will be compared + // - bams_ is for BAM files, where the headerMD5 is checked for stability (since the content can be unstable) + // If a directory is fully stable, you can drop `stable_name_*` + // If a directory contains no BAMs, you can drop `bams_*` + + // Generate with: nf-test test --profile +docker --tag test_humanpopgen --update-snapshot + // Test with: nf-test test --profile +docker --tag test_humanpopgen + // NOTE: BAMs are always only stable in name, because: + // a) sharding breaks header since the shard that was first is named in the header (Fixed in https://github.com/nf-core/eager/pull/1112) + // b) the order of the reads in the BAMs is not stable (sorted, but reads that share a start position can be in any order) + // point b) also causes BAIs to be unstable. + // c) Merging of multiple BAMs with duplicate @RG / @PG tags can cause the header to be unstable (particularly in the case of shards/lanes) + + ////////////////////// + // DEFINE VARIABLES // + ////////////////////// + + // Define exclusion patterns for files with unstable contents + // NOTE: When a section needs more than a couple of small patterns, consider adding a variable to store the patterns here + // This is particularly important if the patterns excluded in the stable content section should be included in the stable name section + def unstable_patterns_auth = [ + '**/mapped_reads_gc-content_distribution.txt', + '**/mapped_reads_nucleotide_content.txt', + '**/genome_gc_content_per_window.png', + '**/*.{svg,pdf,html,png}', + '**/DamageProfiler.log', + '**/3p_freq_misincorporations.txt', + '**/DNA_comp_genome.txt', + '**/DNA_composition_sample.txt', + '**/genome_results.txt', + '**/Runtime_log.txt', + '**/3pGtoA_freq.txt', + '**/5pCtoT_freq.txt', + '**/dnacomp.txt', + '**/lgdistribution.txt', + '**/misincorporation.txt', + '**/*sexdeterrmine.tsv', + '**/*command.log', + ] + + // Check that no files are missing/added + // Command legend: Result directory to index , includeDir: include dirs? , ignore: exclude patterns , ignoreFile: exclude pattern list , include: include patterns + def stable_name_all = getAllFilesFromDir("$outputDir/" , includeDir: false , ignore: ['pipeline_info/*'] , ignoreFile: null , include: ['*', '**/*'] ) + + // Authentication + def stable_content_authentication = getAllFilesFromDir("$outputDir/authentication" , includeDir: false , ignore: unstable_patterns_auth , ignoreFile: null , include: ['*', '**/*'] ) + def stable_name_authentication = getAllFilesFromDir("$outputDir/authentication" , includeDir: false , ignore: null , ignoreFile: null , include: unstable_patterns_auth) + + // Damage manipulation + def stable_content_damage_manipulation = getAllFilesFromDir("$outputDir/damage_manipulation" , includeDir: false , ignore: ['**/*.{bam,bai}'] , ignoreFile: null , include: ['*', '**/*'] ) + def stable_name_damage_manipulation = getAllFilesFromDir("$outputDir/damage_manipulation" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{bam,bai}'] ) + + // Deduplication + def stable_content_deduplication = getAllFilesFromDir("$outputDir/deduplication" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.flagstat'] ) + def stable_name_deduplication = getAllFilesFromDir("$outputDir/deduplication" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{bam,bai}'] ) + + // Final_bams + def stable_content_final_bams = getAllFilesFromDir("$outputDir/final_bams" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.flagstat'] ) + def stable_name_final_bams = getAllFilesFromDir("$outputDir/final_bams" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{bam,bai}'] ) + + // Genotyping + def stable_content_genotyping = getAllFilesFromDir("$outputDir/genotyping" , includeDir: false , ignore: ['**/*.{geno,ind,snp,tsv}'] , ignoreFile: null , include: ['**/*'] ) + def stable_name_genotyping = getAllFilesFromDir("$outputDir/genotyping" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{geno,ind,snp,tsv}'] ) + + // Mapping (incl. bam_input flasgstat) + def stable_content_mapping = getAllFilesFromDir("$outputDir/mapping" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.flagstat'] ) + def stable_name_mapping = getAllFilesFromDir("$outputDir/mapping" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{bam,bai}'] ) + + // Metagenomics + def stable_content_metagenomics = getAllFilesFromDir("$outputDir/metagenomics" , includeDir: false , ignore: ['**/*.biom', '**/*table.tsv'], ignoreFile: null , include: ['**/*'] ) + def stable_name_metagenomics = getAllFilesFromDir("$outputDir/metagenomics" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.biom', '**/*table.tsv'] ) + + // Preprocessing + // NOTE: FastQC html appears stable, but I worry it might just include a day timestamp instead of a full timestamp. To keep the expression simpler I removed both from checksum testing. + def stable_content_preprocessing = getAllFilesFromDir("$outputDir/preprocessing" , includeDir: false , ignore: ['**/*.{zip,log,html}'] , ignoreFile: null , include: ['**/*'] ) + def stable_name_preprocessing = getAllFilesFromDir("$outputDir/preprocessing" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{zip,log,html}'] ) + + // Read filtering + def stable_content_readfiltering = getAllFilesFromDir("$outputDir/read_filtering" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.flagstat'] ) + def stable_name_readfiltering = getAllFilesFromDir("$outputDir/read_filtering" , includeDir: false , ignore: null , ignoreFile: null , include: ['**/*.{bam,bai}'] ) + + // MultiQC + def stable_name_multiqc = getAllFilesFromDir("$outputDir/multiqc" , includeDir: false , ignore: null , ignoreFile: null , include: ['*', '**/*'] ) + + /////////////////////// + // DEFINE ASSERTIONS // + /////////////////////// + + assertAll( + { assert workflow.success }, + // This checks that there are no missing or additional output files. + // Also a good starting point to look at all the files in the output folder than need to be checked in subsequent sections. + { assert snapshot( stable_name_all*.name ).match("all_files") }, + + // Checking changes to contents of each section + // NOTE: Keep the order of the sections in the alphanumeric order of the output directories. + // Each section should first check stable_content, stable_name second (if applicable). + { assert snapshot( stable_content_authentication , stable_name_authentication*.name ).match("authentication") }, + { assert snapshot( stable_content_damage_manipulation , stable_name_damage_manipulation*.name ).match("damage_manipulation") }, + { assert snapshot( stable_content_deduplication , stable_name_deduplication*.name ).match("deduplication") }, + { assert snapshot( stable_content_final_bams , stable_name_final_bams*.name ).match("final_bams") }, + { assert snapshot( stable_content_genotyping , stable_name_genotyping*.name ).match("genotyping") }, + // NOTE: The snapshot section for mapping cannot be named 'mapping'. See https://github.com/askimed/nf-test/issues/279 + { assert snapshot( stable_content_mapping , stable_name_mapping*.name ).match("mapping_output") }, + { assert snapshot( stable_content_metagenomics , stable_name_metagenomics*.name ).match("metagenomics") }, + { assert snapshot( stable_content_preprocessing , stable_name_preprocessing*.name ).match("preprocessing") }, + { assert snapshot( stable_content_readfiltering , stable_name_readfiltering*.name ).match("read_filtering") }, + { assert snapshot( stable_name_multiqc*.name ).match("multiqc") }, + + // Versions + { assert new File("$outputDir/pipeline_info/nf_core_eager_software_mqc_versions.yml").exists() }, + + ) + } + } +} diff --git a/tests/test_humanpopgen.nf.test.snap b/tests/test_humanpopgen.nf.test.snap new file mode 100644 index 00000000..5648bae6 --- /dev/null +++ b/tests/test_humanpopgen.nf.test.snap @@ -0,0 +1,776 @@ +{ + "all_files": { + "content": [ + [ + "JK2067_JK2067_hs37d5_chr21-MT.txt", + "nuclear_contamination.txt", + "nuclear_contamination_mqc.json", + "JK2067_JK2067_hs37d5_chr21-MT_percent_on_target_mqc.json", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_percent_on_target_mqc.json", + "3pGtoA_freq.txt", + "5pCtoT_freq.txt", + "Fragmisincorporation_plot.pdf", + "Length_plot.pdf", + "Runtime_log.txt", + "dnacomp.txt", + "lgdistribution.txt", + "misincorporation.txt", + "3pGtoA_freq.txt", + "5pCtoT_freq.txt", + "Fragmisincorporation_plot.pdf", + "Length_plot.pdf", + "Runtime_log.txt", + "dnacomp.txt", + "lgdistribution.txt", + "misincorporation.txt", + "JK2067_JK2067_hs37d5_chr21-MT.c_curve.txt", + "JK2067_JK2067_hs37d5_chr21-MT.command.log", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT.c_curve.txt", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT.command.log", + "agogo.css", + "ajax-loader.gif", + "basic.css", + "bgfooter.png", + "bgtop.png", + "comment-bright.png", + "comment-close.png", + "comment.png", + "doctools.js", + "down-pressed.png", + "down.png", + "file.png", + "jquery.js", + "minus.png", + "plus.png", + "pygments.css", + "qualimap_logo_small.png", + "report.css", + "searchtools.js", + "underscore.js", + "up-pressed.png", + "up.png", + "websupport.js", + "genome_results.txt", + "genome_coverage_0to50_histogram.png", + "genome_coverage_across_reference.png", + "genome_coverage_histogram.png", + "genome_coverage_quotes.png", + "genome_gc_content_per_window.png", + "genome_homopolymer_indels.png", + "genome_mapping_quality_across_reference.png", + "genome_mapping_quality_histogram.png", + "genome_reads_clipping_profile.png", + "genome_reads_content_per_read_position.png", + "genome_uniq_read_starts_histogram.png", + "qualimapReport.html", + "coverage_across_reference.txt", + "coverage_histogram.txt", + "duplication_rate_histogram.txt", + "genome_fraction_coverage.txt", + "homopolymer_indels.txt", + "mapped_reads_clipping_profile.txt", + "mapped_reads_gc-content_distribution.txt", + "mapped_reads_nucleotide_content.txt", + "mapping_quality_across_reference.txt", + "mapping_quality_histogram.txt", + "agogo.css", + "ajax-loader.gif", + "basic.css", + "bgfooter.png", + "bgtop.png", + "comment-bright.png", + "comment-close.png", + "comment.png", + "doctools.js", + "down-pressed.png", + "down.png", + "file.png", + "jquery.js", + "minus.png", + "plus.png", + "pygments.css", + "qualimap_logo_small.png", + "report.css", + "searchtools.js", + "underscore.js", + "up-pressed.png", + "up.png", + "websupport.js", + "genome_results.txt", + "genome_coverage_0to50_histogram.png", + "genome_coverage_across_reference.png", + "genome_coverage_histogram.png", + "genome_coverage_quotes.png", + "genome_gc_content_per_window.png", + "genome_homopolymer_indels.png", + "genome_mapping_quality_across_reference.png", + "genome_mapping_quality_histogram.png", + "genome_reads_clipping_profile.png", + "genome_reads_content_per_read_position.png", + "genome_uniq_read_starts_histogram.png", + "qualimapReport.html", + "coverage_across_reference.txt", + "coverage_histogram.txt", + "duplication_rate_histogram.txt", + "genome_fraction_coverage.txt", + "homopolymer_indels.txt", + "mapped_reads_clipping_profile.txt", + "mapped_reads_gc-content_distribution.txt", + "mapped_reads_nucleotide_content.txt", + "mapping_quality_across_reference.txt", + "mapping_quality_histogram.txt", + "hs37d5_chr21-MT_sexdeterrmine.tsv", + "JK2067_JK2067_hs37d5_chr21-MT_trimmed.bam", + "JK2067_JK2067_hs37d5_chr21-MT_trimmed.bam.bai", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_trimmed.bam", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_trimmed.bam.bai", + "JK2067_JK2067_hs37d5_chr21-MT_dedupped.bam", + "JK2067_JK2067_hs37d5_chr21-MT_dedupped.bam.bai", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_dedupped.bam", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_dedupped.bam.bai", + "JK2067_JK2067_hs37d5_chr21-MT_dedupped.flagstat", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_dedupped.flagstat", + "JK2067_downsampled_hs37d5_chr21-MT.bam", + "JK2067_downsampled_hs37d5_chr21-MT.bam.bai", + "JK2067_hs37d5_chr21-MT.bam", + "JK2067_hs37d5_chr21-MT.bam.bai", + "JK2067_downsampled_hs37d5_chr21-MT.flagstat", + "JK2067_hs37d5_chr21-MT.flagstat", + "JK2067_downsampled_hs37d5_chr21-MT.bam", + "JK2067_downsampled_hs37d5_chr21-MT.bam.bai", + "JK2067_hs37d5_chr21-MT.bam", + "JK2067_hs37d5_chr21-MT.bam.bai", + "JK2067_downsampled_hs37d5_chr21-MT.flagstat", + "JK2067_hs37d5_chr21-MT.flagstat", + "pileupcaller_genotypes_hs37d5_chr21-MT.geno", + "pileupcaller_genotypes_hs37d5_chr21-MT.ind", + "pileupcaller_genotypes_hs37d5_chr21-MT.snp", + "pileupcaller_genotypes_hs37d5_chr21-MT_coverage.tsv", + "JK2067_JK2067_hs37d5_chr21-MT_sorted.bam", + "JK2067_JK2067_hs37d5_chr21-MT_sorted.bam.bai", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_sorted.bam", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_sorted.bam.bai", + "JK2067_JK2067_hs37d5_chr21-MT_sorted.flagstat", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_sorted.flagstat", + "JK2067_JK2067_hs37d5_chr21-MT.kraken2.report.txt", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT.kraken2.report.txt", + "kraken2_taxpasta_table.tsv", + "BETA-multiqc.parquet", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "fastp-seq-quality-plot_Read_1_After_filtering.txt", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "fastp_filtered_reads_plot.txt", + "fastqc-status-check-heatmap.txt", + "fastqc_adapter_content_plot.txt", + "fastqc_overrepresented_sequences_plot.txt", + "fastqc_per_base_n_content_plot.txt", + "fastqc_per_base_sequence_quality_plot.txt", + "fastqc_per_sequence_gc_content_plot_Counts.txt", + "fastqc_per_sequence_gc_content_plot_Percentages.txt", + "fastqc_per_sequence_quality_scores_plot.txt", + "fastqc_sequence_counts_plot.txt", + "fastqc_sequence_duplication_levels_plot.txt", + "fastqc_sequence_length_distribution_plot.txt", + "fastqc_top_overrepresented_sequences_table.txt", + "kraken-top-n-plot.txt", + "multiqc.log", + "multiqc_citations.txt", + "multiqc_data.json", + "multiqc_fastp.txt", + "multiqc_fastqc.txt", + "multiqc_general_stats.txt", + "multiqc_kraken.txt", + "multiqc_qualimap_bamqc_genome_results.txt", + "multiqc_samtools_flagstat.txt", + "multiqc_sexdeter_metrics.txt", + "multiqc_software_versions.txt", + "multiqc_sources.txt", + "preseq.txt", + "preseq_complexity_plot_molecules.txt", + "qualimap_coverage_histogram.txt", + "qualimap_gc_content.txt", + "qualimap_genome_fraction.txt", + "samtools-flagstat-pct-table.txt", + "samtools-flagstat-table.txt", + "sexdeterrmine-rate-plot.txt", + "sexdeterrmine-readcounts-plot.txt", + "sexdeterrmine-snps-plot.txt", + "fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "fastp_filtered_reads_plot-cnt.pdf", + "fastp_filtered_reads_plot-pct.pdf", + "fastqc-status-check-heatmap.pdf", + "fastqc_adapter_content_plot.pdf", + "fastqc_overrepresented_sequences_plot.pdf", + "fastqc_per_base_n_content_plot.pdf", + "fastqc_per_base_sequence_quality_plot.pdf", + "fastqc_per_sequence_gc_content_plot_Counts.pdf", + "fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "fastqc_per_sequence_quality_scores_plot.pdf", + "fastqc_sequence_counts_plot-cnt.pdf", + "fastqc_sequence_counts_plot-pct.pdf", + "fastqc_sequence_duplication_levels_plot.pdf", + "fastqc_sequence_length_distribution_plot.pdf", + "fastqc_top_overrepresented_sequences_table.pdf", + "kraken-top-n-plot-cnt.pdf", + "kraken-top-n-plot-pct.pdf", + "preseq_complexity_plot_molecules.pdf", + "qualimap_coverage_histogram.pdf", + "qualimap_gc_content.pdf", + "qualimap_genome_fraction.pdf", + "samtools-flagstat-pct-table.pdf", + "samtools-flagstat-table.pdf", + "sexdeterrmine-rate-plot.pdf", + "sexdeterrmine-readcounts-plot-cnt.pdf", + "sexdeterrmine-readcounts-plot-pct.pdf", + "sexdeterrmine-snps-plot-cnt.pdf", + "sexdeterrmine-snps-plot-pct.pdf", + "fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "fastp-seq-content-n-plot_Read_1_After_filtering.png", + "fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "fastp-seq-quality-plot_Read_1_After_filtering.png", + "fastp-seq-quality-plot_Read_1_Before_filtering.png", + "fastp_filtered_reads_plot-cnt.png", + "fastp_filtered_reads_plot-pct.png", + "fastqc-status-check-heatmap.png", + "fastqc_adapter_content_plot.png", + "fastqc_overrepresented_sequences_plot.png", + "fastqc_per_base_n_content_plot.png", + "fastqc_per_base_sequence_quality_plot.png", + "fastqc_per_sequence_gc_content_plot_Counts.png", + "fastqc_per_sequence_gc_content_plot_Percentages.png", + "fastqc_per_sequence_quality_scores_plot.png", + "fastqc_sequence_counts_plot-cnt.png", + "fastqc_sequence_counts_plot-pct.png", + "fastqc_sequence_duplication_levels_plot.png", + "fastqc_sequence_length_distribution_plot.png", + "fastqc_top_overrepresented_sequences_table.png", + "kraken-top-n-plot-cnt.png", + "kraken-top-n-plot-pct.png", + "preseq_complexity_plot_molecules.png", + "qualimap_coverage_histogram.png", + "qualimap_gc_content.png", + "qualimap_genome_fraction.png", + "samtools-flagstat-pct-table.png", + "samtools-flagstat-table.png", + "sexdeterrmine-rate-plot.png", + "sexdeterrmine-readcounts-plot-cnt.png", + "sexdeterrmine-readcounts-plot-pct.png", + "sexdeterrmine-snps-plot-cnt.png", + "sexdeterrmine-snps-plot-pct.png", + "fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "fastp-seq-quality-plot_Read_1_After_filtering.svg", + "fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "fastp_filtered_reads_plot-cnt.svg", + "fastp_filtered_reads_plot-pct.svg", + "fastqc-status-check-heatmap.svg", + "fastqc_adapter_content_plot.svg", + "fastqc_overrepresented_sequences_plot.svg", + "fastqc_per_base_n_content_plot.svg", + "fastqc_per_base_sequence_quality_plot.svg", + "fastqc_per_sequence_gc_content_plot_Counts.svg", + "fastqc_per_sequence_gc_content_plot_Percentages.svg", + "fastqc_per_sequence_quality_scores_plot.svg", + "fastqc_sequence_counts_plot-cnt.svg", + "fastqc_sequence_counts_plot-pct.svg", + "fastqc_sequence_duplication_levels_plot.svg", + "fastqc_sequence_length_distribution_plot.svg", + "fastqc_top_overrepresented_sequences_table.svg", + "kraken-top-n-plot-cnt.svg", + "kraken-top-n-plot-pct.svg", + "preseq_complexity_plot_molecules.svg", + "qualimap_coverage_histogram.svg", + "qualimap_gc_content.svg", + "qualimap_genome_fraction.svg", + "samtools-flagstat-pct-table.svg", + "samtools-flagstat-table.svg", + "sexdeterrmine-rate-plot.svg", + "sexdeterrmine-readcounts-plot-cnt.svg", + "sexdeterrmine-readcounts-plot-pct.svg", + "sexdeterrmine-snps-plot-cnt.svg", + "sexdeterrmine-snps-plot-pct.svg", + "multiqc_report.html", + "JK2067_JK2067_L1.fastp.html", + "JK2067_JK2067_L1.fastp.json", + "JK2067_JK2067_L1.fastp.log", + "JK2067_downsampled_JK2067_downsampled_L1.fastp.html", + "JK2067_downsampled_JK2067_downsampled_L1.fastp.json", + "JK2067_downsampled_JK2067_downsampled_L1.fastp.log", + "JK2067_JK2067_L1_fastqc.html", + "JK2067_JK2067_L1_fastqc.zip", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.html", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.zip", + "JK2067_JK2067_L1_fastqc.html", + "JK2067_JK2067_L1_fastqc.zip", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.html", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.zip", + "JK2067_JK2067_hs37d5_chr21-MT_filtered.flagstat", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_filtered.flagstat", + "JK2067.bam", + "JK2067_downsampled.bam" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-12T11:00:18.111975" + }, + "read_filtering": { + "content": [ + [ + "JK2067_JK2067_hs37d5_chr21-MT_filtered.flagstat:md5,7bfcb98518da1effa455877940f59540", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_filtered.flagstat:md5,ff3c4174ff6487ed9cc6f75cf6fb8112" + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.829647" + }, + "preprocessing": { + "content": [ + [ + "JK2067_JK2067_L1.fastp.json:md5,bd5b6096106d9ae77b01bb0931531d49", + "JK2067_downsampled_JK2067_downsampled_L1.fastp.json:md5,f0e81dea32c29842d89b81514610d313" + ], + [ + "JK2067_JK2067_L1.fastp.html", + "JK2067_JK2067_L1.fastp.log", + "JK2067_downsampled_JK2067_downsampled_L1.fastp.html", + "JK2067_downsampled_JK2067_downsampled_L1.fastp.log", + "JK2067_JK2067_L1_fastqc.html", + "JK2067_JK2067_L1_fastqc.zip", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.html", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.zip", + "JK2067_JK2067_L1_fastqc.html", + "JK2067_JK2067_L1_fastqc.zip", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.html", + "JK2067_downsampled_JK2067_downsampled_L1_fastqc.zip" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.757095" + }, + "metagenomics": { + "content": [ + [ + "JK2067_JK2067_hs37d5_chr21-MT.kraken2.report.txt:md5,0dfee3834b130c291e2dff5f2625cb97", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT.kraken2.report.txt:md5,5e35ba5bd6f2df3b725dfe778561e9ea" + ], + [ + "kraken2_taxpasta_table.tsv" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.69957" + }, + "genotyping": { + "content": [ + [ + + ], + [ + "pileupcaller_genotypes_hs37d5_chr21-MT.geno", + "pileupcaller_genotypes_hs37d5_chr21-MT.ind", + "pileupcaller_genotypes_hs37d5_chr21-MT.snp", + "pileupcaller_genotypes_hs37d5_chr21-MT_coverage.tsv" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.541344" + }, + "damage_manipulation": { + "content": [ + [ + + ], + [ + "JK2067_JK2067_hs37d5_chr21-MT_trimmed.bam", + "JK2067_JK2067_hs37d5_chr21-MT_trimmed.bam.bai", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_trimmed.bam", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_trimmed.bam.bai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.271342" + }, + "final_bams": { + "content": [ + [ + "JK2067_downsampled_hs37d5_chr21-MT.flagstat:md5,fd0ef26c9aeb43d4ae29b7f2ebe77f97", + "JK2067_hs37d5_chr21-MT.flagstat:md5,e7cffe3c84399253db5eeb3e50c56e9e", + "JK2067_downsampled_hs37d5_chr21-MT.flagstat:md5,fd0ef26c9aeb43d4ae29b7f2ebe77f97", + "JK2067_hs37d5_chr21-MT.flagstat:md5,e7cffe3c84399253db5eeb3e50c56e9e" + ], + [ + "JK2067_downsampled_hs37d5_chr21-MT.bam", + "JK2067_downsampled_hs37d5_chr21-MT.bam.bai", + "JK2067_hs37d5_chr21-MT.bam", + "JK2067_hs37d5_chr21-MT.bam.bai", + "JK2067_downsampled_hs37d5_chr21-MT.bam", + "JK2067_downsampled_hs37d5_chr21-MT.bam.bai", + "JK2067_hs37d5_chr21-MT.bam", + "JK2067_hs37d5_chr21-MT.bam.bai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.440048" + }, + "deduplication": { + "content": [ + [ + "JK2067_JK2067_hs37d5_chr21-MT_dedupped.flagstat:md5,e7cffe3c84399253db5eeb3e50c56e9e", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_dedupped.flagstat:md5,fd0ef26c9aeb43d4ae29b7f2ebe77f97" + ], + [ + "JK2067_JK2067_hs37d5_chr21-MT_dedupped.bam", + "JK2067_JK2067_hs37d5_chr21-MT_dedupped.bam.bai", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_dedupped.bam", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_dedupped.bam.bai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.374672" + }, + "multiqc": { + "content": [ + [ + "BETA-multiqc.parquet", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "fastp-seq-quality-plot_Read_1_After_filtering.txt", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "fastp_filtered_reads_plot.txt", + "fastqc-status-check-heatmap.txt", + "fastqc_adapter_content_plot.txt", + "fastqc_overrepresented_sequences_plot.txt", + "fastqc_per_base_n_content_plot.txt", + "fastqc_per_base_sequence_quality_plot.txt", + "fastqc_per_sequence_gc_content_plot_Counts.txt", + "fastqc_per_sequence_gc_content_plot_Percentages.txt", + "fastqc_per_sequence_quality_scores_plot.txt", + "fastqc_sequence_counts_plot.txt", + "fastqc_sequence_duplication_levels_plot.txt", + "fastqc_sequence_length_distribution_plot.txt", + "fastqc_top_overrepresented_sequences_table.txt", + "kraken-top-n-plot.txt", + "multiqc.log", + "multiqc_citations.txt", + "multiqc_data.json", + "multiqc_fastp.txt", + "multiqc_fastqc.txt", + "multiqc_general_stats.txt", + "multiqc_kraken.txt", + "multiqc_qualimap_bamqc_genome_results.txt", + "multiqc_samtools_flagstat.txt", + "multiqc_sexdeter_metrics.txt", + "multiqc_software_versions.txt", + "multiqc_sources.txt", + "preseq.txt", + "preseq_complexity_plot_molecules.txt", + "qualimap_coverage_histogram.txt", + "qualimap_gc_content.txt", + "qualimap_genome_fraction.txt", + "samtools-flagstat-pct-table.txt", + "samtools-flagstat-table.txt", + "sexdeterrmine-rate-plot.txt", + "sexdeterrmine-readcounts-plot.txt", + "sexdeterrmine-snps-plot.txt", + "fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "fastp_filtered_reads_plot-cnt.pdf", + "fastp_filtered_reads_plot-pct.pdf", + "fastqc-status-check-heatmap.pdf", + "fastqc_adapter_content_plot.pdf", + "fastqc_overrepresented_sequences_plot.pdf", + "fastqc_per_base_n_content_plot.pdf", + "fastqc_per_base_sequence_quality_plot.pdf", + "fastqc_per_sequence_gc_content_plot_Counts.pdf", + "fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "fastqc_per_sequence_quality_scores_plot.pdf", + "fastqc_sequence_counts_plot-cnt.pdf", + "fastqc_sequence_counts_plot-pct.pdf", + "fastqc_sequence_duplication_levels_plot.pdf", + "fastqc_sequence_length_distribution_plot.pdf", + "fastqc_top_overrepresented_sequences_table.pdf", + "kraken-top-n-plot-cnt.pdf", + "kraken-top-n-plot-pct.pdf", + "preseq_complexity_plot_molecules.pdf", + "qualimap_coverage_histogram.pdf", + "qualimap_gc_content.pdf", + "qualimap_genome_fraction.pdf", + "samtools-flagstat-pct-table.pdf", + "samtools-flagstat-table.pdf", + "sexdeterrmine-rate-plot.pdf", + "sexdeterrmine-readcounts-plot-cnt.pdf", + "sexdeterrmine-readcounts-plot-pct.pdf", + "sexdeterrmine-snps-plot-cnt.pdf", + "sexdeterrmine-snps-plot-pct.pdf", + "fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "fastp-seq-content-n-plot_Read_1_After_filtering.png", + "fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "fastp-seq-quality-plot_Read_1_After_filtering.png", + "fastp-seq-quality-plot_Read_1_Before_filtering.png", + "fastp_filtered_reads_plot-cnt.png", + "fastp_filtered_reads_plot-pct.png", + "fastqc-status-check-heatmap.png", + "fastqc_adapter_content_plot.png", + "fastqc_overrepresented_sequences_plot.png", + "fastqc_per_base_n_content_plot.png", + "fastqc_per_base_sequence_quality_plot.png", + "fastqc_per_sequence_gc_content_plot_Counts.png", + "fastqc_per_sequence_gc_content_plot_Percentages.png", + "fastqc_per_sequence_quality_scores_plot.png", + "fastqc_sequence_counts_plot-cnt.png", + "fastqc_sequence_counts_plot-pct.png", + "fastqc_sequence_duplication_levels_plot.png", + "fastqc_sequence_length_distribution_plot.png", + "fastqc_top_overrepresented_sequences_table.png", + "kraken-top-n-plot-cnt.png", + "kraken-top-n-plot-pct.png", + "preseq_complexity_plot_molecules.png", + "qualimap_coverage_histogram.png", + "qualimap_gc_content.png", + "qualimap_genome_fraction.png", + "samtools-flagstat-pct-table.png", + "samtools-flagstat-table.png", + "sexdeterrmine-rate-plot.png", + "sexdeterrmine-readcounts-plot-cnt.png", + "sexdeterrmine-readcounts-plot-pct.png", + "sexdeterrmine-snps-plot-cnt.png", + "sexdeterrmine-snps-plot-pct.png", + "fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "fastp-seq-quality-plot_Read_1_After_filtering.svg", + "fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "fastp_filtered_reads_plot-cnt.svg", + "fastp_filtered_reads_plot-pct.svg", + "fastqc-status-check-heatmap.svg", + "fastqc_adapter_content_plot.svg", + "fastqc_overrepresented_sequences_plot.svg", + "fastqc_per_base_n_content_plot.svg", + "fastqc_per_base_sequence_quality_plot.svg", + "fastqc_per_sequence_gc_content_plot_Counts.svg", + "fastqc_per_sequence_gc_content_plot_Percentages.svg", + "fastqc_per_sequence_quality_scores_plot.svg", + "fastqc_sequence_counts_plot-cnt.svg", + "fastqc_sequence_counts_plot-pct.svg", + "fastqc_sequence_duplication_levels_plot.svg", + "fastqc_sequence_length_distribution_plot.svg", + "fastqc_top_overrepresented_sequences_table.svg", + "kraken-top-n-plot-cnt.svg", + "kraken-top-n-plot-pct.svg", + "preseq_complexity_plot_molecules.svg", + "qualimap_coverage_histogram.svg", + "qualimap_gc_content.svg", + "qualimap_genome_fraction.svg", + "samtools-flagstat-pct-table.svg", + "samtools-flagstat-table.svg", + "sexdeterrmine-rate-plot.svg", + "sexdeterrmine-readcounts-plot-cnt.svg", + "sexdeterrmine-readcounts-plot-pct.svg", + "sexdeterrmine-snps-plot-cnt.svg", + "sexdeterrmine-snps-plot-pct.svg", + "multiqc_report.html" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-12T11:00:18.586234" + }, + "mapping_output": { + "content": [ + [ + "JK2067_JK2067_hs37d5_chr21-MT_sorted.flagstat:md5,f5fd5eb0506f75cb1ff549258a4cad94", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_sorted.flagstat:md5,6cc4612fbc5f28dcba4659796fafcd91" + ], + [ + "JK2067_JK2067_hs37d5_chr21-MT_sorted.bam", + "JK2067_JK2067_hs37d5_chr21-MT_sorted.bam.bai", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_sorted.bam", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_sorted.bam.bai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-08-15T10:45:18.643808" + }, + "authentication": { + "content": [ + [ + "JK2067_JK2067_hs37d5_chr21-MT.txt:md5,1989edd81ff1c31f3ad591cb85a10571", + "nuclear_contamination.txt:md5,a556d98cf65911939076d6e66ef02082", + "nuclear_contamination_mqc.json:md5,17b375d14aba284892a3ac889eceb25a", + "JK2067_JK2067_hs37d5_chr21-MT_percent_on_target_mqc.json:md5,d796c89b343f15329df91d5e79f5200c", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT_percent_on_target_mqc.json:md5,67fc863363b85e952f1a6a06e79aa696", + "JK2067_JK2067_hs37d5_chr21-MT.c_curve.txt:md5,bfb7054f2a6723e8d29697f9a3107ef8", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT.c_curve.txt:md5,cf4743abdd355595d6ec1fb3f38e66e5", + "agogo.css:md5,bd757b1a7ce6fdc0288ba148680f4583", + "ajax-loader.gif:md5,ae6667053ad118020b8e68ccf307b519", + "basic.css:md5,25b2823342c0604924a2870eeb4e7e94", + "doctools.js:md5,5ff571aa60e63f69c1890283e240ff8d", + "jquery.js:md5,10092eee563dec2dca82b77d2cf5a1ae", + "pygments.css:md5,d625a0adb949f181bd0d3f1432b0fa7f", + "report.css:md5,7a5f09eaf7c176f966f4e8854168b812", + "searchtools.js:md5,d550841adeedc8ed47c40ee607620937", + "underscore.js:md5,db5ba047a66617d4cd3e8c5099cc51db", + "websupport.js:md5,9e61e1e8a7433c56bd7e5a615affcf85", + "coverage_across_reference.txt:md5,e50d6b2b34ca7dc5987acb32dc6e7986", + "coverage_histogram.txt:md5,efc7c6d0a7c409dca57e4456a664cc88", + "duplication_rate_histogram.txt:md5,ef4ffbb82e6fc94faee75543b5e4dd38", + "genome_fraction_coverage.txt:md5,4857ba624aa2c84d6d25ce2e60c8269b", + "homopolymer_indels.txt:md5,4486a4ba037b71eb7fe64cbd0d92cce4", + "mapped_reads_clipping_profile.txt:md5,cd72082640b245c9d9f4d328406c01d6", + "mapping_quality_across_reference.txt:md5,03d3e62c859c0a487367ae5f9c92a557", + "mapping_quality_histogram.txt:md5,c6916c99da72c60fdbd2030cb58abf96", + "agogo.css:md5,bd757b1a7ce6fdc0288ba148680f4583", + "ajax-loader.gif:md5,ae6667053ad118020b8e68ccf307b519", + "basic.css:md5,25b2823342c0604924a2870eeb4e7e94", + "doctools.js:md5,5ff571aa60e63f69c1890283e240ff8d", + "jquery.js:md5,10092eee563dec2dca82b77d2cf5a1ae", + "pygments.css:md5,d625a0adb949f181bd0d3f1432b0fa7f", + "report.css:md5,7a5f09eaf7c176f966f4e8854168b812", + "searchtools.js:md5,d550841adeedc8ed47c40ee607620937", + "underscore.js:md5,db5ba047a66617d4cd3e8c5099cc51db", + "websupport.js:md5,9e61e1e8a7433c56bd7e5a615affcf85", + "coverage_across_reference.txt:md5,9d545368354b64d1b7b9b403894a3d2b", + "coverage_histogram.txt:md5,006f2aaff0c1dc340c329da00fbef92d", + "duplication_rate_histogram.txt:md5,8a023114a7a7833886f6faa915713ba9", + "genome_fraction_coverage.txt:md5,f38d0b862860f4c7b3aead9a08a52591", + "homopolymer_indels.txt:md5,12b02d88477f31cfa9a37a4534769548", + "mapped_reads_clipping_profile.txt:md5,7bec3e1b9f4819404bf354ebd17ec2a9", + "mapping_quality_across_reference.txt:md5,6e8f8d88ec82fbaf3e8c4886a7c7f7ae", + "mapping_quality_histogram.txt:md5,94440fea2edec0799d504e2ac1ecc09a" + ], + [ + "3pGtoA_freq.txt", + "5pCtoT_freq.txt", + "Fragmisincorporation_plot.pdf", + "Length_plot.pdf", + "Runtime_log.txt", + "dnacomp.txt", + "lgdistribution.txt", + "misincorporation.txt", + "3pGtoA_freq.txt", + "5pCtoT_freq.txt", + "Fragmisincorporation_plot.pdf", + "Length_plot.pdf", + "Runtime_log.txt", + "dnacomp.txt", + "lgdistribution.txt", + "misincorporation.txt", + "JK2067_JK2067_hs37d5_chr21-MT.command.log", + "JK2067_downsampled_JK2067_downsampled_hs37d5_chr21-MT.command.log", + "bgfooter.png", + "bgtop.png", + "comment-bright.png", + "comment-close.png", + "comment.png", + "down-pressed.png", + "down.png", + "file.png", + "minus.png", + "plus.png", + "qualimap_logo_small.png", + "up-pressed.png", + "up.png", + "genome_results.txt", + "genome_coverage_0to50_histogram.png", + "genome_coverage_across_reference.png", + "genome_coverage_histogram.png", + "genome_coverage_quotes.png", + "genome_gc_content_per_window.png", + "genome_homopolymer_indels.png", + "genome_mapping_quality_across_reference.png", + "genome_mapping_quality_histogram.png", + "genome_reads_clipping_profile.png", + "genome_reads_content_per_read_position.png", + "genome_uniq_read_starts_histogram.png", + "qualimapReport.html", + "mapped_reads_gc-content_distribution.txt", + "mapped_reads_nucleotide_content.txt", + "bgfooter.png", + "bgtop.png", + "comment-bright.png", + "comment-close.png", + "comment.png", + "down-pressed.png", + "down.png", + "file.png", + "minus.png", + "plus.png", + "qualimap_logo_small.png", + "up-pressed.png", + "up.png", + "genome_results.txt", + "genome_coverage_0to50_histogram.png", + "genome_coverage_across_reference.png", + "genome_coverage_histogram.png", + "genome_coverage_quotes.png", + "genome_gc_content_per_window.png", + "genome_homopolymer_indels.png", + "genome_mapping_quality_across_reference.png", + "genome_mapping_quality_histogram.png", + "genome_reads_clipping_profile.png", + "genome_reads_content_per_read_position.png", + "genome_uniq_read_starts_histogram.png", + "qualimapReport.html", + "mapped_reads_gc-content_distribution.txt", + "mapped_reads_nucleotide_content.txt", + "hs37d5_chr21-MT_sexdeterrmine.tsv" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.7" + }, + "timestamp": "2025-09-12T13:06:18.772238" + } +} \ No newline at end of file