Repository 'jbrowse2'
hg clone https://toolshed.g2.bx.psu.edu/repos/fubar/jbrowse2

Changeset 85:3b2ff9864995 (2024-04-09)
Previous changeset 84:5c295cc220ed (2024-04-03) Next changeset 86:0fae1d68347f (2024-04-10)
Commit message:
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 264a3d6c7a29f396d359f33164ddf2cb1d9903f8-dirty
modified:
autogenJB2.py
jbrowse2.py
jbrowse2.xml
macros.xml
added:
test-data/dm3.cool
test-data/dm3.fasta
b
diff -r 5c295cc220ed -r 3b2ff9864995 autogenJB2.py
--- a/autogenJB2.py Wed Apr 03 02:56:39 2024 +0000
+++ b/autogenJB2.py Tue Apr 09 00:26:49 2024 +0000
[
@@ -143,7 +143,7 @@
                         sys.stdout.write("#### calling %s" % " ".join(cmd))
                         jc.subprocess_check_call(cmd)
                     track_conf.update(
-                        {"conf": {"options": {"bam": {"bam_index": ipath}}}}
+                        {"conf": {"options": {"bam": {"bam_index": " %s,%s " % (trackname,ipath)}}}}
                     )
                 elif trext == "cram":
                     ipath = track[3]
@@ -161,7 +161,7 @@
                         ]
                         jc.subprocess_check_call(cmd)
                     track_conf.update(
-                        {"conf": {"options": {"cram": {"cram_index": ipath}}}}
+                        {"conf": {"options": {"cram": {"cram_index": "%s,%s" % (trackname,ipath)}}}}
                     )
                 track_conf["path"] = tpath
                 track_conf["format"] = trext
b
diff -r 5c295cc220ed -r 3b2ff9864995 jbrowse2.py
--- a/jbrowse2.py Wed Apr 03 02:56:39 2024 +0000
+++ b/jbrowse2.py Tue Apr 09 00:26:49 2024 +0000
[
b'@@ -475,12 +475,7 @@\n         if trackDict.get("displays", None):  # use first if multiple like bed\n             style_data["type"] = trackDict["displays"][0]["type"]\n             style_data["displayId"] = trackDict["displays"][0]["displayId"]\n-        wstyle = {\n-            "displays": [\n-                style_data,\n-            ]\n-        }\n-        return wstyle\n+        return style_data\n \n     def getNrow(self, url):\n         useuri = url.startswith("https://") or url.startswith("http://")\n@@ -681,18 +676,23 @@\n \n         """\n         tId = trackData["label"]\n+        wasCool = trackData["wasCool"]\n         # can be served - if public.\n         # dsId = trackData["metadata"]["dataset_id"]\n         # url = "%s/api/datasets/%s/display?to_ext=hic " % (self.giURL, dsId)\n         useuri = trackData["useuri"].lower() == "yes"\n+        logging.debug("wasCool=%s, data=%s, tId=%s" % (wasCool, data, tId))\n         if useuri:\n             uri = data\n         else:\n-            uri = tId\n-            # slashes in names cause path trouble\n-            dest = os.path.join(self.outdir, uri)\n-            cmd = ["cp", data, dest]\n-            self.subprocess_check_call(cmd)\n+            uri = tId + ".hic"\n+            if not wasCool:\n+                dest = os.path.join(self.outdir, uri)\n+                if not os.path.exists(dest):\n+                    cmd = ["cp", data, dest]\n+                    self.subprocess_check_call(cmd)\n+                else:\n+                    logging.error("not wasCool but %s exists" % dest)\n         categ = trackData["category"]\n         trackDict = {\n             "type": "HicTrack",\n@@ -854,10 +854,10 @@\n         self.tracksToAdd[trackData["assemblyNames"]].append(trackDict)\n         self.trackIdlist.append(tId)\n \n-    def add_bam(self, data, trackData, bam_index=None, **kwargs):\n+    def add_bam(self, data, trackData, bam_indexes=None, **kwargs):\n         tId = trackData["label"]\n+        realFName = trackData["key"]\n         useuri = trackData["useuri"].lower() == "yes"\n-        bindex = bam_index\n         categ = trackData["category"]\n         if useuri:\n             url = data\n@@ -867,6 +867,20 @@\n             url = fname\n             bindex = fname + ".bai"\n             self.subprocess_check_call(["cp", data, dest])\n+            bi = bam_indexes.split()\n+            bam_index = [\n+                x.split(",")[1].strip()\n+                for x in bi\n+                if "," in x and x.split(",")[0].strip() == realFName\n+            ]\n+            if len(bam_index) > 0:\n+                bam_index = bam_index[0]\n+            else:\n+                bam_index = None\n+            logging.debug(\n+                "===realFName=%s got %s as bi, %s for bam_index"\n+                % (realFName, bi, bam_index)\n+            )\n             if bam_index is not None and os.path.exists(bam_index):\n                 if not os.path.exists(bindex):\n                     # bai most probably made by galaxy and stored in galaxy dirs, need to copy it to dest\n@@ -909,8 +923,9 @@\n         self.tracksToAdd[trackData["assemblyNames"]].append(trackDict)\n         self.trackIdlist.append(tId)\n \n-    def add_cram(self, data, trackData, cram_index=None, **kwargs):\n+    def add_cram(self, data, trackData, cram_indexes=None, **kwargs):\n         tId = trackData["label"]\n+        realFName = trackData["key"]\n         categ = trackData["category"]\n         useuri = trackData["useuri"].lower() == "yes"\n         gsa = self.assmeta.get(trackData["assemblyNames"], None)\n@@ -926,7 +941,21 @@\n             dest = os.path.join(self.outdir, fname)\n             url = fname\n             self.subprocess_check_call(["cp", data, dest])\n-            if cram_index is not None and os.path.exists(cram_index):\n+            ci = cram_indexes.split()\n+            cram_index = [\n+                x.split(",")[1].strip()\n+                for x in ci\n+                if "," in x and x.split(",")[0] == realFName\n+            ]\n+            if len(cram_index) > 0:\n+'..b'cks for a default view.\n         Originally used only the first assembly, putting all tracks there and so breaking some\n-        when tested with 2 or more. Seems ironic that this vital feature could not have ever been tested\n-        given that my declining to add it was the basis for a reviewer\'s rejection of my original IUC PR.\n-        A simple 2 line diff apparently.\n-\n-        The technical problem is that this index.html hack breaks the promise of all the form fields\n-        for track controls such as visibility default that were working mostly. They need to be removed from the form by whoever\n-        thought this method was a good solution to the JB2 bug breaking config.json style default\n-        view coordinates.\n-\n-        And no, dear reviewer of this code, please leave this piece of history.\n-        It is true and I prefer that it remain here to document my considerable discomfort at this unfair treatment.\n+        when tested with 2 or more.\n \n          ----------------------------------------------------------\n         Add some default session settings: set some assemblies/tracks on/off\n@@ -1648,7 +1663,7 @@\n \n             trackfiles = track.findall("files/trackFile")\n             if trackfiles:\n-                for x in track.findall("files/trackFile"):\n+                for x in trackfiles:\n                     track_conf["label"] = x.attrib["label"]\n                     track_conf["useuri"] = x.attrib["useuri"]\n                     if is_multi_bigwig:\n@@ -1698,8 +1713,6 @@\n             track_conf["category"] = track.attrib["cat"]\n             track_conf["format"] = track.attrib["format"]\n             track_conf["conf"] = etree_to_dict(track.find("options"))\n-            track_conf["category"] = track.attrib["cat"]\n-            track_conf["format"] = track.attrib["format"]\n             keys = jc.process_annotations(track_conf)\n \n             if keys:\n@@ -1708,20 +1721,24 @@\n                     if not vis:\n                         vis = "default_off"\n                     default_session_data[assref_name]["visibility"][vis].append(key)\n-                if track.find("options/style"):\n-                    default_session_data[assref_name]["style"][key] = {\n-                        item.tag: parse_style_conf(item)\n-                        for item in track.find("options/style")\n-                    }\n-                else:\n-                    default_session_data[assref_name]["style"][key] = {}\n-                    logging.debug("no options/style found for %s" % (key))\n-\n-                if track.find("options/style_labels"):\n-                    default_session_data[assref_name]["style_labels"][key] = {\n-                        item.tag: parse_style_conf(item)\n-                        for item in track.find("options/style_labels")\n-                    }\n+                    trakdat = jc.tracksToAdd[assref_name]\n+                    stile = {}\n+                    for trak in trakdat:\n+                        if trak["trackId"] == key:\n+                            stile = trak.get("style", {})\n+                    if track.find("options/style"):\n+                        supdate = {\n+                            item.tag: parse_style_conf(item)\n+                            for item in track.find("options/style")\n+                        }\n+                        stile.update(supdate)\n+                    default_session_data[assref_name]["style"][key] = stile\n+                    logging.debug("@@@ for %s got style=%s" % (key, stile))\n+                    if track.find("options/style_labels"):\n+                        default_session_data[assref_name]["style_labels"][key] = {\n+                            item.tag: parse_style_conf(item)\n+                            for item in track.find("options/style_labels")\n+                        }\n                 default_session_data[assref_name]["tracks"].append(key)\n     default_session_data["defaultLocation"] = root.find(\n         "metadata/general/defaultLocation"\n'
b
diff -r 5c295cc220ed -r 3b2ff9864995 jbrowse2.xml
--- a/jbrowse2.xml Wed Apr 03 02:56:39 2024 +0000
+++ b/jbrowse2.xml Tue Apr 09 00:26:49 2024 +0000
[
@@ -1,4 +1,4 @@
- <tool id="jbrowse2" name="JBrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_11" profile="22.05">
+ <tool id="jbrowse2" name="JBrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_12" profile="22.05">
     <description>genome browser</description>
     <macros>
         <import>macros.xml</import>
@@ -204,34 +204,42 @@
                   #if $uglyTestingHack != "enabled":
                   <options>
                     <style>
-                        #if str($track.data_format.data_format_select) in ["gff", "bed", "vcf", "maf", "blastxml"]:
+                        #if str($track.data_format.data_format_select) in ["gff", "bed", "maf", "blastxml"]:
+                            <type>${track.data_format.jbstyle.display}</type>
+                            #if str($track.data_format.jbstyle.display) in ["LinearBasicDisplay", "LinearVariantDisplay"]:
+                                <trackShowLabels>${track.data_format.jbstyle.show_labels}</trackShowLabels>
+                                <trackShowDescriptions>${track.data_format.jbstyle.show_descriptions}</trackShowDescriptions>
+                            #end if
+                        #else if str($track.data_format.data_format_select) == "vcf":
                             <type>${track.data_format.jbstyle.track_style.display}</type>
                             #if str($track.data_format.jbstyle.track_style.display) in ["LinearBasicDisplay", "LinearVariantDisplay"]:
                                 <trackShowLabels>${track.data_format.jbstyle.track_style.show_labels}</trackShowLabels>
                                 <trackShowDescriptions>${track.data_format.jbstyle.track_style.show_descriptions}</trackShowDescriptions>
                             #end if
+
                         #end if
                         #if str($track.data_format.data_format_select) in ["bam", "cram"]:
                             <type>LinearAlignmentsDisplay</type>
                         #end if
-                        #if str($track.data_format.data_format_select) in ["paf"]:
-                            <type>LinearBasicDisplay</type>
-                        #end if
-                        #if str($track.data_format.data_format_select) in ["hic"]:
+                        #if str($track.data_format.data_format_select) in ["hic", "cool", "mcool", "scool"]:
                             <type>LinearHicDisplay</type>
                         #end if
                     </style>
                     #if str($track.data_format.data_format_select) == "bam":
                         <bam>
+                        <bam_index>
                             #for $dataset in $track.data_format.useuri.annotation:
-                                <bam_index>${dataset.metadata.bam_index}</bam_index>
+                                ${dataset.name},${dataset.metadata.bam_index}
                             #end for
+                        </bam_index>
                         </bam>
                     #else if str($track.data_format.data_format_select) == "cram":
                         <cram>
+                        <cram_index>
                             #for $dataset in $track.data_format.useuri.annotation:
-                                <cram_index>${dataset.metadata.cram_index}</cram_index>
+                                ${dataset.name},${dataset.metadata.cram_index}
                             #end for
+                        </cram_index>
                         </cram>
                     #else if str($track.data_format.data_format_select) == "blastxml":
                         <blast>
@@ -249,16 +257,29 @@
                         </gff>
                     #else if str($track.data_format.data_format_select) == "paf":
                         <paf>
+                            #if $track.data_format.pafuseuri.insource == "history":
                             <genome>
-                            #for refgenome in $track.data_format.pafuseuri.refgenomes:
-                                $refgenome.annotation,
-                            #end for
+                                #for $anno in $track.data_format.pafuseuri.annotation:
+                                    ${anno},
+                                #end for
                             </genome>
                             <genome_label>
-                            #for refgenome in $track.data_format.pafuseuri.refgenomes:
-                                $refgenome.annoname,
-                            #end for
+                                #for $anno in $track.data_format.pafuseuri.annotation:
+                                        ${anno.name},
+                                #end for
                             </genome_label>
+                            #else:
+                            <genome>
+                                #for $refgenome in $track.data_format.pafuseuri.refuri:
+                                    $refgenome.annotation,
+                                #end for
+                            </genome>
+                            <genome_label>
+                                #for $refgenome in $track.data_format.pafuseuri.refuri:
+                                    ${refgenome.annoname},
+                                #end for
+                            </genome_label>
+                            #end if
                         </paf>
                     #else if str($track.data_format.data_format_select) == "hic":
                         <hic>
@@ -377,7 +398,7 @@
                             name="is_protein"
                             truevalue="true"
                             falsevalue="false" />
-                        <expand macro="track_styling_feature" />
+                        <expand macro="track_styling_vgp" />
                         <expand macro="track_visibility" />
                     </when>
                     <when value="vcf">
@@ -402,7 +423,7 @@
                             </when>
                             <when value="false" />
                         </conditional>
-                        <expand macro="track_styling_feature" />
+                        <expand macro="track_styling_vgp" />
                         <expand macro="track_visibility" />
                     </when>
                     <when value="bam">
@@ -411,7 +432,7 @@
                     </when>
                     <when value="bed">
                         <expand macro="input_conditional" label="BED Track Data" format="bed" />
-                        <expand macro="track_styling_feature" />
+                        <expand macro="track_styling_vgp" />
                         <expand macro="track_visibility" />
                     </when>
                     <when value="cram">
@@ -420,7 +441,7 @@
                     </when>
                     <when value="maf">
                         <expand macro="input_conditional" label="MAF Track Data" format="maf" />
-                        <expand macro="track_styling_feature" />
+                        <expand macro="track_styling_vgp" />
                         <expand macro="track_visibility" />
                     </when>
                     <when value="bigwig">
b
diff -r 5c295cc220ed -r 3b2ff9864995 macros.xml
--- a/macros.xml Wed Apr 03 02:56:39 2024 +0000
+++ b/macros.xml Tue Apr 09 00:26:49 2024 +0000
[
@@ -308,6 +308,18 @@
         <param label="Max height" name="max_height" type="integer" value="600" help="Maximum height that the track is permitted to reach in pixels."/>
     </xml>
 
+    <xml name="track_styling_vgp">
+         <section name="jbstyle" title="JBrowse Styling Options [Advanced]" expanded="false">
+        <param label="Show labels" name="show_labels" type="boolean" checked="false" truevalue="true" falsevalue="false" />
+        <param label="Show descriptions" name="show_descriptions" type="boolean" checked="false" truevalue="true" falsevalue="false" />
+        <param name="display" type="select" label="Display style" help="How the track will be displayed by default">
+            <option value="LinearBasicDisplay" selected="true">LinearBasicDisplay</option>
+            <option value="LinearPileupDisplay">LinearPileupDisplay - good for dense tracks at scale</option>
+            <option value="LinearArcDisplay">LinearArcDisplay</option>
+        </param>
+        </section>
+    </xml>
+
     <xml name="track_styling_feature">
         <section name="jbstyle" title="JBrowse Styling Options [Advanced]" expanded="false">
         <conditional name="track_style">
@@ -555,20 +567,11 @@
                     <option value="uri">PAF reference comparison genome tabix .gz URI with index files at the corresponding URIs</option>
                 </param>
                 <when value="history">
-                    <repeat name="refgenomes" title="PAF reference comparison genome used to make the PAF" min="1">
-                       <param label="@LABEL@" format="@FORMAT@" name="annotation" multiple="True" optional="true" type="data" />
-                       <param label="Please provide a short name for track display" name="annoname" type="text"
-                       help="Short names take less track space. No spaces allowed here">
-                             <sanitizer invalid_char="_">
-                                <valid initial="string.printable" >
-                                    <remove value=" " />
-                                </valid>
-                              </sanitizer>
-                        </param>
-                    </repeat>
+                       <param label="@LABEL@" format="@FORMAT@" name="annotation"  type="data"
+                          help="Add all PAF reference comparison genomes used to make the PAF" multiple="true" />
                 </when>
                 <when value="uri">
-                    <repeat name="refgenomes" title="PAF reference comparison genome URI" min="1">
+                    <repeat name="refuri" title="PAF reference comparison genome URI" min="1">
                        <param label="@LABEL@" name="annotation"  type="text" />
                        <param label="Short name for this reference" name="annoname" type="text" help="Short names take less track space">
                              <sanitizer invalid_char="_">
b
diff -r 5c295cc220ed -r 3b2ff9864995 test-data/dm3.cool
b
Binary file test-data/dm3.cool has changed
b
diff -r 5c295cc220ed -r 3b2ff9864995 test-data/dm3.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dm3.fasta Tue Apr 09 00:26:49 2024 +0000
b
b'@@ -0,0 +1,401577 @@\n+>NT_037436.4 Drosophila melanogaster chromosome 3L\n+TAGGGAGAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTCTTTGATTTTTTGGCAACCC\n+AAAATGGTGGCGGATGAACGAGATGATAATATATTCAAGTTGCCGCTAATCAGAAATAAATTCATTGCAA\n+CGTTAAATACAGCACAATATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTAATGAGTGCCT\n+CTCGTTCTCTGTCTTATATTACCGCAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGA\n+TATTTAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTCTGCTCTCTATATAA\n+TGACTGCCTCTCATTCTGTCTTATTTTACCGCAAACCCAAATCGACAATGCACGACAGAGGAAGCAGAAC\n+AGATATTTAGATTGCCTCTCATTTTCTCTCCCATATTATAGGGAGAAATATGATCGCGTATGCGAGAGTA\n+GTGCCAACATATTGTGCTCTTTGATTTTTTGGCAACCCAAAATGGTGGCGGATGAACGAGATGATAATAT\n+ATTCAAGTTGCCGCTAATCAGAAATAAATTCATTGCAACGTTAAATACAGCACAATATATGATCGCGTAT\n+GCGAGAGTAGTGCCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCGCAAACCCA\n+AAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATTTAGATTGCCTATTAAATATGATCGCGTA\n+TGCGAGAGTAGTGCCAACATATTCTGCTCTCTACATAATGACTGCCTCTCATTCTGTCTTATTTTACCGC\n+AAACCCAAATCGACAATGCACGACAGAGGAAGCAGAACAGATATTTAGATTGCCTCTCATTTTCTCTCCC\n+ATATTATAGGGAGAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTCTTTGATTTTTTGG\n+CAACCCAAAATGGTGGCGGATGAACGAGATGATAATATATTCAAGTTGCCGCTAATCAGAAATAAATTCA\n+TTGCAACGTTAAATACAGCACAATATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTAATGA\n+GTGCCTCTCGTTCTCTGTCTTATATTACCGCAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAG\n+CGGAGATATTTAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTCTGCTCTCT\n+ATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAAACCCAAATCGACAATGCACGACAGAGGAAG\n+CAGAACAGATATTTAGATTGCCTCTCATTTTCTCTCCCATATTATAGGGAGAAATATGATCGCGTATGCG\n+AGAGTAGTGCCAACATATTGTGCTCTTTGATTTTTTGGCAACCCAAAATGGTGGCGGATGAACGAGATGA\n+TAATATATTCAAGTTGCCGCTAATCAGAAATAAATTCATTGCAACGTTAAATACAGCACAATATATGATC\n+GCGTATGCGAGAGTAGTGCCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCGCA\n+AACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATTTAGATTGCCTATTAAATATGAT\n+CGCGTATGCGAGAGTAGTGCCAACATATTCTGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTT\n+TACCGCAAACCCAAATCGACAATGCACGACAGAGGAAGCAGAACAGATATTTAGATTGCCTCTCATTTTC\n+TCTCCCATATTATAGGGAGAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTCTTTGATT\n+TTTTGGCAACCCAAAATGGTGGCGGATGAACGAGATGATAATATATTCAAGTTGCCGCTAATCAGAAATA\n+AATTCATTGCAACGTTAAATACAGCACAATATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGC\n+TAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCGCAAACCCAAAAAGACAATACACGACAGAGAGAGA\n+GAGCAGCGGAGATATTTAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTCTG\n+CTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAAACCCAAATCGACAATGCACGACAG\n+AGGAAGCAGAACAGATATTTAGATTGCCTCTCATTTTCTCTCCCATATTATAGGGAGAAATATGATCGCG\n+TATGCGAGAGTAGTGCCAACATATTGTGCTCTTTGATTTTTTGGCAACCCAAAATGGTGGCGGATGAACG\n+AGATGATAATATATTCAAGTTGCCGCTAATCAGAAATAAATTCATTGCAACGTTAAATACAGCACAATAT\n+ATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATT\n+ACCGCAAACCCAAAAAGACAATACACGACAGAGAGAGCAGCGGAGATATTTAGATTGCCTATTAAATATG\n+ATCGCGTATGCGAGAGTAGTGCCAACATATTCTGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTAT\n+TTTACCGCAAACCCAAATCGACAATGCACGACAGAGGAAGCAGAACAGATATTTAGATTGCCTCTCATTT\n+TCTCTCCCATATTATAGGGAGAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTCTTTGA\n+TTTTTTGGCAACCCAAAATGGTGGCGGATGAACGAGATGATAATATATTCAAGTTGCCGCTAATCAGAAA\n+TAAATTCATTGCAACGTTAAATACAGCACAATATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGT\n+GCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCGCAAACCCAAAAAGACAATACACGACAGAGAGA\n+GAGAGCAGCGGAGATATTTAGATTGCCTATTAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTC\n+TGCTCTCTATATAATGACTGCCTCTCATTCTGTCTTATTTTACCGCAAACCCAAATCGACAATGCACGAC\n+AGAGGAAGCAGAACAGATATTTAGATTGCCTCTCATTTTCTCTCCCATATTATAGGGAGAAATATGATCG\n+CGTATGCGAGAGTAGTGCCAACATATTGTGCTCTTTGATTTTTTGGCAACCCAAAATGGTGGCGGATGAA\n+CGAGATGATAATATATTCAAGTTGCCGCTAATCAGAAATAAATTCATTGCAACGTTAAATACAGCACAAT\n+ATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATA\n+TTACCGCAAACCCAAAAAGACAATACACGACAGAGAGAGAGAGCAGCGGAGATATTTAGATTGCCTATTA\n+AATATGATCGCGTATGCGAGAGTAGTGCCAACATATTCTGCTCTCTATATAATGACTGCCTCTCATTCTG\n+TCTTATTTTACCGCAAACCCAAATCGACAATGCACGACAGAGGAAGCAGAACAGATATTTAGATTGCCTC\n+TCATTTTCTCTCCCATATTATAGGGAGAAATATGATCGCGTATGCGAGAGTAGTGCCAACATATTGTGCT\n+CTTTGATTTTTTGGCAACCCAAAATGGTGGCGGATGAACGAGATGATAATATATTCAAGTTGCCGCTAAT\n+CAGAAATAAATTCATTGCAACGTTAAATACAGCACAA'..b'CTAATAAATTAATAACATTAATTTCCCCTGAATTGCAGAAAGTTGGATTCAACTTAAGG\n+AAATGGATTTCCAACAATTCCAAAATATTAACCACTGTGGAGGACACAGGGGACAATAAGGTTCTCAATA\n+TTATCGAAAATGAATGTGTTAAAACTTTAGGACTAAAATGGGAACATCAAAATGATTTATTTAAATTCAG\n+CGTAAATTGTAATGAATCAAAAAATATAAATAAGCGCGTTGTGTTATCAACGCTAGCAAAAATATATGAT\n+CCGTTAGGATGGTTGGCACCAGTCACCGTTTCAGGAAAACTTTTTATTCAAAAACTTTGGATAAATAAAA\n+GTGAATGGGATCAGGAATTATCCATAGAAGATAAAAATTATTGGGAAAAATATAAAGAAAATTTATTATT\n+GTTAAAAAATATTCGAATCCCAAGGTGGATTAATTCAAACAGTTCTTCAGTCATTCAGATTCACGGATTT\n+GCGGACGCCTCCGAAAAAGCATATGCTGCAGTAGTCTATGCTAAAGTAGGACCTCATGTTAATATAATAG\n+CTAGCAAAAGTAGAGTCAACCCTATAAAAAATAGGAAGACAATTCCCAAACTCGAGCTGTGTGCAGCTCA\n+CCTGCTTAGTGAATTAATCCAAAGACTAAAAGGATCAATTGACAATATAATGGAGATCTATGCTTGGAGT\n+GATTCCACGATTACCTTAGCATGGATTAACAGTGGTCAAAGTAAGATCAAATTTATAAGAAGAAGAACGG\n+ATGACATTCGGAAATTAAAAAATACTCAATGGAATCATGTTAAGTCAGAGGATAATCCAGCACATTTAGC\n+ATCCAGGGGAGTGGATTCTAACCAGTTGATCAACTGTGATTTTTGGTGGAAAGGTCCGAAATGGCTAGCC\n+GACCCAAAAGAACTTTGGCCTCGGCAGCAGTCTGTAGAAGAACCTGTCTTAATAAATACGGTATTACAAG\n+ACAAAATAGATGATCCTATTTACGAATTGATAGAAAGGTATTCCAGAAAAACTTATACGTATAATAGCAT\n+ACATAAATAGATTCGTGCAGATGAAAACAAATAATAAAGCCTATTCATCAATTATTTCAGTAAAGGAGAT\n+AAGAATAGCGGAAACAGTTGTTATTAAGAAACAACAAGAATACCAGTTTAGGCAAGAGATAAAGTGCCTT\n+AAAATCAAAAAGGAAATCAAGACAAATAATAAAATATTGTCATTGAATCCATTTTTGGACAAGGATGGGG\n+TTCTAAGAGTTGGAGGAAGATTGCAAAACTCCAATGCAGAATTTAATGTTAAACATCCAATCATTTTAGA\n+AAAATGCCACCTAACAAGCTTATTAATAAAAAATGCTCATAAGGAAACATTGCATGGAGGGATAAACCTT\n+ATGCGAAACTATATCCAAAGAAAGTATTGGATTTTCGGGTTGAAAAATTCGTTGAAAAAGTATTTAAGAG\n+AATGTGTAAAGTGTGCAAGGTATAAACAAAATACAGCTCAGCAAATAATGGGTAACTTGTCAAAATATAG\n+AGTGACGATGACATTCCCGTTTCTTAATACTGGAAGAGATTACGCAGGTCCTTATTATGTTAAATGTTCA\n+AAAAATCGTGGCCAAAAAACATTTAAAGGATACGTTGCCGTATTTGTTTGCATGGCCACCAAAGCCATAC\n+ACTTAGAAATGGTAAGCGATCTAACTTCTGACGCATTTTTAGCAGCACTCAGAAGATTTATTGCTAGACG\n+GGGAAAATGTTCCAATATCTATTCAAACAACGGAACAAATTTTGTAGGAGCTGCAAGAAAATTAGATCAA\n+GAGTTATTTAATGCAATACAAGAAAATATAACGATTGCAGCGCAGCTTGAAAAGGACAGGATTGATTGGC\n+ATTTTATTCCCCCGGCAGGACCTCACTTCGGAGGTATTTGGGAAGCTGGGGTTAAGTCAATGAAATACCA\n+TTTAAAGCGTATAATCGGCGACACAATTTTGACTTACGAAGAAATGTCAACTCTTTTATGTCAAATAAAA\n+GCATGCTTAAATTCAAGGCCATTATACACTATAGTTAGTGAGATGGACCAACAAGAGGTTTTAACACCAG\n+GTCATTTTTTAATTGGAAGACCACCTTTAGAAATAGTCGAACCAATGGAAGATGAAAAAATCGGAAATTT\n+GGATAGGTGGAGACTTATCCAAAAAATGAGGAAAGATATCTGGGTTAAGTGGAAAAGTGAATATTTGCAT\n+ACGCTCCAGCAAAGGAATAAATGGAAAAAGGAAATTCCTAATATAGAAGAAGGGCAAATAGTTTCATTAA\n+AGGATGAGAATTGTCATCCTGCAAGATGGCCTTTAGGAAAGGTGGAAAAGGTCCATAAGGGGAATGATGA\n+TAAGGTCCGGGTGGCTAAAGTAAAGATGCAGGAAGGATATATCACTAGACCCGTTACTAAAATTTGTCCC\n+TTGGAAGGAATAAAGTCTGTTGACAAAAATGAGGCTGACCAGGAGCCAAAAAGGCGAACTAGAGCGACAT\n+CGGGAATGTCCAAGATCGGAATCATCATGGCAATGTTGTTGTTTGTGTTAAGTTGTCAAGTTTCTAGCGC\n+ATTACCTAAAGATATAGCACCAAGATATTCTATAGACAAAATAAATAAAACCTCAGCAATATATCTAGAC\n+CCGCTAGGAGATGTTGAGATTGTGAGTACTTCTTGGAATTTGGAATATTATAAAATGGATCCATATTTTA\n+AAATGTTAACAAAGGGTAATGCGCTTATACAAAGTATGAGGAAAGTTTGCGAAAGACTTCATAGCTTTGA\n+AGAGCAATGTAGTCTAGTCTTAGATAATATGCAAAGGAAGTTGGCCCTGGAATTCTGCCAATGATAATGC\n+ATGATTCAGCCTCTAAAGCCAAAAAAAGTGGCGAACTGCATCTATAAAACAGTAGTCGACTCTAAAAGTT\n+ACTGGGTAGAGTTAGAAAAGAAAAGTAGTTGGTTGTTTAAGGTTCCTGTGAATTCAAAAGTCCGTCTGCA\n+ATGTACTGGCTCTCAAATTGAATTGTTTGATTTGCCTCAGCAAGGAGTTTTAAGCATTGCGCCATATTGT\n+ACGGCAAGAACCGACGATAAAATTATAGTTGCCCACCATAACATTCAGTCCGAAAGTGAAGAATTATTAT\n+CAACACCTTATATAGGAGAAGTTAGTGAAGTGCCGAAGATTATTTGGGATCCGCTGAAACTATCAATATT\n+AAATCATACTGAGGAATTTGAACGATTGAATAATGAAATTAAAAATTGAAAGATTTAGATTTCCATCATA\n+TTTCCGGACATGCTGGATTAATTATTGCTTTAATAATAATGGTAGTATTAATAATATATTTCATACGGAA\n+ATGTGCTGTGCAACAAAGAATGCAAGCCAATAACCTTTGCAGGTCCGTTGCCAGTACTATAAATATCAAT\n+AGTAAATAAAAAATAAAATTATATAACAAAAAAATATATACAGTCCACTATATCGTTGTTTAAGAGAAAA\n+TGTACTTCTACATAGAAAAAGCGAAATGTTTAAAATAAGTTAATTGAGTACAAATTGTTGAATTAAAAAT\n+AATATAAACCATAATTGTAATCCAATAAAATTAAAAGCCAGGAAAACTAGGGCCATTGAATTCTTAGTTG\n+CAAAATAAATGAACATATATCAAATAAATACAGTCCACTACTGTTATAAATGCAACTAATATACTAATGT\n+ACATCTATCTCAGCTTTTCTGGCCCTTTGGCAGAATGTTCACACATGAACACGAATATATTTAAAGACTT\n+ACAATTTTGGGCTCCGTTCATATCTTATGTAAATGAATCGAGAGCGATAAATTATATTTAGGATTTTGTA\n+AGAATAACATATTCTATGTTATTCTATGTTATTCCATGTTATTCTAT\n+\n'