Repository 'genbank_to_fasta'
hg clone https://toolshed.g2.bx.psu.edu/repos/portiahollyoak/genbank_to_fasta

Changeset 0:bcdd1a35e545 (2016-04-22)
Commit message:
planemo upload for repository https://github.com/portiahollyoak/Tools commit 132bb96bba8e7aed66a102ed93b7744f36d10d37-dirty
added:
genbank_to_fasta.py
genbank_to_fasta.xml
test-data/genbank_input.txt
test-data/output.fasta
b
diff -r 000000000000 -r bcdd1a35e545 genbank_to_fasta.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genbank_to_fasta.py Fri Apr 22 12:09:14 2016 -0400
[
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+import argparse
+import doctest  # This will test if the functions are working
+
+
+def get_id(line):
+    """
+    This function reads a line and returns the ID name
+    
+    >>> line = 'ID   TE    standard; DNA; INV; 7411 BP.'
+    >>> 'TE'== get_id(line)
+    True
+    
+    """
+    if line.startswith("ID"):
+        id = line.split("   ")[1] #split line into 'ID' and rest of line, take rest of line and define as id
+        id = id.split(" ")[0] #split id into 'ID name' and rest of line, take ID name and define as id
+        return id
+
+
+def get_seq(line):
+    """
+    This function reads a sequence line from a genbank file
+    and returns a sequence with no spaces or digits
+    
+    >>> line = "AGTGACATAT TCACATACAA AACCACATAA CATAGAGTAA ACATATTGAA AAGCCGCATA        60"
+    >>> 'AGTGACATATTCACATACAAAACCACATAACATAGAGTAAACATATTGAAAAGCCGCATA' == get_seq(line)
+    True
+    
+    """
+    seq = []
+    for char in line:
+        if not char.isdigit() and not char == " ":  # If a character is not a digit or space, 
+                                                    # it will be added to sequence.
+            seq.append(char)
+    seq = "".join(seq)
+    return seq
+
+
+def make_seq_dictionary(input_file_handle):
+    """
+    This function loops over a multi genbank file and returns
+    a collection of ID and corresponding sequence in a dictionary.
+    """
+    seq_d = {}  # dictionary with id as key and sequence as value
+    next_line_is_seq = False
+    for line in input_file_handle:
+        line = line.strip()  # strips any leading or trailing whitespace
+        if line.startswith("ID"):
+            id = get_id(line)
+            seq_d[id]=""  # We just create a new key
+        if line.startswith("SQ"):
+            next_line_is_seq = True  # If line starts with 'SQ' then state is true
+            continue
+        if line.startswith("//"):  # If line starts with '//' then state is false
+            next_line_is_seq = False
+        if next_line_is_seq:  # Whatever has been read as true, this is copied to file
+            seq = get_seq(line)
+            seq_d[id] += seq
+    return seq_d
+
+
+def write_seq_d_to_file(seq_d, output):
+    """
+    This function will write the sequence dictionary to an output file
+    """
+    for transposon, seq in seq_d.items():
+        output.write(">%s\n" % transposon)
+        output.write("%s\n" % seq)
+
+description = ( "This script will extract ID names and sequences from a multigenbank"
+               "file and format them into a multifasta file." )
+
+
+parser = argparse.ArgumentParser(description)
+parser.add_argument("input", help="A multi-genbank file.")
+parser.add_argument("output", help="Name of the output fasta file.")
+args = parser.parse_args()
+
+try:
+    with open(args.input, encoding = "utf-8") as input_file_handle:
+        # This will perform the tasks
+        seq_d = make_seq_dictionary(input_file_handle)
+except TypeError:
+    with open(args.input) as input_file_handle:
+        seq_d = make_seq_dictionary(input_file_handle)
+
+with open(args.output, "w") as output:
+    write_seq_d_to_file(seq_d, output)
+
b
diff -r 000000000000 -r bcdd1a35e545 genbank_to_fasta.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genbank_to_fasta.xml Fri Apr 22 12:09:14 2016 -0400
b
@@ -0,0 +1,58 @@
+<tool id ="genbank_to_fasta" name="Convert multigenbank to multifasta" version=" 0.1.0">
+    <description></description>
+    <stdio>
+        <exit_code range="1:" />
+    </stdio>
+    <command>python $__tool_directory__/genbank_to_fasta.py "$input" "$output"</command>
+    <inputs>
+        <param format="txt" name="input" type="data" label="Multigenbank file"/>
+    </inputs>
+    <outputs>
+        <data format="fasta" name="output" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" value="genbank_input.txt"/>
+            <output name="output" file="output.fasta"/>
+        </test>
+    </tests>
+    <help>
+
+This tool converts a multigenbank file into a multifasta file.
+
+-----
+
+**Example multi genbank file** ::
+
+    ID   DME9736    standard; DNA; INV; 7411 BP.
+    XX
+    CC   Derived from AJ009736 (e1371475) (Rel. 58, Last updated, Version 1).
+    CC   Takis Benos and Michael Ashburner, 1-Feb-1999.
+    CC   Any changes to original sequence record are annotated in an FT line.
+    XX
+    SQ   Sequence 7411 BP; 3047 A; 1363 C; 1109 G; 1892 T; 0 other;
+         GTGACATATC CATAAGTCCC TAAGACTTAA GCATATGCCT ACATACTAAT ACACTTACAA        60
+         CACATACACC CCAATACAAC ATACACTACT CCGGATGTAC CCAACAGATA CCAGATAAGA       120
+         ATAAGATTGT TATATGATCC TCGAGAATGG AAAAAACCCC AATTCTAGAT AAGTCACCCA       180
+         CTGGTAGACT AAACATCCGT CCCCTAATTT AAACAATTCC TTGCTTAAGC CTCACCCCAT       240
+    //
+    ID   DMIS176    standard; DNA; INV; 7439 BP.
+    XX
+    CC   Derived from X01472 (g8142) (Rel. 36, Last updated, Version 2).
+    CC   Takis Benos and Michael Ashburner, 20-Aug-1997.
+    CC   Any changes to original sequence record are annotated in an FT line.
+    XX
+    SQ   Sequence 7439 BP;  2985 A; 1512 C; 1048 G; 1894 T; 0 other;
+         AGTGACATAT TCACATACAA AACCACATAA CATAGAGTAA ACATATTGAA AAGCCGCATA        60
+         CGTAAACAAT AAGTGACCAC CATGCTAATG TGGATCAAAT AACAAAAATA TCCACTCTGC       120
+    //
+
+**Example output fasta file** ::
+
+   >DME9736
+   GTGACATATCCATAAGTCCCTAAGACTTAAGCATATGCCTACATACTAATACACTTACAA....
+   >DMIS176
+   AGTGACATATTCACATACAAAACCACATAACATAGAGTAAACATATTGAAAAGCCGCATA
+
+    </help>
+</tool>
b
diff -r 000000000000 -r bcdd1a35e545 test-data/genbank_input.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/genbank_input.txt Fri Apr 22 12:09:14 2016 -0400
b
b'@@ -0,0 +1,388 @@\n+ID   DME9736    standard; DNA; INV; 7411 BP.\n+XX\n+AC   AJ009736;\n+XX\n+DR   FLYBASE; FBgn0026065; Idefix.\n+XX\n+FT   source          AJ009736:1..7411\n+FT   SO_feature      five_prime_LTR ; SO:0000425:1..600\n+FT   SO_feature      three_prime_LTR ; SO:0000426:6841..7411\n+FT   SO_feature      CDS ; SO:0000316:<988..2031\n+FT                   /name="Idefix\\gag"\n+FT                   /db_xref="FLYBASE:FBgn0027381"\n+FT                   /db_xref="SPTREMBL:O96739"\n+FT                   /db_xref="NCBI_PROTEIN:CAA08806.1"\n+FT                   /translation="ARKLKDIMAVPQLSETHLNQLLNQIKELNYYDGAPGKLSGFVNQV\n+FT                   EQLLSLYPTQEARQAHVIYGAVKRLLVDSALEVVTQERANTWLDMKKALAMAFKDHRPY\n+FT                   VTLIRQLEDISYPGSICKFIEKLETQYWIMFDKLELESDHVDKSNYTEMLNKTVKSVID\n+FT                   RKLPDRIYMSLARKDIDTIYKLKQASMELGLYDAIPENHRSNRTEMNKRRNRGNYNQNN\n+FT                   NQKYYNNRNHNYSNYYPSMNQNHNTQPPQNPTQPMTNQNQYSPRFIPNNQRGNYYAFRR\n+FT                   DLTQAQQNNPLNNTLNFQPSTSNNINRQGPVKRQRESQSDQSRMDVNFHQAASDTQMIE\n+FT                   KDIQVPM"\n+FT   SO_feature      CDS ; SO:0000316:<1950..5402\n+FT                   /name="Idefix\\pol"\n+FT                   /db_xref="FLYBASE:FBgn0027380"\n+FT                   /db_xref="SPTREMBL:O96740"\n+FT                   /db_xref="NCBI_PROTEIN:CAA08807.1"\n+FT                   /translation="PKQDGCKFSSSCLGHSNDREGHTSPYVKIIHHNKNYKGMIDTGSS\n+FT                   INIIRENFENLEEKEENLIVYTIKGPITLKRSIIIKPTSVCPSAQKFYIHKFSDNYDFL\n+FT                   LGRKYLEDTKAKIDYANETVTLGSKVFKFLYEEKKGETASKCLDPQEKNDSALVDRTKP\n+FT                   KMQKVKTAPKCLKPKHQQQKKETALPKCLISNVVKDTVDNDVTHLDPMSVDNDIVNFAI\n+FT                   NNELRECNEYRLEHLNAEEVECLKKFLYEYRDIQYKEGENLTFTSTIKHVIQTQHEDPV\n+FT                   YRKPYKYPQSVDQEVNKQIKEMIEQGIVRKSKSPYCSPIWVVPKKADASGKQKFRLVVD\n+FT                   YRNLNEITVNDKFPIPRMDEILDKLGRCQYFTTIDLAKGFHQIQMDENSIAKTAFSTKH\n+FT                   GHYEYTRMPFGLKNAPATFQRCMNNLLEDLIYKDCLVYLDDIIVYSTPLEEHILSLKKV\n+FT                   FEKLRDANLKLQLDKCEFMKKETEFLGHIVTTNGIKPNPNKTKAITNFPLPKTPKQIKS\n+FT                   FLGLCGFYRKFIPNFAKIVKPMTLKLKKGAIIDTKCKEYIESFEKLKVLITSDPILIYP\n+FT                   DFSKPFSLTTDASNVAIGAVLSQNHKPVCYASRTLNEHEINYATIEKELLAIVWATKYF\n+FT                   RSYLFGRPFEVLSDHKPLVWLNNIKEPNMKLQRWKIKLNEFDYKIKYLPGKENHVADAL\n+FT                   SRTKIEVMVGEVANSADATIHSAIEDNLNYIPITERPINYFSRQIEIEKGDNDTTSVQH\n+FT                   LFQKLKIKIVYKEMTPELAKNLIKEYVCTKKSAIYFPNDEDFLIFQRAFTEIISPNNFT\n+FT                   KLLRCTTKLIDILTYAEFKDLILKKHKELLHPGIEKTINLFKEEYYYPDSQKLIQTIIN\n+FT                   ECQICYLAKTEHQTQMTYETTPEIFNTREKYMIDFYLTGNQIFLSCIDIYSKFASLVEL\n+FT                   KSRDWLEAKRAITKIFNDMGKPQEIKADKDSAFMCLALQNWLRSEGVQISISTSKNGIS\n+FT                   DIERFHKTVNEKLRIIGSQQNVEDRCTKFERILYIYNHKTKHNSTKRFPADIFLYAGSP\n+FT                   DFNVQQNKIDRIEYLNKNRHDFEVDIKYRQAPLVKSKITNPFKKTGRIGQVDDKHFEET\n+FT                   NRGRKIVHYKSKFKKQKKFNKSKYDNSRPTKEAQSTQHTSNNA"\n+FT   SO_feature      CDS ; SO:0000316:5248..6780\n+FT                   /name="Idefix\\env"\n+FT                   /db_xref="FLYBASE:FBgn0027382"\n+FT                   /db_xref="SPTREMBL:O96741"\n+FT                   /db_xref="NCBI_PROTEIN:CAA08808.1"\n+FT                   /translation="MINISKKQIVAGRSFTISQNLRNRKSLIRANMIIPDQPKKHKVHN\n+FT                   ILLIMLSCILSLIITVKCNNIEVNPVNAKNGYLIFQTGTMEIPTSYEYHYLSINITKTM\n+FT                   LMFEDIVSEANNYPNVPQIQYLVDKLKREINGLRIISRSKRGLLNVVGKAYKYLFGTLD\n+FT                   EDDREELEEKINNMSEDSVKTHDLNTILDVINSGIDIINKLKVDKEQHQQIAVLIFNLE\n+FT                   QFTEYIEDIELGLQLTRLGIFNPRLLKHDYLKHVNSEKMLKIKTSTWLKTDTNEILIIS\n+FT                   HIPSEVTKVPIFQIVPYPDEHNYILTEQIFDKFYIFDNQVFHKDTNRDIFDKCIIGIIK\n+FT                   QEQTQCKYIKTHKNYQINYIEPNILLTWNIPETAVNQDCTHNKILISGNNIIKIKNCTI\n+FT                   QIDEFLISNNLADFTQTIYITNNVTRLEPINHLQTREMIETHVKHYNFFQIICITTFVI\n+FT                   MIISLTLYVAYKFKNIPKKIIVNIVSKKNTRTLKIMSMKIFNKEIILPYTQI"\n+XX\n+CC   Derived from AJ009736 (e1371475) (Rel. 58, Last updated, Version 1).\n+CC'..b'AAATCCTGC GTAGCACGAT      4560\n+     TTTGTTAAAA AACATAACCA CTTATGCGGA ATTTAAGGAA TTGATCTTGA CTGCTCATGA      4620\n+     AAAACTTCTA CACCCAGGCA TACAGAAAAC TACTAAACTT TTCGGAGAAA CTTACTATTT      4680\n+     CCCTAATAGC CAGCTACTTA TTCAGAATAT AATAAATGAG TGCAGTATTT GCAATCTGGC      4740\n+     AAAAACAGAG CACCGAAATA CAGACATGCC AACGAAAACC ACACCCAAAC CAGAACATTG      4800\n+     CCGCGAAAAA TTCATGATAG ACATTTACTC ATCCGAAGGC AAACATTACG TTAGTTGCAT      4860\n+     AGACATTTAT TCGAAATTTG CCACATTAGA AGAAATAAAA ACAAAAGACT GGATAGAATG      4920\n+     CAAAAACGCG CTTATGCGCA TATTCAACCA GCTTGGCAAG CCAAAGTTAC TAAAGGCGGA      4980\n+     CAGAGACGGC GCATTTTCCA GTTTAGCCCT CAAGAGATGG CTGGAGAGTG AGGAAGTCGA      5040\n+     ATTGCAGCTT AACACAACAA AAACTGGTGT GGCGGACATA GAAAGACTAC ATAAAACAAT      5100\n+     TAATGAAAAG ATTCGCATAA TCAAAACATC CGATGACGAA GAAACCAAAT TGAGCAAAAT      5160\n+     GGAAACAGTA CTTAACATAT ACAATCATAA AACCAAACAC GACACCACTG GACAGACCCC      5220\n+     TGCACACATA TTTCTCTACG CTGGACAACC AATATTAGAT ACCCAACAAA ACAAAGAAAA      5280\n+     CAAAATAAAC AAAATAAATA ATGACAGAGT GGAGTACGAA GTCGACACAA GATACAGAAA      5340\n+     AGGTCCACTA CAGAAAGGCA AATTAGAAAA TCCTTTTAAG CCAACAAAAA ATGTGGAGCA      5400\n+     GACTGACTCT GATCATTATA AAATTACTAA TAGAAATAGA ATTACTCACT ACTACAAAAC      5460\n+     ACAATTCAAA AAACGAAAGA AAAATAATCA GCTCTCAATT TCACAGGCAC CTGGCACTTG      5520\n+     ATAACATTGC TGCTGATGCT GATCACAACA GTTCATGGAC AACAAATTGA AATTAATAAT      5580\n+     ATTGACACAA ACCACGGATA TCTCCTTTTT TCTGATAAAC CAGTCCAGAT ACCATCATCC      5640\n+     TTTGAACATC ATTGCTTGAG AATCAATTTA ACTGAAATAG ACACCATAGC TGATTATTTT      5700\n+     GAGCAAAGAC TACGTACCGA CTACCATGCA CCCCAGGTCA AATTTTTATA CAACAAAATG      5760\n+     AGAAGAGAAC TAGCTGGAAT AGCCTTGCGA CATAGAAATA AACGGGGACT TATTAACATT      5820\n+     GTAGGTTCAG TTTTTAAATA CCTATTTGGC ACACTTGACG AAAATGATCG AGTGGATATA      5880\n+     CAGAGGAAAC TTGAAACAAA CGCCCATAAC TCGGTAAATT TACATGAACT CAATGACGCT      5940\n+     ATTCAATTAA TAAATGACGG AATGCAAAAG ATACAGAATT ATGAAAACAA CAGCAACATC      6000\n+     ATTAACAGTC TTTTATATGA ACTCATGCAG TTTACAGAAT ACATAGAAGA TGTGGAAATG      6060\n+     GGAATGCAGC TTTCCAGACT CGGTCTATTT AATCCCAAAC TACTAAACTA CGATAAACTT      6120\n+     GAGAATGTAA ACAGCCAAAA TATTTTAAAC ATTAAAACAT CCACTTGGAT TAATTACAAT      6180\n+     GATAACCAAT TATTAATCAT ATCTCACATA CCTATTAACT TTTCATTAAT AAATACAGTA      6240\n+     AAAATAATCC CTTACCCAGA CTCGAACGGC TATCAGCTAG AATACACAGA CACACAATCA      6300\n+     TATTTTGAAA GAGAAAATAA AGTTTACAAT AACGAAAATA AAGAAATAAA CAATGAGTGT      6360\n+     GTCACCAACA TTATTAAACA TTTAAAACCA ATTTGTAATT TTGAGTCAAT CCACACAGAT      6420\n+     GAAATAATAA AATACATAGA ACCAAACACA ATTGTAACCT GGAATTTAAC CCAAACAAGT      6480\n+     CTCAAACAAA ATTGTCAAAA TTCATTTAAT AATATAAAAA TAAAAGGAAA CAAAATGATA      6540\n+     AAAGTAACCC AATGTAAAAT AGAAATCAAT AGCATAATTC TAAGTGAAAA TCTCTTTAAA      6600\n+     CCAGAAATAG ATTTGACACC ATTATACACA CCACTTAACA TAACAAAAAT AAAAACTGTT      6660\n+     AAACACAACG ACATTAATGA AATGATTTCA CAAAACAATA TTACACTTTA CATATTTATG      6720\n+     ACTACTGTCA TCATTATACT TATTTTATTG TACTTATATT TAAGATACGT ATCATTTAAC      6780\n+     CCATTCATGA TGCTGTATGC AAAACTAAAA TTAAGAAAAA ATCAAAATCA AAACACAGCA      6840\n+     CAACAAATAG AAATGGAAGA CGTTCCATTA CCCCTACTAT ATCCATCAAT CCCAGCCCAA      6900\n+     GTATAGGCTT CTCTTTAAGG GAAGGGAAGT GACATATTCA CATACAAAAC CACATAACGT      6960\n+     AGAGTAAACA TATTGAAAAG CCGCATACGT CAACAATAAG TGACCACCAT GCTAATGTGG      7020\n+     ATCAAATAAC AAAAATATCC ACTCTGCATT TTGACACCCC CATACTGTAT GCCATCTGCG      7080\n+     CAGTATGCAT TCTAATAAAC AAATTCTTTG ACAGCGGCAC TTAGCCATTC TTGTAAACAA      7140\n+     ATCTTAAAGT CTGCCTGCTC TCTCTGAGGC TTCTCCTCCA CTTAAGAATC CAAGAGCAAT      7200\n+     GCTCTCCCAA AAACACTAAC ATATTCTTTA AGCAAGCACA GAGGCTTCTC CTCATTTTCA      7260\n+     CTTTCATTTG ATTTTCAGTC TTAAGCTGAA CGTTAATCAA TAAACAACAC AATCGATACC      7320\n+     GAAATTTTGA TTCGTTTTAT TTTGGCAAAA CTCAATTTTC AGCGTTGGTC TTAGTTCATA      7380\n+     TTCGGAACGG TCCATTTAAT AGACTCAAAA CTATTTATTG CAACCATTTA TTTGCAATT       7439\n+//\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r bcdd1a35e545 test-data/output.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.fasta Fri Apr 22 12:09:14 2016 -0400
b
b'@@ -0,0 +1,4 @@\n+>DME9736\n+GTGACATATCCATAAGTCCCTAAGACTTAAGCATATGCCTACATACTAATACACTTACAACACATACACCCCAATACAACATACACTACTCCGGATGTACCCAACAGATACCAGATAAGAATAAGATTGTTATATGATCCTCGAGAATGGAAAAAACCCCAATTCTAGATAAGTCACCCACTGGTAGACTAAACATCCGTCCCCTAATTTAAACAATTCCTTGCTTAAGCCTCACCCCATCGTCACATTCCCACGTTCAAAGCTCGGAGCCGCAATCCCGAAAAACAAAAGTATCGATTTCAATAAACAAATTATAAGAATCTAAGAGCACTTGTATCCAAGAGCAAATGCACTTGAATCCAAGAGAAACGCAAAGCTTTTTCTCTTTACGATCAGAATCCTAAAGTCTAAAGTCCATATTAGAAAAGCTCGATACCGAGGCTTGAACGTCAACCAAATCAGAATAATTATCAGAGTTCAGTTTGAGACCTAATTGTAAAAGGTTCGGTGTTCTTCTCAAATAAAAAGATTGTAATCATTTAGTGAAATAAAAATTATATTTTTTTCACTTATAAATATTGCAAGTATTTAATTGGCGCAGTCGGTTAGGATCCAATAAAATAAAAGAGTCCTTTTAGTACGGTACTGATCAACTGAAGGATATGCTATACGACTAGCTATCCAAGATCAGCGAATTAAAATAGTGATTCAAAAATATTTTTTAATCCGCAAAAGAATCTACGTGAAAGTAGTATTCAAAATAAAATCCCGTGCGGTCGGAAACAAAAATTAATTTAAATTTTTTAATTCCGAAACTTAAAACCAAGTTTAAAGAAAACTTAAAATCAAGAAAACTTAAAACCAAGTTTAAAGAAAACTTAAAATCAAGAAAACTTAAAACCAAGTTTAAAGAAAACTTAAAATCAAGAAAACTTAAAACCAAGTTTAAAGAAAACTCAAAATCAAGAAAACTTAAAGCCAAAATAAGCTAGAAAACTAAAAGACATCATGGCAGTCCCACAACTCTCAGAAACACACCTAAACCAACTGCTAAACCAAATCAAAGAATTAAACTACTACGATGGCGCACCTGGCAAATTATCTGGATTCGTCAACCAAGTGGAACAACTGCTCAGTTTATACCCAACACAGGAAGCAAGACAGGCACACGTCATATATGGAGCAGTGAAGCGGTTATTAGTGGATTCAGCCTTAGAAGTCGTAACCCAGGAAAGAGCTAACACATGGCTGGACATGAAGAAAGCACTGGCAATGGCATTCAAAGACCATAGACCTTATGTAACTCTCATCAGACAATTAGAAGACATATCATACCCAGGAAGTATCTGTAAGTTTATAGAAAAATTAGAAACACAATACTGGATTATGTTCGATAAGTTAGAATTAGAAAGTGACCATGTTGATAAATCGAATTATACCGAAATGTTAAACAAAACTGTTAAATCAGTAATAGATCGAAAACTGCCGGATAGAATTTATATGTCTTTGGCACGTAAAGATATTGATACAATTTATAAATTAAAACAAGCATCAATGGAATTAGGCCTTTATGATGCTATTCCAGAAAATCACCGTTCTAATAGAACAGAAATGAATAAACGTAGGAACAGGGGAAACTATAATCAAAATAATAATCAAAAATATTACAATAATAGAAATCACAACTACAGTAATTATTATCCTAGCATGAATCAGAATCATAATACACAACCACCTCAGAATCCGACTCAACCTATGACAAATCAAAACCAATATTCACCGCGTTTCATACCGAATAATCAAAGAGGGAATTATTATGCATTTAGACGAGACTTAACACAAGCTCAGCAGAACAACCCACTTAATAACACCCTTAACTTCCAACCTTCGACATCGAATAATATTAACAGACAAGGGCCAGTAAAAAGACAACGCGAGAGTCAGAGTGACCAAAGCAGGATGGATGTAAATTTTCATCAAGCTGCCTCGGACACTCAAATGATAGAGAAGGACATACAAGTCCCTATGTAAAAATAATTCATCATAATAAAAATTATAAGGGAATGATCGATACAGGATCATCAATTAACATCATAAGAGAAAATTTTGAGAACTTAGAAGAAAAGGAAGAAAACCTAATAGTATACACTATTAAAGGACCAATAACACTAAAGAGAAGTATAATAATAAAACCTACTTCAGTATGTCCGTCTGCTCAAAAATTCTACATTCACAAATTTTCTGATAACTATGATTTCTTGTTAGGTCGAAAGTATTTAGAAGATACAAAAGCTAAAATAGATTATGCTAACGAAACAGTAACACTAGGCTCAAAAGTATTTAAGTTTCTCTATGAAGAAAAGAAGGGCGAGACCGCATCCAAATGCCTTGACCCACAAGAAAAGAATGATTCCGCTCTAGTGGACAGAACCAAACCAAAAATGCAAAAGGTTAAGACCGCACCTAAGTGCCTTAAACCAAAGCATCAACAGCAGAAGAAAGAGACCGCATTACCCAAATGCCTCATTTCAAATGTTGTTAAAGACACAGTGGACAATGATGTAACACATCTCGATCCCATGTCCGTTGACAACGATATAGTCAACTTCGCGATTAACAATGAGTTACGCGAATGTAACGAGTATAGACTCGAACACTTAAATGCAGAGGAAGTTGAATGTTTAAAGAAGTTCCTATACGAATATAGAGACATTCAGTACAAAGAGGGCGAAAATTTGACCTTCACCAGTACTATTAAACATGTCATCCAGACTCAACACGAAGACCCAGTATACCGTAAACCCTACAAGTACCCTCAAAGCGTTGACCAAGAAGTTAACAAACAAATTAAAGAAATGATAGAACAAGGGATTGTTCGCAAATCGAAGTCCCCTTATTGTTCTCCTATTTGGGTGGTCCCCAAGAAGGCAGACGCCTCTGGGAAACAAAAATTCAGGTTGGTAGTCGATTACAGGAACCTAAATGAGATAACTGTTAACGACAAATTTCCCATTCCCCGAATGGATGAGATATTGGACAAACTAGGTAGATGCCAATACTTTACCACTATAGATCTAGCCAAGGGTTTTCACCAAATCCAAATGGATGAAAATTCTATTGCAAAAACAGCTTTTTCAACTAAGCATGGGCATTATGAATATACTCGTATGCCCTTTGGTTTAAAAAACGCTCCAGCTACTTTTCAGAGATGCATGAATAATCTTCTGGAAGATTTAATCTACAAAGACTGTTTAGTCTATTTAGACGATATTATTGTTTATTCCACTCCATTGGAAGAACACATTTTATCCCTAAAGAAAGTCTTTGAAAAACTGAGAGACGCTAATTTAAAGTTGCAACTAGATAAATGTGAATTCATGAAGAAAGAAACTGAATTCCTAGGACACATCGTCACAACAAATGGCATCAAACCAAATCCAAATAAAACTAAAGCAATTACAAATTTTCCATTACCCAAGACACCTAAGCAAATAAAATCATTTTTGGGATTATGTGGATTCTATCGCAAGTTTATTCCTAACTTTGCCAAAATAGTTAAACCCATGACCCTCAAATTAAAGAAAGGTGCTATAATAGACACCAAATGTAAAGAATACATCGAATCATTTGAAAAATTAAAAGTTTTGATAACTTCAGACCCGATATTAATCTATCCTGATTTTTCAAAACCTTTTTCTTTGACAACTGATGCTAGCAACGTAGCTATTGGTGCAGTGTTATCACAAAATCACAAGCCAGTTTGTTATGCCAGTAGAACGCTAAACGAACATGAAATCAACTATGCTACGATTGAAAAAGAATTGTTAGCTATAGTTTGGGCTACAAAATATTTCAGGTCATACTTATTCGGCAGACCATTTGAAGTATTAAGTGATCACAAGCCACTGGTATGGCTCAACAACATTAAAGAACCAAACATGAAATTGCAAAGATGGAAAATAAAACTTAATG'..b'CGACATAATTGTATTCTCGACATCCCTTGATGAACACCTGCAATCGCTCGGACTAGTTTTCGAAAAATTAGCAAAAGCCAACCTTAAATTACAACTTGACAAATGTGAGTTTCTCAAGCAAGAAACCACATTTTTAGGACATGTTCTAACACCAGATGGAATAAAACCAAACCCTGAAAAAATTGAAGCCATTCAAAAATATCCAATTCCCACTAAACCAAAAGAAATAAAAGCTTTTCTTGGACTGACAGGATATTATCGTAAATTTATTCCAAACTTTGCAGACATAGCCAAACCCATGACTAAGTGTTTAAAAAAGAACATGAAAATTGACACTACCAACCCAGAATATGACTCTGCATTTAAAAAATTAAAATATCTAATATCAGAAGACCCAATTCTTAAAGTACCCGACTTTACAAAGAAATTCACTTTAACCACAGACGCAAGTGATGTCGCTTTGGGGGCAGTACTGTCACAAGATGGACACCCACTTAGCTACATTAGCCGAACACTTAATGAACACGAAATAAATTACAGCACAATTGAAAAAGAACTCTTAGCAATTGTATGGGCGACAAAGACTTTTCGACACTACCTACTTGGAAGACACTTTGAAATATCCAGTGACCATCAACCATTGAGCTGGTTGTACCGTATGAAAGACCCAAATTCAAAACTGACCCGATGGAGAGTAAAATTATCCGAATTCGATTTTGATATAAAATATATAAAAGGAAAAGAAAATTGCGTGGCGGATGCTCTGTCCAGAATAAAACTTGAGGAGACATATTTGAGCGAACAAACCCAACATAGTGCAGAAGAGGACAATAGTGATTTAATTTTTATTACAGAAAGACCTCTAAATACATTTAACAGACAAGTTATATTTTCAAAAGGACCACCAGACATTAAAGTTACGAAATATTTCAAAAAACACATCACCCAAATATTTTACGACATTATGACCAGGGAAAAAGCCGAACAATATTTGATAGACCATTTTTGTGGTAAGAAAAGTGCGTTGTATATTGAGAGTGACGCTGATTTCGAAGTCATTCAAGCCGCACATAAATTAGCCATAAACACCAAATATACAAAAATCCTGCGTAGCACGATTTTGTTAAAAAACATAACCACTTATGCGGAATTTAAGGAATTGATCTTGACTGCTCATGAAAAACTTCTACACCCAGGCATACAGAAAACTACTAAACTTTTCGGAGAAACTTACTATTTCCCTAATAGCCAGCTACTTATTCAGAATATAATAAATGAGTGCAGTATTTGCAATCTGGCAAAAACAGAGCACCGAAATACAGACATGCCAACGAAAACCACACCCAAACCAGAACATTGCCGCGAAAAATTCATGATAGACATTTACTCATCCGAAGGCAAACATTACGTTAGTTGCATAGACATTTATTCGAAATTTGCCACATTAGAAGAAATAAAAACAAAAGACTGGATAGAATGCAAAAACGCGCTTATGCGCATATTCAACCAGCTTGGCAAGCCAAAGTTACTAAAGGCGGACAGAGACGGCGCATTTTCCAGTTTAGCCCTCAAGAGATGGCTGGAGAGTGAGGAAGTCGAATTGCAGCTTAACACAACAAAAACTGGTGTGGCGGACATAGAAAGACTACATAAAACAATTAATGAAAAGATTCGCATAATCAAAACATCCGATGACGAAGAAACCAAATTGAGCAAAATGGAAACAGTACTTAACATATACAATCATAAAACCAAACACGACACCACTGGACAGACCCCTGCACACATATTTCTCTACGCTGGACAACCAATATTAGATACCCAACAAAACAAAGAAAACAAAATAAACAAAATAAATAATGACAGAGTGGAGTACGAAGTCGACACAAGATACAGAAAAGGTCCACTACAGAAAGGCAAATTAGAAAATCCTTTTAAGCCAACAAAAAATGTGGAGCAGACTGACTCTGATCATTATAAAATTACTAATAGAAATAGAATTACTCACTACTACAAAACACAATTCAAAAAACGAAAGAAAAATAATCAGCTCTCAATTTCACAGGCACCTGGCACTTGATAACATTGCTGCTGATGCTGATCACAACAGTTCATGGACAACAAATTGAAATTAATAATATTGACACAAACCACGGATATCTCCTTTTTTCTGATAAACCAGTCCAGATACCATCATCCTTTGAACATCATTGCTTGAGAATCAATTTAACTGAAATAGACACCATAGCTGATTATTTTGAGCAAAGACTACGTACCGACTACCATGCACCCCAGGTCAAATTTTTATACAACAAAATGAGAAGAGAACTAGCTGGAATAGCCTTGCGACATAGAAATAAACGGGGACTTATTAACATTGTAGGTTCAGTTTTTAAATACCTATTTGGCACACTTGACGAAAATGATCGAGTGGATATACAGAGGAAACTTGAAACAAACGCCCATAACTCGGTAAATTTACATGAACTCAATGACGCTATTCAATTAATAAATGACGGAATGCAAAAGATACAGAATTATGAAAACAACAGCAACATCATTAACAGTCTTTTATATGAACTCATGCAGTTTACAGAATACATAGAAGATGTGGAAATGGGAATGCAGCTTTCCAGACTCGGTCTATTTAATCCCAAACTACTAAACTACGATAAACTTGAGAATGTAAACAGCCAAAATATTTTAAACATTAAAACATCCACTTGGATTAATTACAATGATAACCAATTATTAATCATATCTCACATACCTATTAACTTTTCATTAATAAATACAGTAAAAATAATCCCTTACCCAGACTCGAACGGCTATCAGCTAGAATACACAGACACACAATCATATTTTGAAAGAGAAAATAAAGTTTACAATAACGAAAATAAAGAAATAAACAATGAGTGTGTCACCAACATTATTAAACATTTAAAACCAATTTGTAATTTTGAGTCAATCCACACAGATGAAATAATAAAATACATAGAACCAAACACAATTGTAACCTGGAATTTAACCCAAACAAGTCTCAAACAAAATTGTCAAAATTCATTTAATAATATAAAAATAAAAGGAAACAAAATGATAAAAGTAACCCAATGTAAAATAGAAATCAATAGCATAATTCTAAGTGAAAATCTCTTTAAACCAGAAATAGATTTGACACCATTATACACACCACTTAACATAACAAAAATAAAAACTGTTAAACACAACGACATTAATGAAATGATTTCACAAAACAATATTACACTTTACATATTTATGACTACTGTCATCATTATACTTATTTTATTGTACTTATATTTAAGATACGTATCATTTAACCCATTCATGATGCTGTATGCAAAACTAAAATTAAGAAAAAATCAAAATCAAAACACAGCACAACAAATAGAAATGGAAGACGTTCCATTACCCCTACTATATCCATCAATCCCAGCCCAAGTATAGGCTTCTCTTTAAGGGAAGGGAAGTGACATATTCACATACAAAACCACATAACGTAGAGTAAACATATTGAAAAGCCGCATACGTCAACAATAAGTGACCACCATGCTAATGTGGATCAAATAACAAAAATATCCACTCTGCATTTTGACACCCCCATACTGTATGCCATCTGCGCAGTATGCATTCTAATAAACAAATTCTTTGACAGCGGCACTTAGCCATTCTTGTAAACAAATCTTAAAGTCTGCCTGCTCTCTCTGAGGCTTCTCCTCCACTTAAGAATCCAAGAGCAATGCTCTCCCAAAAACACTAACATATTCTTTAAGCAAGCACAGAGGCTTCTCCTCATTTTCACTTTCATTTGATTTTCAGTCTTAAGCTGAACGTTAATCAATAAACAACACAATCGATACCGAAATTTTGATTCGTTTTATTTTGGCAAAACTCAATTTTCAGCGTTGGTCTTAGTTCATATTCGGAACGGTCCATTTAATAGACTCAAAACTATTTATTGCAACCATTTATTTGCAATT\n'