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	-