Previous changeset 60:81d535970196 (2024-03-25) Next changeset 62:ab0d6782a95f (2024-03-28) |
Commit message:
planemo upload for repository https://github.com/usegalaxy-eu/temporary-tools/tree/master/jbrowse2 commit 6dde5ad41d63730085116ab2c9a9d3e500a760e4-dirty |
modified:
convertMAF.sh jbrowse2.py maf2bed.pl readme.rst test-data/maf/merlin.maf |
added:
Galaxy-History-jb2testout.tar.gz maf2bed.py test-data/fakemerlins.fa test-data/maf/merlinlastz.maf test-data/merlin.fa.forblastn |
b |
diff -r 81d535970196 -r e7a6f7a7148d Galaxy-History-jb2testout.tar.gz |
b |
Binary file Galaxy-History-jb2testout.tar.gz has changed |
b |
diff -r 81d535970196 -r e7a6f7a7148d convertMAF.sh --- a/convertMAF.sh Mon Mar 25 02:10:05 2024 +0000 +++ b/convertMAF.sh Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -1,7 +1,8 @@ #!/usr/bin/env bash # https://github.com/cmdcolin/jbrowse-plugin-mafviewer/blob/master/bin/convert.sh +# maf2bed modified to work right as a python script by ross lazarus in desperation # MAF file must contain the species name and chromosome name -# e.g. hg38.chr1 in the sequence identifiers. -perl $3/maf2bed.pl $2 < $1 | sort -k1,1 -k2,2n > $4.sorted.bed +# e.g. hg38.chr1 in the sequence identifiers with hg38 passed in as $2 +python $3/maf2bed.py $2 < $1 | sort -k1,1 -k2,2n > $4.sorted.bed bgzip -c $4.sorted.bed > $4.sorted.bed.gz tabix -p bed $4.sorted.bed.gz |
b |
diff -r 81d535970196 -r e7a6f7a7148d jbrowse2.py --- a/jbrowse2.py Mon Mar 25 02:10:05 2024 +0000 +++ b/jbrowse2.py Tue Mar 26 00:52:34 2024 +0000 |
[ |
@@ -442,7 +442,6 @@ style_data, ] } - logging.warn("style=%s" % (wstyle)) return wstyle def process_genomes(self): @@ -610,12 +609,12 @@ uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/fasta/GRCh38.fa.gz.gzi', Cool will not be likely to be a good fit - see discussion at https://github.com/GMOD/jbrowse-components/issues/2438 - """ tId = trackData["label"] # can be served - if public. # dsId = trackData["metadata"]["dataset_id"] # url = "%s/api/datasets/%s/display?to_ext=hic " % (self.giURL, dsId) + hic_path = trackData.get("hic_path", None) useuri = trackData["useuri"].lower() == "yes" if useuri: uri = data @@ -659,9 +658,10 @@ ] } categ = trackData["category"] - fname = "%s.bed" % tId + fname = "%s" % tId dest = "%s/%s" % (self.outdir, fname) gname = self.genome_name + cmd = [ "bash", os.path.join(INSTALLED_TO, "convertMAF.sh"), @@ -671,16 +671,13 @@ dest, ] self.subprocess_check_call(cmd) - # Construct samples list - # We could get this from galaxy metadata, not sure how easily. - ps = subprocess.Popen(["grep", "^s [^ ]*", "-o", data], stdout=subprocess.PIPE) - output = subprocess.check_output(("sort", "-u"), stdin=ps.stdout) - ps.wait() - outp = output.decode("ascii") - soutp = outp.split("\n") - samp = [x.split("s ")[1] for x in soutp if x.startswith("s ")] - samples = [x.split(".")[0] for x in samp] - logging.warn("### maf convert cmd = %s,\nsamples=%s" % (' '.join(cmd), samples)) + mafs = open(data,'r').readlines() + mafss = [x for x in mafs if (x.startswith('s\t') or x.startswith('s '))] + samp = [x.split()[1] for x in mafss if len(x.split()) > 0] + sampu = list(dict.fromkeys(samp)) + samples = [x.split('.')[0] for x in sampu] + samples.sort() + logging.warn("$$$$ cmd=%s, mafss=%s samp=%s samples=%s" % (' '.join(cmd), mafss, samp, samples)) trackDict = { "type": "MafTrack", "trackId": tId, @@ -704,13 +701,13 @@ "displays": [ { "type": "LinearBasicDisplay", - "displayId": "%s-LinearBasicDisplay" % tId, + "displayId": "%s-LinearBasicDisplay" % tId }, { "type": "LinearArcDisplay", - "displayId": "%s-LinearArcDisplay" % tId, + "displayId": "%s-LinearArcDisplay" % tId }, - ], + ] } style_json = self._prepare_track_style(trackDict) trackDict["style"] = style_json @@ -1110,7 +1107,7 @@ pgnames = [x.strip() for x in pafOpts["genome_label"].split(",") if len(x.strip()) > 0] pgpaths = [x.strip() for x in pafOpts["genome"].split(",") if len(x.strip()) > 0] passnames = [self.genome_name] # always first - logging.warn("### add_paf got pafOpts=%s, pgnames=%s, pgpaths=%s for %s" % (pafOpts, pgnames, pgpaths, tId)) + logging.debug("### add_paf got pafOpts=%s, pgnames=%s, pgpaths=%s for %s" % (pafOpts, pgnames, pgpaths, tId)) for i, gname in enumerate(pgnames): if len(gname.split()) > 1: gname = gname.split()[0] @@ -1202,7 +1199,7 @@ outputTrackConfig, ) elif dataset_ext in ("cool", "mcool", "scool"): - hic_url = "%s_%d.juicebox_hic" % (track_human_label, i) + hic_url = "%s_%d.hic" % (track_human_label, i) hic_path = os.path.join(self.outdir, hic_url) self.subprocess_check_call( [ @@ -1215,9 +1212,8 @@ hic_path, ] ) - outputTrackConfig["hic_url"] = hic_url self.add_hic( - hic_path, + hic_url, outputTrackConfig, ) elif dataset_ext in ("bed",): @@ -1305,7 +1301,6 @@ ) # The view for the assembly we're adding view_json = {"type": "LinearGenomeView", "tracks": tracks_data} - logging.warn("### view_json=%s" % view_json) refName = None drdict = { "reversed": False, @@ -1398,7 +1393,7 @@ with open(config_path, "w") as config_file: json.dump(self.config_json, config_file, indent=2) - def clone_jbrowse(self, realclone=False): + def clone_jbrowse(self, realclone=True): """Clone a JBrowse directory into a destination directory. This also works in Biocontainer testing now Leave as True between version updates on temporary tools - requires manual conda trigger :( """ @@ -1550,7 +1545,6 @@ default_session_data["style"][key] = { item.tag: parse_style_conf(item) for item in track.find("options/style") } - logging.warn("### added %s to defsess %s for %s" % (trackkey, default_session_data, key )) else: default_session_data["style"][key] = {} logging.warn("@@@@ no options/style found for %s" % (key)) @@ -1566,7 +1560,7 @@ default_session_data["session_name"] = root.find( "metadata/general/session_name" ).text - logging.warn("default_session=%s" % (default_session_data)) + logging.debug("default_session=%s" % (default_session_data)) jc.zipOut = root.find("metadata/general/zipOut").text == "true" general_data = { "analytics": root.find("metadata/general/analytics").text, |
b |
diff -r 81d535970196 -r e7a6f7a7148d maf2bed.pl --- a/maf2bed.pl Mon Mar 25 02:10:05 2024 +0000 +++ b/maf2bed.pl Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -27,7 +27,7 @@ s/^s //; s/ +/:/g; my $temp = $_; - $buffer = $buffer eq '' ? $temp : "$buffer,$temp"; + $buffer = $buffer eq '' ? $temp : "$buffer;$temp"; } elsif (/^a/) { $score = +(s/^a score=//); |
b |
diff -r 81d535970196 -r e7a6f7a7148d maf2bed.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/maf2bed.py Tue Mar 26 00:52:34 2024 +0000 |
[ |
@@ -0,0 +1,44 @@ +#!/usr/bin/env python +# painfully converted from b0rken perl from +# https://unpkg.com/browse/jbrowse-plugin-mafviewer@1.0.6/dist/ +# license is Apache2_license.txt included here + +import sys + +id = 0 +buffer = '' +start = 0 +end = 0 +score = 0 +chrom = '' + +db = "%s." % sys.argv[1] +# Read input from stdin +for line in sys.stdin: + line = line.strip() + if not line: + continue + + line = line.split() + if line[0] == 's' and line[1].startswith(db): + chrom = line[1] + chrom = chrom.replace(db, '') + start = int(line[2]) + end = int(line[2]) + int(line[3]) + line = line[1:] + line = ':'.join(line) + temp = line + buffer = temp if buffer == '' else f"{buffer},{temp}" + elif line[0] == 'a': + score = int(line[1].split('=')[1]) + if id > 0: + sys.stdout.write('\t'.join([chrom, '%d' % start, '%d' % end, f"{sys.argv[1]}_{id}", '%d' % score, buffer])+ '\n') + id += 1 + buffer = '' + elif line[0] == 's': + line = line[1:] + line = ':'.join(line) + temp = line + buffer = temp if buffer == '' else f"{buffer},{temp}" + +sys.stdout.write('\t'.join([chrom, '%d' % start, '%d' % end, f"{sys.argv[1]}_{id}", '%d' % score, buffer]) + '\n') |
b |
diff -r 81d535970196 -r e7a6f7a7148d readme.rst --- a/readme.rst Mon Mar 25 02:10:05 2024 +0000 +++ b/readme.rst Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -1,5 +1,10 @@ JBrowse2 in Galaxy ================== +Added Mar 26: +Testing history added with tests of the 8 simple formats +hic and paf need small tests but work with big ones... + + Added Mar 8: - URI as data source for tracks - Autogenerate from a collection now builtin to advanced options - ignores form |
b |
diff -r 81d535970196 -r e7a6f7a7148d test-data/fakemerlins.fa --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/fakemerlins.fa Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -0,0 +1,12 @@ +>Merlin1 +ATGTAAGCTCAGGAGCTCCACACGCAACAGGAACACAACCTGTGAACATTATCACAGTAT +>Merlin2 +ATGAATTTATCAGTCCAATACTTAAAATGAATACGAAGTAAATCTATGCCTAATACTAAT +>Merlin3 +TAATCAACGTGTGATGCTTCAAGCCAAGCTTAGGAATAGAAATGGTTTTGCCATTGACTT +>Merlin4 +AAAAGCTTATTGCTTAAGCCTACAGTTAAACTCGCTATTCCAGTTAAATGCGATAAATGT +>Merlin5 +TTTTCTTTGCTAATTTAACACCAAGAGCTGCAATCCATTGGTTTCTTCGTTTATATCCTG +>Merlin6 +ATACTGCATCCTTTTGATACCAATGCGGTTCAATTTGAGTGTTACCAGAGTATATCTTGA |
b |
diff -r 81d535970196 -r e7a6f7a7148d test-data/maf/merlin.maf --- a/test-data/maf/merlin.maf Mon Mar 25 02:10:05 2024 +0000 +++ b/test-data/maf/merlin.maf Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -1,32 +1,38 @@ ##maf version=1 scoring=lastz.v1.04.22 # lastz.v1.04.22 --strand=both --ambiguous=iupac --traceback=160M --format=maf --action:target=multiple # -# hsp_threshold = 3000 -# gapped_threshold = 3000 -# x_drop = 910 -# y_drop = 9400 -# gap_open_penalty = 400 +# hsp_threshold = 3000 +# gapped_threshold = 3000 +# x_drop = 910 +# y_drop = 9400 +# gap_open_penalty = 400 # gap_extend_penalty = 30 -# A C G T -# A 91 -114 -31 -123 -# C -114 100 -125 -31 -# G -31 -125 100 -114 -# T -123 -31 -114 91 +# A C G T +# A 91 -114 -31 -123 +# C -114 100 -125 -31 +# G -31 -125 100 -114 +# T -123 -31 -114 91 + a score=5613 s Merlin.Merlin 960 60 + 172788 ATTTTCTGTAGCAGTTCAAACTGTAGAAAATGATGAAGTTATTTTAACTTTACCAGCTTT -s merlin1.Merlin 960 60 + 60 ATTTTCTGTAGCAGTTCCAAACTGTAGAAAATGATGAAGTTATTTTAACTTACCAGCTTT +s merlin1.Merlin 960 60 + 60 ATTTTCTGTAGCAGTTCCAAACTGTAGAAAATGATGAAGTTATTTTAACTTACCAGCTTT + a score=5667 -s Merlin.Merlin 1020 60 + 172788 CGTAATTTTCCGCAAATAAAACAATGGGGAGCTATGCTCCCCATTTTTACAATCCAAGTA -s merlin2.Merlin 0 60 + 60 CGTAATTTTCCGCAATAAAACAATGGGGAGCTATGCTCCCCATTTTTACAATCACAAGTA +s Merlin.Merlin 1020 60 + 172788 CGTAATTTTCCGCAAATAAAACAATGGGGAGCTATGCTCCCCATTTTTACAATCCAAGTA +s merlin2.Merlin 0 60 + 60 CGTAATTTTCCGCAATAAAACAATGGGGAGCTATGCTCCCCATTTTTACAATCACAAGTA + a score=5721 -s Merlin.Merlin 1080 60 + 172788 TTTTCGAAGTAGAGTTTCGGGTCGAATTAATGACGTGAGACAACCCTCCAGCAGCTCCTC -s merlin3.Merlin 0 60 + 60 TTTCGAAGTAGAGTTTCGGGTCGAATTAATGACGTGAGTACAACCCTCCAGCAGCTCCTC +s Merlin.Merlin 1080 60 + 172788 TTTTCGAAGTAGAGTTTCGGGTCGAATTAATGACGTGAGACAACCCTCCAGCAGCTCCTC +s merlin3.Merlin 100 160 + 60 TTTCGAAGTAGAGTTTCGGGTCGAATTAATGACGTGAGTACAACCCTCCAGCAGCTCCTC + a score=5613 -s Merlin.Merlin 1140 60 + 172788 CAAGTCTAGATAATCTACTTAAACTTCCATTAAGAGACATTTCACTATTAATTCCAGTTA -s merlin4.Merlin 0 60 + 60 CAAGTCTAGGATAATCTACTTAAACTTCCATTAAAGACATTTCACTATTAATTCCAGTTA +s Merlin.Merlin 1140 60 + 172788 CAAGTCTAGATAATCTACTTAAACTTCCATTAAGAGACATTTCACTATTAATTCCAGTTA +s merlin4.Merlin 200 260 + 60 CAAGTCTAGGATAATCTACTTAAACTTCCATTAAAGACATTTCACTATTAATTCCAGTTA + a score=5703 -s Merlin.Merlin 1200 60 + 172788 TAGAATTAACAGCTCTATCTTCAATCCAATCAAGAGCAGCTTGACGTCCAACAGCACCCG -s merlin5.Merlin 0 60 + 60 TAGAATTAACAGCTCTATTCAATCCAATCCCAAGAGCAGCTTGACGTCCAACAGCACCCG +s Merlin.Merlin 1200 60 + 172788 TAGAATTAACAGCTCTATCTTCAATCCAATCAAGAGCAGCTTGACGTCCAACAGCACCCG +s merlin5.Merlin 300 360 + 60 TAGAATTAACAGCTCTATTCAATCCAATCCCAAGAGCAGCTTGACGTCCAACAGCACCCG + a score=5649 -s Merlin.Merlin 1260 60 + 172788 TTTGCATTACTCTGTAAGCAAATGTAACATCGAAAACCGCAATTTGGTTATCTCCTTCAT -s merlin6.Merlin 0 60 + 60 TTTGCATTACTCTGTAAGCAA TGTAACATCGAAAACCGCAATTATGGTTATCTCCTTCAT +s Merlin.Merlin 1260 60 + 172788 TTTGCATTACTCTGTAAGCAAATGTAACATCGAAAACCGCAATTTGGTTATCTCCTTCAT +s merlin6.Merlin 0 60 + 60 TTTGCATTACTCTGTAAGCAATGTAACATCGAAAACCGCAATTATGGTTATCTCCTTCAT |
b |
diff -r 81d535970196 -r e7a6f7a7148d test-data/maf/merlinlastz.maf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/maf/merlinlastz.maf Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -0,0 +1,37 @@ +##maf version=1 scoring=lastz.v1.04.22 +# lastz.v1.04.22 --strand=both --ambiguous=iupac --traceback=160M --format=maf --action:target=multiple +# +# hsp_threshold = 3000 +# gapped_threshold = 3000 +# x_drop = 910 +# y_drop = 9400 +# gap_open_penalty = 400 +# gap_extend_penalty = 30 +# A C G T +# A 91 -114 -31 -123 +# C -114 100 -125 -31 +# G -31 -125 100 -114 +# T -123 -31 -114 91 +a score=5703 +s Merlin.Merlin 1320 60 + 172788 ATGTAAGCTCAGGAGCTCCACACGCAACAGGAACACAACCTGTGAACATTATCACAGTAT +s Merlin1.Merlin 0 60 + 60 ATGTAAGCTCAGGAGCTCCACACGCAACAGGAACACAACCTGTGAACATTATCACAGTAT + +a score=5595 +s Merlin.Merlin 4020 60 + 172788 ATGAATTTATCAGTCCAATACTTAAAATGAATACGAAGTAAATCTATGCCTAATACTAAT +s Merlin2.Merlin 0 60 + 60 ATGAATTTATCAGTCCAATACTTAAAATGAATACGAAGTAAATCTATGCCTAATACTAAT + +a score=5667 +s Merlin.Merlin 5220 60 + 172788 TAATCAACGTGTGATGCTTCAAGCCAAGCTTAGGAATAGAAATGGTTTTGCCATTGACTT +s Merlin3.Merlin 0 60 + 60 TAATCAACGTGTGATGCTTCAAGCCAAGCTTAGGAATAGAAATGGTTTTGCCATTGACTT + +a score=5640 +s Merlin.Merlin 7740 60 + 172788 AAAAGCTTATTGCTTAAGCCTACAGTTAAACTCGCTATTCCAGTTAAATGCGATAAATGT +s Merlin4.Merlin 0 60 + 60 AAAAGCTTATTGCTTAAGCCTACAGTTAAACTCGCTATTCCAGTTAAATGCGATAAATGT + +a score=5649 +s Merlin.Merlin 9720 60 + 172788 TTTTCTTTGCTAATTTAACACCAAGAGCTGCAATCCATTGGTTTCTTCGTTTATATCCTG +s Merlin5.Merlin 0 60 + 60 TTTTCTTTGCTAATTTAACACCAAGAGCTGCAATCCATTGGTTTCTTCGTTTATATCCTG + +a score=5658 +s Merlin.Merlin 10380 60 + 172788 ATACTGCATCCTTTTGATACCAATGCGGTTCAATTTGAGTGTTACCAGAGTATATCTTGA +s Merlin6.Merlin 0 60 + 60 ATACTGCATCCTTTTGATACCAATGCGGTTCAATTTGAGTGTTACCAGAGTATATCTTGA |
b |
diff -r 81d535970196 -r e7a6f7a7148d test-data/merlin.fa.forblastn --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/merlin.fa.forblastn Tue Mar 26 00:52:34 2024 +0000 |
b |
@@ -0,0 +1,86 @@ +>Merlin +AGAGCTTAAGAAAATTTTAGGCGATAAGAAGCTTCAAAGTACTCCAATTGGACGTTTTGG +AATGAAAGAAAACGTTGATACTTATATTGAAAGTGTAGTGACAGGGCAGTTAGAAGGTGA +ATTTTCTGTAGCAGTTCAAACTGTAGAAAATGATGAAGTTATTTTAACTTTACCAGCTTT +CGTAATTTTCCGCAAATAAAACAATGGGGAGCTATGCTCCCCATTTTTACAATCCAAGTA +TTTTCGAAGTAGAGTTTCGGGTCGAATTAATGACGTGAGACAACCCTCCAGCAGCTCCTC +CAAGTCTAGATAATCTACTTAAACTTCCATTAAGAGACATTTCACTATTAATTCCAGTTA +TCTCTTCTGATAACTCGTTCCAAGGTATTATTTTCCCTTGGTATTTAATTGATTTCACAC +AGGAAGATGCCATCTGTATTCCAGAAACTGCAACCGTTGAAGAAATATCTAAAATAATTG +AAGATAGCGCAGTTGTAATTGAATCAGAAAAGTTTGAATTACCTGAAGGATTTTCTCCTC +ATTTTGAACTAATTGGAAAGGCTCCAGGATATTGTACTCTTCCTTGGTGGATTTATGAGT +GTAAATTCATTGAACGTATCCGTAGTGCTGGATTTGATTTGACAGAAACATGGGTAGCTCG +TGAAAAGATTCATGGTACTAACTTTTCTATTATCATCACCAAAGACACAGTAACGTGTGC +GAAGCGCACCGGACCTATTCTTGAAGCTGAAGACTTCTTTGGTTACGAGATTATTCTTAA +GAAGTATGATAAGTCTATTAAAGCTCTCCAGGACACAATGAAGAATATGACCACAGAATC +TACCGATTTAATTGCAAATATTTTTGCTGAACCGTTTACATCAGTTCAGCAATTTGATAT +TATTACCTCATACCAAACAAATAGTAACTCGGAGAATAAAATGACAACCATCACTATCAA +CAAAGGTATTAACTTCGGTAAAGAAATTTCTGGCACTTTCGAATTAGTCGGAGAATGGTT +CCCAGAAACTCTGAAACCCGAAGATGCTGCTCAAGGTGATGGTAAAGTTTTCGTTATCAT +TAGAAGATATTAAAAACACCATGAACCGCTCAGAGATTTTGAATGAACTTCAACGCTGCG +TACAACGAGTTGATGATGAATACCACTTACCAACCAACGCATGGGAAGTCTGGTTCCGAG +GTTCTCATCTCGGCTCGATTGAACTGAAAGCCAAAGGTTGTTATGCAGTTTATAGTTCTC +TTGGTCGTCATTGCGGTGATTGTCAGAACTTTATGCAAGCACTGGCTCGCTTCATTAATT +CATGCGCAGTCATTATCGCCAAGCAGCAAATCGAAGAAACCGAAAAATGGATTGACGAAG +TAACTAAAGAGCCAGAAATTCGTCGTTGGGGCGTTACTCGTAAATCTCGTTGGATTGATA +AAGTCAAAGGGTGGTTCAAATGATGGAAACGATGAATCAAAATAATGAATTGGCGGTTCC +GCGTCACTCTTAACCCAAGTCATTCCCAAAATAAAAAACACAATTAACACAAAAACCCGG +GAGAAAAGAACTCTCCCGGTTGCATTATCTTTGAATACTCTATCCCAAACTCCAAAAACG +ATGTCTGTTATTGGCAGACTAATTTTTGAAGCCATAAGTTTTCTCCTTTGGAATATTTAT +ACTCGAGATCCATATATAGTGCCTACGTTTTGCCATGTTGGAGCAGTACCAGCAACAGCT +GCTCCACCACCTGCAGGACCCCATCGCCAGCCGGATTCAAAGTTACCGAATGCCGGGTTA +TGTTGACGCATCCAACCAATTAGCCAATCTTTATTATAATTATGGTTAGCTGCCAAGTCA +ATAACAACTTCTCTCGATCGACCTATCAAGTGTGACATCCAAAATGGAGTCCCTAATCTT +ACTTGTGATGCAGCAGTTGACATCCAACGTTGTCCAGTTTCGGCTACTGCACTACTTCCA +ACCCATGGTCCTGTTATAGCCATAAAAACTCCTAGGGCCCGAAGGCCCTTTATTAAATTA +ATGCAGAAATGATTTCTTCAAGCTTCTGAATGCGAGCTTTTAATTCAGAAATCTCATCAG +TGTGTTCGTTAATTGTTGCAGTGTTTAGCGCAATAATACCATTGTAGTTTAGACGAAGTA +ATCCTTCTGGATTATCTTTATCGACTGAAATCAACTCAGGCAATACAGCTTGAACTTCTT +GAGCAATTAAACCGGATGACTGTTCCCAATTAATAGAGCCGTCTTCTTTGAACCCTTTCT +GAAATAAAACGTGAGCACCTAGAAACTCTCAGAGGAATGAGACTAGGTTGTACATGTCAC +CCGCTTAATTGCCATGGTGATATAATAGCTCATATAGTTAACAGACTTTTTAAAGACGAC +TTCAGAGTAGAGGATTTATGCAATTAATTAAGTCATCAGGAATTGGACAAGATTTTATCC +TTGCTTCTAATCTGGCTATGTTTGCGCTACGCAAAGAAGTGTACGGACAATTCGAGCCAC +CATCATTTATCGACCATATTTCTTATTGTGTTAATGAACGCAAATATGATCCGGAATTAT +TGTCCAAATACAGCGCAGAAGAAATTACTTATCTGGAATCGCGAATTGTACATGACCGAG +CATCTAGCCAAGTTTCGAACTCCACGAATGGTATTGAGCCACCACGCGGGCCGGTAAGTA +TTAAAGAATCTAAAGAAGGTTCTTTCCGCCAGGTAGTTCCGAATATTGAGCATAATGCTG +AACTTTACGATTATGCTTGGCTGATGGCTAAACGTGGTAATAAAGGTTACTTGACTCAAG +TTGCTATTATGACAAAGTGGCTTTGCCAATCAGCTTCAGCGAATACTTATTACGATCCGC +AGAACTTTGCTAAAGGTAAAGTTTCGATGGCTCAGATGCTTGAAGACTTGATTTACTTCT +GGTTCTTCGGTGGTAAGACTTTGTATTACCATAACACCCGCGATGGTTCAGGAACAGACG +ATTACGAAATCGAAACTCCAAAAGCCGATGACTGTGCCGCTTGTAAACTATGATATAATT +GGACCACGGATGGTCCTAGGAGTATATTATGGGATGTAAAGAATTCACTTTACCGCCTCT +TCCAATTCAACCACGGCCAAAGCCGCCAAGGGTTCCTAAATGAGTACAGTTTTTAACACT +GGTCGTGCACCTGCTGCTGTCTTGTCTGCTCTGATTAGCGATCCTTCTTTGGATACTTGG +GACTTAATGAAGAGTCTTTATCTCTGTCTTCATGTAATCAATGCTCTTGAAGCTATTAGA +TTTTATGTATCTTTCGCTTGTACTTTCAACTTCCATAAGAACATGGAAATCATGGAAGGT +AACGCAAAGATCATGAAGTTCATTGCTCGTGATGAACAACTTCATCTGAAAGGCACTCAG +TACATTATTCGTCAGCTTCAACAAGGTACCGACGGTGAAGAATGGGCTGAAATTGCTCGT +GAATGCGAACAAGAAGCAGTTAACATCTTCATGGAAGTTAACCGCCAAGAAAAAGAATGG +TAATCTACAGAAACTCGTCAATCATGCAGTAGAAATTATGGAAGGTGAATAATGAAACAA +CTTTATGAAAATCTGATGGCTCTATGTGATGCGAAGGATGAATCCAAATTCTACTTCACT +GACGATGTGTCTCCATCTGGCAAAGAATATCGAATCTTTAGCTATAACTACGCATCTTAT +TCTGATTGGCTACTGCCTGATGCTTTAGAATGCCGTGGCATTATGTTTGAAATGATGAAT +AAATGAGTCGTTCAATAAGTTCGCTCTGGATTTACAGGAGACTACTAGATGAAATGTTTA +GTGGCAGCTGTAATAACTATTGGACTACTATCTGGATGTTCCCAGAGTGTACCAGAGGTT +CCCAGAGATAACACTCTACACCCATCATGGCCTGATCCAATAAAGCCATACACTGGTAAG +TGGCAAGTCAAGATAATTGACGATCGCCCATGGGTTGGAATGCCTTTTGATGAATCTCAG +GAATTCAGAATTTGGATGAATGACGTCAATCGTTGGGCTAAAGATGCTAATGGAATGATA +TGTTACTATCGTAAAGACTTAAACGAAACAAGGTGCAAGCAATGGACCCGTTAGTAGTTC +CAACTCCGACTTTATTCGTTATCTGTCGGCTTATGATGATGCTCTTAAGGTAGTTAATGA +GCTCAAGAAGCATTACGATTTTGTTGCAGTAACTGCATTAGGTAACTCAGTAGATGCTCA +CCTGAATCGCCAGTTTAACTTGAGTGCATTGTTTCCGGGAGCCTTTAAAGATATATACGT +AAGCGAATTACTTCAAAAGCTAATCAGGAACAGCGTGAAATGCAAGATGCGGTATTCAAT +GGAGCTTTGTACATCACTACTCTTCCAAACGGTGGAGATATCTATCACCGAACTCTGGCA +GAATTGATTCGCGAATATAAGTCAAAGATCTAGCTTATCGAGGGGTGTGATATAATAGTC +ATATCCCTAAACACAAAGAGAAAATTATGATTCTTGAAATTATCAATGAAATCGCGTCTA +TAGAATCAGAATGCGGATTAATCAAAACTAAATCAGGTTCTGGATTAAAAGATAAACCGG +GTCCAGATTCGCATGAGTTAGACCGTACTCGTATTTGGGAAAACCAAAATGATTATATTG +CGATTGATAGCTGGGGTGAATACAACTAACTCCTTTCAGACGATGAAAGATTTAGTTAAA +ATGGCTTCAGCTGGAACTAGACCTGAAGATCGTGAACAGTTAATTGCAAATTTAATTGGA +TTAGCTTATAAAGAAATAAGTGCAATCATCAGAGATTCATACCAAACTGCAGCAAGTTTA +TCTAAAGAGAATGATCATTATTCTAAAGATGAAAAACAAGCTATCAGTGAATACTGCGCA +AACGCTTTCGAATACGTGAATATGTTCTTAATCGGTAAGCCGGAAGAAGGGTATTCAACT +TCTGATTCTCTCGAGATCATCGATAATATGGACTCTGCGTTTGAAAAAGGAACTCGTTTA +GACAAAGGTACATTATTGTATCGTGGCCAAAAATTAGACCTTCCTACA |