From 5cf89c6b1ec85315ccaf0e1e12a16d574246e89f Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Tue, 14 Apr 2026 12:31:24 -0500 Subject: [PATCH 01/14] addition of bowtie2 alignment option --- conf/modules.config | 40 +- modules/nf-core/bowtie2/align/environment.yml | 13 + modules/nf-core/bowtie2/align/main.nf | 116 ++++ modules/nf-core/bowtie2/align/meta.yml | 138 ++++ .../bowtie2/align/tests/cram_crai.config | 5 + .../bowtie2/align/tests/large_index.config | 5 + .../nf-core/bowtie2/align/tests/main.nf.test | 623 ++++++++++++++++++ .../bowtie2/align/tests/main.nf.test.snap | 311 +++++++++ .../nf-core/bowtie2/align/tests/sam.config | 5 + .../nf-core/bowtie2/align/tests/sam2.config | 5 + nextflow.config | 3 + nextflow_schema.json | 17 + subworkflows/local/illumina_consensus/main.nf | 69 +- 13 files changed, 1327 insertions(+), 23 deletions(-) create mode 100644 modules/nf-core/bowtie2/align/environment.yml create mode 100644 modules/nf-core/bowtie2/align/main.nf create mode 100644 modules/nf-core/bowtie2/align/meta.yml create mode 100644 modules/nf-core/bowtie2/align/tests/cram_crai.config create mode 100644 modules/nf-core/bowtie2/align/tests/large_index.config create mode 100644 modules/nf-core/bowtie2/align/tests/main.nf.test create mode 100644 modules/nf-core/bowtie2/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/bowtie2/align/tests/sam.config create mode 100644 modules/nf-core/bowtie2/align/tests/sam2.config diff --git a/conf/modules.config b/conf/modules.config index 257b434..c78560d 100755 --- a/conf/modules.config +++ b/conf/modules.config @@ -59,10 +59,31 @@ process { } } + withName: 'BOWTIE2_ALIGN' { + ext.prefix = { "${meta.id}" } + ext.args = '--local --very-sensitive-local --seed 1' + ext.args2 = '-b -f 3 -F 2048' + publishDir = [ + enabled: false + ] + + container = { + workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b41b403e81883126c3227fc45840015538e8e2212f13abc9ae84e4b98891d51c/data' + : task.ext.override_configured_container_registry != false + ? 'community.wave.seqera.io/library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' + : 'library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' + } + } + withName: SAMTOOLS_SORT { ext.prefix = { "${meta.id}.sorted" } publishDir = [ - path: { "${params.outdir}/bam/bwamem" }, + path: { + params.align_bowtie2 + ? "${params.outdir}/bam/bowtie2" + : "${params.outdir}/bam/bwamem" + }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, ] @@ -210,6 +231,23 @@ process { } } + withName: 'BOWTIE2_BUILD' { + ext.args = '--seed 1' + publishDir = [ + path: { "${params.outdir}/reference" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, + ] + + container = { + workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b41b403e81883126c3227fc45840015538e8e2212f13abc9ae84e4b98891d51c/data' + : task.ext.override_configured_container_registry != false + ? 'community.wave.seqera.io/library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' + : 'library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' + } + } + withName: "IVAR_TRIM" { ext.args = { params.ivar_primer_pairs diff --git a/modules/nf-core/bowtie2/align/environment.yml b/modules/nf-core/bowtie2/align/environment.yml new file mode 100644 index 0000000..066ff52 --- /dev/null +++ b/modules/nf-core/bowtie2/align/environment.yml @@ -0,0 +1,13 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + # renovate: datasource=conda depName=bioconda/bowtie2 + - bioconda::bowtie2=2.5.4 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.21 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.21 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/bowtie2/align/main.nf b/modules/nf-core/bowtie2/align/main.nf new file mode 100644 index 0000000..631d0bf --- /dev/null +++ b/modules/nf-core/bowtie2/align/main.nf @@ -0,0 +1,116 @@ +process BOWTIE2_ALIGN { + tag "$meta.id" + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b41b403e81883126c3227fc45840015538e8e2212f13abc9ae84e4b98891d51c/data' : + 'community.wave.seqera.io/library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' }" + + input: + tuple val(meta) , path(reads) + tuple val(meta2), path(index) + tuple val(meta3), path(fasta) + val save_unaligned + val sort_bam + + output: + tuple val(meta), path("*.sam") , emit: sam , optional:true + tuple val(meta), path("*.bam") , emit: bam , optional:true + tuple val(meta), path("*.cram") , emit: cram , optional:true + tuple val(meta), path("*.csi") , emit: csi , optional:true + tuple val(meta), path("*.crai") , emit: crai , optional:true + tuple val(meta), path("*.log") , emit: log + tuple val(meta), path("*fastq.gz") , emit: fastq , optional:true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: "" + def args2 = task.ext.args2 ?: "" + def prefix = task.ext.prefix ?: "${meta.id}" + + def unaligned = "" + def reads_args = "" + if (meta.single_end) { + unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : "" + reads_args = "-U ${reads}" + } else { + unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : "" + reads_args = "-1 ${reads[0]} -2 ${reads[1]}" + } + + def samtools_command = sort_bam ? 'sort' : 'view' + def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/ + def extension_matcher = (args2 =~ extension_pattern) + def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam" + def reference = fasta && extension=="cram" ? "--reference ${fasta}" : "" + if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output" + + """ + INDEX=`find -L ./ -name "*.rev.1.bt2" | sed "s/\\.rev.1.bt2\$//"` + [ -z "\$INDEX" ] && INDEX=`find -L ./ -name "*.rev.1.bt2l" | sed "s/\\.rev.1.bt2l\$//"` + [ -z "\$INDEX" ] && echo "Bowtie2 index files not found" 1>&2 && exit 1 + + bowtie2 \\ + -x \$INDEX \\ + $reads_args \\ + --threads $task.cpus \\ + $unaligned \\ + $args \\ + 2>| >(tee ${prefix}.bowtie2.log >&2) \\ + | samtools $samtools_command $args2 --threads $task.cpus ${reference} -o ${prefix}.${extension} - + + if [ -f ${prefix}.unmapped.fastq.1.gz ]; then + mv ${prefix}.unmapped.fastq.1.gz ${prefix}.unmapped_1.fastq.gz + fi + + if [ -f ${prefix}.unmapped.fastq.2.gz ]; then + mv ${prefix}.unmapped.fastq.2.gz ${prefix}.unmapped_2.fastq.gz + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ + + stub: + def args2 = task.ext.args2 ?: "" + def prefix = task.ext.prefix ?: "${meta.id}" + def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/ + def extension = (args2 ==~ extension_pattern) ? (args2 =~ extension_pattern)[0][2].toLowerCase() : "bam" + def create_unmapped = "" + if (meta.single_end) { + create_unmapped = save_unaligned ? "touch ${prefix}.unmapped.fastq.gz" : "" + } else { + create_unmapped = save_unaligned ? "touch ${prefix}.unmapped_1.fastq.gz && touch ${prefix}.unmapped_2.fastq.gz" : "" + } + if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output" + + def create_index = "" + if (extension == "cram") { + create_index = "touch ${prefix}.crai" + } else if (extension == "bam") { + create_index = "touch ${prefix}.csi" + } + + """ + touch ${prefix}.${extension} + ${create_index} + touch ${prefix}.bowtie2.log + ${create_unmapped} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ + +} diff --git a/modules/nf-core/bowtie2/align/meta.yml b/modules/nf-core/bowtie2/align/meta.yml new file mode 100644 index 0000000..f38da12 --- /dev/null +++ b/modules/nf-core/bowtie2/align/meta.yml @@ -0,0 +1,138 @@ +name: bowtie2_align +description: Align reads to a reference genome using bowtie2 +keywords: + - align + - map + - fasta + - fastq + - genome + - reference +tools: + - bowtie2: + description: | + Bowtie 2 is an ultrafast and memory-efficient tool for aligning + sequencing reads to long reference sequences. + homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml + documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml + doi: 10.1038/nmeth.1923 + licence: ["GPL-3.0-or-later"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - index: + type: file + description: Bowtie2 genome index files + pattern: "*.ebwt" + ontologies: [] + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Bowtie2 genome fasta file + pattern: "*.fasta" + ontologies: [] + - save_unaligned: + type: boolean + description: | + Save reads that do not map to the reference (true) or discard them (false) + (default: false) + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" +output: + sam: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.sam": + type: file + description: Output SAM file containing read alignments + pattern: "*.sam" + ontologies: [] + bam: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.bam": + type: file + description: Output BAM file containing read alignments + pattern: "*.bam" + ontologies: [] + cram: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.cram": + type: file + description: Output CRAM file containing read alignments + pattern: "*.cram" + ontologies: [] + csi: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.csi": + type: file + description: Output SAM/BAM index for large inputs + pattern: "*.csi" + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.crai": + type: file + description: Output CRAM index + pattern: "*.crai" + ontologies: [] + log: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.log": + type: file + description: Alignment log + pattern: "*.log" + ontologies: [] + fastq: + - - meta: + type: map + description: Groovy Map containing sample information + - "*fastq.gz": + type: file + description: Unaligned FastQ files + pattern: "*.fastq.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@joseespinosa" + - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/bowtie2/align/tests/cram_crai.config b/modules/nf-core/bowtie2/align/tests/cram_crai.config new file mode 100644 index 0000000..03f1d5e --- /dev/null +++ b/modules/nf-core/bowtie2/align/tests/cram_crai.config @@ -0,0 +1,5 @@ +process { + withName: BOWTIE2_ALIGN { + ext.args2 = '--output-fmt cram --write-index' + } +} diff --git a/modules/nf-core/bowtie2/align/tests/large_index.config b/modules/nf-core/bowtie2/align/tests/large_index.config new file mode 100644 index 0000000..fdc1c59 --- /dev/null +++ b/modules/nf-core/bowtie2/align/tests/large_index.config @@ -0,0 +1,5 @@ +process { + withName: BOWTIE2_BUILD { + ext.args = '--large-index' + } +} \ No newline at end of file diff --git a/modules/nf-core/bowtie2/align/tests/main.nf.test b/modules/nf-core/bowtie2/align/tests/main.nf.test new file mode 100644 index 0000000..0de5950 --- /dev/null +++ b/modules/nf-core/bowtie2/align/tests/main.nf.test @@ -0,0 +1,623 @@ +nextflow_process { + + name "Test Process BOWTIE2_ALIGN" + script "../main.nf" + process "BOWTIE2_ALIGN" + tag "modules" + tag "modules_nfcore" + tag "bowtie2" + tag "bowtie2/build" + tag "bowtie2/align" + + test("sarscov2 - fastq, index, fasta, false, false - bam") { + + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastq, index, fasta, false, false - sam") { + + config "./sam.config" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.sam[0][1]).readLines()[0..4], + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastq, index, fasta, false, false - sam2") { + + config "./sam2.config" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.sam[0][1]).readLines()[0..4], + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastq, index, fasta, false, true - bam") { + + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [fastq1, fastq2], index, fasta, false, false - bam") { + + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [fastq1, fastq2], index, fasta, false, true - bam") { + + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastq, large_index, fasta, false, false - bam") { + + config "./large_index.config" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [fastq1, fastq2], large_index, fasta, false, false - bam") { + + config "./large_index.config" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [fastq1, fastq2], index, fasta, true, false - bam") { + + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastq, index, fasta, true, false - bam") { + + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.log, + process.out.fastq, + process.out.versions + ).match() } + + ) + } + + } + + test("sarscov2 - [fastq1, fastq2], index, fasta, true, true - cram") { + + config "./cram_crai.config" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = true //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.cram[0][1]).name, + file(process.out.crai[0][1]).name + ).match() } + ) + } + + } + + test("sarscov2 - [fastq1, fastq2], index, fasta, false, false - stub") { + + options "-stub" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + file(process.out.csi[0][1]).name, + file(process.out.log[0][1]).name, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastq, index, fasta, true, false - stub") { + + options "-stub" + setup { + run("BOWTIE2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE2_BUILD.out.index + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[3] = false //save_unaligned + input[4] = false //sort + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + file(process.out.csi[0][1]).name, + file(process.out.log[0][1]).name, + process.out.fastq, + process.out.versions + ).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bowtie2/align/tests/main.nf.test.snap b/modules/nf-core/bowtie2/align/tests/main.nf.test.snap new file mode 100644 index 0000000..4ffd62e --- /dev/null +++ b/modules/nf-core/bowtie2/align/tests/main.nf.test.snap @@ -0,0 +1,311 @@ +{ + "sarscov2 - [fastq1, fastq2], large_index, fasta, false, false - bam": { + "content": [ + "test.bam", + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bowtie2.log:md5,bd89ce1b28c93bf822bae391ffcedd19" + ] + ], + [ + + ], + [ + "versions.yml:md5,2768d626cdb54c9a9b5ed7aecbc3ca11" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-03-24T12:45:59.038637" + }, + "sarscov2 - fastq, index, fasta, false, false - sam2": { + "content": [ + [ + "ERR5069949.2151832\t16\tMT192765.1\t17453\t42\t150M\t*\t0\t0\tACGCACATTGCTAACTAAGGGCACACTAGAACCAGAATATTTCAATTCAGTGTGTAGACTTATGAAAACTATAGGTCCAGACATGTTCCTCGGAACTTGTCGGCGTTGTCCTGCTGAAATTGTTGACACTGTGAGTGCTTTGGTTTATGA\tAAAA tuple(meta_ref.id, meta_ref, fasta) } .join( - BWAMEM2_INDEX.out.index.map { meta_ref, index_dir -> tuple(meta_ref.id, index_dir) } + ch_index.map { meta_ref, index_dir -> tuple(meta_ref.id, index_dir) } ) .map { ref_id, meta_ref, fasta, index_dir -> tuple(ref_id, meta_ref, fasta, index_dir) } - // Create BWAMEM2 expected input - ch_bwa_mem_inputs = ch_reads_by_ref + // Create expected input + ch_aligner_inputs = ch_reads_by_ref .combine(ch_ref_with_index, by: 0) - .multiMap { ref_id, meta, reads, meta_ref, fasta, index_dir -> + .multiMap { _ref_id, meta, reads, meta_ref, fasta, index_dir -> reads: tuple(meta, reads) index: tuple(meta_ref, index_dir) reference: tuple(meta_ref, fasta) - mode : '' } - - // Run Module - BWAMEM2_MEM( - ch_bwa_mem_inputs.reads, - ch_bwa_mem_inputs.index, - ch_bwa_mem_inputs.reference, - ch_bwa_mem_inputs.mode - ) - ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions) + if (params.align_bowtie2){ + // Run Module + BOWTIE2_ALIGN( + ch_aligner_inputs.reads, + ch_aligner_inputs.index, + ch_aligner_inputs.reference, + params.save_unaligned, + params.sort_bam + ) + ch_aligned_bam = BOWTIE2_ALIGN.out.bam + ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions) + } else { + // Run Module + BWAMEM2_MEM( + ch_aligner_inputs.reads, + ch_aligner_inputs.index, + ch_aligner_inputs.reference, + params.sort_bam + ) + ch_aligned_bam = BWAMEM2_MEM.out.bam + ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions) + } // - // MODULE: Sort and index output bam file from BWA + // MODULE: Sort and index output bam file from BWA/BOWTIE2 // // Prepare Inputs - ch_samtools_sort_input = BWAMEM2_MEM.out.bam + ch_samtools_sort_input = ch_aligned_bam .map { meta, bam -> tuple(meta.ref_id, meta, bam) } .combine( ch_reference.map { meta_ref, fasta -> tuple(meta_ref.id, meta_ref, fasta) }, by: [0] From 72b6f224f8a0ce8ae41ab606f1f885db22eb033f Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Tue, 14 Apr 2026 14:05:16 -0500 Subject: [PATCH 02/14] change to nf-schema and bowtie2 test added --- .gitignore | 1 + assets/schema_input.json | 2 +- modules.json | 10 + modules/nf-core/bowtie2/build/environment.yml | 13 ++ modules/nf-core/bowtie2/build/main.nf | 42 ++++ modules/nf-core/bowtie2/build/meta.yml | 53 +++++ .../nf-core/bowtie2/build/tests/main.nf.test | 31 +++ .../bowtie2/build/tests/main.nf.test.snap | 49 +++++ nextflow.config | 9 +- nextflow_schema.json | 24 +-- .../utils_nfcore_measeq_pipeline/main.nf | 12 +- tests/main.nf.test | 204 +++++++++++++++++- 12 files changed, 419 insertions(+), 31 deletions(-) create mode 100644 modules/nf-core/bowtie2/build/environment.yml create mode 100644 modules/nf-core/bowtie2/build/main.nf create mode 100644 modules/nf-core/bowtie2/build/meta.yml create mode 100644 modules/nf-core/bowtie2/build/tests/main.nf.test create mode 100644 modules/nf-core/bowtie2/build/tests/main.nf.test.snap diff --git a/.gitignore b/.gitignore index c78b2de..82948d6 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ null/ # Builds build/ *.egg-info/ +!modules/**/build/ # Pesky vscode .vscode/ diff --git a/assets/schema_input.json b/assets/schema_input.json index 3197692..2df55c6 100755 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,5 +1,5 @@ { - "$schema": "https://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/phac-nml/measeq/main/assets/schema_input.json", "title": "phac-nml/measeq pipeline - params.input schema", "description": "Schema for the file provided with params.input", diff --git a/modules.json b/modules.json index e386177..abc6ecb 100755 --- a/modules.json +++ b/modules.json @@ -15,6 +15,16 @@ "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["modules"] }, + "bowtie2/align": { + "branch": "master", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "installed_by": ["modules"] + }, + "bowtie2/build": { + "branch": "master", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "installed_by": ["modules"] + }, "bwamem2/index": { "branch": "master", "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", diff --git a/modules/nf-core/bowtie2/build/environment.yml b/modules/nf-core/bowtie2/build/environment.yml new file mode 100644 index 0000000..066ff52 --- /dev/null +++ b/modules/nf-core/bowtie2/build/environment.yml @@ -0,0 +1,13 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + # renovate: datasource=conda depName=bioconda/bowtie2 + - bioconda::bowtie2=2.5.4 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.21 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.21 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/bowtie2/build/main.nf b/modules/nf-core/bowtie2/build/main.nf new file mode 100644 index 0000000..fb7effe --- /dev/null +++ b/modules/nf-core/bowtie2/build/main.nf @@ -0,0 +1,42 @@ +process BOWTIE2_BUILD { + tag "$fasta" + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b41b403e81883126c3227fc45840015538e8e2212f13abc9ae84e4b98891d51c/data' : + 'community.wave.seqera.io/library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' }" + + input: + tuple val(meta), path(fasta) + + output: + tuple val(meta), path('bowtie2') , emit: index + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + mkdir bowtie2 + bowtie2-build $args --threads $task.cpus $fasta bowtie2/${fasta.baseName} + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + END_VERSIONS + """ + + stub: + """ + mkdir bowtie2 + touch bowtie2/${fasta.baseName}.{1..4}.bt2 + touch bowtie2/${fasta.baseName}.rev.{1,2}.bt2 + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/bowtie2/build/meta.yml b/modules/nf-core/bowtie2/build/meta.yml new file mode 100644 index 0000000..3e83ecb --- /dev/null +++ b/modules/nf-core/bowtie2/build/meta.yml @@ -0,0 +1,53 @@ +name: bowtie2_build +description: Builds bowtie index for reference genome +keywords: + - build + - index + - fasta + - genome + - reference +tools: + - bowtie2: + description: | + Bowtie 2 is an ultrafast and memory-efficient tool for aligning + sequencing reads to long reference sequences. + homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml + documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml + doi: 10.1038/nmeth.1923 + licence: ["GPL-3.0-or-later"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input genome fasta file + ontologies: [] +output: + index: + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - bowtie2: + type: file + description: Bowtie2 genome index files + pattern: "*.bt2" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@joseespinosa" + - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/bowtie2/build/tests/main.nf.test b/modules/nf-core/bowtie2/build/tests/main.nf.test new file mode 100644 index 0000000..ee94c19 --- /dev/null +++ b/modules/nf-core/bowtie2/build/tests/main.nf.test @@ -0,0 +1,31 @@ +nextflow_process { + + name "Test Process BOWTIE2_BUILD" + script "../main.nf" + process "BOWTIE2_BUILD" + tag "modules" + tag "modules_nfcore" + tag "bowtie2" + tag "bowtie2/build" + + test("Should run without failures") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/nf-core/bowtie2/build/tests/main.nf.test.snap b/modules/nf-core/bowtie2/build/tests/main.nf.test.snap new file mode 100644 index 0000000..ea5711e --- /dev/null +++ b/modules/nf-core/bowtie2/build/tests/main.nf.test.snap @@ -0,0 +1,49 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "genome.1.bt2:md5,cbe3d0bbea55bc57c99b4bfa25b5fbdf", + "genome.2.bt2:md5,47b153cd1319abc88dda532462651fcf", + "genome.3.bt2:md5,4ed93abba181d8dfab2e303e33114777", + "genome.4.bt2:md5,c25be5f8b0378abf7a58c8a880b87626", + "genome.rev.1.bt2:md5,52be6950579598a990570fbcf5372184", + "genome.rev.2.bt2:md5,e3b4ef343dea4dd571642010a7d09597" + ] + ] + ], + "1": [ + "versions.yml:md5,d136fb9c16f0a9fb2ae804b2a5fbc09c" + ], + "index": [ + [ + { + "id": "test" + }, + [ + "genome.1.bt2:md5,cbe3d0bbea55bc57c99b4bfa25b5fbdf", + "genome.2.bt2:md5,47b153cd1319abc88dda532462651fcf", + "genome.3.bt2:md5,4ed93abba181d8dfab2e303e33114777", + "genome.4.bt2:md5,c25be5f8b0378abf7a58c8a880b87626", + "genome.rev.1.bt2:md5,52be6950579598a990570fbcf5372184", + "genome.rev.2.bt2:md5,e3b4ef343dea4dd571642010a7d09597" + ] + ] + ], + "versions": [ + "versions.yml:md5,d136fb9c16f0a9fb2ae804b2a5fbc09c" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.02.1" + }, + "timestamp": "2023-11-23T11:51:01.107681997" + } +} \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index 29e814a..42789f1 100755 --- a/nextflow.config +++ b/nextflow.config @@ -295,11 +295,18 @@ manifest { // Nextflow plugins plugins { - id 'nf-validation@1.1.3' // Validation of pipeline params || Instead of schema while we wait for IRIDA-Next update + id 'nf-schema@2.4.2' id 'nf-iridanext@0.3.0' // Generate JSON for IRIDA Next id 'nf-prov@1.4.0' } +validation { + help { + enabled = true + command = "nextflow run phac-nml/measeq -profile --input samplesheet.csv --platform --outdir " + } +} + prov { enabled = true formats { diff --git a/nextflow_schema.json b/nextflow_schema.json index ef2aaa7..4391a76 100755 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "https://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/phac-nml/measeq/main/nextflow_schema.json", "title": "phac-nml/measeq pipeline parameters", "description": "Measles sequencing and analysis", "type": "object", - "definitions": { + "$defs": { "input_output_options": { "title": "Input/output options", "type": "object", @@ -791,34 +791,34 @@ }, "allOf": [ { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/required_options" + "$ref": "#/$defs/required_options" }, { - "$ref": "#/definitions/amplicon_options" + "$ref": "#/$defs/amplicon_options" }, { - "$ref": "#/definitions/illumina_options" + "$ref": "#/$defs/illumina_options" }, { - "$ref": "#/definitions/nanopore_options" + "$ref": "#/$defs/nanopore_options" }, { - "$ref": "#/definitions/analysis_options" + "$ref": "#/$defs/analysis_options" }, { - "$ref": "#/definitions/nextclade_options" + "$ref": "#/$defs/nextclade_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/generic_options" }, { - "$ref": "#/definitions/contact_options" + "$ref": "#/$defs/contact_options" }, { - "$ref": "#/definitions/reference_options" + "$ref": "#/$defs/reference_options" } ] } diff --git a/subworkflows/local/utils_nfcore_measeq_pipeline/main.nf b/subworkflows/local/utils_nfcore_measeq_pipeline/main.nf index 7e5eb78..64764c0 100755 --- a/subworkflows/local/utils_nfcore_measeq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_measeq_pipeline/main.nf @@ -7,7 +7,7 @@ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { validateParameters; paramsHelp; paramsSummaryLog; fromSamplesheet } from 'plugin/nf-validation' +include { validateParameters; paramsSummaryLog; samplesheetToList } from 'plugin/nf-schema' include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' @@ -41,14 +41,6 @@ workflow PIPELINE_INITIALISATION { workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 ) - // - // Help - // - if (params.help) { - log.info paramsHelp("nextflow run phac-nml/measeq -profile --input samplesheet.csv --platform --outdir ") - exit 0 - } - // // Check config provided to the pipeline // @@ -69,7 +61,7 @@ workflow PIPELINE_INITIALISATION { // def processedIDs = [] as Set ch_samplesheet = Channel - .fromSamplesheet("input") + .fromList(samplesheetToList(params.input, "assets/schema_input.json")) .map { meta, fastq_1, fastq_2 -> // Meta ID assignment diff --git a/tests/main.nf.test b/tests/main.nf.test index edc9ca8..c4662c3 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -20,7 +20,7 @@ nextflow_pipeline { assert workflow.failed // Message - assert workflow.stderr.contains("* Missing required parameter: --platform") + assert workflow.stderr.contains("* Missing required parameter(s): platform") } } @@ -40,7 +40,7 @@ nextflow_pipeline { assert workflow.failed // Message - assert workflow.stderr.contains("* Missing required parameter: --input") + assert workflow.stderr.contains("* Missing required parameter(s): input") } } @@ -61,7 +61,7 @@ nextflow_pipeline { assert workflow.failed // Message - assert workflow.stdout.contains("ERROR ~ ERROR: Validation of 'input' file failed!") + assert workflow.stdout.contains("ERROR ~ Validation of pipeline parameters failed!") } } @@ -815,12 +815,202 @@ nextflow_pipeline { } } + //--- Test 9 ---------------------------------------------------------------------------- + test("Illumina Amplicon Data with Sample Name Completion with Prediction Aligned with BOWTIE2") { + tag "success" + tag "illumina" + tag "amplicon" + tag "prediction" + tag "bowtie2" + + when { + params { + input = "${projectDir}/assets/ci-samplesheet.csv" + outdir = "results" + platform = "illumina" + amplicon = true + ivar_offset = 1 + align_bowtie2 = true + } + } + then { + // + // Status + // + assert workflow.success + assert workflow.trace.failed().size() == 0 + + // + // Channels and Files Exist + // + def lines = [] + assert path("$launchDir/results").exists() + + // Final QC File + assert path("$launchDir/results/overall.qc.csv").exists() + // Using the first 10 columns only to get to variants count + lines = path("$launchDir/results/overall.qc.csv").text + assert lines.contains("sample,genotype,reference,matched_dsid,num_input_reads,num_aligned_reads,num_consensus_n,genome_completeness_percent,mean_sequencing_depth,median_sequencing_depth,total_variants,") + assert lines.contains("empty,NA,MH356245.1,No Data,2,0,15894,0.0,0.0,0.0,0,") + assert lines.contains("sample1,D8,MH356245.1,Novel-bcb39a9,40476,30921,316,98.01,257.85,229.0,269,") + assert lines.contains("sample2,D8,MH356245.1,Novel-bcb39a9,56368,43438,294,98.15,365.03,361.0,270,") + + // Intermediate generated reference files + assert path("$launchDir/results/reference/MH356245.1.amplicon.bed").exists() + + lines = path("$launchDir/results/reference/MH356245.1.amplicon.bed").readLines() + assert lines.contains("MH356245.1\t25\t1028\tMSV_1\t5\t+") + assert lines.contains("MH356245.1\t165\t1113\tMSV_2\t1\t+") + assert lines.contains("MH356245.1\t1007\t1975\tMSV_3\t2\t+") + assert lines.size() == 23 + + assert path("$launchDir/results/reference/MH356245.1.genome.bed").exists() + + lines = path("$launchDir/results/reference/MH356245.1.genome.bed").text + assert lines.contains("MH356245.1\t0\t15894") + + // Sample Outputs + // Fasta regions match + assert path("$launchDir/results/consensus/MH356245.1.N450.fasta").md5 == "79e89ca9bfb7213c3767b2011f9ffee8" + lines = path("$launchDir/results/consensus/MH356245.1.N450.fasta").readLines() + assert lines.contains(">MH356245.1-N450 ") + assert lines.size() == 2 + + assert path("$launchDir/results/consensus/empty.consensus.fasta").md5 == "c14c11443f08b9976164ed80339150ca" + lines = path("$launchDir/results/consensus/empty.consensus.fasta").readLines() + assert lines.contains(">empty MH356245.1") + assert lines.contains("NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN") + assert lines.size() == 266 + assert path("$launchDir/results/consensus/empty.N450.fasta").md5 == "d41d8cd98f00b204e9800998ecf8427e" + + assert path("$launchDir/results/consensus/sample1.consensus.fasta").md5 == "7666b416f1d025c8c96f74f1b641b02e" + lines = path("$launchDir/results/consensus/sample1.consensus.fasta").readLines() + assert lines.contains(">sample1 MH356245.1") + assert lines.contains("NNNNNNNNNNNNNNNNNNNNNNNNNNTCAATCAATGATCATATTCTAGTACACTTAGGAT") + assert lines.size() == 266 + assert path("$launchDir/results/consensus/sample1.N450.fasta").md5 == "49dad01767d044fc73d87a6818765410" + + assert path("$launchDir/results/consensus/sample2.consensus.fasta").md5 == "92b5a2f5e9aa4fff07e366cc9956ce8b" + lines = path("$launchDir/results/consensus/sample2.consensus.fasta").readLines() + assert lines.contains(">sample2 MH356245.1") + assert lines.contains("NNNNNNNNNNNNNNNNNNNNNNNNNNTCAATCAATGATCATATTCTAGTACACTTAGGAT") + assert lines.size() == 266 + assert path("$launchDir/results/consensus/sample2.N450.fasta").md5 == "896c7f643c3fdd5af4f0b4c8195a01df" + + // Reporting files + assert path("$launchDir/results/reporting/sample_positional_normalized_depth.csv").exists() + lines = path("$launchDir/results/reporting/sample_positional_normalized_depth.csv").readLines() + assert lines.size() == 3 + + assert path("$launchDir/results/reporting/sample_positional_normalized_depth_stats.csv").exists() + lines = path("$launchDir/results/reporting/sample_positional_normalized_depth_stats.csv").readLines() + assert lines.size() == 15895 + + // Final Reports + assert path("$launchDir/results/reporting/MH356245.1-Amplicon-Summary-MultiQC-Report.html").exists() + assert path("$launchDir/results/MeaSeq_Report.html").exists() + assert path("$launchDir/results/overall.xlsx").exists() + assert path("$launchDir/results/dsids.tsv").exists() + assert path("$launchDir/results/predictions.csv").exists() + lines = path("$launchDir/results/predictions.csv").readLines() + assert lines.size() == 4 + + // IRIDA Next output + def iridanext_json = path("$launchDir/results/iridanext.output.json").json + def iridanext_global = iridanext_json.files.global + def iridanext_samples = iridanext_json.files.samples + def iridanext_metadata = iridanext_json.metadata.samples + + assert iridanext_global.findAll { it.path == "MeaSeq_Report.html" }.size() == 1 + assert iridanext_global.findAll { it.path == "pipeline_info/measeq_software_mqc_versions.yml" }.size() == 1 + assert iridanext_global.findAll { it.path == "reporting/MH356245.1-Amplicon-Summary-MultiQC-Report.html" }.size() == 1 + assert iridanext_global.findAll { it.path == "overall.xlsx" }.size() == 1 + assert iridanext_global.findAll { it.path == "novel_dsids.tsv" }.size() == 1 + assert iridanext_global.findAll { it.path == "predictions.csv" }.size() == 1 + + assert iridanext_samples.add_sample1.findAll { it.path == "bam/ivar/sample1.primertrimmed.sorted.bam" }.size() == 1 + assert iridanext_samples.add_sample1.findAll { it.path == "consensus/sample1.N450.fasta" }.size() == 1 + assert iridanext_samples.add_sample1.findAll { it.path == "consensus/sample1.consensus.fasta" }.size() == 1 + assert iridanext_samples.add_sample1.findAll { it.path == "vcf/processed_vcf/sample1.processed.norm.vcf.gz" }.size() == 1 + assert iridanext_samples.add_sample2.findAll { it.path == "bam/ivar/sample2.primertrimmed.sorted.bam" }.size() == 1 + assert iridanext_samples.add_sample2.findAll { it.path == "consensus/sample2.N450.fasta" }.size() == 1 + assert iridanext_samples.add_sample2.findAll { it.path == "consensus/sample2.consensus.fasta" }.size() == 1 + assert iridanext_samples.add_sample2.findAll { it.path == "vcf/processed_vcf/sample2.processed.norm.vcf.gz" }.size() == 1 + assert iridanext_samples.add_empty.findAll { it.path == "consensus/empty.N450.fasta" }.size() == 1 + assert iridanext_samples.add_empty.findAll { it.path == "consensus/empty.consensus.fasta" }.size() == 1 + assert iridanext_samples.add_empty.findAll { it.path == "vcf/processed_vcf/empty.processed.norm.vcf.gz" }.size() == 1 + + // Sample Name: empty + assert iridanext_metadata.add_empty.genotype == "NA" + assert iridanext_metadata.add_empty.reference == "MH356245.1" + assert iridanext_metadata.add_empty.matched_dsid == "No Data" + assert iridanext_metadata.add_empty.num_input_reads == "2" + assert iridanext_metadata.add_empty.num_aligned_reads == "0" + assert iridanext_metadata.add_empty.num_consensus_n == "15894" + assert iridanext_metadata.add_empty.genome_completeness_percent == "0.0" + assert iridanext_metadata.add_empty.mean_sequencing_depth == "0.0" + assert iridanext_metadata.add_empty.median_sequencing_depth == "0.0" + assert iridanext_metadata.add_empty.total_variants == "0" + assert iridanext_metadata.add_empty.num_snps == "0" + assert iridanext_metadata.add_empty.num_iupac == "0" + assert iridanext_metadata.add_empty.genome_length == "15894" + assert iridanext_metadata.add_empty.divisible_by_6 == "PASS" + assert iridanext_metadata.add_empty.N450_completeness == "0.0" + assert iridanext_metadata.add_empty.N450_mean_depth == "0.0" + assert iridanext_metadata.add_empty.N450_status == "FAIL" + assert iridanext_metadata.add_empty.qc_status == "INCOMPLETE_GENOME" + + // Sample Name: sample1 + assert iridanext_metadata.add_sample1.genotype == "D8" + assert iridanext_metadata.add_sample1.reference == "MH356245.1" + assert iridanext_metadata.add_sample1.matched_dsid == "Novel-bcb39a9" + assert iridanext_metadata.add_sample1.num_input_reads == "40476" + assert iridanext_metadata.add_sample1.num_aligned_reads == "30921" + assert iridanext_metadata.add_sample1.num_consensus_n == "316" + assert iridanext_metadata.add_sample1.genome_completeness_percent == "98.01" + assert iridanext_metadata.add_sample1.mean_sequencing_depth == "257.85" + assert iridanext_metadata.add_sample1.median_sequencing_depth == "229.0" + assert iridanext_metadata.add_sample1.total_variants == "269" + assert iridanext_metadata.add_sample1.num_snps == "269" + assert iridanext_metadata.add_sample1.num_iupac == "0" + assert iridanext_metadata.add_sample1.genome_length == "15894" + assert iridanext_metadata.add_sample1.divisible_by_6 == "PASS" + assert iridanext_metadata.add_sample1.N450_completeness == "100.0" + assert iridanext_metadata.add_sample1.N450_mean_depth == "236.92" + assert iridanext_metadata.add_sample1.N450_status == "PASS" + assert iridanext_metadata.add_sample1.qc_status == "PASS" + + // Sample Name: sample2 + assert iridanext_metadata.add_sample2.genotype == "D8" + assert iridanext_metadata.add_sample2.reference == "MH356245.1" + assert iridanext_metadata.add_sample2.matched_dsid == "Novel-bcb39a9" + assert iridanext_metadata.add_sample2.num_input_reads == "56368" + assert iridanext_metadata.add_sample2.num_aligned_reads == "43438" + assert iridanext_metadata.add_sample2.num_consensus_n == "294" + assert iridanext_metadata.add_sample2.genome_completeness_percent == "98.15" + assert iridanext_metadata.add_sample2.mean_sequencing_depth == "365.03" + assert iridanext_metadata.add_sample2.median_sequencing_depth == "361.0" + assert iridanext_metadata.add_sample2.total_variants == "270" + assert iridanext_metadata.add_sample2.num_snps == "270" + assert iridanext_metadata.add_sample2.num_iupac == "0" + assert iridanext_metadata.add_sample2.genome_length == "15894" + assert iridanext_metadata.add_sample2.divisible_by_6 == "PASS" + assert iridanext_metadata.add_sample2.N450_completeness == "100.0" + assert iridanext_metadata.add_sample2.N450_mean_depth == "409.2" + assert iridanext_metadata.add_sample2.N450_status == "PASS" + assert iridanext_metadata.add_sample2.qc_status == "PASS" + + // Pipeline info and tracking + assert path("$launchDir/results/pipeline_info").exists() + assert path("$launchDir/results/pipeline_info/measeq_software_mqc_versions.yml").exists() + } + } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nanopore Tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - //--- Test 9 ---------------------------------------------------------------------------- + //--- Test 10 ---------------------------------------------------------------------------- test("Nanopore NON-Amplicon Data Completion") { tag "success" tag "nanopore" @@ -932,7 +1122,7 @@ nextflow_pipeline { } } - //--- Test 10 ---------------------------------------------------------------------------- + //--- Test 11 ---------------------------------------------------------------------------- test("Nanopore NON-Amplicon Data Completion with Prediction") { tag "success" tag "nanopore" @@ -1092,7 +1282,7 @@ nextflow_pipeline { } } - //--- Test 11 ---------------------------------------------------------------------------- + //--- Test 12 ---------------------------------------------------------------------------- test("Nanopore Amplicon Data Completion") { tag "success" tag "nanopore" @@ -1221,7 +1411,7 @@ nextflow_pipeline { } } - //--- Test 12 ---------------------------------------------------------------------------- + //--- Test 13 ---------------------------------------------------------------------------- test("Nanopore Amplicon Data Completion with Prediction") { tag "success" tag "nanopore" From ec9f229b0ed2675126fd87837f972032f4b07cd6 Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Tue, 21 Apr 2026 13:08:43 -0500 Subject: [PATCH 03/14] modifications to bowtie2 options --- conf/modules.config | 4 ++-- nextflow.config | 2 -- nextflow_schema.json | 12 ------------ subworkflows/local/illumina_consensus/main.nf | 6 +++--- 4 files changed, 5 insertions(+), 19 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index c78560d..9ac23eb 100755 --- a/conf/modules.config +++ b/conf/modules.config @@ -61,8 +61,8 @@ process { withName: 'BOWTIE2_ALIGN' { ext.prefix = { "${meta.id}" } - ext.args = '--local --very-sensitive-local --seed 1' - ext.args2 = '-b -f 3 -F 2048' + ext.args = '--very-sensitive-local --seed 1' + ext.args2 = '-b -f 2 -F 2308 -h -S' publishDir = [ enabled: false ] diff --git a/nextflow.config b/nextflow.config index 42789f1..922680b 100755 --- a/nextflow.config +++ b/nextflow.config @@ -36,8 +36,6 @@ params { min_alt_fraction_freebayes = 0.05 min_variant_qual_freebayes = 20 align_bowtie2 = false - save_unaligned = false - sort_bam = false // Nanopore optional inputs for variants ont_min_read_length = 200 diff --git a/nextflow_schema.json b/nextflow_schema.json index 4391a76..81d4941 100755 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -141,18 +141,6 @@ "type": "boolean", "description": "Run illumina subworkflow with bowtie2 aligner", "default": false - }, - "save_unaligned": { - "type": "boolean", - "description": "Save unaligned reads in FastQ format from Bowtie 2 to the results directory", - "default": false, - "hidden": true - }, - "sort_bam": { - "type": "boolean", - "description": "Use sort instead of view for the samtools after the alignment", - "default": false, - "hidden": true } } }, diff --git a/subworkflows/local/illumina_consensus/main.nf b/subworkflows/local/illumina_consensus/main.nf index 60751ea..ff5122d 100644 --- a/subworkflows/local/illumina_consensus/main.nf +++ b/subworkflows/local/illumina_consensus/main.nf @@ -107,8 +107,8 @@ workflow ILLUMINA_CONSENSUS { ch_aligner_inputs.reads, ch_aligner_inputs.index, ch_aligner_inputs.reference, - params.save_unaligned, - params.sort_bam + '', + '' ) ch_aligned_bam = BOWTIE2_ALIGN.out.bam ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions) @@ -118,7 +118,7 @@ workflow ILLUMINA_CONSENSUS { ch_aligner_inputs.reads, ch_aligner_inputs.index, ch_aligner_inputs.reference, - params.sort_bam + '' ) ch_aligned_bam = BWAMEM2_MEM.out.bam ch_versions = ch_versions.mix(BWAMEM2_MEM.out.versions) From 3024b2ae6fa4a2f5293347c8fe025e4f4ae6ee1b Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Tue, 5 May 2026 14:22:13 -0500 Subject: [PATCH 04/14] docs update and artic primers addition --- CHANGELOG.md | 19 ++ README.md | 6 +- assets/reference/A/artic_primers.bed | 375 ++++++++++++++++++++++++++ assets/reference/B3/artic_primers.bed | 375 ++++++++++++++++++++++++++ assets/reference/D8/artic_primers.bed | 375 ++++++++++++++++++++++++++ conf/artic_primers.config | 33 +++ docs/output.md | 17 +- docs/usage.md | 1 + nextflow.config | 8 +- 9 files changed, 1205 insertions(+), 4 deletions(-) create mode 100644 assets/reference/A/artic_primers.bed create mode 100644 assets/reference/B3/artic_primers.bed create mode 100644 assets/reference/D8/artic_primers.bed create mode 100644 conf/artic_primers.config diff --git a/CHANGELOG.md b/CHANGELOG.md index d686ed0..b4c1286 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.2.0] - 2026-05-06 + +Update to enable users to map reads with Bowtie 2 instead of BWAMem as an optional parameter and use Artic primers as default. + +### `Added` + +- Illumina reads mapping with Bowtie 2 as an option in response to (#37). [PR #39](https://github.com/phac-nml/measeq/pull/39) + + - `align_bowtie2` added as an optional parameter to map illumina data with Bowtie 2 instead of BWAMem2. + +- Artic primers (https://doi.org/10.1101/2024.12.20.629611) for MeV were added as a profile. [PR #39](https://github.com/phac-nml/measeq/pull/39) + + - This allows running the pipeline with mapped Artic primers without having to specify them (#38). + - To run the pipeline with this profile, use `nextflow run phac-nml/measeq -profile artic_primers,` with the other normal parameters you would use. + +> [!NOTE] +> If you use `-profile artic_primers`, then there is no need to use `--amplicon` as it is automatically passed. + ## [v1.1.0] - 2026-03-27 Update focusing on fixing small inconsistencies between final reports and output consensus sequences along with a few small bugfixes and exposing some more parameter options available to the user @@ -285,6 +303,7 @@ Small addition of Picard MarkDuplicates workflow along with some new tests - MeaSeq pipeline created and initial code added +[v1.2.0]: https://github.com/phac-nml/measeq/releases/tag/1.2.0 [v1.1.0]: https://github.com/phac-nml/measeq/releases/tag/1.1.0 [v1.0.1]: https://github.com/phac-nml/measeq/releases/tag/1.0.1 [v1.0.0]: https://github.com/phac-nml/measeq/releases/tag/1.0.0 diff --git a/README.md b/README.md index ee5799b..b539342 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,11 @@ ## Current Updates -### _2026-03-27_ Summary +### _2026-05-06_ Summary -Full release version 1.1.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. +Full release version 1.2.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. + +Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLangmead/bowtie2) as an optional tool to map reads to their reference files and support for the [Artic primers](https://www.biorxiv.org/content/10.1101/2024.12.20.629611v1) through a nextflow profile. #### Genotype Predictions diff --git a/assets/reference/A/artic_primers.bed b/assets/reference/A/artic_primers.bed new file mode 100644 index 0000000..8854608 --- /dev/null +++ b/assets/reference/A/artic_primers.bed @@ -0,0 +1,375 @@ +# artic-bed-version v3.0 +FJ211590.1 1 26 177e6ebb_0_LEFT_0 1 + CCAAACAAAGTTGGGTAAGGATCGA +FJ211590.1 412 435 177e6ebb_0_RIGHT_0 1 - ACTGGTCACTCTGAACAACCTCC +FJ211590.1 412 435 177e6ebb_0_RIGHT_1 1 - ACTGGTCACTCTGGACAACCTCT +FJ211590.1 412 434 177e6ebb_0_RIGHT_2 1 - CTGGTCACTCTGGACAACCTCC +FJ211590.1 412 436 177e6ebb_0_RIGHT_3 1 - GACTGGTCACTCTGAACAACCTCT +FJ211590.1 412 436 177e6ebb_0_RIGHT_4 1 - GATTGGTCACTCTGGACAACCTCT +FJ211590.1 412 437 177e6ebb_0_RIGHT_5 1 - TGATTGGTCACTCTGGACAACTTCT +FJ211590.1 412 433 177e6ebb_0_RIGHT_6 1 - TGGTCGCTCTGGACAACCTCT +FJ211590.1 361 387 177e6ebb_1_LEFT_0 2 + CCAATTGATTCAGAGGATCACCGATG +FJ211590.1 359 387 177e6ebb_1_LEFT_1 2 + GGTCAATTAATTCAGAGGATCACCGATG +FJ211590.1 359 387 177e6ebb_1_LEFT_2 2 + GGTCAATTGATTCAGAGGATCACTGATG +FJ211590.1 360 387 177e6ebb_1_LEFT_3 2 + GTCAATTGATTCAGAGGATCACCGATG +FJ211590.1 799 827 177e6ebb_1_RIGHT_0 2 - GATATCCAGGATTAAAGCGACCATGAAT +FJ211590.1 799 823 177e6ebb_1_RIGHT_1 2 - TCCAGGATTAGAGCCACCATGAAT +FJ211590.1 799 823 177e6ebb_1_RIGHT_2 2 - TCCAGGATTAGAGCGACCATGAAT +FJ211590.1 799 825 177e6ebb_1_RIGHT_3 2 - TGTCCAGAATTAGAGCGACCATGAAT +FJ211590.1 746 771 177e6ebb_2_LEFT_0 1 + AAATGGTTGGATGTGGTGAGAAACA +FJ211590.1 744 771 177e6ebb_2_LEFT_1 1 + GAAAATGGTTGGATGTAGTGAGGAACA +FJ211590.1 744 771 177e6ebb_2_LEFT_2 1 + GAAAATGGTTGGATGTGGTGAGGAATA +FJ211590.1 749 771 177e6ebb_2_LEFT_3 1 + TGGTTGGATGTGGTGAGGAACA +FJ211590.1 1184 1213 177e6ebb_2_RIGHT_0 1 - ACCATCTCTTGCCCTAATCTAAAATATGC +FJ211590.1 1184 1212 177e6ebb_2_RIGHT_1 1 - CCATCTCTTGCCCTAACCTAAAATATGC +FJ211590.1 1184 1217 177e6ebb_2_RIGHT_2 1 - CCTAACCATCTCTTGTCCTAATCTAAAATATGC +FJ211590.1 1104 1126 177e6ebb_3_LEFT_0 2 + GGAGCTATGCCATGGGAGTAGG +FJ211590.1 1103 1126 177e6ebb_3_LEFT_1 2 + TGGAGTTATGCCATGGGAGTAGG +FJ211590.1 1522 1548 177e6ebb_3_RIGHT_0 2 - ACTCTGATGCAGTGTCAATGTCTAGG +FJ211590.1 1522 1544 177e6ebb_3_RIGHT_1 2 - CGATGCAGTGTCAATGTCAGGG +FJ211590.1 1522 1544 177e6ebb_3_RIGHT_2 2 - CGATGCAGTGTCAATGTCCAGG +FJ211590.1 1522 1544 177e6ebb_3_RIGHT_3 2 - CGATGCAGTGTCAATGTCTGGG +FJ211590.1 1522 1546 177e6ebb_3_RIGHT_4 2 - TCCGATGCAGTGTCAATGTCTAGG +FJ211590.1 1522 1546 177e6ebb_3_RIGHT_5 2 - TCTGATGCAGTGTCAACGTCTAGG +FJ211590.1 1407 1427 177e6ebb_4_LEFT_0 1 + GCAAGGAGGACAGGAGGGTC +FJ211590.1 1406 1427 177e6ebb_4_LEFT_1 1 + GGCAAGGAAGACAGGAGGGTC +FJ211590.1 1405 1427 177e6ebb_4_LEFT_2 1 + GGGCAAGGAAGATAGGAGAGCC +FJ211590.1 1405 1427 177e6ebb_4_LEFT_3 1 + GGGCAAGGAAGATAGGAGGGTC +FJ211590.1 1404 1427 177e6ebb_4_LEFT_4 1 + GGGGCAAAGAAGATAGGAGGGTC +FJ211590.1 1404 1427 177e6ebb_4_LEFT_5 1 + GGGGCAAGGAAGATAGAAGGGTC +FJ211590.1 1404 1427 177e6ebb_4_LEFT_6 1 + GGGGCAAGGAAGATATGAGGGTC +FJ211590.1 1405 1427 177e6ebb_4_LEFT_7 1 + GGGTAAGGAGGACAGGAGGGTC +FJ211590.1 1816 1834 177e6ebb_4_RIGHT_0 1 - TGACATGGCGTGCCTGCT +FJ211590.1 1739 1764 177e6ebb_5_LEFT_0 2 + AAAAACTTAGGAACCAGGTCCACAC +FJ211590.1 2174 2198 177e6ebb_5_RIGHT_0 2 - ACCACGATAGAGTCAGCATCTTGG +FJ211590.1 2174 2200 177e6ebb_5_RIGHT_1 2 - GAACCATGATAGAGTCAGCATCTTGG +FJ211590.1 2091 2113 177e6ebb_6_LEFT_0 1 + CCCCCAAGAAATCTCCAGGCAT +FJ211590.1 2090 2113 177e6ebb_6_LEFT_1 1 + CCCCTCAAGAAATCTCCAGGCAT +FJ211590.1 2090 2113 177e6ebb_6_LEFT_2 1 + CCCCTCAAGAAATTCCCAGGCAT +FJ211590.1 2091 2113 177e6ebb_6_LEFT_3 1 + CCCTCAAGAAATCCCCAGGCAT +FJ211590.1 2091 2113 177e6ebb_6_LEFT_4 1 + CCCTCAGGAAATCTCCAGGCAT +FJ211590.1 2525 2549 177e6ebb_6_RIGHT_0 1 - GTCAATAAAGACGCGATCTCCGTT +FJ211590.1 2525 2550 177e6ebb_6_RIGHT_1 1 - TGTCAATAAAGACGCAATCTCCGTT +FJ211590.1 2419 2444 177e6ebb_7_LEFT_0 2 + AGCTTGGGAAAACTCTCAATGTTCC +FJ211590.1 2421 2444 177e6ebb_7_LEFT_1 2 + CCTGGGAAGACTCTCAATGTCCC +FJ211590.1 2420 2444 177e6ebb_7_LEFT_2 2 + GCTGGGGAAAACTCTCAATGTTCC +FJ211590.1 2420 2444 177e6ebb_7_LEFT_3 2 + GCTTGGGAAAACCCTCAATGTTCC +FJ211590.1 2858 2885 177e6ebb_7_RIGHT_0 2 - ATGCTGATATTTTGCTTGTTGATCTGC +FJ211590.1 2858 2888 177e6ebb_7_RIGHT_1 2 - GATATGCTGATATTTTGCCTGTTAATCTGC +FJ211590.1 2858 2883 177e6ebb_7_RIGHT_2 2 - GCTGATGTTTTGCCTGTTGATCTGC +FJ211590.1 2858 2884 177e6ebb_7_RIGHT_3 2 - TGCTGATATTTTGCCTGTTGATCTGC +FJ211590.1 2772 2796 177e6ebb_8_LEFT_0 1 + GCCAAAATACACGAGGACAACCAG +FJ211590.1 2770 2796 177e6ebb_8_LEFT_1 1 + TGGCCAAAATACACGAGGATAATCAG +FJ211590.1 3185 3205 177e6ebb_8_RIGHT_0 1 - TGGAGCGGATTACACTGCGT +FJ211590.1 3140 3160 177e6ebb_9_LEFT_0 2 + GATGAGCTCAGCCGTTGGGT +FJ211590.1 3140 3160 177e6ebb_9_LEFT_1 2 + GATGAGCTCAGCTGTCGGGT +FJ211590.1 3142 3160 177e6ebb_9_LEFT_2 2 + TGAGCTCAGCCGTCGGGT +FJ211590.1 3142 3160 177e6ebb_9_LEFT_3 2 + TGAGCTCGGCAGTCGGGT +FJ211590.1 3142 3160 177e6ebb_9_LEFT_4 2 + TGAGCTCGGCTGTCGGGT +FJ211590.1 3580 3606 177e6ebb_9_RIGHT_0 2 - CCAGCAGAAACATGTACATGAAGCAT +FJ211590.1 3580 3607 177e6ebb_9_RIGHT_1 2 - CCCAGCAGAAACATGTACATAAAGCAT +FJ211590.1 3580 3608 177e6ebb_9_RIGHT_2 2 - CCCCAGTAGAAACATGTACATAAAGCAT +FJ211590.1 3529 3553 177e6ebb_10_LEFT_0 1 + GGTACCCCAGGTCAGAGTCATAGA +FJ211590.1 3529 3553 177e6ebb_10_LEFT_1 1 + GGTGCCCCAGGTCAGAGTTATAGA +FJ211590.1 3529 3553 177e6ebb_10_LEFT_2 1 + GGTGCCTCAGGTCAGAGTCATAGA +FJ211590.1 3531 3553 177e6ebb_10_LEFT_3 1 + TCCCCCAGGTCAGAGTCATAGA +FJ211590.1 3531 3553 177e6ebb_10_LEFT_4 1 + TGCCCCAGGTCAGAGTCATAGA +FJ211590.1 3528 3553 177e6ebb_10_LEFT_5 1 + TGGTACCTCAGGTCAGAGTCATAGA +FJ211590.1 3968 3994 177e6ebb_10_RIGHT_0 1 - ACTGCATTGACTGATCTGAATTCCAG +FJ211590.1 3968 3995 177e6ebb_10_RIGHT_1 1 - CACTGCATTGACCGATCTGAATTCTAG +FJ211590.1 3968 3991 177e6ebb_10_RIGHT_2 1 - GCATTGACCGATCTGAACTCCAG +FJ211590.1 3968 3992 177e6ebb_10_RIGHT_3 1 - TGCATTGACCGATCTGAATTCCAG +FJ211590.1 3890 3910 177e6ebb_11_LEFT_0 2 + CCGCAGAGGTTCCGTGTTGT +FJ211590.1 4330 4356 177e6ebb_11_RIGHT_0 2 - CCTGGATTCTTACGATCTTGCATCTG +FJ211590.1 4330 4357 177e6ebb_11_RIGHT_1 2 - GCCTGGATTCTTACTATCTTGCATCTG +FJ211590.1 4330 4357 177e6ebb_11_RIGHT_2 2 - GCCTGGATTTTTACGATCTTGCATCTG +FJ211590.1 4200 4226 177e6ebb_12_LEFT_0 1 + GCACCAGTCTTCACATTAGAAGCACA +FJ211590.1 4199 4226 177e6ebb_12_LEFT_1 1 + GGCACCAGTCTTCACATTAGAAGTACA +FJ211590.1 4622 4643 177e6ebb_12_RIGHT_0 1 - ACGCAGATTGGGATAGCTGGT +FJ211590.1 4622 4642 177e6ebb_12_RIGHT_1 1 - CGCAGATTGGGATGGCTGGT +FJ211590.1 4622 4640 177e6ebb_12_RIGHT_2 1 - CGGGTTGGGATGGCTGGT +FJ211590.1 4622 4642 177e6ebb_12_RIGHT_3 1 - CTCAGGTTGGGATGGCTGGT +FJ211590.1 4622 4642 177e6ebb_12_RIGHT_4 1 - CTCGGATTGGGATGGCTGGT +FJ211590.1 4622 4644 177e6ebb_12_RIGHT_5 1 - GACTCAGATTGGGATGGCTGGT +FJ211590.1 4622 4644 177e6ebb_12_RIGHT_6 1 - GACTCAGGTTGGGATGGCTAGT +FJ211590.1 4622 4641 177e6ebb_12_RIGHT_7 1 - GCAGATTGGGCTGGCTGGT +FJ211590.1 4622 4641 177e6ebb_12_RIGHT_8 1 - GCAGATTGGGGTGGCTGGT +FJ211590.1 4622 4641 177e6ebb_12_RIGHT_9 1 - GCGGATTGGGATGGCTGGT +FJ211590.1 4422 4449 177e6ebb_13_LEFT_0 2 + AAGGACTCTTCAAAGTTTTGTAGACCG +FJ211590.1 4423 4449 177e6ebb_13_LEFT_1 2 + AGGACTCTTCAAAGTTCTGTAGACCG +FJ211590.1 4421 4449 177e6ebb_13_LEFT_2 2 + CAAGGACTATTCAAAGTTCTGTAGACCG +FJ211590.1 4420 4449 177e6ebb_13_LEFT_3 2 + CCAAGGACTATTCAAAGTTCTGTAAACCG +FJ211590.1 4424 4449 177e6ebb_13_LEFT_4 2 + GGACTGTTCAAGGTTCTGTAGACCG +FJ211590.1 4857 4884 177e6ebb_13_RIGHT_0 2 - CCTTGGCCCTAAGTTTTGTTTAGTTTG +FJ211590.1 4857 4887 177e6ebb_13_RIGHT_1 2 - GTTCCTTGACCCTAAGTTTTGTTTAGTTTG +FJ211590.1 4857 4885 177e6ebb_13_RIGHT_2 2 - TCCTTGGCCCTAAGTTTTGTTTAGTATG +FJ211590.1 4857 4882 177e6ebb_13_RIGHT_3 2 - TTGGCCCTGAGTTTTGTTTAGTCTG +FJ211590.1 4766 4784 177e6ebb_14_LEFT_0 1 + CAACCCCAAAGCCCCGCA +FJ211590.1 4766 4784 177e6ebb_14_LEFT_1 1 + CAACGCAAAAGCCCCGCA +FJ211590.1 4765 4784 177e6ebb_14_LEFT_2 1 + CCAACCCAAAAGCCCCGCA +FJ211590.1 4764 4784 177e6ebb_14_LEFT_3 1 + CCCAACGCAAGAACCCCACA +FJ211590.1 4764 4784 177e6ebb_14_LEFT_4 1 + CCCAATGCAAAAGCCCCACA +FJ211590.1 4763 4784 177e6ebb_14_LEFT_5 1 + CCCCAACACAAGAACCCCACA +FJ211590.1 4763 4784 177e6ebb_14_LEFT_6 1 + CCCCAACGCAAGAACTCCACA +FJ211590.1 4763 4784 177e6ebb_14_LEFT_7 1 + CCCCGACACAACAACTCCACA +FJ211590.1 4762 4784 177e6ebb_14_LEFT_8 1 + CCCTCGACACAACAACTCCACA +FJ211590.1 4764 4784 177e6ebb_14_LEFT_9 1 + CTCAACGCAAAAGCCCCACA +FJ211590.1 4760 4784 177e6ebb_14_LEFT_10 1 + CTCCCTCGACACAACAACTCTACA +FJ211590.1 4762 4784 177e6ebb_14_LEFT_11 1 + CTCTCAATGCAAAAGCCCCACA +FJ211590.1 4765 4784 177e6ebb_14_LEFT_12 1 + TCAACCCAAAAGCCCCGCA +FJ211590.1 4763 4784 177e6ebb_14_LEFT_13 1 + TCCCGACACAACAACTCCACA +FJ211590.1 4761 4784 177e6ebb_14_LEFT_14 1 + TCCCTCAACACAAGAACTCCACA +FJ211590.1 4759 4784 177e6ebb_14_LEFT_15 1 + TCTTCCTCAACACAAGAACTCCACA +FJ211590.1 5119 5137 177e6ebb_14_RIGHT_0 1 - GCTGCCGTGGTCGTGTGT +FJ211590.1 5119 5138 177e6ebb_14_RIGHT_1 1 - GGTTGCCGTGGTCGTGTGT +FJ211590.1 5119 5138 177e6ebb_14_RIGHT_2 1 - GGTTGCCGTGGTGGTGTGT +FJ211590.1 5119 5139 177e6ebb_14_RIGHT_3 1 - TGGTTACCGTGGTCGTGTGT +FJ211590.1 4991 5010 177e6ebb_15_LEFT_0 2 + ACAGGCAGGCACACCAACC +FJ211590.1 4991 5010 177e6ebb_15_LEFT_1 2 + ACAGGCAGGGACACCAACC +FJ211590.1 4990 5010 177e6ebb_15_LEFT_2 2 + CACAGGCGATCACACCAACC +FJ211590.1 4989 5010 177e6ebb_15_LEFT_3 2 + CCACAGGTAGGCACACCAACC +FJ211590.1 4990 5010 177e6ebb_15_LEFT_4 2 + CGCAGGCAGACACACCAACC +FJ211590.1 4990 5010 177e6ebb_15_LEFT_5 2 + TGCAGGCAGACACACCAACC +FJ211590.1 5426 5452 177e6ebb_15_RIGHT_0 2 - ACACTGGATGAGTCTTAATTCTGGGA +FJ211590.1 5426 5452 177e6ebb_15_RIGHT_1 2 - ACATTAGGTGAGTCTTGATTCTGGGA +FJ211590.1 5426 5452 177e6ebb_15_RIGHT_2 2 - ACATTGGATGAGTCTTGATTCTGGGA +FJ211590.1 5426 5450 177e6ebb_15_RIGHT_3 2 - ACTGGATGAGTCTTGATTCTGGGG +FJ211590.1 5426 5450 177e6ebb_15_RIGHT_4 2 - ATTGGATGGGTCTTGATTCTGGGA +FJ211590.1 5426 5451 177e6ebb_15_RIGHT_5 2 - CACTGGATGAGTCTTGATTCTGGGA +FJ211590.1 5426 5449 177e6ebb_15_RIGHT_6 2 - CTGGATGAGTCTTGATCCTGGGG +FJ211590.1 5426 5454 177e6ebb_15_RIGHT_7 2 - GGATATTGGATGAGTCTTGATTCTGGGA +FJ211590.1 5371 5395 177e6ebb_16_LEFT_0 1 + AACCCACTATATCCGACGTCACTC +FJ211590.1 5376 5395 177e6ebb_16_LEFT_1 1 + ACCACACCCGACGACACTC +FJ211590.1 5374 5395 177e6ebb_16_LEFT_2 1 + CCACCACACCCGACGACAATC +FJ211590.1 5374 5395 177e6ebb_16_LEFT_3 1 + CCACCACACCCGACTACACTC +FJ211590.1 5374 5395 177e6ebb_16_LEFT_4 1 + CCACCACATCCGACGACACTC +FJ211590.1 5373 5395 177e6ebb_16_LEFT_5 1 + CCCACTATACCCGACGTCACTC +FJ211590.1 5373 5395 177e6ebb_16_LEFT_6 1 + TCCACCACACCTAACGACACTC +FJ211590.1 5373 5395 177e6ebb_16_LEFT_7 1 + TCCACCACATCCGACGATACTC +FJ211590.1 5373 5395 177e6ebb_16_LEFT_8 1 + TCTACCACATCCGACGACACTC +FJ211590.1 5773 5800 177e6ebb_16_RIGHT_0 1 - CCGCAAATCTTTTGTGTCTCCTACTTG +FJ211590.1 5773 5799 177e6ebb_16_RIGHT_1 1 - CGCAAATCTCTTGTGTCTCCTACTTG +FJ211590.1 5773 5799 177e6ebb_16_RIGHT_2 1 - TGCAAATCTCTTGTGTCTCCTACTTG +FJ211590.1 5702 5730 177e6ebb_17_LEFT_0 2 + AGTTTTGGAACCAATTAGAGATGCACTT +FJ211590.1 5701 5730 177e6ebb_17_LEFT_1 2 + CAGTTTTGGAACCAATTAAAGATGCACTT +FJ211590.1 5705 5730 177e6ebb_17_LEFT_2 2 + CCTGGAACCAATTAGGGATGCACTT +FJ211590.1 5703 5730 177e6ebb_17_LEFT_3 2 + GTTCTGGAACCAATTAGAGATGCACTT +FJ211590.1 5704 5730 177e6ebb_17_LEFT_4 2 + TCCTGGAACCAATTAGAGATGCACTT +FJ211590.1 5705 5730 177e6ebb_17_LEFT_5 2 + TCTGGAACCAATCAGAGATGCACTT +FJ211590.1 6119 6139 177e6ebb_17_RIGHT_0 2 - CCGCAGATATGGGGTCCCGT +FJ211590.1 6119 6140 177e6ebb_17_RIGHT_1 2 - TCCGCAGATATGGGGTCTCGT +FJ211590.1 6062 6091 177e6ebb_18_LEFT_0 1 + CGGGCTCAAATTGCTCAGATATTATACAG +FJ211590.1 6062 6091 177e6ebb_18_LEFT_1 1 + CGGGCTCAAATTGCTTAGATACTATACAG +FJ211590.1 6064 6091 177e6ebb_18_LEFT_2 1 + GGCTCAAGTTGCTCAGATACTATACAG +FJ211590.1 6063 6091 177e6ebb_18_LEFT_3 1 + GGGCTCAAATTGCTCAGATACTATACAG +FJ211590.1 6499 6521 177e6ebb_18_RIGHT_0 1 - AGCAGAGGACTCATCGGGTACA +FJ211590.1 6499 6520 177e6ebb_18_RIGHT_1 1 - GCAGGGGACTCATCGGGTACA +FJ211590.1 6451 6475 177e6ebb_19_LEFT_0 2 + CATCGTGTACTTTCATGCCAGAGG +FJ211590.1 6454 6475 177e6ebb_19_LEFT_1 2 + CGTGCACTTTCATGCCAGAGG +FJ211590.1 6449 6475 177e6ebb_19_LEFT_2 2 + GTCATCATGTACTTTCATGCCAGAGG +FJ211590.1 6450 6475 177e6ebb_19_LEFT_3 2 + TCATCATGTACCTTCATGCCAGAGG +FJ211590.1 6889 6915 177e6ebb_19_RIGHT_0 2 - ACTCCTCAATATCTGGTCCGATGATT +FJ211590.1 6889 6918 177e6ebb_19_RIGHT_1 2 - CATACTCCTTAATATCTGGTCCGATGACT +FJ211590.1 6889 6914 177e6ebb_19_RIGHT_2 2 - CTCCTCAATATCTGGTCCGATGACT +FJ211590.1 6889 6919 177e6ebb_19_RIGHT_3 2 - TCATACTTCTCAATATCTGGTCCGATGATT +FJ211590.1 6823 6847 177e6ebb_20_LEFT_0 1 + AGTTGGATGTAGGGACGAACTTGG +FJ211590.1 6823 6847 177e6ebb_20_LEFT_1 1 + GGTTGGACGTAGGGACAAATCTGG +FJ211590.1 6826 6847 177e6ebb_20_LEFT_2 1 + TGGACGTAGGGACAAACCTGG +FJ211590.1 6826 6847 177e6ebb_20_LEFT_3 1 + TGGACGTGGGGACAAATCTGG +FJ211590.1 7254 7278 177e6ebb_20_RIGHT_0 1 - GGTGACATTGTGGATGATCTTGCA +FJ211590.1 7254 7277 177e6ebb_20_RIGHT_1 1 - GTGACATTGCGGATGATCTTGCA +FJ211590.1 7254 7277 177e6ebb_20_RIGHT_2 1 - GTGACATTGTGGATGGTCTTGCA +FJ211590.1 7179 7206 177e6ebb_21_LEFT_0 2 + AGCATCAATCCCACCTGAAATTATCTC +FJ211590.1 7179 7206 177e6ebb_21_LEFT_1 2 + AGCATCACTCCCACTTGAAATTATCTC +FJ211590.1 7182 7206 177e6ebb_21_LEFT_2 2 + ATCAAGCCCACCTGAAATTGTCTC +FJ211590.1 7181 7206 177e6ebb_21_LEFT_3 2 + CACCAAGCCCACCTGAAATTATCTC +FJ211590.1 7181 7206 177e6ebb_21_LEFT_4 2 + CATCAAGCCCATCTGAAGTTGTCTC +FJ211590.1 7178 7206 177e6ebb_21_LEFT_5 2 + CGACATCAAGCCACCCTAAAATTATCTC +FJ211590.1 7180 7206 177e6ebb_21_LEFT_6 2 + GCATCAAGCCCACCTGAAATTATCTC +FJ211590.1 7180 7206 177e6ebb_21_LEFT_7 2 + GCATCAAGCCCATCTGAAATTGTCTC +FJ211590.1 7608 7636 177e6ebb_21_RIGHT_0 2 - AATCTTGTCCGAGATGAATTTCACTAGG +FJ211590.1 7608 7642 177e6ebb_21_RIGHT_1 2 - GAATTTAATCTTATCCGAGATGAATTTCACTAGG +FJ211590.1 7608 7642 177e6ebb_21_RIGHT_2 2 - GAATTTAATCTTGTCAGAGATGAATTTCACTAGG +FJ211590.1 7608 7643 177e6ebb_21_RIGHT_3 2 - GGAATTTAATTTTGTCAGAGATGAATTTCACTAGG +FJ211590.1 7608 7638 177e6ebb_21_RIGHT_4 2 - TTGATCTTGTCAGAGATGAATTTCACTAGG +FJ211590.1 7608 7639 177e6ebb_21_RIGHT_5 2 - TTTAATCTTGTCAGAGATGAACTTCACTAGG +FJ211590.1 7503 7531 177e6ebb_22_LEFT_0 1 + AGATGTAACTAACTCAATCGAGCATCAG +FJ211590.1 7504 7531 177e6ebb_22_LEFT_1 1 + GATGTAACTAACTCAATCGAGCACCAG +FJ211590.1 7504 7531 177e6ebb_22_LEFT_2 1 + GATGTAACTAACTCAGTCGAGCATCAG +FJ211590.1 7504 7531 177e6ebb_22_LEFT_3 1 + GATGTGACTAACTCAATCGAGCATCAG +FJ211590.1 7503 7531 177e6ebb_22_LEFT_4 1 + GGATGTAACTAACTCAATCGAGCATCAG +FJ211590.1 7943 7967 177e6ebb_22_RIGHT_0 1 - GGTAAGTTCCCCCATACATTCCCT +FJ211590.1 7943 7967 177e6ebb_22_RIGHT_1 1 - GGTAGGTTCCCCCATACATTCCCT +FJ211590.1 7943 7966 177e6ebb_22_RIGHT_2 1 - GTAAGTTCCCCCGTACATTCCCT +FJ211590.1 7828 7848 177e6ebb_23_LEFT_0 2 + AACTGCTCAGGGCCCACTAC +FJ211590.1 8237 8258 177e6ebb_23_RIGHT_0 2 - GGGATTTCCAGACACCCAGCT +FJ211590.1 8237 8259 177e6ebb_23_RIGHT_1 2 - GGGGATTTCCAGACACCTAGCT +FJ211590.1 8147 8169 177e6ebb_24_LEFT_0 1 + AGCTCAAACTCGCAGCTCTTTG +FJ211590.1 8147 8169 177e6ebb_24_LEFT_1 1 + AGCTCAAATTCGCAGCCCTTTG +FJ211590.1 8146 8169 177e6ebb_24_LEFT_2 1 + GAGCTTAAATTCGCAGCCCTCTG +FJ211590.1 8148 8169 177e6ebb_24_LEFT_3 1 + GCTCAAACTCGCAGCCCTTTG +FJ211590.1 8148 8169 177e6ebb_24_LEFT_4 1 + GCTCAAATTCGCAGCCCTCTG +FJ211590.1 8148 8169 177e6ebb_24_LEFT_5 1 + GCTCAAGTTCGCAGCCCTCTG +FJ211590.1 8148 8169 177e6ebb_24_LEFT_6 1 + GCTCAGACTCGCAGCCCTTTG +FJ211590.1 8150 8169 177e6ebb_24_LEFT_7 1 + TCAGGTTCGCAGCCCTCTG +FJ211590.1 8579 8598 177e6ebb_24_RIGHT_0 1 - AGGTCCATCCCTGAGCCGT +FJ211590.1 8579 8603 177e6ebb_24_RIGHT_1 1 - TGTATAGGTCCATCCCTGAACCGT +FJ211590.1 8491 8515 177e6ebb_25_LEFT_0 2 + CCTTCATACGGGGTCTTGTCTGTC +FJ211590.1 8491 8515 177e6ebb_25_LEFT_1 2 + CCTTCATACGGGGTCTTGTCTGTT +FJ211590.1 8492 8515 177e6ebb_25_LEFT_2 2 + CTTCATACGGGGTCCTGTCTGTT +FJ211590.1 8490 8515 177e6ebb_25_LEFT_3 2 + TCCTTCATACGGGATCTTGTCTGTC +FJ211590.1 8493 8515 177e6ebb_25_LEFT_4 2 + TTCGTACGGGGTCTTGTCTGTT +FJ211590.1 8903 8931 177e6ebb_25_RIGHT_0 2 - GGATAAAAGTAAGAAAATGAGCGGCCTG +FJ211590.1 8903 8931 177e6ebb_25_RIGHT_1 2 - GGATAAAAGTAAGAAAATGAGCGGCTTG +FJ211590.1 8903 8931 177e6ebb_25_RIGHT_2 2 - GGATAAAAGTAAGAGAATGAGCGGCTTG +FJ211590.1 8840 8867 177e6ebb_26_LEFT_0 1 + ATGTTTTGGCAACCTATGATACTTCCA +FJ211590.1 8842 8867 177e6ebb_26_LEFT_1 1 + GTTTTGGCAACCTACGATACTTCCA +FJ211590.1 8843 8867 177e6ebb_26_LEFT_2 1 + TTCTGGCAACCTACGATACTTCCA +FJ211590.1 8844 8867 177e6ebb_26_LEFT_3 1 + TTTGGCAACCTACGATACCTCCA +FJ211590.1 9280 9310 177e6ebb_26_RIGHT_0 1 - ACTATCTTATTGGTAACTATCGGGCTATCT +FJ211590.1 9280 9310 177e6ebb_26_RIGHT_1 1 - ACTATCTTATTGGTGACTATCGGACTATCC +FJ211590.1 9280 9307 177e6ebb_26_RIGHT_2 1 - ATCTTATTGGTGACTATCGGGCTATCT +FJ211590.1 9280 9306 177e6ebb_26_RIGHT_3 1 - TCTTGTTGGTAACTATCGGGCTATCT +FJ211590.1 9233 9256 177e6ebb_27_LEFT_0 2 + ATGGACTCGCTATCTGTCAACCA +FJ211590.1 9235 9256 177e6ebb_27_LEFT_1 2 + GGACTCGCTATCCGTCAACCA +FJ211590.1 9235 9256 177e6ebb_27_LEFT_2 2 + GGACTCGCTGTCTGTCAACCA +FJ211590.1 9649 9672 177e6ebb_27_RIGHT_0 2 - CCTTGATGTCCTCCCTCAACTCG +FJ211590.1 9649 9673 177e6ebb_27_RIGHT_1 2 - TCCTTGATGTCCTCCCTCAATTCG +FJ211590.1 9649 9673 177e6ebb_27_RIGHT_2 2 - TCCTTGATGTCCTCTCTCAGTTCG +FJ211590.1 9649 9675 177e6ebb_27_RIGHT_3 2 - TCTCCTTGATGTCCTCTCTCAATTCC +FJ211590.1 9577 9604 177e6ebb_28_LEFT_0 1 + GCTGTACTCCAAAGTCAGTGATAAGGT +FJ211590.1 9579 9604 177e6ebb_28_LEFT_1 1 + TGTACTCCAAAGTCAGTGACAAGGT +FJ211590.1 10003 10035 177e6ebb_28_RIGHT_0 1 - AACCATCTATTAATTTCCACATGTATCTGACT +FJ211590.1 10003 10034 177e6ebb_28_RIGHT_1 1 - ACCATCTATTAGTTTCCACATGTATCTGACT +FJ211590.1 10003 10033 177e6ebb_28_RIGHT_2 1 - CCATCTATCAGTTTCCACATGTATCTGACT +FJ211590.1 9918 9946 177e6ebb_29_LEFT_0 2 + TGATGTATTGTGATGTCATAGAGGGGAG +FJ211590.1 9921 9946 177e6ebb_29_LEFT_1 2 + TGTATTGTGATGTCGTAGAGGGGAG +FJ211590.1 9917 9946 177e6ebb_29_LEFT_2 2 + TTGATGTATTGTGATGTCATAGAAGGGAG +FJ211590.1 10356 10382 177e6ebb_29_RIGHT_0 2 - CTCATACACAATGACTTTGGGCTGAT +FJ211590.1 10356 10386 177e6ebb_29_RIGHT_1 2 - GAGTCTCATACACAATTACTTTAGGCTGAT +FJ211590.1 10356 10384 177e6ebb_29_RIGHT_2 2 - GTCTCATACACAATGACTTTAGGCTGAT +FJ211590.1 10356 10386 177e6ebb_29_RIGHT_3 2 - GTGTCTCATATACAATGACTTTAGGCTGAT +FJ211590.1 10291 10313 177e6ebb_30_LEFT_0 1 + CAGAAGTTTCGGCCATCCCAGA +FJ211590.1 10293 10313 177e6ebb_30_LEFT_1 1 + GAAGTTTCGGCCACCCCAGA +FJ211590.1 10731 10761 177e6ebb_30_RIGHT_0 1 - GGTCAAAGCTTGAATCATTAAGGAAAACAT +FJ211590.1 10731 10760 177e6ebb_30_RIGHT_1 1 - GTCAAAGCTCGAATCATTAAGGAAAACAT +FJ211590.1 10731 10759 177e6ebb_30_RIGHT_2 1 - TCAAAGCTCGAATCATTAAGGAAGACAT +FJ211590.1 10672 10695 177e6ebb_31_LEFT_0 2 + CCCGAAAGAGTTTCTGCGTTACG +FJ211590.1 10673 10695 177e6ebb_31_LEFT_1 2 + CCGAAAGAGTTCCTGCGTTACG +FJ211590.1 11090 11115 177e6ebb_31_RIGHT_0 2 - CTGCTCTCACGTTTTTGGTACTTGT +FJ211590.1 11090 11115 177e6ebb_31_RIGHT_1 2 - CTGCTTTAACGTTCCTGGTACTTGT +FJ211590.1 11090 11113 177e6ebb_31_RIGHT_2 2 - GCTCTCACGTTCCTGGTACTTGT +FJ211590.1 11090 11116 177e6ebb_31_RIGHT_3 2 - GCTGATCTCATGTTTCTGGTACTTGT +FJ211590.1 11090 11113 177e6ebb_31_RIGHT_4 2 - GCTTTCACGTTCTTGGTGCTTGC +FJ211590.1 11090 11114 177e6ebb_31_RIGHT_5 2 - TGCTCTCACGTTCTTGGTACTTGT +FJ211590.1 11090 11114 177e6ebb_31_RIGHT_6 2 - TGCTTTCACGTTCCTGGTACTTGT +FJ211590.1 11090 11114 177e6ebb_31_RIGHT_7 2 - TGCTTTCACGTTCTTGGTACTTGC +FJ211590.1 10992 11014 177e6ebb_32_LEFT_0 1 + CACTCCACACTCTGGCTGTCTC +FJ211590.1 10991 11014 177e6ebb_32_LEFT_1 1 + GCACTCCACACTCTAGCTGTCTC +FJ211590.1 11376 11398 177e6ebb_32_RIGHT_0 1 - AACGGGATATGGGCGTCAAGAT +FJ211590.1 11376 11396 177e6ebb_32_RIGHT_1 1 - CGGGATATGGGCGTCAAGGT +FJ211590.1 11376 11395 177e6ebb_32_RIGHT_2 1 - GGGACATGGGCGTCAAGGT +FJ211590.1 11312 11334 177e6ebb_33_LEFT_0 2 + CAGTGGCTGCATAAGAGGCTTG +FJ211590.1 11311 11334 177e6ebb_33_LEFT_1 2 + TCAGTGGCTGCATAAAAGGCTTG +FJ211590.1 11309 11334 177e6ebb_33_LEFT_2 2 + TTTCAGTGGCTGCATAAGAGACTTG +FJ211590.1 11729 11761 177e6ebb_33_RIGHT_0 2 - ACAAGTAGCCCATCATAATATATTCCTTTTGA +FJ211590.1 11729 11758 177e6ebb_33_RIGHT_1 2 - AGTAGCCCGTCATAATATATTCCCTTTGA +FJ211590.1 11729 11760 177e6ebb_33_RIGHT_2 2 - CAAGTAGCCCATCATAATATATCCCTTTTGA +FJ211590.1 11729 11760 177e6ebb_33_RIGHT_3 2 - CAAGTAGCCCGTCATAATATATTCCTTTTGA +FJ211590.1 11729 11760 177e6ebb_33_RIGHT_4 2 - CGAGTAGCCCATCATAATATATTCCTTTTGA +FJ211590.1 11670 11692 177e6ebb_34_LEFT_0 1 + ACATTGGCCATCACCTCAAAGC +FJ211590.1 11671 11692 177e6ebb_34_LEFT_1 1 + CATTGGCCATCACCTCAAGGC +FJ211590.1 11669 11692 177e6ebb_34_LEFT_2 1 + GACATTGGACATCACCTCAAGGC +FJ211590.1 11669 11692 177e6ebb_34_LEFT_3 1 + GACATTGGTCATCACCTCAAGGC +FJ211590.1 11669 11692 177e6ebb_34_LEFT_4 1 + GATATTGGCCATCACCTCAAGGC +FJ211590.1 11673 11692 177e6ebb_34_LEFT_5 1 + TCGGCCATCACCTCAAGGC +FJ211590.1 12091 12118 177e6ebb_34_RIGHT_0 1 - GCAATTGATGATGTTACTGGATCACCG +FJ211590.1 11941 11969 177e6ebb_35_LEFT_0 2 + TCTTGGCTTCACAATTAATTCAACCATG +FJ211590.1 11943 11969 177e6ebb_35_LEFT_1 2 + TTGGCTTCACAATCAATTCAACCATG +FJ211590.1 12350 12376 177e6ebb_35_RIGHT_0 2 - AATGCAGCCAATCTCTCATCTTCTTC +FJ211590.1 12350 12371 177e6ebb_35_RIGHT_1 2 - CGCCAGTCCCTCATCCTCTTC +FJ211590.1 12350 12371 177e6ebb_35_RIGHT_2 2 - CGCCAGTCTCTCGTCCTCTTC +FJ211590.1 12350 12370 177e6ebb_35_RIGHT_3 2 - GCCAGTCCCTCGTCCTCTTC +FJ211590.1 12350 12374 177e6ebb_35_RIGHT_4 2 - TGCAGCCAATCTCTCATCTTCCTC +FJ211590.1 12301 12328 177e6ebb_36_LEFT_0 1 + CCATAGTCCAAACCCAATGTTGAAAGG +FJ211590.1 12301 12328 177e6ebb_36_LEFT_1 1 + CCATAGTCCAAACCCGATGTTAAAAGG +FJ211590.1 12298 12328 177e6ebb_36_LEFT_2 1 + GATCCATAGTCCAAATCCAATGTTAAAAGG +FJ211590.1 12300 12328 177e6ebb_36_LEFT_3 1 + TCCATAGTCCAAACCCAATGTTAAAAGG +FJ211590.1 12300 12328 177e6ebb_36_LEFT_4 1 + TCCATAGTCCAAATCCAATGCTAAAAGG +FJ211590.1 12721 12743 177e6ebb_36_RIGHT_0 1 - AAGGTGGCCTCGCATAGATTCT +FJ211590.1 12721 12747 177e6ebb_36_RIGHT_1 1 - GAATAATGTGGCCTCGCATAGATTCT +FJ211590.1 12553 12579 177e6ebb_37_LEFT_0 2 + CTATGAACAATTCAGAGCAGGGATGG +FJ211590.1 12557 12579 177e6ebb_37_LEFT_1 2 + GAACAATTCAGGGCAGGGATGG +FJ211590.1 12551 12579 177e6ebb_37_LEFT_2 2 + GACTATGAACAATTTAGAGCAGGGATGG +FJ211590.1 12550 12579 177e6ebb_37_LEFT_3 2 + TGATTATGAACAATTTAGAGCAGGGATGG +FJ211590.1 12955 12977 177e6ebb_37_RIGHT_0 2 - AGCCCATGAGTACACTGTTGCT +FJ211590.1 12955 12977 177e6ebb_37_RIGHT_1 2 - GGCCCATGAGTACACTGTTGCT +FJ211590.1 12878 12904 177e6ebb_38_LEFT_0 1 + ACCACTGATGAGAGAACAGACATGAA +FJ211590.1 12876 12904 177e6ebb_38_LEFT_1 1 + CCACCACTGATGAGAGAACAGATATGAA +FJ211590.1 12875 12904 177e6ebb_38_LEFT_2 1 + TCTACCACTGATGAGAGAACAGATATGAA +FJ211590.1 13314 13341 177e6ebb_38_RIGHT_0 1 - AACAATCTGTTTCGACGTGAAGATGTA +FJ211590.1 13314 13340 177e6ebb_38_RIGHT_1 1 - ACAATCTGTTTCGACGTGGAGATGTA +FJ211590.1 13314 13339 177e6ebb_38_RIGHT_2 1 - CAATCCGTTTCGACGTGAAGATGTA +FJ211590.1 13314 13339 177e6ebb_38_RIGHT_3 1 - CAATCTGTTTCGACGTGAAGGTGTA +FJ211590.1 13257 13288 177e6ebb_39_LEFT_0 2 + GTGTTTTAGAAACACTATTTCGACTTGAGAA +FJ211590.1 13257 13288 177e6ebb_39_LEFT_1 2 + GTGTTTTAGAAACATTGTTTCGACTTGAGAA +FJ211590.1 13259 13288 177e6ebb_39_LEFT_2 2 + GTTTTAGAAACATTGTTTCGACTCGAGAA +FJ211590.1 13260 13288 177e6ebb_39_LEFT_3 2 + TCTTAGAAACATTGTTTCGACTCGAGAA +FJ211590.1 13258 13288 177e6ebb_39_LEFT_4 2 + TGTTTTAGAAACACTATTTCGACTCGAGAA +FJ211590.1 13258 13288 177e6ebb_39_LEFT_5 2 + TGTTTTAGAAACATTGTTCCGACTTGAGAA +FJ211590.1 13260 13288 177e6ebb_39_LEFT_6 2 + TTTTAGAAACACTGTTTCGACTCGAGAA +FJ211590.1 13680 13704 177e6ebb_39_RIGHT_0 2 - CACACTGGCCCAAGTAGATAGTGA +FJ211590.1 13680 13702 177e6ebb_39_RIGHT_1 2 - CACTGGCCCAAGTAGATGGTGA +FJ211590.1 13680 13705 177e6ebb_39_RIGHT_2 2 - GCACACTGGCCTAAGTAGATAGTGA +FJ211590.1 13680 13705 177e6ebb_39_RIGHT_3 2 - GCACATTGGCCCAAGTAGATAGTGA +FJ211590.1 13586 13615 177e6ebb_40_LEFT_0 1 + GAGAAGGACCATATGAATGAAATTTCAGC +FJ211590.1 13585 13615 177e6ebb_40_LEFT_1 1 + TGAAAAGGACCATATGAATGAAATTTCAGC +FJ211590.1 13584 13615 177e6ebb_40_LEFT_2 1 + TTGAGAAAGACCATATGAATGAAATTTCAGC +FJ211590.1 14012 14037 177e6ebb_40_RIGHT_0 1 - CCGGTACTACATCCTCATCGCTTTC +FJ211590.1 14012 14037 177e6ebb_40_RIGHT_1 1 - CCGGTACTACATCCTCGTCACTTTC +FJ211590.1 14012 14036 177e6ebb_40_RIGHT_2 1 - CGCTACTACATCCTCGTCGCTTTC +FJ211590.1 14012 14036 177e6ebb_40_RIGHT_3 1 - CGGTACTACATCCTCGTCGCTTTC +FJ211590.1 13901 13927 177e6ebb_41_LEFT_0 2 + GATGCTCAAAATTTGCACACAACTGT +FJ211590.1 13904 13927 177e6ebb_41_LEFT_1 2 + GCCCAAAACTTGCACACAACTGT +FJ211590.1 13903 13927 177e6ebb_41_LEFT_2 2 + TGCTCAAAACTTGCACACAACTGT +FJ211590.1 14275 14305 177e6ebb_41_RIGHT_0 2 - ATGAATCCTGGATCAACTCTCAATCTTATC +FJ211590.1 14275 14300 177e6ebb_41_RIGHT_1 2 - TCCTGGATCGACTCTCAACCTTATC +FJ211590.1 14275 14304 177e6ebb_41_RIGHT_2 2 - TGAATCCTGGATCGACTCTCAATCTTATC +FJ211590.1 14275 14304 177e6ebb_41_RIGHT_3 2 - TGAATCCTGGATCGACTCTTAACCTTATC +FJ211590.1 14216 14246 177e6ebb_42_LEFT_0 1 + ATTATTGTAGACCATTACTCATGCTCTCTG +FJ211590.1 14216 14246 177e6ebb_42_LEFT_1 1 + ATTATTGTAGACCATTACTCATGTTCCCTG +FJ211590.1 14219 14246 177e6ebb_42_LEFT_2 1 + GTTGTAGACCATTACTCATGCTCTCTG +FJ211590.1 14221 14246 177e6ebb_42_LEFT_3 1 + TGTAGACCATTACTCATGCTCCCTG +FJ211590.1 14221 14246 177e6ebb_42_LEFT_4 1 + TGTGGACCATTACTCATGCTCTCTG +FJ211590.1 14656 14684 177e6ebb_42_RIGHT_0 1 - AGAATTGGCGGAAACTCCACTATTATAG +FJ211590.1 14656 14683 177e6ebb_42_RIGHT_1 1 - GAATTGGCGGAAACCCCACTATTATAG +FJ211590.1 14656 14679 177e6ebb_42_RIGHT_2 1 - TGGCGGAAACCCCACTATTGTAG +FJ211590.1 14558 14577 177e6ebb_43_LEFT_0 2 + AGATGCCTTGAGCCAGGGG +FJ211590.1 14556 14577 177e6ebb_43_LEFT_1 2 + GGAGATGCCTTGAGCCAGGAG +FJ211590.1 14987 15007 177e6ebb_43_RIGHT_0 2 - AAGTCCCCGCTGAAAGGCAT +FJ211590.1 14987 15010 177e6ebb_43_RIGHT_1 2 - ACAAAATCCCCACTGACAGGCAT +FJ211590.1 14987 15009 177e6ebb_43_RIGHT_2 2 - CAAAATCCCCGCTGAAAGGCAT +FJ211590.1 14900 14928 177e6ebb_44_LEFT_0 1 + ACTATAGAGAAGCTAGAGGAATTGGCAG +FJ211590.1 15323 15343 177e6ebb_44_RIGHT_0 1 - CCGTTAATTGCCAACCCGCA +FJ211590.1 15227 15250 177e6ebb_45_LEFT_0 2 + AGCTGCATACAAGCAATTGTGGG +FJ211590.1 15224 15250 177e6ebb_45_LEFT_1 2 + CTAAACTGCATACAAGCAATTGTGGG +FJ211590.1 15228 15250 177e6ebb_45_LEFT_2 2 + GCTGCATACAAGCGATTGTGGG +FJ211590.1 15228 15250 177e6ebb_45_LEFT_3 2 + GCTGCATACAGGCAATTGTGGG +FJ211590.1 15635 15666 177e6ebb_45_RIGHT_0 2 - ACTTGGACAGATTCTTAACGAAGATATTCTG +FJ211590.1 15635 15671 177e6ebb_45_RIGHT_1 2 - CTCTGACTTAGATAAATTCTTAACGAAGATATTCTG +FJ211590.1 15635 15669 177e6ebb_45_RIGHT_2 2 - CTGACTTGGATAGATTCTTAACGAAAATATTCTG +FJ211590.1 15635 15670 177e6ebb_45_RIGHT_3 2 - TCTGACTTAGATAGATTCTTAACGAAGATATTCTG +FJ211590.1 15635 15668 177e6ebb_45_RIGHT_4 2 - TGACTTGGATAGATTCTTAACGAAGATATTCTG +FJ211590.1 15635 15663 177e6ebb_45_RIGHT_5 2 - TGGACAGATTCTTAACGAAGATATTCCG +FJ211590.1 15429 15457 177e6ebb_46_LEFT_0 1 + AGTTGGCAAGATTCAAAGACAATCAAAG +FJ211590.1 15430 15457 177e6ebb_46_LEFT_1 1 + GTTGGCAAGATTCAAAGACAACCAAAG +FJ211590.1 15430 15457 177e6ebb_46_LEFT_2 1 + GTTGGCAAGATTCAAAGAGAACCAAAG +FJ211590.1 15432 15457 177e6ebb_46_LEFT_3 1 + TGGCAAGATTCAAGGACAACCAAAG +FJ211590.1 15432 15457 177e6ebb_46_LEFT_4 1 + TGGCGAGATTCAAAGACAACCAAAG +FJ211590.1 15858 15888 177e6ebb_46_RIGHT_0 1 - AAAAGCTGGGAATAGAAACTTCGTATTTTC +FJ211590.1 15858 15888 177e6ebb_46_RIGHT_1 1 - ACAAAGCTGGAATAGAAACTTCGTATTTTC +FJ211590.1 15858 15888 177e6ebb_46_RIGHT_2 1 - CAAAGCAGGGAATAGAAACTTCGTATTTTC +FJ211590.1 15858 15888 177e6ebb_46_RIGHT_3 1 - CAAAGCTGGGAATAGAAACTTCGTATTTTC +FJ211590.1 15858 15887 177e6ebb_46_RIGHT_4 1 - CAAAGCTGGGAATAGAACTTCGTATTTTC +FJ211590.1 15858 15887 177e6ebb_46_RIGHT_5 1 - CAAGCTGGGAATAGAAACTTCGTATTTTC +FJ211590.1 15858 15889 177e6ebb_46_RIGHT_6 1 - GACAAACTGGGAATAGAAACTTCGTATTTTC +FJ211590.1 15858 15889 177e6ebb_46_RIGHT_7 1 - GACAAAGTGGGAATAGAAACTTCGTATTTTC diff --git a/assets/reference/B3/artic_primers.bed b/assets/reference/B3/artic_primers.bed new file mode 100644 index 0000000..d5ee4ec --- /dev/null +++ b/assets/reference/B3/artic_primers.bed @@ -0,0 +1,375 @@ +# artic-bed-version v3.0 +MK513622.1 0 0 177e6ebb_0_LEFT_0 1 + CCAAACAAAGTTGGGTAAGGATCGA +MK513622.1 305 328 177e6ebb_0_RIGHT_0 1 - ACTGGTCACTCTGAACAACCTCC +MK513622.1 305 328 177e6ebb_0_RIGHT_1 1 - ACTGGTCACTCTGGACAACCTCT +MK513622.1 305 327 177e6ebb_0_RIGHT_2 1 - CTGGTCACTCTGGACAACCTCC +MK513622.1 305 329 177e6ebb_0_RIGHT_3 1 - GACTGGTCACTCTGAACAACCTCT +MK513622.1 305 329 177e6ebb_0_RIGHT_4 1 - GATTGGTCACTCTGGACAACCTCT +MK513622.1 305 330 177e6ebb_0_RIGHT_5 1 - TGATTGGTCACTCTGGACAACTTCT +MK513622.1 305 326 177e6ebb_0_RIGHT_6 1 - TGGTCGCTCTGGACAACCTCT +MK513622.1 254 280 177e6ebb_1_LEFT_0 2 + CCAATTGATTCAGAGGATCACCGATG +MK513622.1 252 280 177e6ebb_1_LEFT_1 2 + GGTCAATTAATTCAGAGGATCACCGATG +MK513622.1 252 280 177e6ebb_1_LEFT_2 2 + GGTCAATTGATTCAGAGGATCACTGATG +MK513622.1 253 280 177e6ebb_1_LEFT_3 2 + GTCAATTGATTCAGAGGATCACCGATG +MK513622.1 692 720 177e6ebb_1_RIGHT_0 2 - GATATCCAGGATTAAAGCGACCATGAAT +MK513622.1 692 716 177e6ebb_1_RIGHT_1 2 - TCCAGGATTAGAGCCACCATGAAT +MK513622.1 692 716 177e6ebb_1_RIGHT_2 2 - TCCAGGATTAGAGCGACCATGAAT +MK513622.1 692 718 177e6ebb_1_RIGHT_3 2 - TGTCCAGAATTAGAGCGACCATGAAT +MK513622.1 639 664 177e6ebb_2_LEFT_0 1 + AAATGGTTGGATGTGGTGAGAAACA +MK513622.1 637 664 177e6ebb_2_LEFT_1 1 + GAAAATGGTTGGATGTAGTGAGGAACA +MK513622.1 637 664 177e6ebb_2_LEFT_2 1 + GAAAATGGTTGGATGTGGTGAGGAATA +MK513622.1 642 664 177e6ebb_2_LEFT_3 1 + TGGTTGGATGTGGTGAGGAACA +MK513622.1 1077 1106 177e6ebb_2_RIGHT_0 1 - ACCATCTCTTGCCCTAATCTAAAATATGC +MK513622.1 1077 1105 177e6ebb_2_RIGHT_1 1 - CCATCTCTTGCCCTAACCTAAAATATGC +MK513622.1 1077 1110 177e6ebb_2_RIGHT_2 1 - CCTAACCATCTCTTGTCCTAATCTAAAATATGC +MK513622.1 997 1019 177e6ebb_3_LEFT_0 2 + GGAGCTATGCCATGGGAGTAGG +MK513622.1 996 1019 177e6ebb_3_LEFT_1 2 + TGGAGTTATGCCATGGGAGTAGG +MK513622.1 1415 1441 177e6ebb_3_RIGHT_0 2 - ACTCTGATGCAGTGTCAATGTCTAGG +MK513622.1 1415 1437 177e6ebb_3_RIGHT_1 2 - CGATGCAGTGTCAATGTCAGGG +MK513622.1 1415 1437 177e6ebb_3_RIGHT_2 2 - CGATGCAGTGTCAATGTCCAGG +MK513622.1 1415 1437 177e6ebb_3_RIGHT_3 2 - CGATGCAGTGTCAATGTCTGGG +MK513622.1 1415 1439 177e6ebb_3_RIGHT_4 2 - TCCGATGCAGTGTCAATGTCTAGG +MK513622.1 1415 1439 177e6ebb_3_RIGHT_5 2 - TCTGATGCAGTGTCAACGTCTAGG +MK513622.1 1300 1320 177e6ebb_4_LEFT_0 1 + GCAAGGAGGACAGGAGGGTC +MK513622.1 1299 1320 177e6ebb_4_LEFT_1 1 + GGCAAGGAAGACAGGAGGGTC +MK513622.1 1298 1320 177e6ebb_4_LEFT_2 1 + GGGCAAGGAAGATAGGAGAGCC +MK513622.1 1298 1320 177e6ebb_4_LEFT_3 1 + GGGCAAGGAAGATAGGAGGGTC +MK513622.1 1297 1320 177e6ebb_4_LEFT_4 1 + GGGGCAAAGAAGATAGGAGGGTC +MK513622.1 1297 1320 177e6ebb_4_LEFT_5 1 + GGGGCAAGGAAGATAGAAGGGTC +MK513622.1 1297 1320 177e6ebb_4_LEFT_6 1 + GGGGCAAGGAAGATATGAGGGTC +MK513622.1 1298 1320 177e6ebb_4_LEFT_7 1 + GGGTAAGGAGGACAGGAGGGTC +MK513622.1 1709 1727 177e6ebb_4_RIGHT_0 1 - TGACATGGCGTGCCTGCT +MK513622.1 1632 1657 177e6ebb_5_LEFT_0 2 + AAAAACTTAGGAACCAGGTCCACAC +MK513622.1 2067 2091 177e6ebb_5_RIGHT_0 2 - ACCACGATAGAGTCAGCATCTTGG +MK513622.1 2067 2093 177e6ebb_5_RIGHT_1 2 - GAACCATGATAGAGTCAGCATCTTGG +MK513622.1 1984 2006 177e6ebb_6_LEFT_0 1 + CCCCCAAGAAATCTCCAGGCAT +MK513622.1 1983 2006 177e6ebb_6_LEFT_1 1 + CCCCTCAAGAAATCTCCAGGCAT +MK513622.1 1983 2006 177e6ebb_6_LEFT_2 1 + CCCCTCAAGAAATTCCCAGGCAT +MK513622.1 1984 2006 177e6ebb_6_LEFT_3 1 + CCCTCAAGAAATCCCCAGGCAT +MK513622.1 1984 2006 177e6ebb_6_LEFT_4 1 + CCCTCAGGAAATCTCCAGGCAT +MK513622.1 2418 2442 177e6ebb_6_RIGHT_0 1 - GTCAATAAAGACGCGATCTCCGTT +MK513622.1 2418 2443 177e6ebb_6_RIGHT_1 1 - TGTCAATAAAGACGCAATCTCCGTT +MK513622.1 2312 2337 177e6ebb_7_LEFT_0 2 + AGCTTGGGAAAACTCTCAATGTTCC +MK513622.1 2314 2337 177e6ebb_7_LEFT_1 2 + CCTGGGAAGACTCTCAATGTCCC +MK513622.1 2313 2337 177e6ebb_7_LEFT_2 2 + GCTGGGGAAAACTCTCAATGTTCC +MK513622.1 2313 2337 177e6ebb_7_LEFT_3 2 + GCTTGGGAAAACCCTCAATGTTCC +MK513622.1 2751 2778 177e6ebb_7_RIGHT_0 2 - ATGCTGATATTTTGCTTGTTGATCTGC +MK513622.1 2751 2781 177e6ebb_7_RIGHT_1 2 - GATATGCTGATATTTTGCCTGTTAATCTGC +MK513622.1 2751 2776 177e6ebb_7_RIGHT_2 2 - GCTGATGTTTTGCCTGTTGATCTGC +MK513622.1 2751 2777 177e6ebb_7_RIGHT_3 2 - TGCTGATATTTTGCCTGTTGATCTGC +MK513622.1 2665 2689 177e6ebb_8_LEFT_0 1 + GCCAAAATACACGAGGACAACCAG +MK513622.1 2663 2689 177e6ebb_8_LEFT_1 1 + TGGCCAAAATACACGAGGATAATCAG +MK513622.1 3078 3098 177e6ebb_8_RIGHT_0 1 - TGGAGCGGATTACACTGCGT +MK513622.1 3033 3053 177e6ebb_9_LEFT_0 2 + GATGAGCTCAGCCGTTGGGT +MK513622.1 3033 3053 177e6ebb_9_LEFT_1 2 + GATGAGCTCAGCTGTCGGGT +MK513622.1 3035 3053 177e6ebb_9_LEFT_2 2 + TGAGCTCAGCCGTCGGGT +MK513622.1 3035 3053 177e6ebb_9_LEFT_3 2 + TGAGCTCGGCAGTCGGGT +MK513622.1 3035 3053 177e6ebb_9_LEFT_4 2 + TGAGCTCGGCTGTCGGGT +MK513622.1 3473 3499 177e6ebb_9_RIGHT_0 2 - CCAGCAGAAACATGTACATGAAGCAT +MK513622.1 3473 3500 177e6ebb_9_RIGHT_1 2 - CCCAGCAGAAACATGTACATAAAGCAT +MK513622.1 3473 3501 177e6ebb_9_RIGHT_2 2 - CCCCAGTAGAAACATGTACATAAAGCAT +MK513622.1 3422 3446 177e6ebb_10_LEFT_0 1 + GGTACCCCAGGTCAGAGTCATAGA +MK513622.1 3422 3446 177e6ebb_10_LEFT_1 1 + GGTGCCCCAGGTCAGAGTTATAGA +MK513622.1 3422 3446 177e6ebb_10_LEFT_2 1 + GGTGCCTCAGGTCAGAGTCATAGA +MK513622.1 3424 3446 177e6ebb_10_LEFT_3 1 + TCCCCCAGGTCAGAGTCATAGA +MK513622.1 3424 3446 177e6ebb_10_LEFT_4 1 + TGCCCCAGGTCAGAGTCATAGA +MK513622.1 3421 3446 177e6ebb_10_LEFT_5 1 + TGGTACCTCAGGTCAGAGTCATAGA +MK513622.1 3861 3887 177e6ebb_10_RIGHT_0 1 - ACTGCATTGACTGATCTGAATTCCAG +MK513622.1 3861 3888 177e6ebb_10_RIGHT_1 1 - CACTGCATTGACCGATCTGAATTCTAG +MK513622.1 3861 3884 177e6ebb_10_RIGHT_2 1 - GCATTGACCGATCTGAACTCCAG +MK513622.1 3861 3885 177e6ebb_10_RIGHT_3 1 - TGCATTGACCGATCTGAATTCCAG +MK513622.1 3783 3803 177e6ebb_11_LEFT_0 2 + CCGCAGAGGTTCCGTGTTGT +MK513622.1 4223 4249 177e6ebb_11_RIGHT_0 2 - CCTGGATTCTTACGATCTTGCATCTG +MK513622.1 4223 4250 177e6ebb_11_RIGHT_1 2 - GCCTGGATTCTTACTATCTTGCATCTG +MK513622.1 4223 4250 177e6ebb_11_RIGHT_2 2 - GCCTGGATTTTTACGATCTTGCATCTG +MK513622.1 4093 4119 177e6ebb_12_LEFT_0 1 + GCACCAGTCTTCACATTAGAAGCACA +MK513622.1 4092 4119 177e6ebb_12_LEFT_1 1 + GGCACCAGTCTTCACATTAGAAGTACA +MK513622.1 4515 4536 177e6ebb_12_RIGHT_0 1 - ACGCAGATTGGGATAGCTGGT +MK513622.1 4515 4535 177e6ebb_12_RIGHT_1 1 - CGCAGATTGGGATGGCTGGT +MK513622.1 4515 4533 177e6ebb_12_RIGHT_2 1 - CGGGTTGGGATGGCTGGT +MK513622.1 4515 4535 177e6ebb_12_RIGHT_3 1 - CTCAGGTTGGGATGGCTGGT +MK513622.1 4515 4535 177e6ebb_12_RIGHT_4 1 - CTCGGATTGGGATGGCTGGT +MK513622.1 4515 4537 177e6ebb_12_RIGHT_5 1 - GACTCAGATTGGGATGGCTGGT +MK513622.1 4515 4537 177e6ebb_12_RIGHT_6 1 - GACTCAGGTTGGGATGGCTAGT +MK513622.1 4515 4534 177e6ebb_12_RIGHT_7 1 - GCAGATTGGGCTGGCTGGT +MK513622.1 4515 4534 177e6ebb_12_RIGHT_8 1 - GCAGATTGGGGTGGCTGGT +MK513622.1 4515 4534 177e6ebb_12_RIGHT_9 1 - GCGGATTGGGATGGCTGGT +MK513622.1 4315 4342 177e6ebb_13_LEFT_0 2 + AAGGACTCTTCAAAGTTTTGTAGACCG +MK513622.1 4316 4342 177e6ebb_13_LEFT_1 2 + AGGACTCTTCAAAGTTCTGTAGACCG +MK513622.1 4314 4342 177e6ebb_13_LEFT_2 2 + CAAGGACTATTCAAAGTTCTGTAGACCG +MK513622.1 4313 4342 177e6ebb_13_LEFT_3 2 + CCAAGGACTATTCAAAGTTCTGTAAACCG +MK513622.1 4317 4342 177e6ebb_13_LEFT_4 2 + GGACTGTTCAAGGTTCTGTAGACCG +MK513622.1 4750 4777 177e6ebb_13_RIGHT_0 2 - CCTTGGCCCTAAGTTTTGTTTAGTTTG +MK513622.1 4750 4780 177e6ebb_13_RIGHT_1 2 - GTTCCTTGACCCTAAGTTTTGTTTAGTTTG +MK513622.1 4750 4778 177e6ebb_13_RIGHT_2 2 - TCCTTGGCCCTAAGTTTTGTTTAGTATG +MK513622.1 4750 4775 177e6ebb_13_RIGHT_3 2 - TTGGCCCTGAGTTTTGTTTAGTCTG +MK513622.1 4659 4677 177e6ebb_14_LEFT_0 1 + CAACCCCAAAGCCCCGCA +MK513622.1 4659 4677 177e6ebb_14_LEFT_1 1 + CAACGCAAAAGCCCCGCA +MK513622.1 4658 4677 177e6ebb_14_LEFT_2 1 + CCAACCCAAAAGCCCCGCA +MK513622.1 4657 4677 177e6ebb_14_LEFT_3 1 + CCCAACGCAAGAACCCCACA +MK513622.1 4657 4677 177e6ebb_14_LEFT_4 1 + CCCAATGCAAAAGCCCCACA +MK513622.1 4656 4677 177e6ebb_14_LEFT_5 1 + CCCCAACACAAGAACCCCACA +MK513622.1 4656 4677 177e6ebb_14_LEFT_6 1 + CCCCAACGCAAGAACTCCACA +MK513622.1 4656 4677 177e6ebb_14_LEFT_7 1 + CCCCGACACAACAACTCCACA +MK513622.1 4655 4677 177e6ebb_14_LEFT_8 1 + CCCTCGACACAACAACTCCACA +MK513622.1 4657 4677 177e6ebb_14_LEFT_9 1 + CTCAACGCAAAAGCCCCACA +MK513622.1 4653 4677 177e6ebb_14_LEFT_10 1 + CTCCCTCGACACAACAACTCTACA +MK513622.1 4655 4677 177e6ebb_14_LEFT_11 1 + CTCTCAATGCAAAAGCCCCACA +MK513622.1 4658 4677 177e6ebb_14_LEFT_12 1 + TCAACCCAAAAGCCCCGCA +MK513622.1 4656 4677 177e6ebb_14_LEFT_13 1 + TCCCGACACAACAACTCCACA +MK513622.1 4654 4677 177e6ebb_14_LEFT_14 1 + TCCCTCAACACAAGAACTCCACA +MK513622.1 4652 4677 177e6ebb_14_LEFT_15 1 + TCTTCCTCAACACAAGAACTCCACA +MK513622.1 5012 5030 177e6ebb_14_RIGHT_0 1 - GCTGCCGTGGTCGTGTGT +MK513622.1 5012 5031 177e6ebb_14_RIGHT_1 1 - GGTTGCCGTGGTCGTGTGT +MK513622.1 5012 5031 177e6ebb_14_RIGHT_2 1 - GGTTGCCGTGGTGGTGTGT +MK513622.1 5012 5032 177e6ebb_14_RIGHT_3 1 - TGGTTACCGTGGTCGTGTGT +MK513622.1 4884 4903 177e6ebb_15_LEFT_0 2 + ACAGGCAGGCACACCAACC +MK513622.1 4884 4903 177e6ebb_15_LEFT_1 2 + ACAGGCAGGGACACCAACC +MK513622.1 4883 4903 177e6ebb_15_LEFT_2 2 + CACAGGCGATCACACCAACC +MK513622.1 4882 4903 177e6ebb_15_LEFT_3 2 + CCACAGGTAGGCACACCAACC +MK513622.1 4883 4903 177e6ebb_15_LEFT_4 2 + CGCAGGCAGACACACCAACC +MK513622.1 4883 4903 177e6ebb_15_LEFT_5 2 + TGCAGGCAGACACACCAACC +MK513622.1 5319 5345 177e6ebb_15_RIGHT_0 2 - ACACTGGATGAGTCTTAATTCTGGGA +MK513622.1 5319 5345 177e6ebb_15_RIGHT_1 2 - ACATTAGGTGAGTCTTGATTCTGGGA +MK513622.1 5319 5345 177e6ebb_15_RIGHT_2 2 - ACATTGGATGAGTCTTGATTCTGGGA +MK513622.1 5319 5343 177e6ebb_15_RIGHT_3 2 - ACTGGATGAGTCTTGATTCTGGGG +MK513622.1 5319 5343 177e6ebb_15_RIGHT_4 2 - ATTGGATGGGTCTTGATTCTGGGA +MK513622.1 5319 5344 177e6ebb_15_RIGHT_5 2 - CACTGGATGAGTCTTGATTCTGGGA +MK513622.1 5319 5342 177e6ebb_15_RIGHT_6 2 - CTGGATGAGTCTTGATCCTGGGG +MK513622.1 5319 5347 177e6ebb_15_RIGHT_7 2 - GGATATTGGATGAGTCTTGATTCTGGGA +MK513622.1 5264 5288 177e6ebb_16_LEFT_0 1 + AACCCACTATATCCGACGTCACTC +MK513622.1 5269 5288 177e6ebb_16_LEFT_1 1 + ACCACACCCGACGACACTC +MK513622.1 5267 5288 177e6ebb_16_LEFT_2 1 + CCACCACACCCGACGACAATC +MK513622.1 5267 5288 177e6ebb_16_LEFT_3 1 + CCACCACACCCGACTACACTC +MK513622.1 5267 5288 177e6ebb_16_LEFT_4 1 + CCACCACATCCGACGACACTC +MK513622.1 5266 5288 177e6ebb_16_LEFT_5 1 + CCCACTATACCCGACGTCACTC +MK513622.1 5266 5288 177e6ebb_16_LEFT_6 1 + TCCACCACACCTAACGACACTC +MK513622.1 5266 5288 177e6ebb_16_LEFT_7 1 + TCCACCACATCCGACGATACTC +MK513622.1 5266 5288 177e6ebb_16_LEFT_8 1 + TCTACCACATCCGACGACACTC +MK513622.1 5666 5693 177e6ebb_16_RIGHT_0 1 - CCGCAAATCTTTTGTGTCTCCTACTTG +MK513622.1 5666 5692 177e6ebb_16_RIGHT_1 1 - CGCAAATCTCTTGTGTCTCCTACTTG +MK513622.1 5666 5692 177e6ebb_16_RIGHT_2 1 - TGCAAATCTCTTGTGTCTCCTACTTG +MK513622.1 5595 5623 177e6ebb_17_LEFT_0 2 + AGTTTTGGAACCAATTAGAGATGCACTT +MK513622.1 5594 5623 177e6ebb_17_LEFT_1 2 + CAGTTTTGGAACCAATTAAAGATGCACTT +MK513622.1 5598 5623 177e6ebb_17_LEFT_2 2 + CCTGGAACCAATTAGGGATGCACTT +MK513622.1 5596 5623 177e6ebb_17_LEFT_3 2 + GTTCTGGAACCAATTAGAGATGCACTT +MK513622.1 5597 5623 177e6ebb_17_LEFT_4 2 + TCCTGGAACCAATTAGAGATGCACTT +MK513622.1 5598 5623 177e6ebb_17_LEFT_5 2 + TCTGGAACCAATCAGAGATGCACTT +MK513622.1 6012 6032 177e6ebb_17_RIGHT_0 2 - CCGCAGATATGGGGTCCCGT +MK513622.1 6012 6033 177e6ebb_17_RIGHT_1 2 - TCCGCAGATATGGGGTCTCGT +MK513622.1 5955 5984 177e6ebb_18_LEFT_0 1 + CGGGCTCAAATTGCTCAGATATTATACAG +MK513622.1 5955 5984 177e6ebb_18_LEFT_1 1 + CGGGCTCAAATTGCTTAGATACTATACAG +MK513622.1 5957 5984 177e6ebb_18_LEFT_2 1 + GGCTCAAGTTGCTCAGATACTATACAG +MK513622.1 5956 5984 177e6ebb_18_LEFT_3 1 + GGGCTCAAATTGCTCAGATACTATACAG +MK513622.1 6392 6414 177e6ebb_18_RIGHT_0 1 - AGCAGAGGACTCATCGGGTACA +MK513622.1 6392 6413 177e6ebb_18_RIGHT_1 1 - GCAGGGGACTCATCGGGTACA +MK513622.1 6344 6368 177e6ebb_19_LEFT_0 2 + CATCGTGTACTTTCATGCCAGAGG +MK513622.1 6347 6368 177e6ebb_19_LEFT_1 2 + CGTGCACTTTCATGCCAGAGG +MK513622.1 6342 6368 177e6ebb_19_LEFT_2 2 + GTCATCATGTACTTTCATGCCAGAGG +MK513622.1 6343 6368 177e6ebb_19_LEFT_3 2 + TCATCATGTACCTTCATGCCAGAGG +MK513622.1 6782 6808 177e6ebb_19_RIGHT_0 2 - ACTCCTCAATATCTGGTCCGATGATT +MK513622.1 6782 6811 177e6ebb_19_RIGHT_1 2 - CATACTCCTTAATATCTGGTCCGATGACT +MK513622.1 6782 6807 177e6ebb_19_RIGHT_2 2 - CTCCTCAATATCTGGTCCGATGACT +MK513622.1 6782 6812 177e6ebb_19_RIGHT_3 2 - TCATACTTCTCAATATCTGGTCCGATGATT +MK513622.1 6716 6740 177e6ebb_20_LEFT_0 1 + AGTTGGATGTAGGGACGAACTTGG +MK513622.1 6716 6740 177e6ebb_20_LEFT_1 1 + GGTTGGACGTAGGGACAAATCTGG +MK513622.1 6719 6740 177e6ebb_20_LEFT_2 1 + TGGACGTAGGGACAAACCTGG +MK513622.1 6719 6740 177e6ebb_20_LEFT_3 1 + TGGACGTGGGGACAAATCTGG +MK513622.1 7147 7171 177e6ebb_20_RIGHT_0 1 - GGTGACATTGTGGATGATCTTGCA +MK513622.1 7147 7170 177e6ebb_20_RIGHT_1 1 - GTGACATTGCGGATGATCTTGCA +MK513622.1 7147 7170 177e6ebb_20_RIGHT_2 1 - GTGACATTGTGGATGGTCTTGCA +MK513622.1 7072 7099 177e6ebb_21_LEFT_0 2 + AGCATCAATCCCACCTGAAATTATCTC +MK513622.1 7072 7099 177e6ebb_21_LEFT_1 2 + AGCATCACTCCCACTTGAAATTATCTC +MK513622.1 7075 7099 177e6ebb_21_LEFT_2 2 + ATCAAGCCCACCTGAAATTGTCTC +MK513622.1 7074 7099 177e6ebb_21_LEFT_3 2 + CACCAAGCCCACCTGAAATTATCTC +MK513622.1 7074 7099 177e6ebb_21_LEFT_4 2 + CATCAAGCCCATCTGAAGTTGTCTC +MK513622.1 7071 7099 177e6ebb_21_LEFT_5 2 + CGACATCAAGCCACCCTAAAATTATCTC +MK513622.1 7073 7099 177e6ebb_21_LEFT_6 2 + GCATCAAGCCCACCTGAAATTATCTC +MK513622.1 7073 7099 177e6ebb_21_LEFT_7 2 + GCATCAAGCCCATCTGAAATTGTCTC +MK513622.1 7501 7529 177e6ebb_21_RIGHT_0 2 - AATCTTGTCCGAGATGAATTTCACTAGG +MK513622.1 7501 7535 177e6ebb_21_RIGHT_1 2 - GAATTTAATCTTATCCGAGATGAATTTCACTAGG +MK513622.1 7501 7535 177e6ebb_21_RIGHT_2 2 - GAATTTAATCTTGTCAGAGATGAATTTCACTAGG +MK513622.1 7501 7536 177e6ebb_21_RIGHT_3 2 - GGAATTTAATTTTGTCAGAGATGAATTTCACTAGG +MK513622.1 7501 7531 177e6ebb_21_RIGHT_4 2 - TTGATCTTGTCAGAGATGAATTTCACTAGG +MK513622.1 7501 7532 177e6ebb_21_RIGHT_5 2 - TTTAATCTTGTCAGAGATGAACTTCACTAGG +MK513622.1 7396 7424 177e6ebb_22_LEFT_0 1 + AGATGTAACTAACTCAATCGAGCATCAG +MK513622.1 7397 7424 177e6ebb_22_LEFT_1 1 + GATGTAACTAACTCAATCGAGCACCAG +MK513622.1 7397 7424 177e6ebb_22_LEFT_2 1 + GATGTAACTAACTCAGTCGAGCATCAG +MK513622.1 7397 7424 177e6ebb_22_LEFT_3 1 + GATGTGACTAACTCAATCGAGCATCAG +MK513622.1 7396 7424 177e6ebb_22_LEFT_4 1 + GGATGTAACTAACTCAATCGAGCATCAG +MK513622.1 7836 7860 177e6ebb_22_RIGHT_0 1 - GGTAAGTTCCCCCATACATTCCCT +MK513622.1 7836 7860 177e6ebb_22_RIGHT_1 1 - GGTAGGTTCCCCCATACATTCCCT +MK513622.1 7836 7859 177e6ebb_22_RIGHT_2 1 - GTAAGTTCCCCCGTACATTCCCT +MK513622.1 7721 7741 177e6ebb_23_LEFT_0 2 + AACTGCTCAGGGCCCACTAC +MK513622.1 8130 8151 177e6ebb_23_RIGHT_0 2 - GGGATTTCCAGACACCCAGCT +MK513622.1 8130 8152 177e6ebb_23_RIGHT_1 2 - GGGGATTTCCAGACACCTAGCT +MK513622.1 8040 8062 177e6ebb_24_LEFT_0 1 + AGCTCAAACTCGCAGCTCTTTG +MK513622.1 8040 8062 177e6ebb_24_LEFT_1 1 + AGCTCAAATTCGCAGCCCTTTG +MK513622.1 8039 8062 177e6ebb_24_LEFT_2 1 + GAGCTTAAATTCGCAGCCCTCTG +MK513622.1 8041 8062 177e6ebb_24_LEFT_3 1 + GCTCAAACTCGCAGCCCTTTG +MK513622.1 8041 8062 177e6ebb_24_LEFT_4 1 + GCTCAAATTCGCAGCCCTCTG +MK513622.1 8041 8062 177e6ebb_24_LEFT_5 1 + GCTCAAGTTCGCAGCCCTCTG +MK513622.1 8041 8062 177e6ebb_24_LEFT_6 1 + GCTCAGACTCGCAGCCCTTTG +MK513622.1 8043 8062 177e6ebb_24_LEFT_7 1 + TCAGGTTCGCAGCCCTCTG +MK513622.1 8472 8491 177e6ebb_24_RIGHT_0 1 - AGGTCCATCCCTGAGCCGT +MK513622.1 8472 8496 177e6ebb_24_RIGHT_1 1 - TGTATAGGTCCATCCCTGAACCGT +MK513622.1 8384 8408 177e6ebb_25_LEFT_0 2 + CCTTCATACGGGGTCTTGTCTGTC +MK513622.1 8384 8408 177e6ebb_25_LEFT_1 2 + CCTTCATACGGGGTCTTGTCTGTT +MK513622.1 8385 8408 177e6ebb_25_LEFT_2 2 + CTTCATACGGGGTCCTGTCTGTT +MK513622.1 8383 8408 177e6ebb_25_LEFT_3 2 + TCCTTCATACGGGATCTTGTCTGTC +MK513622.1 8386 8408 177e6ebb_25_LEFT_4 2 + TTCGTACGGGGTCTTGTCTGTT +MK513622.1 8796 8824 177e6ebb_25_RIGHT_0 2 - GGATAAAAGTAAGAAAATGAGCGGCCTG +MK513622.1 8796 8824 177e6ebb_25_RIGHT_1 2 - GGATAAAAGTAAGAAAATGAGCGGCTTG +MK513622.1 8796 8824 177e6ebb_25_RIGHT_2 2 - GGATAAAAGTAAGAGAATGAGCGGCTTG +MK513622.1 8733 8760 177e6ebb_26_LEFT_0 1 + ATGTTTTGGCAACCTATGATACTTCCA +MK513622.1 8735 8760 177e6ebb_26_LEFT_1 1 + GTTTTGGCAACCTACGATACTTCCA +MK513622.1 8736 8760 177e6ebb_26_LEFT_2 1 + TTCTGGCAACCTACGATACTTCCA +MK513622.1 8737 8760 177e6ebb_26_LEFT_3 1 + TTTGGCAACCTACGATACCTCCA +MK513622.1 9173 9203 177e6ebb_26_RIGHT_0 1 - ACTATCTTATTGGTAACTATCGGGCTATCT +MK513622.1 9173 9203 177e6ebb_26_RIGHT_1 1 - ACTATCTTATTGGTGACTATCGGACTATCC +MK513622.1 9173 9200 177e6ebb_26_RIGHT_2 1 - ATCTTATTGGTGACTATCGGGCTATCT +MK513622.1 9173 9199 177e6ebb_26_RIGHT_3 1 - TCTTGTTGGTAACTATCGGGCTATCT +MK513622.1 9126 9149 177e6ebb_27_LEFT_0 2 + ATGGACTCGCTATCTGTCAACCA +MK513622.1 9128 9149 177e6ebb_27_LEFT_1 2 + GGACTCGCTATCCGTCAACCA +MK513622.1 9128 9149 177e6ebb_27_LEFT_2 2 + GGACTCGCTGTCTGTCAACCA +MK513622.1 9542 9565 177e6ebb_27_RIGHT_0 2 - CCTTGATGTCCTCCCTCAACTCG +MK513622.1 9542 9566 177e6ebb_27_RIGHT_1 2 - TCCTTGATGTCCTCCCTCAATTCG +MK513622.1 9542 9566 177e6ebb_27_RIGHT_2 2 - TCCTTGATGTCCTCTCTCAGTTCG +MK513622.1 9542 9568 177e6ebb_27_RIGHT_3 2 - TCTCCTTGATGTCCTCTCTCAATTCC +MK513622.1 9470 9497 177e6ebb_28_LEFT_0 1 + GCTGTACTCCAAAGTCAGTGATAAGGT +MK513622.1 9472 9497 177e6ebb_28_LEFT_1 1 + TGTACTCCAAAGTCAGTGACAAGGT +MK513622.1 9896 9928 177e6ebb_28_RIGHT_0 1 - AACCATCTATTAATTTCCACATGTATCTGACT +MK513622.1 9896 9927 177e6ebb_28_RIGHT_1 1 - ACCATCTATTAGTTTCCACATGTATCTGACT +MK513622.1 9896 9926 177e6ebb_28_RIGHT_2 1 - CCATCTATCAGTTTCCACATGTATCTGACT +MK513622.1 9811 9839 177e6ebb_29_LEFT_0 2 + TGATGTATTGTGATGTCATAGAGGGGAG +MK513622.1 9814 9839 177e6ebb_29_LEFT_1 2 + TGTATTGTGATGTCGTAGAGGGGAG +MK513622.1 9810 9839 177e6ebb_29_LEFT_2 2 + TTGATGTATTGTGATGTCATAGAAGGGAG +MK513622.1 10249 10275 177e6ebb_29_RIGHT_0 2 - CTCATACACAATGACTTTGGGCTGAT +MK513622.1 10249 10279 177e6ebb_29_RIGHT_1 2 - GAGTCTCATACACAATTACTTTAGGCTGAT +MK513622.1 10249 10277 177e6ebb_29_RIGHT_2 2 - GTCTCATACACAATGACTTTAGGCTGAT +MK513622.1 10249 10279 177e6ebb_29_RIGHT_3 2 - GTGTCTCATATACAATGACTTTAGGCTGAT +MK513622.1 10184 10206 177e6ebb_30_LEFT_0 1 + CAGAAGTTTCGGCCATCCCAGA +MK513622.1 10186 10206 177e6ebb_30_LEFT_1 1 + GAAGTTTCGGCCACCCCAGA +MK513622.1 10624 10654 177e6ebb_30_RIGHT_0 1 - GGTCAAAGCTTGAATCATTAAGGAAAACAT +MK513622.1 10624 10653 177e6ebb_30_RIGHT_1 1 - GTCAAAGCTCGAATCATTAAGGAAAACAT +MK513622.1 10624 10652 177e6ebb_30_RIGHT_2 1 - TCAAAGCTCGAATCATTAAGGAAGACAT +MK513622.1 10565 10588 177e6ebb_31_LEFT_0 2 + CCCGAAAGAGTTTCTGCGTTACG +MK513622.1 10566 10588 177e6ebb_31_LEFT_1 2 + CCGAAAGAGTTCCTGCGTTACG +MK513622.1 10983 11008 177e6ebb_31_RIGHT_0 2 - CTGCTCTCACGTTTTTGGTACTTGT +MK513622.1 10983 11008 177e6ebb_31_RIGHT_1 2 - CTGCTTTAACGTTCCTGGTACTTGT +MK513622.1 10983 11006 177e6ebb_31_RIGHT_2 2 - GCTCTCACGTTCCTGGTACTTGT +MK513622.1 10983 11009 177e6ebb_31_RIGHT_3 2 - GCTGATCTCATGTTTCTGGTACTTGT +MK513622.1 10983 11006 177e6ebb_31_RIGHT_4 2 - GCTTTCACGTTCTTGGTGCTTGC +MK513622.1 10983 11007 177e6ebb_31_RIGHT_5 2 - TGCTCTCACGTTCTTGGTACTTGT +MK513622.1 10983 11007 177e6ebb_31_RIGHT_6 2 - TGCTTTCACGTTCCTGGTACTTGT +MK513622.1 10983 11007 177e6ebb_31_RIGHT_7 2 - TGCTTTCACGTTCTTGGTACTTGC +MK513622.1 10885 10907 177e6ebb_32_LEFT_0 1 + CACTCCACACTCTGGCTGTCTC +MK513622.1 10884 10907 177e6ebb_32_LEFT_1 1 + GCACTCCACACTCTAGCTGTCTC +MK513622.1 11269 11291 177e6ebb_32_RIGHT_0 1 - AACGGGATATGGGCGTCAAGAT +MK513622.1 11269 11289 177e6ebb_32_RIGHT_1 1 - CGGGATATGGGCGTCAAGGT +MK513622.1 11269 11288 177e6ebb_32_RIGHT_2 1 - GGGACATGGGCGTCAAGGT +MK513622.1 11205 11227 177e6ebb_33_LEFT_0 2 + CAGTGGCTGCATAAGAGGCTTG +MK513622.1 11204 11227 177e6ebb_33_LEFT_1 2 + TCAGTGGCTGCATAAAAGGCTTG +MK513622.1 11202 11227 177e6ebb_33_LEFT_2 2 + TTTCAGTGGCTGCATAAGAGACTTG +MK513622.1 11622 11654 177e6ebb_33_RIGHT_0 2 - ACAAGTAGCCCATCATAATATATTCCTTTTGA +MK513622.1 11622 11651 177e6ebb_33_RIGHT_1 2 - AGTAGCCCGTCATAATATATTCCCTTTGA +MK513622.1 11622 11653 177e6ebb_33_RIGHT_2 2 - CAAGTAGCCCATCATAATATATCCCTTTTGA +MK513622.1 11622 11653 177e6ebb_33_RIGHT_3 2 - CAAGTAGCCCGTCATAATATATTCCTTTTGA +MK513622.1 11622 11653 177e6ebb_33_RIGHT_4 2 - CGAGTAGCCCATCATAATATATTCCTTTTGA +MK513622.1 11563 11585 177e6ebb_34_LEFT_0 1 + ACATTGGCCATCACCTCAAAGC +MK513622.1 11564 11585 177e6ebb_34_LEFT_1 1 + CATTGGCCATCACCTCAAGGC +MK513622.1 11562 11585 177e6ebb_34_LEFT_2 1 + GACATTGGACATCACCTCAAGGC +MK513622.1 11562 11585 177e6ebb_34_LEFT_3 1 + GACATTGGTCATCACCTCAAGGC +MK513622.1 11562 11585 177e6ebb_34_LEFT_4 1 + GATATTGGCCATCACCTCAAGGC +MK513622.1 11566 11585 177e6ebb_34_LEFT_5 1 + TCGGCCATCACCTCAAGGC +MK513622.1 11984 12011 177e6ebb_34_RIGHT_0 1 - GCAATTGATGATGTTACTGGATCACCG +MK513622.1 11834 11862 177e6ebb_35_LEFT_0 2 + TCTTGGCTTCACAATTAATTCAACCATG +MK513622.1 11836 11862 177e6ebb_35_LEFT_1 2 + TTGGCTTCACAATCAATTCAACCATG +MK513622.1 12243 12269 177e6ebb_35_RIGHT_0 2 - AATGCAGCCAATCTCTCATCTTCTTC +MK513622.1 12243 12264 177e6ebb_35_RIGHT_1 2 - CGCCAGTCCCTCATCCTCTTC +MK513622.1 12243 12264 177e6ebb_35_RIGHT_2 2 - CGCCAGTCTCTCGTCCTCTTC +MK513622.1 12243 12263 177e6ebb_35_RIGHT_3 2 - GCCAGTCCCTCGTCCTCTTC +MK513622.1 12243 12267 177e6ebb_35_RIGHT_4 2 - TGCAGCCAATCTCTCATCTTCCTC +MK513622.1 12194 12221 177e6ebb_36_LEFT_0 1 + CCATAGTCCAAACCCAATGTTGAAAGG +MK513622.1 12194 12221 177e6ebb_36_LEFT_1 1 + CCATAGTCCAAACCCGATGTTAAAAGG +MK513622.1 12191 12221 177e6ebb_36_LEFT_2 1 + GATCCATAGTCCAAATCCAATGTTAAAAGG +MK513622.1 12193 12221 177e6ebb_36_LEFT_3 1 + TCCATAGTCCAAACCCAATGTTAAAAGG +MK513622.1 12193 12221 177e6ebb_36_LEFT_4 1 + TCCATAGTCCAAATCCAATGCTAAAAGG +MK513622.1 12614 12636 177e6ebb_36_RIGHT_0 1 - AAGGTGGCCTCGCATAGATTCT +MK513622.1 12614 12640 177e6ebb_36_RIGHT_1 1 - GAATAATGTGGCCTCGCATAGATTCT +MK513622.1 12446 12472 177e6ebb_37_LEFT_0 2 + CTATGAACAATTCAGAGCAGGGATGG +MK513622.1 12450 12472 177e6ebb_37_LEFT_1 2 + GAACAATTCAGGGCAGGGATGG +MK513622.1 12444 12472 177e6ebb_37_LEFT_2 2 + GACTATGAACAATTTAGAGCAGGGATGG +MK513622.1 12443 12472 177e6ebb_37_LEFT_3 2 + TGATTATGAACAATTTAGAGCAGGGATGG +MK513622.1 12848 12870 177e6ebb_37_RIGHT_0 2 - AGCCCATGAGTACACTGTTGCT +MK513622.1 12848 12870 177e6ebb_37_RIGHT_1 2 - GGCCCATGAGTACACTGTTGCT +MK513622.1 12771 12797 177e6ebb_38_LEFT_0 1 + ACCACTGATGAGAGAACAGACATGAA +MK513622.1 12769 12797 177e6ebb_38_LEFT_1 1 + CCACCACTGATGAGAGAACAGATATGAA +MK513622.1 12768 12797 177e6ebb_38_LEFT_2 1 + TCTACCACTGATGAGAGAACAGATATGAA +MK513622.1 13207 13234 177e6ebb_38_RIGHT_0 1 - AACAATCTGTTTCGACGTGAAGATGTA +MK513622.1 13207 13233 177e6ebb_38_RIGHT_1 1 - ACAATCTGTTTCGACGTGGAGATGTA +MK513622.1 13207 13232 177e6ebb_38_RIGHT_2 1 - CAATCCGTTTCGACGTGAAGATGTA +MK513622.1 13207 13232 177e6ebb_38_RIGHT_3 1 - CAATCTGTTTCGACGTGAAGGTGTA +MK513622.1 13150 13181 177e6ebb_39_LEFT_0 2 + GTGTTTTAGAAACACTATTTCGACTTGAGAA +MK513622.1 13150 13181 177e6ebb_39_LEFT_1 2 + GTGTTTTAGAAACATTGTTTCGACTTGAGAA +MK513622.1 13152 13181 177e6ebb_39_LEFT_2 2 + GTTTTAGAAACATTGTTTCGACTCGAGAA +MK513622.1 13153 13181 177e6ebb_39_LEFT_3 2 + TCTTAGAAACATTGTTTCGACTCGAGAA +MK513622.1 13151 13181 177e6ebb_39_LEFT_4 2 + TGTTTTAGAAACACTATTTCGACTCGAGAA +MK513622.1 13151 13181 177e6ebb_39_LEFT_5 2 + TGTTTTAGAAACATTGTTCCGACTTGAGAA +MK513622.1 13153 13181 177e6ebb_39_LEFT_6 2 + TTTTAGAAACACTGTTTCGACTCGAGAA +MK513622.1 13573 13597 177e6ebb_39_RIGHT_0 2 - CACACTGGCCCAAGTAGATAGTGA +MK513622.1 13573 13595 177e6ebb_39_RIGHT_1 2 - CACTGGCCCAAGTAGATGGTGA +MK513622.1 13573 13598 177e6ebb_39_RIGHT_2 2 - GCACACTGGCCTAAGTAGATAGTGA +MK513622.1 13573 13598 177e6ebb_39_RIGHT_3 2 - GCACATTGGCCCAAGTAGATAGTGA +MK513622.1 13479 13508 177e6ebb_40_LEFT_0 1 + GAGAAGGACCATATGAATGAAATTTCAGC +MK513622.1 13478 13508 177e6ebb_40_LEFT_1 1 + TGAAAAGGACCATATGAATGAAATTTCAGC +MK513622.1 13477 13508 177e6ebb_40_LEFT_2 1 + TTGAGAAAGACCATATGAATGAAATTTCAGC +MK513622.1 13905 13930 177e6ebb_40_RIGHT_0 1 - CCGGTACTACATCCTCATCGCTTTC +MK513622.1 13905 13930 177e6ebb_40_RIGHT_1 1 - CCGGTACTACATCCTCGTCACTTTC +MK513622.1 13905 13929 177e6ebb_40_RIGHT_2 1 - CGCTACTACATCCTCGTCGCTTTC +MK513622.1 13905 13929 177e6ebb_40_RIGHT_3 1 - CGGTACTACATCCTCGTCGCTTTC +MK513622.1 13794 13820 177e6ebb_41_LEFT_0 2 + GATGCTCAAAATTTGCACACAACTGT +MK513622.1 13797 13820 177e6ebb_41_LEFT_1 2 + GCCCAAAACTTGCACACAACTGT +MK513622.1 13796 13820 177e6ebb_41_LEFT_2 2 + TGCTCAAAACTTGCACACAACTGT +MK513622.1 14168 14198 177e6ebb_41_RIGHT_0 2 - ATGAATCCTGGATCAACTCTCAATCTTATC +MK513622.1 14168 14193 177e6ebb_41_RIGHT_1 2 - TCCTGGATCGACTCTCAACCTTATC +MK513622.1 14168 14197 177e6ebb_41_RIGHT_2 2 - TGAATCCTGGATCGACTCTCAATCTTATC +MK513622.1 14168 14197 177e6ebb_41_RIGHT_3 2 - TGAATCCTGGATCGACTCTTAACCTTATC +MK513622.1 14109 14139 177e6ebb_42_LEFT_0 1 + ATTATTGTAGACCATTACTCATGCTCTCTG +MK513622.1 14109 14139 177e6ebb_42_LEFT_1 1 + ATTATTGTAGACCATTACTCATGTTCCCTG +MK513622.1 14112 14139 177e6ebb_42_LEFT_2 1 + GTTGTAGACCATTACTCATGCTCTCTG +MK513622.1 14114 14139 177e6ebb_42_LEFT_3 1 + TGTAGACCATTACTCATGCTCCCTG +MK513622.1 14114 14139 177e6ebb_42_LEFT_4 1 + TGTGGACCATTACTCATGCTCTCTG +MK513622.1 14549 14577 177e6ebb_42_RIGHT_0 1 - AGAATTGGCGGAAACTCCACTATTATAG +MK513622.1 14549 14576 177e6ebb_42_RIGHT_1 1 - GAATTGGCGGAAACCCCACTATTATAG +MK513622.1 14549 14572 177e6ebb_42_RIGHT_2 1 - TGGCGGAAACCCCACTATTGTAG +MK513622.1 14451 14470 177e6ebb_43_LEFT_0 2 + AGATGCCTTGAGCCAGGGG +MK513622.1 14449 14470 177e6ebb_43_LEFT_1 2 + GGAGATGCCTTGAGCCAGGAG +MK513622.1 14880 14900 177e6ebb_43_RIGHT_0 2 - AAGTCCCCGCTGAAAGGCAT +MK513622.1 14880 14903 177e6ebb_43_RIGHT_1 2 - ACAAAATCCCCACTGACAGGCAT +MK513622.1 14880 14902 177e6ebb_43_RIGHT_2 2 - CAAAATCCCCGCTGAAAGGCAT +MK513622.1 14793 14821 177e6ebb_44_LEFT_0 1 + ACTATAGAGAAGCTAGAGGAATTGGCAG +MK513622.1 15216 15236 177e6ebb_44_RIGHT_0 1 - CCGTTAATTGCCAACCCGCA +MK513622.1 15120 15143 177e6ebb_45_LEFT_0 2 + AGCTGCATACAAGCAATTGTGGG +MK513622.1 15117 15143 177e6ebb_45_LEFT_1 2 + CTAAACTGCATACAAGCAATTGTGGG +MK513622.1 15121 15143 177e6ebb_45_LEFT_2 2 + GCTGCATACAAGCGATTGTGGG +MK513622.1 15121 15143 177e6ebb_45_LEFT_3 2 + GCTGCATACAGGCAATTGTGGG +MK513622.1 15528 15559 177e6ebb_45_RIGHT_0 2 - ACTTGGACAGATTCTTAACGAAGATATTCTG +MK513622.1 15528 15564 177e6ebb_45_RIGHT_1 2 - CTCTGACTTAGATAAATTCTTAACGAAGATATTCTG +MK513622.1 15528 15562 177e6ebb_45_RIGHT_2 2 - CTGACTTGGATAGATTCTTAACGAAAATATTCTG +MK513622.1 15528 15563 177e6ebb_45_RIGHT_3 2 - TCTGACTTAGATAGATTCTTAACGAAGATATTCTG +MK513622.1 15528 15561 177e6ebb_45_RIGHT_4 2 - TGACTTGGATAGATTCTTAACGAAGATATTCTG +MK513622.1 15528 15556 177e6ebb_45_RIGHT_5 2 - TGGACAGATTCTTAACGAAGATATTCCG +MK513622.1 15322 15350 177e6ebb_46_LEFT_0 1 + AGTTGGCAAGATTCAAAGACAATCAAAG +MK513622.1 15323 15350 177e6ebb_46_LEFT_1 1 + GTTGGCAAGATTCAAAGACAACCAAAG +MK513622.1 15323 15350 177e6ebb_46_LEFT_2 1 + GTTGGCAAGATTCAAAGAGAACCAAAG +MK513622.1 15325 15350 177e6ebb_46_LEFT_3 1 + TGGCAAGATTCAAGGACAACCAAAG +MK513622.1 15325 15350 177e6ebb_46_LEFT_4 1 + TGGCGAGATTCAAAGACAACCAAAG +MK513622.1 15678 15678 177e6ebb_46_RIGHT_0 1 - AAAAGCTGGGAATAGAAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_1 1 - ACAAAGCTGGAATAGAAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_2 1 - CAAAGCAGGGAATAGAAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_3 1 - CAAAGCTGGGAATAGAAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_4 1 - CAAAGCTGGGAATAGAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_5 1 - CAAGCTGGGAATAGAAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_6 1 - GACAAACTGGGAATAGAAACTTCGTATTTTC +MK513622.1 15678 15678 177e6ebb_46_RIGHT_7 1 - GACAAAGTGGGAATAGAAACTTCGTATTTTC diff --git a/assets/reference/D8/artic_primers.bed b/assets/reference/D8/artic_primers.bed new file mode 100644 index 0000000..d21a759 --- /dev/null +++ b/assets/reference/D8/artic_primers.bed @@ -0,0 +1,375 @@ +# artic-bed-version v3.0 +MH356245.1 1 26 177e6ebb_0_LEFT_0 1 + CCAAACAAAGTTGGGTAAGGATCGA +MH356245.1 412 435 177e6ebb_0_RIGHT_0 1 - ACTGGTCACTCTGAACAACCTCC +MH356245.1 412 435 177e6ebb_0_RIGHT_1 1 - ACTGGTCACTCTGGACAACCTCT +MH356245.1 412 434 177e6ebb_0_RIGHT_2 1 - CTGGTCACTCTGGACAACCTCC +MH356245.1 412 436 177e6ebb_0_RIGHT_3 1 - GACTGGTCACTCTGAACAACCTCT +MH356245.1 412 436 177e6ebb_0_RIGHT_4 1 - GATTGGTCACTCTGGACAACCTCT +MH356245.1 412 437 177e6ebb_0_RIGHT_5 1 - TGATTGGTCACTCTGGACAACTTCT +MH356245.1 412 433 177e6ebb_0_RIGHT_6 1 - TGGTCGCTCTGGACAACCTCT +MH356245.1 361 387 177e6ebb_1_LEFT_0 2 + CCAATTGATTCAGAGGATCACCGATG +MH356245.1 359 387 177e6ebb_1_LEFT_1 2 + GGTCAATTAATTCAGAGGATCACCGATG +MH356245.1 359 387 177e6ebb_1_LEFT_2 2 + GGTCAATTGATTCAGAGGATCACTGATG +MH356245.1 360 387 177e6ebb_1_LEFT_3 2 + GTCAATTGATTCAGAGGATCACCGATG +MH356245.1 799 827 177e6ebb_1_RIGHT_0 2 - GATATCCAGGATTAAAGCGACCATGAAT +MH356245.1 799 823 177e6ebb_1_RIGHT_1 2 - TCCAGGATTAGAGCCACCATGAAT +MH356245.1 799 823 177e6ebb_1_RIGHT_2 2 - TCCAGGATTAGAGCGACCATGAAT +MH356245.1 799 825 177e6ebb_1_RIGHT_3 2 - TGTCCAGAATTAGAGCGACCATGAAT +MH356245.1 746 771 177e6ebb_2_LEFT_0 1 + AAATGGTTGGATGTGGTGAGAAACA +MH356245.1 744 771 177e6ebb_2_LEFT_1 1 + GAAAATGGTTGGATGTAGTGAGGAACA +MH356245.1 744 771 177e6ebb_2_LEFT_2 1 + GAAAATGGTTGGATGTGGTGAGGAATA +MH356245.1 749 771 177e6ebb_2_LEFT_3 1 + TGGTTGGATGTGGTGAGGAACA +MH356245.1 1184 1213 177e6ebb_2_RIGHT_0 1 - ACCATCTCTTGCCCTAATCTAAAATATGC +MH356245.1 1184 1212 177e6ebb_2_RIGHT_1 1 - CCATCTCTTGCCCTAACCTAAAATATGC +MH356245.1 1184 1217 177e6ebb_2_RIGHT_2 1 - CCTAACCATCTCTTGTCCTAATCTAAAATATGC +MH356245.1 1104 1126 177e6ebb_3_LEFT_0 2 + GGAGCTATGCCATGGGAGTAGG +MH356245.1 1103 1126 177e6ebb_3_LEFT_1 2 + TGGAGTTATGCCATGGGAGTAGG +MH356245.1 1522 1548 177e6ebb_3_RIGHT_0 2 - ACTCTGATGCAGTGTCAATGTCTAGG +MH356245.1 1522 1544 177e6ebb_3_RIGHT_1 2 - CGATGCAGTGTCAATGTCAGGG +MH356245.1 1522 1544 177e6ebb_3_RIGHT_2 2 - CGATGCAGTGTCAATGTCCAGG +MH356245.1 1522 1544 177e6ebb_3_RIGHT_3 2 - CGATGCAGTGTCAATGTCTGGG +MH356245.1 1522 1546 177e6ebb_3_RIGHT_4 2 - TCCGATGCAGTGTCAATGTCTAGG +MH356245.1 1522 1546 177e6ebb_3_RIGHT_5 2 - TCTGATGCAGTGTCAACGTCTAGG +MH356245.1 1407 1427 177e6ebb_4_LEFT_0 1 + GCAAGGAGGACAGGAGGGTC +MH356245.1 1406 1427 177e6ebb_4_LEFT_1 1 + GGCAAGGAAGACAGGAGGGTC +MH356245.1 1405 1427 177e6ebb_4_LEFT_2 1 + GGGCAAGGAAGATAGGAGAGCC +MH356245.1 1405 1427 177e6ebb_4_LEFT_3 1 + GGGCAAGGAAGATAGGAGGGTC +MH356245.1 1404 1427 177e6ebb_4_LEFT_4 1 + GGGGCAAAGAAGATAGGAGGGTC +MH356245.1 1404 1427 177e6ebb_4_LEFT_5 1 + GGGGCAAGGAAGATAGAAGGGTC +MH356245.1 1404 1427 177e6ebb_4_LEFT_6 1 + GGGGCAAGGAAGATATGAGGGTC +MH356245.1 1405 1427 177e6ebb_4_LEFT_7 1 + GGGTAAGGAGGACAGGAGGGTC +MH356245.1 1816 1834 177e6ebb_4_RIGHT_0 1 - TGACATGGCGTGCCTGCT +MH356245.1 1739 1764 177e6ebb_5_LEFT_0 2 + AAAAACTTAGGAACCAGGTCCACAC +MH356245.1 2174 2198 177e6ebb_5_RIGHT_0 2 - ACCACGATAGAGTCAGCATCTTGG +MH356245.1 2174 2200 177e6ebb_5_RIGHT_1 2 - GAACCATGATAGAGTCAGCATCTTGG +MH356245.1 2091 2113 177e6ebb_6_LEFT_0 1 + CCCCCAAGAAATCTCCAGGCAT +MH356245.1 2090 2113 177e6ebb_6_LEFT_1 1 + CCCCTCAAGAAATCTCCAGGCAT +MH356245.1 2090 2113 177e6ebb_6_LEFT_2 1 + CCCCTCAAGAAATTCCCAGGCAT +MH356245.1 2091 2113 177e6ebb_6_LEFT_3 1 + CCCTCAAGAAATCCCCAGGCAT +MH356245.1 2091 2113 177e6ebb_6_LEFT_4 1 + CCCTCAGGAAATCTCCAGGCAT +MH356245.1 2525 2549 177e6ebb_6_RIGHT_0 1 - GTCAATAAAGACGCGATCTCCGTT +MH356245.1 2525 2550 177e6ebb_6_RIGHT_1 1 - TGTCAATAAAGACGCAATCTCCGTT +MH356245.1 2419 2444 177e6ebb_7_LEFT_0 2 + AGCTTGGGAAAACTCTCAATGTTCC +MH356245.1 2421 2444 177e6ebb_7_LEFT_1 2 + CCTGGGAAGACTCTCAATGTCCC +MH356245.1 2420 2444 177e6ebb_7_LEFT_2 2 + GCTGGGGAAAACTCTCAATGTTCC +MH356245.1 2420 2444 177e6ebb_7_LEFT_3 2 + GCTTGGGAAAACCCTCAATGTTCC +MH356245.1 2858 2885 177e6ebb_7_RIGHT_0 2 - ATGCTGATATTTTGCTTGTTGATCTGC +MH356245.1 2858 2888 177e6ebb_7_RIGHT_1 2 - GATATGCTGATATTTTGCCTGTTAATCTGC +MH356245.1 2858 2883 177e6ebb_7_RIGHT_2 2 - GCTGATGTTTTGCCTGTTGATCTGC +MH356245.1 2858 2884 177e6ebb_7_RIGHT_3 2 - TGCTGATATTTTGCCTGTTGATCTGC +MH356245.1 2772 2796 177e6ebb_8_LEFT_0 1 + GCCAAAATACACGAGGACAACCAG +MH356245.1 2770 2796 177e6ebb_8_LEFT_1 1 + TGGCCAAAATACACGAGGATAATCAG +MH356245.1 3185 3205 177e6ebb_8_RIGHT_0 1 - TGGAGCGGATTACACTGCGT +MH356245.1 3140 3160 177e6ebb_9_LEFT_0 2 + GATGAGCTCAGCCGTTGGGT +MH356245.1 3140 3160 177e6ebb_9_LEFT_1 2 + GATGAGCTCAGCTGTCGGGT +MH356245.1 3142 3160 177e6ebb_9_LEFT_2 2 + TGAGCTCAGCCGTCGGGT +MH356245.1 3142 3160 177e6ebb_9_LEFT_3 2 + TGAGCTCGGCAGTCGGGT +MH356245.1 3142 3160 177e6ebb_9_LEFT_4 2 + TGAGCTCGGCTGTCGGGT +MH356245.1 3580 3606 177e6ebb_9_RIGHT_0 2 - CCAGCAGAAACATGTACATGAAGCAT +MH356245.1 3580 3607 177e6ebb_9_RIGHT_1 2 - CCCAGCAGAAACATGTACATAAAGCAT +MH356245.1 3580 3608 177e6ebb_9_RIGHT_2 2 - CCCCAGTAGAAACATGTACATAAAGCAT +MH356245.1 3529 3553 177e6ebb_10_LEFT_0 1 + GGTACCCCAGGTCAGAGTCATAGA +MH356245.1 3529 3553 177e6ebb_10_LEFT_1 1 + GGTGCCCCAGGTCAGAGTTATAGA +MH356245.1 3529 3553 177e6ebb_10_LEFT_2 1 + GGTGCCTCAGGTCAGAGTCATAGA +MH356245.1 3531 3553 177e6ebb_10_LEFT_3 1 + TCCCCCAGGTCAGAGTCATAGA +MH356245.1 3531 3553 177e6ebb_10_LEFT_4 1 + TGCCCCAGGTCAGAGTCATAGA +MH356245.1 3528 3553 177e6ebb_10_LEFT_5 1 + TGGTACCTCAGGTCAGAGTCATAGA +MH356245.1 3968 3994 177e6ebb_10_RIGHT_0 1 - ACTGCATTGACTGATCTGAATTCCAG +MH356245.1 3968 3995 177e6ebb_10_RIGHT_1 1 - CACTGCATTGACCGATCTGAATTCTAG +MH356245.1 3968 3991 177e6ebb_10_RIGHT_2 1 - GCATTGACCGATCTGAACTCCAG +MH356245.1 3968 3992 177e6ebb_10_RIGHT_3 1 - TGCATTGACCGATCTGAATTCCAG +MH356245.1 3890 3910 177e6ebb_11_LEFT_0 2 + CCGCAGAGGTTCCGTGTTGT +MH356245.1 4330 4356 177e6ebb_11_RIGHT_0 2 - CCTGGATTCTTACGATCTTGCATCTG +MH356245.1 4330 4357 177e6ebb_11_RIGHT_1 2 - GCCTGGATTCTTACTATCTTGCATCTG +MH356245.1 4330 4357 177e6ebb_11_RIGHT_2 2 - GCCTGGATTTTTACGATCTTGCATCTG +MH356245.1 4200 4226 177e6ebb_12_LEFT_0 1 + GCACCAGTCTTCACATTAGAAGCACA +MH356245.1 4199 4226 177e6ebb_12_LEFT_1 1 + GGCACCAGTCTTCACATTAGAAGTACA +MH356245.1 4622 4643 177e6ebb_12_RIGHT_0 1 - ACGCAGATTGGGATAGCTGGT +MH356245.1 4622 4642 177e6ebb_12_RIGHT_1 1 - CGCAGATTGGGATGGCTGGT +MH356245.1 4622 4640 177e6ebb_12_RIGHT_2 1 - CGGGTTGGGATGGCTGGT +MH356245.1 4622 4642 177e6ebb_12_RIGHT_3 1 - CTCAGGTTGGGATGGCTGGT +MH356245.1 4622 4642 177e6ebb_12_RIGHT_4 1 - CTCGGATTGGGATGGCTGGT +MH356245.1 4622 4644 177e6ebb_12_RIGHT_5 1 - GACTCAGATTGGGATGGCTGGT +MH356245.1 4622 4644 177e6ebb_12_RIGHT_6 1 - GACTCAGGTTGGGATGGCTAGT +MH356245.1 4622 4641 177e6ebb_12_RIGHT_7 1 - GCAGATTGGGCTGGCTGGT +MH356245.1 4622 4641 177e6ebb_12_RIGHT_8 1 - GCAGATTGGGGTGGCTGGT +MH356245.1 4622 4641 177e6ebb_12_RIGHT_9 1 - GCGGATTGGGATGGCTGGT +MH356245.1 4422 4449 177e6ebb_13_LEFT_0 2 + AAGGACTCTTCAAAGTTTTGTAGACCG +MH356245.1 4423 4449 177e6ebb_13_LEFT_1 2 + AGGACTCTTCAAAGTTCTGTAGACCG +MH356245.1 4421 4449 177e6ebb_13_LEFT_2 2 + CAAGGACTATTCAAAGTTCTGTAGACCG +MH356245.1 4420 4449 177e6ebb_13_LEFT_3 2 + CCAAGGACTATTCAAAGTTCTGTAAACCG +MH356245.1 4424 4449 177e6ebb_13_LEFT_4 2 + GGACTGTTCAAGGTTCTGTAGACCG +MH356245.1 4857 4884 177e6ebb_13_RIGHT_0 2 - CCTTGGCCCTAAGTTTTGTTTAGTTTG +MH356245.1 4857 4887 177e6ebb_13_RIGHT_1 2 - GTTCCTTGACCCTAAGTTTTGTTTAGTTTG +MH356245.1 4857 4885 177e6ebb_13_RIGHT_2 2 - TCCTTGGCCCTAAGTTTTGTTTAGTATG +MH356245.1 4857 4882 177e6ebb_13_RIGHT_3 2 - TTGGCCCTGAGTTTTGTTTAGTCTG +MH356245.1 4766 4784 177e6ebb_14_LEFT_0 1 + CAACCCCAAAGCCCCGCA +MH356245.1 4766 4784 177e6ebb_14_LEFT_1 1 + CAACGCAAAAGCCCCGCA +MH356245.1 4765 4784 177e6ebb_14_LEFT_2 1 + CCAACCCAAAAGCCCCGCA +MH356245.1 4764 4784 177e6ebb_14_LEFT_3 1 + CCCAACGCAAGAACCCCACA +MH356245.1 4764 4784 177e6ebb_14_LEFT_4 1 + CCCAATGCAAAAGCCCCACA +MH356245.1 4763 4784 177e6ebb_14_LEFT_5 1 + CCCCAACACAAGAACCCCACA +MH356245.1 4763 4784 177e6ebb_14_LEFT_6 1 + CCCCAACGCAAGAACTCCACA +MH356245.1 4763 4784 177e6ebb_14_LEFT_7 1 + CCCCGACACAACAACTCCACA +MH356245.1 4762 4784 177e6ebb_14_LEFT_8 1 + CCCTCGACACAACAACTCCACA +MH356245.1 4764 4784 177e6ebb_14_LEFT_9 1 + CTCAACGCAAAAGCCCCACA +MH356245.1 4760 4784 177e6ebb_14_LEFT_10 1 + CTCCCTCGACACAACAACTCTACA +MH356245.1 4762 4784 177e6ebb_14_LEFT_11 1 + CTCTCAATGCAAAAGCCCCACA +MH356245.1 4765 4784 177e6ebb_14_LEFT_12 1 + TCAACCCAAAAGCCCCGCA +MH356245.1 4763 4784 177e6ebb_14_LEFT_13 1 + TCCCGACACAACAACTCCACA +MH356245.1 4761 4784 177e6ebb_14_LEFT_14 1 + TCCCTCAACACAAGAACTCCACA +MH356245.1 4759 4784 177e6ebb_14_LEFT_15 1 + TCTTCCTCAACACAAGAACTCCACA +MH356245.1 5119 5137 177e6ebb_14_RIGHT_0 1 - GCTGCCGTGGTCGTGTGT +MH356245.1 5119 5138 177e6ebb_14_RIGHT_1 1 - GGTTGCCGTGGTCGTGTGT +MH356245.1 5119 5138 177e6ebb_14_RIGHT_2 1 - GGTTGCCGTGGTGGTGTGT +MH356245.1 5119 5139 177e6ebb_14_RIGHT_3 1 - TGGTTACCGTGGTCGTGTGT +MH356245.1 4991 5010 177e6ebb_15_LEFT_0 2 + ACAGGCAGGCACACCAACC +MH356245.1 4991 5010 177e6ebb_15_LEFT_1 2 + ACAGGCAGGGACACCAACC +MH356245.1 4990 5010 177e6ebb_15_LEFT_2 2 + CACAGGCGATCACACCAACC +MH356245.1 4989 5010 177e6ebb_15_LEFT_3 2 + CCACAGGTAGGCACACCAACC +MH356245.1 4990 5010 177e6ebb_15_LEFT_4 2 + CGCAGGCAGACACACCAACC +MH356245.1 4990 5010 177e6ebb_15_LEFT_5 2 + TGCAGGCAGACACACCAACC +MH356245.1 5426 5452 177e6ebb_15_RIGHT_0 2 - ACACTGGATGAGTCTTAATTCTGGGA +MH356245.1 5426 5452 177e6ebb_15_RIGHT_1 2 - ACATTAGGTGAGTCTTGATTCTGGGA +MH356245.1 5426 5452 177e6ebb_15_RIGHT_2 2 - ACATTGGATGAGTCTTGATTCTGGGA +MH356245.1 5426 5450 177e6ebb_15_RIGHT_3 2 - ACTGGATGAGTCTTGATTCTGGGG +MH356245.1 5426 5450 177e6ebb_15_RIGHT_4 2 - ATTGGATGGGTCTTGATTCTGGGA +MH356245.1 5426 5451 177e6ebb_15_RIGHT_5 2 - CACTGGATGAGTCTTGATTCTGGGA +MH356245.1 5426 5449 177e6ebb_15_RIGHT_6 2 - CTGGATGAGTCTTGATCCTGGGG +MH356245.1 5426 5454 177e6ebb_15_RIGHT_7 2 - GGATATTGGATGAGTCTTGATTCTGGGA +MH356245.1 5371 5395 177e6ebb_16_LEFT_0 1 + AACCCACTATATCCGACGTCACTC +MH356245.1 5376 5395 177e6ebb_16_LEFT_1 1 + ACCACACCCGACGACACTC +MH356245.1 5374 5395 177e6ebb_16_LEFT_2 1 + CCACCACACCCGACGACAATC +MH356245.1 5374 5395 177e6ebb_16_LEFT_3 1 + CCACCACACCCGACTACACTC +MH356245.1 5374 5395 177e6ebb_16_LEFT_4 1 + CCACCACATCCGACGACACTC +MH356245.1 5373 5395 177e6ebb_16_LEFT_5 1 + CCCACTATACCCGACGTCACTC +MH356245.1 5373 5395 177e6ebb_16_LEFT_6 1 + TCCACCACACCTAACGACACTC +MH356245.1 5373 5395 177e6ebb_16_LEFT_7 1 + TCCACCACATCCGACGATACTC +MH356245.1 5373 5395 177e6ebb_16_LEFT_8 1 + TCTACCACATCCGACGACACTC +MH356245.1 5773 5800 177e6ebb_16_RIGHT_0 1 - CCGCAAATCTTTTGTGTCTCCTACTTG +MH356245.1 5773 5799 177e6ebb_16_RIGHT_1 1 - CGCAAATCTCTTGTGTCTCCTACTTG +MH356245.1 5773 5799 177e6ebb_16_RIGHT_2 1 - TGCAAATCTCTTGTGTCTCCTACTTG +MH356245.1 5702 5730 177e6ebb_17_LEFT_0 2 + AGTTTTGGAACCAATTAGAGATGCACTT +MH356245.1 5701 5730 177e6ebb_17_LEFT_1 2 + CAGTTTTGGAACCAATTAAAGATGCACTT +MH356245.1 5705 5730 177e6ebb_17_LEFT_2 2 + CCTGGAACCAATTAGGGATGCACTT +MH356245.1 5703 5730 177e6ebb_17_LEFT_3 2 + GTTCTGGAACCAATTAGAGATGCACTT +MH356245.1 5704 5730 177e6ebb_17_LEFT_4 2 + TCCTGGAACCAATTAGAGATGCACTT +MH356245.1 5705 5730 177e6ebb_17_LEFT_5 2 + TCTGGAACCAATCAGAGATGCACTT +MH356245.1 6119 6139 177e6ebb_17_RIGHT_0 2 - CCGCAGATATGGGGTCCCGT +MH356245.1 6119 6140 177e6ebb_17_RIGHT_1 2 - TCCGCAGATATGGGGTCTCGT +MH356245.1 6062 6091 177e6ebb_18_LEFT_0 1 + CGGGCTCAAATTGCTCAGATATTATACAG +MH356245.1 6062 6091 177e6ebb_18_LEFT_1 1 + CGGGCTCAAATTGCTTAGATACTATACAG +MH356245.1 6064 6091 177e6ebb_18_LEFT_2 1 + GGCTCAAGTTGCTCAGATACTATACAG +MH356245.1 6063 6091 177e6ebb_18_LEFT_3 1 + GGGCTCAAATTGCTCAGATACTATACAG +MH356245.1 6499 6521 177e6ebb_18_RIGHT_0 1 - AGCAGAGGACTCATCGGGTACA +MH356245.1 6499 6520 177e6ebb_18_RIGHT_1 1 - GCAGGGGACTCATCGGGTACA +MH356245.1 6451 6475 177e6ebb_19_LEFT_0 2 + CATCGTGTACTTTCATGCCAGAGG +MH356245.1 6454 6475 177e6ebb_19_LEFT_1 2 + CGTGCACTTTCATGCCAGAGG +MH356245.1 6449 6475 177e6ebb_19_LEFT_2 2 + GTCATCATGTACTTTCATGCCAGAGG +MH356245.1 6450 6475 177e6ebb_19_LEFT_3 2 + TCATCATGTACCTTCATGCCAGAGG +MH356245.1 6889 6915 177e6ebb_19_RIGHT_0 2 - ACTCCTCAATATCTGGTCCGATGATT +MH356245.1 6889 6918 177e6ebb_19_RIGHT_1 2 - CATACTCCTTAATATCTGGTCCGATGACT +MH356245.1 6889 6914 177e6ebb_19_RIGHT_2 2 - CTCCTCAATATCTGGTCCGATGACT +MH356245.1 6889 6919 177e6ebb_19_RIGHT_3 2 - TCATACTTCTCAATATCTGGTCCGATGATT +MH356245.1 6823 6847 177e6ebb_20_LEFT_0 1 + AGTTGGATGTAGGGACGAACTTGG +MH356245.1 6823 6847 177e6ebb_20_LEFT_1 1 + GGTTGGACGTAGGGACAAATCTGG +MH356245.1 6826 6847 177e6ebb_20_LEFT_2 1 + TGGACGTAGGGACAAACCTGG +MH356245.1 6826 6847 177e6ebb_20_LEFT_3 1 + TGGACGTGGGGACAAATCTGG +MH356245.1 7254 7278 177e6ebb_20_RIGHT_0 1 - GGTGACATTGTGGATGATCTTGCA +MH356245.1 7254 7277 177e6ebb_20_RIGHT_1 1 - GTGACATTGCGGATGATCTTGCA +MH356245.1 7254 7277 177e6ebb_20_RIGHT_2 1 - GTGACATTGTGGATGGTCTTGCA +MH356245.1 7179 7206 177e6ebb_21_LEFT_0 2 + AGCATCAATCCCACCTGAAATTATCTC +MH356245.1 7179 7206 177e6ebb_21_LEFT_1 2 + AGCATCACTCCCACTTGAAATTATCTC +MH356245.1 7182 7206 177e6ebb_21_LEFT_2 2 + ATCAAGCCCACCTGAAATTGTCTC +MH356245.1 7181 7206 177e6ebb_21_LEFT_3 2 + CACCAAGCCCACCTGAAATTATCTC +MH356245.1 7181 7206 177e6ebb_21_LEFT_4 2 + CATCAAGCCCATCTGAAGTTGTCTC +MH356245.1 7178 7206 177e6ebb_21_LEFT_5 2 + CGACATCAAGCCACCCTAAAATTATCTC +MH356245.1 7180 7206 177e6ebb_21_LEFT_6 2 + GCATCAAGCCCACCTGAAATTATCTC +MH356245.1 7180 7206 177e6ebb_21_LEFT_7 2 + GCATCAAGCCCATCTGAAATTGTCTC +MH356245.1 7608 7636 177e6ebb_21_RIGHT_0 2 - AATCTTGTCCGAGATGAATTTCACTAGG +MH356245.1 7608 7642 177e6ebb_21_RIGHT_1 2 - GAATTTAATCTTATCCGAGATGAATTTCACTAGG +MH356245.1 7608 7642 177e6ebb_21_RIGHT_2 2 - GAATTTAATCTTGTCAGAGATGAATTTCACTAGG +MH356245.1 7608 7643 177e6ebb_21_RIGHT_3 2 - GGAATTTAATTTTGTCAGAGATGAATTTCACTAGG +MH356245.1 7608 7638 177e6ebb_21_RIGHT_4 2 - TTGATCTTGTCAGAGATGAATTTCACTAGG +MH356245.1 7608 7639 177e6ebb_21_RIGHT_5 2 - TTTAATCTTGTCAGAGATGAACTTCACTAGG +MH356245.1 7503 7531 177e6ebb_22_LEFT_0 1 + AGATGTAACTAACTCAATCGAGCATCAG +MH356245.1 7504 7531 177e6ebb_22_LEFT_1 1 + GATGTAACTAACTCAATCGAGCACCAG +MH356245.1 7504 7531 177e6ebb_22_LEFT_2 1 + GATGTAACTAACTCAGTCGAGCATCAG +MH356245.1 7504 7531 177e6ebb_22_LEFT_3 1 + GATGTGACTAACTCAATCGAGCATCAG +MH356245.1 7503 7531 177e6ebb_22_LEFT_4 1 + GGATGTAACTAACTCAATCGAGCATCAG +MH356245.1 7943 7967 177e6ebb_22_RIGHT_0 1 - GGTAAGTTCCCCCATACATTCCCT +MH356245.1 7943 7967 177e6ebb_22_RIGHT_1 1 - GGTAGGTTCCCCCATACATTCCCT +MH356245.1 7943 7966 177e6ebb_22_RIGHT_2 1 - GTAAGTTCCCCCGTACATTCCCT +MH356245.1 7828 7848 177e6ebb_23_LEFT_0 2 + AACTGCTCAGGGCCCACTAC +MH356245.1 8237 8258 177e6ebb_23_RIGHT_0 2 - GGGATTTCCAGACACCCAGCT +MH356245.1 8237 8259 177e6ebb_23_RIGHT_1 2 - GGGGATTTCCAGACACCTAGCT +MH356245.1 8147 8169 177e6ebb_24_LEFT_0 1 + AGCTCAAACTCGCAGCTCTTTG +MH356245.1 8147 8169 177e6ebb_24_LEFT_1 1 + AGCTCAAATTCGCAGCCCTTTG +MH356245.1 8146 8169 177e6ebb_24_LEFT_2 1 + GAGCTTAAATTCGCAGCCCTCTG +MH356245.1 8148 8169 177e6ebb_24_LEFT_3 1 + GCTCAAACTCGCAGCCCTTTG +MH356245.1 8148 8169 177e6ebb_24_LEFT_4 1 + GCTCAAATTCGCAGCCCTCTG +MH356245.1 8148 8169 177e6ebb_24_LEFT_5 1 + GCTCAAGTTCGCAGCCCTCTG +MH356245.1 8148 8169 177e6ebb_24_LEFT_6 1 + GCTCAGACTCGCAGCCCTTTG +MH356245.1 8150 8169 177e6ebb_24_LEFT_7 1 + TCAGGTTCGCAGCCCTCTG +MH356245.1 8579 8598 177e6ebb_24_RIGHT_0 1 - AGGTCCATCCCTGAGCCGT +MH356245.1 8579 8603 177e6ebb_24_RIGHT_1 1 - TGTATAGGTCCATCCCTGAACCGT +MH356245.1 8491 8515 177e6ebb_25_LEFT_0 2 + CCTTCATACGGGGTCTTGTCTGTC +MH356245.1 8491 8515 177e6ebb_25_LEFT_1 2 + CCTTCATACGGGGTCTTGTCTGTT +MH356245.1 8492 8515 177e6ebb_25_LEFT_2 2 + CTTCATACGGGGTCCTGTCTGTT +MH356245.1 8490 8515 177e6ebb_25_LEFT_3 2 + TCCTTCATACGGGATCTTGTCTGTC +MH356245.1 8493 8515 177e6ebb_25_LEFT_4 2 + TTCGTACGGGGTCTTGTCTGTT +MH356245.1 8903 8931 177e6ebb_25_RIGHT_0 2 - GGATAAAAGTAAGAAAATGAGCGGCCTG +MH356245.1 8903 8931 177e6ebb_25_RIGHT_1 2 - GGATAAAAGTAAGAAAATGAGCGGCTTG +MH356245.1 8903 8931 177e6ebb_25_RIGHT_2 2 - GGATAAAAGTAAGAGAATGAGCGGCTTG +MH356245.1 8840 8867 177e6ebb_26_LEFT_0 1 + ATGTTTTGGCAACCTATGATACTTCCA +MH356245.1 8842 8867 177e6ebb_26_LEFT_1 1 + GTTTTGGCAACCTACGATACTTCCA +MH356245.1 8843 8867 177e6ebb_26_LEFT_2 1 + TTCTGGCAACCTACGATACTTCCA +MH356245.1 8844 8867 177e6ebb_26_LEFT_3 1 + TTTGGCAACCTACGATACCTCCA +MH356245.1 9280 9310 177e6ebb_26_RIGHT_0 1 - ACTATCTTATTGGTAACTATCGGGCTATCT +MH356245.1 9280 9310 177e6ebb_26_RIGHT_1 1 - ACTATCTTATTGGTGACTATCGGACTATCC +MH356245.1 9280 9307 177e6ebb_26_RIGHT_2 1 - ATCTTATTGGTGACTATCGGGCTATCT +MH356245.1 9280 9306 177e6ebb_26_RIGHT_3 1 - TCTTGTTGGTAACTATCGGGCTATCT +MH356245.1 9233 9256 177e6ebb_27_LEFT_0 2 + ATGGACTCGCTATCTGTCAACCA +MH356245.1 9235 9256 177e6ebb_27_LEFT_1 2 + GGACTCGCTATCCGTCAACCA +MH356245.1 9235 9256 177e6ebb_27_LEFT_2 2 + GGACTCGCTGTCTGTCAACCA +MH356245.1 9649 9672 177e6ebb_27_RIGHT_0 2 - CCTTGATGTCCTCCCTCAACTCG +MH356245.1 9649 9673 177e6ebb_27_RIGHT_1 2 - TCCTTGATGTCCTCCCTCAATTCG +MH356245.1 9649 9673 177e6ebb_27_RIGHT_2 2 - TCCTTGATGTCCTCTCTCAGTTCG +MH356245.1 9649 9675 177e6ebb_27_RIGHT_3 2 - TCTCCTTGATGTCCTCTCTCAATTCC +MH356245.1 9577 9604 177e6ebb_28_LEFT_0 1 + GCTGTACTCCAAAGTCAGTGATAAGGT +MH356245.1 9579 9604 177e6ebb_28_LEFT_1 1 + TGTACTCCAAAGTCAGTGACAAGGT +MH356245.1 10003 10035 177e6ebb_28_RIGHT_0 1 - AACCATCTATTAATTTCCACATGTATCTGACT +MH356245.1 10003 10034 177e6ebb_28_RIGHT_1 1 - ACCATCTATTAGTTTCCACATGTATCTGACT +MH356245.1 10003 10033 177e6ebb_28_RIGHT_2 1 - CCATCTATCAGTTTCCACATGTATCTGACT +MH356245.1 9918 9946 177e6ebb_29_LEFT_0 2 + TGATGTATTGTGATGTCATAGAGGGGAG +MH356245.1 9921 9946 177e6ebb_29_LEFT_1 2 + TGTATTGTGATGTCGTAGAGGGGAG +MH356245.1 9917 9946 177e6ebb_29_LEFT_2 2 + TTGATGTATTGTGATGTCATAGAAGGGAG +MH356245.1 10356 10382 177e6ebb_29_RIGHT_0 2 - CTCATACACAATGACTTTGGGCTGAT +MH356245.1 10356 10386 177e6ebb_29_RIGHT_1 2 - GAGTCTCATACACAATTACTTTAGGCTGAT +MH356245.1 10356 10384 177e6ebb_29_RIGHT_2 2 - GTCTCATACACAATGACTTTAGGCTGAT +MH356245.1 10356 10386 177e6ebb_29_RIGHT_3 2 - GTGTCTCATATACAATGACTTTAGGCTGAT +MH356245.1 10291 10313 177e6ebb_30_LEFT_0 1 + CAGAAGTTTCGGCCATCCCAGA +MH356245.1 10293 10313 177e6ebb_30_LEFT_1 1 + GAAGTTTCGGCCACCCCAGA +MH356245.1 10731 10761 177e6ebb_30_RIGHT_0 1 - GGTCAAAGCTTGAATCATTAAGGAAAACAT +MH356245.1 10731 10760 177e6ebb_30_RIGHT_1 1 - GTCAAAGCTCGAATCATTAAGGAAAACAT +MH356245.1 10731 10759 177e6ebb_30_RIGHT_2 1 - TCAAAGCTCGAATCATTAAGGAAGACAT +MH356245.1 10672 10695 177e6ebb_31_LEFT_0 2 + CCCGAAAGAGTTTCTGCGTTACG +MH356245.1 10673 10695 177e6ebb_31_LEFT_1 2 + CCGAAAGAGTTCCTGCGTTACG +MH356245.1 11090 11115 177e6ebb_31_RIGHT_0 2 - CTGCTCTCACGTTTTTGGTACTTGT +MH356245.1 11090 11115 177e6ebb_31_RIGHT_1 2 - CTGCTTTAACGTTCCTGGTACTTGT +MH356245.1 11090 11113 177e6ebb_31_RIGHT_2 2 - GCTCTCACGTTCCTGGTACTTGT +MH356245.1 11090 11116 177e6ebb_31_RIGHT_3 2 - GCTGATCTCATGTTTCTGGTACTTGT +MH356245.1 11090 11113 177e6ebb_31_RIGHT_4 2 - GCTTTCACGTTCTTGGTGCTTGC +MH356245.1 11090 11114 177e6ebb_31_RIGHT_5 2 - TGCTCTCACGTTCTTGGTACTTGT +MH356245.1 11090 11114 177e6ebb_31_RIGHT_6 2 - TGCTTTCACGTTCCTGGTACTTGT +MH356245.1 11090 11114 177e6ebb_31_RIGHT_7 2 - TGCTTTCACGTTCTTGGTACTTGC +MH356245.1 10992 11014 177e6ebb_32_LEFT_0 1 + CACTCCACACTCTGGCTGTCTC +MH356245.1 10991 11014 177e6ebb_32_LEFT_1 1 + GCACTCCACACTCTAGCTGTCTC +MH356245.1 11376 11398 177e6ebb_32_RIGHT_0 1 - AACGGGATATGGGCGTCAAGAT +MH356245.1 11376 11396 177e6ebb_32_RIGHT_1 1 - CGGGATATGGGCGTCAAGGT +MH356245.1 11376 11395 177e6ebb_32_RIGHT_2 1 - GGGACATGGGCGTCAAGGT +MH356245.1 11312 11334 177e6ebb_33_LEFT_0 2 + CAGTGGCTGCATAAGAGGCTTG +MH356245.1 11311 11334 177e6ebb_33_LEFT_1 2 + TCAGTGGCTGCATAAAAGGCTTG +MH356245.1 11309 11334 177e6ebb_33_LEFT_2 2 + TTTCAGTGGCTGCATAAGAGACTTG +MH356245.1 11729 11761 177e6ebb_33_RIGHT_0 2 - ACAAGTAGCCCATCATAATATATTCCTTTTGA +MH356245.1 11729 11758 177e6ebb_33_RIGHT_1 2 - AGTAGCCCGTCATAATATATTCCCTTTGA +MH356245.1 11729 11760 177e6ebb_33_RIGHT_2 2 - CAAGTAGCCCATCATAATATATCCCTTTTGA +MH356245.1 11729 11760 177e6ebb_33_RIGHT_3 2 - CAAGTAGCCCGTCATAATATATTCCTTTTGA +MH356245.1 11729 11760 177e6ebb_33_RIGHT_4 2 - CGAGTAGCCCATCATAATATATTCCTTTTGA +MH356245.1 11670 11692 177e6ebb_34_LEFT_0 1 + ACATTGGCCATCACCTCAAAGC +MH356245.1 11671 11692 177e6ebb_34_LEFT_1 1 + CATTGGCCATCACCTCAAGGC +MH356245.1 11669 11692 177e6ebb_34_LEFT_2 1 + GACATTGGACATCACCTCAAGGC +MH356245.1 11669 11692 177e6ebb_34_LEFT_3 1 + GACATTGGTCATCACCTCAAGGC +MH356245.1 11669 11692 177e6ebb_34_LEFT_4 1 + GATATTGGCCATCACCTCAAGGC +MH356245.1 11673 11692 177e6ebb_34_LEFT_5 1 + TCGGCCATCACCTCAAGGC +MH356245.1 12091 12118 177e6ebb_34_RIGHT_0 1 - GCAATTGATGATGTTACTGGATCACCG +MH356245.1 11941 11969 177e6ebb_35_LEFT_0 2 + TCTTGGCTTCACAATTAATTCAACCATG +MH356245.1 11943 11969 177e6ebb_35_LEFT_1 2 + TTGGCTTCACAATCAATTCAACCATG +MH356245.1 12350 12376 177e6ebb_35_RIGHT_0 2 - AATGCAGCCAATCTCTCATCTTCTTC +MH356245.1 12350 12371 177e6ebb_35_RIGHT_1 2 - CGCCAGTCCCTCATCCTCTTC +MH356245.1 12350 12371 177e6ebb_35_RIGHT_2 2 - CGCCAGTCTCTCGTCCTCTTC +MH356245.1 12350 12370 177e6ebb_35_RIGHT_3 2 - GCCAGTCCCTCGTCCTCTTC +MH356245.1 12350 12374 177e6ebb_35_RIGHT_4 2 - TGCAGCCAATCTCTCATCTTCCTC +MH356245.1 12301 12328 177e6ebb_36_LEFT_0 1 + CCATAGTCCAAACCCAATGTTGAAAGG +MH356245.1 12301 12328 177e6ebb_36_LEFT_1 1 + CCATAGTCCAAACCCGATGTTAAAAGG +MH356245.1 12298 12328 177e6ebb_36_LEFT_2 1 + GATCCATAGTCCAAATCCAATGTTAAAAGG +MH356245.1 12300 12328 177e6ebb_36_LEFT_3 1 + TCCATAGTCCAAACCCAATGTTAAAAGG +MH356245.1 12300 12328 177e6ebb_36_LEFT_4 1 + TCCATAGTCCAAATCCAATGCTAAAAGG +MH356245.1 12721 12743 177e6ebb_36_RIGHT_0 1 - AAGGTGGCCTCGCATAGATTCT +MH356245.1 12721 12747 177e6ebb_36_RIGHT_1 1 - GAATAATGTGGCCTCGCATAGATTCT +MH356245.1 12553 12579 177e6ebb_37_LEFT_0 2 + CTATGAACAATTCAGAGCAGGGATGG +MH356245.1 12557 12579 177e6ebb_37_LEFT_1 2 + GAACAATTCAGGGCAGGGATGG +MH356245.1 12551 12579 177e6ebb_37_LEFT_2 2 + GACTATGAACAATTTAGAGCAGGGATGG +MH356245.1 12550 12579 177e6ebb_37_LEFT_3 2 + TGATTATGAACAATTTAGAGCAGGGATGG +MH356245.1 12955 12977 177e6ebb_37_RIGHT_0 2 - AGCCCATGAGTACACTGTTGCT +MH356245.1 12955 12977 177e6ebb_37_RIGHT_1 2 - GGCCCATGAGTACACTGTTGCT +MH356245.1 12878 12904 177e6ebb_38_LEFT_0 1 + ACCACTGATGAGAGAACAGACATGAA +MH356245.1 12876 12904 177e6ebb_38_LEFT_1 1 + CCACCACTGATGAGAGAACAGATATGAA +MH356245.1 12875 12904 177e6ebb_38_LEFT_2 1 + TCTACCACTGATGAGAGAACAGATATGAA +MH356245.1 13314 13341 177e6ebb_38_RIGHT_0 1 - AACAATCTGTTTCGACGTGAAGATGTA +MH356245.1 13314 13340 177e6ebb_38_RIGHT_1 1 - ACAATCTGTTTCGACGTGGAGATGTA +MH356245.1 13314 13339 177e6ebb_38_RIGHT_2 1 - CAATCCGTTTCGACGTGAAGATGTA +MH356245.1 13314 13339 177e6ebb_38_RIGHT_3 1 - CAATCTGTTTCGACGTGAAGGTGTA +MH356245.1 13257 13288 177e6ebb_39_LEFT_0 2 + GTGTTTTAGAAACACTATTTCGACTTGAGAA +MH356245.1 13257 13288 177e6ebb_39_LEFT_1 2 + GTGTTTTAGAAACATTGTTTCGACTTGAGAA +MH356245.1 13259 13288 177e6ebb_39_LEFT_2 2 + GTTTTAGAAACATTGTTTCGACTCGAGAA +MH356245.1 13260 13288 177e6ebb_39_LEFT_3 2 + TCTTAGAAACATTGTTTCGACTCGAGAA +MH356245.1 13258 13288 177e6ebb_39_LEFT_4 2 + TGTTTTAGAAACACTATTTCGACTCGAGAA +MH356245.1 13258 13288 177e6ebb_39_LEFT_5 2 + TGTTTTAGAAACATTGTTCCGACTTGAGAA +MH356245.1 13260 13288 177e6ebb_39_LEFT_6 2 + TTTTAGAAACACTGTTTCGACTCGAGAA +MH356245.1 13680 13704 177e6ebb_39_RIGHT_0 2 - CACACTGGCCCAAGTAGATAGTGA +MH356245.1 13680 13702 177e6ebb_39_RIGHT_1 2 - CACTGGCCCAAGTAGATGGTGA +MH356245.1 13680 13705 177e6ebb_39_RIGHT_2 2 - GCACACTGGCCTAAGTAGATAGTGA +MH356245.1 13680 13705 177e6ebb_39_RIGHT_3 2 - GCACATTGGCCCAAGTAGATAGTGA +MH356245.1 13586 13615 177e6ebb_40_LEFT_0 1 + GAGAAGGACCATATGAATGAAATTTCAGC +MH356245.1 13585 13615 177e6ebb_40_LEFT_1 1 + TGAAAAGGACCATATGAATGAAATTTCAGC +MH356245.1 13584 13615 177e6ebb_40_LEFT_2 1 + TTGAGAAAGACCATATGAATGAAATTTCAGC +MH356245.1 14012 14037 177e6ebb_40_RIGHT_0 1 - CCGGTACTACATCCTCATCGCTTTC +MH356245.1 14012 14037 177e6ebb_40_RIGHT_1 1 - CCGGTACTACATCCTCGTCACTTTC +MH356245.1 14012 14036 177e6ebb_40_RIGHT_2 1 - CGCTACTACATCCTCGTCGCTTTC +MH356245.1 14012 14036 177e6ebb_40_RIGHT_3 1 - CGGTACTACATCCTCGTCGCTTTC +MH356245.1 13901 13927 177e6ebb_41_LEFT_0 2 + GATGCTCAAAATTTGCACACAACTGT +MH356245.1 13904 13927 177e6ebb_41_LEFT_1 2 + GCCCAAAACTTGCACACAACTGT +MH356245.1 13903 13927 177e6ebb_41_LEFT_2 2 + TGCTCAAAACTTGCACACAACTGT +MH356245.1 14275 14305 177e6ebb_41_RIGHT_0 2 - ATGAATCCTGGATCAACTCTCAATCTTATC +MH356245.1 14275 14300 177e6ebb_41_RIGHT_1 2 - TCCTGGATCGACTCTCAACCTTATC +MH356245.1 14275 14304 177e6ebb_41_RIGHT_2 2 - TGAATCCTGGATCGACTCTCAATCTTATC +MH356245.1 14275 14304 177e6ebb_41_RIGHT_3 2 - TGAATCCTGGATCGACTCTTAACCTTATC +MH356245.1 14216 14246 177e6ebb_42_LEFT_0 1 + ATTATTGTAGACCATTACTCATGCTCTCTG +MH356245.1 14216 14246 177e6ebb_42_LEFT_1 1 + ATTATTGTAGACCATTACTCATGTTCCCTG +MH356245.1 14219 14246 177e6ebb_42_LEFT_2 1 + GTTGTAGACCATTACTCATGCTCTCTG +MH356245.1 14221 14246 177e6ebb_42_LEFT_3 1 + TGTAGACCATTACTCATGCTCCCTG +MH356245.1 14221 14246 177e6ebb_42_LEFT_4 1 + TGTGGACCATTACTCATGCTCTCTG +MH356245.1 14656 14684 177e6ebb_42_RIGHT_0 1 - AGAATTGGCGGAAACTCCACTATTATAG +MH356245.1 14656 14683 177e6ebb_42_RIGHT_1 1 - GAATTGGCGGAAACCCCACTATTATAG +MH356245.1 14656 14679 177e6ebb_42_RIGHT_2 1 - TGGCGGAAACCCCACTATTGTAG +MH356245.1 14558 14577 177e6ebb_43_LEFT_0 2 + AGATGCCTTGAGCCAGGGG +MH356245.1 14556 14577 177e6ebb_43_LEFT_1 2 + GGAGATGCCTTGAGCCAGGAG +MH356245.1 14987 15007 177e6ebb_43_RIGHT_0 2 - AAGTCCCCGCTGAAAGGCAT +MH356245.1 14987 15010 177e6ebb_43_RIGHT_1 2 - ACAAAATCCCCACTGACAGGCAT +MH356245.1 14987 15009 177e6ebb_43_RIGHT_2 2 - CAAAATCCCCGCTGAAAGGCAT +MH356245.1 14900 14928 177e6ebb_44_LEFT_0 1 + ACTATAGAGAAGCTAGAGGAATTGGCAG +MH356245.1 15323 15343 177e6ebb_44_RIGHT_0 1 - CCGTTAATTGCCAACCCGCA +MH356245.1 15227 15250 177e6ebb_45_LEFT_0 2 + AGCTGCATACAAGCAATTGTGGG +MH356245.1 15224 15250 177e6ebb_45_LEFT_1 2 + CTAAACTGCATACAAGCAATTGTGGG +MH356245.1 15228 15250 177e6ebb_45_LEFT_2 2 + GCTGCATACAAGCGATTGTGGG +MH356245.1 15228 15250 177e6ebb_45_LEFT_3 2 + GCTGCATACAGGCAATTGTGGG +MH356245.1 15635 15666 177e6ebb_45_RIGHT_0 2 - ACTTGGACAGATTCTTAACGAAGATATTCTG +MH356245.1 15635 15671 177e6ebb_45_RIGHT_1 2 - CTCTGACTTAGATAAATTCTTAACGAAGATATTCTG +MH356245.1 15635 15669 177e6ebb_45_RIGHT_2 2 - CTGACTTGGATAGATTCTTAACGAAAATATTCTG +MH356245.1 15635 15670 177e6ebb_45_RIGHT_3 2 - TCTGACTTAGATAGATTCTTAACGAAGATATTCTG +MH356245.1 15635 15668 177e6ebb_45_RIGHT_4 2 - TGACTTGGATAGATTCTTAACGAAGATATTCTG +MH356245.1 15635 15663 177e6ebb_45_RIGHT_5 2 - TGGACAGATTCTTAACGAAGATATTCCG +MH356245.1 15429 15457 177e6ebb_46_LEFT_0 1 + AGTTGGCAAGATTCAAAGACAATCAAAG +MH356245.1 15430 15457 177e6ebb_46_LEFT_1 1 + GTTGGCAAGATTCAAAGACAACCAAAG +MH356245.1 15430 15457 177e6ebb_46_LEFT_2 1 + GTTGGCAAGATTCAAAGAGAACCAAAG +MH356245.1 15432 15457 177e6ebb_46_LEFT_3 1 + TGGCAAGATTCAAGGACAACCAAAG +MH356245.1 15432 15457 177e6ebb_46_LEFT_4 1 + TGGCGAGATTCAAAGACAACCAAAG +MH356245.1 15858 15888 177e6ebb_46_RIGHT_0 1 - AAAAGCTGGGAATAGAAACTTCGTATTTTC +MH356245.1 15858 15888 177e6ebb_46_RIGHT_1 1 - ACAAAGCTGGAATAGAAACTTCGTATTTTC +MH356245.1 15858 15888 177e6ebb_46_RIGHT_2 1 - CAAAGCAGGGAATAGAAACTTCGTATTTTC +MH356245.1 15858 15888 177e6ebb_46_RIGHT_3 1 - CAAAGCTGGGAATAGAAACTTCGTATTTTC +MH356245.1 15858 15887 177e6ebb_46_RIGHT_4 1 - CAAAGCTGGGAATAGAACTTCGTATTTTC +MH356245.1 15858 15887 177e6ebb_46_RIGHT_5 1 - CAAGCTGGGAATAGAAACTTCGTATTTTC +MH356245.1 15858 15889 177e6ebb_46_RIGHT_6 1 - GACAAACTGGGAATAGAAACTTCGTATTTTC +MH356245.1 15858 15889 177e6ebb_46_RIGHT_7 1 - GACAAAGTGGGAATAGAAACTTCGTATTTTC diff --git a/conf/artic_primers.config b/conf/artic_primers.config new file mode 100644 index 0000000..b6c2f34 --- /dev/null +++ b/conf/artic_primers.config @@ -0,0 +1,33 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for using mapped Artic primers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines Artic primer bed files for each of the preset genotypes. + + Use as follows: + nextflow run phac-nml/measeq -profile artic_primers, + --input + --platform + --outdir + +---------------------------------------------------------------------------------------- +*/ +process { + resourceLimits = [ + cpus: 2, + memory: '8.GB', + time: '1.h' + ] +} + +params { + config_profile_name = 'Artic Primers Profile' + config_profile_description = 'Preset mapped Artic primer bed files for D8, B3, and A MeV genotypes' + + // Input Data and Params + amplicon = true + default_bed = "${projectDir}/assets/reference/D8/artic_primers.bed" + A_bed = "${projectDir}/assets/reference/A/artic_primers.bed" + B3_bed = "${projectDir}/assets/reference/B3/artic_primers.bed" + D8_bed = "${projectDir}/assets/reference/D8/artic_primers.bed" +} diff --git a/docs/output.md b/docs/output.md index 45ddfe1..d417502 100644 --- a/docs/output.md +++ b/docs/output.md @@ -28,6 +28,7 @@ The pipeline is built using Nextflow and processes data using the following step - [FastQC](#fastqc) - Untrimmed read QC plots - [Fastp](#fastp) - Trim paired-end illumina reads - [BWAMem2](#bwamem2) - Map to the provided measles reference + - [Bowtie 2](#bowtie2) - Optional: Align reads with Bowtie 2 instead of BWAMem2 - [iVar Trim](#ivar-trim) - Amplicon only: Trim the BAM file by primer position - [Picard MarkDuplicates](#picard-markduplicates) - Optional: Remove optical duplicate reads from BAM file - [Freebayes](#freebayes) - Call candidate variants from the BAM file @@ -173,13 +174,27 @@ Using the N450 dataset, the input reference is typed so that the N450 region can - `bam/bwamem/` - `.sorted.bam`: Coordinate sorted BAM file containing read alignment information. - - `.sorted.bam.bai`: Index of Coordinate sorted BAM file containing read alignment information. + - `.sorted.bam.bai`: Index of coordinate sorted BAM file containing read alignment information. - `reference/bwamem2/`: Directory containing the index files for the reference genome [BWA-Mem2](https://github.com/bwa-mem2/bwa-mem2) is a tool used to align the input fastq reads to the reference sequence. The output alignments are sorted and indexed with samtools to be used for downstream variant calling and other QC information. +#### Bowtie 2 + +
+Output files + +- `bam/bowtie2/` + - `.sorted.bam`: Coordinate sorted BAM file containing read alignment information. + - `.sorted.bam.bai`: Index of coordinate sorted BAM file containing read alignment information. +- `reference/bowtie2/`: Directory containing the index files for the reference genome + +
+ +[Bowtie 2](https://github.com/BenLangmead/bowtie2) is a tool used to align the input fastq reads to the reference sequence. The output alignments are sorted and indexed with samtools to be used for downstream variant calling and other QC information. + #### iVar Trim
diff --git a/docs/usage.md b/docs/usage.md index ab99a27..90a4994 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -202,6 +202,7 @@ A table containing all of the parameter descriptions. You can also do `nextflow | --reference | Path to reference fasta file to map to | False | Path | null | | | --amplicon | Run amplicon data using the preset primer bed files or with ``--primer_bed` parameter | False | Boolean | false | Use for amplicon data | | --primer_bed | Path to bed file containing genomic primer locations | False | Path | null | Use for amplicon data | +| --align_bowtie2 | Align reads with BOWTIE2 instead of BWAMem2 for Illumina data | False | Boolean | false | Illumina only | | --remove_duplicates | Mark and remove optical duplicates with picard markduplicates | False | Boolean | false | Illumina only | | --ivar_trim_min_read_length | Minimum length of read to retain after trimming | False | Integer | 30 | Illumina only | | --ivar_primer_pairs | [Experimental] Path to iVar primer pair TSV information file containing left and right primer names for the same amplicon | False | Path | null | Illumina amplicon only | diff --git a/nextflow.config b/nextflow.config index 922680b..6c0598d 100755 --- a/nextflow.config +++ b/nextflow.config @@ -198,6 +198,7 @@ profiles { test_nanopore { includeConfig 'conf/test_nanopore.config' } // Lint really doesn't like not having a test profile test { includeConfig 'conf/test.config' } + } @@ -287,7 +288,7 @@ manifest { mainScript = 'main.nf' defaultBranch = 'main' nextflowVersion = '!>=24.10.0' - version = '1.1.0' + version = '1.2.0' doi = '' } @@ -323,3 +324,8 @@ includeConfig 'conf/iridanext.config' // Reference Config includeConfig 'conf/reference.config' + +profiles { + // Profile to run with Artic primers + artic_primers { includeConfig 'conf/artic_primers.config' } +} From 1d39d350924c9b9faa3949e670dc6686f2bcd085 Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Tue, 5 May 2026 14:35:02 -0500 Subject: [PATCH 05/14] minor docs fixes --- CHANGELOG.md | 6 +++--- nextflow_schema.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4c1286..dffc55d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,13 +9,13 @@ Update to enable users to map reads with Bowtie 2 instead of BWAMem as an option ### `Added` -- Illumina reads mapping with Bowtie 2 as an option in response to (#37). [PR #39](https://github.com/phac-nml/measeq/pull/39) +- Illumina reads mapping with Bowtie 2 as an option in response to [issue #37](https://github.com/phac-nml/measeq/issues/37). [PR #39](https://github.com/phac-nml/measeq/pull/39) - `align_bowtie2` added as an optional parameter to map illumina data with Bowtie 2 instead of BWAMem2. -- Artic primers (https://doi.org/10.1101/2024.12.20.629611) for MeV were added as a profile. [PR #39](https://github.com/phac-nml/measeq/pull/39) +- [Artic primers](https://doi.org/10.1101/2024.12.20.629611) for MeV were added as a profile. [PR #39](https://github.com/phac-nml/measeq/pull/39) - - This allows running the pipeline with mapped Artic primers without having to specify them (#38). + - This allows running the pipeline with mapped Artic primers without having to specify them [issue #38](https://github.com/phac-nml/measeq/issues/38). - To run the pipeline with this profile, use `nextflow run phac-nml/measeq -profile artic_primers,` with the other normal parameters you would use. > [!NOTE] diff --git a/nextflow_schema.json b/nextflow_schema.json index 81d4941..adc0e7e 100755 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -139,7 +139,7 @@ }, "align_bowtie2": { "type": "boolean", - "description": "Run illumina subworkflow with bowtie2 aligner", + "description": "Run illumina subworkflow with bowtie2 aligner instead of the default bwamem2 aligner", "default": false } } From 81b868673ff9dfd7556c189774ad0e1797eb5954 Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Wed, 6 May 2026 11:09:51 -0500 Subject: [PATCH 06/14] update config file for overrides --- README.md | 2 +- conf/artic_primers.config | 7 ------- docs/usage.md | 2 +- nextflow.config | 26 ++++++++++++-------------- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index b539342..92c2818 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Full release version 1.2.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. -Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLangmead/bowtie2) as an optional tool to map reads to their reference files and support for the [Artic primers](https://www.biorxiv.org/content/10.1101/2024.12.20.629611v1) through a nextflow profile. +Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLangmead/bowtie2) as an optional tool to map reads to their reference files and support for the [Artic primers](https://www.biorxiv.org/content/10.1101/2024.12.20.629611v1) mapped to our preset references (D8, B3, and A genotypes) through a nextflow profile. #### Genotype Predictions diff --git a/conf/artic_primers.config b/conf/artic_primers.config index b6c2f34..5804417 100644 --- a/conf/artic_primers.config +++ b/conf/artic_primers.config @@ -12,13 +12,6 @@ ---------------------------------------------------------------------------------------- */ -process { - resourceLimits = [ - cpus: 2, - memory: '8.GB', - time: '1.h' - ] -} params { config_profile_name = 'Artic Primers Profile' diff --git a/docs/usage.md b/docs/usage.md index 90a4994..0f38798 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -202,7 +202,7 @@ A table containing all of the parameter descriptions. You can also do `nextflow | --reference | Path to reference fasta file to map to | False | Path | null | | | --amplicon | Run amplicon data using the preset primer bed files or with ``--primer_bed` parameter | False | Boolean | false | Use for amplicon data | | --primer_bed | Path to bed file containing genomic primer locations | False | Path | null | Use for amplicon data | -| --align_bowtie2 | Align reads with BOWTIE2 instead of BWAMem2 for Illumina data | False | Boolean | false | Illumina only | +| --align_bowtie2 | Align reads with Bowtie 2 instead of BWAMem2 for Illumina data | False | Boolean | false | Illumina only | | --remove_duplicates | Mark and remove optical duplicates with picard markduplicates | False | Boolean | false | Illumina only | | --ivar_trim_min_read_length | Minimum length of read to retain after trimming | False | Integer | 30 | Illumina only | | --ivar_primer_pairs | [Experimental] Path to iVar primer pair TSV information file containing left and right primer names for the same amplicon | False | Path | null | Illumina amplicon only | diff --git a/nextflow.config b/nextflow.config index 6c0598d..88e5a3a 100755 --- a/nextflow.config +++ b/nextflow.config @@ -84,6 +84,15 @@ params { // Load base.config by default for all pipelines includeConfig 'conf/base.config' +// Load modules.config for DSL2 module specific options +includeConfig 'conf/modules.config' + +// IRIDA Next config +includeConfig 'conf/iridanext.config' + +// Reference Config +includeConfig 'conf/reference.config' + // Profiles for running/dependency management profiles { debug { @@ -199,6 +208,9 @@ profiles { // Lint really doesn't like not having a test profile test { includeConfig 'conf/test.config' } + // Profile to run with Artic primers + artic_primers { includeConfig 'conf/artic_primers.config' } + } @@ -315,17 +327,3 @@ prov { } } } - -// Load modules.config for DSL2 module specific options -includeConfig 'conf/modules.config' - -// IRIDA Next config -includeConfig 'conf/iridanext.config' - -// Reference Config -includeConfig 'conf/reference.config' - -profiles { - // Profile to run with Artic primers - artic_primers { includeConfig 'conf/artic_primers.config' } -} From 88886e4db83764a1f1d9fa7fdc6a57c95b88a152 Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Wed, 6 May 2026 11:41:42 -0500 Subject: [PATCH 07/14] wording update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92c2818..6dd848d 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Full release version 1.2.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. -Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLangmead/bowtie2) as an optional tool to map reads to their reference files and support for the [Artic primers](https://www.biorxiv.org/content/10.1101/2024.12.20.629611v1) mapped to our preset references (D8, B3, and A genotypes) through a nextflow profile. +Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLangmead/bowtie2) as an alterative read mapping tool (instead of BWAMem 2) and support for the [Artic primers](https://www.biorxiv.org/content/10.1101/2024.12.20.629611v1) mapped to the pipeline's preset references (D8, B3, and A genotypes). #### Genotype Predictions From 51043d0ca27c71e1e636affd86888221647adfb2 Mon Sep 17 00:00:00 2001 From: Ahmed Abdalla Date: Wed, 6 May 2026 11:46:39 -0500 Subject: [PATCH 08/14] wording update --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dffc55d..040dfb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,13 +9,13 @@ Update to enable users to map reads with Bowtie 2 instead of BWAMem as an option ### `Added` -- Illumina reads mapping with Bowtie 2 as an option in response to [issue #37](https://github.com/phac-nml/measeq/issues/37). [PR #39](https://github.com/phac-nml/measeq/pull/39) +- Illumina reads mapping with Bowtie 2 as an alterative (instead of BWAMem 2) in response to [issue #37](https://github.com/phac-nml/measeq/issues/37). [PR #39](https://github.com/phac-nml/measeq/pull/39) - `align_bowtie2` added as an optional parameter to map illumina data with Bowtie 2 instead of BWAMem2. - [Artic primers](https://doi.org/10.1101/2024.12.20.629611) for MeV were added as a profile. [PR #39](https://github.com/phac-nml/measeq/pull/39) - - This allows running the pipeline with mapped Artic primers without having to specify them [issue #38](https://github.com/phac-nml/measeq/issues/38). + - This allows running the pipeline with the Artic primers mapped to the pipeline's preset references (D8, B3, and A genotypes) [issue #38](https://github.com/phac-nml/measeq/issues/38). - To run the pipeline with this profile, use `nextflow run phac-nml/measeq -profile artic_primers,` with the other normal parameters you would use. > [!NOTE] From 8746c666dddfb7d4f08c93319b24c22d63d5d53a Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 8 May 2026 07:49:36 -0500 Subject: [PATCH 09/14] Illumina multi-alt ambiguous reporting fixes --- CHANGELOG.md | 4 ++++ bin/process_vcf.py | 40 +++++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 040dfb9..4d4ca02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Update to enable users to map reads with Bowtie 2 instead of BWAMem as an option > [!NOTE] > If you use `-profile artic_primers`, then there is no need to use `--amplicon` as it is automatically passed. +### `Fixes` + +- Ambiguous regions that don't include the Ref base are properly tracked now in the report and include both alts [PR #41](https://github.com/phac-nml/measeq/pull/41) + ## [v1.1.0] - 2026-03-27 Update focusing on fixing small inconsistencies between final reports and output consensus sequences along with a few small bugfixes and exposing some more parameter options available to the user diff --git a/bin/process_vcf.py b/bin/process_vcf.py index 89eed64..f523d8d 100755 --- a/bin/process_vcf.py +++ b/bin/process_vcf.py @@ -1,9 +1,9 @@ #!/usr/bin/env python # Written by @jts from https://github.com/jts/ncov2019-artic-nf/blob/be26baedcc6876a798a599071bb25e0973261861/bin/process_gvcf.py -# Adjustments made such that were focused on just the mutations and not the GVCF info -# Along with that, added in genotype to allow new versions of bcftools consensus to work -# And adjusting how Del+Snp complex sites are handled +# Adjustments made such that were focused on just the mutations and not the GVCF info (that caused a rare error in the measles genome) +# Along with that, added in genotype to allow new versions of bcftools consensus to work, adjusted to work on multiple +# Alt alleles above the minimum threshold and adjusting how Del+Snp complex sites are handled import argparse import pysam @@ -152,7 +152,7 @@ def get_base_code(base_dict, upper_ambiguity): return significant_bases.pop() # Look up the IUPAC code for the set of significant bases - return iupac_map.get(frozenset(significant_bases), 'N') + return iupac_map.get(frozenset(significant_bases), 'N'), frozenset(significant_bases) def main(): '''Main entry point''' @@ -160,31 +160,31 @@ def main(): parser = argparse.ArgumentParser(description=description) parser.add_argument('-v', '--variants-output', required=True, - help=f"The output file name for variants (VCF records)\n") + help="The output file name for variants (VCF records)\n") parser.add_argument('-c', '--consensus-sites-output', required=True, - help=f"The output file name for variants that will be applied to generate the consensus sequence\n") + help="The output file name for variants that will be applied to generate the consensus sequence\n") parser.add_argument('-t', '--tsv-sites-output', required=True, - help=f"The output file name for consensus variants that is formatted as a TSV file for reporting later\n") + help="The output file name for consensus variants that is formatted as a TSV file for reporting later\n") parser.add_argument('-d', '--min-depth', type=int, default=10, - help=f"Minimum depth to call a variant") + help="Minimum depth to call a variant") parser.add_argument('-l', '--lower-ambiguity-frequency', type=float, default=0.25, - help=f"Variants with frequency less than -l will be discarded") + help="Variants with frequency less than -l will be discarded") parser.add_argument('-u', '--upper-ambiguity-frequency', type=float, default=0.75, - help=f"Substitution variants with frequency less than -u will be encoded with IUPAC ambiguity codes") + help="Substitution variants with frequency less than -u will be encoded with IUPAC ambiguity codes") parser.add_argument('-m', '--minimum-indel-threshold', type=float, default=0.60, - help=f"Indel variants with frequency less than the -m threshold will be skipped") + help="Indel variants with frequency less than the -m threshold will be skipped") parser.add_argument('-q', '--min-quality', type=int, default=20, - help=f"Minimum quality to call a variant") + help="Minimum quality to call a variant") parser.add_argument('-n', '--no-frameshifts', action="store_true", - help=f"Skip indel mutations that are not divisible by 3") + help="Skip indel mutations that are not divisible by 3") parser.add_argument('file', action='store', nargs=1) @@ -300,11 +300,21 @@ def main(): tsv_tag = "Passing Indel" else: # To capture IUPACs in reports easier have a separate column - iupac_base = get_base_code(out_tuple[1], args.upper_ambiguity_frequency) + iupac_base, fzset = get_base_code(out_tuple[1], args.upper_ambiguity_frequency) # Genotype needs to be mixed to get an iupac if that is what the base should be if iupac_base not in ['A', 'T', 'G', 'C']: - genotype = (0,1) + # Need to check if were a mix of the Ref/Alt or of two Alt's + if out_r.ref in fzset: + genotype = (0,1) + else: + genotype = (1,2) # Sets the correct IUPAC + + # For tracking only really - it makes the ambiguous vcf not properly made + out_r.alts = fzset + vaf = sum([v for k, v in out_tuple[1].items() if k in fzset]) + consensus_base = ", ".join(fzset) + # Record ambiguous SNPs in the consensus sequence with IUPAC codes consensus_tag = "ambiguous" tsv_tag = f"Ambiguous Base - {iupac_base}" From 0f23f64c172c84202d8b4422ed856f1c679614b3 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 11 May 2026 10:03:21 -0500 Subject: [PATCH 10/14] Add in missed return value to get_base_code --- bin/process_vcf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/process_vcf.py b/bin/process_vcf.py index f523d8d..2add7b6 100755 --- a/bin/process_vcf.py +++ b/bin/process_vcf.py @@ -149,7 +149,7 @@ def get_base_code(base_dict, upper_ambiguity): # Consensus if len(significant_bases) == 1: - return significant_bases.pop() + return significant_bases.pop(), frozenset(significant_bases) # Look up the IUPAC code for the set of significant bases return iupac_map.get(frozenset(significant_bases), 'N'), frozenset(significant_bases) From 7e7e0443a05dffaf9bc6d64e3d33d9c986e62b0e Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 11 May 2026 11:01:05 -0500 Subject: [PATCH 11/14] always return frozenset for ambiguous sites --- bin/process_vcf.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/process_vcf.py b/bin/process_vcf.py index 2add7b6..3c5cd1f 100755 --- a/bin/process_vcf.py +++ b/bin/process_vcf.py @@ -11,6 +11,10 @@ # Set for iupac assignment iupac_map = { + frozenset(['A']): 'A', + frozenset(['T']): 'T', + frozenset(['C']): 'C', + frozenset(['G']): 'G', frozenset(['A', 'C']): 'M', frozenset(['A', 'G']): 'R', frozenset(['A', 'T']): 'W', @@ -147,11 +151,7 @@ def get_base_code(base_dict, upper_ambiguity): threshold = 1 - upper_ambiguity significant_bases = {k for k, v in base_dict.items() if v >= threshold} - # Consensus - if len(significant_bases) == 1: - return significant_bases.pop(), frozenset(significant_bases) - - # Look up the IUPAC code for the set of significant bases + # Look up the Consensus or IUPAC code for the set of significant bases return iupac_map.get(frozenset(significant_bases), 'N'), frozenset(significant_bases) def main(): From 1d99e31702343ddae23d217b748eec3bf8ae5bd9 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 11 May 2026 14:45:20 -0500 Subject: [PATCH 12/14] update release date --- CHANGELOG.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d4ca02..312d276 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v1.2.0] - 2026-05-06 +## [v1.2.0] - 2026-05-12 Update to enable users to map reads with Bowtie 2 instead of BWAMem as an optional parameter and use Artic primers as default. diff --git a/README.md b/README.md index 6dd848d..d3123d7 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ ## Current Updates -### _2026-05-06_ Summary +### _2026-05-12_ Summary Full release version 1.2.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. From cde593ea990b1432c85f59ee467e9f0d7eb9f1b2 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 15 May 2026 12:08:10 -0500 Subject: [PATCH 13/14] adding in new parameter for ont variation masking --- CHANGELOG.md | 7 ++- README.md | 18 ++++-- bin/cs_vcf_filter.py | 6 ++ docs/usage.md | 77 +++++++++++++------------ modules/local/artic/subcommands/main.nf | 1 + nextflow.config | 1 + nextflow_schema.json | 7 +++ tests/main.nf.test | 3 +- 8 files changed, 74 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 312d276..562c566 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v1.2.0] - 2026-05-12 +## [v1.2.0] - 2026-05-15 Update to enable users to map reads with Bowtie 2 instead of BWAMem as an optional parameter and use Artic primers as default. @@ -18,6 +18,11 @@ Update to enable users to map reads with Bowtie 2 instead of BWAMem as an option - This allows running the pipeline with the Artic primers mapped to the pipeline's preset references (D8, B3, and A genotypes) [issue #38](https://github.com/phac-nml/measeq/issues/38). - To run the pipeline with this profile, use `nextflow run phac-nml/measeq -profile artic_primers,` with the other normal parameters you would use. +- New `min_mask_freq_c3` parameter for nanopore data to help better control when sites are masked as Ns in more noisy regions/datasets [PR #42](https://github.com/phac-nml/measeq/pull/42) + - Default is `0.30` + - To help allow adjustments to the acceptable amount of site variation before an N is used to mask it + - So now by default a call with `0.15` alt frequeny and a quality score of 3 would NOT be N masked when before it was + > [!NOTE] > If you use `-profile artic_primers`, then there is no need to use `--amplicon` as it is automatically passed. diff --git a/README.md b/README.md index d3123d7..e7174aa 100644 --- a/README.md +++ b/README.md @@ -22,17 +22,25 @@ - [Troubleshooting](#troubleshooting) - [Credits](#credits) - [Citations](#citations) -- [Contributing](#legal) +- [Contributing](#contributing) - [Legal](#legal) ## Current Updates -### _2026-05-12_ Summary +### _2026-05-15_ Summary Full release version 1.2.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLangmead/bowtie2) as an alterative read mapping tool (instead of BWAMem 2) and support for the [Artic primers](https://www.biorxiv.org/content/10.1101/2024.12.20.629611v1) mapped to the pipeline's preset references (D8, B3, and A genotypes). +#### Preprint + +If you find this pipeline useful, please cite our preprint as: + +> Evaluation of MeaSeq: comprehensive analysis and reporting of measles virus whole genome sequences. +> Darian T Hole, Ahmed Abdalla, Vanessa Zubach, Molly Pratt, Stephanie Van Driel, Samar Ashfaq, Joanne Hiebert, Ana T Duggan +> bioRxiv 2026.05.12.724559; doi: https://doi.org/10.64898/2026.05.12.724559 + #### Genotype Predictions - Sample references are now set based on the predicted genotype with a default fallback for non-supplied genotypes or unknown/mixed samples. @@ -47,8 +55,6 @@ Changes in `v1.2.0` include the addition of [Bowtie 2](https://github.com/BenLan - Updating the final report and maintaining best practices/tool updates as they are released -- Writing a quick summary paper of the process and uses for reporting - - For IRIDA-Next, we're hoping to evaluate generic viral pipeline options (or create one) and merge in virus specific post-processing stages - So measeq post-processing would end up included there @@ -158,9 +164,9 @@ Additional or local models can also be used, you just have to provide a path to #### Variant Quality Filtering and Masking Mixed Sites -In addition to calling variants with Clair3, the Nanopore pipeline will mask sites that are of lower quality (Default: 2 < QUAL < 7) or have an allele frequency below 60% with an N in the final consensus. These masked sites can be found in the final HTML report or under the `results/vcf/artic/.fail.vcf` file. +In addition to calling variants with Clair3, the Nanopore pipeline will mask sites that are of lower quality (Default: 2 < QUAL < 7) or have a non-consensus level allele frequency (Default: 30% < AF < 60%) with an N in the final consensus. These masked sites can be found in the final HTML report or under the `results/vcf/artic/.fail.vcf` file. -To adjust this behaviour, you can set the `--min_variant_qual_c3` and `--min_allele_freq_c3` parameters. Setting them both to 0 will essentially turn of variant filtering other than for indels and low depth sites +To adjust this behaviour, you can set the `--min_variant_qual_c3`, `--min_allele_freq_c3`, and `--min_mask_freq_c3` parameters. Setting them all to 0 will essentially turn off variant filtering other than for indels and low depth sites and will then instead rely solely on clair3's calls. ### Reference Assignment diff --git a/bin/cs_vcf_filter.py b/bin/cs_vcf_filter.py index 7323046..c914818 100755 --- a/bin/cs_vcf_filter.py +++ b/bin/cs_vcf_filter.py @@ -133,6 +133,11 @@ def go(args): if v.QUAL < 2: print(f"Skipping LowQual of {v.QUAL} at {v.POS}") continue + # Skip really low AF to help not get a lot of Ns with noisy data + allele_freq = v.format("AF")[0][0] + if allele_freq < args.min_mask_freq: + print(f"Skipping LowAF of {allele_freq} at {v.POS}") + continue # now apply the filter to send variants to PASS or FAIL file if filter.check_filter(v): @@ -161,6 +166,7 @@ def main(): parser.add_argument("--min-depth", type=int) parser.add_argument("--min-qual", type=int, default=8) parser.add_argument("--min-allele-freq", type=float, default=0.60) + parser.add_argument("--min-mask-freq", type=float, default=0.30) parser.add_argument("--min-threshold-depth", type=float, default=0.05) parser.add_argument("inputvcf") parser.add_argument("inputbam") diff --git a/docs/usage.md b/docs/usage.md index 0f38798..a2bad96 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -192,44 +192,45 @@ nextflow run phac-nml/measeq -profile --input --plat A table containing all of the parameter descriptions. You can also do `nextflow run phac-nml/measeq --help` to get them on the command line -| Parameter | Description | Required | Type | Default | Notes | -| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------- | ---------------- | ---------------------------------------------------------- | -| --input | Path to comma-separated file containing sample and read information | True | Path | null | | -| --outdir | Name of output directory to store results | True | String | null | | -| --platform | Sequencing platform used, either 'illumina or nanopore' | True | Choice | null | | -| --model | Name of clair3 model to use | Nanopore data | String | null | Can use `--local_model` instead | -| --local_model | Path to local clair3 model to use | Nanopore data | Path | null | Can use `--model` instead if wanted | -| --reference | Path to reference fasta file to map to | False | Path | null | | -| --amplicon | Run amplicon data using the preset primer bed files or with ``--primer_bed` parameter | False | Boolean | false | Use for amplicon data | -| --primer_bed | Path to bed file containing genomic primer locations | False | Path | null | Use for amplicon data | -| --align_bowtie2 | Align reads with Bowtie 2 instead of BWAMem2 for Illumina data | False | Boolean | false | Illumina only | -| --remove_duplicates | Mark and remove optical duplicates with picard markduplicates | False | Boolean | false | Illumina only | -| --ivar_trim_min_read_length | Minimum length of read to retain after trimming | False | Integer | 30 | Illumina only | -| --ivar_primer_pairs | [Experimental] Path to iVar primer pair TSV information file containing left and right primer names for the same amplicon | False | Path | null | Illumina amplicon only | -| --ivar_offset | Reads that occur at the specified offset positions relative to primer positions will also be trimmed | False | Integer | 0 | Illumina amplicon only | -| --min_ambiguity_threshold | Minimum threshold to call a position as an IUPAC | False | Float | 0.30 | Illumina only | -| --max_ambiguity_threshold | Maximum threshold to call a position as an IUPAC | False | Float | 0.75 | Illumina only | -| --min_indel_threshold | Minimum thresholds to keep an indel | False | Float | 0.60 | Illumina only | -| --min_alt_fraction_freebayes | Require at least this fraction of observations supporting an alt allele to evaluate position | False | Float | 0.05 | Illumina only | -| --min_variant_qual_freebayes | Minimum freebayes quality (probability) to filter variants | False | Integer | 20 | Illumina only | -| --ont_min_read_length | Minimum read length for input ONT reads | False | Int | 200 | Nanopore only | -| --ont_min_base_qual | Minimum base quality of ONT reads to keep | False | Int | 12 | Nanopore only | -| --normalise_ont | Normalise each amplicon barcode to set depth | False | Int | 2000 | Nanopore only | -| --ont_keep_incorrect_primers | Keep reads that don't correctly match to their proper primer pair | False | Boolean | False | Nanopore only | -| --min_variant_qual_c3 | Minimum variant quality to pass clair3 filters | False | Int | 8 | Nanopore only | -| --min_allele_freq_c3 | Minimum alt allele frequency to pass a clair3 variant | False | Number | 0.60 | Nanopore only | -| --min_site_threshold_c3 | Minimum overall site depth threshold for a variant to be included. So default 0.05 = a minimum of 5% of the positions depth for a variant to be included | False | Number | 0.05 | Nanopore only, only should affect amplicon overlap regions | -| --metadata | Path to metadata TSV file containing at minimum 'sample' column | False | Path | null | See [Metadata TSV](#metadata-tsv) | -| --dsid_fasta | Path to DSID multi-fasta to match output consensus data to | False | Path | null | See [DSId Matching in README](../README.md#dsids) | -| --min_depth | Minimum depth to call a base | False | Int | 10 | | -| --no_frameshifts | Fail all indel variants not divisible by 3 | False | Boolean | False | Somewhat crude filter, only use if really needed | -| --neg_control_pct_threshold | Threshold of genome to be called in a negative control to fail it | False | Int | 10 | | -| --neg_ctrl_substrings | Substrings to match to sample names to identify negative controls. Separated by a , | False | String | neg,ntc,blank,en | | -| --skip_negative_grading | Skip grading negative controls and just output a PASS for Run QC | False | Boolean | False | | -| --contact_name | The name to be printed on the final HTML report | False | String | null | | -| --contact_phone | The phone number to be printed on the final HTML report | False | String | null | | -| --contact_email | The email address to be printed on the final HTML report | False | String | null | | -| --contact_website | The website to be printed on the final HTML report | False | String | null | | +| Parameter | Description | Required | Type | Default | Notes | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| --input | Path to comma-separated file containing sample and read information | True | Path | null | | +| --outdir | Name of output directory to store results | True | String | null | | +| --platform | Sequencing platform used, either 'illumina or nanopore' | True | Choice | null | | +| --model | Name of clair3 model to use | Nanopore data | String | null | Can use `--local_model` instead | +| --local_model | Path to local clair3 model to use | Nanopore data | Path | null | Can use `--model` instead if wanted | +| --reference | Path to reference fasta file to map to | False | Path | null | | +| --amplicon | Run amplicon data using the preset primer bed files or with ``--primer_bed` parameter | False | Boolean | false | Use for amplicon data | +| --primer_bed | Path to bed file containing genomic primer locations | False | Path | null | Use for amplicon data | +| --align_bowtie2 | Align reads with Bowtie 2 instead of BWAMem2 for Illumina data | False | Boolean | false | Illumina only | +| --remove_duplicates | Mark and remove optical duplicates with picard markduplicates | False | Boolean | false | Illumina only | +| --ivar_trim_min_read_length | Minimum length of read to retain after trimming | False | Integer | 30 | Illumina only | +| --ivar_primer_pairs | [Experimental] Path to iVar primer pair TSV information file containing left and right primer names for the same amplicon | False | Path | null | Illumina amplicon only | +| --ivar_offset | Reads that occur at the specified offset positions relative to primer positions will also be trimmed | False | Integer | 0 | Illumina amplicon only | +| --min_ambiguity_threshold | Minimum threshold to call a position as an IUPAC | False | Float | 0.30 | Illumina only | +| --max_ambiguity_threshold | Maximum threshold to call a position as an IUPAC | False | Float | 0.75 | Illumina only | +| --min_indel_threshold | Minimum thresholds to keep an indel | False | Float | 0.60 | Illumina only | +| --min_alt_fraction_freebayes | Require at least this fraction of observations supporting an alt allele to evaluate position | False | Float | 0.05 | Illumina only | +| --min_variant_qual_freebayes | Minimum freebayes quality (probability) to filter variants | False | Integer | 20 | Illumina only | +| --ont_min_read_length | Minimum read length for input ONT reads | False | Int | 200 | Nanopore only | +| --ont_min_base_qual | Minimum base quality of ONT reads to keep | False | Int | 12 | Nanopore only | +| --normalise_ont | Normalise each amplicon barcode to set depth | False | Int | 2000 | Nanopore only | +| --ont_keep_incorrect_primers | Keep reads that don't correctly match to their proper primer pair | False | Boolean | False | Nanopore only | +| --min_variant_qual_c3 | Minimum variant quality to pass clair3 filters | False | Int | 7 | Nanopore only | +| --min_allele_freq_c3 | Minimum alt allele frequency to pass a clair3 variant | False | Number | 0.60 | Nanopore only | +| --min_mask_freq_c3 | Minimum alt allele frequency to mask a variant as an N in the final consensus sequence | False | Number | 0.30 | Nanopore only, alows the user to control how much site discordance is allowed before a site is masked over calling the reference | +| --min_site_threshold_c3 | Minimum overall site depth threshold for a variant to be included. So default 0.05 = a minimum of 5% of the positions depth for a variant to be included | False | Number | 0.05 | Nanopore only, only should affect amplicon overlap regions | +| --metadata | Path to metadata TSV file containing at minimum 'sample' column | False | Path | null | See [Metadata TSV](#metadata-tsv) | +| --dsid_fasta | Path to DSID multi-fasta to match output consensus data to | False | Path | null | See [DSId Matching in README](../README.md#dsids) | +| --min_depth | Minimum depth to call a base | False | Int | 10 | | +| --no_frameshifts | Fail all indel variants not divisible by 3 | False | Boolean | False | Somewhat crude filter, only use if really needed | +| --neg_control_pct_threshold | Threshold of genome to be called in a negative control to fail it | False | Int | 10 | | +| --neg_ctrl_substrings | Substrings to match to sample names to identify negative controls. Separated by a , | False | String | neg,ntc,blank,en | | +| --skip_negative_grading | Skip grading negative controls and just output a PASS for Run QC | False | Boolean | False | | +| --contact_name | The name to be printed on the final HTML report | False | String | null | | +| --contact_phone | The phone number to be printed on the final HTML report | False | String | null | | +| --contact_email | The email address to be printed on the final HTML report | False | String | null | | +| --contact_website | The website to be printed on the final HTML report | False | String | null | | ### Other Settings and Parameter Files diff --git a/modules/local/artic/subcommands/main.nf b/modules/local/artic/subcommands/main.nf index aad4118..2a88744 100755 --- a/modules/local/artic/subcommands/main.nf +++ b/modules/local/artic/subcommands/main.nf @@ -97,6 +97,7 @@ process CUSTOM_VCF_FILTER { --min-depth ${params.min_depth} \\ --min-qual ${params.min_variant_qual_c3} \\ --min-allele-freq ${params.min_allele_freq_c3} \\ + --min-mask-freq ${params.min_mask_freq_c3} \\ --min-threshold-depth ${params.min_site_threshold_c3} \\ $vcf \\ $bam \\ diff --git a/nextflow.config b/nextflow.config index 88e5a3a..a130c6d 100755 --- a/nextflow.config +++ b/nextflow.config @@ -44,6 +44,7 @@ params { ont_keep_incorrect_primers = false min_variant_qual_c3 = 7 min_allele_freq_c3 = 0.60 + min_mask_freq_c3 = 0.30 min_site_threshold_c3 = 0.05 // Contact information to be printed on report diff --git a/nextflow_schema.json b/nextflow_schema.json index adc0e7e..7f60434 100755 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -199,6 +199,13 @@ "maximum": 1, "description": "Minimum alt allele frequency to pass a clair3 variant" }, + "min_mask_freq_c3": { + "type": "number", + "default": 0.3, + "minimum": 0, + "maximum": 1, + "description": "Minimum alt allele frequency to mask a variant as an N in the final consensus sequence" + }, "min_site_threshold_c3": { "type": "number", "default": 0.05, diff --git a/tests/main.nf.test b/tests/main.nf.test index c4662c3..12ddcf3 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -1417,6 +1417,7 @@ nextflow_pipeline { tag "nanopore" tag "amplicon" tag "prediction" + tag "here" when { params { @@ -1576,7 +1577,7 @@ nextflow_pipeline { assert iridanext_metadata.sample2.median_sequencing_depth == "0.0" assert iridanext_metadata.sample2.total_variants == "4" assert iridanext_metadata.sample2.num_snps == "4" - assert iridanext_metadata.sample2.num_masked == "42" + assert iridanext_metadata.sample2.num_masked == "31" assert iridanext_metadata.sample2.genome_length == "15678" assert iridanext_metadata.sample2.divisible_by_6 == "PASS" assert iridanext_metadata.sample2.N450_completeness == "0.0" From bc0e9416cae88f5be690432d3a44d1d86f2ac978 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Wed, 20 May 2026 07:59:18 -0500 Subject: [PATCH 14/14] remove unneeded test tag --- CHANGELOG.md | 4 ++-- README.md | 2 +- tests/main.nf.test | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 562c566..e6064b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v1.2.0] - 2026-05-15 +## [v1.2.0] - 2026-05-20 -Update to enable users to map reads with Bowtie 2 instead of BWAMem as an optional parameter and use Artic primers as default. +Update to enable users to map reads with Bowtie 2 instead of BWAMem as an optional parameter and use Artic primers as default. Add in parameter to better control ONT variant masking ### `Added` diff --git a/README.md b/README.md index e7174aa..846c721 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ ## Current Updates -### _2026-05-15_ Summary +### _2026-05-20_ Summary Full release version 1.2.0! Pipeline supports equivalent Illumina and Nanopore workflows allowing whole genome or amplicon sequencing analysis. The MeaSeq workflow generates whole genome consensus sequences, N450 sequences and reporting information, DSId hashing and assigning, and a final QC report. It can be run with a single reference or with the genotyping predictions and a config setup containing a users preferred references. diff --git a/tests/main.nf.test b/tests/main.nf.test index 12ddcf3..59b286d 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -1417,7 +1417,6 @@ nextflow_pipeline { tag "nanopore" tag "amplicon" tag "prediction" - tag "here" when { params {