Mercurial > repos > iuc > cooc_mutbamscan
changeset 1:9f1660129403 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/cojac commit 5b54fc7af13196445abda407054e01dd3e5603c6
author | iuc |
---|---|
date | Mon, 31 Jul 2023 15:23:23 +0000 |
parents | 373c1735d31f |
children | d58a57db7a96 |
files | cooc_mutbamscan.xml macros.xml test-data/ampl_info.tsv test-data/bed_cojac.bed test-data/primers.bed |
diffstat | 5 files changed, 599 insertions(+), 98 deletions(-) [+] |
line wrap: on
line diff
--- a/cooc_mutbamscan.xml Thu Aug 11 13:50:37 2022 +0000 +++ b/cooc_mutbamscan.xml Mon Jul 31 15:23:23 2023 +0000 @@ -1,96 +1,150 @@ <tool id="cooc_mutbamscan" name="Cojac: mutbamscan" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description> - scan an alignment file for mutation co-occurrences + scans an alignment file for mutation co-occurrences </description> <macros> <import>macros.xml</import> </macros> <expand macro="biotools"/> - <expand macro="requirements"/> + <expand macro="requirements"> + <requirement type="package" version="0.1.0">viramp-hub</requirement> + </expand> <expand macro="version"/> <command detect_errors="exit_code"><![CDATA[ -ln -s '$bed_file' 'bed_file' && -@VOCDIR_COMMAND@ -#import re -#set identifier = re.sub('[^\s\w\-\\.]', '_', str($bam_file.element_identifier)) -ln -s '$bam_file' ${identifier}.bam && -ln -s '${bam_file.metadata.bam_index}' ${identifier}.bai && -cooc-mutbamscan - -a '${identifier}.bam' - -b 'bed_file' - -m '$vocdir' - -y cooc.yaml - -j cooc.json - #if $amplicons_file.choice == 'build' - -A amplicons.yaml +## arrange BAM inputs and index files into a V-pipe-style folder structure +## that cojac understands +sh arrange_samples.sh && + +#if $spec_layout.mode == 'separate': + #set $voc_config = $spec_layout.voc_source + @VOCDIR_COMMAND@ + ## prepare amplicon information + #if $spec_layout.amplicon_definitions.choice == 'insert_scheme': + ln -s '$spec_layout.amplicon_definitions.insert_bed' bed_cojac.bed && + #else if $spec_layout.amplicon_definitions.choice == 'primer_scheme': + scheme-convert '$spec_layout.amplicon_definitions.primer_bed' -t bed -b cojac -o bed_cojac.bed && + #else: + scheme-convert '$spec_layout.amplicon_definitions.primer_bed' -t bed -b cojac -a '$spec_layout.amplicon_definitions.amplicon_info' -o bed_cojac.bed && + #end if +#end if + +## run cojac +cojac cooc-mutbamscan + ## use a sample list file to tell cojac to look for the inputs in the + ## V-pipe-style folder stucture we've created earlier. + -s samples_list.tsv + -p inputs + -b bed_cojac.bed + #if $spec_layout.mode == 'separate': + -m voc/ + -A amplicons.yaml + --cooc $spec_layout.cooc #else - -Q '$amplicons_file.in_amp' + -Q '$spec_layout.in_amp' + #end if + #if 'yaml' in $out_opts.output_formats: + -y cooc.yaml + #end if + #if 'json' in $out_opts.output_formats: + -j cooc.json + #end if + #if 'tabular' in $out_opts.output_formats: + -t cooc.tsv #end if - -t cooc.tsv - --cooc $cooc ]]></command> + <configfiles> + <configfile filename="arrange_samples.sh"><![CDATA[#for $dataset in $mapped_input: + #set $sample_id = $dataset.element_identifier.replace("'", '_').replace('/', '_') +mkdir -p 'inputs/$sample_id/1/alignments/' && +ln -s '$dataset' 'inputs/$sample_id/1/alignments/REF_aln.bam' && +ln -s '$dataset.metadata.bam_index' 'inputs/$sample_id/1/alignments/REF_aln.bam.bai' && +#end for +#set $num_samples = len($mapped_input) +echo "Gathered $num_samples sample and index files for cojac to discover from a samples list." + ]]></configfile> + <configfile filename="samples_list.tsv"><![CDATA[#for $dataset in $mapped_input: + #set $line = '\t'.join([$dataset.element_identifier.replace("'", '_').replace('/', '_'), '1', str($dataset)]) +$line +#end for]]></configfile> + </configfiles> <inputs> - <expand macro="vocdir_input"/> - <param name="bed_file" type="data" format="bed" - label="BED file defining the amplicons"/> - <param name="bam_file" type="data" format="bam,cram,sam" - label="Alignment BAM/CRAM/SAM file"/> - <param argument="--cooc" type="integer" min="1" value="2" - label="Minimum number of cooccurence mutations on the same amplicon"/> - <conditional name="amplicons_file"> - <param name="choice" type="select" label="Source of amplicons YAML file"> - <option value="build">Build from BED + set of YAMLs for variants of concern</option> - <option value="custom">From history</option> + <param name="mapped_input" type="data" format="bam" multiple="true" label="Aligned reads input to analyze"/> + <conditional name="spec_layout"> + <param name="mode" type="select" label="How would you like to provide amplicon and lineage information?"> + <option value="separate">Separately</option> + <option value="combined">Combined</option> </param> - <when value="build"/> - <when value="custom"> - <param name="in_amp" type="data" format="yaml" - label="YAML file to query amplicons"/> + <when value="separate"> + <expand macro="vocdir_input"/> + <conditional name="amplicon_definitions"> + <param name="choice" type="select" label="Format of amplicon definitions"> + <option value="insert_scheme">Amplicon insert scheme (Cojac-native format)</option> + <option value="primer_scheme">Primer scheme (with autodetection of grouping into amplicons</option> + <option value="primer_scheme_plus">Primer scheme and explicit amplicon grouping information</option> + </param> + <when value="insert_scheme"> + <param name="insert_bed" type="data" format="bed" label="Amplicon insert scheme" help="BED dataset providing the positions of the amplicon inserts (i.e. excluding the primer sequences) on the reference sequence."/> + </when> + <when value="primer_scheme"> + <param name="primer_bed" type="data" format="bed" label="Primer scheme" help="The tool will attempt to autodetect the relationship between primers and amplicons based on the primer names."/> + </when> + <when value="primer_scheme_plus"> + <param name="primer_bed" type="data" format="bed" label="Primer scheme" /> + <param name="amplicon_info" type="data" format="tabular" label="Primers to amplicons assignments" help ="This input should have one line of tab-separated primer names (as they appear in the primer scheme) per amplicon."/> + </when> + </conditional> + <param argument="--cooc" type="integer" min="1" value="2" label="Minimum number of mutations required to co-occur on an amplicon"/> + <param name="output_cojac_ampl" type="boolean" checked="true" label="Produce combined per-amplicon lineage definition output" help="The tool can generate a YAML-formatted report of expected co-occurrences of mutations per amplicon and lineage. This output combines amplicon scheme and lineage definitions and can be used for rerunning the tool with identical configuration in 'Combined' mode. It is also a recommended input to the cojac pubmut tool so leave this option checked if you are intending to use this downstream tool."/> + </when> + <when value="combined"> + <param name="in_amp" type="data" format="yaml" label="Combined per-amplicon lineage definitions" + help="YAML-formatted report of expected co-occurrences of mutations per amplicon and lineage generated by a previous run of the tool."/> </when> </conditional> - <param name="output_files" type="select" display="checkboxes" - multiple="true" label="Output files"> - <option value="yaml" selected="true">YAML</option> - <option value="json">JSON</option> - <option value="tabular">tabular</option> - </param> + <section name="out_opts" title="Output options" expanded="true"> + <param name="output_formats" type="select" display="checkboxes" multiple="true" label="Produce output in these formats" + help="Please note that only yaml- and json-formatted results can be processed with the downstream pubmut and tabmut tools."> + <option value="yaml">YAML</option> + <option value="json" selected="true">JSON</option> + <option value="tabular">tabular</option> + </param> + </section> </inputs> <outputs> - <data name="cooc_yaml" format="yaml" - label="${tool.name} on ${on_string}: Mutation cooccurrence (yaml)" - from_work_dir="cooc.yaml"> - <filter>'yaml' in output_files</filter> + <data name="cooc_yaml" format="yaml" from_work_dir="cooc.yaml" label="${tool.name} on ${on_string}: Mutation co-occurrence (yaml)"> + <filter>'yaml' in out_opts['output_formats']</filter> </data> - <data name="cooc_json" format="json" - label="${tool.name} on ${on_string}: Mutation cooccurrence (json)" - from_work_dir="cooc.json"> - <filter>'json' in output_files</filter> + <data name="cooc_json" format="json" from_work_dir="cooc.json" label="${tool.name} on ${on_string}: Mutation co-occurrence (json)"> + <filter>'json' in out_opts['output_formats']</filter> </data> - <data name="cooc_tsv" format="tabular" - label="${tool.name} on ${on_string}: Mutation cooccurrence (tabular)" - from_work_dir="cooc.tsv"> - <filter>'tabular' in output_files</filter> + <data name="cooc_tsv" format="tabular" from_work_dir="cooc.tsv" label="${tool.name} on ${on_string}: Mutation co-occurrence (tabular)"> + <filter>'tabular' in out_opts['output_formats']</filter> </data> - <data name="amplicons" format="yaml" - label="${tool.name} on ${on_string}: Amplicons (yaml)" - from_work_dir="amplicons.yaml"> - <filter>amplicons_file['choice'] == 'build'</filter> + <data name="amplicons" format="yaml" from_work_dir="amplicons.yaml" label="${tool.name} on ${on_string}: Combined per-amplicon lineage definitions"> + <filter>spec_layout['mode'] == 'separate' and spec_layout['output_cojac_ampl']</filter> </data> </outputs> <tests> <!-- Test 1: build yaml for amplicons from bed and voc/ --> <test expect_num_outputs="4"> - <conditional name="vocdir_option"> - <param name="choice" value="custom"/> - <param name="voc_file" value="omicron_ba1_mutations.yaml"/> + <param name="mapped_input" value="tbam11.bam"/> + <conditional name="spec_layout"> + <conditional name="voc_source"> + <param name="choice" value="custom"/> + <param name="collection"> + <collection type="list"> + <element name="BA.1" ftype="yaml" value="omicron_ba1_mutations.yaml" /> + </collection> + </param> + </conditional> + <conditional name="amplicon_definitions"> + <param name="insert_bed" value="nCoV-2019.insert.V3.bed" ftype="bed"/> + </conditional> </conditional> - <param name="bam_file" value="tbam11.bam"/> - <param name="bed_file" value="nCoV-2019.insert.V3.bed"/> - <conditional name="amplicons_file"> - <param name="choice" value="build"/> - </conditional> - <param name="output_files" value="yaml,json,tabular"/> + <section name="out_opts"> + <param name="output_formats" value="yaml,json,tabular"/> + </section> <output name="cooc_yaml" ftype="yaml"> <assert_contents> <has_text text="76_om1"/> @@ -116,18 +170,75 @@ </assert_contents> </output> </test> - <!-- Test 2: supply yaml for amplicons and voc/ from cache --> + <!-- Test 2: configure via cojac yaml --> <test expect_num_outputs="2"> - <conditional name="vocdir_option"> - <param name="choice" value="cache"/> - </conditional> - <param name="bam_file" value="tbam11.bam"/> - <param name="bed_file" value="nCoV-2019.insert.V3.bed"/> - <conditional name="amplicons_file"> - <param name="choice" value="custom"/> + <param name="mapped_input" value="tbam11.bam"/> + <conditional name="spec_layout"> + <param name="mode" value="combined"/> <param name="in_amp" value="amplicons111.yaml"/> </conditional> - <param name="output_files" value="yaml,tabular"/> + <section name="out_opts"> + <param name="output_formats" value="yaml,tabular"/> + </section> + <output name="cooc_yaml" ftype="yaml"> + <assert_contents> + <has_text text="76_om1"/> + <has_text text="81_om1"/> + </assert_contents> + </output> + <output name="cooc_tsv" ftype="tabular"> + <assert_contents> + <has_text text="76_om1"/> + <has_text text="81_om1"/> + </assert_contents> + </output> + </test> + <!-- Test 3: use computed cojac format amplicon definitions from 2 files --> + <test expect_num_outputs="2"> + <param name="mapped_input" value="tbam11.bam"/> + <conditional name="spec_layout"> + <conditional name="voc_source"> + <param name="choice" value="builtin"/> + </conditional> + <conditional name="amplicon_definitions"> + <param name="choice" value="primer_scheme_plus"/> + <param name="primer_bed" value="primers.bed" ftype="bed"/> + <param name="amplicon_info" value="ampl_info.tsv"/> + </conditional> + <param name="output_cojac_ampl" value="false"/> + </conditional> + <section name="out_opts"> + <param name="output_formats" value="yaml,tabular"/> + </section> + <output name="cooc_yaml" ftype="yaml"> + <assert_contents> + <has_text text="76_om1"/> + <has_text text="81_om1"/> + </assert_contents> + </output> + <output name="cooc_tsv" ftype="tabular"> + <assert_contents> + <has_text text="76_om1"/> + <has_text text="81_om1"/> + </assert_contents> + </output> + </test> + <!-- Test 4: test primer scheme as input --> + <test expect_num_outputs="2"> + <param name="mapped_input" value="tbam11.bam"/> + <conditional name="spec_layout"> + <conditional name="voc_source"> + <param name="choice" value="builtin"/> + </conditional> + <conditional name="amplicon_definitions"> + <param name="choice" value="primer_scheme"/> + <param name="primer_bed" value="primers.bed" ftype="bed"/> + </conditional> + <param name="output_cojac_ampl" value="false"/> + </conditional> + <section name="out_opts"> + <param name="output_formats" value="yaml,tabular"/> + </section> <output name="cooc_yaml" ftype="yaml"> <assert_contents> <has_text text="76_om1"/> @@ -145,11 +256,11 @@ <help><![CDATA[ @HELP_HEADER@ -Information about **cooc-mutbamscan** method -============================================ +Information about **cojac cooc-mutbamscan** +=========================================== -The method scans an alignment BAM/CRAM/SAM file for mutation co-occurrences and output a JSON or YAML file. - +The tool scans an alignment BAM/CRAM/SAM file for mutation co-occurrences. +It can report its findings in json, yaml and/or tabular format. ]]></help> <expand macro="citations"/> </tool>
--- a/macros.xml Thu Aug 11 13:50:37 2022 +0000 +++ b/macros.xml Mon Jul 31 15:23:23 2023 +0000 @@ -1,6 +1,6 @@ <?xml version="1.0"?> <macros> - <token name="@TOOL_VERSION@">0.2</token> + <token name="@TOOL_VERSION@">0.9</token> <token name="@VERSION_SUFFIX@">0</token> <token name="@PROFILE@">21.01</token> <xml name="biotools"> @@ -18,34 +18,28 @@ <version_command>echo @TOOL_VERSION@</version_command> </xml> <xml name="vocdir_input"> - <conditional name="vocdir_option"> + <conditional name="voc_source"> <param name="choice" type="select" - label="Source of YAML files with definition of the variant of concerns" - help="Cojac ships with a directory with variant definitions yaml files (https://github.com/cbg-ethz/cojac/tree/master/voc), which the tool can access internally. You can also download the latest version of the yaml files from https://github.com/phe-genomics/variant_definitions and use it as a custom yamls defining the variant of concerns."> - <option value="cache">Definitions shipped with the tool (can be outdated)</option> - <option value="custom">From history</option> + label="Source of lineage definitions" + help="Cojac detects lineage evidence based on lineage mutation patterns deined in tool-specific yaml format. You can choose between the (possibly outdated) definitions shipped with the tool or definitions provided as a collection of yaml datasets in your history. See the tool help below for more details."> + <option value="builtin">Lineage definitions shipped with the tool</option> + <option value="custom">YAML dataset collection in history</option> </param> - <when value="cache"/> + <when value="builtin"/> <when value="custom"> - <param name="voc_file" type="data" format="yaml" multiple="true" - label="YAML defining the variant of concern"/> + <param name="collection" type="data_collection" collection_type="list" format="yaml" label="Collection of lineage definitions" /> </when> </conditional> </xml> <token name="@VOCDIR_COMMAND@"><![CDATA[ -#if $vocdir_option.choice == 'custom' - #set vocdir = 'voc/' - #set file_paths1 = [] +#if $voc_config.choice == 'custom' mkdir -p voc && - #for $input_file in $voc_file - #set $file_path = $vocdir + $input_file.element_identifier - ln -s '$input_file' '$file_path' && - $file_paths1.append($file_path) + #for $input_file in $voc_config.collection + ln -s '$input_file' 'voc/$input_file.element_identifier' && #end for #else - DB_PATH="\$(dirname "\$(dirname "\$(which cooc-mutbamscan)")")/share/cojac" && - ln -s "\$DB_PATH" db && - #set $vocdir = 'db/voc' + DB_PATH="\$(dirname "\$(dirname "\$(which cojac)")")/share/cojac/voc" && + ln -s "\$DB_PATH" voc && #end if ]]></token> <token name="@HELP_HEADER@"><![CDATA[ @@ -59,4 +53,4 @@ <citation type="doi">10.1101/2021.01.08.21249379</citation> </citations> </xml> -</macros> \ No newline at end of file +</macros>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/ampl_info.tsv Mon Jul 31 15:23:23 2023 +0000 @@ -0,0 +1,99 @@ +SARS-CoV-2_1_LEFT SARS-CoV-2_1_RIGHT +SARS-CoV-2_2_LEFT SARS-CoV-2_2_RIGHT +SARS-CoV-2_3_LEFT SARS-CoV-2_3_RIGHT +SARS-CoV-2_4_LEFT SARS-CoV-2_4_RIGHT +SARS-CoV-2_5_LEFT SARS-CoV-2_5_RIGHT +SARS-CoV-2_6_LEFT SARS-CoV-2_6_RIGHT +SARS-CoV-2_7_LEFT SARS-CoV-2_7_RIGHT +SARS-CoV-2_8_LEFT SARS-CoV-2_8_RIGHT +SARS-CoV-2_9_LEFT SARS-CoV-2_9_RIGHT +SARS-CoV-2_10_LEFT SARS-CoV-2_10_RIGHT +SARS-CoV-2_11_LEFT SARS-CoV-2_11_RIGHT +SARS-CoV-2_12_LEFT SARS-CoV-2_12_RIGHT +SARS-CoV-2_13_LEFT SARS-CoV-2_13_RIGHT +SARS-CoV-2_14_LEFT SARS-CoV-2_14_RIGHT +SARS-CoV-2_15_LEFT SARS-CoV-2_15_RIGHT +SARS-CoV-2_16_LEFT SARS-CoV-2_16_RIGHT +SARS-CoV-2_17_LEFT SARS-CoV-2_17_RIGHT +SARS-CoV-2_18_LEFT SARS-CoV-2_18_RIGHT +SARS-CoV-2_19_LEFT SARS-CoV-2_19_RIGHT +SARS-CoV-2_20_LEFT SARS-CoV-2_20_RIGHT +SARS-CoV-2_21_LEFT SARS-CoV-2_21_RIGHT +SARS-CoV-2_22_LEFT SARS-CoV-2_22_RIGHT +SARS-CoV-2_23_LEFT SARS-CoV-2_23_RIGHT +SARS-CoV-2_24_LEFT SARS-CoV-2_24_RIGHT +SARS-CoV-2_25_LEFT SARS-CoV-2_25_RIGHT +SARS-CoV-2_26_LEFT SARS-CoV-2_26_RIGHT +SARS-CoV-2_27_LEFT SARS-CoV-2_27_RIGHT +SARS-CoV-2_28_LEFT SARS-CoV-2_28_RIGHT +SARS-CoV-2_29_LEFT SARS-CoV-2_29_RIGHT +SARS-CoV-2_30_LEFT SARS-CoV-2_30_RIGHT +SARS-CoV-2_31_LEFT SARS-CoV-2_31_RIGHT +SARS-CoV-2_32_LEFT SARS-CoV-2_32_RIGHT +SARS-CoV-2_33_LEFT SARS-CoV-2_33_RIGHT +SARS-CoV-2_34_LEFT SARS-CoV-2_34_RIGHT +SARS-CoV-2_35_LEFT SARS-CoV-2_35_RIGHT +SARS-CoV-2_36_LEFT SARS-CoV-2_36_RIGHT +SARS-CoV-2_37_LEFT SARS-CoV-2_37_RIGHT +SARS-CoV-2_38_LEFT SARS-CoV-2_38_RIGHT +SARS-CoV-2_39_LEFT SARS-CoV-2_39_RIGHT +SARS-CoV-2_40_LEFT SARS-CoV-2_40_RIGHT +SARS-CoV-2_41_LEFT SARS-CoV-2_41_RIGHT +SARS-CoV-2_42_LEFT SARS-CoV-2_42_RIGHT +SARS-CoV-2_43_LEFT SARS-CoV-2_43_RIGHT +SARS-CoV-2_44_LEFT SARS-CoV-2_44_RIGHT +SARS-CoV-2_45_LEFT SARS-CoV-2_45_RIGHT +SARS-CoV-2_46_LEFT SARS-CoV-2_46_RIGHT +SARS-CoV-2_47_LEFT SARS-CoV-2_47_RIGHT +SARS-CoV-2_48_LEFT SARS-CoV-2_48_RIGHT +SARS-CoV-2_49_LEFT SARS-CoV-2_49_RIGHT +SARS-CoV-2_50_LEFT SARS-CoV-2_50_RIGHT +SARS-CoV-2_51_LEFT SARS-CoV-2_51_RIGHT +SARS-CoV-2_52_LEFT SARS-CoV-2_52_RIGHT +SARS-CoV-2_53_LEFT SARS-CoV-2_53_RIGHT +SARS-CoV-2_54_LEFT SARS-CoV-2_54_RIGHT +SARS-CoV-2_55_LEFT SARS-CoV-2_55_RIGHT +SARS-CoV-2_56_LEFT SARS-CoV-2_56_RIGHT +SARS-CoV-2_57_LEFT SARS-CoV-2_57_RIGHT +SARS-CoV-2_58_LEFT SARS-CoV-2_58_RIGHT +SARS-CoV-2_59_LEFT SARS-CoV-2_59_RIGHT +SARS-CoV-2_60_LEFT SARS-CoV-2_60_RIGHT +SARS-CoV-2_61_LEFT SARS-CoV-2_61_RIGHT +SARS-CoV-2_62_LEFT SARS-CoV-2_62_RIGHT +SARS-CoV-2_63_LEFT SARS-CoV-2_63_RIGHT +SARS-CoV-2_64_LEFT SARS-CoV-2_64_RIGHT +SARS-CoV-2_65_LEFT SARS-CoV-2_65_RIGHT +SARS-CoV-2_66_LEFT SARS-CoV-2_66_RIGHT +SARS-CoV-2_67_LEFT SARS-CoV-2_67_RIGHT +SARS-CoV-2_68_LEFT SARS-CoV-2_68_RIGHT +SARS-CoV-2_69_LEFT SARS-CoV-2_69_RIGHT +SARS-CoV-2_70_LEFT SARS-CoV-2_70_RIGHT +SARS-CoV-2_71_LEFT SARS-CoV-2_71_RIGHT +SARS-CoV-2_72_LEFT SARS-CoV-2_72_RIGHT +SARS-CoV-2_73_LEFT SARS-CoV-2_73_RIGHT +SARS-CoV-2_74_LEFT SARS-CoV-2_74_RIGHT +SARS-CoV-2_75_LEFT SARS-CoV-2_75_RIGHT +SARS-CoV-2_76_LEFT SARS-CoV-2_76_RIGHT +SARS-CoV-2_77_LEFT SARS-CoV-2_77_RIGHT +SARS-CoV-2_78_LEFT SARS-CoV-2_78_RIGHT +SARS-CoV-2_79_LEFT SARS-CoV-2_79_RIGHT +SARS-CoV-2_80_LEFT SARS-CoV-2_80_RIGHT +SARS-CoV-2_81_LEFT SARS-CoV-2_81_RIGHT +SARS-CoV-2_82_LEFT SARS-CoV-2_82_RIGHT +SARS-CoV-2_83_LEFT SARS-CoV-2_83_RIGHT +SARS-CoV-2_84_LEFT SARS-CoV-2_84_RIGHT +SARS-CoV-2_85_LEFT SARS-CoV-2_85_RIGHT +SARS-CoV-2_86_LEFT SARS-CoV-2_86_RIGHT +SARS-CoV-2_87_LEFT SARS-CoV-2_87_RIGHT +SARS-CoV-2_88_LEFT SARS-CoV-2_88_RIGHT +SARS-CoV-2_89_LEFT SARS-CoV-2_89_RIGHT +SARS-CoV-2_90_LEFT SARS-CoV-2_90_RIGHT +SARS-CoV-2_91_LEFT SARS-CoV-2_91_RIGHT +SARS-CoV-2_92_LEFT SARS-CoV-2_92_RIGHT +SARS-CoV-2_93_LEFT SARS-CoV-2_93_RIGHT +SARS-CoV-2_94_LEFT SARS-CoV-2_94_RIGHT +SARS-CoV-2_95_LEFT SARS-CoV-2_95_RIGHT +SARS-CoV-2_96_LEFT SARS-CoV-2_96_RIGHT +SARS-CoV-2_97_LEFT SARS-CoV-2_97_RIGHT +SARS-CoV-2_98_LEFT SARS-CoV-2_98_RIGHT +SARS-CoV-2_99_LEFT SARS-CoV-2_99_RIGHT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/bed_cojac.bed Mon Jul 31 15:23:23 2023 +0000 @@ -0,0 +1,99 @@ +MN908947.3 50 408 SARS-CoV-2_INSERT_1 1 + +MN908947.3 344 705 SARS-CoV-2_INSERT_2 2 + +MN908947.3 666 1017 SARS-CoV-2_INSERT_3 1 + +MN908947.3 966 1337 SARS-CoV-2_INSERT_4 2 + +MN908947.3 1266 1623 SARS-CoV-2_INSERT_5 1 + +MN908947.3 1562 1925 SARS-CoV-2_INSERT_6 2 + +MN908947.3 1875 2228 SARS-CoV-2_INSERT_7 1 + +MN908947.3 2180 2544 SARS-CoV-2_INSERT_8 2 + +MN908947.3 2508 2861 SARS-CoV-2_INSERT_9 1 + +MN908947.3 2850 3183 SARS-CoV-2_INSERT_10 2 + +MN908947.3 3102 3470 SARS-CoV-2_INSERT_11 1 + +MN908947.3 3412 3769 SARS-CoV-2_INSERT_12 2 + +MN908947.3 3705 4067 SARS-CoV-2_INSERT_13 1 + +MN908947.3 4018 4387 SARS-CoV-2_INSERT_14 2 + +MN908947.3 4339 4685 SARS-CoV-2_INSERT_15 1 + +MN908947.3 4648 4995 SARS-CoV-2_INSERT_16 2 + +MN908947.3 4953 5302 SARS-CoV-2_INSERT_17 1 + +MN908947.3 5259 5620 SARS-CoV-2_INSERT_18 2 + +MN908947.3 5584 5932 SARS-CoV-2_INSERT_19 1 + +MN908947.3 5894 6247 SARS-CoV-2_INSERT_20 2 + +MN908947.3 6210 6553 SARS-CoV-2_INSERT_21 1 + +MN908947.3 6507 6859 SARS-CoV-2_INSERT_22 2 + +MN908947.3 6776 7122 SARS-CoV-2_INSERT_23 1 + +MN908947.3 7084 7440 SARS-CoV-2_INSERT_24 2 + +MN908947.3 7403 7747 SARS-CoV-2_INSERT_25 1 + +MN908947.3 7695 8063 SARS-CoV-2_INSERT_26 2 + +MN908947.3 8019 8370 SARS-CoV-2_INSERT_27 1 + +MN908947.3 8326 8691 SARS-CoV-2_INSERT_28 2 + +MN908947.3 8619 8990 SARS-CoV-2_INSERT_29 1 + +MN908947.3 8944 9306 SARS-CoV-2_INSERT_30 2 + +MN908947.3 9192 9535 SARS-CoV-2_INSERT_31 1 + +MN908947.3 9497 9842 SARS-CoV-2_INSERT_32 2 + +MN908947.3 9805 10150 SARS-CoV-2_INSERT_33 1 + +MN908947.3 10099 10465 SARS-CoV-2_INSERT_34 2 + +MN908947.3 10419 10785 SARS-CoV-2_INSERT_35 1 + +MN908947.3 10742 11092 SARS-CoV-2_INSERT_36 2 + +MN908947.3 11023 11388 SARS-CoV-2_INSERT_37 1 + +MN908947.3 11330 11689 SARS-CoV-2_INSERT_38 2 + +MN908947.3 11651 12011 SARS-CoV-2_INSERT_39 1 + +MN908947.3 11963 12317 SARS-CoV-2_INSERT_40 2 + +MN908947.3 12255 12618 SARS-CoV-2_INSERT_41 1 + +MN908947.3 12546 12895 SARS-CoV-2_INSERT_42 2 + +MN908947.3 12856 13218 SARS-CoV-2_INSERT_43 1 + +MN908947.3 13148 13506 SARS-CoV-2_INSERT_44 2 + +MN908947.3 13485 13833 SARS-CoV-2_INSERT_45 1 + +MN908947.3 13775 14120 SARS-CoV-2_INSERT_46 2 + +MN908947.3 14075 14428 SARS-CoV-2_INSERT_47 1 + +MN908947.3 14362 14717 SARS-CoV-2_INSERT_48 2 + +MN908947.3 14674 15023 SARS-CoV-2_INSERT_49 1 + +MN908947.3 14983 15336 SARS-CoV-2_INSERT_50 2 + +MN908947.3 15237 15596 SARS-CoV-2_INSERT_51 1 + +MN908947.3 15557 15917 SARS-CoV-2_INSERT_52 2 + +MN908947.3 15881 16239 SARS-CoV-2_INSERT_53 1 + +MN908947.3 16137 16483 SARS-CoV-2_INSERT_54 2 + +MN908947.3 16408 16767 SARS-CoV-2_INSERT_55 1 + +MN908947.3 16714 17082 SARS-CoV-2_INSERT_56 2 + +MN908947.3 17013 17381 SARS-CoV-2_INSERT_57 1 + +MN908947.3 17345 17688 SARS-CoV-2_INSERT_58 2 + +MN908947.3 17642 17997 SARS-CoV-2_INSERT_59 1 + +MN908947.3 17939 18307 SARS-CoV-2_INSERT_60 2 + +MN908947.3 18267 18624 SARS-CoV-2_INSERT_61 1 + +MN908947.3 18578 18936 SARS-CoV-2_INSERT_62 2 + +MN908947.3 18891 19252 SARS-CoV-2_INSERT_63 1 + +MN908947.3 19208 19558 SARS-CoV-2_INSERT_64 2 + +MN908947.3 19513 19877 SARS-CoV-2_INSERT_65 1 + +MN908947.3 19836 20186 SARS-CoV-2_INSERT_66 2 + +MN908947.3 20117 20472 SARS-CoV-2_INSERT_67 1 + +MN908947.3 20405 20766 SARS-CoV-2_INSERT_68 2 + +MN908947.3 20699 21050 SARS-CoV-2_INSERT_69 1 + +MN908947.3 21013 21358 SARS-CoV-2_INSERT_70 2 + +MN908947.3 21316 21675 SARS-CoV-2_INSERT_71 1 + +MN908947.3 21561 21904 SARS-CoV-2_INSERT_72 2 + +MN908947.3 21889 22247 SARS-CoV-2_INSERT_73 1 + +MN908947.3 22113 22474 SARS-CoV-2_INSERT_74 2 + +MN908947.3 22428 22785 SARS-CoV-2_INSERT_75 1 + +MN908947.3 22677 23028 SARS-CoV-2_INSERT_76 2 + +MN908947.3 22974 23327 SARS-CoV-2_INSERT_77 1 + +MN908947.3 23246 23611 SARS-CoV-2_INSERT_78 2 + +MN908947.3 23575 23927 SARS-CoV-2_INSERT_79 1 + +MN908947.3 23876 24233 SARS-CoV-2_INSERT_80 2 + +MN908947.3 24194 24545 SARS-CoV-2_INSERT_81 1 + +MN908947.3 24448 24814 SARS-CoV-2_INSERT_82 2 + +MN908947.3 24772 25122 SARS-CoV-2_INSERT_83 1 + +MN908947.3 25076 25438 SARS-CoV-2_INSERT_84 2 + +MN908947.3 25353 25711 SARS-CoV-2_INSERT_85 1 + +MN908947.3 25672 26026 SARS-CoV-2_INSERT_86 2 + +MN908947.3 25979 26338 SARS-CoV-2_INSERT_87 1 + +MN908947.3 26277 26635 SARS-CoV-2_INSERT_88 2 + +MN908947.3 26587 26956 SARS-CoV-2_INSERT_89 1 + +MN908947.3 26895 27256 SARS-CoV-2_INSERT_90 2 + +MN908947.3 27177 27534 SARS-CoV-2_INSERT_91 1 + +MN908947.3 27473 27826 SARS-CoV-2_INSERT_92 2 + +MN908947.3 27726 28082 SARS-CoV-2_INSERT_93 1 + +MN908947.3 28021 28394 SARS-CoV-2_INSERT_94 2 + +MN908947.3 28214 28572 SARS-CoV-2_INSERT_95 1 + +MN908947.3 28536 28893 SARS-CoV-2_INSERT_96 2 + +MN908947.3 28849 29206 SARS-CoV-2_INSERT_97 1 + +MN908947.3 29161 29512 SARS-CoV-2_INSERT_98 2 + +MN908947.3 29475 29827 SARS-CoV-2_INSERT_99 1 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/primers.bed Mon Jul 31 15:23:23 2023 +0000 @@ -0,0 +1,198 @@ +MN908947.3 25 50 SARS-CoV-2_1_LEFT pool_1 + +MN908947.3 408 431 SARS-CoV-2_1_RIGHT pool_1 - +MN908947.3 324 344 SARS-CoV-2_2_LEFT pool_2 + +MN908947.3 705 727 SARS-CoV-2_2_RIGHT pool_2 - +MN908947.3 644 666 SARS-CoV-2_3_LEFT pool_1 + +MN908947.3 1017 1044 SARS-CoV-2_3_RIGHT pool_1 - +MN908947.3 944 966 SARS-CoV-2_4_LEFT pool_2 + +MN908947.3 1337 1362 SARS-CoV-2_4_RIGHT pool_2 - +MN908947.3 1245 1266 SARS-CoV-2_5_LEFT pool_1 + +MN908947.3 1623 1650 SARS-CoV-2_5_RIGHT pool_1 - +MN908947.3 1540 1562 SARS-CoV-2_6_LEFT pool_2 + +MN908947.3 1925 1948 SARS-CoV-2_6_RIGHT pool_2 - +MN908947.3 1851 1875 SARS-CoV-2_7_LEFT pool_1 + +MN908947.3 2228 2250 SARS-CoV-2_7_RIGHT pool_1 - +MN908947.3 2154 2180 SARS-CoV-2_8_LEFT pool_2 + +MN908947.3 2544 2571 SARS-CoV-2_8_RIGHT pool_2 - +MN908947.3 2483 2508 SARS-CoV-2_9_LEFT pool_1 + +MN908947.3 2861 2885 SARS-CoV-2_9_RIGHT pool_1 - +MN908947.3 2826 2850 SARS-CoV-2_10_LEFT pool_2 + +MN908947.3 3183 3210 SARS-CoV-2_10_RIGHT pool_2 - +MN908947.3 3078 3102 SARS-CoV-2_11_LEFT pool_1 + +MN908947.3 3470 3492 SARS-CoV-2_11_RIGHT pool_1 - +MN908947.3 3390 3412 SARS-CoV-2_12_LEFT pool_2 + +MN908947.3 3769 3794 SARS-CoV-2_12_RIGHT pool_2 - +MN908947.3 3683 3705 SARS-CoV-2_13_LEFT pool_1 + +MN908947.3 4067 4093 SARS-CoV-2_13_RIGHT pool_1 - +MN908947.3 3992 4018 SARS-CoV-2_14_LEFT pool_2 + +MN908947.3 4387 4409 SARS-CoV-2_14_RIGHT pool_2 - +MN908947.3 4312 4339 SARS-CoV-2_15_LEFT pool_1 + +MN908947.3 4685 4710 SARS-CoV-2_15_RIGHT pool_1 - +MN908947.3 4620 4648 SARS-CoV-2_16_LEFT pool_2 + +MN908947.3 4995 5017 SARS-CoV-2_16_RIGHT pool_2 - +MN908947.3 4923 4953 SARS-CoV-2_17_LEFT pool_1 + +MN908947.3 5302 5331 SARS-CoV-2_17_RIGHT pool_1 - +MN908947.3 5230 5259 SARS-CoV-2_18_LEFT pool_2 + +MN908947.3 5620 5643 SARS-CoV-2_18_RIGHT pool_2 - +MN908947.3 5561 5584 SARS-CoV-2_19_LEFT pool_1 + +MN908947.3 5932 5957 SARS-CoV-2_19_RIGHT pool_1 - +MN908947.3 5867 5894 SARS-CoV-2_20_LEFT pool_2 + +MN908947.3 6247 6272 SARS-CoV-2_20_RIGHT pool_2 - +MN908947.3 6184 6210 SARS-CoV-2_21_LEFT pool_1 + +MN908947.3 6553 6582 SARS-CoV-2_21_RIGHT pool_1 - +MN908947.3 6478 6507 SARS-CoV-2_22_LEFT pool_2 + +MN908947.3 6859 6885 SARS-CoV-2_22_RIGHT pool_2 - +MN908947.3 6747 6776 SARS-CoV-2_23_LEFT pool_1 + +MN908947.3 7122 7148 SARS-CoV-2_23_RIGHT pool_1 - +MN908947.3 7057 7084 SARS-CoV-2_24_LEFT pool_2 + +MN908947.3 7440 7467 SARS-CoV-2_24_RIGHT pool_2 - +MN908947.3 7381 7403 SARS-CoV-2_25_LEFT pool_1 + +MN908947.3 7747 7770 SARS-CoV-2_25_RIGHT pool_1 - +MN908947.3 7672 7695 SARS-CoV-2_26_LEFT pool_2 + +MN908947.3 8063 8092 SARS-CoV-2_26_RIGHT pool_2 - +MN908947.3 7997 8019 SARS-CoV-2_27_LEFT pool_1 + +MN908947.3 8370 8395 SARS-CoV-2_27_RIGHT pool_1 - +MN908947.3 8304 8326 SARS-CoV-2_28_LEFT pool_2 + +MN908947.3 8691 8714 SARS-CoV-2_28_RIGHT pool_2 - +MN908947.3 8596 8619 SARS-CoV-2_29_LEFT pool_1 + +MN908947.3 8990 9013 SARS-CoV-2_29_RIGHT pool_1 - +MN908947.3 8919 8944 SARS-CoV-2_30_LEFT pool_2 + +MN908947.3 9306 9329 SARS-CoV-2_30_RIGHT pool_2 - +MN908947.3 9168 9192 SARS-CoV-2_31_LEFT pool_1 + +MN908947.3 9535 9564 SARS-CoV-2_31_RIGHT pool_1 - +MN908947.3 9470 9497 SARS-CoV-2_32_LEFT pool_2 + +MN908947.3 9842 9866 SARS-CoV-2_32_RIGHT pool_2 - +MN908947.3 9782 9805 SARS-CoV-2_33_LEFT pool_1 + +MN908947.3 10150 10176 SARS-CoV-2_33_RIGHT pool_1 - +MN908947.3 10076 10099 SARS-CoV-2_34_LEFT pool_2 + +MN908947.3 10465 10491 SARS-CoV-2_34_RIGHT pool_2 - +MN908947.3 10393 10419 SARS-CoV-2_35_LEFT pool_1 + +MN908947.3 10785 10810 SARS-CoV-2_35_RIGHT pool_1 - +MN908947.3 10713 10742 SARS-CoV-2_36_LEFT pool_2 + +MN908947.3 11092 11116 SARS-CoV-2_36_RIGHT pool_2 - +MN908947.3 11000 11023 SARS-CoV-2_37_LEFT pool_1 + +MN908947.3 11388 11414 SARS-CoV-2_37_RIGHT pool_1 - +MN908947.3 11305 11330 SARS-CoV-2_38_LEFT pool_2 + +MN908947.3 11689 11720 SARS-CoV-2_38_RIGHT pool_2 - +MN908947.3 11624 11651 SARS-CoV-2_39_LEFT pool_1 + +MN908947.3 12011 12033 SARS-CoV-2_39_RIGHT pool_1 - +MN908947.3 11937 11963 SARS-CoV-2_40_LEFT pool_2 + +MN908947.3 12317 12339 SARS-CoV-2_40_RIGHT pool_2 - +MN908947.3 12234 12255 SARS-CoV-2_41_LEFT pool_1 + +MN908947.3 12618 12643 SARS-CoV-2_41_RIGHT pool_1 - +MN908947.3 12519 12546 SARS-CoV-2_42_LEFT pool_2 + +MN908947.3 12895 12920 SARS-CoV-2_42_RIGHT pool_2 - +MN908947.3 12831 12856 SARS-CoV-2_43_LEFT pool_1 + +MN908947.3 13218 13240 SARS-CoV-2_43_RIGHT pool_1 - +MN908947.3 13124 13148 SARS-CoV-2_44_LEFT pool_2 + +MN908947.3 13506 13528 SARS-CoV-2_44_RIGHT pool_2 - +MN908947.3 13463 13485 SARS-CoV-2_45_LEFT pool_1 + +MN908947.3 13833 13859 SARS-CoV-2_45_RIGHT pool_1 - +MN908947.3 13752 13775 SARS-CoV-2_46_LEFT pool_2 + +MN908947.3 14120 14144 SARS-CoV-2_46_RIGHT pool_2 - +MN908947.3 14045 14075 SARS-CoV-2_47_LEFT pool_1 + +MN908947.3 14428 14457 SARS-CoV-2_47_RIGHT pool_1 - +MN908947.3 14338 14362 SARS-CoV-2_48_LEFT pool_2 + +MN908947.3 14717 14743 SARS-CoV-2_48_RIGHT pool_2 - +MN908947.3 14647 14674 SARS-CoV-2_49_LEFT pool_1 + +MN908947.3 15023 15050 SARS-CoV-2_49_RIGHT pool_1 - +MN908947.3 14953 14983 SARS-CoV-2_50_LEFT pool_2 + +MN908947.3 15336 15358 SARS-CoV-2_50_RIGHT pool_2 - +MN908947.3 15214 15237 SARS-CoV-2_51_LEFT pool_1 + +MN908947.3 15596 15619 SARS-CoV-2_51_RIGHT pool_1 - +MN908947.3 15535 15557 SARS-CoV-2_52_LEFT pool_2 + +MN908947.3 15917 15941 SARS-CoV-2_52_RIGHT pool_2 - +MN908947.3 15855 15881 SARS-CoV-2_53_LEFT pool_1 + +MN908947.3 16239 16260 SARS-CoV-2_53_RIGHT pool_1 - +MN908947.3 16112 16137 SARS-CoV-2_54_LEFT pool_2 + +MN908947.3 16483 16508 SARS-CoV-2_54_RIGHT pool_2 - +MN908947.3 16386 16408 SARS-CoV-2_55_LEFT pool_1 + +MN908947.3 16767 16796 SARS-CoV-2_55_RIGHT pool_1 - +MN908947.3 16692 16714 SARS-CoV-2_56_LEFT pool_2 + +MN908947.3 17082 17105 SARS-CoV-2_56_RIGHT pool_2 - +MN908947.3 16986 17013 SARS-CoV-2_57_LEFT pool_1 + +MN908947.3 17381 17405 SARS-CoV-2_57_RIGHT pool_1 - +MN908947.3 17323 17345 SARS-CoV-2_58_LEFT pool_2 + +MN908947.3 17688 17711 SARS-CoV-2_58_RIGHT pool_2 - +MN908947.3 17615 17642 SARS-CoV-2_59_LEFT pool_1 + +MN908947.3 17997 18022 SARS-CoV-2_59_RIGHT pool_1 - +MN908947.3 17911 17939 SARS-CoV-2_60_LEFT pool_2 + +MN908947.3 18307 18328 SARS-CoV-2_60_RIGHT pool_2 - +MN908947.3 18244 18267 SARS-CoV-2_61_LEFT pool_1 + +MN908947.3 18624 18652 SARS-CoV-2_61_RIGHT pool_1 - +MN908947.3 18550 18578 SARS-CoV-2_62_LEFT pool_2 + +MN908947.3 18936 18961 SARS-CoV-2_62_RIGHT pool_2 - +MN908947.3 18869 18891 SARS-CoV-2_63_LEFT pool_1 + +MN908947.3 19252 19277 SARS-CoV-2_63_RIGHT pool_1 - +MN908947.3 19183 19208 SARS-CoV-2_64_LEFT pool_2 + +MN908947.3 19558 19586 SARS-CoV-2_64_RIGHT pool_2 - +MN908947.3 19485 19513 SARS-CoV-2_65_LEFT pool_1 + +MN908947.3 19877 19901 SARS-CoV-2_65_RIGHT pool_1 - +MN908947.3 19810 19836 SARS-CoV-2_66_LEFT pool_2 + +MN908947.3 20186 20216 SARS-CoV-2_66_RIGHT pool_2 - +MN908947.3 20090 20117 SARS-CoV-2_67_LEFT pool_1 + +MN908947.3 20472 20497 SARS-CoV-2_67_RIGHT pool_1 - +MN908947.3 20377 20405 SARS-CoV-2_68_LEFT pool_2 + +MN908947.3 20766 20792 SARS-CoV-2_68_RIGHT pool_2 - +MN908947.3 20677 20699 SARS-CoV-2_69_LEFT pool_1 + +MN908947.3 21050 21080 SARS-CoV-2_69_RIGHT pool_1 - +MN908947.3 20988 21013 SARS-CoV-2_70_LEFT pool_2 + +MN908947.3 21358 21387 SARS-CoV-2_70_RIGHT pool_2 - +MN908947.3 21294 21316 SARS-CoV-2_71_LEFT pool_1 + +MN908947.3 21675 21700 SARS-CoV-2_71_RIGHT pool_1 - +MN908947.3 21532 21561 SARS-CoV-2_72_LEFT pool_2 + +MN908947.3 21904 21933 SARS-CoV-2_72_RIGHT pool_2 - +MN908947.3 21865 21889 SARS-CoV-2_73_LEFT pool_1 + +MN908947.3 22247 22274 SARS-CoV-2_73_RIGHT pool_1 - +MN908947.3 22091 22113 SARS-CoV-2_74_LEFT pool_2 + +MN908947.3 22474 22503 SARS-CoV-2_74_RIGHT pool_2 - +MN908947.3 22402 22428 SARS-CoV-2_75_LEFT pool_1 + +MN908947.3 22785 22805 SARS-CoV-2_75_RIGHT pool_1 - +MN908947.3 22648 22677 SARS-CoV-2_76_LEFT pool_2 + +MN908947.3 23028 23057 SARS-CoV-2_76_RIGHT pool_2 - +MN908947.3 22944 22974 SARS-CoV-2_77_LEFT pool_1 + +MN908947.3 23327 23351 SARS-CoV-2_77_RIGHT pool_1 - +MN908947.3 23219 23246 SARS-CoV-2_78_LEFT pool_2 + +MN908947.3 23611 23635 SARS-CoV-2_78_RIGHT pool_2 - +MN908947.3 23553 23575 SARS-CoV-2_79_LEFT pool_1 + +MN908947.3 23927 23955 SARS-CoV-2_79_RIGHT pool_1 - +MN908947.3 23853 23876 SARS-CoV-2_80_LEFT pool_2 + +MN908947.3 24233 24258 SARS-CoV-2_80_RIGHT pool_2 - +MN908947.3 24171 24194 SARS-CoV-2_81_LEFT pool_1 + +MN908947.3 24545 24567 SARS-CoV-2_81_RIGHT pool_1 - +MN908947.3 24426 24448 SARS-CoV-2_82_LEFT pool_2 + +MN908947.3 24814 24836 SARS-CoV-2_82_RIGHT pool_2 - +MN908947.3 24750 24772 SARS-CoV-2_83_LEFT pool_1 + +MN908947.3 25122 25150 SARS-CoV-2_83_RIGHT pool_1 - +MN908947.3 25051 25076 SARS-CoV-2_84_LEFT pool_2 + +MN908947.3 25438 25461 SARS-CoV-2_84_RIGHT pool_2 - +MN908947.3 25331 25353 SARS-CoV-2_85_LEFT pool_1 + +MN908947.3 25711 25740 SARS-CoV-2_85_RIGHT pool_1 - +MN908947.3 25645 25672 SARS-CoV-2_86_LEFT pool_2 + +MN908947.3 26026 26050 SARS-CoV-2_86_RIGHT pool_2 - +MN908947.3 25951 25979 SARS-CoV-2_87_LEFT pool_1 + +MN908947.3 26338 26360 SARS-CoV-2_87_RIGHT pool_1 - +MN908947.3 26255 26277 SARS-CoV-2_88_LEFT pool_2 + +MN908947.3 26635 26661 SARS-CoV-2_88_RIGHT pool_2 - +MN908947.3 26564 26587 SARS-CoV-2_89_LEFT pool_1 + +MN908947.3 26956 26979 SARS-CoV-2_89_RIGHT pool_1 - +MN908947.3 26873 26895 SARS-CoV-2_90_LEFT pool_2 + +MN908947.3 27256 27283 SARS-CoV-2_90_RIGHT pool_2 - +MN908947.3 27152 27177 SARS-CoV-2_91_LEFT pool_1 + +MN908947.3 27534 27560 SARS-CoV-2_91_RIGHT pool_1 - +MN908947.3 27447 27473 SARS-CoV-2_92_LEFT pool_2 + +MN908947.3 27826 27855 SARS-CoV-2_92_RIGHT pool_2 - +MN908947.3 27700 27726 SARS-CoV-2_93_LEFT pool_1 + +MN908947.3 28082 28104 SARS-CoV-2_93_RIGHT pool_1 - +MN908947.3 27996 28021 SARS-CoV-2_94_LEFT pool_2 + +MN908947.3 28394 28416 SARS-CoV-2_94_RIGHT pool_2 - +MN908947.3 28190 28214 SARS-CoV-2_95_LEFT pool_1 + +MN908947.3 28572 28598 SARS-CoV-2_95_RIGHT pool_1 - +MN908947.3 28512 28536 SARS-CoV-2_96_LEFT pool_2 + +MN908947.3 28893 28914 SARS-CoV-2_96_RIGHT pool_2 - +MN908947.3 28827 28849 SARS-CoV-2_97_LEFT pool_1 + +MN908947.3 29206 29227 SARS-CoV-2_97_RIGHT pool_1 - +MN908947.3 29136 29161 SARS-CoV-2_98_LEFT pool_2 + +MN908947.3 29512 29534 SARS-CoV-2_98_RIGHT pool_2 - +MN908947.3 29452 29475 SARS-CoV-2_99_LEFT pool_1 + +MN908947.3 29827 29854 SARS-CoV-2_99_RIGHT pool_1 -