changeset 17:c8903f357804 draft

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/salmon commit 10ccc47885ce71e602d66e157bd475f1facbd042
author bgruening
date Mon, 05 Dec 2022 15:47:23 +0000
parents 49121db48873
children ebab418107f5
files macros.xml salmonquant.xml test-data/alevin_mat.mtx test-data/alevin_mat_01.mtx test-data/alevin_mat_02.mtx test-data/alevin_mat_indropV2.mtx test-data/full_data_structure.txt test-data/genome.fasta test-data/length_distribution.txt
diffstat 9 files changed, 1250 insertions(+), 109 deletions(-) [+]
line wrap: on
line diff
--- a/macros.xml	Thu Jul 22 14:05:28 2021 +0000
+++ b/macros.xml	Mon Dec 05 15:47:23 2022 +0000
@@ -1,16 +1,17 @@
 <macros>
-    <token name="@VERSION@">1.5.1</token>
-    <token name="@GALAXY_VERSION@">galaxy0</token>
+    <token name="@TOOL_VERSION@">1.9.0</token>
+    <token name="@VERSION_SUFFIX@">1</token>
     <token name="@IDX_VERSION@">q7</token>
     <token name="@PROFILE_VERSION@">20.01</token>
     <xml name="requirements">
         <requirements>
-            <requirement type="package" version="@VERSION@">salmon</requirement>
+            <requirement type="package" version="@TOOL_VERSION@">salmon</requirement>
             <requirement type="package" version="1.3">seqtk</requirement>
-            <requirement type="package" version="1.12">samtools</requirement>
+            <requirement type="package" version="1.16.1">samtools</requirement>
             <requirement type="package" version="0.2.0">vpolo</requirement>
-            <requirement type="package" version="1.3.0">pandas</requirement>
-            <requirement type="package" version="1.7.0">scipy</requirement>
+            <requirement type="package" version="1.5.2">pandas</requirement>
+            <requirement type="package" version="3.0.0">graphviz</requirement>
+            <requirement type="package" version="1.9.3">scipy</requirement>
         </requirements>
     </xml>
     <xml name="orient">
@@ -72,10 +73,14 @@
             </when>  <!-- build-in -->
             <when value="history">
                 <section name="s_index" title="Salmon index" expanded="true">
-                    <param name="fasta" type="data" format="fasta" label="Transcripts fasta file"/>
+                    <param name="fasta" type="data" format="fasta" label="Transcripts FASTA file"/>
+                    <param name="genome" type="data" format="fasta" optional="true" label="Reference genome" 
+                        help="The reference genome is required for generating a decoy-away index. The decoy sequences are regions of the target genome 
+                            that are sequence similar to annotated transcripts. These are the regions of the genome most likely to cause mismapping." />
                     <param name="kmer" type="integer" value="31" label="Kmer length"/>
                     <param name="phash" type="boolean" label="Perfect Hash" truevalue="--perfectHash" falsevalue="" checked="false"
-                        help="Build the index using a perfect hash rather than a dense hash.  This will require less memory (especially during quantification), but will take longer to construct"/>
+                        help="Build the index using a perfect hash rather than a dense hash.  This will require less memory (especially during quantification), 
+                            but will take longer to construct"/>
                 </section>
             </when>
         </conditional>
@@ -155,9 +160,20 @@
         <param name="dovetail" label="Allow Dovetail" type="boolean" truevalue="--allowDovetail" falsevalue="" checked="False" help="Allow dovetail mappings"/>
         <param name="recoverOrphans" label="Recover Orphans" type="boolean" truevalue="--recoverOrphans" falsevalue="" checked="False"
         help="Attempt to recover the mates of orphaned reads. This uses edlib for orphan recovery, and so introduces some computational overhead, but it can improve sensitivity."/>
-        <param name="writeMappings" type="boolean" truevalue="--writeMappings=./output/samout.sam" falsevalue="" checked="False"
-        label="Write Mappings to Bam File"
-        help="If this option is provided, then the quasi-mapping results will be written out in SAM-compatible format.  By default, output will be directed to stdout, but an alternative file name can be provided instead"/>
+        <conditional name="bam_options">
+            <param argument="--writeMappings" type="select" label="Write Mappings to BAM File" help="If this option is provided, then the quasi-mapping results will be written out in SAM-compatible format.  By default, output will be directed to stdout, but an alternative file name can be provided instead">
+                <option value="--writeMappings=./output/samout.sam">Enabled</option>
+                <option value="" selected="true">Disabled</option>
+            </param>
+            <when value="--writeMappings=./output/samout.sam">
+                <param argument="--writeQualities" type="boolean" truevalue="--writeQualities" falsevalue="" checked="false" label="Write qualities" help="If this flag is 
+                provided, then the output SAM file will contain quality strings as well as read sequences." />
+            </when>
+            <when value=""/>
+        </conditional>
+        <param name="writeMappings" type="boolean" truevalue="" falsevalue="" checked="False"
+            label="Write Mappings to Bam File"
+            help="If this option is provided, then the quasi-mapping results will be written out in SAM-compatible format.  By default, output will be directed to stdout, but an alternative file name can be provided instead"/>
         <param name="consistentHits" type="boolean" truevalue="--consistentHits" falsevalue="" checked="False"
         label="Consistent Hits"
         help="Force hits gathered during quasi-mapping to be 'consistent' (i.e. co-linear and approximately the right distance apart)."/>
@@ -315,10 +331,21 @@
         mkdir ./index &&
         mkdir ./output &&
         #if $quant_type.refTranscriptSource.TranscriptSource != "indexed":
+            #if $quant_type.refTranscriptSource.s_index.genome
+                cat '${quant_type.refTranscriptSource.s_index.genome}' | grep "^>" | cut -d " " -f 1 > 'decoys.txt' &&
+                sed -i.bak -e 's/>//g' 'decoys.txt' &&
+                cat '${quant_type.refTranscriptSource.s_index.fasta}' '${quant_type.refTranscriptSource.s_index.genome}' > 'input_index.fasta' &&
+            #else
+                ln -s '${quant_type.refTranscriptSource.s_index.fasta}' 'input_index.fasta' &&
+            #end if
             salmon index -i ./index
                 --kmerLen '${quant_type.refTranscriptSource.s_index.kmer}'
                 --gencode
-                --transcripts '${quant_type.refTranscriptSource.s_index.fasta}'
+                --threads "\${GALAXY_SLOTS:-4}"
+                --transcripts 'input_index.fasta'
+                #if $quant_type.refTranscriptSource.s_index.genome
+                    --decoy 'decoys.txt'
+                #end if
             &&
             #set $index_path = './index'
         #else
@@ -453,7 +480,10 @@
             #end if
             ${quant_type.dovetail}
             ${quant_type.recoverOrphans}
-            ${quant_type.writeMappings}
+            ${quant_type.bam_options.writeMappings}
+            #if $quant_type.bam_options.writeMappings:
+                ${quant_type.bam_options.writeQualities}
+            #end if
             ${quant_type.consistentHits}
             #if $quant_type.quasiCoverage:
                 --quasiCoverage '${quant_type.quasiCoverage}'
--- a/salmonquant.xml	Thu Jul 22 14:05:28 2021 +0000
+++ b/salmonquant.xml	Mon Dec 05 15:47:23 2022 +0000
@@ -1,4 +1,4 @@
-<tool id="salmon" name="Salmon quant" version="@VERSION@+@GALAXY_VERSION@" profile="@PROFILE_VERSION@">
+<tool id="salmon" name="Salmon quant" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE_VERSION@">
     <description>Perform dual-phase, reads or mapping-based estimation of transcript abundance from RNA-seq reads</description>
     <macros>
         <import>macros.xml</import>
@@ -12,7 +12,7 @@
             @salalign@
         #end if
         @salquant@
-        #if $quant_type.qtype == "reads" and $quant_type.writeMappings:
+        #if $quant_type.qtype == "reads" and $quant_type.bam_options.writeMappings:
             && @bam_sort@ ./output/samout.sam
         #end if
         #if $quant_type.qtype == "alignment" and $quant_type.sampleOut:
@@ -37,14 +37,14 @@
         <expand macro="quantboth"/>
     </inputs>
     <outputs>
-        <data name="output_quant" format="tabular" from_work_dir="output/quant.sf" label="${tool.name} on ${on_string} (Quantification)" />
-        <data name="output_gene_quant" format="tabular" from_work_dir="output/quant.genes.sf" label="${tool.name} on ${on_string} (Gene Quantification)">
+        <data name="output_quant" format="tabular" from_work_dir="output/quant.sf" label="${tool.name} on ${on_string}: transcript quantification" />
+        <data name="output_gene_quant" format="tabular" from_work_dir="output/quant.genes.sf" label="${tool.name} on ${on_string}: gene quantification">
             <filter>geneMap</filter>
         </data>
-        <data name="output_bam" format="bam" from_work_dir="output/bamout.bam" label="${tool.name} on ${on_string} (BAM format)">
-            <filter>quant_type['qtype'] == "reads" and quant_type['writeMappings']</filter>
+        <data name="output_bam" format="bam" from_work_dir="output/bamout.bam" label="${tool.name} on ${on_string}: BAM">
+            <filter>quant_type['qtype'] == "reads" and quant_type['bam_options']['writeMappings']</filter>
         </data>
-        <data name="postSample" format="bam" from_work_dir="output/bamout.bam" label="Sampled input alignments on ${on_string}(BAM format)">
+        <data name="postSample" format="bam" from_work_dir="output/bamout.bam" label="${tool.name} on ${on_string}: sampled input alignments">
             <filter>quant_type['qtype'] == "alignment" and quant_type['sampleOut']</filter>
         </data>
     </outputs>
@@ -68,7 +68,9 @@
                         </conditional>
                     </conditional>
                 </section>
-                <param name="writeMappings" value="true"/>
+                <conditional name="bam_options">
+                    <param name="writeMappings" value="--writeMappings=./output/samout.sam"/>
+                </conditional>
             </conditional>
             <output name="output_quant" ftype="tabular">
                 <assert_contents>
@@ -102,7 +104,9 @@
                     <param name="single_or_paired.input_mate1" value="fastqs/reads_1.fastq" />
                     <param name="single_or_paired.input_mate2" value="fastqs/reads_2.fastq" />
                 </section>
-                <param name="writeMappings" value="true"/>
+                <conditional name="bam_options">
+                    <param name="writeMappings" value="--writeMappings=./output/samout.sam"/>
+                </conditional>            
             </conditional>
             <output name="output_quant" ftype="tabular">
                 <assert_contents>
@@ -183,6 +187,7 @@
                 </assert_contents>
             </output>
         </test>
+        <!-- Test 05 -->
         <test expect_num_outputs="2">
             <conditional name="quant_type">
                 <param name="qtype" value="alignment"/>
@@ -315,6 +320,89 @@
                 </assert_contents>
             </output>
         </test>
+        <!-- Test 10 -->
+        <!-- Test writeQualities option-->
+        <test expect_num_outputs="2">
+            <conditional name="quant_type">
+                <param name="qtype" value="reads"/>
+                <conditional name="refTranscriptSource">
+                    <param name="TranscriptSource" value="history"/>
+                    <section name="s_index">
+                        <param name="fasta" value="transcripts.fasta"/>
+                    </section>
+                </conditional>
+                <section name="input">
+                    <param name="single_or_paired.single_or_paired_opts" value="paired" />
+                    <param name="single_or_paired.input_mate1" value="fastqs/reads_1.fastq" />
+                    <param name="single_or_paired.input_mate2" value="fastqs/reads_2.fastq" />
+                </section>
+                <conditional name="bam_options">
+                    <param name="writeMappings" value="--writeMappings=./output/samout.sam"/>
+                    <param name="writeQualities" value="true"/>
+                </conditional>            
+            </conditional>
+            <output name="output_quant" ftype="tabular">
+                <assert_contents>
+                    <has_text text="EffectiveLength" />
+                    <has_text text="TPM" />
+                    <has_text text="NM_001168316" />
+                    <has_text text="NM_174914" />
+                    <has_text text="NM_018953" />
+                    <has_text text="NR_003084" />
+                    <has_text text="NM_017410" />
+                    <has_text text="NM_153693" />
+                    <has_text text="NR_031764" />
+                    <has_n_columns n="5" />
+                </assert_contents>
+            </output>
+            <assert_command>
+                <has_text text="--libType A"/>
+            </assert_command>
+        </test>
+        <!-- Test genome input for decoy index -->
+        <test expect_num_outputs="2">
+            <conditional name="quant_type">
+                <param name="qtype" value="reads"/>
+                <conditional name="refTranscriptSource">
+                    <param name="TranscriptSource" value="history"/>
+                    <section name="s_index">
+                        <param name="fasta" value="transcripts.fasta"/>
+                        <param name="genome" value="genome.fasta"/>
+                    </section>
+                </conditional>
+                <section name="input">
+                    <conditional name="single_or_paired">
+                        <param name="single_or_paired_opts" value="paired" />
+                        <param name="input_mate1" value="fastqs/reads_1.fastq" />
+                        <param name="input_mate2" value="fastqs/reads_2.fastq" />
+                        <conditional name="libtype">
+                            <param name="strandedness" value="U"/>
+                        </conditional>
+                    </conditional>
+                </section>
+                <conditional name="bam_options">
+                    <param name="writeMappings" value="--writeMappings=./output/samout.sam"/>
+                </conditional>
+            </conditional>
+            <output name="output_quant" ftype="tabular">
+                <assert_contents>
+                    <has_text text="EffectiveLength" />
+                    <has_text text="TPM" />
+                    <has_text text="NM_001168316" />
+                    <has_text text="NM_174914" />
+                    <has_text text="NM_018953" />
+                    <has_text text="NR_003084" />
+                    <has_text text="NM_017410" />
+                    <has_text text="NM_153693" />
+                    <has_text text="NR_031764" />
+                    <has_n_columns n="5" />
+                </assert_contents>
+            </output>
+            <assert_command>
+                <has_text text="--libType IU"/>
+                <has_text text="--decoy"/>
+            </assert_command>
+        </test>
     </tests>
     <help><![CDATA[
         @salmonhelp@
--- a/test-data/alevin_mat.mtx	Thu Jul 22 14:05:28 2021 +0000
+++ b/test-data/alevin_mat.mtx	Mon Dec 05 15:47:23 2022 +0000
@@ -1,5 +1,5 @@
 %%MatrixMarket	matrix	coordinate	real	general
-95	61	99
+14	61	15
 1	9	1.000000
 2	28	1.000000
 3	38	1.000000
@@ -11,91 +11,7 @@
 9	28	1.000000
 10	30	1.000000
 11	53	1.000000
-12	4	1.000000
+12	3	0.500000
+12	4	0.500000
 13	28	1.000000
 14	56	1.000000
-15	9	1.000000
-16	43	0.500000
-16	45	0.500000
-17	42	0.500000
-17	44	0.500000
-18	28	1.000000
-19	46	1.000000
-20	38	1.000000
-21	40	1.000000
-22	19	1.000000
-23	9	1.000000
-24	56	1.000000
-25	8	1.000000
-26	28	1.000000
-27	53	1.000000
-28	56	1.000000
-29	28	1.000000
-30	30	1.000000
-31	38	1.000000
-32	28	1.000000
-33	30	1.000000
-34	34	1.000000
-35	30	1.000000
-36	28	1.000000
-37	34	1.000000
-38	16	1.000000
-39	19	1.000000
-40	47	1.000000
-41	38	1.000000
-42	28	1.000000
-43	56	1.000000
-44	28	1.000000
-45	9	1.000000
-46	19	1.000000
-47	23	1.000000
-48	43	0.500000
-48	45	0.500000
-49	38	1.000000
-50	57	1.000000
-51	40	1.000000
-52	38	1.000000
-53	19	1.000000
-54	16	1.000000
-55	15	1.000000
-56	56	1.000000
-57	53	1.000000
-58	30	1.000000
-59	9	1.000000
-60	34	1.000000
-61	30	1.000000
-62	24	1.000000
-63	30	1.000000
-64	56	1.000000
-65	9	1.000000
-66	23	1.000000
-67	61	1.000000
-68	38	1.000000
-69	21	1.000000
-70	38	1.000000
-71	38	1.000000
-72	16	1.000000
-73	30	1.000000
-74	16	1.000000
-75	30	1.000000
-76	40	1.000000
-77	52	1.000000
-78	53	1.000000
-79	42	0.500000
-79	44	0.500000
-80	34	1.000000
-81	9	1.000000
-82	15	1.000000
-83	45	1.000000
-84	47	1.000000
-85	40	1.000000
-86	56	1.000000
-87	56	1.000000
-88	34	1.000000
-89	56	1.000000
-90	38	1.000000
-91	53	1.000000
-92	56	1.000000
-93	53	1.000000
-94	38	1.000000
-95	53	1.000000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/alevin_mat_01.mtx	Mon Dec 05 15:47:23 2022 +0000
@@ -0,0 +1,105 @@
+%%MatrixMarket	matrix	coordinate	real	general
+96	61	103
+1	9	1.000000
+2	28	1.000000
+3	38	1.000000
+4	28	1.000000
+5	42	1.000000
+6	9	1.000000
+7	56	1.000000
+8	28	1.000000
+9	28	1.000000
+10	30	1.000000
+11	53	1.000000
+12	3	0.500000
+12	4	0.500000
+13	28	1.000000
+14	56	1.000000
+15	9	1.000000
+16	43	0.500000
+16	45	0.500000
+17	42	0.500000
+17	44	0.500000
+18	28	1.000000
+19	46	1.000000
+20	38	1.000000
+21	40	1.000000
+22	19	1.000000
+23	9	1.000000
+24	56	1.000000
+25	8	1.000000
+26	28	1.000000
+27	53	1.000000
+28	56	1.000000
+29	28	1.000000
+30	30	1.000000
+31	38	1.000000
+32	28	1.000000
+33	30	1.000000
+34	34	1.000000
+35	30	1.000000
+36	28	1.000000
+37	34	1.000000
+38	16	1.000000
+39	19	1.000000
+40	47	1.000000
+41	38	1.000000
+42	28	1.000000
+43	56	1.000000
+44	28	1.000000
+45	9	1.000000
+46	19	1.000000
+47	23	1.000000
+48	43	0.500000
+48	45	0.500000
+49	38	1.000000
+50	56	0.500000
+50	57	0.500000
+51	40	1.000000
+52	38	1.000000
+53	19	1.000000
+54	16	1.000000
+55	15	1.000000
+56	56	1.000000
+57	53	1.000000
+58	30	1.000000
+59	9	1.000000
+60	34	1.000000
+61	30	1.000000
+62	24	1.000000
+63	30	1.000000
+64	56	1.000000
+65	9	1.000000
+66	23	1.000000
+67	61	1.000000
+68	38	1.000000
+69	38	1.000000
+70	21	1.000000
+71	38	1.000000
+72	38	1.000000
+73	16	1.000000
+74	30	1.000000
+75	16	1.000000
+76	30	1.000000
+77	40	1.000000
+78	52	0.500000
+78	53	0.500000
+79	53	1.000000
+80	42	0.500000
+80	44	0.500000
+81	34	1.000000
+82	9	1.000000
+83	15	1.000000
+84	45	1.000000
+85	47	1.000000
+86	40	1.000000
+87	56	1.000000
+88	56	1.000000
+89	34	1.000000
+90	56	1.000000
+91	38	1.000000
+92	53	1.000000
+93	56	1.000000
+94	53	1.000000
+95	38	1.000000
+96	53	1.000000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/alevin_mat_02.mtx	Mon Dec 05 15:47:23 2022 +0000
@@ -0,0 +1,105 @@
+%%MatrixMarket	matrix	coordinate	real	general
+96	61	103
+1	9	1.000000
+2	28	1.000000
+3	38	1.000000
+4	28	1.000000
+5	42	1.000000
+6	9	1.000000
+7	56	1.000000
+8	28	1.000000
+9	28	1.000000
+10	30	1.000000
+11	53	1.000000
+12	3	0.500000
+12	4	0.500000
+13	28	1.000000
+14	56	1.000000
+15	9	1.000000
+16	43	0.500000
+16	45	0.500000
+17	42	0.500000
+17	44	0.500000
+18	28	1.000000
+19	46	1.000000
+20	38	1.000000
+21	40	1.000000
+22	19	1.000000
+23	9	1.000000
+24	56	1.000000
+25	8	1.000000
+26	28	1.000000
+27	53	1.000000
+28	56	1.000000
+29	28	1.000000
+30	30	1.000000
+31	38	1.000000
+32	28	1.000000
+33	30	1.000000
+34	34	1.000000
+35	30	1.000000
+36	28	1.000000
+37	34	1.000000
+38	16	1.000000
+39	19	1.000000
+40	47	1.000000
+41	38	1.000000
+42	28	1.000000
+43	56	1.000000
+44	28	1.000000
+45	9	1.000000
+46	19	1.000000
+47	23	1.000000
+48	43	0.500000
+48	45	0.500000
+49	38	1.000000
+50	56	0.500000
+50	57	0.500000
+51	40	1.000000
+52	38	1.000000
+53	19	1.000000
+54	16	1.000000
+55	15	1.000000
+56	56	1.000000
+57	53	1.000000
+58	30	1.000000
+59	9	1.000000
+60	34	1.000000
+61	30	1.000000
+62	24	1.000000
+63	30	1.000000
+64	56	1.000000
+65	9	1.000000
+66	23	1.000000
+67	61	1.000000
+68	38	1.000000
+69	38	1.000000
+70	21	1.000000
+71	38	1.000000
+72	38	1.000000
+73	16	1.000000
+74	30	1.000000
+75	16	1.000000
+76	30	1.000000
+77	40	1.000000
+78	52	0.500000
+78	53	0.500000
+79	53	1.000000
+80	42	0.500000
+80	44	0.500000
+81	34	1.000000
+82	9	1.000000
+83	15	1.000000
+84	45	1.000000
+85	47	1.000000
+86	40	1.000000
+87	56	1.000000
+88	56	1.000000
+89	34	1.000000
+90	56	1.000000
+91	38	1.000000
+92	53	1.000000
+93	56	1.000000
+94	53	1.000000
+95	38	1.000000
+96	53	1.000000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/alevin_mat_indropV2.mtx	Mon Dec 05 15:47:23 2022 +0000
@@ -0,0 +1,105 @@
+%%MatrixMarket	matrix	coordinate	real	general
+96	61	103
+1	9	1.000000
+2	28	1.000000
+3	38	1.000000
+4	28	1.000000
+5	42	1.000000
+6	9	1.000000
+7	56	1.000000
+8	28	1.000000
+9	28	1.000000
+10	30	1.000000
+11	53	1.000000
+12	3	0.500000
+12	4	0.500000
+13	28	1.000000
+14	56	1.000000
+15	16	1.000000
+16	9	1.000000
+17	43	0.500000
+17	45	0.500000
+18	28	1.000000
+19	42	0.500000
+19	44	0.500000
+20	40	1.000000
+21	46	1.000000
+22	38	1.000000
+23	19	1.000000
+24	9	1.000000
+25	56	1.000000
+26	8	1.000000
+27	9	1.000000
+28	28	1.000000
+29	53	1.000000
+30	56	1.000000
+31	28	1.000000
+32	30	1.000000
+33	34	1.000000
+34	38	1.000000
+35	28	1.000000
+36	30	1.000000
+37	30	1.000000
+38	28	1.000000
+39	34	1.000000
+40	19	1.000000
+41	47	1.000000
+42	38	1.000000
+43	28	1.000000
+44	19	1.000000
+45	56	1.000000
+46	28	1.000000
+47	23	1.000000
+48	43	0.500000
+48	45	0.500000
+49	38	1.000000
+50	56	0.500000
+50	57	0.500000
+51	40	1.000000
+52	38	1.000000
+53	19	1.000000
+54	16	1.000000
+55	15	1.000000
+56	56	1.000000
+57	23	1.000000
+58	30	1.000000
+59	53	1.000000
+60	30	1.000000
+61	9	1.000000
+62	34	1.000000
+63	24	1.000000
+64	30	1.000000
+65	56	1.000000
+66	9	1.000000
+67	61	1.000000
+68	21	1.000000
+69	38	1.000000
+70	38	1.000000
+71	16	1.000000
+72	38	1.000000
+73	38	1.000000
+74	30	1.000000
+75	53	1.000000
+76	16	1.000000
+77	30	1.000000
+78	40	1.000000
+79	52	0.500000
+79	53	0.500000
+80	42	0.500000
+80	44	0.500000
+81	34	1.000000
+82	9	1.000000
+83	15	1.000000
+84	45	1.000000
+85	47	1.000000
+86	40	1.000000
+87	56	1.000000
+88	34	1.000000
+89	56	1.000000
+90	56	1.000000
+91	38	1.000000
+92	53	1.000000
+93	56	1.000000
+94	53	1.000000
+95	38	1.000000
+96	53	1.000000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/full_data_structure.txt	Mon Dec 05 15:47:23 2022 +0000
@@ -0,0 +1,551 @@
+322
+218
+8
+ENST00000641515.2
+ENST00000335137.4
+ENST00000426406.3
+ENST00000420190.6
+ENST00000437963.5
+ENST00000342066.8
+ENST00000618181.4
+ENST00000622503.4
+ENST00000618323.4
+ENST00000616016.4
+ENST00000618779.4
+ENST00000616125.4
+ENST00000620200.4
+ENST00000617307.4
+ENST00000341065.8
+ENST00000455979.1
+ENST00000327044.7
+ENST00000338591.8
+ENST00000622660.1
+ENST00000466300.1
+ENST00000379410.7
+ENST00000379409.6
+ENST00000379407.7
+ENST00000491024.1
+ENST00000341290.6
+ENST00000433179.3
+ENST00000428771.6
+ENST00000304952.10
+ENST00000484667.2
+ENST00000624697.4
+ENST00000624652.1
+ENST00000649529.1
+ENST00000379370.7
+ENST00000620552.4
+ENST00000652369.1
+ENST00000651234.1
+ENST00000453464.3
+ENST00000379339.5
+ENST00000379325.7
+ENST00000421241.6
+ENST00000477196.5
+ENST00000467751.5
+ENST00000379320.5
+ENST00000379319.5
+ENST00000434641.5
+ENST00000462097.5
+ENST00000475119.5
+ENST00000442117.5
+ENST00000427787.5
+ENST00000480643.1
+ENST00000379290.5
+ENST00000379289.5
+ENST00000379288.3
+ENST00000486379.1
+ENST00000328596.10
+ENST00000379268.7
+ENST00000486728.5
+ENST00000379265.5
+ENST00000379236.4
+ENST00000360001.11
+ENST00000660930.1
+ENST00000465727.5
+ENST00000263741.12
+ENST00000655486.1
+ENST00000403997.2
+ENST00000379198.5
+ENST00000330388.2
+ENST00000450390.6
+ENST00000347370.6
+ENST00000349431.10
+ENST00000400929.6
+ENST00000464036.5
+ENST00000360466.6
+ENST00000400930.8
+ENST00000473215.5
+ENST00000435198.5
+ENST00000509720.5
+ENST00000466752.5
+ENST00000503294.5
+ENST00000477894.5
+ENST00000422076.5
+ENST00000502382.1
+ENST00000488418.2
+ENST00000379116.9
+ENST00000379101.8
+ENST00000338555.6
+ENST00000400928.7
+ENST00000470022.1
+ENST00000325425.12
+ENST00000379099.3
+ENST00000354700.10
+ENST00000353662.4
+ENST00000354980.7
+ENST00000379031.10
+ENST00000467712.1
+ENST00000540437.5
+ENST00000545578.5
+ENST00000620829.4
+ENST00000618806.4
+ENST00000435064.5
+ENST00000411962.5
+ENST00000421495.6
+ENST00000458452.7
+ENST00000419704.5
+ENST00000532772.5
+ENST00000450926.6
+ENST00000527098.5
+ENST00000528879.5
+ENST00000531377.5
+ENST00000527383.5
+ENST00000434694.6
+ENST00000526797.5
+ENST00000526332.5
+ENST00000430786.5
+ENST00000527719.5
+ENST00000530031.5
+ENST00000429572.5
+ENST00000534345.5
+ENST00000531019.5
+ENST00000498476.6
+ENST00000470679.3
+ENST00000525285.1
+ENST00000343938.9
+ENST00000488011.1
+ENST00000339381.6
+ENST00000378891.9
+ENST00000378888.10
+ENST00000610709.2
+ENST00000632445.1
+ENST00000631679.1
+ENST00000342753.8
+ENST00000309212.10
+ENST00000445648.5
+ENST00000477278.3
+ENST00000338370.7
+ENST00000338338.9
+ENST00000321751.9
+ENST00000378853.3
+ENST00000400809.8
+ENST00000482621.5
+ENST00000408952.8
+ENST00000481223.6
+ENST00000488340.5
+ENST00000408918.8
+ENST00000425598.2
+ENST00000497013.1
+ENST00000344843.12
+ENST00000492508.1
+ENST00000482352.1
+ENST00000520296.5
+ENST00000427211.3
+ENST00000537107.5
+ENST00000454272.2
+ENST00000442470.1
+ENST00000378821.3
+ENST00000495558.1
+ENST00000338660.5
+ENST00000476993.2
+ENST00000471398.1
+ENST00000378785.6
+ENST00000475091.2
+ENST00000308647.7
+ENST00000378756.7
+ENST00000378755.9
+ENST00000339113.8
+ENST00000536055.5
+ENST00000400830.3
+ENST00000378733.9
+ENST00000425828.1
+ENST00000624426.1
+ENST00000291386.4
+ENST00000359060.5
+ENST00000422725.4
+ENST00000520777.5
+ENST00000355826.9
+ENST00000518681.5
+ENST00000505820.6
+ENST00000489635.5
+ENST00000514363.1
+ENST00000487053.5
+ENST00000502470.5
+ENST00000378712.5
+ENST00000510793.5
+ENST00000504599.5
+ENST00000503789.5
+ENST00000378708.5
+ENST00000506488.5
+ENST00000514234.5
+ENST00000486072.1
+ENST00000483015.1
+ENST00000356026.9
+ENST00000472264.1
+ENST00000512731.5
+ENST00000378675.7
+ENST00000479814.5
+ENST00000435358.5
+ENST00000503792.1
+ENST00000490017.1
+ENST00000341832.10
+ENST00000407249.7
+ENST00000615951.4
+ENST00000340677.9
+ENST00000611150.3
+ENST00000629289.2
+ENST00000626918.2
+ENST00000629312.2
+ENST00000614300.4
+ENST00000617444.4
+ENST00000611123.1
+ENST00000404249.8
+ENST00000356200.7
+ENST00000378638.6
+ENST00000509982.5
+ENST00000460465.5
+ENST00000357760.6
+ENST00000358779.9
+ENST00000378633.5
+ENST00000479362.1
+ENST00000401096.2
+ENST00000355439.7
+ENST00000643905.1
+ENST00000341426.9
+ENST00000341991.7
+ENST00000378625.5
+ENST00000342348.9
+ENST00000498806.1
+ENST00000469045.5
+ENST00000489538.1
+ENST00000497186.5
+ENST00000610897.4
+ENST00000615252.4
+ENST00000378609.9
+ENST00000439272.6
+ENST00000434686.6
+ENST00000437146.1
+ENST00000378604.3
+ENST00000307786.8
+ENST00000378602.3
+ENST00000310991.8
+ENST00000378598.4
+ENST00000470931.2
+ENST00000416272.1
+ENST00000642590.1
+ENST00000493964.5
+ENST00000378590.4
+ENST00000638411.1
+ENST00000378585.7
+ENST00000639045.1
+ENST00000640067.1
+ENST00000638771.1
+ENST00000640949.1
+ENST00000640030.1
+ENST00000640981.1
+ENST00000638763.1
+ENST00000638804.1
+ENST00000378567.8
+ENST00000468310.5
+ENST00000503297.1
+ENST00000400921.6
+ENST00000495347.5
+ENST00000461106.6
+ENST00000461465.5
+ENST00000470596.5
+ENST00000496325.5
+ENST00000481140.5
+ENST00000482686.5
+ENST00000486681.5
+ENST00000470986.5
+ENST00000470511.5
+ENST00000471018.6
+ENST00000466352.5
+ENST00000497183.5
+ENST00000478770.6
+ENST00000400919.7
+ENST00000428120.5
+ENST00000414253.5
+ENST00000400918.7
+ENST00000378543.2
+ENST00000378546.9
+ENST00000440825.6
+ENST00000420515.1
+ENST00000378536.5
+ENST00000378531.8
+ENST00000378529.7
+ENST00000449373.2
+ENST00000378525.2
+ENST00000494279.2
+ENST00000378513.7
+ENST00000378518.5
+ENST00000605895.6
+ENST00000306256.13
+ENST00000378512.5
+ENST00000443438.5
+ENST00000488353.2
+ENST00000288774.7
+ENST00000650293.1
+ENST00000447513.6
+ENST00000507596.5
+ENST00000510434.1
+ENST00000508384.5
+ENST00000502666.1
+ENST00000514502.1
+ENST00000609981.5
+ENST00000449969.5
+ENST00000378486.8
+ENST00000419816.6
+ENST00000278878.6
+ENST00000378466.8
+ENST00000435556.8
+ENST00000505228.5
+ENST00000651094.1
+ENST00000502512.1
+ENST00000468002.2
+ENST00000486396.1
+ENST00000502770.2
+ENST00000378453.4
+ENST00000426449.5
+ENST00000434817.5
+ENST00000435221.6
+ENST00000451778.5
+ENST00000409119.5
+ENST00000355716.4
+GGATTACCATAGGATA
+CTCTGGTAGGAGTAGA
+GCTTGAAGTCGGATCC
+CTGCTGTGTTACGTCA
+TTAACTCAGCTAACAA
+CATTATCTCAACTCTT
+CTCGAGGGTCGCCATG
+CGAACATGTTACAGAA
+AAGGCAGCACCATCCT
+TCATTACGTCTCATCC
+GGTATTGTCTGACCTC
+GACGTTACAAGAAGAG
+TGTTCCGAGCGCTCCA
+CGCTATCTCTTAACCT
+GTATTCTGTAGTGAAT
+GTCGGGTGTGCAGTAG
+ATCATGGCAGCCAATT
+AGTTGGTTCGCGATCG
+AGAATAGTCCTATTCA
+TTGCGTCAGCTAAACA
+GAACGGAGTCGTCTTC
+CATGACAGTACCGAGA
+CACATAGTCATGTGGT
+TACTTACTCAAAGTAG
+GGGCATCGTAGCTTGT
+GACAGAGAGGGTGTGT
+AGCCTAATCATTCACT
+CATCGAATCTGCGGCA
+GCTTCCAAGAGCTGGT
+CATGACAGTAGCCTCG
+CAGCATAAGACTTGAA
+TTGTAGGCACCATCCT
+GACTACACAACGATGG
+CGAATGTGTACCATCA
+ATAGACCTCTCACATT
+AGTGGGATCTTAACCT
+TGGACGCGTAGAAGGA
+CCGTGGAAGTAGGCCA
+CTCACACTCGCCTGTT
+AGTAGTCGTAACGACG
+GTCTCGTGTGATGTGG
+GTAACTGGTTCACGGC
+CTTAGGAGTCTCCATC
+GGTGAAGCAATGACCT
+ACGATACAGCCCAGCT
+TGTTCCGCAGCATGAG
+TTAGGCAAGCCGCCTA
+TGACTTTTCGCTAGCG
+GGACATTCACTCTGTC
+GATCGTATCGCACTCT
+TACACGAGTGCACTTA
+GTACTCCCAACTTGAC
+GCGACCACAGTCGATT
+CTGTTTAGTCCGTCAG
+CCGGGATCATGAGCGA
+ACTGAACTCTTTAGTC
+AACCATGAGAGTACCG
+TAGAGCTCACGAGAGT
+ACGCAGCCATAAAGGT
+CTCGAGGCATGCCTTC
+AGCGTATAGATACACA
+ACGCCAGAGGGTATCG
+TGATTTCAGTGGGCTA
+TTCTCAAAGTACGTAA
+TCATTTGTCCATGAGT
+AGAATAGCAGTGGGAT
+AAAGTAGAGTCAAGGC
+TACTTGTAGGGAACGG
+TACCTATCAGATGGGT
+CTGAAGTTCCACGTGG
+ACCAGTATCTCATTCA
+AAACGGGAGCGGCTTC
+AAACCTGCAGGCGATA
+CACAGGCGTGATGTCT
+CACAAACGTGCTTCTC
+TGACTAGAGTACGCGA
+CGACCTTAGGAGCGTT
+ATAGACCTCTCGATGA
+AACCGCGAGACACTAA
+TCGAGGCGTCTACCTC
+TACGGATAGATGTTAG
+CAGTCCTCACGAAGCA
+GTGCTTCAGGCTAGAC
+GCGCCAAGTCATGCAT
+CCACGGAGTAATAGCA
+CAAGTTGAGATCCTGT
+ATCCGAAGTAACGCGA
+AATCCAGAGCCAACAG
+TTCGGTCCATTGTGCA
+TCTCTAACAACACCCG
+TCATTACCACAGAGGT
+GCATGTAAGTACGTAA
+ACGGGCTAGTTCGATC
+GTCCTCATCACAATGC
+GGCCGATAGGTACTCT
+GACGTTAAGGGAAACA
+CGAATGTCATACAGCT
+CATGGCGAGCTGAAAT
+CACACCTAGTGAACGC
+TTTATGCAGGCCCTTG
+GTACTTTCACGTCAGC
+GGATGTTTCAGTCAGT
+GAAATGAGTAGCGTAG
+CATGCCTCAGACAAAT
+AGCATACTCTTGCAAG
+AAAGCAATCTGCCCTA
+GTCGGGTTCACGGTTA
+GGTGCGTGTCAGGACA
+CTGTGCTGTAAACCTC
+CGATGTAAGTTCGCGC
+ATGGGAGCAGCTCGCA
+GCTCTGTAGTTTCCTT
+CACAGGCCACGAAAGC
+GTGCTTCGTTGTCTTT
+GTGCTTCAGGCTCTTA
+GAAATGAAGACAGACC
+CTCGGAGGTCGACTGC
+CAACCAACACAGACAG
+TTCTCAAAGCTCCTCT
+GTACTTTAGTCCTCCT
+TGTGGTAGTTACGACT
+TAGAGCTGTGGACGAT
+GTCTTCGGTTTCCACC
+GGTGCGTTCAAACCGT
+GGACATTCATTGCGGC
+GCTGCGACATAACCTG
+TCTCATAAGTTAGCGG
+TAGTGGTAGAAGGTGA
+GCGAGAACAAGTTGTC
+GACTACAGTTGTACAC
+CCTAGCTGTCGCGTGT
+ATTACTCGTACTCAAC
+AGCAGCCAGATGTCGG
+AGATCTGTCTGCGTAA
+ACGCCAGTCAAGCCTA
+AAGGCAGGTAGTGAAT
+TTAACTCGTCTGATTG
+TGACGGCCATGCTGGC
+GGAAAGCTCGAATGCT
+CTCGTACCATTAACCG
+CATGGCGTCCATGAGT
+CAGCATACAAGTTAAG
+CACCTTGGTGGTCCGT
+ACTGAGTCATCCCATC
+AAGCCGCCAATCTGCA
+TTAGGCACAACGATGG
+GTACGTACACACGCTG
+CTGTGCTTCCGCGGTA
+ACCAGTAAGGGCTCTC
+AACTTTCTCATCGGAT
+AACACGTCACCTGGTG
+TCAATCTCATGCCACG
+GTCATTTAGGCAGTCA
+GTCACAAGTATTCGTG
+GGAGCAATCGCTTGTC
+GATGAGGTCCATTCTA
+GATGAAAGTGATGTCT
+GATCAGTAGGGTTTCT
+GAAACTCAGTACTTGC
+CTACATTGTCACTGGC
+CGATTGACATACGCCG
+AGTTGGTGTACCGGCT
+TTAGGACTCGTGACAT
+GTGCATAGTAACGACG
+GTACGTAGTAAGTTCC
+GTAACGTTCCACGTGG
+GGACAAGTCTCAAGTG
+GGAAAGCAGGAGTAGA
+CTCCTAGAGCAGACTG
+AGCGTCGGTGTTCGAT
+TTTGTCACAGGTCCAC
+GTCACGGGTAAGTTCC
+GTATCTTTCATCATTC
+GACGTGCGTAGCAAAT
+GAACATCGTATAAACG
+CTGTTTATCAGTCAGT
+CTCGGGACACATCCAA
+CTAACTTTCAGCTTAG
+CGATCGGAGGTGGGTT
+CGACCTTCATTGGGCC
+AATCCAGCAGCCTGTG
+TTAGTTCCATGTAAGA
+TGGCTGGCAATTGCTG
+GTATTCTGTAGGCTGA
+GTAGTCATCCAGTATG
+GGGATGAAGAGGGATA
+GCTTCCAAGGAATCGC
+CTTTGCGCACAGGAGT
+CCGGGATTCTTGTCAT
+CCATTCGGTAGCCTAT
+CAGCCGACAGATTGCT
+CACAAACTCTTAACCT
+CAACTAGTCCTCTAGC
+ATCGAGTGTACAGCAG
+TTATGCTAGAGATGAG
+TGGCGCAGTCTCGTTC
+TCAGCTCTCTGCTTGC
+GTTACAGAGTTATCGC
+GTAGTCATCAGCTCTC
+GGGAGATGTGCTTCTC
+GCGCCAAGTACGAAAT
+CTGCGGAAGTACGCGA
+CCATTCGAGCTAACTC
+ATCTACTTCTGAGTGT
+AACTCAGGTTTGACAC
+AACCGCGGTAAGTGTA
+TGCCCTATCCACTCCA
+TCATTTGAGCAAATCA
+GTGAAGGAGCCAGAAC
+CTCTGGTGTTAAGGGC
+CCTTCGACACTATCTT
+CATCCACAGGCTATCT
+CACCACTTCATCGGAT
+ATCATCTCATCCAACA
+AGGTCATTCCGCGGTA
+AGACGTTAGACCACGA
+AACGTTGCAGTTAACC
+AAAGCAAAGTGTCCAT
+8	198	199	200	201	202	203	204	205	1	1	32	1	TACGGGCTGC	1
+1	170	1	1	21	1	GAACATTTGT	1
+3	29	30	31	2	2	34	1	CGGCGTCCGG	1	1	1	AGCGGCTGGT	1
+11	5	6	7	8	9	10	11	12	13	14	16	1	1	93	1	TTGACACCAT	1
+1	146	1	1	46	1	AACACAGATA	1
+4	287	289	291	293	2	2	140	1	CCGTACGGGG	1	35	1	GGATTCAGTA	1
+3	273	274	275	1	1	86	1	CCGACTCGTT	1
+4	134	135	136	137	5	5	30	1	ACGAATGTTT	1	95	1	ACAGAGCTAA	1	45	1	AGTTTACACT	1	3	1	ACCTATGTTC	1	41	1	GACTATGGAT	1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/genome.fasta	Mon Dec 05 15:47:23 2022 +0000
@@ -0,0 +1,239 @@
+>chrM
+GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGG
+GTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTC
+CTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACTTACTAAAGTGTGTTA
+ATTAATTAATGCTTGTAGGACATAATAATAACAATTGAATGTCTGCACAGCCACTTTCCACACAGACATC
+ATAACAAAAAATTTCCACCAAACCCCCCCTCCCCCGCTTCTGGCCACAGCACTTAAACACATCTCTGCCA
+AACCCCAAAAACAAAGAACCCTAACACCAGCCTAACCAGATTTCAAATTTTATCTTTTGGCGGTATGCAC
+TTTTAACAGTCACCCCCCAACTAACACATTATTTTCCCCTCCCACTCCCATACTACTAATCTCATCAATA
+CAACCCCCGCCCATCCTACCCAGCACACACACACCGCTGCTAACCCCATACCCCGAACCAACCAAACCCC
+AAAGACACCCCCCACAGTTTATGTAGCTTACCTCCTCAAAGCAATACACTGAAAATGTTTAGACGGGCTC
+ACATCACCCCATAAACAAATAGGTTTGGTCCTAGCCTTTCTATTAGCTCTTAGTAAGATTACACATGCAA
+GCATCCCCGTTCCAGTGAGTTCACCCTCTAAATCACCACGATCAAAAGGAACAAGCATCAAGCACGCAGC
+AATGCAGCTCAAAACGCTTAGCCTAGCCACACCCCCACGGGAAACAGCAGTGATTAACCTTTAGCAATAA
+ACGAAAGTTTAACTAAGCTATACTAACCCCAGGGTTGGTCAATTTCGTGCCAGCCACCGCGGTCACACGA
+TTAACCCAAGTCAATAGAAGCCGGCGTAAAGAGTGTTTTAGATCACCCCCTCCCCAATAAAGCTAAAACT
+CACCTGAGTTGTAAAAAACTCCAGTTGACACAAAATAGACTACGAAAGTGGCTTTAACATATCTGAACAC
+ACAATAGCTAAGACCCAAACTGGGATTAGATACCCCACTATGCTTAGCCCTAAACCTCAACAGTTAAATC
+AACAAAACTGCTCGCCAGAACACTACGAGCCACAGCTTAAAACTCAAAGGACCTGGCGGTGCTTCATATC
+CCTCTAGAGGAGCCTGTTCTGTAATCGATAAACCCCGATCAACCTCACCACCTCTTGCTCAGCCTATATA
+CCGCCATCTTCAGCAAACCCTGATGAAGGCTACAAAGTAAGCGCAAGTACCCACGTAAAGACGTTAGGTC
+AAGGTGTAGCCCATGAGGTGGCAAGAAATGGGCTACATTTTCTACCCCAGAAAACTACGATAGCCCTTAT
+GAAACTTAAGGGTCGAAGGTGGATTTAGCAGTAAACTAAGAGTAGAGTGCTTAGTTGAACAGGGCCCTGA
+AGCGCGTACACACCGCCCGTCACCCTCCTCAAGTATACTTCAAAGGACATTTAACTAAAACCCCTACGCA
+TTTATATAGAGGAGACAAGTCGTAACATGGTAAGTGTACTGGAAAGTGCACTTGGACGAACCAGAGTGTA
+GCTTAACACAAAGCACCCAACTTACACTTAGGAGATTTCAACTTAACTTGACCGCTCTGAGCTAAACCTA
+GCCCCAAACCCACTCCACCTTACTACCAGACAACCTTAGCCAAACCATTTACCCAAATAAAGTATAGGCG
+ATAGAAATTGAAACCTGGCGCAATAGATATAGTACCGCAAGGGAAAGATGAAAAATTATAACCAAGCATA
+ATATAGCAAGGACTAACCCCTATACCTTCTGCATAATGAATTAACTAGAAATAACTTTGCAAGGAGAGCC
+AAAGCTAAGACCCCCGAAACCAGACGAGCTACCTAAGAACAGCTAAAAGAGCACACCCGTCTATGTAGCA
+AAATAGTGGGAAGATTTATAGGTAGAGGCGACAAACCTACCGAGCCTGGTGATAGCTGGTTGTCCAAGAT
+AGAATCTTAGTTCAACTTTAAATTTGCCCACAGAACCCTCTAAATCCCCTTGTAAATTTAACTGTTAGTC
+CAAAGAGGAACAGCTCTTTGGACACTAGGAAAAAACCTTGTAGAGAGAGTAAAAAATTTAACACCCATAG
+TAGGCCTAAAAGCAGCCACCAATTAAGAAAGCGTTCAAGCTCAACACCCACTACCTAAAAAATCCCAAAC
+ATATAACTGAACTCCTCACACCCAATTGGACCAATCTATCACCCTATAGAAGAACTAATGTTAGTATAAG
+TAACATGAAAACATTCTCCTCCGCATAAGCCTGCGTCAGATTAAAACACTGAACTGACAATTAACAGCCC
+AATATCTACAATCAACCAACAAGTCATTATTACCCTCACTGTCAACCCAACACAGGCATGCTCATAAGGA
+AAGGTTAAAAAAAGTAAAAGGAACTCGGCAAATCTTACCCCGCCTGTTTACCAAAAACATCACCTCTAGC
+ATCACCAGTATTAGAGGCACCGCCTGCCCAGTGACACATGTTTAACGGCCGCGGTACCCTAACCGTGCAA
+AGGTAGCATAATCACTTGTTCCTTAAATAGGGACCTGTATGAATGGCTCCACGAGGGTTCAGCTGTCTCT
+TACTTTTAACCAGTGAAATTGACCTGCCCGTGAAGAGGCGGGCATAACACAGCAAGACGAGAAGACCCTA
+TGGAGCTTTAATTTATTAATGCAAACAGTACCTAACAAACCCACAGGTCCTAAACTACCAAACCTGCATT
+AAAAATTTCGGTTGGGGCGACCTCGGAGCAGAACCCAACCTCCGAGCAGTACATGCTAAGACTTCACCAG
+TCAAAGCGAACTACTATACTCAATTGATCCAATAACTTGACCAACGGAACAAGTTACCCTAGGGATAACA
+GCGCAATCCTATTCTAGAGTCCATATCAACAATAGGGTTTACGACCTCGATGTTGGATCAGGACATCCCG
+ATGGTGCAGCCGCTATTAAAGGTTCGTTTGTTCAACGATTAAAGTCCTACGTGATCTGAGTTCAGACCGG
+AGTAATCCAGGTCGGTTTCTATCTACNTTCAAATTCCTCCCTGTACGAAAGGACAAGAGAAATAAGGCCT
+ACTTCACAAAGCGCCTTCCCCCGTAAATGATATCATCTCAACTTAGTATTATACCCACACCCACCCAAGA
+ACAGGGTTTGTTAAGATGGCAGAGCCCGGTAATCGCATAAAACTTAAAACTTTACAGTCAGAGGTTCAAT
+TCCTCTTCTTAACAACATACCCATGGCCAACCTCCTACTCCTCATTGTACCCATTCTAATCGCAATGGCA
+TTCCTAATGCTTACCGAACGAAAAATTCTAGGCTATATACAACTACGCAAAGGCCCCAACGTTGTAGGCC
+CCTACGGGCTACTACAACCCTTCGCTGACGCCATAAAACTCTTCACCAAAGAGCCCCTAAAACCCGCCAC
+ATCTACCATCACCCTCTACATCACCGCCCCGACCTTAGCTCTCACCATCGCTCTTCTACTATGAACCCCC
+CTCCCCATACCCAACCCCCTGGTCAACCTCAACCTAGGCCTCCTATTTATTCTAGCCACCTCTAGCCTAG
+CCGTTTACTCAATCCTCTGATCAGGGTGAGCATCAAACTCAAACTACGCCCTGATCGGCGCACTGCGAGC
+AGTAGCCCAAACAATCTCATATGAAGTCACCCTAGCCATCATTCTACTATCAACATTACTAATAAGTGGC
+TCCTTTAACCTCTCCACCCTTATCACAACACAAGAACACCTCTGATTACTCCTGCCATCATGACCCTTGG
+CCATAATATGATTTATCTCCACACTAGCAGAGACCAACCGAACCCCCTTCGACCTTGCCGAAGGGGAGTC
+CGAACTAGTCTCAGGCTTCAACATCGAATACGCCGCAGGCCCCTTCGCCCTATTCTTCATAGCCGAATAC
+ACAAACATTATTATAATAAACACCCTCACCACTACAATCTTCCTAGGAACAACATATGACGCACTCTCCC
+CTGAACTCTACACAACATATTTTGTCACCAAGACCCTACTTCTAACCTCCCTGTTCTTATGAATTCGAAC
+AGCATACCCCCGATTCCGCTACGACCAACTCATACACCTCCTATGAAAAAACTTCCTACCACTCACCCTA
+GCATTACTTATATGATATGTCTCCATACCCATTACAATCTCCAGCATTCCCCCTCAAACCTAAGAAATAT
+GTCTGATAAAAGAGTTACTTTGATAGAGTAAATAATAGGAGCTTAAACCCCCTTATTTCTAGGACTATGA
+GAATCGAACCCATCCCTGAGAATCCAAAATTCTCCGTGCCACCTATCACACCCCATCCTAAAGTAAGGTC
+AGCTAAATAAGCTATCGGGCCCATACCCCGAAAATGTTGGTTATACCCTTCCCGTACTAATTAATCCCCT
+GGCCCAACCCGTCATCTACTCTACCATCTTTGCAGGCACACTCATCACAGCGCTAAGCTCGCACTGATTT
+TTTACCTGAGTAGGCCTAGAAATAAACATGCTAGCTTTTATTCCAGTTCTAACCAAAAAAATAAACCCTC
+GTTCCACAGAAGCTGCCATCAAGTATTTCCTCACGCAAGCAACCGCATCCATAATCCTTCTAATAGCTAT
+CCTCTTCAACAATATACTCTCCGGACAATGAACCATAACCAATACTACCAATCAATACTCATCATTAATA
+ATCATAATAGCTATAGCAATAAAACTAGGAATAGCCCCCTTTCACTTCTGAGTCCCAGAGGTTACCCAAG
+GCACCCCTCTGACATCCGGCCTGCTTCTTCTCACATGACAAAAACTAGCCCCCATCTCAATCATATACCA
+AATCTCTCCCTCACTAAACGTAAGCCTTCTCCTCACTCTCTCAATCTTATCCATCATAGCAGGCAGTTGA
+GGTGGATTAAACCAAACCCAGCTACGCAAAATCTTAGCATACTCCTCAATTACCCACATAGGATGAATAA
+TAGCAGTTCTACCGTACAACCCTAACATAACCATTCTTAATTTAACTATTTATATTATCCTAACTACTAC
+CGCATTCCTACTACTCAACTTAAACTCCAGCACCACGACCCTACTACTATCTCGCACCTGAAACAAGCTA
+ACATGACTAACACCCTTAATTCCATCCACCCTCCTCTCCCTAGGAGGCCTGCCCCCGCTAACCGGCTTTT
+TGCCCAAATGGGCCATTATCGAAGAATTCACAAAAAACAATAGCCTCATCATCCCCACCATCATAGCCAC
+CATCACCCTCCTTAACCTCTACTTCTACCTACGCCTAATCTACTCCACCTCAATCACACTACTCCCCATA
+TCTAACAACGTAAAAATAAAATGACAGTTTGAACATACAAAACCCACCCCATTCCTCCCCACACTCATCG
+CCCTTACCACGCTACTCCTACCTATCTCCCCTTTTATACTAATAATCTTATAGAAATTTAGGTTAAATAC
+AGACCAAGAGCCTTCAAAGCCCTCAGTAAGTTGCAATACTTAATTTCTGTAACAGCTAAGGACTGCAAAA
+CCCCACTCTGCATCAACTGAACGCAAATCAGCCACTTTAATTAAGCTAAGCCCTTACTAGACCAATGGGA
+CTTAAACCCACAAACACTTAGTTAACAGCTAAGCACCCTAATCAACTGGCTTCAATCTACTTCTCCCGCC
+GCCGGGAAAAAAGGCGGGAGAAGCCCCGGCAGGTTTGAAGCTGCTTCTTCGAATTTGCAATTCAATATGA
+AAATCACCTCGGAGCTGGTAAAAAGAGGCCTAACCCCTGTCTTTAGATTTACAGTCCAATGCTTCACTCA
+GCCATTTTACCTCACCCCCACTGATGTTCGCCGACCGTTGACTATTCTCTACAAACCACAAAGACATTGG
+AACACTATACCTATTATTCGGCGCATGAGCTGGAGTCCTAGGCACAGCTCTAAGCCTCCTTATTCGAGCC
+GAGCTGGGCCAGCCAGGCAACCTTCTAGGTAACGACCACATCTACAACGTTATCGTCACAGCCCATGCAT
+TTGTAATAATCTTCTTCATAGTAATACCCATCATAATCGGAGGCTTTGGCAACTGACTAGTTCCCCTAAT
+AATCGGTGCCCCCGATATGGCGTTTCCCCGCATAAACAACATAAGCTTCTGACTCTTACCTCCCTCTCTC
+CTACTCCTGCTCGCATCTGCTATAGTGGAGGCCGGAGCAGGAACAGGTTGAACAGTCTACCCTCCCTTAG
+CAGGGAACTACTCCCACCCTGGAGCCTCCGTAGACCTAACCATCTTCTCCTTACACCTAGCAGGTGTCTC
+CTCTATCTTAGGGGCCATCAATTTCATCACAACAATTATCAATATAAAACCCCCTGCCATAACCCAATAC
+CAAACGCCCCTCTTCGTCTGATCCGTCCTAATCACAGCAGTCCTACTTCTCCTATCTCTCCCAGTCCTAG
+CTGCTGGCATCACTATACTACTAACAGACCGCAACCTCAACACCACCTTCTTCGACCCCGCCGGAGGAGG
+AGACCCCATTCTATACCAACACCTATTCTGATTTTTCGGTCACCCTGAAGTTTATATTCTTATCCTACCA
+GGCTTCGGAATAATCTCCCATATTGTAACTTACTACTCCGGAAAAAAAGAACCATTTGGATACATAGGTA
+TGGTCTGAGCTATGATATCAATTGGCTTCCTAGGGTTTATCGTGTGAGCACACCATATATTTACAGTAGG
+AATAGACGTAGACACACGAGCATATTTCACCTCCGCTACCATAATCATCGCTATCCCCACCGGCGTCAAA
+GTATTTAGCTGACTCGCCACACTCCACGGAAGCAATATGAAATGATCTGCTGCAGTGCTCTGAGCCCTAG
+GATTCATCTTTCTTTTCACCGTAGGTGGCCTGACTGGCATTGTATTAGCAAACTCATCACTAGACATCGT
+ACTACACGACACGTACTACGTTGTAGCCCACTTCCACTATGTCCTATCAATAGGAGCTGTATTTGCCATC
+ATAGGAGGCTTCATTCACTGATTTCCCCTATTCTCAGGCTACACCCTAGACCAAACCTACGCCAAAATCC
+ATTTCACTATCATATTCATCGGCGTAAATCTAACTTTCTTCCCACAACACTTTCTCGGCCTATCCGGAAT
+GCCCCGACGTTACTCGGACTACCCCGATGCATACACCACATGAAACATCCTATCATCTGTAGGCTCATTC
+ATTTCTCTAACAGCAGTAATATTAATAATTTTCATGATTTGAGAAGCCTTCGCTTCGAAGCGAAAAGTCC
+TAATAGTAGAAGAACCCTCCATAAACCTGGAGTGACTATATGGATGCCCCCCACCCTACCACACATTCGA
+AGAACCCGTATACATAAAATCTAGACAAAAAAGGAAGGAATCGAACCCCCCAAAGCTGGTTTCAAGCCAA
+CCCCATGGCCTCCATGACTTTTTCAAAAAGGTATTAGAAAAACCATTTCATAACTTTGTCAAAGTTAAAT
+TATAGGCTAAATCCTATATATCTTAATGGCACATGCAGCGCAAGTAGGTCTACAAGACGCTACTTCCCCT
+ATCATAGAAGAGCTTATCACCTTTCATGATCACGCCCTCATAATCATTTTCCTTATCTGCTTCCTAGTCC
+TGTATGCCCTTTTCCTAACACTCACAACAAAACTAACTAATACTAACATCTCAGACGCTCAGGAAATAGA
+AACCGTCTGAACTATCCTGCCCGCCATCATCCTAGTCCTCATCGCCCTCCCATCCCTACGCATCCTTTAC
+ATAACAGACGAGGTCAACGATCCCTCCCTTACCATCAAATCAATTGGCCACCAATGGTACTGAACCTACG
+AGTACACCGACTACGGCGGACTAATCTTCAACTCCTACATACTTCCCCCATTATTCCTAGAACCAGGCGA
+CCTGCGACTCCTTGACGTTGACAATCGAGTAGTACTCCCGATTGAAGCCCCCATTCGTATAATAATTACA
+TCACAAGACGTCTTGCACTCATGAGCTGTCCCCACATTAGGCTTAAAAACAGATGCAATTCCCGGACGTC
+TAAACCAAACCACTTTCACCGCTACACGACCGGGGGTATACTACGGTCAATGCTCTGAAATCTGTGGAGC
+AAACCACAGTTTCATGCCCATCGTCCTAGAATTAATTCCCCTAAAAATCTTTGAAATAGGGCCCGTATTT
+ACCCTATAGCACCCCCTCTACCCCCTCTAGAGCCCACTGTAAAGCTAACTTAGCATTAACCTTTTAAGTT
+AAAGATTAAGAGAACCAACACCTCTTTACAGTGAAATGCCCCAACTAAATACTACCGTATGGCCCACCAT
+AATTACCCCCATACTCCTTACACTATTCCTCATCACCCAACTAAAAATATTAAACACAAACTACCACCTA
+CCTCCCTCACCAAAGCCCATAAAAATAAAAAATTATAACAAACCCTGAGAACCAAAATGAACGAAAATCT
+GTTCGCTTCATTCATTGCCCCCACAATCCTAGGCCTACCCGCCGCAGTACTGATCATTCTATTTCCCCCT
+CTATTGATCCCCACCTCCAAATATCTCATCAACAACCGACTAATCACCACCCAACAATGACTAATCAAAC
+TAACCTCAAAACAAATGATAACCATACACAACACTAAAGGACGAACCTGATCTCTTATACTAGTATCCTT
+AATCATTTTTATTGCCACAACTAACCTCCTCGGACTCCTGCCTCACTCATTTACACCAACCACCCAACTA
+TCTATAAACCTAGCCATGGCCATCCCCTTATGAGCGGGCACAGTGATTATAGGCTTTCGCTCTAAGATTA
+AAAATGCCCTAGCCCACTTCTTACCACAAGGCACACCTACACCCCTTATCCCCATACTAGTTATTATCGA
+AACCATCAGCCTACTCATTCAACCAATAGCCCTGGCCGTACGCCTAACCGCTAACATTACTGCAGGCCAC
+CTACTCATGCACCTAATTGGAAGCGCCACCCTAGCAATATCAACCATTAACCTTCCCTCTACACTTATCA
+TCTTCACAATTCTAATTCTACTGACTATCCTAGAAATCGCTGTCGCCTTAATCCAAGCCTACGTTTTCAC
+ACTTCTAGTAAGCCTCTACCTGCACGACAACACATAATGACCCACCAATCACATGCCTATCATATAGTAA
+AACCCAGCCCATGACCCCTAACAGGGGCCCTCTCAGCCCTCCTAATGACCTCCGGCCTAGCCATGTGATT
+TCACTTCCACTCCATAACGCTCCTCATACTAGGCCTACTAACCAACACACTAACCATATACCAATGATGG
+CGCGATGTAACACGAGAAAGCACATACCAAGGCCACCACACACCACCTGTCCAAAAAGGCCTTCGATACG
+GGATAATCCTATTTATTACCTCAGAAGTTTTTTTCTTCGCAGGATTTTTCTGAGCCTTTTACCACTCCAG
+CCTAGCCCCTACCCCCCAATTAGGAGGGCACTGGCCCCCAACAGGCATCACCCCGCTAAATCCCCTAGAA
+GTCCCACTCCTAAACACATCCGTATTACTCGCATCAGGAGTATCAATCACCTGAGCTCACCATAGTCTAA
+TAGAAAACAACCGAAACCAAATAATTCAAGCACTGCTTATTACAATTTTACTGGGTCTCTATTTTACCCT
+CCTACAAGCCTCAGAGTACTTCGAGTCTCCCTTCACCATTTCCGACGGCATCTACGGCTCAACATTTTTT
+GTAGCCACAGGCTTCCACGGACTTCACGTCATTATTGGCTCAACTTTCCTCACTATCTGCTTCATCCGCC
+AACTAATATTTCACTTTACATCCAAACATCACTTTGGCTTCGAAGCCGCCGCCTGATACTGGCATTTTGT
+AGATGTGGTTTGACTATTTCTGTATGTCTCCATCTATTGATGAGGGTCTTACTCTTTTAGTATAAATAGT
+ACCGTTAACTTCCAATTAACTAGTTTTGACAACATTCAAAAAAGAGTAATAAACTTCGCCTTAATTTTAA
+TAATCAACACCCTCCTAGCCTTACTACTAATAATTATTACATTTTGACTACCACAACTCAACGGCTACAT
+AGAAAAATCCACCCCTTACGAGTGCGGCTTCGACCCTATATCCCCCGCCCGCGTCCCTTTCTCCATAAAA
+TTCTTCTTAGTAGCTATTACCTTCTTATTATTTGATCTAGAAATTGCCCTCCTTTTACCCCTACCATGAG
+CCCTACAAACAACTAACCTGCCACTAATAGTTATGTCATCCCTCTTATTAATCATCATCCTAGCCCTAAG
+TCTGGCCTATGAGTGACTACAAAAAGGATTAGACTGAACCGAATTGGTATATAGTTTAAACAAAACGAAT
+GATTTCGACTCATTAAATTATGATAATCATATTTACCAAATGCCCCTCATTTACATAAATATTATACTAG
+CATTTACCATCTCACTTCTAGGAATACTAGTATATCGCTCACACCTCATATCCTCCCTACTATGCCTAGA
+AGGAATAATACTATCGCTGTTCATTATAGCTACTCTCATAACCCTCAACACCCACTCCCTCTTAGCCAAT
+ATTGTGCCTATTGCCATACTAGTCTTTGCCGCCTGCGAAGCAGCGGTGGGCCTAGCCCTACTAGTCTCAA
+TCTCCAACACATATGGCCTAGACTACGTACATAACCTAAACCTACTCCAATGCTAAAACTAATCGTCCCA
+ACAATTATATTACTACCACTGACATGACTTTCCAAAAAACACATAATTTGAATCAACACAACCACCCACA
+GCCTAATTATTAGCATCATCCCTCTACTATTTTTTAACCAAATCAACAACAACCTATTTAGCTGTTCCCC
+AACCTTTTCCTCCGACCCCCTAACAACCCCCCTCCTAATACTAACTACCTGACTCCTACCCCTCACAATC
+ATGGCAAGCCAACGCCACTTATCCAGTGAACCACTATCACGAAAAAAACTCTACCTCTCTATACTAATCT
+CCCTACAAATCTCCTTAATTATAACATTCACAGCCACAGAACTAATCATATTTTATATCTTCTTCGAAAC
+CACACTTATCCCCACCTTGGCTATCATCACCCGATGAGGCAACCAGCCAGAACGCCTGAACGCAGGCACA
+TACTTCCTATTCTACACCCTAGTAGGCTCCCTTCCCCTACTCATCGCACTAATTTACACTCACAACACCC
+TAGGCTCACTAAACATTCTACTACTCACTCTCACTGCCCAAGAACTATCAAACTCCTGAGCCAACAACTT
+AATATGACTAGCTTACACAATAGCTTTTATAGTAAAGATACCTCTTTACGGACTCCACTTATGACTCCCT
+AAAGCCCATGTCGAAGCCCCCATCGCTGGGTCAATAGTACTTGCCGCAGTACTCTTAAAACTAGGCGGCT
+ATGGTATAATACGCCTCACACTCATTCTCAACCCCCTGACAAAACACATAGCCTACCCCTTCCTTGTACT
+ATCCCTATGAGGCATAATTATAACAAGCTCCATCTGCCTACGACAAACAGACCTAAAATCGCTCATTGCA
+TACTCTTCAATCAGCCACATAGCCCTCGTAGTAACAGCCATTCTCATCCAAACCCCCTGAAGCTTCACCG
+GCGCAGTCATTCTCATAATCGCCCACGGGCTTACATCCTCATTACTATTCTGCCTAGCAAACTCAAACTA
+CGAACGCACTCACAGTCGCATCATAATCCTCTCTCAAGGACTTCAAACTCTACTCCCACTAATAGCTTTT
+TGATGACTTCTAGCAAGCCTCGCTAACCTCGCCTTACCCCCCACTATTAACCTACTGGGAGAACTCTCTG
+TGCTAGTAACCACGTTCTCCTGATCAAATATCACTCTCCTACTTACAGGACTCAACATACTAGTCACAGC
+CCTATACTCCCTCTACATATTTACCACAACACAATGGGGCTCACTCACCCACCACATTAACAACATAAAA
+CCCTCATTCACACGAGAAAACACCCTCATGTTCATACACCTATCCCCCATTCTCCTCCTATCCCTCAACC
+CCGACATCATTACCGGGTTTTCCTCTTGTAAATATAGTTTAACCAAAACATCAGATTGTGAATCTGACAA
+CAGAGGCTTACGACCCCTTATTTACCGAGAAAGCTCACAAGAACTGCTAACTCATGCCCCCATGTCTAAC
+AACATGGCTTTCTCAACTTTTAAAGGATAACAGCTATCCATTGGTCTTAGGCCCCAAAAATTTTGGTGCA
+ACTCCAAATAAAAGTAATAACCATGCACACTACTATAACCACCCTAACCCTGACTTCCCTAATTCCCCCC
+ATCCTTACCACCCTCGTTAACCCTAACAAAAAAAACTCATACCCCCATTATGTAAAATCCATTGTCGCAT
+CCACCTTTATTATCAGTCTCTTCCCCACAACAATATTCATGTGCCTAGACCAAGAAGTTATTATCTCGAA
+CTGACACTGAGCCACAACCCAAACAACCCAGCTCTCCCTAAGCTTCAAACTAGACTACTTCTCCATAATA
+TTCATCCCTGTAGCATTGTTCGTTACATGGTCCATCATAGAATTCTCACTGTGATATATAAACTCAGACC
+CAAACATTAATCAGTTCTTCAAATATCTACTCATCTTCCTAATTACCATACTAATCTTAGTTACCGCTAA
+CAACCTATTCCAACTGTTCATCGGCTGAGAGGGCGTAGGAATTATATCCTTCTTGCTCATCAGTTGATGA
+TACGCCCGAGCAGATGCCAACACAGCAGCCATTCAAGCAATCCTATACAACCGTATCGGCGATATCGGTT
+TCATCCTCGCCTTAGCATGATTTATCCTACACTCCAACTCATGAGACCCACAACAAATAGCCCTTCTAAA
+CGCTAATCCAAGCCTCACCCCACTACTAGGCCTCCTCCTAGCAGCAGCAGGCAAATCAGCCCAATTAGGT
+CTCCACCCCTGACTCCCCTCAGCCATAGAAGGCCCCACCCCAGTCTCAGCCCTACTCCACTCAAGCACTA
+TAGTTGTAGCAGGAATCTTCTTACTCATCCGCTTCCACCCCCTAGCAGAAAATAGCCCACTAATCCAAAC
+TCTAACACTATGCTTAGGCGCTATCACCACTCTGTTCGCAGCAGTCTGCGCCCTTACACAAAATGACATC
+AAAAAAATCGTAGCCTTCTCCACTTCAAGTCAACTAGGACTCATAATAGTTACAATCGGCATCAACCAAC
+CACACCTAGCATTCCTGCACATCTGTACCCACGCCTTCTTCAAAGCCATACTATTTATGTGCTCCGGGTC
+CATCATCCACAACCTTAACAATGAACAAGATATTCGAAAAATAGGAGGACTACTCAAAACCATACCTCTC
+ACTTCAACCTCCCTCACCATTGGCAGCCTAGCATTAGCAGGAATACCTTTCCTCACAGGTTTCTACTCCA
+AAGACCACATCATCGAAACCGCAAACATATCATACACAAACGCCTGAGCCCTATCTATTACTCTCATCGC
+TACCTCCCTGACAAGCGCCTATAGCACTCGAATAATTCTTCTCACCCTAACAGGTCAACCTCGCTTCCCC
+ACCCTTACTAACATTAACGAAAATAACCCCACCCTACTAAACCCCATTAAACGCCTGGCAGCCGGAAGCC
+TATTCGCAGGATTTCTCATTACTAACAACATTTCCCCCGCATCCCCCTTCCAAACAACAATCCCCCTCTA
+CCTAAAACTCACAGCCCTCGCTGTCACTTTCCTAGGACTTCTAACAGCCCTAGACCTCAACTACCTAACC
+AACAAACTTAAAATAAAATCCCCACTATGCACATTTTATTTCTCCAACATACTCGGATTCTACCCTAGCA
+TCACACACCGCACAATCCCCTATCTAGGCCTTCTTACGAGCCAAAACCTGCCCCTACTCCTCCTAGACCT
+AACCTGACTAGAAAAGCTATTACCTAAAACAATTTCACAGCACCAAATCTCCACCTCCATCATCACCTCA
+ACCCAAAAAGGCATAATTAAACTTTACTTCCTCTCTTTCTTCTTCCCACTCATCCTAACCCTACTCCTAA
+TCACATAACCTATTCCCCCGAGCAATCTCAATTACAATATATACACCAACAAACAATGTTCAACCAGTAA
+CTACTACTAATCAACGCCCATAATCATACAAAGCCCCCGCACCAATAGGATCCTCCCGAATCAACCCTGA
+CCCCTCTCCTTCATAAATTATTCAGCTTCCTACACTATTAAAGTTTACCACAACCACCACCCCATCATAC
+TCTTTCACCCACAGCACCAATCCTACCTCCATCGCTAACCCCACTAAAACACTCACCAAGACCTCAACCC
+CTGACCCCCATGCCTCAGGATACTCCTCAATAGCCATCGCTGTAGTATATCCAAAGACAACCATCATTCC
+CCCTAAATAAATTAAAAAAACTATTAAACCCATATAACCTCCCCCAAAATTCAGAATAATAACACACCCG
+ACCACACCGCTAACAATCAATACTAAACCCCCATAAATAGGAGAAGGCTTAGAAGAAAACCCCACAAACC
+CCATTACTAAACCCACACTCAACAGAAACAAAGCATACATCATTATTCTCGCACGGACTACAACCACGAC
+CAATGATATGAAAAACCATCGTTGTATTTCAACTACAAGAACACCAATGACCCCAATACGCAAAACTAAC
+CCCCTAATAAAATTAATTAACCACTCATTCATCGACCTCCCCACCCCATCCAACATCTCCGCATGATGAA
+ACTTCGGCTCACTCCTTGGCGCCTGCCTGATCCTCCAAATCACCACAGGACTATTCCTAGCCATGCACTA
+CTCACCAGACGCCTCAACCGCCTTTTCATCAATCGCCCACATCACTCGAGACGTAAATTATGGCTGAATC
+ATCCGCTACCTTCACGCCAATGGCGCCTCAATATTCTTTATCTGCCTCTTCCTACACATCGGGCGAGGCC
+TATATTACGGATCATTTCTCTACTCAGAAACCTGAAACATCGGCATTATCCTCCTGCTTGCAACTATAGC
+AACAGCCTTCATAGGCTATGTCCTCCCGTGAGGCCAAATATCATTCTGAGGGGCCACAGTAATTACAAAC
+TTACTATCCGCCATCCCATACATTGGGACAGACCTAGTTCAATGAATCTGAGGAGGCTACTCAGTAGACA
+GTCCCACCCTCACACGATTCTTTACCTTTCACTTCATCTTGCCCTTCATTATTGCAGCCCTAGCAACACT
+CCACCTCCTATTCTTGCACGAAACGGGATCAAACAACCCCCTAGGAATCACCTCCCATTCCGATAAAATC
+ACCTTCCACCCTTACTACACAATCAAAGACGCCCTCGGCTTACTTCTCTTCCTTCTCTCCTTAATGACAT
+TAACACTATTCTCACCAGACCTCCTAGGCGACCCAGACAATTATACCCTAGCCAACCCCTTAAACACCCC
+TCCCCACATCAAGCCCGAATGATATTTCCTATTCGCCTACACAATTCTCCGATCCGTCCCTAACAAACTA
+GGAGGCGTCCTTGCCCTATTACTATCCATCCTCATCCTAGCAATAATCCCCATCCTCCATATATCCAAAC
+AACAAAGCATAATATTTCGCCCACTAAGCCAATCACTTTATTGACTCCTAGCCGCAGACCTCCTCATTCT
+AACCTGAATCGGAGGACAACCAGTAAGCTACCCTTTTACCATCATTGGACAAGTAGCATCCGTACTATAC
+TTCACAACAATCCTAATCCTAATACCAACTATCTCCCTAATTGAAAACAAAATACTCAAATGGGCCTGTC
+CTTGTAGTATAAACTAATACACCAGTCTTGTAAACCGGAGATGAAAACCTTTTTCCAAGGACAAATCAGA
+GAAAAAGTCTTTAACTCCACCATTAGCACCCAAAGCTAAGATTCTAATTTAAACTATTCTCTGTTCTTTC
+ATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACCGCTATGTATTTCGTACA
+TTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACTTGACCACCTGTAGTACATAAAAACCCA
+ATCCACATCAAAACCCCCTCCCCATGCTTACAAGCAAGTACAGCAATCAACCCTCAACTATCACACATCA
+ACTGCAACTCCAAAGCCACCCCTCACCCACTAGGATACCAACAAACCTACCCACCCTTAACAGTACATAG
+TACATAAAGCCATTTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCC
+TCAGATAGGGGTCCCTTGACCACCATCCTCCGTGAAATCAATATCCCGCACAAGAGTGCTACTCTCCTCG
+CTCCGGGCCCATAACACTTGGGGGTAGCTAAAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTC
+ATAAAGCCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATG
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/length_distribution.txt	Mon Dec 05 15:47:23 2022 +0000
@@ -0,0 +1,2 @@
+3.09819e-24	4.61802e-24	6.8724e-24	1.02109e-23	1.51471e-23	2.24335e-23	3.31719e-23	4.89721e-23	7.21827e-23	1.06224e-22	1.56069e-22	2.28937e-22	3.3529e-22	4.90265e-22	7.15724e-22	1.0432e-21	1.51807e-21	2.20558e-21	3.19933e-21	4.6334e-21	6.69956e-21	9.67159e-21	1.39397e-20	2.00594e-20	2.88194e-20	4.13387e-20	5.92018e-20	8.46483e-20	1.20839e-19	1.72226e-19	2.45075e-19	3.48179e-19	4.93869e-19	6.994e-19	9.88884e-19	1.39595e-18	1.96743e-18	2.76844e-18	3.88934e-18	5.45534e-18	7.63964e-18	1.06814e-17	1.49104e-17	2.07805e-17	2.89154e-17	4.01703e-17	5.5717e-17	7.7157e-17	1.06676e-16	1.47254e-16	2.02941e-16	2.7924e-16	3.83611e-16	5.2615e-16	7.205e-16	9.85061e-16	1.34461e-15	1.83247e-15	2.49334e-15	3.38713e-15	4.59396e-15	6.22082e-15	8.41034e-15	1.13523e-14	1.52989e-14	2.05846e-14	2.76522e-14	3.70869e-14	4.96613e-14	6.63927e-14	8.86192e-14	1.18097e-13	1.5713e-13	2.08729e-13	2.76828e-13	3.66559e-13	4.84599e-13	6.39627e-13	8.429e-13	1.109e-12	1.45677e-12	1.91054e-12	2.50165e-12	3.2704e-12	4.26856e-12	5.56247e-12	7.237e-12	9.40059e-12	1.21915e-11	1.57857e-11	2.04068e-11	2.63386e-11	3.39402e-11	4.36659e-11	5.60887e-11	7.19306e-11	9.20994e-11	1.17735e-10	1.50265e-10	1.91478e-10	2.43603e-10	3.09422e-10	3.92397e-10	4.96828e-10	6.28046e-10	7.9265e-10	9.98796e-10	1.25654e-09	1.57828e-09	1.97922e-09	2.47806e-09	3.09765e-09	3.86598e-09	4.81717e-09	5.99279e-09	7.4434e-09	9.23037e-09	1.1428e-08	1.41264e-08	1.74339e-08	2.14814e-08	2.64263e-08	3.24575e-08	3.98015e-08	4.87292e-08	5.9564e-08	7.26915e-08	8.85704e-08	1.07745e-07	1.30862e-07	1.58685e-07	1.92115e-07	2.32216e-07	2.80239e-07	3.37653e-07	4.06179e-07	4.87832e-07	5.84962e-07	7.0031e-07	8.37062e-07	9.9892e-07	1.19017e-06	1.41577e-06	1.68144e-06	1.99377e-06	2.36034e-06	2.78984e-06	3.29222e-06	3.87885e-06	4.56271e-06	5.35856e-06	6.28317e-06	7.35554e-06	8.59717e-06	1.00323e-05	1.16883e-05	1.35959e-05	1.57896e-05	1.83079e-05	2.11939e-05	2.44956e-05	2.82664e-05	3.25656e-05	3.74586e-05	4.3018e-05	4.93235e-05	5.64628e-05	6.45322e-05	7.36369e-05	8.38919e-05	9.54223e-05	0.000108364	0.000122864	0.000139082	0.000157188	0.000177368	0.000199819	0.000224752	0.000252392	0.000282977	0.000316762	0.000354014	0.000395015	0.000440059	0.000489456	0.000543527	0.000602608	0.000667042	0.000737185	0.000813403	0.000896065	0.000985551	0.00108224	0.00118652	0.00129876	0.00141935	0.00154865	0.00168704	0.00183485	0.00199242	0.00216007	0.00233808	0.00252671	0.0027262	0.00293674	0.00315848	0.00339153	0.00363595	0.00389176	0.00415891	0.00443729	0.00472674	0.00502702	0.00533784	0.0056588	0.00598948	0.00632935	0.00667781	0.0070342	0.00739776	0.00776767	0.00814304	0.00852291	0.00890624	0.00929193	0.00967883	0.0100657	0.0104513	0.0108344	0.0112135	0.0115874	0.0119546	0.0123137	0.0126633	0.013002	0.0133284	0.0136412	0.013939	0.0142206	0.0144846	0.01473	0.0149556	0.0151603	0.0153433	0.0155037	0.0156407	0.0157537	0.0158422	0.0159057	0.0159439	0.0159566	0.0159439	0.0159057	0.0158422	0.0157537	0.0156407	0.0155037	0.0153433	0.0151603	0.0149556	0.01473	0.0144846	0.0142206	0.013939	0.0136412	0.0133284	0.013002	0.0126633	0.0123137	0.0119546	0.0115874	0.0112135	0.0108344	0.0104513	0.0100657	0.00967883	0.00929193	0.00890624	0.00852291	0.00814304	0.00776767	0.00739776	0.0070342	0.00667781	0.00632935	0.00598948	0.0056588	0.00533784	0.00502702	0.00472674	0.00443729	0.00415891	0.00389176	0.00363595	0.00339153	0.00315848	0.00293674	0.0027262	0.00252671	0.00233808	0.00216007	0.00199242	0.00183485	0.00168704	0.00154865	0.00141935	0.00129876	0.00118652	0.00108224	0.000985551	0.000896065	0.000813403	0.000737185	0.000667042	0.000602608	0.000543527	0.000489456	0.000440059	0.000395015	0.000354014	0.000316762	0.000282977	0.000252392	0.000224752	0.000199819	0.000177368	0.000157188	0.000139082	0.000122864	0.000108364	9.54223e-05	8.38919e-05	7.36369e-05	6.45322e-05	5.64628e-05	4.93235e-05	4.3018e-05	3.74586e-05	3.25656e-05	2.82664e-05	2.44956e-05	2.11939e-05	1.83079e-05	1.57896e-05	1.35959e-05	1.16883e-05	1.00323e-05	8.59717e-06	7.35554e-06	6.28317e-06	5.35856e-06	4.56271e-06	3.87885e-06	3.29222e-06	2.78984e-06	2.36034e-06	1.99377e-06	1.68144e-06	1.41577e-06	1.19017e-06	9.9892e-07	8.37062e-07	7.0031e-07	5.84962e-07	4.87832e-07	4.06179e-07	3.37653e-07	2.80239e-07	2.32216e-07	1.92115e-07	1.58685e-07	1.30862e-07	1.07745e-07	8.85704e-08	7.26915e-08	5.9564e-08	4.87292e-08	3.98015e-08	3.24575e-08	2.64263e-08	2.14814e-08	1.74339e-08	1.41264e-08	1.1428e-08	9.23037e-09	7.4434e-09	5.99279e-09	4.81717e-09	3.86598e-09	3.09765e-09	2.47806e-09	1.97922e-09	1.57828e-09	1.25654e-09	9.98796e-10	7.9265e-10	6.28045e-10	4.96828e-10	3.92397e-10	3.09422e-10	2.43603e-10	1.91478e-10	1.50265e-10	1.17735e-10	9.20994e-11	7.19305e-11	5.60888e-11	4.36658e-11	3.39403e-11	2.63386e-11	2.04068e-11	1.57857e-11	1.21915e-11	9.40059e-12	7.23699e-12	5.56244e-12	4.26859e-12	3.27038e-12	2.50167e-12	1.91058e-12	1.45672e-12	1.109e-12	8.42881e-13	6.39599e-13	4.84612e-13	3.66596e-13	2.76779e-13	2.08722e-13	1.57208e-13	1.18017e-13	8.87068e-14	6.63913e-14	4.9627e-14	3.70814e-14	2.76446e-14	2.06501e-14	1.52101e-14	1.14353e-14	8.32667e-15	6.21725e-15	4.66294e-15	3.33067e-15	2.55351e-15	1.77636e-15	1.33227e-15	9.99201e-16	7.77156e-16	4.44089e-16	4.44089e-16	2.22045e-16	2.22045e-16	2.22045e-16	1.11022e-16	3.75e-11	1.11022e-16	3.75e-11	3.75e-11	1.11022e-16	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11	3.75e-11
+