Back to index

python-biopython  1.60
test_NCBITextParser.py
Go to the documentation of this file.
00001 # Copyright 1999 by Jeffrey Chang.  All rights reserved.
00002 # This code is part of the Biopython distribution and governed by its
00003 # license.  Please see the LICENSE file that should have been included
00004 # as part of this package.
00005 
00006 import os
00007 import unittest
00008 from Bio.Blast import NCBIStandalone
00009 
00010 
00011 
00012 class TestBlastRecord(unittest.TestCase):
00013 
00014     # - incredibly incomplete. Just testing what I'm adding -- Brad.
00015 
00016     def setUp(self):
00017         self.parser = NCBIStandalone.BlastParser()
00018 
00019     def test_conversion(self):
00020         "Test converting a Blast record multiple alignment"
00021 
00022         from Bio.Alphabet import IUPAC
00023 
00024         path = os.path.join("Blast", 'bt005.txt')
00025         handle = open(path)
00026         record = self.parser.parse(handle)
00027         handle.close()
00028         generic_align = record.multiple_alignment.to_generic(IUPAC.protein)
00029         test_seq = generic_align[0].seq
00030         self.assertEqual(test_seq.alphabet, IUPAC.protein)
00031         self.assertEqual(test_seq[:60].tostring(), record.multiple_alignment.alignment[0][2])
00032 
00033 
00034 class TestNCBITextParser(unittest.TestCase):
00035 
00036     reference = 'Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, \nJinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), \n"Gapped BLAST and PSI-BLAST: a new generation of protein database search\nprograms",  Nucleic Acids Res. 25:3389-3402.'
00037 
00038     def setUp(self):
00039         self.parser = NCBIStandalone.BlastParser()
00040         self.pb_parser = NCBIStandalone.PSIBlastParser()
00041 
00042     def test_bt001(self):
00043         "Test parsing BLASTP 2.0.10 output (bt001)"
00044 
00045         path = os.path.join('Blast', 'bt001.txt')
00046         handle = open(path)
00047         record = self.parser.parse(handle)
00048         handle.close()
00049         self.assertEqual(record.application, "BLASTP")
00050         self.assertEqual(record.version, '2.0.10')
00051         self.assertEqual(record.date, "Aug-26-1999")
00052         self.assertEqual(record.reference, TestNCBITextParser.reference)
00053         self.assertEqual(record.query, "gi|120291|sp|P21297|FLBT_CAUCR FLBT PROTEIN")
00054         self.assertEqual(record.query_letters, 141)
00055         self.assertEqual(record.database, "data/swissprot")
00056         self.assertEqual(record.database_sequences, 82258)
00057         self.assertEqual(record.database_letters, 29652561)
00058         self.assertEqual(len(record.descriptions), 3)
00059         self.assertEqual(record.descriptions[0].title, "gi|120291|sp|P21297|FLBT_CAUCR FLBT PROTEIN")
00060         self.assertEqual(record.descriptions[0].score, 284)
00061         self.assertAlmostEqual(record.descriptions[0].e, 7.e-77)
00062         self.assertEqual(record.descriptions[1].title, "gi|3024946|sp|Q58368|Y958_METJA HYPOTHETICAL PROTEIN MJ0958 PRE...")
00063         self.assertEqual(record.descriptions[1].score, 29)
00064         self.assertAlmostEqual(record.descriptions[1].e, 3.4)
00065         self.assertEqual(record.descriptions[2].title, "gi|3024745|sp|O26320|THSA_METTH PROBABLE THERMOSOME SUBUNIT A")
00066         self.assertEqual(record.descriptions[2].score, 29)
00067         self.assertAlmostEqual(record.descriptions[2].e, 4.5)
00068         self.assertEqual(len(record.alignments), 3)
00069         self.assertEqual(record.alignments[0].title, ">gi|120291|sp|P21297|FLBT_CAUCR FLBT PROTEIN")
00070         self.assertEqual(record.alignments[0].length, 141)
00071         self.assertEqual(record.alignments[1].title, ">gi|3024946|sp|Q58368|Y958_METJA HYPOTHETICAL PROTEIN MJ0958 PRECURSOR")
00072         self.assertEqual(record.alignments[1].length, 426)
00073         self.assertEqual(record.alignments[2].title, ">gi|3024745|sp|O26320|THSA_METTH PROBABLE THERMOSOME SUBUNIT A")
00074         self.assertEqual(record.alignments[2].length, 542)
00075         self.assertEqual(record.alignments[0].hsps[0].score, 718)
00076         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 284)
00077         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 7e-77)
00078         self.assertEqual(record.alignments[0].hsps[0].identities, (141, 141))
00079         self.assertEqual(record.alignments[0].hsps[0].positives, (141, 141))
00080         self.assertEqual(len(record.alignments[0].hsps), 1)
00081         self.assertEqual(record.alignments[1].hsps[0].score, 64)
00082         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 29.3)
00083         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 3.4)
00084         self.assertEqual(record.alignments[1].hsps[0].identities, (15, 47))
00085         self.assertEqual(record.alignments[1].hsps[0].positives, (23, 47))
00086         self.assertEqual(len(record.alignments[1].hsps), 1)
00087         self.assertEqual(record.alignments[2].hsps[0].score, 63)
00088         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 29.0)
00089         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 4.5)
00090         self.assertEqual(record.alignments[2].hsps[0].identities, (31, 107))
00091         self.assertEqual(record.alignments[2].hsps[0].positives, (46, 107))
00092         self.assertEqual(record.alignments[2].hsps[0].gaps, (9, 107))
00093         self.assertEqual(len(record.alignments[2].hsps), 1)
00094         self.assertEqual(record.alignments[0].hsps[0].query, "MPLKLSLKPGEKFVLNGAVVQNGDRRGVLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERLGHVSSGVSAGGDAG")
00095         self.assertEqual(record.alignments[0].hsps[0].match, "MPLKLSLKPGEKFVLNGAVVQNGDRRGVLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERLGHVSSGVSAGGDAG")
00096         self.assertEqual(record.alignments[0].hsps[0].sbjct, "MPLKLSLKPGEKFVLNGAVVQNGDRRGVLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERLGHVSSGVSAGGDAG")
00097         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
00098         self.assertEqual(record.alignments[0].hsps[0].query_end, 141)
00099         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
00100         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 141)
00101         self.assertEqual(record.alignments[1].hsps[0].query, "VLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFY")
00102         self.assertEqual(record.alignments[1].hsps[0].match, "+LVL N  ++   K     D  TT   +IY P+ +    +  A+KFY")
00103         self.assertEqual(record.alignments[1].hsps[0].sbjct, "ILVLINNTNITELKKFEDDDYYTTFQHYIYQPIFIFTTYDSKAKKFY")
00104         self.assertEqual(record.alignments[1].hsps[0].query_start, 28)
00105         self.assertEqual(record.alignments[1].hsps[0].query_end, 74)
00106         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 169)
00107         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 215)
00108         self.assertEqual(record.alignments[2].hsps[0].query, "KASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERLGHVSSGVSAGGDA")
00109         self.assertEqual(record.alignments[2].hsps[0].match, "+A V+ EK I   D+V T       P  +  +     +   EE    L + +GVV +   L+D     + V+A      + ++RKL EY D   G     VSA  DA")
00110         self.assertEqual(record.alignments[2].hsps[0].sbjct, "EAGVIYEKKIF--DEVLTFIEECRDPKAISIILRGSTKHVAEEMERALEDAIGVVAS--TLED-----REVVAGGGAPEVEIARKLREYADTISGREQLAVSAFADA")
00111         self.assertEqual(record.alignments[2].hsps[0].query_start, 34)
00112         self.assertEqual(record.alignments[2].hsps[0].query_end, 140)
00113         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 339)
00114         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 436)
00115         self.assertEqual(record.database_name, ['data/swissprot'])
00116         self.assertEqual(record.num_letters_in_database, [29652561])
00117         self.assertEqual(record.num_sequences_in_database, [82258])
00118         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
00119         self.assertEqual(len(record.ka_params), 3)
00120         self.assertAlmostEqual(record.ka_params[0], 0.321)
00121         self.assertAlmostEqual(record.ka_params[1], 0.138)
00122         self.assertAlmostEqual(record.ka_params[2], 0.390)
00123         self.assertEqual(len(record.ka_params_gap), 3)
00124         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
00125         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
00126         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
00127         self.assertEqual(record.matrix, 'BLOSUM62')
00128         self.assertEqual(record.gap_penalties, [11,1])
00129         self.assertEqual(record.num_hits, 7927717)
00130         self.assertEqual(record.num_sequences, 82258)
00131         self.assertEqual(record.num_extends, 284596)
00132         self.assertEqual(record.num_good_extends, 567)
00133         self.assertEqual(record.num_seqs_better_e, 3)
00134         self.assertEqual(record.hsps_no_gap, 2)
00135         self.assertEqual(record.hsps_prelim_gapped, 1)
00136         self.assertEqual(record.hsps_gapped, 3)
00137         self.assertEqual(record.query_length, 141)
00138         self.assertEqual(record.database_length, 29652561)
00139         self.assertEqual(record.effective_hsp_length, 50)
00140         self.assertEqual(record.effective_query_length, 91)
00141         self.assertEqual(record.effective_database_length, 25539661)
00142         self.assertEqual(record.effective_search_space, 2324109151)
00143         self.assertEqual(record.effective_search_space_used, 2324109151)
00144         self.assertEqual(record.threshold, 11)
00145         self.assertEqual(record.window_size, 40)
00146         self.assertEqual(len(record.dropoff_1st_pass), 2)
00147         self.assertEqual(record.dropoff_1st_pass[0], 16)
00148         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.4)
00149         self.assertEqual(len(record.gap_x_dropoff), 2)
00150         self.assertEqual(record.gap_x_dropoff[0], 38)
00151         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
00152         self.assertEqual(len(record.gap_x_dropoff_final), 2)
00153         self.assertEqual(record.gap_x_dropoff_final[0], 64)
00154         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
00155         self.assertEqual(len(record.gap_trigger), 2)
00156         self.assertEqual(record.gap_trigger[0], 41)
00157         self.assertAlmostEqual(record.gap_trigger[1], 21.8)
00158         self.assertEqual(len(record.blast_cutoff), 2)
00159         self.assertEqual(record.blast_cutoff[0], 61)
00160         self.assertAlmostEqual(record.blast_cutoff[1], 28.2)
00161 
00162     def test_bt002(self):
00163         "Test parsing BLASTP 2.0.10 output without hits (bt002)"
00164 
00165         path = os.path.join('Blast', 'bt002.txt')
00166         handle = open(path)
00167         record = self.parser.parse(handle)
00168         handle.close()
00169         self.assertEqual(record.application, "BLASTP")
00170         self.assertEqual(record.version, '2.0.10')
00171         self.assertEqual(record.date, "Aug-26-1999")
00172         self.assertEqual(record.reference, TestNCBITextParser.reference)
00173         self.assertEqual(record.query, "gi|400206|sp|Q02112|LYTA_BACSU MEMBRANE-BOUND PROTEIN LYTA\nPRECURSOR")
00174         self.assertEqual(record.query_letters, 102)
00175         self.assertEqual(record.database, "data/pdbaa")
00176         self.assertEqual(record.database_sequences, 6999)
00177         self.assertEqual(record.database_letters, 1461753)
00178         self.assertEqual(len(record.descriptions), 0)
00179         self.assertEqual(len(record.alignments), 0)
00180         self.assertEqual(record.database_name, ['data/pdbaa'])
00181         self.assertEqual(record.num_letters_in_database, [1461753])
00182         self.assertEqual(record.num_sequences_in_database, [6999])
00183         self.assertEqual(record.posted_date, [('Oct 11, 1999 11:30 AM',)])
00184         self.assertEqual(len(record.ka_params), 3)
00185         self.assertAlmostEqual(record.ka_params[0], 0.310)
00186         self.assertAlmostEqual(record.ka_params[1], 0.132)
00187         self.assertAlmostEqual(record.ka_params[2], 0.353)
00188         self.assertEqual(len(record.ka_params_gap), 3)
00189         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
00190         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
00191         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
00192         self.assertEqual(record.matrix, 'BLOSUM62')
00193         self.assertEqual(record.gap_penalties, [11,1])
00194         self.assertEqual(record.num_hits, 289135)
00195         self.assertEqual(record.num_sequences, 6999)
00196         self.assertEqual(record.num_extends, 10742)
00197         self.assertEqual(record.num_good_extends, 10)
00198         self.assertEqual(record.num_seqs_better_e, 0)
00199         self.assertEqual(record.hsps_no_gap, 0)
00200         self.assertEqual(record.hsps_prelim_gapped, 0)
00201         self.assertEqual(record.hsps_gapped, 0)
00202         self.assertEqual(record.query_length, 102)
00203         self.assertEqual(record.database_length, 1461753)
00204         self.assertEqual(record.effective_hsp_length, 45)
00205         self.assertEqual(record.effective_query_length, 57)
00206         self.assertEqual(record.effective_database_length, 1146798)
00207         self.assertEqual(record.effective_search_space, 65367486)
00208         self.assertEqual(record.effective_search_space_used, 65367486)
00209         self.assertEqual(record.threshold, 11)
00210         self.assertEqual(record.window_size, 40)
00211         self.assertEqual(len(record.dropoff_1st_pass), 2)
00212         self.assertEqual(record.dropoff_1st_pass[0], 16)
00213         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.1)
00214         self.assertEqual(len(record.gap_x_dropoff), 2)
00215         self.assertEqual(record.gap_x_dropoff[0], 38)
00216         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
00217         self.assertEqual(len(record.gap_x_dropoff_final), 2)
00218         self.assertEqual(record.gap_x_dropoff_final[0], 64)
00219         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
00220         self.assertEqual(len(record.gap_trigger), 2)
00221         self.assertEqual(record.gap_trigger[0], 42)
00222         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
00223         self.assertEqual(len(record.blast_cutoff), 2)
00224         self.assertEqual(record.blast_cutoff[0], 47)
00225         self.assertAlmostEqual(record.blast_cutoff[1], 22.7)
00226 
00227     def test_bt003(self):
00228         "Test parsing BLASTP 2.0.10 output without descriptions (bt003)"
00229 
00230         path = os.path.join('Blast', 'bt003.txt')
00231         handle = open(path)
00232         record = self.parser.parse(handle)
00233         handle.close()
00234         self.assertEqual(record.application, "BLASTP")
00235         self.assertEqual(record.version, '2.0.10')
00236         self.assertEqual(record.date, "Aug-26-1999")
00237         self.assertEqual(record.reference, TestNCBITextParser.reference)
00238         self.assertEqual(record.query, "gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
00239         self.assertEqual(record.query_letters, 166)
00240         self.assertEqual(record.database, "data/swissprot")
00241         self.assertEqual(record.database_sequences, 82258)
00242         self.assertEqual(record.database_letters, 29652561)
00243         self.assertEqual(len(record.descriptions), 0)
00244         self.assertEqual(len(record.alignments), 6)
00245         self.assertEqual(record.alignments[0].title, ">gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
00246         self.assertEqual(record.alignments[0].length, 166)
00247         self.assertEqual(record.alignments[1].title, ">gi|140528|sp|P24811|YQXH_BACSU HYPOTHETICAL 15.7 KD PROTEIN IN SPOIIIC-CWLA INTERGENIC REGION (ORF2)")
00248         self.assertEqual(record.alignments[1].length, 140)
00249         self.assertEqual(record.alignments[2].title, ">gi|141088|sp|P26835|YNGD_CLOPE HYPOTHETICAL 14.9 KD PROTEIN IN NAGH 3'REGION (ORFD)")
00250         self.assertEqual(record.alignments[2].length, 132)
00251         self.assertEqual(record.alignments[3].title, ">gi|6014830|sp|O78935|CYB_MARAM CYTOCHROME B")
00252         self.assertEqual(record.alignments[3].length, 379)
00253         self.assertEqual(record.alignments[4].title, ">gi|1351589|sp|P47694|Y456_MYCGE HYPOTHETICAL PROTEIN MG456")
00254         self.assertEqual(record.alignments[4].length, 334)
00255         self.assertEqual(record.alignments[5].title, ">gi|2496246|sp|Q57881|Y439_METJA HYPOTHETICAL ATP-BINDING PROTEIN MJ0439")
00256         self.assertEqual(record.alignments[5].length, 361)
00257         self.assertEqual(record.alignments[0].hsps[0].score, 843)
00258         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 332)
00259         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 2e-91)
00260         self.assertEqual(len(record.alignments[0].hsps), 1)
00261         self.assertEqual(record.alignments[1].hsps[0].score, 90)
00262         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 39.5)
00263         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 0.004)
00264         self.assertEqual(len(record.alignments[1].hsps), 1)
00265         self.assertEqual(record.alignments[2].hsps[0].score, 88)
00266         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 38.7)
00267         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 0.007)
00268         self.assertEqual(len(record.alignments[2].hsps), 1)
00269         self.assertEqual(record.alignments[3].hsps[0].score, 64)
00270         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 29.3)
00271         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 4.6)
00272         self.assertEqual(len(record.alignments[3].hsps), 1)
00273         self.assertEqual(record.alignments[4].hsps[0].score, 63)
00274         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 29.0)
00275         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 6.0)
00276         self.assertEqual(len(record.alignments[4].hsps), 1)
00277         self.assertEqual(record.alignments[5].hsps[0].score, 62)
00278         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 28.6)
00279         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 7.8)
00280         self.assertEqual(len(record.alignments[5].hsps), 1)
00281         self.assertEqual(record.alignments[0].hsps[0].identities, (166, 166))
00282         self.assertEqual(record.alignments[0].hsps[0].positives, (166, 166))
00283         self.assertEqual(record.alignments[1].hsps[0].identities, (27, 130))
00284         self.assertEqual(record.alignments[1].hsps[0].positives, (55, 130))
00285         self.assertEqual(record.alignments[1].hsps[0].gaps, (19, 130))
00286         self.assertEqual(record.alignments[2].hsps[0].identities, (24, 110))
00287         self.assertEqual(record.alignments[2].hsps[0].positives, (52, 110))
00288         self.assertEqual(record.alignments[2].hsps[0].gaps, (18, 110))
00289         self.assertEqual(record.alignments[3].hsps[0].identities, (19, 57))
00290         self.assertEqual(record.alignments[3].hsps[0].positives, (33, 57))
00291         self.assertEqual(record.alignments[3].hsps[0].gaps, (2, 57))
00292         self.assertEqual(record.alignments[4].hsps[0].identities, (16, 44))
00293         self.assertEqual(record.alignments[4].hsps[0].positives, (24, 44))
00294         self.assertEqual(record.alignments[4].hsps[0].gaps, (2, 44))
00295         self.assertEqual(record.alignments[5].hsps[0].identities, (19, 56))
00296         self.assertEqual(record.alignments[5].hsps[0].positives, (30, 56))
00297         self.assertEqual(record.alignments[5].hsps[0].gaps, (12, 56))
00298         self.assertEqual(record.alignments[0].hsps[0].query, "MHSSSPFYISNGNKIFFYINLGGVMNMTISFLSEHIFIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDEK")
00299         self.assertEqual(record.alignments[0].hsps[0].match, "MHSSSPFYISNGNKIFFYINLGGVMNMTISFLSEHIFIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDEK")
00300         self.assertEqual(record.alignments[0].hsps[0].sbjct, "MHSSSPFYISNGNKIFFYINLGGVMNMTISFLSEHIFIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDEK")
00301         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
00302         self.assertEqual(record.alignments[0].hsps[0].query_end, 166)
00303         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
00304         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 166)
00305         self.assertEqual(record.alignments[1].hsps[0].query, "FIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILF-ILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDE")
00306         self.assertEqual(record.alignments[1].hsps[0].match, "++ L+++    D L G + A K +K  S     G +RK+     +   +V+D +   N                  G+  F ++LF I  E +SI +N+   G+ +P  + +++  + +      N  D+")
00307         self.assertEqual(record.alignments[1].hsps[0].sbjct, "YLDLLLVLSIIDVLTGVIKAWKFKKLRSRSAWFGYVRKLLNFFAVILANVIDTVLNLN------------------GVLTFGTVLFYIANEGLSITENLAQIGVKIPSSITDRLQTIENEKEQSKNNADK")
00308         self.assertEqual(record.alignments[1].hsps[0].query_start, 37)
00309         self.assertEqual(record.alignments[1].hsps[0].query_end, 165)
00310         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 26)
00311         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 137)
00312         self.assertEqual(record.alignments[2].hsps[0].query, "VILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVD-ILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKI")
00313         self.assertEqual(record.alignments[2].hsps[0].match, "+++ I  D L G +   KS++  S+ G+ G  +K  ++  +    ++D +L    ++F                     +  +I+ E +SIL+N    G+P+P++LK+ +")
00314         self.assertEqual(record.alignments[2].hsps[0].sbjct, "LLVFIFLDYLTGVIKGCKSKELCSNIGLRGITKKGLILVVLLVAVMLDRLLDNGTWMFRT-----------------LIAYFYIMNEGISILENCAALGVPIPEKLKQAL")
00315         self.assertEqual(record.alignments[2].hsps[0].query_start, 41)
00316         self.assertEqual(record.alignments[2].hsps[0].query_end, 149)
00317         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 33)
00318         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 125)
00319         self.assertEqual(record.alignments[3].hsps[0].query, "CIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCL")
00320         self.assertEqual(record.alignments[3].hsps[0].match, "C+F+L V D+LT   ++   P +   F+ +  L    +F+IL IL  ++SI++N  L")
00321         self.assertEqual(record.alignments[3].hsps[0].sbjct, "CLFWLLVADLLT-LTWIGGQPVEH-PFITIGQLASILYFAILLILMPAISIIENNLL")
00322         self.assertEqual(record.alignments[3].hsps[0].query_start, 80)
00323         self.assertEqual(record.alignments[3].hsps[0].query_end, 136)
00324         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 323)
00325         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 377)
00326         self.assertEqual(record.alignments[4].hsps[0].query, "LTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKN")
00327         self.assertEqual(record.alignments[4].hsps[0].match, "LTKFN  F+ P     FLR+  +G+   FS++ I +   S  +N")
00328         self.assertEqual(record.alignments[4].hsps[0].sbjct, "LTKFNKFFLTPNKLNAFLRV--IGLCGLFSVIAISFGIYSYTRN")
00329         self.assertEqual(record.alignments[4].hsps[0].query_start, 90)
00330         self.assertEqual(record.alignments[4].hsps[0].query_end, 133)
00331         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 4)
00332         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 45)
00333         self.assertEqual(record.alignments[5].hsps[0].query, "FLRLKHLGIS---EFFSILFILYES----VSILKNMC-----LCGLPVPKRLKEKI")
00334         self.assertEqual(record.alignments[5].hsps[0].match, "++ L+ + IS   +F  +LF  YE     V I+K++      LCG+P PK   E+I")
00335         self.assertEqual(record.alignments[5].hsps[0].sbjct, "YINLRGIFISKYKDFIEVLFEEYEEDRKPVEIIKSLIKDVPSLCGIPTPKNTLEEI")
00336         self.assertEqual(record.alignments[5].hsps[0].query_start, 106)
00337         self.assertEqual(record.alignments[5].hsps[0].query_end, 149)
00338         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 68)
00339         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 123)
00340         self.assertEqual(record.database_name, ['data/swissprot'])
00341         self.assertEqual(record.num_letters_in_database, [29652561])
00342         self.assertEqual(record.num_sequences_in_database, [82258])
00343         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
00344         self.assertEqual(len(record.ka_params), 3)
00345         self.assertAlmostEqual(record.ka_params[0], 0.331)
00346         self.assertAlmostEqual(record.ka_params[1], 0.146)
00347         self.assertAlmostEqual(record.ka_params[2], 0.428)
00348         self.assertEqual(len(record.ka_params_gap), 3)
00349         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
00350         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
00351         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
00352         self.assertEqual(record.matrix, 'BLOSUM62')
00353         self.assertEqual(record.gap_penalties, [11,1])
00354         self.assertEqual(record.num_hits, 8801581)
00355         self.assertEqual(record.num_sequences, 82258)
00356         self.assertEqual(record.num_extends, 320828)
00357         self.assertEqual(record.num_good_extends, 892)
00358         self.assertEqual(record.num_seqs_better_e, 6)
00359         self.assertEqual(record.hsps_no_gap, 3)
00360         self.assertEqual(record.hsps_prelim_gapped, 3)
00361         self.assertEqual(record.hsps_gapped, 6)
00362         self.assertEqual(record.query_length, 166)
00363         self.assertEqual(record.database_length, 29652561)
00364         self.assertEqual(record.effective_hsp_length, 46)
00365         self.assertEqual(record.effective_query_length, 120)
00366         self.assertEqual(record.effective_database_length, 25868693)
00367         self.assertEqual(record.effective_search_space, 3104243160)
00368         self.assertEqual(record.effective_search_space_used, 3104243160)
00369         self.assertEqual(record.threshold, 11)
00370         self.assertEqual(record.window_size, 40)
00371         self.assertEqual(len(record.dropoff_1st_pass), 2)
00372         self.assertEqual(record.dropoff_1st_pass[0], 15)
00373         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.2)
00374         self.assertEqual(len(record.gap_x_dropoff), 2)
00375         self.assertEqual(record.gap_x_dropoff[0], 38)
00376         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
00377         self.assertEqual(len(record.gap_x_dropoff_final), 2)
00378         self.assertEqual(record.gap_x_dropoff_final[0], 64)
00379         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
00380         self.assertEqual(len(record.gap_trigger), 2)
00381         self.assertEqual(record.gap_trigger[0], 40)
00382         self.assertAlmostEqual(record.gap_trigger[1], 21.9)
00383         self.assertEqual(len(record.blast_cutoff), 2)
00384         self.assertEqual(record.blast_cutoff[0], 62)
00385         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
00386 
00387     def test_bt004(self):
00388         "Test parsing BLASTP 2.0.10 output without alignments (bt004)"
00389 
00390         path = os.path.join('Blast', 'bt004.txt')
00391         handle = open(path)
00392         record = self.parser.parse(handle)
00393         handle.close()
00394         self.assertEqual(record.application, "BLASTP")
00395         self.assertEqual(record.version, '2.0.10')
00396         self.assertEqual(record.date, "Aug-26-1999")
00397         self.assertEqual(record.reference, TestNCBITextParser.reference)
00398         self.assertEqual(record.query, "gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
00399         self.assertEqual(record.query_letters, 166)
00400         self.assertEqual(record.database, "data/swissprot")
00401         self.assertEqual(record.database_sequences, 82258)
00402         self.assertEqual(record.database_letters, 29652561)
00403         self.assertEqual(len(record.descriptions), 6)
00404         self.assertEqual(record.descriptions[0].title, "gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
00405         self.assertEqual(record.descriptions[0].score, 332)
00406         self.assertAlmostEqual(record.descriptions[0].e, 2.e-91)
00407         self.assertEqual(record.descriptions[1].title, "gi|140528|sp|P24811|YQXH_BACSU HYPOTHETICAL 15.7 KD PROTEIN IN ...")
00408         self.assertEqual(record.descriptions[1].score, 39)
00409         self.assertAlmostEqual(record.descriptions[1].e, 0.004)
00410         self.assertEqual(record.descriptions[2].title, "gi|141088|sp|P26835|YNGD_CLOPE HYPOTHETICAL 14.9 KD PROTEIN IN ...")
00411         self.assertEqual(record.descriptions[2].score, 39)
00412         self.assertAlmostEqual(record.descriptions[2].e, 0.007)
00413         self.assertEqual(record.descriptions[3].title, "gi|6014830|sp|O78935|CYB_MARAM CYTOCHROME B")
00414         self.assertEqual(record.descriptions[3].score, 29)
00415         self.assertAlmostEqual(record.descriptions[3].e, 4.6)
00416         self.assertEqual(record.descriptions[4].title, "gi|1351589|sp|P47694|Y456_MYCGE HYPOTHETICAL PROTEIN MG456")
00417         self.assertEqual(record.descriptions[4].score, 29)
00418         self.assertAlmostEqual(record.descriptions[4].e, 6.0)
00419         self.assertEqual(record.descriptions[5].title, "gi|2496246|sp|Q57881|Y439_METJA HYPOTHETICAL ATP-BINDING PROTEI...")
00420         self.assertEqual(record.descriptions[5].score, 29)
00421         self.assertAlmostEqual(record.descriptions[5].e, 7.8)
00422         self.assertEqual(len(record.alignments), 0)
00423         self.assertEqual(record.database_name, ['data/swissprot'])
00424         self.assertEqual(record.num_letters_in_database, [29652561])
00425         self.assertEqual(record.num_sequences_in_database, [82258])
00426         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
00427         self.assertEqual(len(record.ka_params), 3)
00428         self.assertAlmostEqual(record.ka_params[0], 0.331)
00429         self.assertAlmostEqual(record.ka_params[1], 0.146)
00430         self.assertAlmostEqual(record.ka_params[2], 0.428)
00431         self.assertEqual(len(record.ka_params_gap), 3)
00432         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
00433         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
00434         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
00435         self.assertEqual(record.matrix, 'BLOSUM62')
00436         self.assertEqual(record.gap_penalties, [11,1])
00437         self.assertEqual(record.num_hits, 8801581)
00438         self.assertEqual(record.num_sequences, 82258)
00439         self.assertEqual(record.num_extends, 320828)
00440         self.assertEqual(record.num_good_extends, 892)
00441         self.assertEqual(record.num_seqs_better_e, 6)
00442         self.assertEqual(record.hsps_no_gap, 3)
00443         self.assertEqual(record.hsps_prelim_gapped, 3)
00444         self.assertEqual(record.hsps_gapped, 6)
00445         self.assertEqual(record.query_length, 166)
00446         self.assertEqual(record.database_length, 29652561)
00447         self.assertEqual(record.effective_hsp_length, 46)
00448         self.assertEqual(record.effective_query_length, 120)
00449         self.assertEqual(record.effective_database_length, 25868693)
00450         self.assertEqual(record.effective_search_space, 3104243160)
00451         self.assertEqual(record.effective_search_space_used, 3104243160)
00452         self.assertEqual(record.threshold, 11)
00453         self.assertEqual(record.window_size, 40)
00454         self.assertEqual(len(record.dropoff_1st_pass), 2)
00455         self.assertEqual(record.dropoff_1st_pass[0], 15)
00456         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.2)
00457         self.assertEqual(len(record.gap_x_dropoff), 2)
00458         self.assertEqual(record.gap_x_dropoff[0], 38)
00459         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
00460         self.assertEqual(len(record.gap_x_dropoff_final), 2)
00461         self.assertEqual(record.gap_x_dropoff_final[0], 64)
00462         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
00463         self.assertEqual(len(record.gap_trigger), 2)
00464         self.assertEqual(record.gap_trigger[0], 40)
00465         self.assertAlmostEqual(record.gap_trigger[1], 21.9)
00466         self.assertEqual(len(record.blast_cutoff), 2)
00467         self.assertEqual(record.blast_cutoff[0], 62)
00468         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
00469 
00470     def test_bt005(self):
00471         "Test parsing BLASTP 2.0.10 output (bt005)"
00472 
00473         path = os.path.join('Blast', 'bt005.txt')
00474         handle = open(path)
00475         record = self.parser.parse(handle)
00476         handle.close()
00477         self.assertEqual(record.application, "BLASTP")
00478         self.assertEqual(record.version, '2.0.10')
00479         self.assertEqual(record.date, "Aug-26-1999")
00480         self.assertEqual(record.reference, TestNCBITextParser.reference)
00481         self.assertEqual(record.query, "gi|132349|sp|P15394|REPA_AGRTU REPLICATING PROTEIN")
00482         self.assertEqual(record.query_letters, 250)
00483         self.assertEqual(record.database, "data/swissprot")
00484         self.assertEqual(record.database_sequences, 82258)
00485         self.assertEqual(record.database_letters, 29652561)
00486         self.assertEqual(len(record.descriptions), 15)
00487         self.assertEqual(record.descriptions[0].title, "gi|132349|sp|P15394|REPA_AGRTU REPLICATING PROTEIN")
00488         self.assertEqual(record.descriptions[0].score, 514)
00489         self.assertAlmostEqual(record.descriptions[0].e, 1.e-146)
00490         self.assertEqual(record.descriptions[1].title, "gi|123932|sp|P19922|HYIN_BRAJA INDOLEACETAMIDE HYDROLASE (IAH) ...")
00491         self.assertEqual(record.descriptions[1].score, 34)
00492         self.assertAlmostEqual(record.descriptions[1].e, 0.29)
00493         self.assertEqual(record.descriptions[2].title, "gi|137670|sp|P06422|VE2_HPV08 REGULATORY PROTEIN E2")
00494         self.assertEqual(record.descriptions[2].score, 32)
00495         self.assertAlmostEqual(record.descriptions[2].e, 0.86)
00496         self.assertEqual(record.descriptions[3].title, "gi|5921693|sp|Q05152|CCAB_RABIT VOLTAGE-DEPENDENT N-TYPE CALCIU...")
00497         self.assertEqual(record.descriptions[3].score, 32)
00498         self.assertAlmostEqual(record.descriptions[3].e, 1.5)
00499         self.assertEqual(record.descriptions[4].title, "gi|121952|sp|P02256|H1_PARAN HISTONE H1, GONADAL")
00500         self.assertEqual(record.descriptions[4].score, 31)
00501         self.assertAlmostEqual(record.descriptions[4].e, 2.5)
00502         self.assertEqual(record.descriptions[5].title, "gi|124141|sp|P08392|ICP4_HSV11 TRANS-ACTING TRANSCRIPTIONAL PRO...")
00503         self.assertEqual(record.descriptions[5].score, 31)
00504         self.assertAlmostEqual(record.descriptions[5].e, 3.3)
00505         self.assertEqual(record.descriptions[6].title, "gi|3915729|sp|P51592|HYDP_DROME HYPERPLASTIC DISCS PROTEIN (HYD...")
00506         self.assertEqual(record.descriptions[6].score, 31)
00507         self.assertAlmostEqual(record.descriptions[6].e, 3.3)
00508         self.assertEqual(record.descriptions[7].title, "gi|462182|sp|P33438|GLT_DROME GLUTACTIN PRECURSOR")
00509         self.assertEqual(record.descriptions[7].score, 31)
00510         self.assertAlmostEqual(record.descriptions[7].e, 3.3)
00511         self.assertEqual(record.descriptions[8].title, "gi|731294|sp|P39713|YAG1_YEAST HYPOTHETICAL ZINC-TYPE ALCOHOL D...")
00512         self.assertEqual(record.descriptions[8].score, 30)
00513         self.assertAlmostEqual(record.descriptions[8].e, 4.3)
00514         self.assertEqual(record.descriptions[9].title, "gi|1708851|sp|P55268|LMB2_HUMAN LAMININ BETA-2 CHAIN PRECURSOR ...")
00515         self.assertEqual(record.descriptions[9].score, 30)
00516         self.assertAlmostEqual(record.descriptions[9].e, 4.3)
00517         self.assertEqual(record.descriptions[10].title, "gi|2495137|sp|Q24704|H1_DROVI HISTONE H1")
00518         self.assertEqual(record.descriptions[10].score, 29)
00519         self.assertAlmostEqual(record.descriptions[10].e, 7.5)
00520         self.assertEqual(record.descriptions[11].title, "gi|1172635|sp|P46466|PRS4_ORYSA 26S PROTEASE REGULATORY SUBUNIT...")
00521         self.assertEqual(record.descriptions[11].score, 29)
00522         self.assertAlmostEqual(record.descriptions[11].e, 9.8)
00523         self.assertEqual(record.descriptions[12].title, "gi|6093970|sp|Q61085|RHOP_MOUSE GTP-RHO BINDING PROTEIN 1 (RHOP...")
00524         self.assertEqual(record.descriptions[12].score, 29)
00525         self.assertAlmostEqual(record.descriptions[12].e, 9.8)
00526         self.assertEqual(record.descriptions[13].title, "gi|547963|sp|Q01989|MYS9_DROME MYOSIN HEAVY CHAIN 95F (95F MHC)")
00527         self.assertEqual(record.descriptions[13].score, 29)
00528         self.assertAlmostEqual(record.descriptions[13].e, 9.8)
00529         self.assertEqual(record.descriptions[14].title, "gi|6226905|sp|Q59567|TOP1_MYCTU DNA TOPOISOMERASE I (OMEGA-PROT...")
00530         self.assertEqual(record.descriptions[14].score, 29)
00531         self.assertAlmostEqual(record.descriptions[14].e, 9.8)
00532         self.assertEqual(len(record.alignments), 0)
00533         self.assertEqual(record.database_name, ['data/swissprot'])
00534         self.assertEqual(record.num_letters_in_database, [29652561])
00535         self.assertEqual(record.num_sequences_in_database, [82258])
00536         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
00537         self.assertEqual(len(record.ka_params), 3)
00538         self.assertAlmostEqual(record.ka_params[0], 0.317)
00539         self.assertAlmostEqual(record.ka_params[1], 0.133)
00540         self.assertAlmostEqual(record.ka_params[2], 0.395)
00541         self.assertEqual(len(record.ka_params_gap), 3)
00542         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
00543         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
00544         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
00545         self.assertEqual(record.matrix, 'BLOSUM62')
00546         self.assertEqual(record.gap_penalties, [11,1])
00547         self.assertEqual(record.num_hits, 14679054)
00548         self.assertEqual(record.num_sequences, 82258)
00549         self.assertEqual(record.num_extends, 599117)
00550         self.assertEqual(record.num_good_extends, 1508)
00551         self.assertEqual(record.num_seqs_better_e, 15)
00552         self.assertEqual(record.hsps_no_gap, 4)
00553         self.assertEqual(record.hsps_prelim_gapped, 11)
00554         self.assertEqual(record.hsps_gapped, 15)
00555         self.assertEqual(record.query_length, 250)
00556         self.assertEqual(record.database_length, 29652561)
00557         self.assertEqual(record.effective_hsp_length, 51)
00558         self.assertEqual(record.effective_query_length, 199)
00559         self.assertEqual(record.effective_database_length, 25457403)
00560         self.assertEqual(record.effective_search_space, 5066023197)
00561         self.assertEqual(record.effective_search_space_used, 5066023197)
00562         self.assertEqual(record.threshold, 11)
00563         self.assertEqual(record.window_size, 40)
00564         self.assertEqual(len(record.dropoff_1st_pass), 2)
00565         self.assertEqual(record.dropoff_1st_pass[0], 16)
00566         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
00567         self.assertEqual(len(record.gap_x_dropoff), 2)
00568         self.assertEqual(record.gap_x_dropoff[0], 38)
00569         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
00570         self.assertEqual(len(record.gap_x_dropoff_final), 2)
00571         self.assertEqual(record.gap_x_dropoff_final[0], 64)
00572         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
00573         self.assertEqual(len(record.gap_trigger), 2)
00574         self.assertEqual(record.gap_trigger[0], 41)
00575         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
00576         self.assertEqual(len(record.blast_cutoff), 2)
00577         self.assertEqual(record.blast_cutoff[0], 63)
00578         self.assertAlmostEqual(record.blast_cutoff[1], 29.0)
00579 
00580     def test_bt006(self):
00581         "Test parsing PHI-BLAST, BLASTP 2.0.10 output, one round (bt006)"
00582 
00583         path = os.path.join('Blast', 'bt006.txt')
00584         handle = open(path)
00585         record = self.pb_parser.parse(handle)
00586         handle.close()
00587         self.assertEqual(record.application, "BLASTP")
00588         self.assertEqual(record.version, '2.0.10')
00589         self.assertEqual(record.date, "Aug-26-1999")
00590         self.assertEqual(record.reference, TestNCBITextParser.reference)
00591         self.assertEqual(record.query, "gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
00592         self.assertEqual(record.query_letters, 197)
00593         self.assertEqual(record.database, "data/swissprot")
00594         self.assertEqual(record.database_sequences, 82258)
00595         self.assertEqual(record.database_letters, 29652561)
00596         self.assertEqual(len(record.rounds), 1)
00597         self.assertEqual(len(record.rounds[0].new_seqs), 4)
00598         self.assertEqual(record.rounds[0].new_seqs[0].title, "gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
00599         self.assertEqual(record.rounds[0].new_seqs[0].score, 402)
00600         self.assertAlmostEqual(record.rounds[0].new_seqs[0].e, 1.e-112)
00601         self.assertEqual(record.rounds[0].new_seqs[1].title, "gi|1352934|sp|P47169|YJ9F_YEAST HYPOTHETICAL 161.2 KD PROTEIN I...")
00602         self.assertEqual(record.rounds[0].new_seqs[1].score, 30)
00603         self.assertAlmostEqual(record.rounds[0].new_seqs[1].e, 3.3)
00604         self.assertEqual(record.rounds[0].new_seqs[2].title, "gi|3915741|sp|P04407|KITH_HSV23 THYMIDINE KINASE")
00605         self.assertEqual(record.rounds[0].new_seqs[2].score, 29)
00606         self.assertAlmostEqual(record.rounds[0].new_seqs[2].e, 7.4)
00607         self.assertEqual(record.rounds[0].new_seqs[3].title, "gi|3334489|sp|P15398|RPA1_SCHPO DNA-DIRECTED RNA POLYMERASE I 1...")
00608         self.assertEqual(record.rounds[0].new_seqs[3].score, 29)
00609         self.assertAlmostEqual(record.rounds[0].new_seqs[3].e, 7.4)
00610         self.assertEqual(len(record.rounds[0].alignments), 4)
00611         self.assertEqual(record.rounds[0].alignments[0].title, ">gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
00612         self.assertEqual(record.rounds[0].alignments[0].length, 197)
00613         self.assertEqual(record.rounds[0].alignments[1].title, ">gi|1352934|sp|P47169|YJ9F_YEAST HYPOTHETICAL 161.2 KD PROTEIN IN NMD5-HOM6 INTERGENIC REGION")
00614         self.assertEqual(record.rounds[0].alignments[1].length, 1442)
00615         self.assertEqual(record.rounds[0].alignments[2].title, ">gi|3915741|sp|P04407|KITH_HSV23 THYMIDINE KINASE")
00616         self.assertEqual(record.rounds[0].alignments[2].length, 376)
00617         self.assertEqual(record.rounds[0].alignments[3].title, ">gi|3334489|sp|P15398|RPA1_SCHPO DNA-DIRECTED RNA POLYMERASE I 190 KD POLYPEPTIDE")
00618         self.assertEqual(record.rounds[0].alignments[3].length, 1689)
00619         self.assertEqual(record.rounds[0].alignments[0].hsps[0].score, 1021)
00620         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].bits, 402)
00621         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].expect, 1e-112)
00622         self.assertEqual(len(record.rounds[0].alignments[0].hsps), 1)
00623         self.assertEqual(record.rounds[0].alignments[1].hsps[0].score, 66)
00624         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].bits, 30.1)
00625         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].expect, 3.3)
00626         self.assertEqual(len(record.rounds[0].alignments[1].hsps), 1)
00627         self.assertEqual(record.rounds[0].alignments[2].hsps[0].score, 63)
00628         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].bits, 29.0)
00629         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].expect, 7.4)
00630         self.assertEqual(len(record.rounds[0].alignments[2].hsps), 1)
00631         self.assertEqual(record.rounds[0].alignments[3].hsps[0].score, 63)
00632         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].bits, 29.0)
00633         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].expect, 7.4)
00634         self.assertEqual(len(record.rounds[0].alignments[3].hsps), 1)
00635         self.assertEqual(record.rounds[0].alignments[0].hsps[0].identities, (197, 197))
00636         self.assertEqual(record.rounds[0].alignments[0].hsps[0].positives, (197, 197))
00637         self.assertEqual(record.rounds[0].alignments[1].hsps[0].identities, (23, 70))
00638         self.assertEqual(record.rounds[0].alignments[1].hsps[0].positives, (35, 70))
00639         self.assertEqual(record.rounds[0].alignments[1].hsps[0].gaps, (10, 70))
00640         self.assertEqual(record.rounds[0].alignments[2].hsps[0].identities, (15, 37))
00641         self.assertEqual(record.rounds[0].alignments[2].hsps[0].positives, (22, 37))
00642         self.assertEqual(record.rounds[0].alignments[2].hsps[0].gaps, (2, 37))
00643         self.assertEqual(record.rounds[0].alignments[3].hsps[0].identities, (12, 38))
00644         self.assertEqual(record.rounds[0].alignments[3].hsps[0].positives, (20, 38))
00645         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
00646         self.assertEqual(record.rounds[0].alignments[0].hsps[0].match, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
00647         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
00648         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_start, 1)
00649         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_end, 197)
00650         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_start, 1)
00651         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_end, 197)
00652         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query, "TLMASKETLLKR--------LRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARA")
00653         self.assertEqual(record.rounds[0].alignments[1].hsps[0].match, "TL+  K+  L R          TR + K S AA   D+ +EGLS P    +  +D  +  ++A+ +AARA")
00654         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct, "TLLTRKDPSLSRNLKQSAGDALTRKQEKRSKAA--FDQLLEGLSGPPLHVYYASDGGNAANLAKRLAARA")
00655         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_start, 107)
00656         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_end, 168)
00657         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_start, 637)
00658         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_end, 704)
00659         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query, "IWINGAFGSGKTQTAFELHRRLNP--SYVYDPEKMGF")
00660         self.assertEqual(record.rounds[0].alignments[2].hsps[0].match, "++I+G  G GKT T+ +L   L P  + VY PE M +")
00661         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct, "VYIDGPHGVGKTTTSAQLMEALGPRDNIVYVPEPMTY")
00662         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_start, 3)
00663         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_end, 37)
00664         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_start, 52)
00665         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_end, 88)
00666         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query, "GILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASK")
00667         self.assertEqual(record.rounds[0].alignments[3].hsps[0].match, "G +++P+   HP +F+++   LR      HHF L   K")
00668         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct, "GHIVLPIPAYHPLFFSQMYNLLRSTCLYCHHFKLSKVK")
00669         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_start, 75)
00670         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_end, 112)
00671         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_start, 78)
00672         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_end, 115)
00673         self.assertEqual(record.database_name, ['data/swissprot'])
00674         self.assertEqual(record.num_letters_in_database, [29652561])
00675         self.assertEqual(record.num_sequences_in_database, [82258])
00676         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
00677         self.assertEqual(len(record.ka_params), 3)
00678         self.assertAlmostEqual(record.ka_params[0], 0.323)
00679         self.assertAlmostEqual(record.ka_params[1], 0.138)
00680         self.assertAlmostEqual(record.ka_params[2], 0.411)
00681         self.assertEqual(len(record.ka_params_gap), 3)
00682         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
00683         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
00684         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
00685         self.assertEqual(record.matrix, 'BLOSUM62')
00686         self.assertEqual(record.gap_penalties, [11,1])
00687         self.assertEqual(record.num_hits, 11332752)
00688         self.assertEqual(record.num_sequences, 82258)
00689         self.assertEqual(record.num_extends, 435116)
00690         self.assertEqual(record.num_good_extends, 987)
00691         self.assertEqual(record.num_seqs_better_e, 4)
00692         self.assertEqual(record.hsps_no_gap, 2)
00693         self.assertEqual(record.hsps_prelim_gapped, 2)
00694         self.assertEqual(record.hsps_gapped, 4)
00695         self.assertEqual(record.query_length, 197)
00696         self.assertEqual(record.database_length, 29652561)
00697         self.assertEqual(record.effective_hsp_length, 48)
00698         self.assertEqual(record.effective_query_length, 149)
00699         self.assertEqual(record.effective_database_length, 25704177)
00700         self.assertEqual(record.effective_search_space, 3829922373)
00701         self.assertEqual(record.effective_search_space_used, 3829922373)
00702         self.assertEqual(record.threshold, 11)
00703         self.assertEqual(record.window_size, 40)
00704         self.assertEqual(len(record.dropoff_1st_pass), 2)
00705         self.assertEqual(record.dropoff_1st_pass[0], 16)
00706         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.5)
00707         self.assertEqual(len(record.gap_x_dropoff), 2)
00708         self.assertEqual(record.gap_x_dropoff[0], 38)
00709         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
00710         self.assertEqual(len(record.gap_x_dropoff_final), 2)
00711         self.assertEqual(record.gap_x_dropoff_final[0], 64)
00712         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
00713         self.assertEqual(len(record.gap_trigger), 2)
00714         self.assertEqual(record.gap_trigger[0], 41)
00715         self.assertAlmostEqual(record.gap_trigger[1], 22.0)
00716         self.assertEqual(len(record.blast_cutoff), 2)
00717         self.assertEqual(record.blast_cutoff[0], 62)
00718         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
00719 
00720     def test_bt007(self):
00721         "Test parsing PHI-BLAST, BLASTP 2.0.10 output, three rounds (bt007)"
00722 
00723         path = os.path.join('Blast', 'bt007.txt')
00724         handle = open(path)
00725         record = self.pb_parser.parse(handle)
00726         handle.close()
00727         self.assertEqual(record.application, "BLASTP")
00728         self.assertEqual(record.version, '2.0.10')
00729         self.assertEqual(record.date, "Aug-26-1999")
00730         self.assertEqual(record.reference, TestNCBITextParser.reference)
00731         self.assertEqual(record.query, "gi|126343|sp|P17216|LIVK_SALTY LEUCINE-SPECIFIC BINDING PROTEIN\nPRECURSOR (LS-BP) (L-BP)")
00732         self.assertEqual(record.query_letters, 369)
00733         self.assertEqual(record.database, "data/swissprot")
00734         self.assertEqual(record.database_sequences, 82258)
00735         self.assertEqual(record.database_letters, 29652561)
00736         self.assertEqual(len(record.rounds), 3)
00737         self.assertEqual(len(record.rounds[0].new_seqs), 14)
00738         #Rest of test broken up to avoid Jython JVM limitations
00739         self._check_bt007_round0(record)
00740         self._check_bt007_round1(record)
00741         self._check_bt007_round2(record)
00742         self._check_bt007_hsps(record)
00743         self._check_bt007_hsps_details(record)
00744         self._check_bt007_footer(record)
00745 
00746     def _check_bt007_round0(self, record):
00747         self.assertEqual(record.rounds[0].new_seqs[0].title, "gi|126343|sp|P17216|LIVK_SALTY LEUCINE-SPECIFIC BINDING PROTEIN...")
00748         self.assertEqual(record.rounds[0].new_seqs[0].score, 743)
00749         self.assertAlmostEqual(record.rounds[0].new_seqs[0].e, 0.0)
00750         self.assertEqual(record.rounds[0].new_seqs[1].title, "gi|126349|sp|P04816|LIVK_ECOLI LEUCINE-SPECIFIC BINDING PROTEIN...")
00751         self.assertEqual(record.rounds[0].new_seqs[1].score, 679)
00752         self.assertAlmostEqual(record.rounds[0].new_seqs[1].e, 0.0)
00753         self.assertEqual(record.rounds[0].new_seqs[2].title, "gi|126348|sp|P02917|LIVJ_ECOLI LEU/ILE/VAL-BINDING PROTEIN PREC...")
00754         self.assertEqual(record.rounds[0].new_seqs[2].score, 581)
00755         self.assertAlmostEqual(record.rounds[0].new_seqs[2].e, 1.e-166)
00756         self.assertEqual(record.rounds[0].new_seqs[3].title, "gi|126342|sp|P17215|LIVJ_SALTY LEU/ILE/VAL/THR-BINDING PROTEIN ...")
00757         self.assertEqual(record.rounds[0].new_seqs[3].score, 577)
00758         self.assertAlmostEqual(record.rounds[0].new_seqs[3].e, 1.e-164)
00759         self.assertEqual(record.rounds[0].new_seqs[4].title, "gi|126347|sp|P25399|LIVJ_CITFR LEU/ILE/VAL-BINDING PROTEIN PREC...")
00760         self.assertEqual(record.rounds[0].new_seqs[4].score, 570)
00761         self.assertAlmostEqual(record.rounds[0].new_seqs[4].e, 1.e-162)
00762         self.assertEqual(record.rounds[0].new_seqs[5].title, "gi|115120|sp|P21175|BRAC_PSEAE LEUCINE-, ISOLEUCINE-, VALINE-, ...")
00763         self.assertEqual(record.rounds[0].new_seqs[5].score, 413)
00764         self.assertAlmostEqual(record.rounds[0].new_seqs[5].e, 1.e-115)
00765         self.assertEqual(record.rounds[0].new_seqs[6].title, "gi|113709|sp|P27017|AMIC_PSEAE ALIPHATIC AMIDASE EXPRESSION-REG...")
00766         self.assertEqual(record.rounds[0].new_seqs[6].score, 40)
00767         self.assertAlmostEqual(record.rounds[0].new_seqs[6].e, 0.006)
00768         self.assertEqual(record.rounds[0].new_seqs[7].title, "gi|127751|sp|P02567|MYSD_CAEEL MYOSIN HEAVY CHAIN D (MHC D)")
00769         self.assertEqual(record.rounds[0].new_seqs[7].score, 32)
00770         self.assertAlmostEqual(record.rounds[0].new_seqs[7].e, 1.4)
00771         self.assertEqual(record.rounds[0].new_seqs[8].title, "gi|131068|sp|P23596|PRTD_ERWCH PROTEASES SECRETION ATP-BINDING ...")
00772         self.assertEqual(record.rounds[0].new_seqs[8].score, 32)
00773         self.assertAlmostEqual(record.rounds[0].new_seqs[8].e, 1.8)
00774         self.assertEqual(record.rounds[0].new_seqs[9].title, "gi|2495081|sp|Q09630|MGR1_CAEEL PROBABLE METABOTROPIC GLUTAMATE...")
00775         self.assertEqual(record.rounds[0].new_seqs[9].score, 32)
00776         self.assertAlmostEqual(record.rounds[0].new_seqs[9].e, 1.8)
00777         self.assertEqual(record.rounds[0].new_seqs[10].title, "gi|2506848|sp|P80040|MDH_CHLAU MALATE DEHYDROGENASE")
00778         self.assertEqual(record.rounds[0].new_seqs[10].score, 32)
00779         self.assertAlmostEqual(record.rounds[0].new_seqs[10].e, 1.8)
00780         self.assertEqual(record.rounds[0].new_seqs[11].title, "gi|3915245|sp|Q38394|VG37_BPK3 TAIL FIBER PROTEIN GP37 (RECEPTO...")
00781         self.assertEqual(record.rounds[0].new_seqs[11].score, 31)
00782         self.assertAlmostEqual(record.rounds[0].new_seqs[11].e, 4.0)
00783         self.assertEqual(record.rounds[0].new_seqs[12].title, "gi|1351210|sp|P47209|TCPE_CAEEL T-COMPLEX PROTEIN 1, EPSILON SU...")
00784         self.assertEqual(record.rounds[0].new_seqs[12].score, 31)
00785         self.assertAlmostEqual(record.rounds[0].new_seqs[12].e, 4.0)
00786         self.assertEqual(record.rounds[0].new_seqs[13].title, "gi|1351310|sp|P43496|TRXB_PENCH THIOREDOXIN REDUCTASE")
00787         self.assertEqual(record.rounds[0].new_seqs[13].score, 31)
00788         self.assertAlmostEqual(record.rounds[0].new_seqs[13].e, 5.2)
00789         self.assertEqual(len(record.rounds[0].alignments), 14)
00790         self.assertEqual(record.rounds[0].alignments[0].title, ">gi|126343|sp|P17216|LIVK_SALTY LEUCINE-SPECIFIC BINDING PROTEIN PRECURSOR (LS-BP) (L-BP)")
00791         self.assertEqual(record.rounds[0].alignments[0].length, 369)
00792         self.assertEqual(record.rounds[0].alignments[1].title, ">gi|126349|sp|P04816|LIVK_ECOLI LEUCINE-SPECIFIC BINDING PROTEIN PRECURSOR (LS-BP) (L-BP)")
00793         self.assertEqual(record.rounds[0].alignments[1].length, 369)
00794         self.assertEqual(record.rounds[0].alignments[2].title, ">gi|126348|sp|P02917|LIVJ_ECOLI LEU/ILE/VAL-BINDING PROTEIN PRECURSOR (LIV-BP)")
00795         self.assertEqual(record.rounds[0].alignments[2].length, 367)
00796         self.assertEqual(record.rounds[0].alignments[3].title, ">gi|126342|sp|P17215|LIVJ_SALTY LEU/ILE/VAL/THR-BINDING PROTEIN PRECURSOR (LIVT-BP)")
00797         self.assertEqual(record.rounds[0].alignments[3].length, 365)
00798         self.assertEqual(record.rounds[0].alignments[4].title, ">gi|126347|sp|P25399|LIVJ_CITFR LEU/ILE/VAL-BINDING PROTEIN PRECURSOR (LIV-BP)")
00799         self.assertEqual(record.rounds[0].alignments[4].length, 367)
00800         self.assertEqual(record.rounds[0].alignments[5].title, ">gi|115120|sp|P21175|BRAC_PSEAE LEUCINE-, ISOLEUCINE-, VALINE-, THREONINE-, AND ALANINE-BINDING PROTEIN PRECURSOR (LIVAT-BP) (LEU/ILE/VAL/THR/ALA-BINDING PROTEIN)")
00801         self.assertEqual(record.rounds[0].alignments[5].length, 373)
00802         self.assertEqual(record.rounds[0].alignments[6].title, ">gi|113709|sp|P27017|AMIC_PSEAE ALIPHATIC AMIDASE EXPRESSION-REGULATING PROTEIN")
00803         self.assertEqual(record.rounds[0].alignments[6].length, 385)
00804         self.assertEqual(record.rounds[0].alignments[7].title, ">gi|127751|sp|P02567|MYSD_CAEEL MYOSIN HEAVY CHAIN D (MHC D)")
00805         self.assertEqual(record.rounds[0].alignments[7].length, 1938)
00806         self.assertEqual(record.rounds[0].alignments[8].title, ">gi|131068|sp|P23596|PRTD_ERWCH PROTEASES SECRETION ATP-BINDING PROTEIN PRTD")
00807         self.assertEqual(record.rounds[0].alignments[8].length, 575)
00808         self.assertEqual(record.rounds[0].alignments[9].title, ">gi|2495081|sp|Q09630|MGR1_CAEEL PROBABLE METABOTROPIC GLUTAMATE RECEPTOR MGL-1")
00809         self.assertEqual(record.rounds[0].alignments[9].length, 999)
00810         self.assertEqual(record.rounds[0].alignments[10].title, ">gi|2506848|sp|P80040|MDH_CHLAU MALATE DEHYDROGENASE")
00811         self.assertEqual(record.rounds[0].alignments[10].length, 309)
00812         self.assertEqual(record.rounds[0].alignments[11].title, ">gi|3915245|sp|Q38394|VG37_BPK3 TAIL FIBER PROTEIN GP37 (RECEPTOR RECOGNIZING PROTEIN)")
00813         self.assertEqual(record.rounds[0].alignments[11].length, 1243)
00814         self.assertEqual(record.rounds[0].alignments[12].title, ">gi|1351210|sp|P47209|TCPE_CAEEL T-COMPLEX PROTEIN 1, EPSILON SUBUNIT (TCP-1-EPSILON) (CCT-EPSILON)")
00815         self.assertEqual(record.rounds[0].alignments[12].length, 542)
00816         self.assertEqual(record.rounds[0].alignments[13].title, ">gi|1351310|sp|P43496|TRXB_PENCH THIOREDOXIN REDUCTASE")
00817         self.assertEqual(record.rounds[0].alignments[13].length, 334)
00818 
00819     def _check_bt007_round1(self, record):
00820         self.assertEqual(len(record.rounds[1].new_seqs), 18)
00821         self.assertEqual(record.rounds[1].new_seqs[0].title, "gi|113709|sp|P27017|AMIC_PSEAE ALIPHATIC AMIDASE EXPRESSION-REG...")
00822         self.assertEqual(record.rounds[1].new_seqs[0].score, 49)
00823         self.assertAlmostEqual(record.rounds[1].new_seqs[0].e, 2e-5)
00824         self.assertEqual(record.rounds[1].new_seqs[1].title, "gi|3024131|sp|P91685|MGR_DROME METABOTROPIC GLUTAMATE RECEPTOR ...")
00825         self.assertEqual(record.rounds[1].new_seqs[1].score, 41)
00826         self.assertAlmostEqual(record.rounds[1].new_seqs[1].e, 0.003)
00827         self.assertEqual(record.rounds[1].new_seqs[2].title, "gi|121300|sp|P23385|MGR1_RAT METABOTROPIC GLUTAMATE RECEPTOR 1 ...")
00828         self.assertEqual(record.rounds[1].new_seqs[2].score, 39)
00829         self.assertAlmostEqual(record.rounds[1].new_seqs[2].e, 0.012)
00830         self.assertEqual(record.rounds[1].new_seqs[3].title, "gi|2495074|sp|Q13255|MGR1_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00831         self.assertEqual(record.rounds[1].new_seqs[3].score, 39)
00832         self.assertAlmostEqual(record.rounds[1].new_seqs[3].e, 0.012)
00833         self.assertEqual(record.rounds[1].new_seqs[4].title, "gi|1170947|sp|P31424|MGR5_RAT METABOTROPIC GLUTAMATE RECEPTOR 5...")
00834         self.assertEqual(record.rounds[1].new_seqs[4].score, 36)
00835         self.assertAlmostEqual(record.rounds[1].new_seqs[4].e, 0.11)
00836         self.assertEqual(record.rounds[1].new_seqs[5].title, "gi|1709020|sp|P41594|MGR5_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00837         self.assertEqual(record.rounds[1].new_seqs[5].score, 36)
00838         self.assertAlmostEqual(record.rounds[1].new_seqs[5].e, 0.14)
00839         self.assertEqual(record.rounds[1].new_seqs[6].title, "gi|2495081|sp|Q09630|MGR1_CAEEL PROBABLE METABOTROPIC GLUTAMATE...")
00840         self.assertEqual(record.rounds[1].new_seqs[6].score, 35)
00841         self.assertAlmostEqual(record.rounds[1].new_seqs[6].e, 0.18)
00842         self.assertEqual(record.rounds[1].new_seqs[7].title, "gi|6014748|sp|Q10900|CTPI_MYCTU PROBABLE CATION-TRANSPORTING AT...")
00843         self.assertEqual(record.rounds[1].new_seqs[7].score, 33)
00844         self.assertAlmostEqual(record.rounds[1].new_seqs[7].e, 0.71)
00845         self.assertEqual(record.rounds[1].new_seqs[8].title, "gi|2833574|sp|Q58178|Y768_METJA HYPOTHETICAL PROTEIN MJ0768")
00846         self.assertEqual(record.rounds[1].new_seqs[8].score, 32)
00847         self.assertAlmostEqual(record.rounds[1].new_seqs[8].e, 1.6)
00848         self.assertEqual(record.rounds[1].new_seqs[9].title, "gi|1169299|sp|P45513|DHAT_CITFR 1,3-PROPANEDIOL DEHYDROGENASE (...")
00849         self.assertEqual(record.rounds[1].new_seqs[9].score, 31)
00850         self.assertAlmostEqual(record.rounds[1].new_seqs[9].e, 3.6)
00851         self.assertEqual(record.rounds[1].new_seqs[10].title, "gi|2495080|sp|P70579|MGR8_RAT METABOTROPIC GLUTAMATE RECEPTOR 8...")
00852         self.assertEqual(record.rounds[1].new_seqs[10].score, 31)
00853         self.assertAlmostEqual(record.rounds[1].new_seqs[10].e, 3.6)
00854         self.assertEqual(record.rounds[1].new_seqs[11].title, "gi|2495079|sp|O00222|MGR8_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00855         self.assertEqual(record.rounds[1].new_seqs[11].score, 31)
00856         self.assertAlmostEqual(record.rounds[1].new_seqs[11].e, 3.6)
00857         self.assertEqual(record.rounds[1].new_seqs[12].title, "gi|1346533|sp|P47743|MGR8_MOUSE METABOTROPIC GLUTAMATE RECEPTOR...")
00858         self.assertEqual(record.rounds[1].new_seqs[12].score, 30)
00859         self.assertAlmostEqual(record.rounds[1].new_seqs[12].e, 6.2)
00860         self.assertEqual(record.rounds[1].new_seqs[13].title, "gi|113381|sp|P06758|ADH2_ZYMMO ALCOHOL DEHYDROGENASE II (ADH II)")
00861         self.assertEqual(record.rounds[1].new_seqs[13].score, 30)
00862         self.assertAlmostEqual(record.rounds[1].new_seqs[13].e, 8.1)
00863         self.assertEqual(record.rounds[1].new_seqs[14].title, "gi|127751|sp|P02567|MYSD_CAEEL MYOSIN HEAVY CHAIN D (MHC D)")
00864         self.assertEqual(record.rounds[1].new_seqs[14].score, 30)
00865         self.assertAlmostEqual(record.rounds[1].new_seqs[14].e, 8.1)
00866         self.assertEqual(record.rounds[1].new_seqs[15].title, "gi|1346321|sp|P23897|HSER_RAT HEAT-STABLE ENTEROTOXIN RECEPTOR ...")
00867         self.assertEqual(record.rounds[1].new_seqs[15].score, 30)
00868         self.assertAlmostEqual(record.rounds[1].new_seqs[15].e, 8.1)
00869         self.assertEqual(record.rounds[1].new_seqs[16].title, "gi|1175674|sp|P45116|YCIH_HAEIN HYPOTHETICAL PROTEIN HI1225")
00870         self.assertEqual(record.rounds[1].new_seqs[16].score, 30)
00871         self.assertAlmostEqual(record.rounds[1].new_seqs[16].e, 8.1)
00872         self.assertEqual(record.rounds[1].new_seqs[17].title, "gi|3025270|sp|P77269|YPHF_ECOLI ABC TRANSPORTER PERIPLASMIC BIN...")
00873         self.assertEqual(record.rounds[1].new_seqs[17].score, 30)
00874         self.assertAlmostEqual(record.rounds[1].new_seqs[17].e, 8.1)
00875         self.assertEqual(len(record.rounds[1].alignments), 24)
00876         self.assertEqual(record.rounds[1].alignments[0].title, ">gi|126349|sp|P04816|LIVK_ECOLI LEUCINE-SPECIFIC BINDING PROTEIN PRECURSOR (LS-BP) (L-BP)")
00877         self.assertEqual(record.rounds[1].alignments[0].length, 369)
00878         self.assertEqual(record.rounds[1].alignments[1].title, ">gi|126342|sp|P17215|LIVJ_SALTY LEU/ILE/VAL/THR-BINDING PROTEIN PRECURSOR (LIVT-BP)")
00879         self.assertEqual(record.rounds[1].alignments[1].length, 365)
00880         self.assertEqual(record.rounds[1].alignments[2].title, ">gi|126347|sp|P25399|LIVJ_CITFR LEU/ILE/VAL-BINDING PROTEIN PRECURSOR (LIV-BP)")
00881         self.assertEqual(record.rounds[1].alignments[2].length, 367)
00882         self.assertEqual(record.rounds[1].alignments[3].title, ">gi|126343|sp|P17216|LIVK_SALTY LEUCINE-SPECIFIC BINDING PROTEIN PRECURSOR (LS-BP) (L-BP)")
00883         self.assertEqual(record.rounds[1].alignments[3].length, 369)
00884         self.assertEqual(record.rounds[1].alignments[4].title, ">gi|126348|sp|P02917|LIVJ_ECOLI LEU/ILE/VAL-BINDING PROTEIN PRECURSOR (LIV-BP)")
00885         self.assertEqual(record.rounds[1].alignments[4].length, 367)
00886         self.assertEqual(record.rounds[1].alignments[5].title, ">gi|115120|sp|P21175|BRAC_PSEAE LEUCINE-, ISOLEUCINE-, VALINE-, THREONINE-, AND ALANINE-BINDING PROTEIN PRECURSOR (LIVAT-BP) (LEU/ILE/VAL/THR/ALA-BINDING PROTEIN)")
00887         self.assertEqual(record.rounds[1].alignments[5].length, 373)
00888         self.assertEqual(record.rounds[1].alignments[6].title, ">gi|113709|sp|P27017|AMIC_PSEAE ALIPHATIC AMIDASE EXPRESSION-REGULATING PROTEIN")
00889         self.assertEqual(record.rounds[1].alignments[6].length, 385)
00890         self.assertEqual(record.rounds[1].alignments[7].title, ">gi|3024131|sp|P91685|MGR_DROME METABOTROPIC GLUTAMATE RECEPTOR PRECURSOR")
00891         self.assertEqual(record.rounds[1].alignments[7].length, 976)
00892         self.assertEqual(record.rounds[1].alignments[8].title, ">gi|121300|sp|P23385|MGR1_RAT METABOTROPIC GLUTAMATE RECEPTOR 1 PRECURSOR")
00893         self.assertEqual(record.rounds[1].alignments[8].length, 1199)
00894         self.assertEqual(record.rounds[1].alignments[9].title, ">gi|2495074|sp|Q13255|MGR1_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 1 PRECURSOR")
00895         self.assertEqual(record.rounds[1].alignments[9].length, 1194)
00896         self.assertEqual(record.rounds[1].alignments[10].title, ">gi|1170947|sp|P31424|MGR5_RAT METABOTROPIC GLUTAMATE RECEPTOR 5 PRECURSOR")
00897         self.assertEqual(record.rounds[1].alignments[10].length, 1203)
00898         self.assertEqual(record.rounds[1].alignments[11].title, ">gi|1709020|sp|P41594|MGR5_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 5 PRECURSOR")
00899         self.assertEqual(record.rounds[1].alignments[11].length, 1212)
00900         self.assertEqual(record.rounds[1].alignments[12].title, ">gi|2495081|sp|Q09630|MGR1_CAEEL PROBABLE METABOTROPIC GLUTAMATE RECEPTOR MGL-1")
00901         self.assertEqual(record.rounds[1].alignments[12].length, 999)
00902         self.assertEqual(record.rounds[1].alignments[13].title, ">gi|6014748|sp|Q10900|CTPI_MYCTU PROBABLE CATION-TRANSPORTING ATPASE I")
00903         self.assertEqual(record.rounds[1].alignments[13].length, 1632)
00904         self.assertEqual(record.rounds[1].alignments[14].title, ">gi|2833574|sp|Q58178|Y768_METJA HYPOTHETICAL PROTEIN MJ0768")
00905         self.assertEqual(record.rounds[1].alignments[14].length, 249)
00906         self.assertEqual(record.rounds[1].alignments[15].title, ">gi|1169299|sp|P45513|DHAT_CITFR 1,3-PROPANEDIOL DEHYDROGENASE (3-HYDROXYPROPIONALDEHYDE REDUCTASE) (1,3-PROPANEDIOL OXIDOREDUCTASE)")
00907         self.assertEqual(record.rounds[1].alignments[15].length, 387)
00908         self.assertEqual(record.rounds[1].alignments[16].title, ">gi|2495080|sp|P70579|MGR8_RAT METABOTROPIC GLUTAMATE RECEPTOR 8 PRECURSOR")
00909         self.assertEqual(record.rounds[1].alignments[16].length, 908)
00910         self.assertEqual(record.rounds[1].alignments[17].title, ">gi|2495079|sp|O00222|MGR8_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 8 PRECURSOR")
00911         self.assertEqual(record.rounds[1].alignments[17].length, 908)
00912         self.assertEqual(record.rounds[1].alignments[18].title, ">gi|1346533|sp|P47743|MGR8_MOUSE METABOTROPIC GLUTAMATE RECEPTOR 8 PRECURSOR")
00913         self.assertEqual(record.rounds[1].alignments[18].length, 908)
00914         self.assertEqual(record.rounds[1].alignments[19].title, ">gi|113381|sp|P06758|ADH2_ZYMMO ALCOHOL DEHYDROGENASE II (ADH II)")
00915         self.assertEqual(record.rounds[1].alignments[19].length, 383)
00916         self.assertEqual(record.rounds[1].alignments[20].title, ">gi|127751|sp|P02567|MYSD_CAEEL MYOSIN HEAVY CHAIN D (MHC D)")
00917         self.assertEqual(record.rounds[1].alignments[20].length, 1938)
00918         self.assertEqual(record.rounds[1].alignments[21].title, ">gi|1346321|sp|P23897|HSER_RAT HEAT-STABLE ENTEROTOXIN RECEPTOR PRECURSOR (GC-C) (INTESTINAL GUANYLATE CYCLASE) (STA RECEPTOR)")
00919         self.assertEqual(record.rounds[1].alignments[21].length, 1072)
00920         self.assertEqual(record.rounds[1].alignments[22].title, ">gi|1175674|sp|P45116|YCIH_HAEIN HYPOTHETICAL PROTEIN HI1225")
00921         self.assertEqual(record.rounds[1].alignments[22].length, 106)
00922         self.assertEqual(record.rounds[1].alignments[23].title, ">gi|3025270|sp|P77269|YPHF_ECOLI ABC TRANSPORTER PERIPLASMIC BINDING PROTEIN YPHF PRECURSOR")
00923 
00924     def _check_bt007_round2(self, record):
00925         self.assertEqual(record.rounds[1].alignments[23].length, 327)
00926         self.assertEqual(len(record.rounds[2].new_seqs), 16)
00927         self.assertEqual(record.rounds[2].new_seqs[0].title, "gi|3024134|sp|O15303|MGR6_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00928         self.assertEqual(record.rounds[2].new_seqs[0].score, 42)
00929         self.assertAlmostEqual(record.rounds[2].new_seqs[0].e, 0.002)
00930         self.assertEqual(record.rounds[2].new_seqs[1].title, "gi|2495077|sp|Q14833|MGR4_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00931         self.assertEqual(record.rounds[2].new_seqs[1].score, 39)
00932         self.assertAlmostEqual(record.rounds[2].new_seqs[1].e, 0.012)
00933         self.assertEqual(record.rounds[2].new_seqs[2].title, "gi|3024131|sp|P91685|MGR_DROME METABOTROPIC GLUTAMATE RECEPTOR ...")
00934         self.assertEqual(record.rounds[2].new_seqs[2].score, 38)
00935         self.assertAlmostEqual(record.rounds[2].new_seqs[2].e, 0.021)
00936         self.assertEqual(record.rounds[2].new_seqs[3].title, "gi|400255|sp|P31423|MGR4_RAT METABOTROPIC GLUTAMATE RECEPTOR 4 ...")
00937         self.assertEqual(record.rounds[2].new_seqs[3].score, 38)
00938         self.assertAlmostEqual(record.rounds[2].new_seqs[3].e, 0.036)
00939         self.assertEqual(record.rounds[2].new_seqs[4].title, "gi|547903|sp|P35349|MGR6_RAT METABOTROPIC GLUTAMATE RECEPTOR 6 ...")
00940         self.assertEqual(record.rounds[2].new_seqs[4].score, 37)
00941         self.assertAlmostEqual(record.rounds[2].new_seqs[4].e, 0.047)
00942         self.assertEqual(record.rounds[2].new_seqs[5].title, "gi|2495080|sp|P70579|MGR8_RAT METABOTROPIC GLUTAMATE RECEPTOR 8...")
00943         self.assertEqual(record.rounds[2].new_seqs[5].score, 36)
00944         self.assertAlmostEqual(record.rounds[2].new_seqs[5].e, 0.10)
00945         self.assertEqual(record.rounds[2].new_seqs[6].title, "gi|2495079|sp|O00222|MGR8_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00946         self.assertEqual(record.rounds[2].new_seqs[6].score, 36)
00947         self.assertAlmostEqual(record.rounds[2].new_seqs[6].e, 0.10)
00948         self.assertEqual(record.rounds[2].new_seqs[7].title, "gi|1346533|sp|P47743|MGR8_MOUSE METABOTROPIC GLUTAMATE RECEPTOR...")
00949         self.assertEqual(record.rounds[2].new_seqs[7].score, 35)
00950         self.assertAlmostEqual(record.rounds[2].new_seqs[7].e, 0.18)
00951         self.assertEqual(record.rounds[2].new_seqs[8].title, "gi|400402|sp|P13595|NCA1_MOUSE NEURAL CELL ADHESION MOLECULE, L...")
00952         self.assertEqual(record.rounds[2].new_seqs[8].score, 33)
00953         self.assertAlmostEqual(record.rounds[2].new_seqs[8].e, 0.69)
00954         self.assertEqual(record.rounds[2].new_seqs[9].title, "gi|1170947|sp|P31424|MGR5_RAT METABOTROPIC GLUTAMATE RECEPTOR 5...")
00955         self.assertEqual(record.rounds[2].new_seqs[9].score, 33)
00956         self.assertAlmostEqual(record.rounds[2].new_seqs[9].e, 0.69)
00957         self.assertEqual(record.rounds[2].new_seqs[10].title, "gi|1706242|sp|P51840|CYGE_RAT GUANYLYL CYCLASE GC-E PRECURSOR (...")
00958         self.assertEqual(record.rounds[2].new_seqs[10].score, 33)
00959         self.assertAlmostEqual(record.rounds[2].new_seqs[10].e, 0.91)
00960         self.assertEqual(record.rounds[2].new_seqs[11].title, "gi|1709020|sp|P41594|MGR5_HUMAN METABOTROPIC GLUTAMATE RECEPTOR...")
00961         self.assertEqual(record.rounds[2].new_seqs[11].score, 33)
00962         self.assertAlmostEqual(record.rounds[2].new_seqs[11].e, 0.91)
00963         self.assertEqual(record.rounds[2].new_seqs[12].title, "gi|549451|sp|Q06278|ADO_HUMAN ALDEHYDE OXIDASE")
00964         self.assertEqual(record.rounds[2].new_seqs[12].score, 32)
00965         self.assertAlmostEqual(record.rounds[2].new_seqs[12].e, 2.0)
00966         self.assertEqual(record.rounds[2].new_seqs[13].title, "gi|6014748|sp|Q10900|CTPI_MYCTU PROBABLE CATION-TRANSPORTING AT...")
00967         self.assertEqual(record.rounds[2].new_seqs[13].score, 32)
00968         self.assertAlmostEqual(record.rounds[2].new_seqs[13].e, 2.0)
00969         self.assertEqual(record.rounds[2].new_seqs[14].title, "gi|127861|sp|P13594|NCA2_MOUSE NEURAL CELL ADHESION MOLECULE, P...")
00970         self.assertEqual(record.rounds[2].new_seqs[14].score, 31)
00971         self.assertAlmostEqual(record.rounds[2].new_seqs[14].e, 2.7)
00972         self.assertEqual(record.rounds[2].new_seqs[15].title, "gi|127971|sp||NCPR_SALTR_1 [Segment 1 of 3] NADPH-CYTOCHROME P4...")
00973         self.assertEqual(record.rounds[2].new_seqs[15].score, 31)
00974         self.assertAlmostEqual(record.rounds[2].new_seqs[15].e, 3.5)
00975         self.assertEqual(len(record.rounds[2].alignments), 23)
00976         self.assertEqual(record.rounds[2].alignments[0].title, ">gi|126342|sp|P17215|LIVJ_SALTY LEU/ILE/VAL/THR-BINDING PROTEIN PRECURSOR (LIVT-BP)")
00977         self.assertEqual(record.rounds[2].alignments[0].length, 365)
00978         self.assertEqual(record.rounds[2].alignments[1].title, ">gi|126349|sp|P04816|LIVK_ECOLI LEUCINE-SPECIFIC BINDING PROTEIN PRECURSOR (LS-BP) (L-BP)")
00979         self.assertEqual(record.rounds[2].alignments[1].length, 369)
00980         self.assertEqual(record.rounds[2].alignments[2].title, ">gi|126348|sp|P02917|LIVJ_ECOLI LEU/ILE/VAL-BINDING PROTEIN PRECURSOR (LIV-BP)")
00981         self.assertEqual(record.rounds[2].alignments[2].length, 367)
00982         self.assertEqual(record.rounds[2].alignments[3].title, ">gi|126347|sp|P25399|LIVJ_CITFR LEU/ILE/VAL-BINDING PROTEIN PRECURSOR (LIV-BP)")
00983         self.assertEqual(record.rounds[2].alignments[3].length, 367)
00984         self.assertEqual(record.rounds[2].alignments[4].title, ">gi|126343|sp|P17216|LIVK_SALTY LEUCINE-SPECIFIC BINDING PROTEIN PRECURSOR (LS-BP) (L-BP)")
00985         self.assertEqual(record.rounds[2].alignments[4].length, 369)
00986         self.assertEqual(record.rounds[2].alignments[5].title, ">gi|115120|sp|P21175|BRAC_PSEAE LEUCINE-, ISOLEUCINE-, VALINE-, THREONINE-, AND ALANINE-BINDING PROTEIN PRECURSOR (LIVAT-BP) (LEU/ILE/VAL/THR/ALA-BINDING PROTEIN)")
00987         self.assertEqual(record.rounds[2].alignments[5].length, 373)
00988         self.assertEqual(record.rounds[2].alignments[6].title, ">gi|113709|sp|P27017|AMIC_PSEAE ALIPHATIC AMIDASE EXPRESSION-REGULATING PROTEIN")
00989         self.assertEqual(record.rounds[2].alignments[6].length, 385)
00990         self.assertEqual(record.rounds[2].alignments[7].title, ">gi|3024134|sp|O15303|MGR6_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 6 PRECURSOR")
00991         self.assertEqual(record.rounds[2].alignments[7].length, 877)
00992         self.assertEqual(record.rounds[2].alignments[8].title, ">gi|2495077|sp|Q14833|MGR4_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 4 PRECURSOR")
00993         self.assertEqual(record.rounds[2].alignments[8].length, 912)
00994         self.assertEqual(record.rounds[2].alignments[9].title, ">gi|3024131|sp|P91685|MGR_DROME METABOTROPIC GLUTAMATE RECEPTOR PRECURSOR")
00995         self.assertEqual(record.rounds[2].alignments[9].length, 976)
00996         self.assertEqual(record.rounds[2].alignments[10].title, ">gi|400255|sp|P31423|MGR4_RAT METABOTROPIC GLUTAMATE RECEPTOR 4 PRECURSOR")
00997         self.assertEqual(record.rounds[2].alignments[10].length, 912)
00998         self.assertEqual(record.rounds[2].alignments[11].title, ">gi|547903|sp|P35349|MGR6_RAT METABOTROPIC GLUTAMATE RECEPTOR 6 PRECURSOR")
00999         self.assertEqual(record.rounds[2].alignments[11].length, 871)
01000         self.assertEqual(record.rounds[2].alignments[12].title, ">gi|2495080|sp|P70579|MGR8_RAT METABOTROPIC GLUTAMATE RECEPTOR 8 PRECURSOR")
01001         self.assertEqual(record.rounds[2].alignments[12].length, 908)
01002         self.assertEqual(record.rounds[2].alignments[13].title, ">gi|2495079|sp|O00222|MGR8_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 8 PRECURSOR")
01003         self.assertEqual(record.rounds[2].alignments[13].length, 908)
01004         self.assertEqual(record.rounds[2].alignments[14].title, ">gi|1346533|sp|P47743|MGR8_MOUSE METABOTROPIC GLUTAMATE RECEPTOR 8 PRECURSOR")
01005         self.assertEqual(record.rounds[2].alignments[14].length, 908)
01006         self.assertEqual(record.rounds[2].alignments[15].title, ">gi|400402|sp|P13595|NCA1_MOUSE NEURAL CELL ADHESION MOLECULE, LARGE ISOFORM PRECURSOR (N-CAM 180) (NCAM-180) [CONTAINS: N-CAM 140 (NCAM-140)]")
01007         self.assertEqual(record.rounds[2].alignments[15].length, 1115)
01008         self.assertEqual(record.rounds[2].alignments[16].title, ">gi|1170947|sp|P31424|MGR5_RAT METABOTROPIC GLUTAMATE RECEPTOR 5 PRECURSOR")
01009         self.assertEqual(record.rounds[2].alignments[16].length, 1203)
01010         self.assertEqual(record.rounds[2].alignments[17].title, ">gi|1706242|sp|P51840|CYGE_RAT GUANYLYL CYCLASE GC-E PRECURSOR (GUANYLATE CYCLASE 2E)")
01011         self.assertEqual(record.rounds[2].alignments[17].length, 1108)
01012         self.assertEqual(record.rounds[2].alignments[18].title, ">gi|1709020|sp|P41594|MGR5_HUMAN METABOTROPIC GLUTAMATE RECEPTOR 5 PRECURSOR")
01013         self.assertEqual(record.rounds[2].alignments[18].length, 1212)
01014         self.assertEqual(record.rounds[2].alignments[19].title, ">gi|549451|sp|Q06278|ADO_HUMAN ALDEHYDE OXIDASE")
01015         self.assertEqual(record.rounds[2].alignments[19].length, 1338)
01016         self.assertEqual(record.rounds[2].alignments[20].title, ">gi|6014748|sp|Q10900|CTPI_MYCTU PROBABLE CATION-TRANSPORTING ATPASE I")
01017         self.assertEqual(record.rounds[2].alignments[20].length, 1632)
01018         self.assertEqual(record.rounds[2].alignments[21].title, ">gi|127861|sp|P13594|NCA2_MOUSE NEURAL CELL ADHESION MOLECULE, PHOSPHATIDYLINOSITOL-LINKED ISOFORM PRECURSOR (N-CAM 120) (NCAM-120)")
01019         self.assertEqual(record.rounds[2].alignments[21].length, 725)
01020         self.assertEqual(record.rounds[2].alignments[22].title, ">gi|127971|sp||NCPR_SALTR_1 [Segment 1 of 3] NADPH-CYTOCHROME P450 REDUCTASE (CPR)")
01021         self.assertEqual(record.rounds[2].alignments[22].length, 426)
01022 
01023     def _check_bt007_hsps(self, record):
01024         self.assertEqual(record.rounds[0].alignments[0].hsps[0].score, 1897)
01025         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].bits, 743)
01026         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].expect, 0.0)
01027         self.assertEqual(len(record.rounds[0].alignments[0].hsps), 1)
01028         self.assertEqual(record.rounds[0].alignments[1].hsps[0].score, 1733)
01029         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].bits, 679)
01030         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].expect, 0.0)
01031         self.assertEqual(len(record.rounds[0].alignments[1].hsps), 1)
01032         self.assertEqual(record.rounds[0].alignments[2].hsps[0].score, 1482)
01033         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].bits, 581)
01034         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].expect, 1e-166)
01035         self.assertEqual(len(record.rounds[0].alignments[2].hsps), 1)
01036         self.assertEqual(record.rounds[0].alignments[3].hsps[0].score, 1470)
01037         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].bits, 577)
01038         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].expect, 1e-164)
01039         self.assertEqual(len(record.rounds[0].alignments[3].hsps), 1)
01040         self.assertEqual(record.rounds[0].alignments[4].hsps[0].score, 1453)
01041         self.assertAlmostEqual(record.rounds[0].alignments[4].hsps[0].bits, 570)
01042         self.assertAlmostEqual(record.rounds[0].alignments[4].hsps[0].expect, 1e-162)
01043         self.assertEqual(len(record.rounds[0].alignments[4].hsps), 1)
01044         self.assertEqual(record.rounds[0].alignments[5].hsps[0].score, 1050)
01045         self.assertAlmostEqual(record.rounds[0].alignments[5].hsps[0].bits, 413)
01046         self.assertAlmostEqual(record.rounds[0].alignments[5].hsps[0].expect, 1e-115)
01047         self.assertEqual(len(record.rounds[0].alignments[5].hsps), 1)
01048         self.assertEqual(record.rounds[0].alignments[6].hsps[0].score, 92)
01049         self.assertAlmostEqual(record.rounds[0].alignments[6].hsps[0].bits, 40.2)
01050         self.assertAlmostEqual(record.rounds[0].alignments[6].hsps[0].expect, 0.006)
01051         self.assertEqual(len(record.rounds[0].alignments[6].hsps), 1)
01052         self.assertEqual(record.rounds[0].alignments[7].hsps[0].score, 72)
01053         self.assertAlmostEqual(record.rounds[0].alignments[7].hsps[0].bits, 32.5)
01054         self.assertAlmostEqual(record.rounds[0].alignments[7].hsps[0].expect, 1.4)
01055         self.assertEqual(len(record.rounds[0].alignments[7].hsps), 1)
01056         self.assertEqual(record.rounds[0].alignments[8].hsps[0].score, 71)
01057         self.assertAlmostEqual(record.rounds[0].alignments[8].hsps[0].bits, 32.1)
01058         self.assertAlmostEqual(record.rounds[0].alignments[8].hsps[0].expect, 1.8)
01059         self.assertEqual(len(record.rounds[0].alignments[8].hsps), 1)
01060         self.assertEqual(record.rounds[0].alignments[9].hsps[0].score, 71)
01061         self.assertAlmostEqual(record.rounds[0].alignments[9].hsps[0].bits, 32.1)
01062         self.assertAlmostEqual(record.rounds[0].alignments[9].hsps[0].expect, 1.8)
01063         self.assertEqual(len(record.rounds[0].alignments[9].hsps), 1)
01064         self.assertEqual(record.rounds[0].alignments[10].hsps[0].score, 71)
01065         self.assertAlmostEqual(record.rounds[0].alignments[10].hsps[0].bits, 32.1)
01066         self.assertAlmostEqual(record.rounds[0].alignments[10].hsps[0].expect, 1.8)
01067         self.assertEqual(len(record.rounds[0].alignments[10].hsps), 1)
01068         self.assertEqual(record.rounds[0].alignments[11].hsps[0].score, 68)
01069         self.assertAlmostEqual(record.rounds[0].alignments[11].hsps[0].bits, 30.9)
01070         self.assertAlmostEqual(record.rounds[0].alignments[11].hsps[0].expect, 4.0)
01071         self.assertEqual(len(record.rounds[0].alignments[11].hsps), 1)
01072         self.assertEqual(record.rounds[0].alignments[12].hsps[0].score, 68)
01073         self.assertAlmostEqual(record.rounds[0].alignments[12].hsps[0].bits, 30.9)
01074         self.assertAlmostEqual(record.rounds[0].alignments[12].hsps[0].expect, 4.0)
01075         self.assertEqual(len(record.rounds[0].alignments[12].hsps), 1)
01076         self.assertEqual(record.rounds[0].alignments[13].hsps[0].score, 67)
01077         self.assertAlmostEqual(record.rounds[0].alignments[13].hsps[0].bits, 30.5)
01078         self.assertAlmostEqual(record.rounds[0].alignments[13].hsps[0].expect, 5.2)
01079         self.assertEqual(record.rounds[1].alignments[0].hsps[0].score, 1683)
01080         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].bits, 660)
01081         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].expect, 0.0)
01082         self.assertEqual(len(record.rounds[1].alignments[0].hsps), 1)
01083         self.assertEqual(record.rounds[1].alignments[1].hsps[0].score, 1673)
01084         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].bits, 656)
01085         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].expect, 0.0)
01086         self.assertEqual(len(record.rounds[1].alignments[1].hsps), 1)
01087         self.assertEqual(record.rounds[1].alignments[2].hsps[0].score, 1672)
01088         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].bits, 655)
01089         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].expect, 0.0)
01090         self.assertEqual(len(record.rounds[1].alignments[2].hsps), 1)
01091         self.assertEqual(record.rounds[1].alignments[3].hsps[0].score, 1671)
01092         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].bits, 655)
01093         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].expect, 0.0)
01094         self.assertEqual(len(record.rounds[1].alignments[3].hsps), 1)
01095         self.assertEqual(record.rounds[1].alignments[4].hsps[0].score, 1670)
01096         self.assertAlmostEqual(record.rounds[1].alignments[4].hsps[0].bits, 655)
01097         self.assertAlmostEqual(record.rounds[1].alignments[4].hsps[0].expect, 0.0)
01098         self.assertEqual(len(record.rounds[1].alignments[4].hsps), 1)
01099         self.assertEqual(record.rounds[1].alignments[5].hsps[0].score, 1569)
01100         self.assertAlmostEqual(record.rounds[1].alignments[5].hsps[0].bits, 615)
01101         self.assertAlmostEqual(record.rounds[1].alignments[5].hsps[0].expect, 1e-176)
01102         self.assertEqual(len(record.rounds[1].alignments[5].hsps), 1)
01103         self.assertEqual(record.rounds[1].alignments[6].hsps[0].score, 113)
01104         self.assertAlmostEqual(record.rounds[1].alignments[6].hsps[0].bits, 48.6)
01105         self.assertAlmostEqual(record.rounds[1].alignments[6].hsps[0].expect, 2e-5)
01106         self.assertEqual(len(record.rounds[1].alignments[6].hsps), 1)
01107         self.assertEqual(record.rounds[1].alignments[7].hsps[0].score, 94)
01108         self.assertAlmostEqual(record.rounds[1].alignments[7].hsps[0].bits, 41.2)
01109         self.assertAlmostEqual(record.rounds[1].alignments[7].hsps[0].expect, 0.003)
01110         self.assertEqual(len(record.rounds[1].alignments[7].hsps), 1)
01111         self.assertEqual(record.rounds[1].alignments[8].hsps[0].score, 89)
01112         self.assertAlmostEqual(record.rounds[1].alignments[8].hsps[0].bits, 39.2)
01113         self.assertAlmostEqual(record.rounds[1].alignments[8].hsps[0].expect, 0.012)
01114         self.assertEqual(len(record.rounds[1].alignments[8].hsps), 1)
01115         self.assertEqual(record.rounds[1].alignments[9].hsps[0].score, 89)
01116         self.assertAlmostEqual(record.rounds[1].alignments[9].hsps[0].bits, 39.2)
01117         self.assertAlmostEqual(record.rounds[1].alignments[9].hsps[0].expect, 0.012)
01118         self.assertEqual(len(record.rounds[1].alignments[9].hsps), 1)
01119         self.assertEqual(record.rounds[1].alignments[10].hsps[0].score, 81)
01120         self.assertAlmostEqual(record.rounds[1].alignments[10].hsps[0].bits, 36.1)
01121         self.assertAlmostEqual(record.rounds[1].alignments[10].hsps[0].expect, 0.11)
01122         self.assertEqual(len(record.rounds[1].alignments[10].hsps), 1)
01123         self.assertEqual(record.rounds[1].alignments[11].hsps[0].score, 80)
01124         self.assertAlmostEqual(record.rounds[1].alignments[11].hsps[0].bits, 35.7)
01125         self.assertAlmostEqual(record.rounds[1].alignments[11].hsps[0].expect, 0.14)
01126         self.assertEqual(len(record.rounds[1].alignments[11].hsps), 1)
01127         self.assertEqual(record.rounds[1].alignments[12].hsps[0].score, 79)
01128         self.assertAlmostEqual(record.rounds[1].alignments[12].hsps[0].bits, 35.3)
01129         self.assertAlmostEqual(record.rounds[1].alignments[12].hsps[0].expect, 0.18)
01130         self.assertEqual(len(record.rounds[1].alignments[12].hsps), 1)
01131         self.assertEqual(record.rounds[1].alignments[13].hsps[0].score, 74)
01132         self.assertAlmostEqual(record.rounds[1].alignments[13].hsps[0].bits, 33.4)
01133         self.assertAlmostEqual(record.rounds[1].alignments[13].hsps[0].expect, 0.71)
01134         self.assertEqual(len(record.rounds[1].alignments[13].hsps), 1)
01135         self.assertEqual(record.rounds[1].alignments[14].hsps[0].score, 71)
01136         self.assertAlmostEqual(record.rounds[1].alignments[14].hsps[0].bits, 32.2)
01137         self.assertAlmostEqual(record.rounds[1].alignments[14].hsps[0].expect, 1.6)
01138         self.assertEqual(len(record.rounds[1].alignments[14].hsps), 1)
01139         self.assertEqual(record.rounds[1].alignments[15].hsps[0].score, 68)
01140         self.assertAlmostEqual(record.rounds[1].alignments[15].hsps[0].bits, 31.1)
01141         self.assertAlmostEqual(record.rounds[1].alignments[15].hsps[0].expect, 3.6)
01142         self.assertEqual(len(record.rounds[1].alignments[15].hsps), 1)
01143         self.assertEqual(record.rounds[1].alignments[16].hsps[0].score, 68)
01144         self.assertAlmostEqual(record.rounds[1].alignments[16].hsps[0].bits, 31.1)
01145         self.assertAlmostEqual(record.rounds[1].alignments[16].hsps[0].expect, 3.6)
01146         self.assertEqual(len(record.rounds[1].alignments[16].hsps), 1)
01147         self.assertEqual(record.rounds[1].alignments[17].hsps[0].score, 68)
01148         self.assertAlmostEqual(record.rounds[1].alignments[17].hsps[0].bits, 31.1)
01149         self.assertAlmostEqual(record.rounds[1].alignments[17].hsps[0].expect, 3.6)
01150         self.assertEqual(len(record.rounds[1].alignments[17].hsps), 1)
01151         self.assertEqual(record.rounds[1].alignments[18].hsps[0].score, 66)
01152         self.assertAlmostEqual(record.rounds[1].alignments[18].hsps[0].bits, 30.3)
01153         self.assertAlmostEqual(record.rounds[1].alignments[18].hsps[0].expect, 6.2)
01154         self.assertEqual(len(record.rounds[1].alignments[18].hsps), 1)
01155         self.assertEqual(record.rounds[1].alignments[19].hsps[0].score, 65)
01156         self.assertAlmostEqual(record.rounds[1].alignments[19].hsps[0].bits, 29.9)
01157         self.assertAlmostEqual(record.rounds[1].alignments[19].hsps[0].expect, 8.1)
01158         self.assertEqual(len(record.rounds[1].alignments[19].hsps), 1)
01159         self.assertEqual(record.rounds[1].alignments[20].hsps[0].score, 65)
01160         self.assertAlmostEqual(record.rounds[1].alignments[20].hsps[0].bits, 29.9)
01161         self.assertAlmostEqual(record.rounds[1].alignments[20].hsps[0].expect, 8.1)
01162         self.assertEqual(len(record.rounds[1].alignments[20].hsps), 1)
01163         self.assertEqual(record.rounds[1].alignments[21].hsps[0].score, 65)
01164         self.assertAlmostEqual(record.rounds[1].alignments[21].hsps[0].bits, 29.9)
01165         self.assertAlmostEqual(record.rounds[1].alignments[21].hsps[0].expect, 8.1)
01166         self.assertEqual(len(record.rounds[1].alignments[21].hsps), 1)
01167         self.assertEqual(record.rounds[1].alignments[22].hsps[0].score, 65)
01168         self.assertAlmostEqual(record.rounds[1].alignments[22].hsps[0].bits, 29.9)
01169         self.assertAlmostEqual(record.rounds[1].alignments[22].hsps[0].expect, 8.1)
01170         self.assertEqual(len(record.rounds[1].alignments[22].hsps), 1)
01171         self.assertEqual(record.rounds[1].alignments[23].hsps[0].score, 65)
01172         self.assertAlmostEqual(record.rounds[1].alignments[23].hsps[0].bits, 29.9)
01173         self.assertAlmostEqual(record.rounds[1].alignments[23].hsps[0].expect, 8.1)
01174         self.assertEqual(record.rounds[2].alignments[0].hsps[0].score, 1478)
01175         self.assertAlmostEqual(record.rounds[2].alignments[0].hsps[0].bits, 580)
01176         self.assertAlmostEqual(record.rounds[2].alignments[0].hsps[0].expect, 1e-165)
01177         self.assertEqual(len(record.rounds[2].alignments[0].hsps), 1)
01178         self.assertEqual(record.rounds[2].alignments[1].hsps[0].score, 1477)
01179         self.assertAlmostEqual(record.rounds[2].alignments[1].hsps[0].bits, 579)
01180         self.assertAlmostEqual(record.rounds[2].alignments[1].hsps[0].expect, 1e-165)
01181         self.assertEqual(len(record.rounds[2].alignments[1].hsps), 1)
01182         self.assertEqual(record.rounds[2].alignments[2].hsps[0].score, 1475)
01183         self.assertAlmostEqual(record.rounds[2].alignments[2].hsps[0].bits, 579)
01184         self.assertAlmostEqual(record.rounds[2].alignments[2].hsps[0].expect, 1e-165)
01185         self.assertEqual(len(record.rounds[2].alignments[2].hsps), 1)
01186         self.assertEqual(record.rounds[2].alignments[3].hsps[0].score, 1474)
01187         self.assertAlmostEqual(record.rounds[2].alignments[3].hsps[0].bits, 578)
01188         self.assertAlmostEqual(record.rounds[2].alignments[3].hsps[0].expect, 1e-165)
01189         self.assertEqual(len(record.rounds[2].alignments[3].hsps), 1)
01190         self.assertEqual(record.rounds[2].alignments[4].hsps[0].score, 1472)
01191         self.assertAlmostEqual(record.rounds[2].alignments[4].hsps[0].bits, 577)
01192         self.assertAlmostEqual(record.rounds[2].alignments[4].hsps[0].expect, 1e-165)
01193         self.assertEqual(len(record.rounds[2].alignments[4].hsps), 1)
01194         self.assertEqual(record.rounds[2].alignments[5].hsps[0].score, 1351)
01195         self.assertAlmostEqual(record.rounds[2].alignments[5].hsps[0].bits, 530)
01196         self.assertAlmostEqual(record.rounds[2].alignments[5].hsps[0].expect, 1e-150)
01197         self.assertEqual(len(record.rounds[2].alignments[5].hsps), 1)
01198         self.assertEqual(record.rounds[2].alignments[6].hsps[0].score, 976)
01199         self.assertAlmostEqual(record.rounds[2].alignments[6].hsps[0].bits, 384)
01200         self.assertAlmostEqual(record.rounds[2].alignments[6].hsps[0].expect, 1e-106)
01201         self.assertEqual(len(record.rounds[2].alignments[6].hsps), 1)
01202         self.assertEqual(record.rounds[2].alignments[7].hsps[0].score, 95)
01203         self.assertAlmostEqual(record.rounds[2].alignments[7].hsps[0].bits, 41.6)
01204         self.assertAlmostEqual(record.rounds[2].alignments[7].hsps[0].expect, 0.002)
01205         self.assertEqual(len(record.rounds[2].alignments[7].hsps), 1)
01206         self.assertEqual(record.rounds[2].alignments[8].hsps[0].score, 89)
01207         self.assertAlmostEqual(record.rounds[2].alignments[8].hsps[0].bits, 39.3)
01208         self.assertAlmostEqual(record.rounds[2].alignments[8].hsps[0].expect, 0.012)
01209         self.assertEqual(len(record.rounds[2].alignments[8].hsps), 1)
01210         self.assertEqual(record.rounds[2].alignments[9].hsps[0].score, 87)
01211         self.assertAlmostEqual(record.rounds[2].alignments[9].hsps[0].bits, 38.5)
01212         self.assertAlmostEqual(record.rounds[2].alignments[9].hsps[0].expect, 0.021)
01213         self.assertEqual(len(record.rounds[2].alignments[9].hsps), 1)
01214         self.assertEqual(record.rounds[2].alignments[10].hsps[0].score, 85)
01215         self.assertAlmostEqual(record.rounds[2].alignments[10].hsps[0].bits, 37.7)
01216         self.assertAlmostEqual(record.rounds[2].alignments[10].hsps[0].expect, 0.036)
01217         self.assertEqual(len(record.rounds[2].alignments[10].hsps), 1)
01218         self.assertEqual(record.rounds[2].alignments[11].hsps[0].score, 84)
01219         self.assertAlmostEqual(record.rounds[2].alignments[11].hsps[0].bits, 37.3)
01220         self.assertAlmostEqual(record.rounds[2].alignments[11].hsps[0].expect, 0.047)
01221         self.assertEqual(len(record.rounds[2].alignments[11].hsps), 1)
01222         self.assertEqual(record.rounds[2].alignments[12].hsps[0].score, 81)
01223         self.assertAlmostEqual(record.rounds[2].alignments[12].hsps[0].bits, 36.1)
01224         self.assertAlmostEqual(record.rounds[2].alignments[12].hsps[0].expect, 0.10)
01225         self.assertEqual(len(record.rounds[2].alignments[12].hsps), 1)
01226         self.assertEqual(record.rounds[2].alignments[13].hsps[0].score, 81)
01227         self.assertAlmostEqual(record.rounds[2].alignments[13].hsps[0].bits, 36.1)
01228         self.assertAlmostEqual(record.rounds[2].alignments[13].hsps[0].expect, 0.10)
01229         self.assertEqual(len(record.rounds[2].alignments[13].hsps), 1)
01230         self.assertEqual(record.rounds[2].alignments[14].hsps[0].score, 79)
01231         self.assertAlmostEqual(record.rounds[2].alignments[14].hsps[0].bits, 35.4)
01232         self.assertAlmostEqual(record.rounds[2].alignments[14].hsps[0].expect, 0.18)
01233         self.assertEqual(len(record.rounds[2].alignments[14].hsps), 1)
01234         self.assertEqual(record.rounds[2].alignments[15].hsps[0].score, 74)
01235         self.assertAlmostEqual(record.rounds[2].alignments[15].hsps[0].bits, 33.4)
01236         self.assertAlmostEqual(record.rounds[2].alignments[15].hsps[0].expect, 0.69)
01237         self.assertEqual(len(record.rounds[2].alignments[15].hsps), 1)
01238         self.assertEqual(record.rounds[2].alignments[16].hsps[0].score, 74)
01239         self.assertAlmostEqual(record.rounds[2].alignments[16].hsps[0].bits, 33.4)
01240         self.assertAlmostEqual(record.rounds[2].alignments[16].hsps[0].expect, 0.69)
01241         self.assertEqual(len(record.rounds[2].alignments[16].hsps), 1)
01242         self.assertEqual(record.rounds[2].alignments[17].hsps[0].score, 73)
01243         self.assertAlmostEqual(record.rounds[2].alignments[17].hsps[0].bits, 33.0)
01244         self.assertAlmostEqual(record.rounds[2].alignments[17].hsps[0].expect, 0.91)
01245         self.assertEqual(len(record.rounds[2].alignments[17].hsps), 1)
01246         self.assertEqual(record.rounds[2].alignments[18].hsps[0].score, 73)
01247         self.assertAlmostEqual(record.rounds[2].alignments[18].hsps[0].bits, 33.0)
01248         self.assertAlmostEqual(record.rounds[2].alignments[18].hsps[0].expect, 0.91)
01249         self.assertEqual(len(record.rounds[2].alignments[18].hsps), 1)
01250         self.assertEqual(record.rounds[2].alignments[19].hsps[0].score, 70)
01251         self.assertAlmostEqual(record.rounds[2].alignments[19].hsps[0].bits, 31.9)
01252         self.assertAlmostEqual(record.rounds[2].alignments[19].hsps[0].expect, 2.0)
01253         self.assertEqual(len(record.rounds[2].alignments[19].hsps), 1)
01254         self.assertEqual(record.rounds[2].alignments[20].hsps[0].score, 70)
01255         self.assertAlmostEqual(record.rounds[2].alignments[20].hsps[0].bits, 31.9)
01256         self.assertAlmostEqual(record.rounds[2].alignments[20].hsps[0].expect, 2.0)
01257         self.assertEqual(len(record.rounds[2].alignments[20].hsps), 1)
01258         self.assertEqual(record.rounds[2].alignments[21].hsps[0].score, 69)
01259         self.assertAlmostEqual(record.rounds[2].alignments[21].hsps[0].bits, 31.5)
01260         self.assertAlmostEqual(record.rounds[2].alignments[21].hsps[0].expect, 2.7)
01261         self.assertEqual(len(record.rounds[2].alignments[21].hsps), 1)
01262         self.assertEqual(record.rounds[2].alignments[22].hsps[0].score, 68)
01263         self.assertAlmostEqual(record.rounds[2].alignments[22].hsps[0].bits, 31.1)
01264         self.assertAlmostEqual(record.rounds[2].alignments[22].hsps[0].expect, 3.5)
01265         self.assertEqual(len(record.rounds[2].alignments[22].hsps), 1)
01266         self.assertEqual(record.rounds[0].alignments[0].hsps[0].identities, (369, 369))
01267         self.assertEqual(record.rounds[0].alignments[0].hsps[0].positives, (369, 369))
01268         self.assertEqual(record.rounds[0].alignments[1].hsps[0].identities, (333, 369))
01269         self.assertEqual(record.rounds[0].alignments[1].hsps[0].positives, (351, 369))
01270         self.assertEqual(record.rounds[0].alignments[2].hsps[0].identities, (282, 369))
01271         self.assertEqual(record.rounds[0].alignments[2].hsps[0].positives, (320, 369))
01272         self.assertEqual(record.rounds[0].alignments[2].hsps[0].gaps, (2, 369))
01273         self.assertEqual(record.rounds[0].alignments[3].hsps[0].identities, (280, 366))
01274         self.assertEqual(record.rounds[0].alignments[3].hsps[0].positives, (316, 366))
01275         self.assertEqual(record.rounds[0].alignments[3].hsps[0].gaps, (2, 366))
01276         self.assertEqual(record.rounds[0].alignments[4].hsps[0].identities, (276, 369))
01277         self.assertEqual(record.rounds[0].alignments[4].hsps[0].positives, (316, 369))
01278         self.assertEqual(record.rounds[0].alignments[4].hsps[0].gaps, (2, 369))
01279         self.assertEqual(record.rounds[0].alignments[5].hsps[0].identities, (193, 368))
01280         self.assertEqual(record.rounds[0].alignments[5].hsps[0].positives, (268, 368))
01281         self.assertEqual(record.rounds[0].alignments[6].hsps[0].identities, (60, 334))
01282         self.assertEqual(record.rounds[0].alignments[6].hsps[0].positives, (130, 334))
01283         self.assertEqual(record.rounds[0].alignments[6].hsps[0].gaps, (23, 334))
01284         self.assertEqual(record.rounds[0].alignments[7].hsps[0].identities, (18, 67))
01285         self.assertEqual(record.rounds[0].alignments[7].hsps[0].positives, (32, 67))
01286         self.assertEqual(record.rounds[0].alignments[7].hsps[0].gaps, (2, 67))
01287         self.assertEqual(record.rounds[0].alignments[8].hsps[0].identities, (28, 89))
01288         self.assertEqual(record.rounds[0].alignments[8].hsps[0].positives, (42, 89))
01289         self.assertEqual(record.rounds[0].alignments[8].hsps[0].gaps, (11, 89))
01290         self.assertEqual(record.rounds[0].alignments[9].hsps[0].identities, (29, 125))
01291         self.assertEqual(record.rounds[0].alignments[9].hsps[0].positives, (57, 125))
01292         self.assertEqual(record.rounds[0].alignments[9].hsps[0].gaps, (6, 125))
01293         self.assertEqual(record.rounds[0].alignments[10].hsps[0].identities, (24, 93))
01294         self.assertEqual(record.rounds[0].alignments[10].hsps[0].positives, (44, 93))
01295         self.assertEqual(record.rounds[0].alignments[10].hsps[0].gaps, (2, 93))
01296         self.assertEqual(record.rounds[0].alignments[11].hsps[0].identities, (24, 65))
01297         self.assertEqual(record.rounds[0].alignments[11].hsps[0].positives, (31, 65))
01298         self.assertEqual(record.rounds[0].alignments[11].hsps[0].gaps, (9, 65))
01299         self.assertEqual(record.rounds[0].alignments[12].hsps[0].identities, (18, 55))
01300         self.assertEqual(record.rounds[0].alignments[12].hsps[0].positives, (31, 55))
01301         self.assertEqual(record.rounds[0].alignments[12].hsps[0].gaps, (1, 55))
01302         self.assertEqual(record.rounds[0].alignments[13].hsps[0].identities, (24, 90))
01303         self.assertEqual(record.rounds[0].alignments[13].hsps[0].positives, (41, 90))
01304         self.assertEqual(record.rounds[0].alignments[13].hsps[0].gaps, (10, 90))
01305         self.assertEqual(record.rounds[1].alignments[0].hsps[0].identities, (333, 369))
01306         self.assertEqual(record.rounds[1].alignments[0].hsps[0].positives, (351, 369))
01307         self.assertEqual(record.rounds[1].alignments[1].hsps[0].identities, (280, 367))
01308         self.assertEqual(record.rounds[1].alignments[1].hsps[0].positives, (316, 367))
01309         self.assertEqual(record.rounds[1].alignments[1].hsps[0].gaps, (2, 367))
01310         self.assertEqual(record.rounds[1].alignments[2].hsps[0].identities, (276, 369))
01311         self.assertEqual(record.rounds[1].alignments[2].hsps[0].positives, (316, 369))
01312         self.assertEqual(record.rounds[1].alignments[2].hsps[0].gaps, (2, 369))
01313         self.assertEqual(record.rounds[1].alignments[3].hsps[0].identities, (369, 369))
01314         self.assertEqual(record.rounds[1].alignments[3].hsps[0].positives, (369, 369))
01315         self.assertEqual(record.rounds[1].alignments[4].hsps[0].identities, (282, 369))
01316         self.assertEqual(record.rounds[1].alignments[4].hsps[0].positives, (320, 369))
01317         self.assertEqual(record.rounds[1].alignments[4].hsps[0].gaps, (2, 369))
01318         self.assertEqual(record.rounds[1].alignments[5].hsps[0].identities, (193, 368))
01319         self.assertEqual(record.rounds[1].alignments[5].hsps[0].positives, (268, 368))
01320         self.assertEqual(record.rounds[1].alignments[6].hsps[0].identities, (60, 314))
01321         self.assertEqual(record.rounds[1].alignments[6].hsps[0].positives, (114, 314))
01322         self.assertEqual(record.rounds[1].alignments[6].hsps[0].gaps, (12, 314))
01323         self.assertEqual(record.rounds[1].alignments[7].hsps[0].identities, (36, 154))
01324         self.assertEqual(record.rounds[1].alignments[7].hsps[0].positives, (66, 154))
01325         self.assertEqual(record.rounds[1].alignments[7].hsps[0].gaps, (5, 154))
01326         self.assertEqual(record.rounds[1].alignments[8].hsps[0].identities, (32, 121))
01327         self.assertEqual(record.rounds[1].alignments[8].hsps[0].positives, (55, 121))
01328         self.assertEqual(record.rounds[1].alignments[8].hsps[0].gaps, (4, 121))
01329         self.assertEqual(record.rounds[1].alignments[9].hsps[0].identities, (32, 121))
01330         self.assertEqual(record.rounds[1].alignments[9].hsps[0].positives, (55, 121))
01331         self.assertEqual(record.rounds[1].alignments[9].hsps[0].gaps, (4, 121))
01332         self.assertEqual(record.rounds[1].alignments[10].hsps[0].identities, (30, 121))
01333         self.assertEqual(record.rounds[1].alignments[10].hsps[0].positives, (54, 121))
01334         self.assertEqual(record.rounds[1].alignments[10].hsps[0].gaps, (4, 121))
01335         self.assertEqual(record.rounds[1].alignments[11].hsps[0].identities, (30, 120))
01336         self.assertEqual(record.rounds[1].alignments[11].hsps[0].positives, (53, 120))
01337         self.assertEqual(record.rounds[1].alignments[11].hsps[0].gaps, (4, 120))
01338         self.assertEqual(record.rounds[1].alignments[12].hsps[0].identities, (29, 125))
01339         self.assertEqual(record.rounds[1].alignments[12].hsps[0].positives, (57, 125))
01340         self.assertEqual(record.rounds[1].alignments[12].hsps[0].gaps, (6, 125))
01341         self.assertEqual(record.rounds[1].alignments[13].hsps[0].identities, (20, 68))
01342         self.assertEqual(record.rounds[1].alignments[13].hsps[0].positives, (26, 68))
01343         self.assertEqual(record.rounds[1].alignments[13].hsps[0].gaps, (7, 68))
01344         self.assertEqual(record.rounds[1].alignments[14].hsps[0].identities, (33, 171))
01345         self.assertEqual(record.rounds[1].alignments[14].hsps[0].positives, (67, 171))
01346         self.assertEqual(record.rounds[1].alignments[14].hsps[0].gaps, (10, 171))
01347         self.assertEqual(record.rounds[1].alignments[15].hsps[0].identities, (22, 88))
01348         self.assertEqual(record.rounds[1].alignments[15].hsps[0].positives, (38, 88))
01349         self.assertEqual(record.rounds[1].alignments[15].hsps[0].gaps, (8, 88))
01350         self.assertEqual(record.rounds[1].alignments[16].hsps[0].identities, (50, 196))
01351         self.assertEqual(record.rounds[1].alignments[16].hsps[0].positives, (77, 196))
01352         self.assertEqual(record.rounds[1].alignments[16].hsps[0].gaps, (17, 196))
01353         self.assertEqual(record.rounds[1].alignments[17].hsps[0].identities, (50, 196))
01354         self.assertEqual(record.rounds[1].alignments[17].hsps[0].positives, (77, 196))
01355         self.assertEqual(record.rounds[1].alignments[17].hsps[0].gaps, (17, 196))
01356         self.assertEqual(record.rounds[1].alignments[18].hsps[0].identities, (50, 196))
01357         self.assertEqual(record.rounds[1].alignments[18].hsps[0].positives, (76, 196))
01358         self.assertEqual(record.rounds[1].alignments[18].hsps[0].gaps, (17, 196))
01359         self.assertEqual(record.rounds[1].alignments[19].hsps[0].identities, (19, 69))
01360         self.assertEqual(record.rounds[1].alignments[19].hsps[0].positives, (28, 69))
01361         self.assertEqual(record.rounds[1].alignments[19].hsps[0].gaps, (3, 69))
01362         self.assertEqual(record.rounds[1].alignments[20].hsps[0].identities, (18, 72))
01363         self.assertEqual(record.rounds[1].alignments[20].hsps[0].positives, (31, 72))
01364         self.assertEqual(record.rounds[1].alignments[20].hsps[0].gaps, (2, 72))
01365         self.assertEqual(record.rounds[1].alignments[21].hsps[0].identities, (16, 85))
01366         self.assertEqual(record.rounds[1].alignments[21].hsps[0].positives, (35, 85))
01367         self.assertEqual(record.rounds[1].alignments[21].hsps[0].gaps, (2, 85))
01368         self.assertEqual(record.rounds[1].alignments[22].hsps[0].identities, (11, 57))
01369         self.assertEqual(record.rounds[1].alignments[22].hsps[0].positives, (27, 57))
01370         self.assertEqual(record.rounds[1].alignments[22].hsps[0].gaps, (3, 57))
01371         self.assertEqual(record.rounds[1].alignments[23].hsps[0].identities, (19, 79))
01372         self.assertEqual(record.rounds[1].alignments[23].hsps[0].positives, (31, 79))
01373         self.assertEqual(record.rounds[1].alignments[23].hsps[0].gaps, (2, 79))
01374         self.assertEqual(record.rounds[2].alignments[0].hsps[0].identities, (280, 367))
01375         self.assertEqual(record.rounds[2].alignments[0].hsps[0].positives, (316, 367))
01376         self.assertEqual(record.rounds[2].alignments[0].hsps[0].gaps, (2, 367))
01377         self.assertEqual(record.rounds[2].alignments[1].hsps[0].identities, (333, 369))
01378         self.assertEqual(record.rounds[2].alignments[1].hsps[0].positives, (351, 369))
01379         self.assertEqual(record.rounds[2].alignments[2].hsps[0].identities, (282, 369))
01380         self.assertEqual(record.rounds[2].alignments[2].hsps[0].positives, (320, 369))
01381         self.assertEqual(record.rounds[2].alignments[2].hsps[0].gaps, (2, 369))
01382         self.assertEqual(record.rounds[2].alignments[3].hsps[0].identities, (276, 369))
01383         self.assertEqual(record.rounds[2].alignments[3].hsps[0].positives, (316, 369))
01384         self.assertEqual(record.rounds[2].alignments[3].hsps[0].gaps, (2, 369))
01385         self.assertEqual(record.rounds[2].alignments[4].hsps[0].identities, (369, 369))
01386         self.assertEqual(record.rounds[2].alignments[4].hsps[0].positives, (369, 369))
01387         self.assertEqual(record.rounds[2].alignments[5].hsps[0].identities, (193, 368))
01388         self.assertEqual(record.rounds[2].alignments[5].hsps[0].positives, (268, 368))
01389         self.assertEqual(record.rounds[2].alignments[6].hsps[0].identities, (60, 314))
01390         self.assertEqual(record.rounds[2].alignments[6].hsps[0].positives, (114, 314))
01391         self.assertEqual(record.rounds[2].alignments[6].hsps[0].gaps, (12, 314))
01392         self.assertEqual(record.rounds[2].alignments[7].hsps[0].identities, (47, 266))
01393         self.assertEqual(record.rounds[2].alignments[7].hsps[0].positives, (90, 266))
01394         self.assertEqual(record.rounds[2].alignments[7].hsps[0].gaps, (20, 266))
01395         self.assertEqual(record.rounds[2].alignments[8].hsps[0].identities, (43, 216))
01396         self.assertEqual(record.rounds[2].alignments[8].hsps[0].positives, (78, 216))
01397         self.assertEqual(record.rounds[2].alignments[8].hsps[0].gaps, (13, 216))
01398         self.assertEqual(record.rounds[2].alignments[9].hsps[0].identities, (42, 182))
01399         self.assertEqual(record.rounds[2].alignments[9].hsps[0].positives, (74, 182))
01400         self.assertEqual(record.rounds[2].alignments[9].hsps[0].gaps, (8, 182))
01401         self.assertEqual(record.rounds[2].alignments[10].hsps[0].identities, (42, 215))
01402         self.assertEqual(record.rounds[2].alignments[10].hsps[0].positives, (76, 215))
01403         self.assertEqual(record.rounds[2].alignments[10].hsps[0].gaps, (11, 215))
01404         self.assertEqual(record.rounds[2].alignments[11].hsps[0].identities, (46, 266))
01405         self.assertEqual(record.rounds[2].alignments[11].hsps[0].positives, (88, 266))
01406         self.assertEqual(record.rounds[2].alignments[11].hsps[0].gaps, (20, 266))
01407         self.assertEqual(record.rounds[2].alignments[12].hsps[0].identities, (46, 222))
01408         self.assertEqual(record.rounds[2].alignments[12].hsps[0].positives, (82, 222))
01409         self.assertEqual(record.rounds[2].alignments[12].hsps[0].gaps, (15, 222))
01410         self.assertEqual(record.rounds[2].alignments[13].hsps[0].identities, (46, 222))
01411         self.assertEqual(record.rounds[2].alignments[13].hsps[0].positives, (82, 222))
01412         self.assertEqual(record.rounds[2].alignments[13].hsps[0].gaps, (15, 222))
01413         self.assertEqual(record.rounds[2].alignments[14].hsps[0].identities, (46, 222))
01414         self.assertEqual(record.rounds[2].alignments[14].hsps[0].positives, (81, 222))
01415         self.assertEqual(record.rounds[2].alignments[14].hsps[0].gaps, (15, 222))
01416         self.assertEqual(record.rounds[2].alignments[15].hsps[0].identities, (46, 221))
01417         self.assertEqual(record.rounds[2].alignments[15].hsps[0].positives, (73, 221))
01418         self.assertEqual(record.rounds[2].alignments[15].hsps[0].gaps, (24, 221))
01419         self.assertEqual(record.rounds[2].alignments[16].hsps[0].identities, (31, 155))
01420         self.assertEqual(record.rounds[2].alignments[16].hsps[0].positives, (58, 155))
01421         self.assertEqual(record.rounds[2].alignments[16].hsps[0].gaps, (4, 155))
01422         self.assertEqual(record.rounds[2].alignments[17].hsps[0].identities, (29, 193))
01423         self.assertEqual(record.rounds[2].alignments[17].hsps[0].positives, (67, 193))
01424         self.assertEqual(record.rounds[2].alignments[17].hsps[0].gaps, (12, 193))
01425         self.assertEqual(record.rounds[2].alignments[18].hsps[0].identities, (31, 155))
01426         self.assertEqual(record.rounds[2].alignments[18].hsps[0].positives, (57, 155))
01427         self.assertEqual(record.rounds[2].alignments[18].hsps[0].gaps, (4, 155))
01428         self.assertEqual(record.rounds[2].alignments[19].hsps[0].identities, (26, 105))
01429         self.assertEqual(record.rounds[2].alignments[19].hsps[0].positives, (37, 105))
01430         self.assertEqual(record.rounds[2].alignments[19].hsps[0].gaps, (3, 105))
01431         self.assertEqual(record.rounds[2].alignments[20].hsps[0].identities, (16, 55))
01432         self.assertEqual(record.rounds[2].alignments[20].hsps[0].positives, (22, 55))
01433         self.assertEqual(record.rounds[2].alignments[20].hsps[0].gaps, (3, 55))
01434         self.assertEqual(record.rounds[2].alignments[21].hsps[0].identities, (39, 188))
01435         self.assertEqual(record.rounds[2].alignments[21].hsps[0].positives, (62, 188))
01436         self.assertEqual(record.rounds[2].alignments[21].hsps[0].gaps, (23, 188))
01437         self.assertEqual(record.rounds[2].alignments[22].hsps[0].identities, (28, 146))
01438         self.assertEqual(record.rounds[2].alignments[22].hsps[0].positives, (53, 146))
01439         self.assertEqual(record.rounds[2].alignments[22].hsps[0].gaps, (8, 146))
01440 
01441     def _check_bt007_hsps_details(self, record):
01442         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01443         self.assertEqual(record.rounds[0].alignments[0].hsps[0].match, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01444         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01445         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_start, 1)
01446         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_end, 369)
01447         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_start, 1)
01448         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_end, 369)
01449         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01450         self.assertEqual(record.rounds[0].alignments[1].hsps[0].match, "MKR AKTIIAG++ALA+S  AMADDIKVA+VGAMSGP+AQWG MEFNGA QAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGI+YVIGHLCSSSTQPASDIYEDEGILMISPGAT PELTQRGYQ+IMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLK  NAN+VFFDGITAGEKDFSALIARL+KENIDFVYYGGYYPEMGQ++RQAR+ GLKTQFMGPEGVGNASLSNIAG AAEGMLVTMPKRYDQDPAN+ IV+ALKADKKDPSGPYVWITYAAVQSLATA+ R+ S  PL LVKDLKANGA+TVIGPL WDEKGDLKGF+FGVFQWHADGSST AK")
01451         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct, "MKRNAKTIIAGMIALAISHTAMADDIKVAVVGAMSGPIAQWGIMEFNGAEQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIKYVIGHLCSSSTQPASDIYEDEGILMISPGATAPELTQRGYQHIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKAANANVVFFDGITAGEKDFSALIARLKKENIDFVYYGGYYPEMGQMLRQARSVGLKTQFMGPEGVGNASLSNIAGDAAEGMLVTMPKRYDQDPANQGIVDALKADKKDPSGPYVWITYAAVQSLATALERTGSDEPLALVKDLKANGANTVIGPLNWDEKGDLKGFDFGVFQWHADGSSTAAK")
01452         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_start, 1)
01453         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_end, 369)
01454         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_start, 1)
01455         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_end, 369)
01456         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01457         self.assertEqual(record.rounds[0].alignments[2].hsps[0].match, "M  K K ++AG++ALA S  A+A+DIKVA+VGAMSGPVAQ+GD EF GA QA+ DINAKGGIKG+KL   +YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGYQ I+RT GLDS QGPTAAKYILE VKPQRIAI+HDKQQYGEGLAR+VQDGLK+GNAN+VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQARA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   + +S    P ++ K LKAN  DTV+GPL WDEKGDLKGFEFGVF WHA+G++T AK")
01458         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct, "MNTKGKALLAGLIALAFSNMALAEDIKVAVVGAMSGPVAQYGDQEFTGAEQAVADINAKGGIKGNKLQIAKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYQLILRTTGLDSDQGPTAAKYILEKVKPQRIAIVHDKQQYGEGLARAVQDGLKKGNANVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQARAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNQSDD--PAEIAKYLKANSVDTVMGPLTWDEKGDLKGFEFGVFDWHANGTATDAK")
01459         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_start, 1)
01460         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_end, 369)
01461         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_start, 1)
01462         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_end, 367)
01463         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query, "KAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01464         self.assertEqual(record.rounds[0].alignments[3].hsps[0].match, "K KT++AG +AL++S  A ADDIKVA+VGAMSGPVAQ+GD EF GA QAI DINAKGGIKGDKLV V+YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGY+ ++RT GLDS QGPTAAKYILE VKPQRIAIIHDKQQYGEGLAR+VQDGLK+G  N+VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQ+RA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   +  S    P ++ K LK    DTV+GPL WDEKGDLKGFEFGVF WHA+G++T AK")
01465         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct, "KGKTLLAGCIALSLSHMAFADDIKVAVVGAMSGPVAQYGDQEFTGAEQAIADINAKGGIKGDKLVAVKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYKLVLRTTGLDSDQGPTAAKYILEKVKPQRIAIIHDKQQYGEGLARAVQDGLKKGGVNVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQSRAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNHSDD--PAEIAKYLKGATVDTVMGPLSWDEKGDLKGFEFGVFDWHANGTATDAK")
01466         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_start, 4)
01467         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_end, 369)
01468         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_start, 2)
01469         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_end, 365)
01470         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01471         self.assertEqual(record.rounds[0].alignments[4].hsps[0].match, "M  K K ++AG +AL++S  A A DIKVA+VGAMSGPVAQ+GD EF GA QAI DINAKGG+KGDKLV V+YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGY  ++RT GLDS QGPTAAKYI+E VKP+RIAI+HDKQQYGEGLARSVQD LK+ NA++VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQARA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   + +S    P ++ K LKAN  +TV+GPL WD KGDLKGFEFGVF WHA+G++T AK")
01472         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct, "MNMKGKALLAGCIALSLSNMAFAKDIKVAVVGAMSGPVAQYGDQEFTGAEQAIADINAKGGVKGDKLVMVKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYNLVLRTTGLDSDQGPTAAKYIVEKVKPKRIAIVHDKQQYGEGLARSVQDNLKKANADVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQARAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNQSDD--PAEIAKYLKANSVETVMGPLSWDAKGDLKGFEFGVFDWHANGTATDAK")
01473         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query_start, 1)
01474         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query_end, 369)
01475         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct_start, 1)
01476         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct_end, 367)
01477         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query, "KRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01478         self.assertEqual(record.rounds[0].alignments[5].hsps[0].match, "+R ++   A  +A   S    AD IK+A+ G ++GPVAQ+GDM+  GA  AI+ IN  GG+ G +L GV YDDACDPKQAVAVANK+VNDG+++V+GH+CSSSTQPA+DIYEDEG+LMI+P AT PE+T RGY+ I RT GLD+ QGP A K+I E  K + IA++HDKQQYGEG+A  V+  ++     +  F+G+ AG+KDF+ALI++L+K  + FVY+GGY+PEMG ++RQA+  GL  +FMGPEGVGN+ ++ IAG A+EGML T+P+ ++QDP NKA+++A KA  +DPSG +V   Y+AV  +A  + ++    P  + + L+AN  +T  G L +DEKGDLK F+F V++WH D + T  K")
01479         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct, "QRLSRLFAAMAIAGFASYSMAADTIKIALAGPVTGPVAQYGDMQRAGALMAIEQINKAGGVNGAQLEGVIYDDACDPKQAVAVANKVVNDGVKFVVGHVCSSSTQPATDIYEDEGVLMITPSATAPEITSRGYKLIFRTIGLDNMQGPVAGKFIAERYKVKTIAVLHDKQQYGEGIATEVKKTVEDAGIKVAVFEGLNAGDKDFNALISKLKKAGVQFVYFGGYHPEMGLLLRQAKQAGLDARFMGPEGVGNSEITAIAGDASEGMLATLPRAFEQDPKNKALIDAFKAKNQDPSGIFVLPAYSAVTVIAKGIEKAGEADPEKVAEALRANTFETPTGNLGFDEKGDLKNFDFTVYEWHKDATRTEVK")
01480         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query_start, 2)
01481         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query_end, 369)
01482         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct_start, 6)
01483         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct_end, 373)
01484         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query, "IVGAMSGPVAQWGDMEFN---GARQAIKDINAKGGIKGDKLVGVEYDDACDP-KQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQY---IMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIV--FFDGITAGEKDFSALIARLQKENIDFVY---YGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQD-PANKAIVEALKADKKDPSGPYVWITYAAVQS--LATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGD")
01485         self.assertEqual(record.rounds[0].alignments[6].hsps[0].match, "++G +        D+E +   GA  A++ +N +GG+ G  +  +  D   DP +  +   + I N G+++++G   S + +    + E    L+  P          G++Y   I+      +      A Y++     +R+  I     Y       ++   +Q    ++   +  +   + D    + R+ +   D V+    G    E+ + + +   +G +   +       A ++ +    AEG +V  P     D PA++A V+A      + +    W   A  Q+  L  A   + + R  D+ + L     D   GP++ + + +")
01486         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct, "LIGLLFSETGVTADIERSHAYGALLAVEQLNREGGVGGRPIETLSQDPGGDPDRYRLCAEDFIRNRGVRFLVGCYMSHTRKAVMPVVERADALLCYP------TPYEGFEYSPNIVYGGPAPNQNSAPLAAYLIRHY-GERVVFIGSDYIYPRESNHVMRHLYRQHGGTVLEEIYIPLYPSDDDLQRAVERIYQARADVVFSTVVGTGTAELYRAIARRYGDGRRPP-IASLTTSEAEVAKMESDVAEGQVVVAPYFSSIDTPASRAFVQACHGFFPENATITAWAEAAYWQTLLLGRAAQAAGNWRVEDVQRHLYDIDIDAPQGPVRVERQNN")
01487         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query_start, 30)
01488         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query_end, 348)
01489         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct_start, 9)
01490         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct_end, 334)
01491         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query, "GPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATA")
01492         self.assertEqual(record.rounds[0].alignments[7].hsps[0].match, "G +G  + ++ + AG     +L  + K  ++DP N  +V  +KA KK+     +W  Y   +  A A")
01493         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct, "GKQGEAHLAMRHYAGTVRYNVLNWLEK--NKDPLNDTVVSVMKASKKNDLLVEIWQDYTTQEEAAAA")
01494         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query_start, 247)
01495         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query_end, 313)
01496         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct_start, 570)
01497         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct_end, 634)
01498         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query, "ASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKP------QRIAIIHDKQQYGEGLARSVQDGLKQGNA")
01499         self.assertEqual(record.rounds[0].alignments[8].hsps[0].match, "A  +Y D  +L++     N  L   G Q +M+       +G T    +L T +P      Q+I I+H+ QQ   GLAR V   L+Q +A")
01500         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct, "ARAMYGDPCLLILDE--PNASLDSEGDQALMQAIVALQKRGATV---VLITHRPALTTLAQKILILHEGQQQRMGLARDVLTELQQRSA")
01501         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query_start, 108)
01502         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query_end, 190)
01503         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct_start, 478)
01504         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct_end, 561)
01505         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSA----LIARLQKE")
01506         self.assertEqual(record.rounds[0].alignments[9].hsps[0].match, "V+G   SS +   +++     I  +SP +TN +L+ +  ++Y  RT   D  Q   A   I    K   +++++   +YGE  A + +   ++    I   + I   ++ F+     L+ +LQ E")
01507         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct, "VVGGSYSSVSVQLANLLRLFRIAQVSPASTNADLSDKNRFEYFARTVPSDDYQA-MAMVEIAVKFKWSYVSLVYSADEYGELGADAFKKEARKKGICIALEERIQNKKESFTESINNLVQKLQPE")
01508         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query_start, 96)
01509         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query_end, 215)
01510         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct_start, 196)
01511         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct_end, 319)
01512         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query, "KDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLK-TQFMGPEGVGN-ASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKK")
01513         self.assertEqual(record.rounds[0].alignments[10].hsps[0].match, "+ F A+ A +  E++  +  GG+  EM  + R +  +G+  ++F+ P+ +      +   GG    +L T    Y    A   +VEA+  DKK")
01514         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct, "RTFIAMEAGVSVEDVQAMLMGGHGDEMVPLPRFSTISGIPVSEFIAPDRLAQIVERTRKGGGEIVNLLKTGSAYYAPAAATAQMVEAVLKDKK")
01515         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query_start, 203)
01516         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query_end, 293)
01517         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct_start, 153)
01518         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct_end, 245)
01519         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query, "QQYGEGLARS-----VQDGLKQGNANIVFFDGITAGEKDFSALIARL-QKENIDFVYYG---GYY")
01520         self.assertEqual(record.rounds[0].alignments[11].hsps[0].match, "Q YG GL  S     +   LK GNA +     IT G  +F+ L   L +K N  F+ YG   G+Y")
01521         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct, "QSYGHGLVISDNFVSISKPLKVGNAQLGTDGNITGGSGNFANLNTTLNRKVNSGFITYGATSGWY")
01522         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query_start, 171)
01523         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query_end, 226)
01524         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct_start, 716)
01525         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct_end, 780)
01526         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query, "AIVEALKADKKDPSGPYVWITYA-AVQSLATAMTRSASHRPLDLVKDLKANGADT")
01527         self.assertEqual(record.rounds[0].alignments[12].hsps[0].match, "AI  A +AD+ D    Y +  +A A++S+  A+  ++   P+D + DLKA   +T")
01528         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct, "AIQVAKEADRIDGIEQYAFRAFADALESIPMALAENSGLAPIDALSDLKAKQIET")
01529         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query_start, 283)
01530         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query_end, 336)
01531         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct_start, 429)
01532         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct_end, 483)
01533         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query, "KQAVAVANKIVN-DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGA--TNPE-------LTQRGYQYIMRTAGLDSSQGPTAAKYILET")
01534         self.assertEqual(record.rounds[0].alignments[13].hsps[0].match, "K  ++ A ++V  +G+ Y +GH  +S         +DEG ++  PG   TN E       +  + Y+  + +AG        A K+I ET")
01535         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct, "KDVLSNAEEVVEANGLFYAVGHDPASGLVKGQVELDDEGYIITKPGTSFTNVEGVFACGDVQDKRYRQAITSAGSGCVAALEAEKFIAET")
01536         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query_start, 79)
01537         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query_end, 158)
01538         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct_start, 235)
01539         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct_end, 324)
01540         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01541         self.assertEqual(record.rounds[1].alignments[0].hsps[0].match, "MKR AKTIIAG++ALA+S  AMADDIKVA+VGAMSGP+AQWG MEFNGA QAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGI+YVIGHLCSSSTQPASDIYEDEGILMISPGAT PELTQRGYQ+IMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLK  NAN+VFFDGITAGEKDFSALIARL+KENIDFVYYGGYYPEMGQ++RQAR+ GLKTQFMGPEGVGNASLSNIAG AAEGMLVTMPKRYDQDPAN+ IV+ALKADKKDPSGPYVWITYAAVQSLATA+ R+ S  PL LVKDLKANGA+TVIGPL WDEKGDLKGF+FGVFQWHADGSST AK")
01542         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct, "MKRNAKTIIAGMIALAISHTAMADDIKVAVVGAMSGPIAQWGIMEFNGAEQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIKYVIGHLCSSSTQPASDIYEDEGILMISPGATAPELTQRGYQHIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKAANANVVFFDGITAGEKDFSALIARLKKENIDFVYYGGYYPEMGQMLRQARSVGLKTQFMGPEGVGNASLSNIAGDAAEGMLVTMPKRYDQDPANQGIVDALKADKKDPSGPYVWITYAAVQSLATALERTGSDEPLALVKDLKANGANTVIGPLNWDEKGDLKGFDFGVFQWHADGSSTAAK")
01543         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_start, 1)
01544         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_end, 369)
01545         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_start, 1)
01546         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_end, 369)
01547         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query, "RKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01548         self.assertEqual(record.rounds[1].alignments[1].hsps[0].match, " K KT++AG +AL++S  A ADDIKVA+VGAMSGPVAQ+GD EF GA QAI DINAKGGIKGDKLV V+YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGY+ ++RT GLDS QGPTAAKYILE VKPQRIAIIHDKQQYGEGLAR+VQDGLK+G  N+VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQ+RA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   +  S    P ++ K LK    DTV+GPL WDEKGDLKGFEFGVF WHA+G++T AK")
01549         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct, "MKGKTLLAGCIALSLSHMAFADDIKVAVVGAMSGPVAQYGDQEFTGAEQAIADINAKGGIKGDKLVAVKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYKLVLRTTGLDSDQGPTAAKYILEKVKPQRIAIIHDKQQYGEGLARAVQDGLKKGGVNVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQSRAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNHSD--DPAEIAKYLKGATVDTVMGPLSWDEKGDLKGFEFGVFDWHANGTATDAK")
01550         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_start, 3)
01551         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_end, 369)
01552         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_start, 1)
01553         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_end, 365)
01554         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01555         self.assertEqual(record.rounds[1].alignments[2].hsps[0].match, "M  K K ++AG +AL++S  A A DIKVA+VGAMSGPVAQ+GD EF GA QAI DINAKGG+KGDKLV V+YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGY  ++RT GLDS QGPTAAKYI+E VKP+RIAI+HDKQQYGEGLARSVQD LK+ NA++VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQARA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   + +S    P ++ K LKAN  +TV+GPL WD KGDLKGFEFGVF WHA+G++T AK")
01556         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct, "MNMKGKALLAGCIALSLSNMAFAKDIKVAVVGAMSGPVAQYGDQEFTGAEQAIADINAKGGVKGDKLVMVKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYNLVLRTTGLDSDQGPTAAKYIVEKVKPKRIAIVHDKQQYGEGLARSVQDNLKKANADVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQARAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNQSD--DPAEIAKYLKANSVETVMGPLSWDAKGDLKGFEFGVFDWHANGTATDAK")
01557         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_start, 1)
01558         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_end, 369)
01559         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_start, 1)
01560         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_end, 367)
01561         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01562         self.assertEqual(record.rounds[1].alignments[3].hsps[0].match, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01563         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01564         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_start, 1)
01565         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_end, 369)
01566         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_start, 1)
01567         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_end, 369)
01568         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01569         self.assertEqual(record.rounds[1].alignments[4].hsps[0].match, "M  K K ++AG++ALA S  A+A+DIKVA+VGAMSGPVAQ+GD EF GA QA+ DINAKGGIKG+KL   +YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGYQ I+RT GLDS QGPTAAKYILE VKPQRIAI+HDKQQYGEGLAR+VQDGLK+GNAN+VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQARA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   + +S    P ++ K LKAN  DTV+GPL WDEKGDLKGFEFGVF WHA+G++T AK")
01570         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct, "MNTKGKALLAGLIALAFSNMALAEDIKVAVVGAMSGPVAQYGDQEFTGAEQAVADINAKGGIKGNKLQIAKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYQLILRTTGLDSDQGPTAAKYILEKVKPQRIAIVHDKQQYGEGLARAVQDGLKKGNANVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQARAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNQSD--DPAEIAKYLKANSVDTVMGPLTWDEKGDLKGFEFGVFDWHANGTATDAK")
01571         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query_start, 1)
01572         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query_end, 369)
01573         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct_start, 1)
01574         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct_end, 367)
01575         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query, "KRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01576         self.assertEqual(record.rounds[1].alignments[5].hsps[0].match, "+R ++   A  +A   S    AD IK+A+ G ++GPVAQ+GDM+  GA  AI+ IN  GG+ G +L GV YDDACDPKQAVAVANK+VNDG+++V+GH+CSSSTQPA+DIYEDEG+LMI+P AT PE+T RGY+ I RT GLD+ QGP A K+I E  K + IA++HDKQQYGEG+A  V+  ++     +  F+G+ AG+KDF+ALI++L+K  + FVY+GGY+PEMG ++RQA+  GL  +FMGPEGVGN+ ++ IAG A+EGML T+P+ ++QDP NKA+++A KA  +DPSG +V   Y+AV  +A  + ++    P  + + L+AN  +T  G L +DEKGDLK F+F V++WH D + T  K")
01577         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct, "QRLSRLFAAMAIAGFASYSMAADTIKIALAGPVTGPVAQYGDMQRAGALMAIEQINKAGGVNGAQLEGVIYDDACDPKQAVAVANKVVNDGVKFVVGHVCSSSTQPATDIYEDEGVLMITPSATAPEITSRGYKLIFRTIGLDNMQGPVAGKFIAERYKVKTIAVLHDKQQYGEGIATEVKKTVEDAGIKVAVFEGLNAGDKDFNALISKLKKAGVQFVYFGGYHPEMGLLLRQAKQAGLDARFMGPEGVGNSEITAIAGDASEGMLATLPRAFEQDPKNKALIDAFKAKNQDPSGIFVLPAYSAVTVIAKGIEKAGEADPEKVAEALRANTFETPTGNLGFDEKGDLKNFDFTVYEWHKDATRTEVK")
01578         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query_start, 2)
01579         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query_end, 369)
01580         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct_start, 6)
01581         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct_end, 373)
01582         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query, "SGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIV-NDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIV--FFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQ-ARANGLKTQ-FMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQD-PANKAIVEALKADKKDPSGPYVW--ITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGP")
01583         self.assertEqual(record.rounds[1].alignments[6].hsps[0].match, "+G  A        GA  A++ +N +GG+ G  +  +  D   DP +    A   + N G+++++G   S + +    + E    L+  P  T  E  +     +      + +  P AA  I      +R+  I     Y       ++   +Q    ++   +  +   + D    + R+ +   D V+         ++ R  AR  G   +  +       A ++ +    AEG +V  P     D PA++A V+A      + +    W    Y     L  A   + + R  D+ + L     D   GP")
01584         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct, "TGVTADIERSHAYGALLAVEQLNREGGVGGRPIETLSQDPGGDPDRYRLCAEDFIRNRGVRFLVGCYMSHTRKAVMPVVERADALLCYP--TPYEGFEYSPNIVYGGPAPNQNSAPLAAYLI--RHYGERVVFIGSDYIYPRESNHVMRHLYRQHGGTVLEEIYIPLYPSDDDLQRAVERIYQARADVVFSTVVGTGTAELYRAIARRYGDGRRPPIASLTTSEAEVAKMESDVAEGQVVVAPYFSSIDTPASRAFVQACHGFFPENATITAWAEAAYWQTLLLGRAAQAAGNWRVEDVQRHLYDIDIDAPQGP")
01585         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query_start, 35)
01586         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query_end, 340)
01587         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct_start, 17)
01588         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct_end, 326)
01589         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGI--TAGEKDFSALIARL-QKENIDFVYYGGYYPEMGQIVRQARANGLKTQF")
01590         self.assertEqual(record.rounds[1].alignments[7].hsps[0].match, "VIG   SS +   +++     I  +SP +T   L+ +  +    RT   D+ Q   A   IL+      ++ IH +  YGE    ++     + N  I   + +   A +K F ++I++L +K N   V       +  +I++ A+   L   F")
01591         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct, "VIGGSYSSVSLQVANLLRLFHIPQVSPASTAKTLSDKTRFDLFARTVPPDTFQS-VALVDILKNFNWSYVSTIHSEGSYGEYGIEALHKEATERNVCIAVAEKVPSAADDKVFDSIISKLQKKPNARGVVLFTRAEDARRILQAAKRANLSQPF")
01592         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query_start, 96)
01593         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query_end, 245)
01594         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct_start, 152)
01595         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct_end, 304)
01596         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGI--TAGEKDFSALIARLQ")
01597         self.assertEqual(record.rounds[1].alignments[8].hsps[0].match, "VIG   SS      ++ +   I  I+  AT+ +L+ +  Y+Y +R    D+ Q   A   I++      ++ +H +  YGE    + ++   Q    I   D I   AGEK F  L+ +L+")
01598         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct, "VIGPGSSSVAIQVQNLLQLFDIPQIAYSATSIDLSDKTLYKYFLRVVPSDTLQA-RAMLDIVKRYNWTYVSAVHTEGNYGESGMDAFKELAAQEGLCIAHSDKIYSNAGEKSFDRLLRKLR")
01599         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query_start, 96)
01600         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query_end, 213)
01601         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct_start, 159)
01602         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct_end, 278)
01603         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGI--TAGEKDFSALIARLQ")
01604         self.assertEqual(record.rounds[1].alignments[9].hsps[0].match, "VIG   SS      ++ +   I  I+  AT+ +L+ +  Y+Y +R    D+ Q   A   I++      ++ +H +  YGE    + ++   Q    I   D I   AGEK F  L+ +L+")
01605         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct, "VIGPGSSSVAIQVQNLLQLFDIPQIAYSATSIDLSDKTLYKYFLRVVPSDTLQA-RAMLDIVKRYNWTYVSAVHTEGNYGESGMDAFKELAAQEGLCIAHSDKIYSNAGEKSFDRLLRKLR")
01606         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query_start, 96)
01607         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query_end, 213)
01608         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct_start, 159)
01609         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct_end, 278)
01610         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGI--TAGEKDFSALIARLQ")
01611         self.assertEqual(record.rounds[1].alignments[10].hsps[0].match, "VIG   SS      ++ +   I  I+  AT+ +L+ +  ++Y MR    D+ Q   A   I++      ++ +H +  YGE    + +D   +    I     I   AGE+ F  L+ +L+")
01612         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct, "VIGPGSSSVAIQVQNLLQLFNIPQIAYSATSMDLSDKTLFKYFMRVVPSDAQQA-RAMVDIVKRYNWTYVSAVHTEGNYGESGMEAFKDMSAKEGICIAHSYKIYSNAGEQSFDKLLKKLR")
01613         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query_start, 96)
01614         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query_end, 213)
01615         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct_start, 145)
01616         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct_end, 264)
01617         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGI--TAGEKDFSALIARL")
01618         self.assertEqual(record.rounds[1].alignments[11].hsps[0].match, "VIG   SS      ++ +   I  I+  AT+ +L+ +  ++Y MR    D+ Q   A   I++      ++ +H +  YGE    + +D   +    I     I   AGE+ F  L+ +L")
01619         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct, "VIGPGSSSVAIQVQNLLQLFNIPQIAYSATSMDLSDKTLFKYFMRVVPSDAQQA-RAMVDIVKRYNWTYVSAVHTEGNYGESGMEAFKDMSAKEGICIAHSYKIYSNAGEQSFDKLLKKL")
01620         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query_start, 96)
01621         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query_end, 212)
01622         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct_start, 146)
01623         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct_end, 264)
01624         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDF----SALIARLQKE")
01625         self.assertEqual(record.rounds[1].alignments[12].hsps[0].match, "V+G   SS +   +++     I  +SP +TN +L+ +  ++Y  RT   D  Q   A   I    K   +++++   +YGE  A + +   ++    I   + I   ++ F    + L+ +LQ E")
01626         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct, "VVGGSYSSVSVQLANLLRLFRIAQVSPASTNADLSDKNRFEYFARTVPSDDYQA-MAMVEIAVKFKWSYVSLVYSADEYGELGADAFKKEARKKGICIALEERIQNKKESFTESINNLVQKLQPE")
01627         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query_start, 96)
01628         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query_end, 215)
01629         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct_start, 196)
01630         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct_end, 319)
01631         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query, "AGIVALAVSQGAMADDIKVAI---VGAMSGPVAQWGDMEFNGARQAIKDINAKGG----IKGDKLVGV")
01632         self.assertEqual(record.rounds[1].alignments[13].hsps[0].match, "A   A   S   +   I  AI    G+ +GPV Q+ +   NG+  A       GG      G  L GV")
01633         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct, "AAAAAGEASHVVVGGSIDAAIDTAKGSRAGPVEQYVNQAANGSLIAAASALVAGGGTEDAAGAILAGV")
01634         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query_start, 10)
01635         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query_end, 70)
01636         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct_start, 315)
01637         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct_end, 382)
01638         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query, "AIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGL---DSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDF")
01639         self.assertEqual(record.rounds[1].alignments[14].hsps[0].match, "AI+     G  K  K+V V  D+A   K+ V V    +    ++  G +C++S    S+IY+   IL  +P  +  ++ +   +   +  G+   DS   P     +   +    I  + D++   +   R ++         +     +  GE D    +  ++  N+ F")
01640         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct, "AIELAKKTG--KDPKVVQVILDEA---KEIVKVGKNFIITETKH--GFVCANSGVDESNIYKGIKILPKNPDESAEKIRKEIEKLTGKRVGVIISDSVGRPFRKGAVGIAIGVSGILALWDRKGEKDLFGRELKTTEVAIADELASMANVVMGEADEGIPVVIIRGANVPF")
01641         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query_start, 52)
01642         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query_end, 219)
01643         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct_start, 67)
01644         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct_end, 230)
01645         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query, "GPTAAKYILETVKP---QRIAIIHDK--QQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSAL--IARLQKENID-FVYYGGYYP")
01646         self.assertEqual(record.rounds[1].alignments[15].hsps[0].match, "GP A   + E  K    ++  ++ DK  +   +G        L++   ++V FDG+    KD +    +   +KE+ D  V  GG  P")
01647         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct, "GPNAISVVGERCKLLGGKKALLVTDKGLRAIKDGAVDKTLTHLREAGIDVVVFDGVEPNPKDTNVRDGLEVFRKEHCDIIVTVGGGSP")
01648         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query_start, 148)
01649         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query_end, 227)
01650         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct_start, 17)
01651         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct_end, 104)
01652         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQR-GYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGE-GLARSVQDGLKQGNANIVFFDGITAGEK--DFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFM--GPEGVGNASLSNIA-----GGAAEGMLVTMPKR")
01653         self.assertEqual(record.rounds[1].alignments[16].hsps[0].match, "D I  VIG   SS +   ++I     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE G+    Q   + G   I     I    +  +F  +I R L+  N   V       ++ +I+  A+       F+  G +  G    S IA        AEG +  +PKR")
01654         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct, "DKISGVIGAAASSVSIMVANILRLFKIPQISYASTAPELSDNTRYDFFSRVVPPDSYQA-QAMVDIVTALGWNYVSTLASEGNYGESGVEAFTQISREIGGVCIAQSQKIPREPRPGEFEKIIKRLLETPNARAVIMFANEDDIRRILEAAKKLNQSGHFLWIGSDSWG----SKIAPVYQQEEIAEGAVTILPKR")
01655         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query_start, 91)
01656         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query_end, 274)
01657         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct_start, 145)
01658         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct_end, 335)
01659         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQR-GYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGE-GLARSVQDGLKQGNANIVFFDGITAGEK--DFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFM--GPEGVGNASLSNIA-----GGAAEGMLVTMPKR")
01660         self.assertEqual(record.rounds[1].alignments[17].hsps[0].match, "D I  VIG   SS +   ++I     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE G+    Q   + G   I     I    +  +F  +I R L+  N   V       ++ +I+  A+       F+  G +  G    S IA        AEG +  +PKR")
01661         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct, "DKISGVIGAAASSVSIMVANILRLFKIPQISYASTAPELSDNTRYDFFSRVVPPDSYQA-QAMVDIVTALGWNYVSTLASEGNYGESGVEAFTQISREIGGVCIAQSQKIPREPRPGEFEKIIKRLLETPNARAVIMFANEDDIRRILEAAKKLNQSGHFLWIGSDSWG----SKIAPVYQQEEIAEGAVTILPKR")
01662         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query_start, 91)
01663         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query_end, 274)
01664         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct_start, 145)
01665         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct_end, 335)
01666         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQR-GYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGE-GLARSVQDGLKQGNANIVFFDGITAGEK--DFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFM--GPEGVGNASLSNIA-----GGAAEGMLVTMPKR")
01667         self.assertEqual(record.rounds[1].alignments[18].hsps[0].match, "D I  VIG   SS +   ++I     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE G+    Q   + G   I     I    +  +F  +I R L+  N   V       ++  I+  A+       F+  G +  G    S IA        AEG +  +PKR")
01668         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct, "DKISGVIGAAASSVSIMVANILRLFKIPQISYASTAPELSDNTRYDFFSRVVPPDSYQA-QAMVDIVTALGWNYVSTLASEGNYGESGVEAFTQISREIGGVCIAQSQKIPREPRPGEFEKIIKRLLETPNARAVIMFANEDDIRGILEAAKKLNQSGHFLWIGSDSWG----SKIAPVYQQEEIAEGAVTILPKR")
01669         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query_start, 91)
01670         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query_end, 274)
01671         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct_start, 145)
01672         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct_end, 335)
01673         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query, "QRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSAL--IARLQKENIDFVY-YGGYYP")
01674         self.assertEqual(record.rounds[1].alignments[19].hsps[0].match, "+   I+ D      G+ + V D LK    N   +DG+       + L  +  L+  N DFV   GG  P")
01675         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct, "KNALIVSDAFMNKSGVVKQVADLLKAQGINSAVYDGVMPNPTVTAVLEGLKILKDNNSDFVISLGGGSP")
01676         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query_start, 162)
01677         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query_end, 227)
01678         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct_start, 32)
01679         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct_end, 100)
01680         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query, "GPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSA")
01681         self.assertEqual(record.rounds[1].alignments[20].hsps[0].match, "G +G  + ++ + AG     +L  + K   +DP N  +V  +KA KK+     +W  Y   +  A A     ")
01682         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct, "GKQGEAHLAMRHYAGTVRYNVLNWLEKN--KDPLNDTVVSVMKASKKNDLLVEIWQDYTTQEEAAAAAKAGG")
01683         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query_start, 247)
01684         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query_end, 318)
01685         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct_start, 570)
01686         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct_end, 639)
01687         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query, "MLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKG")
01688         self.assertEqual(record.rounds[1].alignments[21].hsps[0].match, "+++T+P   ++  AN ++     +++ D S  Y+  T      L T +    S       +  +      + GP+  D+ GD+  ")
01689         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct, "LVLTLPP--EKFIANASVSGRFPSERSDFSLAYLEGTLLFGHMLQTFLENGESVTTPKFARAFRNLTFQGLEGPVTLDDSGDIDN")
01690         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query_start, 267)
01691         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query_end, 351)
01692         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct_start, 294)
01693         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct_end, 376)
01694         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query, "TVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQK")
01695         self.assertEqual(record.rounds[1].alignments[22].hsps[0].match, " +K ++ +++  K   G+G+ R  +    +  A +    G+   +++   L A L+K")
01696         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct, "RIKEEKASVVRPK---GDGVVRIQKQTSGRKGAGVSVITGLDLSDEELKKLAAELKK")
01697         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query_start, 158)
01698         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query_end, 214)
01699         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct_start, 14)
01700         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct_end, 67)
01701         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query, "AIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGE-KDFSALIARLQKENIDFVYYGGYYPE-MGQIVRQARANGL")
01702         self.assertEqual(record.rounds[1].alignments[23].hsps[0].match, "AI  D Q Y  G+ + VQD  K  +  +   +    G+    S  +  L   N+D +           + VR+A   G+")
01703         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct, "AIYLDTQGYYAGVRQGVQDAAKDSSVQVQLIETNAQGDISKESTFVDTLVARNVDAIILSAVSENGSSRTVRRASEAGI")
01704         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query_start, 165)
01705         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query_end, 241)
01706         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct_start, 35)
01707         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct_end, 113)
01708         self.assertEqual(record.rounds[2].alignments[0].hsps[0].query, "RKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01709         self.assertEqual(record.rounds[2].alignments[0].hsps[0].match, " K KT++AG +AL++S  A ADDIKVA+VGAMSGPVAQ+GD EF GA QAI DINAKGGIKGDKLV V+YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGY+ ++RT GLDS QGPTAAKYILE VKPQRIAIIHDKQQYGEGLAR+VQDGLK+G  N+VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQ+RA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   +  S    P ++ K LK    DTV+GPL WDEKGDLKGFEFGVF WHA+G++T AK")
01710         self.assertEqual(record.rounds[2].alignments[0].hsps[0].sbjct, "MKGKTLLAGCIALSLSHMAFADDIKVAVVGAMSGPVAQYGDQEFTGAEQAIADINAKGGIKGDKLVAVKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYKLVLRTTGLDSDQGPTAAKYILEKVKPQRIAIIHDKQQYGEGLARAVQDGLKKGGVNVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQSRAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNHSD--DPAEIAKYLKGATVDTVMGPLSWDEKGDLKGFEFGVFDWHANGTATDAK")
01711         self.assertEqual(record.rounds[2].alignments[0].hsps[0].query_start, 3)
01712         self.assertEqual(record.rounds[2].alignments[0].hsps[0].query_end, 369)
01713         self.assertEqual(record.rounds[2].alignments[0].hsps[0].sbjct_start, 1)
01714         self.assertEqual(record.rounds[2].alignments[0].hsps[0].sbjct_end, 365)
01715         self.assertEqual(record.rounds[2].alignments[1].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01716         self.assertEqual(record.rounds[2].alignments[1].hsps[0].match, "MKR AKTIIAG++ALA+S  AMADDIKVA+VGAMSGP+AQWG MEFNGA QAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGI+YVIGHLCSSSTQPASDIYEDEGILMISPGAT PELTQRGYQ+IMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLK  NAN+VFFDGITAGEKDFSALIARL+KENIDFVYYGGYYPEMGQ++RQAR+ GLKTQFMGPEGVGNASLSNIAG AAEGMLVTMPKRYDQDPAN+ IV+ALKADKKDPSGPYVWITYAAVQSLATA+ R+ S  PL LVKDLKANGA+TVIGPL WDEKGDLKGF+FGVFQWHADGSST AK")
01717         self.assertEqual(record.rounds[2].alignments[1].hsps[0].sbjct, "MKRNAKTIIAGMIALAISHTAMADDIKVAVVGAMSGPIAQWGIMEFNGAEQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIKYVIGHLCSSSTQPASDIYEDEGILMISPGATAPELTQRGYQHIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKAANANVVFFDGITAGEKDFSALIARLKKENIDFVYYGGYYPEMGQMLRQARSVGLKTQFMGPEGVGNASLSNIAGDAAEGMLVTMPKRYDQDPANQGIVDALKADKKDPSGPYVWITYAAVQSLATALERTGSDEPLALVKDLKANGANTVIGPLNWDEKGDLKGFDFGVFQWHADGSSTAAK")
01718         self.assertEqual(record.rounds[2].alignments[1].hsps[0].query_start, 1)
01719         self.assertEqual(record.rounds[2].alignments[1].hsps[0].query_end, 369)
01720         self.assertEqual(record.rounds[2].alignments[1].hsps[0].sbjct_start, 1)
01721         self.assertEqual(record.rounds[2].alignments[1].hsps[0].sbjct_end, 369)
01722         self.assertEqual(record.rounds[2].alignments[2].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01723         self.assertEqual(record.rounds[2].alignments[2].hsps[0].match, "M  K K ++AG++ALA S  A+A+DIKVA+VGAMSGPVAQ+GD EF GA QA+ DINAKGGIKG+KL   +YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGYQ I+RT GLDS QGPTAAKYILE VKPQRIAI+HDKQQYGEGLAR+VQDGLK+GNAN+VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQARA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   + +S    P ++ K LKAN  DTV+GPL WDEKGDLKGFEFGVF WHA+G++T AK")
01724         self.assertEqual(record.rounds[2].alignments[2].hsps[0].sbjct, "MNTKGKALLAGLIALAFSNMALAEDIKVAVVGAMSGPVAQYGDQEFTGAEQAVADINAKGGIKGNKLQIAKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYQLILRTTGLDSDQGPTAAKYILEKVKPQRIAIVHDKQQYGEGLARAVQDGLKKGNANVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQARAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNQSD--DPAEIAKYLKANSVDTVMGPLTWDEKGDLKGFEFGVFDWHANGTATDAK")
01725         self.assertEqual(record.rounds[2].alignments[2].hsps[0].query_start, 1)
01726         self.assertEqual(record.rounds[2].alignments[2].hsps[0].query_end, 369)
01727         self.assertEqual(record.rounds[2].alignments[2].hsps[0].sbjct_start, 1)
01728         self.assertEqual(record.rounds[2].alignments[2].hsps[0].sbjct_end, 367)
01729         self.assertEqual(record.rounds[2].alignments[3].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01730         self.assertEqual(record.rounds[2].alignments[3].hsps[0].match, "M  K K ++AG +AL++S  A A DIKVA+VGAMSGPVAQ+GD EF GA QAI DINAKGG+KGDKLV V+YDDACDPKQAVAVANK+VNDGI+YVIGHLCSSSTQPASDIYEDEGILMI+P AT PELT RGY  ++RT GLDS QGPTAAKYI+E VKP+RIAI+HDKQQYGEGLARSVQD LK+ NA++VFFDGITAGEKDFS L+ARL+KENIDFVYYGGY+PEMGQI+RQARA GLKTQFMGPEGV N SLSNIAG +AEG+LVT PK YDQ PANK IV+A+KA K+DPSG +VW TYAA+QSL   + +S    P ++ K LKAN  +TV+GPL WD KGDLKGFEFGVF WHA+G++T AK")
01731         self.assertEqual(record.rounds[2].alignments[3].hsps[0].sbjct, "MNMKGKALLAGCIALSLSNMAFAKDIKVAVVGAMSGPVAQYGDQEFTGAEQAIADINAKGGVKGDKLVMVKYDDACDPKQAVAVANKVVNDGIKYVIGHLCSSSTQPASDIYEDEGILMITPAATAPELTARGYNLVLRTTGLDSDQGPTAAKYIVEKVKPKRIAIVHDKQQYGEGLARSVQDNLKKANADVVFFDGITAGEKDFSTLVARLKKENIDFVYYGGYHPEMGQILRQARAAGLKTQFMGPEGVANVSLSNIAGESAEGLLVTKPKNYDQVPANKPIVDAIKAKKQDPSGAFVWTTYAALQSLQAGLNQSD--DPAEIAKYLKANSVETVMGPLSWDAKGDLKGFEFGVFDWHANGTATDAK")
01732         self.assertEqual(record.rounds[2].alignments[3].hsps[0].query_start, 1)
01733         self.assertEqual(record.rounds[2].alignments[3].hsps[0].query_end, 369)
01734         self.assertEqual(record.rounds[2].alignments[3].hsps[0].sbjct_start, 1)
01735         self.assertEqual(record.rounds[2].alignments[3].hsps[0].sbjct_end, 367)
01736         self.assertEqual(record.rounds[2].alignments[4].hsps[0].query, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01737         self.assertEqual(record.rounds[2].alignments[4].hsps[0].match, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01738         self.assertEqual(record.rounds[2].alignments[4].hsps[0].sbjct, "MKRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01739         self.assertEqual(record.rounds[2].alignments[4].hsps[0].query_start, 1)
01740         self.assertEqual(record.rounds[2].alignments[4].hsps[0].query_end, 369)
01741         self.assertEqual(record.rounds[2].alignments[4].hsps[0].sbjct_start, 1)
01742         self.assertEqual(record.rounds[2].alignments[4].hsps[0].sbjct_end, 369)
01743         self.assertEqual(record.rounds[2].alignments[5].hsps[0].query, "KRKAKTIIAGIVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDLKGFEFGVFQWHADGSSTVAK")
01744         self.assertEqual(record.rounds[2].alignments[5].hsps[0].match, "+R ++   A  +A   S    AD IK+A+ G ++GPVAQ+GDM+  GA  AI+ IN  GG+ G +L GV YDDACDPKQAVAVANK+VNDG+++V+GH+CSSSTQPA+DIYEDEG+LMI+P AT PE+T RGY+ I RT GLD+ QGP A K+I E  K + IA++HDKQQYGEG+A  V+  ++     +  F+G+ AG+KDF+ALI++L+K  + FVY+GGY+PEMG ++RQA+  GL  +FMGPEGVGN+ ++ IAG A+EGML T+P+ ++QDP NKA+++A KA  +DPSG +V   Y+AV  +A  + ++    P  + + L+AN  +T  G L +DEKGDLK F+F V++WH D + T  K")
01745         self.assertEqual(record.rounds[2].alignments[5].hsps[0].sbjct, "QRLSRLFAAMAIAGFASYSMAADTIKIALAGPVTGPVAQYGDMQRAGALMAIEQINKAGGVNGAQLEGVIYDDACDPKQAVAVANKVVNDGVKFVVGHVCSSSTQPATDIYEDEGVLMITPSATAPEITSRGYKLIFRTIGLDNMQGPVAGKFIAERYKVKTIAVLHDKQQYGEGIATEVKKTVEDAGIKVAVFEGLNAGDKDFNALISKLKKAGVQFVYFGGYHPEMGLLLRQAKQAGLDARFMGPEGVGNSEITAIAGDASEGMLATLPRAFEQDPKNKALIDAFKAKNQDPSGIFVLPAYSAVTVIAKGIEKAGEADPEKVAEALRANTFETPTGNLGFDEKGDLKNFDFTVYEWHKDATRTEVK")
01746         self.assertEqual(record.rounds[2].alignments[5].hsps[0].query_start, 2)
01747         self.assertEqual(record.rounds[2].alignments[5].hsps[0].query_end, 369)
01748         self.assertEqual(record.rounds[2].alignments[5].hsps[0].sbjct_start, 6)
01749         self.assertEqual(record.rounds[2].alignments[5].hsps[0].sbjct_end, 373)
01750         self.assertEqual(record.rounds[2].alignments[6].hsps[0].query, "SGPVAQWGDMEFNGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIV-NDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIV--FFDGITAGEKDFSALIARLQKENIDFVYYGGYYPEMGQIVRQ-ARANGLKTQ-FMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQD-PANKAIVEALKADKKDPSGPYVW--ITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGP")
01751         self.assertEqual(record.rounds[2].alignments[6].hsps[0].match, "+G  A        GA  A++ +N +GG+ G  +  +  D   DP +    A   + N G+++++G   S + +    + E    L+  P  T  E  +     +      + +  P AA  I      +R+  I     Y       ++   +Q    ++   +  +   + D    + R+ +   D V+         ++ R  AR  G   +  +       A ++ +    AEG +V  P     D PA++A V+A      + +    W    Y     L  A   + + R  D+ + L     D   GP")
01752         self.assertEqual(record.rounds[2].alignments[6].hsps[0].sbjct, "TGVTADIERSHAYGALLAVEQLNREGGVGGRPIETLSQDPGGDPDRYRLCAEDFIRNRGVRFLVGCYMSHTRKAVMPVVERADALLCYP--TPYEGFEYSPNIVYGGPAPNQNSAPLAAYLI--RHYGERVVFIGSDYIYPRESNHVMRHLYRQHGGTVLEEIYIPLYPSDDDLQRAVERIYQARADVVFSTVVGTGTAELYRAIARRYGDGRRPPIASLTTSEAEVAKMESDVAEGQVVVAPYFSSIDTPASRAFVQACHGFFPENATITAWAEAAYWQTLLLGRAAQAAGNWRVEDVQRHLYDIDIDAPQGP")
01753         self.assertEqual(record.rounds[2].alignments[6].hsps[0].query_start, 35)
01754         self.assertEqual(record.rounds[2].alignments[6].hsps[0].query_end, 340)
01755         self.assertEqual(record.rounds[2].alignments[6].hsps[0].sbjct_start, 17)
01756         self.assertEqual(record.rounds[2].alignments[6].hsps[0].sbjct_end, 326)
01757         self.assertEqual(record.rounds[2].alignments[7].hsps[0].query, "NGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELT-QRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIV---FFDGITAGEKDFSALIARLQKE-NIDFVYYGGYYPEMGQIVRQARANGLKTQFM----GPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01758         self.assertEqual(record.rounds[2].alignments[7].hsps[0].match, "    QA+  + A    +GD            P    A   ++V      V+G   SS +   +++     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE    +     ++     +             +FS +I RL +  N   +       ++ +++  AR   L   F+       G   + + ++    A G +  +PKR   D       +       + +   +W  ")
01759         self.assertEqual(record.rounds[2].alignments[7].hsps[0].sbjct, "YALEQALSFVQALIRGRGDGDEVGVRCPGGVPPLRPAPPERVVA-----VVGASASSVSIMVANVLRLFAIPQISYASTAPELSDSTRYDFFSRVVPPDSYQA-QAMVDIVRALGWNYVSTLASEGNYGESGVEAFVQISREAGGVCIAQSIKIPREPKPGEFSKVIRRLMETPNARGIIIFANEDDIRRVLEAARQANLTGHFLWVGSDSWGAKTSPILSLE-DVAVGAITILPKRASID----GFDQYFMTRSLENNRRNIWFA")
01760         self.assertEqual(record.rounds[2].alignments[7].hsps[0].query_start, 47)
01761         self.assertEqual(record.rounds[2].alignments[7].hsps[0].query_end, 303)
01762         self.assertEqual(record.rounds[2].alignments[7].hsps[0].sbjct_start, 104)
01763         self.assertEqual(record.rounds[2].alignments[7].hsps[0].sbjct_end, 358)
01764         self.assertEqual(record.rounds[2].alignments[8].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGE-GLARSVQDGLKQGNANIV--FFDGITAGEKDFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQF--MGPEGVGN--ASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01765         self.assertEqual(record.rounds[2].alignments[8].hsps[0].match, "VIG   SS +   ++I     I  IS  +T P+L+               +    A   I+  +K   ++ +  +  YGE G+   +Q   + G   I             +F  +I R L+  N   V       ++ +++  AR       F  MG +  G+  A + ++    AEG +  +PKR       +       +   D +   +W  ")
01766         self.assertEqual(record.rounds[2].alignments[8].hsps[0].sbjct, "VIGASGSSVSIMVANILRLFKIPQISYASTAPDLSDNSRYDFFSRVVPSDTYQAQAMVDIVRALKWNYVSTVASEGSYGESGVEAFIQKSREDGGVCIAQSVKIPREPKAGEFDKIIRRLLETSNARAVIIFANEDDIRRVLEAARRANQTGHFFWMGSDSWGSKIAPVLHLE-EVAEGAVTILPKRMSV----RGFDRYFSSRTLDNNRRNIWFA")
01767         self.assertEqual(record.rounds[2].alignments[8].hsps[0].query_start, 96)
01768         self.assertEqual(record.rounds[2].alignments[8].hsps[0].query_end, 303)
01769         self.assertEqual(record.rounds[2].alignments[8].hsps[0].sbjct_start, 153)
01770         self.assertEqual(record.rounds[2].alignments[8].hsps[0].sbjct_end, 363)
01771         self.assertEqual(record.rounds[2].alignments[9].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFD--GITAGEKDFSALIARL-QKENIDFVYYGGYYPEMGQIVRQARANGLKTQF--MGPEGVG-NASLSNIAGGAAEGMLVT")
01772         self.assertEqual(record.rounds[2].alignments[9].hsps[0].match, "VIG   SS +   +++     I  +SP +T   L+ +  +    RT   D+ Q   A   IL+      ++ IH +  YGE    ++     + N  I   +     A +K F ++I++L +K N   V       +  +I++ A+   L   F  +  +G G    L       AEG +  ")
01773         self.assertEqual(record.rounds[2].alignments[9].hsps[0].sbjct, "VIGGSYSSVSLQVANLLRLFHIPQVSPASTAKTLSDKTRFDLFARTVPPDTFQS-VALVDILKNFNWSYVSTIHSEGSYGEYGIEALHKEATERNVCIAVAEKVPSAADDKVFDSIISKLQKKPNARGVVLFTRAEDARRILQAAKRANLSQPFHWIASDGWGKQQKLLEGLEDIAEGAITV")
01774         self.assertEqual(record.rounds[2].alignments[9].hsps[0].query_start, 96)
01775         self.assertEqual(record.rounds[2].alignments[9].hsps[0].query_end, 270)
01776         self.assertEqual(record.rounds[2].alignments[9].hsps[0].sbjct_start, 152)
01777         self.assertEqual(record.rounds[2].alignments[9].hsps[0].sbjct_end, 332)
01778         self.assertEqual(record.rounds[2].alignments[10].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGE-GLARSVQDGLKQGNANIV--FFDGITAGEKDFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQF--MGPEGVGNASLSNIA-GGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01779         self.assertEqual(record.rounds[2].alignments[10].hsps[0].match, "VIG   SS +   ++I     I  IS  +T P+L+               +    A   I+  +K   ++ +  +  YGE G+   +Q   + G   I             +F  +I R L+  N   +       ++ +++  AR       F  MG +  G+ S   +     AEG +  +PKR       +       +   D +   +W  ")
01780         self.assertEqual(record.rounds[2].alignments[10].hsps[0].sbjct, "VIGASGSSVSIMVANILRLFKIPQISYASTAPDLSDNSRYDFFSRVVPSDTYQAQAMVDIVRALKWNYVSTLASEGSYGESGVEAFIQKSRENGGVCIAQSVKIPREPKTGEFDKIIKRLLETSNARGIIIFANEDDIRRVLEAARRANQTGHFFWMGSDSWGSKSAPVLRLEEVAEGAVTILPKRMSV----RGFDRYFSSRTLDNNRRNIWFA")
01781         self.assertEqual(record.rounds[2].alignments[10].hsps[0].query_start, 96)
01782         self.assertEqual(record.rounds[2].alignments[10].hsps[0].query_end, 303)
01783         self.assertEqual(record.rounds[2].alignments[10].hsps[0].sbjct_start, 153)
01784         self.assertEqual(record.rounds[2].alignments[10].hsps[0].sbjct_end, 363)
01785         self.assertEqual(record.rounds[2].alignments[11].hsps[0].query, "NGARQAIKDINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELT-QRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIV---FFDGITAGEKDFSALIARLQKE-NIDFVYYGGYYPEMGQIVRQARANGLKTQFM----GPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01786         self.assertEqual(record.rounds[2].alignments[11].hsps[0].match, "    QA+  + A    +GD            P    A   ++V      V+G   SS +   +++     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE    +     ++     +             +F  +I RL +  N   +       ++ +++   R   L   F+       G   + + N+    A G +  +PKR   D       +       + +   +W  ")
01787         self.assertEqual(record.rounds[2].alignments[11].hsps[0].sbjct, "YALEQALSFVQALIRGRGDGDEASVRCPGGVPPLRSAPPERVVA-----VVGASASSVSIMVANVLRLFAIPQISYASTAPELSDSTRYDFFSRVVPPDSYQA-QAMVDIVRALGWNYVSTLASEGNYGESGVEAFVQISREAGGVCIAQSIKIPREPKPGEFHKVIRRLMETPNARGIIIFANEDDIRRVLEATRQANLTGHFLWVGSDSWGSKISPILNLE-EEAVGAITILPKRASID----GFDQYFMTRSLENNRRNIWFA")
01788         self.assertEqual(record.rounds[2].alignments[11].hsps[0].query_start, 47)
01789         self.assertEqual(record.rounds[2].alignments[11].hsps[0].query_end, 303)
01790         self.assertEqual(record.rounds[2].alignments[11].hsps[0].sbjct_start, 98)
01791         self.assertEqual(record.rounds[2].alignments[11].hsps[0].sbjct_end, 352)
01792         self.assertEqual(record.rounds[2].alignments[12].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFF---DGITAGEKDFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQF--MGPEGVGNASLSNI--AGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01793         self.assertEqual(record.rounds[2].alignments[12].hsps[0].match, "D I  VIG   SS +   ++I     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE    +     ++     +             +F  +I R L+  N   V       ++ +I+  A+       F  +G +  G + ++ +      AEG +  +PKR   D  ++       A+ +      VW  ")
01794         self.assertEqual(record.rounds[2].alignments[12].hsps[0].sbjct, "DKISGVIGAAASSVSIMVANILRLFKIPQISYASTAPELSDNTRYDFFSRVVPPDSYQA-QAMVDIVTALGWNYVSTLASEGNYGESGVEAFTQISREIGGVCIAQSQKIPREPRPGEFEKIIKRLLETPNARAVIMFANEDDIRRILEAAKKLNQSGHFLWIGSDSWG-SKIAPVYQQEEIAEGAVTILPKRASIDGFDRYFRSRTLANNRRN----VWFA")
01795         self.assertEqual(record.rounds[2].alignments[12].hsps[0].query_start, 91)
01796         self.assertEqual(record.rounds[2].alignments[12].hsps[0].query_end, 303)
01797         self.assertEqual(record.rounds[2].alignments[12].hsps[0].sbjct_start, 145)
01798         self.assertEqual(record.rounds[2].alignments[12].hsps[0].sbjct_end, 360)
01799         self.assertEqual(record.rounds[2].alignments[13].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFF---DGITAGEKDFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQF--MGPEGVGNASLSNI--AGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01800         self.assertEqual(record.rounds[2].alignments[13].hsps[0].match, "D I  VIG   SS +   ++I     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE    +     ++     +             +F  +I R L+  N   V       ++ +I+  A+       F  +G +  G + ++ +      AEG +  +PKR   D  ++       A+ +      VW  ")
01801         self.assertEqual(record.rounds[2].alignments[13].hsps[0].sbjct, "DKISGVIGAAASSVSIMVANILRLFKIPQISYASTAPELSDNTRYDFFSRVVPPDSYQA-QAMVDIVTALGWNYVSTLASEGNYGESGVEAFTQISREIGGVCIAQSQKIPREPRPGEFEKIIKRLLETPNARAVIMFANEDDIRRILEAAKKLNQSGHFLWIGSDSWG-SKIAPVYQQEEIAEGAVTILPKRASIDGFDRYFRSRTLANNRRN----VWFA")
01802         self.assertEqual(record.rounds[2].alignments[13].hsps[0].query_start, 91)
01803         self.assertEqual(record.rounds[2].alignments[13].hsps[0].query_end, 303)
01804         self.assertEqual(record.rounds[2].alignments[13].hsps[0].sbjct_start, 145)
01805         self.assertEqual(record.rounds[2].alignments[13].hsps[0].sbjct_end, 360)
01806         self.assertEqual(record.rounds[2].alignments[14].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRG-YQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFF---DGITAGEKDFSALIAR-LQKENIDFVYYGGYYPEMGQIVRQARANGLKTQF--MGPEGVGNASLSNI--AGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWIT")
01807         self.assertEqual(record.rounds[2].alignments[14].hsps[0].match, "D I  VIG   SS +   ++I     I  IS  +T PEL+    Y +  R    DS Q   A   I+  +    ++ +  +  YGE    +     ++     +             +F  +I R L+  N   V       ++  I+  A+       F  +G +  G + ++ +      AEG +  +PKR   D  ++       A+ +      VW  ")
01808         self.assertEqual(record.rounds[2].alignments[14].hsps[0].sbjct, "DKISGVIGAAASSVSIMVANILRLFKIPQISYASTAPELSDNTRYDFFSRVVPPDSYQA-QAMVDIVTALGWNYVSTLASEGNYGESGVEAFTQISREIGGVCIAQSQKIPREPRPGEFEKIIKRLLETPNARAVIMFANEDDIRGILEAAKKLNQSGHFLWIGSDSWG-SKIAPVYQQEEIAEGAVTILPKRASIDGFDRYFRSRTLANNRRN----VWFA")
01809         self.assertEqual(record.rounds[2].alignments[14].hsps[0].query_start, 91)
01810         self.assertEqual(record.rounds[2].alignments[14].hsps[0].query_end, 303)
01811         self.assertEqual(record.rounds[2].alignments[14].hsps[0].sbjct_start, 145)
01812         self.assertEqual(record.rounds[2].alignments[14].hsps[0].sbjct_end, 360)
01813         self.assertEqual(record.rounds[2].alignments[15].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDG----------LKQGNANIVFFDGITA-GEKDFS----ALIARLQKENIDFVYYGGYYPEMGQIVR-QARANGLKTQFMGPEGVGNASLSNIAGG-AAEGMLVTMPKRYDQDPANKAIVEALKADKKD")
01814         self.assertEqual(record.rounds[2].alignments[15].hsps[0].match, "DG   V  H   SS    S  Y D G  M +   T   + Q      +        QGP A      T +  ++ I  +   Y        +DG          +K  N     +  +T   E DF       + R+ +E+++F+      P    I R +  ++  + QF  PE  G   +        + G      K YD   AN   +  +   K +")
01815         self.assertEqual(record.rounds[2].alignments[15].hsps[0].sbjct, "DGHMVVRSHARVSSLTLKSIQYRDAGEYMCTASNT---IGQDSQSIDLEFQYAPKLQGPVAVY----TWEGNQVNITCEVFAYPSATISWFRDGQLLPSSNYSNIKIYNTPSASYLEVTPDSENDFGNYNCTAVNRIGQESLEFILVQADTPSSPSIDRVEPYSSTAQVQFDEPEATGGVPILKYKAEWKSLGEESWHFKWYDAKEANMEGIVTIMGLKPE")
01816         self.assertEqual(record.rounds[2].alignments[15].hsps[0].query_start, 91)
01817         self.assertEqual(record.rounds[2].alignments[15].hsps[0].query_end, 294)
01818         self.assertEqual(record.rounds[2].alignments[15].hsps[0].sbjct_start, 357)
01819         self.assertEqual(record.rounds[2].alignments[15].hsps[0].sbjct_end, 570)
01820         self.assertEqual(record.rounds[2].alignments[16].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGIT--AGEKDFSALIARLQK--ENIDFVYYGGYYPEMGQIVRQARANGLKTQFM")
01821         self.assertEqual(record.rounds[2].alignments[16].hsps[0].match, "VIG   SS      ++ +   I  I+  AT+ +L+ +             +Q   A   I++      ++ +H +  YGE    + +D   +    I     I   AGE+ F  L+ +L+        V        +  ++   R  GL  +F+")
01822         self.assertEqual(record.rounds[2].alignments[16].hsps[0].sbjct, "VIGPGSSSVAIQVQNLLQLFNIPQIAYSATSMDLSDKTLFKYFMRVVPSDAQQARAMVDIVKRYNWTYVSAVHTEGNYGESGMEAFKDMSAKEGICIAHSYKIYSNAGEQSFDKLLKKLRSHLPKARVVACFCEGMTVRGLLMAMRRLGLAGEFL")
01823         self.assertEqual(record.rounds[2].alignments[16].hsps[0].query_start, 96)
01824         self.assertEqual(record.rounds[2].alignments[16].hsps[0].query_end, 246)
01825         self.assertEqual(record.rounds[2].alignments[16].hsps[0].sbjct_start, 145)
01826         self.assertEqual(record.rounds[2].alignments[16].hsps[0].sbjct_end, 299)
01827         self.assertEqual(record.rounds[2].alignments[17].hsps[0].query, "IVALAVSQGAMADDIKVAIVGAMSGPVAQWGDMEFNGARQAIKDINAKGGIKGDKL--VGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGITAGE")
01828         self.assertEqual(record.rounds[2].alignments[17].hsps[0].match, "++ L  S  A +   KV ++G  +             AR A   +N    + G     V +  +    P    AV++ +    +  ++G +  ++ +PA  + ++ G+ ++  G                T     +    A   +L+  +  R+A+I   Q       R++   L+     +     +   +")
01829         self.assertEqual(record.rounds[2].alignments[17].hsps[0].sbjct, "LLLLLPSPSAFSAVFKVGVLGPWACDPIFARARPDLAARLATDRLNRDLALDGGPWFEVTLLPEPCLTPGSLGAVSSALTR--VSGLVGPVNPAACRPAELLAQEAGVALVPWGCPGTRAA--------GTTAPAVTPAADALYVLLKAFRWARVALITAPQDLWVEAGRALSTALRARGLPVALVTSMVPSD")
01830         self.assertEqual(record.rounds[2].alignments[17].hsps[0].query_start, 12)
01831         self.assertEqual(record.rounds[2].alignments[17].hsps[0].query_end, 202)
01832         self.assertEqual(record.rounds[2].alignments[17].hsps[0].sbjct_start, 43)
01833         self.assertEqual(record.rounds[2].alignments[17].hsps[0].sbjct_end, 225)
01834         self.assertEqual(record.rounds[2].alignments[18].hsps[0].query, "VIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDGLKQGNANIVFFDGIT--AGEKDFSALIARLQK--ENIDFVYYGGYYPEMGQIVRQARANGLKTQFM")
01835         self.assertEqual(record.rounds[2].alignments[18].hsps[0].match, "VIG   SS      ++ +   I  I+  AT+ +L+ +             +Q   A   I++      ++ +H +  YGE    + +D   +    I     I   AGE+ F  L+ +L         V        +  ++   R  GL  +F+")
01836         self.assertEqual(record.rounds[2].alignments[18].hsps[0].sbjct, "VIGPGSSSVAIQVQNLLQLFNIPQIAYSATSMDLSDKTLFKYFMRVVPSDAQQARAMVDIVKRYNWTYVSAVHTEGNYGESGMEAFKDMSAKEGICIAHSYKIYSNAGEQSFDKLLKKLTSHLPKARVVACFCEGMTVRGLLMAMRRLGLAGEFL")
01837         self.assertEqual(record.rounds[2].alignments[18].hsps[0].query_start, 96)
01838         self.assertEqual(record.rounds[2].alignments[18].hsps[0].query_end, 246)
01839         self.assertEqual(record.rounds[2].alignments[18].hsps[0].sbjct_start, 146)
01840         self.assertEqual(record.rounds[2].alignments[18].hsps[0].sbjct_end, 300)
01841         self.assertEqual(record.rounds[2].alignments[19].hsps[0].query, "DINAKGGIKGDKLVGVEYDDACDPKQAVAVANKIVNDGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETV")
01842         self.assertEqual(record.rounds[2].alignments[19].hsps[0].match, "D+N + G +G       Y  AC   +   +     N     V+   CS +  PA DI + EG  +   G    E      Q I+ T G D  + P       E  ")
01843         self.assertEqual(record.rounds[2].alignments[19].hsps[0].sbjct, "DMNWEKG-EGQPFEYFVYGAACSEVEIDCLTGDHKNIRTDIVMDVGCSIN--PAIDIGQIEGAFIQGMGLYTIEELNYSPQGILHTRGPDQYKIPAICDMPTELH")
01844         self.assertEqual(record.rounds[2].alignments[19].hsps[0].query_start, 55)
01845         self.assertEqual(record.rounds[2].alignments[19].hsps[0].query_end, 159)
01846         self.assertEqual(record.rounds[2].alignments[19].hsps[0].sbjct_start, 1148)
01847         self.assertEqual(record.rounds[2].alignments[19].hsps[0].sbjct_end, 1249)
01848         self.assertEqual(record.rounds[2].alignments[20].hsps[0].query, "AGIVALAVSQGAMADDIKVAI---VGAMSGPVAQWGDMEFNGARQAIKDINAKGG")
01849         self.assertEqual(record.rounds[2].alignments[20].hsps[0].match, "A   A   S   +   I  AI    G+ +GPV Q+ +   NG+  A       GG")
01850         self.assertEqual(record.rounds[2].alignments[20].hsps[0].sbjct, "AAAAAGEASHVVVGGSIDAAIDTAKGSRAGPVEQYVNQAANGSLIAAASALVAGG")
01851         self.assertEqual(record.rounds[2].alignments[20].hsps[0].query_start, 10)
01852         self.assertEqual(record.rounds[2].alignments[20].hsps[0].query_end, 61)
01853         self.assertEqual(record.rounds[2].alignments[20].hsps[0].sbjct_start, 315)
01854         self.assertEqual(record.rounds[2].alignments[20].hsps[0].sbjct_end, 369)
01855         self.assertEqual(record.rounds[2].alignments[21].hsps[0].query, "DGIQYVIGHLCSSSTQPASDIYEDEGILMISPGATNPELTQRGYQYIMRTAGLDSSQGPTAAKYILETVKPQRIAIIHDKQQYGEGLARSVQDG----------LKQGNANIVFFDGITA-GEKDFS----ALIARLQKENIDFVYYGGYYPEMGQIVR-QARANGLKTQFMGPEGVGNASLSNIAGG")
01856         self.assertEqual(record.rounds[2].alignments[21].hsps[0].match, "DG   V  H   SS    S  Y D G  M +   T   + Q      +        QGP A      T +  ++ I  +   Y        +DG          +K  N     +  +T   E DF       + R+ +E+++F+      P    I R +  ++  + QF  PE  G   +      ")
01857         self.assertEqual(record.rounds[2].alignments[21].hsps[0].sbjct, "DGHMVVRSHARVSSLTLKSIQYRDAGEYMCTASNT---IGQDSQSIDLEFQYAPKLQGPVAVY----TWEGNQVNITCEVFAYPSATISWFRDGQLLPSSNYSNIKIYNTPSASYLEVTPDSENDFGNYNCTAVNRIGQESLEFILVQADTPSSPSIDRVEPYSSTAQVQFDEPEATGGVPILKYKAE")
01858         self.assertEqual(record.rounds[2].alignments[21].hsps[0].query_start, 91)
01859         self.assertEqual(record.rounds[2].alignments[21].hsps[0].query_end, 262)
01860         self.assertEqual(record.rounds[2].alignments[21].hsps[0].sbjct_start, 357)
01861         self.assertEqual(record.rounds[2].alignments[21].hsps[0].sbjct_end, 537)
01862         self.assertEqual(record.rounds[2].alignments[22].hsps[0].query, "IARLQKENIDFVYYGGYYPEMGQ-----IVRQARANGLKTQFMGPEGVGNASLSNIAGGAAEGMLVTMPKRYDQDPANKAIVEALKADKKDPSGPYVWITYAAVQSLATAMTRSASHRPLDLVKDLKANGADTVIGPLKWDEKGDL")
01863         self.assertEqual(record.rounds[2].alignments[22].hsps[0].match, "I +++K   + V + G     G+     + + A   G+ +    PE    + LS +A       +  M    + DP + A  +      ++  G    + Y  V +L        +     + K L+  GA  V      D+ G+L")
01864         self.assertEqual(record.rounds[2].alignments[22].hsps[0].sbjct, "IEKMKKTGRNIVVFYGSQTGTGEEFANRLSKDAHRYGMGSMAADPEEYDMSELSRLAEIGNSLAIFCMATYGEGDPTDNA--QDFYDWLQETDGQLSGVNY-PVFALGDKTYEHYNAMGAYVDKRLEELGAKRVFDLGMGDDDGNL")
01865         self.assertEqual(record.rounds[2].alignments[22].hsps[0].query_start, 209)
01866         self.assertEqual(record.rounds[2].alignments[22].hsps[0].query_end, 349)
01867         self.assertEqual(record.rounds[2].alignments[22].hsps[0].sbjct_start, 15)
01868         self.assertEqual(record.rounds[2].alignments[22].hsps[0].sbjct_end, 157)
01869 
01870     def _check_bt007_footer(self, record):
01871         self.assertEqual(record.database_name, ['data/swissprot'])
01872         self.assertEqual(record.num_letters_in_database, [29652561])
01873         self.assertEqual(record.num_sequences_in_database, [82258])
01874         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
01875         self.assertEqual(len(record.ka_params), 3)
01876         self.assertAlmostEqual(record.ka_params[0], 0.319)
01877         self.assertAlmostEqual(record.ka_params[1], 0.118)
01878         self.assertAlmostEqual(record.ka_params[2], 0.300)
01879         self.assertEqual(len(record.ka_params_gap), 3)
01880         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
01881         self.assertAlmostEqual(record.ka_params_gap[1], 0.0413)
01882         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
01883         self.assertEqual(record.matrix, 'BLOSUM62')
01884         self.assertEqual(record.gap_penalties, [11,1])
01885         self.assertEqual(record.num_hits, 51436041)
01886         self.assertEqual(record.num_sequences, 82258)
01887         self.assertEqual(record.num_extends, 1847150)
01888         self.assertEqual(record.num_good_extends, 5653)
01889         self.assertEqual(record.num_seqs_better_e, 61)
01890         self.assertEqual(record.hsps_no_gap, 21)
01891         self.assertEqual(record.hsps_prelim_gapped, 40)
01892         self.assertEqual(record.hsps_gapped, 65)
01893         self.assertEqual(record.query_length, 369)
01894         self.assertEqual(record.database_length, 29652561)
01895         self.assertEqual(record.effective_hsp_length, 53)
01896         self.assertEqual(record.effective_query_length, 316)
01897         self.assertEqual(record.effective_database_length, 25292887)
01898         self.assertEqual(record.effective_search_space, 7992552292)
01899         self.assertEqual(record.effective_search_space_used, 7992552292)
01900         self.assertEqual(record.threshold, 11)
01901         self.assertEqual(record.window_size, 40)
01902         self.assertEqual(len(record.dropoff_1st_pass), 2)
01903         self.assertEqual(record.dropoff_1st_pass[0], 16)
01904         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.4)
01905         self.assertEqual(len(record.gap_x_dropoff), 2)
01906         self.assertEqual(record.gap_x_dropoff[0], 38)
01907         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
01908         self.assertEqual(len(record.gap_x_dropoff_final), 2)
01909         self.assertEqual(record.gap_x_dropoff_final[0], 64)
01910         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
01911         self.assertEqual(len(record.gap_trigger), 2)
01912         self.assertEqual(record.gap_trigger[0], 41)
01913         self.assertAlmostEqual(record.gap_trigger[1], 21.9)
01914         self.assertEqual(len(record.blast_cutoff), 2)
01915         self.assertEqual(record.blast_cutoff[0], 65)
01916         self.assertAlmostEqual(record.blast_cutoff[1], 29.9)
01917 
01918     def test_bt009(self):
01919         "Test parsing PHI-BLAST, BLASTP 2.0.10 output, two rounds (bt009)"
01920 
01921         path = os.path.join('Blast', 'bt009.txt')
01922         handle = open(path)
01923         record = self.pb_parser.parse(handle)
01924         handle.close()
01925         self.assertEqual(record.application, "BLASTP")
01926         self.assertEqual(record.version, '2.0.10')
01927         self.assertEqual(record.date, "Aug-26-1999")
01928         self.assertEqual(record.reference, TestNCBITextParser.reference)
01929         self.assertEqual(record.query, "gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE\nDEHYDRATASE (IGPD)")
01930         self.assertEqual(record.query_letters, 200)
01931         self.assertEqual(record.database, "data/swissprot")
01932         self.assertEqual(record.database_sequences, 82258)
01933         self.assertEqual(record.database_letters, 29652561)
01934         self.assertEqual(len(record.rounds), 2)
01935         self.assertEqual(len(record.rounds[0].new_seqs), 30)
01936         #Rest of test broken up to avoid Jython JVM limitations
01937         self._check_bt009_round0(record)
01938         self._check_bt009_round1(record)
01939         self._check_bt009_hsps(record)
01940         self._check_bt009_hsps_details(record)
01941         self._check_bt009_footer(record)
01942 
01943     def _check_bt009_round0(self, record):
01944         self.assertEqual(record.rounds[0].new_seqs[0].title, "gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01945         self.assertEqual(record.rounds[0].new_seqs[0].score, 409)
01946         self.assertAlmostEqual(record.rounds[0].new_seqs[0].e, 1.e-114)
01947         self.assertEqual(record.rounds[0].new_seqs[1].title, "gi|462273|sp|P34047|HIS7_ARATH IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01948         self.assertEqual(record.rounds[0].new_seqs[1].score, 198)
01949         self.assertAlmostEqual(record.rounds[0].new_seqs[1].e, 6e-51)
01950         self.assertEqual(record.rounds[0].new_seqs[2].title, "gi|2495230|sp|Q43072|HIS7_PEA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYD...")
01951         self.assertEqual(record.rounds[0].new_seqs[2].score, 196)
01952         self.assertAlmostEqual(record.rounds[0].new_seqs[2].e, 4e-50)
01953         self.assertEqual(record.rounds[0].new_seqs[3].title, "gi|123157|sp|P18787|HIS7_AZOBR IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01954         self.assertEqual(record.rounds[0].new_seqs[3].score, 185)
01955         self.assertAlmostEqual(record.rounds[0].new_seqs[3].e, 5.e-47)
01956         self.assertEqual(record.rounds[0].new_seqs[4].title, "gi|462275|sp|P34048|HIS7_WHEAT IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01957         self.assertEqual(record.rounds[0].new_seqs[4].score, 181)
01958         self.assertAlmostEqual(record.rounds[0].new_seqs[4].e, 8e-46)
01959         self.assertEqual(record.rounds[0].new_seqs[5].title, "gi|123161|sp|P16247|HIS7_STRCO IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01960         self.assertEqual(record.rounds[0].new_seqs[5].score, 178)
01961         self.assertAlmostEqual(record.rounds[0].new_seqs[5].e, 7e-45)
01962         self.assertEqual(record.rounds[0].new_seqs[6].title, "gi|462272|sp|Q05068|HIS7_ANASP IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01963         self.assertEqual(record.rounds[0].new_seqs[6].score, 178)
01964         self.assertAlmostEqual(record.rounds[0].new_seqs[6].e, 7e-45)
01965         self.assertEqual(record.rounds[0].new_seqs[7].title, "gi|123158|sp|P06987|HIS7_ECOLI HISTIDINE BIOSYNTHESIS BIFUNCTIO...")
01966         self.assertEqual(record.rounds[0].new_seqs[7].score, 175)
01967         self.assertAlmostEqual(record.rounds[0].new_seqs[7].e, 8e-44)
01968         self.assertEqual(record.rounds[0].new_seqs[8].title, "gi|1346293|sp|P48054|HIS7_SYNY3 IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
01969         self.assertEqual(record.rounds[0].new_seqs[8].score, 174)
01970         self.assertAlmostEqual(record.rounds[0].new_seqs[8].e, 1e-43)
01971         self.assertEqual(record.rounds[0].new_seqs[9].title, "gi|1170286|sp|P44327|HIS7_HAEIN HISTIDINE BIOSYNTHESIS BIFUNCTI...")
01972         self.assertEqual(record.rounds[0].new_seqs[9].score, 168)
01973         self.assertAlmostEqual(record.rounds[0].new_seqs[9].e, 8e-42)
01974         self.assertEqual(record.rounds[0].new_seqs[10].title, "gi|2495224|sp|O06590|HIS7_MYCTU IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
01975         self.assertEqual(record.rounds[0].new_seqs[10].score, 167)
01976         self.assertAlmostEqual(record.rounds[0].new_seqs[10].e, 2e-41)
01977         self.assertEqual(record.rounds[0].new_seqs[11].title, "gi|123160|sp|P10368|HIS7_SALTY HISTIDINE BIOSYNTHESIS BIFUNCTIO...")
01978         self.assertEqual(record.rounds[0].new_seqs[11].score, 166)
01979         self.assertAlmostEqual(record.rounds[0].new_seqs[11].e, 2e-41)
01980         self.assertEqual(record.rounds[0].new_seqs[12].title, "gi|2495226|sp|Q50504|HIS7_METTH PROBABLE IMIDAZOLEGLYCEROL-PHOS...")
01981         self.assertEqual(record.rounds[0].new_seqs[12].score, 153)
01982         self.assertAlmostEqual(record.rounds[0].new_seqs[12].e, 3e-37)
01983         self.assertEqual(record.rounds[0].new_seqs[13].title, "gi|729718|sp|P40919|HIS7_CRYNE IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01984         self.assertEqual(record.rounds[0].new_seqs[13].score, 152)
01985         self.assertAlmostEqual(record.rounds[0].new_seqs[13].e, 7e-37)
01986         self.assertEqual(record.rounds[0].new_seqs[14].title, "gi|3334215|sp|O33773|HIS7_SULSO PROBABLE IMIDAZOLEGLYCEROL-PHOS...")
01987         self.assertEqual(record.rounds[0].new_seqs[14].score, 151)
01988         self.assertAlmostEqual(record.rounds[0].new_seqs[14].e, 9e-37)
01989         self.assertEqual(record.rounds[0].new_seqs[15].title, "gi|123159|sp|P28624|HIS7_PHYPR IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01990         self.assertEqual(record.rounds[0].new_seqs[15].score, 149)
01991         self.assertAlmostEqual(record.rounds[0].new_seqs[15].e, 3e-36)
01992         self.assertEqual(record.rounds[0].new_seqs[16].title, "gi|729719|sp|P40374|HIS7_SCHPO IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
01993         self.assertEqual(record.rounds[0].new_seqs[16].score, 136)
01994         self.assertAlmostEqual(record.rounds[0].new_seqs[16].e, 3e-32)
01995         self.assertEqual(record.rounds[0].new_seqs[17].title, "gi|2495227|sp|P56090|HIS7_CANAL IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
01996         self.assertEqual(record.rounds[0].new_seqs[17].score, 128)
01997         self.assertAlmostEqual(record.rounds[0].new_seqs[17].e, 9e-30)
01998         self.assertEqual(record.rounds[0].new_seqs[18].title, "gi|2495225|sp|Q58109|HIS7_METJA PROBABLE IMIDAZOLEGLYCEROL-PHOS...")
01999         self.assertEqual(record.rounds[0].new_seqs[18].score, 126)
02000         self.assertAlmostEqual(record.rounds[0].new_seqs[18].e, 4e-29)
02001         self.assertEqual(record.rounds[0].new_seqs[19].title, "gi|399897|sp|Q02986|HIS7_SACKL IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
02002         self.assertEqual(record.rounds[0].new_seqs[19].score, 125)
02003         self.assertAlmostEqual(record.rounds[0].new_seqs[19].e, 6e-29)
02004         self.assertEqual(record.rounds[0].new_seqs[20].title, "gi|2495229|sp|Q92447|HIS7_PICPA IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
02005         self.assertEqual(record.rounds[0].new_seqs[20].score, 125)
02006         self.assertAlmostEqual(record.rounds[0].new_seqs[20].e, 6e-29)
02007         self.assertEqual(record.rounds[0].new_seqs[21].title, "gi|2495228|sp|Q12578|HIS7_CANGA IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
02008         self.assertEqual(record.rounds[0].new_seqs[21].score, 123)
02009         self.assertAlmostEqual(record.rounds[0].new_seqs[21].e, 2e-28)
02010         self.assertEqual(record.rounds[0].new_seqs[22].title, "gi|2506514|sp|P06633|HIS7_YEAST IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
02011         self.assertEqual(record.rounds[0].new_seqs[22].score, 122)
02012         self.assertAlmostEqual(record.rounds[0].new_seqs[22].e, 4e-28)
02013         self.assertEqual(record.rounds[0].new_seqs[23].title, "gi|462274|sp|P34041|HIS7_TRIHA IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
02014         self.assertEqual(record.rounds[0].new_seqs[23].score, 106)
02015         self.assertAlmostEqual(record.rounds[0].new_seqs[23].e, 3e-23)
02016         self.assertEqual(record.rounds[0].new_seqs[24].title, "gi|1345641|sp|P49264|C7B1_THLAR CYTOCHROME P450 71B1 (CYPLXXIB1)")
02017         self.assertEqual(record.rounds[0].new_seqs[24].score, 35)
02018         self.assertAlmostEqual(record.rounds[0].new_seqs[24].e, 0.13)
02019         self.assertEqual(record.rounds[0].new_seqs[25].title, "gi|1731346|sp|Q10698|YY29_MYCTU PROBABLE DIPEPTIDASE CY49.29C")
02020         self.assertEqual(record.rounds[0].new_seqs[25].score, 32)
02021         self.assertAlmostEqual(record.rounds[0].new_seqs[25].e, 1.1)
02022         self.assertEqual(record.rounds[0].new_seqs[26].title, "gi|3287839|sp|Q01812|GLK4_RAT GLUTAMATE RECEPTOR, IONOTROPIC KA...")
02023         self.assertEqual(record.rounds[0].new_seqs[26].score, 30)
02024         self.assertAlmostEqual(record.rounds[0].new_seqs[26].e, 3.3)
02025         self.assertEqual(record.rounds[0].new_seqs[27].title, "gi|3123025|sp|Q94637|VIT6_OSCBR VITELLOGENIN 6 PRECURSOR")
02026         self.assertEqual(record.rounds[0].new_seqs[27].score, 29)
02027         self.assertAlmostEqual(record.rounds[0].new_seqs[27].e, 5.6)
02028         self.assertEqual(record.rounds[0].new_seqs[28].title, "gi|3287848|sp|Q16099|GLK4_HUMAN GLUTAMATE RECEPTOR, IONOTROPIC ...")
02029         self.assertEqual(record.rounds[0].new_seqs[28].score, 29)
02030         self.assertAlmostEqual(record.rounds[0].new_seqs[28].e, 9.7)
02031         self.assertEqual(record.rounds[0].new_seqs[29].title, "gi|1174406|sp|P36126|SP14_YEAST PHOSPHOLIPASE D1 (PLD 1) (CHOLI...")
02032         self.assertEqual(record.rounds[0].new_seqs[29].score, 29)
02033         self.assertAlmostEqual(record.rounds[0].new_seqs[29].e, 9.7)
02034         self.assertEqual(len(record.rounds[0].alignments), 30)
02035         self.assertEqual(record.rounds[0].alignments[0].title, ">gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02036         self.assertEqual(record.rounds[0].alignments[0].length, 200)
02037         self.assertEqual(record.rounds[0].alignments[1].title, ">gi|462273|sp|P34047|HIS7_ARATH IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02038         self.assertEqual(record.rounds[0].alignments[1].length, 270)
02039         self.assertEqual(record.rounds[0].alignments[2].title, ">gi|2495230|sp|Q43072|HIS7_PEA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02040         self.assertEqual(record.rounds[0].alignments[2].length, 281)
02041         self.assertEqual(record.rounds[0].alignments[3].title, ">gi|123157|sp|P18787|HIS7_AZOBR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02042         self.assertEqual(record.rounds[0].alignments[3].length, 207)
02043         self.assertEqual(record.rounds[0].alignments[4].title, ">gi|462275|sp|P34048|HIS7_WHEAT IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02044         self.assertEqual(record.rounds[0].alignments[4].length, 195)
02045         self.assertEqual(record.rounds[0].alignments[5].title, ">gi|123161|sp|P16247|HIS7_STRCO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02046         self.assertEqual(record.rounds[0].alignments[5].length, 197)
02047         self.assertEqual(record.rounds[0].alignments[6].title, ">gi|462272|sp|Q05068|HIS7_ANASP IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02048         self.assertEqual(record.rounds[0].alignments[6].length, 209)
02049         self.assertEqual(record.rounds[0].alignments[7].title, ">gi|123158|sp|P06987|HIS7_ECOLI HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
02050         self.assertEqual(record.rounds[0].alignments[7].length, 355)
02051         self.assertEqual(record.rounds[0].alignments[8].title, ">gi|1346293|sp|P48054|HIS7_SYNY3 IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02052         self.assertEqual(record.rounds[0].alignments[8].length, 210)
02053         self.assertEqual(record.rounds[0].alignments[9].title, ">gi|1170286|sp|P44327|HIS7_HAEIN HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
02054         self.assertEqual(record.rounds[0].alignments[9].length, 362)
02055         self.assertEqual(record.rounds[0].alignments[10].title, ">gi|2495224|sp|O06590|HIS7_MYCTU IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02056         self.assertEqual(record.rounds[0].alignments[10].length, 210)
02057         self.assertEqual(record.rounds[0].alignments[11].title, ">gi|123160|sp|P10368|HIS7_SALTY HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
02058         self.assertEqual(record.rounds[0].alignments[11].length, 354)
02059         self.assertEqual(record.rounds[0].alignments[12].title, ">gi|2495226|sp|Q50504|HIS7_METTH PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02060         self.assertEqual(record.rounds[0].alignments[12].length, 194)
02061         self.assertEqual(record.rounds[0].alignments[13].title, ">gi|729718|sp|P40919|HIS7_CRYNE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02062         self.assertEqual(record.rounds[0].alignments[13].length, 202)
02063         self.assertEqual(record.rounds[0].alignments[14].title, ">gi|3334215|sp|O33773|HIS7_SULSO PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02064         self.assertEqual(record.rounds[0].alignments[14].length, 193)
02065         self.assertEqual(record.rounds[0].alignments[15].title, ">gi|123159|sp|P28624|HIS7_PHYPR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02066         self.assertEqual(record.rounds[0].alignments[15].length, 452)
02067         self.assertEqual(record.rounds[0].alignments[16].title, ">gi|729719|sp|P40374|HIS7_SCHPO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02068         self.assertEqual(record.rounds[0].alignments[16].length, 216)
02069         self.assertEqual(record.rounds[0].alignments[17].title, ">gi|2495227|sp|P56090|HIS7_CANAL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02070         self.assertEqual(record.rounds[0].alignments[17].length, 223)
02071         self.assertEqual(record.rounds[0].alignments[18].title, ">gi|2495225|sp|Q58109|HIS7_METJA PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02072         self.assertEqual(record.rounds[0].alignments[18].length, 197)
02073         self.assertEqual(record.rounds[0].alignments[19].title, ">gi|399897|sp|Q02986|HIS7_SACKL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02074         self.assertEqual(record.rounds[0].alignments[19].length, 232)
02075         self.assertEqual(record.rounds[0].alignments[20].title, ">gi|2495229|sp|Q92447|HIS7_PICPA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02076         self.assertEqual(record.rounds[0].alignments[20].length, 224)
02077         self.assertEqual(record.rounds[0].alignments[21].title, ">gi|2495228|sp|Q12578|HIS7_CANGA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02078         self.assertEqual(record.rounds[0].alignments[21].length, 210)
02079         self.assertEqual(record.rounds[0].alignments[22].title, ">gi|2506514|sp|P06633|HIS7_YEAST IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02080         self.assertEqual(record.rounds[0].alignments[22].length, 220)
02081         self.assertEqual(record.rounds[0].alignments[23].title, ">gi|462274|sp|P34041|HIS7_TRIHA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02082         self.assertEqual(record.rounds[0].alignments[23].length, 208)
02083         self.assertEqual(record.rounds[0].alignments[24].title, ">gi|1345641|sp|P49264|C7B1_THLAR CYTOCHROME P450 71B1 (CYPLXXIB1)")
02084         self.assertEqual(record.rounds[0].alignments[24].length, 496)
02085         self.assertEqual(record.rounds[0].alignments[25].title, ">gi|1731346|sp|Q10698|YY29_MYCTU PROBABLE DIPEPTIDASE CY49.29C")
02086         self.assertEqual(record.rounds[0].alignments[25].length, 375)
02087         self.assertEqual(record.rounds[0].alignments[26].title, ">gi|3287839|sp|Q01812|GLK4_RAT GLUTAMATE RECEPTOR, IONOTROPIC KAINATE 4 PRECURSOR (GLUTAMATE RECEPTOR KA-1) (KA1)")
02088         self.assertEqual(record.rounds[0].alignments[26].length, 956)
02089         self.assertEqual(record.rounds[0].alignments[27].title, ">gi|3123025|sp|Q94637|VIT6_OSCBR VITELLOGENIN 6 PRECURSOR")
02090         self.assertEqual(record.rounds[0].alignments[27].length, 1660)
02091         self.assertEqual(record.rounds[0].alignments[28].title, ">gi|3287848|sp|Q16099|GLK4_HUMAN GLUTAMATE RECEPTOR, IONOTROPIC KAINATE 4 PRECURSOR (GLUTAMATE RECEPTOR KA-1) (KA1) (EXCITATORY AMINO ACID RECEPTOR 1) (EAA1)")
02092         self.assertEqual(record.rounds[0].alignments[28].length, 956)
02093         self.assertEqual(record.rounds[0].alignments[29].title, ">gi|1174406|sp|P36126|SP14_YEAST PHOSPHOLIPASE D1 (PLD 1) (CHOLINE PHOSPHATASE 1) (PHOSPHATIDYLCHOLINE-HYDROLYZING PHOSPHOLIPASE D1) (MEIOSIS-SPECIFIC SPORULATION PROTEIN SPO14)")
02094         self.assertEqual(record.rounds[0].alignments[29].length, 1380)
02095 
02096     def _check_bt009_round1(self, record):
02097         self.assertEqual(len(record.rounds[1].new_seqs), 0)
02098         self.assertEqual(len(record.rounds[1].alignments), 24)
02099         self.assertEqual(record.rounds[1].alignments[0].title, ">gi|2495230|sp|Q43072|HIS7_PEA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02100         self.assertEqual(record.rounds[1].alignments[0].length, 281)
02101         self.assertEqual(record.rounds[1].alignments[1].title, ">gi|462273|sp|P34047|HIS7_ARATH IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02102         self.assertEqual(record.rounds[1].alignments[1].length, 270)
02103         self.assertEqual(record.rounds[1].alignments[2].title, ">gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02104         self.assertEqual(record.rounds[1].alignments[2].length, 200)
02105         self.assertEqual(record.rounds[1].alignments[3].title, ">gi|1346293|sp|P48054|HIS7_SYNY3 IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02106         self.assertEqual(record.rounds[1].alignments[3].length, 210)
02107         self.assertEqual(record.rounds[1].alignments[4].title, ">gi|462272|sp|Q05068|HIS7_ANASP IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02108         self.assertEqual(record.rounds[1].alignments[4].length, 209)
02109         self.assertEqual(record.rounds[1].alignments[5].title, ">gi|462275|sp|P34048|HIS7_WHEAT IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02110         self.assertEqual(record.rounds[1].alignments[5].length, 195)
02111         self.assertEqual(record.rounds[1].alignments[6].title, ">gi|123161|sp|P16247|HIS7_STRCO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02112         self.assertEqual(record.rounds[1].alignments[6].length, 197)
02113         self.assertEqual(record.rounds[1].alignments[7].title, ">gi|2506514|sp|P06633|HIS7_YEAST IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02114         self.assertEqual(record.rounds[1].alignments[7].length, 220)
02115         self.assertEqual(record.rounds[1].alignments[8].title, ">gi|2495227|sp|P56090|HIS7_CANAL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02116         self.assertEqual(record.rounds[1].alignments[8].length, 223)
02117         self.assertEqual(record.rounds[1].alignments[9].title, ">gi|399897|sp|Q02986|HIS7_SACKL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02118         self.assertEqual(record.rounds[1].alignments[9].length, 232)
02119         self.assertEqual(record.rounds[1].alignments[10].title, ">gi|2495228|sp|Q12578|HIS7_CANGA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02120         self.assertEqual(record.rounds[1].alignments[10].length, 210)
02121         self.assertEqual(record.rounds[1].alignments[11].title, ">gi|123158|sp|P06987|HIS7_ECOLI HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
02122         self.assertEqual(record.rounds[1].alignments[11].length, 355)
02123         self.assertEqual(record.rounds[1].alignments[12].title, ">gi|123157|sp|P18787|HIS7_AZOBR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02124         self.assertEqual(record.rounds[1].alignments[12].length, 207)
02125         self.assertEqual(record.rounds[1].alignments[13].title, ">gi|729718|sp|P40919|HIS7_CRYNE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02126         self.assertEqual(record.rounds[1].alignments[13].length, 202)
02127         self.assertEqual(record.rounds[1].alignments[14].title, ">gi|2495229|sp|Q92447|HIS7_PICPA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02128         self.assertEqual(record.rounds[1].alignments[14].length, 224)
02129         self.assertEqual(record.rounds[1].alignments[15].title, ">gi|1170286|sp|P44327|HIS7_HAEIN HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
02130         self.assertEqual(record.rounds[1].alignments[15].length, 362)
02131         self.assertEqual(record.rounds[1].alignments[16].title, ">gi|729719|sp|P40374|HIS7_SCHPO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02132         self.assertEqual(record.rounds[1].alignments[16].length, 216)
02133         self.assertEqual(record.rounds[1].alignments[17].title, ">gi|123159|sp|P28624|HIS7_PHYPR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02134         self.assertEqual(record.rounds[1].alignments[17].length, 452)
02135         self.assertEqual(record.rounds[1].alignments[18].title, ">gi|123160|sp|P10368|HIS7_SALTY HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
02136         self.assertEqual(record.rounds[1].alignments[18].length, 354)
02137         self.assertEqual(record.rounds[1].alignments[19].title, ">gi|2495224|sp|O06590|HIS7_MYCTU IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02138         self.assertEqual(record.rounds[1].alignments[19].length, 210)
02139         self.assertEqual(record.rounds[1].alignments[20].title, ">gi|2495226|sp|Q50504|HIS7_METTH PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02140         self.assertEqual(record.rounds[1].alignments[20].length, 194)
02141         self.assertEqual(record.rounds[1].alignments[21].title, ">gi|2495225|sp|Q58109|HIS7_METJA PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02142         self.assertEqual(record.rounds[1].alignments[21].length, 197)
02143         self.assertEqual(record.rounds[1].alignments[22].title, ">gi|462274|sp|P34041|HIS7_TRIHA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02144         self.assertEqual(record.rounds[1].alignments[22].length, 208)
02145         self.assertEqual(record.rounds[1].alignments[23].title, ">gi|3334215|sp|O33773|HIS7_SULSO PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
02146         self.assertEqual(record.rounds[1].alignments[23].length, 193)
02147         self.assertEqual(record.rounds[0].alignments[0].hsps[0].score, 1040)
02148 
02149     def _check_bt009_hsps(self, record):
02150         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].bits, 409)
02151         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].expect, 1e-114)
02152         self.assertEqual(len(record.rounds[0].alignments[0].hsps), 1)
02153         self.assertEqual(record.rounds[0].alignments[1].hsps[0].score, 499)
02154         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].bits, 198)
02155         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].expect, 6e-51)
02156         self.assertEqual(len(record.rounds[0].alignments[1].hsps), 1)
02157         self.assertEqual(record.rounds[0].alignments[2].hsps[0].score, 492)
02158         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].bits, 196)
02159         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].expect, 4e-50)
02160         self.assertEqual(len(record.rounds[0].alignments[2].hsps), 1)
02161         self.assertEqual(record.rounds[0].alignments[3].hsps[0].score, 465)
02162         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].bits, 185)
02163         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].expect, 5e-47)
02164         self.assertEqual(len(record.rounds[0].alignments[3].hsps), 1)
02165         self.assertEqual(record.rounds[0].alignments[4].hsps[0].score, 455)
02166         self.assertAlmostEqual(record.rounds[0].alignments[4].hsps[0].bits, 181)
02167         self.assertAlmostEqual(record.rounds[0].alignments[4].hsps[0].expect, 8e-46)
02168         self.assertEqual(len(record.rounds[0].alignments[4].hsps), 1)
02169         self.assertEqual(record.rounds[0].alignments[5].hsps[0].score, 447)
02170         self.assertAlmostEqual(record.rounds[0].alignments[5].hsps[0].bits, 178)
02171         self.assertAlmostEqual(record.rounds[0].alignments[5].hsps[0].expect, 7e-45)
02172         self.assertEqual(len(record.rounds[0].alignments[5].hsps), 1)
02173         self.assertEqual(record.rounds[0].alignments[6].hsps[0].score, 447)
02174         self.assertAlmostEqual(record.rounds[0].alignments[6].hsps[0].bits, 178)
02175         self.assertAlmostEqual(record.rounds[0].alignments[6].hsps[0].expect, 7e-45)
02176         self.assertEqual(len(record.rounds[0].alignments[6].hsps), 1)
02177         self.assertEqual(record.rounds[0].alignments[7].hsps[0].score, 438)
02178         self.assertAlmostEqual(record.rounds[0].alignments[7].hsps[0].bits, 175)
02179         self.assertAlmostEqual(record.rounds[0].alignments[7].hsps[0].expect, 8e-44)
02180         self.assertEqual(len(record.rounds[0].alignments[7].hsps), 1)
02181         self.assertEqual(record.rounds[0].alignments[8].hsps[0].score, 437)
02182         self.assertAlmostEqual(record.rounds[0].alignments[8].hsps[0].bits, 174)
02183         self.assertAlmostEqual(record.rounds[0].alignments[8].hsps[0].expect, 1e-43)
02184         self.assertEqual(len(record.rounds[0].alignments[8].hsps), 1)
02185         self.assertEqual(record.rounds[0].alignments[9].hsps[0].score, 421)
02186         self.assertAlmostEqual(record.rounds[0].alignments[9].hsps[0].bits, 168)
02187         self.assertAlmostEqual(record.rounds[0].alignments[9].hsps[0].expect, 8e-42)
02188         self.assertEqual(len(record.rounds[0].alignments[9].hsps), 1)
02189         self.assertEqual(record.rounds[0].alignments[10].hsps[0].score, 418)
02190         self.assertAlmostEqual(record.rounds[0].alignments[10].hsps[0].bits, 167)
02191         self.assertAlmostEqual(record.rounds[0].alignments[10].hsps[0].expect, 2e-41)
02192         self.assertEqual(len(record.rounds[0].alignments[10].hsps), 1)
02193         self.assertEqual(record.rounds[0].alignments[11].hsps[0].score, 417)
02194         self.assertAlmostEqual(record.rounds[0].alignments[11].hsps[0].bits, 166)
02195         self.assertAlmostEqual(record.rounds[0].alignments[11].hsps[0].expect, 2e-41)
02196         self.assertEqual(len(record.rounds[0].alignments[11].hsps), 1)
02197         self.assertEqual(record.rounds[0].alignments[12].hsps[0].score, 382)
02198         self.assertAlmostEqual(record.rounds[0].alignments[12].hsps[0].bits, 153)
02199         self.assertAlmostEqual(record.rounds[0].alignments[12].hsps[0].expect, 3e-37)
02200         self.assertEqual(len(record.rounds[0].alignments[12].hsps), 1)
02201         self.assertEqual(record.rounds[0].alignments[13].hsps[0].score, 379)
02202         self.assertAlmostEqual(record.rounds[0].alignments[13].hsps[0].bits, 152)
02203         self.assertAlmostEqual(record.rounds[0].alignments[13].hsps[0].expect, 7e-37)
02204         self.assertEqual(len(record.rounds[0].alignments[13].hsps), 1)
02205         self.assertEqual(record.rounds[0].alignments[14].hsps[0].score, 378)
02206         self.assertAlmostEqual(record.rounds[0].alignments[14].hsps[0].bits, 151)
02207         self.assertAlmostEqual(record.rounds[0].alignments[14].hsps[0].expect, 9e-37)
02208         self.assertEqual(len(record.rounds[0].alignments[14].hsps), 1)
02209         self.assertEqual(record.rounds[0].alignments[15].hsps[0].score, 373)
02210         self.assertAlmostEqual(record.rounds[0].alignments[15].hsps[0].bits, 149)
02211         self.assertAlmostEqual(record.rounds[0].alignments[15].hsps[0].expect, 3e-36)
02212         self.assertEqual(len(record.rounds[0].alignments[15].hsps), 1)
02213         self.assertEqual(record.rounds[0].alignments[16].hsps[0].score, 339)
02214         self.assertAlmostEqual(record.rounds[0].alignments[16].hsps[0].bits, 136)
02215         self.assertAlmostEqual(record.rounds[0].alignments[16].hsps[0].expect, 3e-32)
02216         self.assertEqual(len(record.rounds[0].alignments[16].hsps), 1)
02217         self.assertEqual(record.rounds[0].alignments[17].hsps[0].score, 318)
02218         self.assertAlmostEqual(record.rounds[0].alignments[17].hsps[0].bits, 128)
02219         self.assertAlmostEqual(record.rounds[0].alignments[17].hsps[0].expect, 9e-30)
02220         self.assertEqual(len(record.rounds[0].alignments[17].hsps), 1)
02221         self.assertEqual(record.rounds[0].alignments[18].hsps[0].score, 313)
02222         self.assertAlmostEqual(record.rounds[0].alignments[18].hsps[0].bits, 126)
02223         self.assertAlmostEqual(record.rounds[0].alignments[18].hsps[0].expect, 4e-29)
02224         self.assertEqual(len(record.rounds[0].alignments[18].hsps), 1)
02225         self.assertEqual(record.rounds[0].alignments[19].hsps[0].score, 311)
02226         self.assertAlmostEqual(record.rounds[0].alignments[19].hsps[0].bits, 125)
02227         self.assertAlmostEqual(record.rounds[0].alignments[19].hsps[0].expect, 6e-29)
02228         self.assertEqual(len(record.rounds[0].alignments[19].hsps), 1)
02229         self.assertEqual(record.rounds[0].alignments[20].hsps[0].score, 311)
02230         self.assertAlmostEqual(record.rounds[0].alignments[20].hsps[0].bits, 125)
02231         self.assertAlmostEqual(record.rounds[0].alignments[20].hsps[0].expect, 6e-29)
02232         self.assertEqual(len(record.rounds[0].alignments[20].hsps), 1)
02233         self.assertEqual(record.rounds[0].alignments[21].hsps[0].score, 306)
02234         self.assertAlmostEqual(record.rounds[0].alignments[21].hsps[0].bits, 123)
02235         self.assertAlmostEqual(record.rounds[0].alignments[21].hsps[0].expect, 2e-28)
02236         self.assertEqual(len(record.rounds[0].alignments[21].hsps), 1)
02237         self.assertEqual(record.rounds[0].alignments[22].hsps[0].score, 304)
02238         self.assertAlmostEqual(record.rounds[0].alignments[22].hsps[0].bits, 122)
02239         self.assertAlmostEqual(record.rounds[0].alignments[22].hsps[0].expect, 4e-28)
02240         self.assertEqual(len(record.rounds[0].alignments[22].hsps), 1)
02241         self.assertEqual(record.rounds[0].alignments[23].hsps[0].score, 263)
02242         self.assertAlmostEqual(record.rounds[0].alignments[23].hsps[0].bits, 106)
02243         self.assertAlmostEqual(record.rounds[0].alignments[23].hsps[0].expect, 3e-23)
02244         self.assertEqual(len(record.rounds[0].alignments[23].hsps), 1)
02245         self.assertEqual(record.rounds[0].alignments[24].hsps[0].score, 78)
02246         self.assertAlmostEqual(record.rounds[0].alignments[24].hsps[0].bits, 34.8)
02247         self.assertAlmostEqual(record.rounds[0].alignments[24].hsps[0].expect, 0.13)
02248         self.assertEqual(len(record.rounds[0].alignments[24].hsps), 1)
02249         self.assertEqual(record.rounds[0].alignments[25].hsps[0].score, 70)
02250         self.assertAlmostEqual(record.rounds[0].alignments[25].hsps[0].bits, 31.7)
02251         self.assertAlmostEqual(record.rounds[0].alignments[25].hsps[0].expect, 1.1)
02252         self.assertEqual(len(record.rounds[0].alignments[25].hsps), 1)
02253         self.assertEqual(record.rounds[0].alignments[26].hsps[0].score, 66)
02254         self.assertAlmostEqual(record.rounds[0].alignments[26].hsps[0].bits, 30.1)
02255         self.assertAlmostEqual(record.rounds[0].alignments[26].hsps[0].expect, 3.3)
02256         self.assertEqual(len(record.rounds[0].alignments[26].hsps), 1)
02257         self.assertEqual(record.rounds[0].alignments[27].hsps[0].score, 64)
02258         self.assertAlmostEqual(record.rounds[0].alignments[27].hsps[0].bits, 29.3)
02259         self.assertAlmostEqual(record.rounds[0].alignments[27].hsps[0].expect, 5.6)
02260         self.assertEqual(len(record.rounds[0].alignments[27].hsps), 1)
02261         self.assertEqual(record.rounds[0].alignments[28].hsps[0].score, 62)
02262         self.assertAlmostEqual(record.rounds[0].alignments[28].hsps[0].bits, 28.6)
02263         self.assertAlmostEqual(record.rounds[0].alignments[28].hsps[0].expect, 9.7)
02264         self.assertEqual(len(record.rounds[0].alignments[28].hsps), 1)
02265         self.assertEqual(record.rounds[0].alignments[29].hsps[0].score, 62)
02266         self.assertAlmostEqual(record.rounds[0].alignments[29].hsps[0].bits, 28.6)
02267         self.assertAlmostEqual(record.rounds[0].alignments[29].hsps[0].expect, 9.7)
02268         self.assertEqual(record.rounds[1].alignments[0].hsps[0].score, 820)
02269         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].bits, 323)
02270         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].expect, 1e-88)
02271         self.assertEqual(len(record.rounds[1].alignments[0].hsps), 1)
02272         self.assertEqual(record.rounds[1].alignments[1].hsps[0].score, 817)
02273         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].bits, 322)
02274         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].expect, 3e-88)
02275         self.assertEqual(len(record.rounds[1].alignments[1].hsps), 1)
02276         self.assertEqual(record.rounds[1].alignments[2].hsps[0].score, 808)
02277         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].bits, 318)
02278         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].expect, 4e-87)
02279         self.assertEqual(len(record.rounds[1].alignments[2].hsps), 1)
02280         self.assertEqual(record.rounds[1].alignments[3].hsps[0].score, 798)
02281         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].bits, 315)
02282         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].expect, 5e-86)
02283         self.assertEqual(len(record.rounds[1].alignments[3].hsps), 1)
02284         self.assertEqual(record.rounds[1].alignments[4].hsps[0].score, 795)
02285         self.assertAlmostEqual(record.rounds[1].alignments[4].hsps[0].bits, 313)
02286         self.assertAlmostEqual(record.rounds[1].alignments[4].hsps[0].expect, 1e-85)
02287         self.assertEqual(len(record.rounds[1].alignments[4].hsps), 1)
02288         self.assertEqual(record.rounds[1].alignments[5].hsps[0].score, 793)
02289         self.assertAlmostEqual(record.rounds[1].alignments[5].hsps[0].bits, 313)
02290         self.assertAlmostEqual(record.rounds[1].alignments[5].hsps[0].expect, 2e-85)
02291         self.assertEqual(len(record.rounds[1].alignments[5].hsps), 1)
02292         self.assertEqual(record.rounds[1].alignments[6].hsps[0].score, 776)
02293         self.assertAlmostEqual(record.rounds[1].alignments[6].hsps[0].bits, 306)
02294         self.assertAlmostEqual(record.rounds[1].alignments[6].hsps[0].expect, 2e-83)
02295         self.assertEqual(len(record.rounds[1].alignments[6].hsps), 1)
02296         self.assertEqual(record.rounds[1].alignments[7].hsps[0].score, 772)
02297         self.assertAlmostEqual(record.rounds[1].alignments[7].hsps[0].bits, 304)
02298         self.assertAlmostEqual(record.rounds[1].alignments[7].hsps[0].expect, 6e-83)
02299         self.assertEqual(len(record.rounds[1].alignments[7].hsps), 1)
02300         self.assertEqual(record.rounds[1].alignments[8].hsps[0].score, 771)
02301         self.assertAlmostEqual(record.rounds[1].alignments[8].hsps[0].bits, 304)
02302         self.assertAlmostEqual(record.rounds[1].alignments[8].hsps[0].expect, 8e-83)
02303         self.assertEqual(len(record.rounds[1].alignments[8].hsps), 1)
02304         self.assertEqual(record.rounds[1].alignments[9].hsps[0].score, 770)
02305         self.assertAlmostEqual(record.rounds[1].alignments[9].hsps[0].bits, 304)
02306         self.assertAlmostEqual(record.rounds[1].alignments[9].hsps[0].expect, 1e-82)
02307         self.assertEqual(len(record.rounds[1].alignments[9].hsps), 1)
02308         self.assertEqual(record.rounds[1].alignments[10].hsps[0].score, 767)
02309         self.assertAlmostEqual(record.rounds[1].alignments[10].hsps[0].bits, 303)
02310         self.assertAlmostEqual(record.rounds[1].alignments[10].hsps[0].expect, 2e-82)
02311         self.assertEqual(len(record.rounds[1].alignments[10].hsps), 1)
02312         self.assertEqual(record.rounds[1].alignments[11].hsps[0].score, 765)
02313         self.assertAlmostEqual(record.rounds[1].alignments[11].hsps[0].bits, 302)
02314         self.assertAlmostEqual(record.rounds[1].alignments[11].hsps[0].expect, 4e-82)
02315         self.assertEqual(len(record.rounds[1].alignments[11].hsps), 1)
02316         self.assertEqual(record.rounds[1].alignments[12].hsps[0].score, 762)
02317         self.assertAlmostEqual(record.rounds[1].alignments[12].hsps[0].bits, 301)
02318         self.assertAlmostEqual(record.rounds[1].alignments[12].hsps[0].expect, 9e-82)
02319         self.assertEqual(len(record.rounds[1].alignments[12].hsps), 1)
02320         self.assertEqual(record.rounds[1].alignments[13].hsps[0].score, 759)
02321         self.assertAlmostEqual(record.rounds[1].alignments[13].hsps[0].bits, 299)
02322         self.assertAlmostEqual(record.rounds[1].alignments[13].hsps[0].expect, 2e-81)
02323         self.assertEqual(len(record.rounds[1].alignments[13].hsps), 1)
02324         self.assertEqual(record.rounds[1].alignments[14].hsps[0].score, 756)
02325         self.assertAlmostEqual(record.rounds[1].alignments[14].hsps[0].bits, 298)
02326         self.assertAlmostEqual(record.rounds[1].alignments[14].hsps[0].expect, 5e-81)
02327         self.assertEqual(len(record.rounds[1].alignments[14].hsps), 1)
02328         self.assertEqual(record.rounds[1].alignments[15].hsps[0].score, 741)
02329         self.assertAlmostEqual(record.rounds[1].alignments[15].hsps[0].bits, 292)
02330         self.assertAlmostEqual(record.rounds[1].alignments[15].hsps[0].expect, 3e-79)
02331         self.assertEqual(len(record.rounds[1].alignments[15].hsps), 1)
02332         self.assertEqual(record.rounds[1].alignments[16].hsps[0].score, 734)
02333         self.assertAlmostEqual(record.rounds[1].alignments[16].hsps[0].bits, 290)
02334         self.assertAlmostEqual(record.rounds[1].alignments[16].hsps[0].expect, 2e-78)
02335         self.assertEqual(len(record.rounds[1].alignments[16].hsps), 1)
02336         self.assertEqual(record.rounds[1].alignments[17].hsps[0].score, 734)
02337         self.assertAlmostEqual(record.rounds[1].alignments[17].hsps[0].bits, 290)
02338         self.assertAlmostEqual(record.rounds[1].alignments[17].hsps[0].expect, 2e-78)
02339         self.assertEqual(len(record.rounds[1].alignments[17].hsps), 1)
02340         self.assertEqual(record.rounds[1].alignments[18].hsps[0].score, 726)
02341         self.assertAlmostEqual(record.rounds[1].alignments[18].hsps[0].bits, 287)
02342         self.assertAlmostEqual(record.rounds[1].alignments[18].hsps[0].expect, 1e-77)
02343         self.assertEqual(len(record.rounds[1].alignments[18].hsps), 1)
02344         self.assertEqual(record.rounds[1].alignments[19].hsps[0].score, 716)
02345         self.assertAlmostEqual(record.rounds[1].alignments[19].hsps[0].bits, 283)
02346         self.assertAlmostEqual(record.rounds[1].alignments[19].hsps[0].expect, 2e-76)
02347         self.assertEqual(len(record.rounds[1].alignments[19].hsps), 1)
02348         self.assertEqual(record.rounds[1].alignments[20].hsps[0].score, 695)
02349         self.assertAlmostEqual(record.rounds[1].alignments[20].hsps[0].bits, 274)
02350         self.assertAlmostEqual(record.rounds[1].alignments[20].hsps[0].expect, 6e-74)
02351         self.assertEqual(len(record.rounds[1].alignments[20].hsps), 1)
02352         self.assertEqual(record.rounds[1].alignments[21].hsps[0].score, 685)
02353         self.assertAlmostEqual(record.rounds[1].alignments[21].hsps[0].bits, 271)
02354         self.assertAlmostEqual(record.rounds[1].alignments[21].hsps[0].expect, 1e-72)
02355         self.assertEqual(len(record.rounds[1].alignments[21].hsps), 1)
02356         self.assertEqual(record.rounds[1].alignments[22].hsps[0].score, 680)
02357         self.assertAlmostEqual(record.rounds[1].alignments[22].hsps[0].bits, 269)
02358         self.assertAlmostEqual(record.rounds[1].alignments[22].hsps[0].expect, 4e-72)
02359         self.assertEqual(len(record.rounds[1].alignments[22].hsps), 1)
02360         self.assertEqual(record.rounds[1].alignments[23].hsps[0].score, 662)
02361         self.assertAlmostEqual(record.rounds[1].alignments[23].hsps[0].bits, 262)
02362         self.assertAlmostEqual(record.rounds[1].alignments[23].hsps[0].expect, 5e-70)
02363         self.assertEqual(len(record.rounds[1].alignments[23].hsps), 1)
02364         self.assertEqual(record.rounds[0].alignments[0].hsps[0].identities, (200, 200))
02365         self.assertEqual(record.rounds[0].alignments[0].hsps[0].positives, (200, 200))
02366         self.assertEqual(record.rounds[0].alignments[1].hsps[0].identities, (99, 198))
02367         self.assertEqual(record.rounds[0].alignments[1].hsps[0].positives, (135, 198))
02368         self.assertEqual(record.rounds[0].alignments[1].hsps[0].gaps, (4, 198))
02369         self.assertEqual(record.rounds[0].alignments[2].hsps[0].identities, (96, 199))
02370         self.assertEqual(record.rounds[0].alignments[2].hsps[0].positives, (136, 199))
02371         self.assertEqual(record.rounds[0].alignments[2].hsps[0].gaps, (4, 199))
02372         self.assertEqual(record.rounds[0].alignments[3].hsps[0].identities, (91, 194))
02373         self.assertEqual(record.rounds[0].alignments[3].hsps[0].positives, (126, 194))
02374         self.assertEqual(record.rounds[0].alignments[3].hsps[0].gaps, (4, 194))
02375         self.assertEqual(record.rounds[0].alignments[4].hsps[0].identities, (93, 194))
02376         self.assertEqual(record.rounds[0].alignments[4].hsps[0].positives, (128, 194))
02377         self.assertEqual(record.rounds[0].alignments[4].hsps[0].gaps, (4, 194))
02378         self.assertEqual(record.rounds[0].alignments[5].hsps[0].identities, (89, 200))
02379         self.assertEqual(record.rounds[0].alignments[5].hsps[0].positives, (124, 200))
02380         self.assertEqual(record.rounds[0].alignments[5].hsps[0].gaps, (3, 200))
02381         self.assertEqual(record.rounds[0].alignments[6].hsps[0].identities, (91, 198))
02382         self.assertEqual(record.rounds[0].alignments[6].hsps[0].positives, (131, 198))
02383         self.assertEqual(record.rounds[0].alignments[6].hsps[0].gaps, (4, 198))
02384         self.assertEqual(record.rounds[0].alignments[7].hsps[0].identities, (91, 198))
02385         self.assertEqual(record.rounds[0].alignments[7].hsps[0].positives, (130, 198))
02386         self.assertEqual(record.rounds[0].alignments[7].hsps[0].gaps, (9, 198))
02387         self.assertEqual(record.rounds[0].alignments[8].hsps[0].identities, (88, 198))
02388         self.assertEqual(record.rounds[0].alignments[8].hsps[0].positives, (129, 198))
02389         self.assertEqual(record.rounds[0].alignments[8].hsps[0].gaps, (4, 198))
02390         self.assertEqual(record.rounds[0].alignments[9].hsps[0].identities, (89, 198))
02391         self.assertEqual(record.rounds[0].alignments[9].hsps[0].positives, (127, 198))
02392         self.assertEqual(record.rounds[0].alignments[9].hsps[0].gaps, (9, 198))
02393         self.assertEqual(record.rounds[0].alignments[10].hsps[0].identities, (92, 207))
02394         self.assertEqual(record.rounds[0].alignments[10].hsps[0].positives, (125, 207))
02395         self.assertEqual(record.rounds[0].alignments[10].hsps[0].gaps, (14, 207))
02396         self.assertEqual(record.rounds[0].alignments[11].hsps[0].identities, (89, 198))
02397         self.assertEqual(record.rounds[0].alignments[11].hsps[0].positives, (129, 198))
02398         self.assertEqual(record.rounds[0].alignments[11].hsps[0].gaps, (10, 198))
02399         self.assertEqual(record.rounds[0].alignments[12].hsps[0].identities, (81, 198))
02400         self.assertEqual(record.rounds[0].alignments[12].hsps[0].positives, (122, 198))
02401         self.assertEqual(record.rounds[0].alignments[12].hsps[0].gaps, (8, 198))
02402         self.assertEqual(record.rounds[0].alignments[13].hsps[0].identities, (83, 203))
02403         self.assertEqual(record.rounds[0].alignments[13].hsps[0].positives, (120, 203))
02404         self.assertEqual(record.rounds[0].alignments[13].hsps[0].gaps, (11, 203))
02405         self.assertEqual(record.rounds[0].alignments[14].hsps[0].identities, (88, 201))
02406         self.assertEqual(record.rounds[0].alignments[14].hsps[0].positives, (128, 201))
02407         self.assertEqual(record.rounds[0].alignments[14].hsps[0].gaps, (9, 201))
02408         self.assertEqual(record.rounds[0].alignments[15].hsps[0].identities, (86, 198))
02409         self.assertEqual(record.rounds[0].alignments[15].hsps[0].positives, (120, 198))
02410         self.assertEqual(record.rounds[0].alignments[15].hsps[0].gaps, (6, 198))
02411         self.assertEqual(record.rounds[0].alignments[16].hsps[0].identities, (84, 221))
02412         self.assertEqual(record.rounds[0].alignments[16].hsps[0].positives, (114, 221))
02413         self.assertEqual(record.rounds[0].alignments[16].hsps[0].gaps, (29, 221))
02414         self.assertEqual(record.rounds[0].alignments[17].hsps[0].identities, (81, 227))
02415         self.assertEqual(record.rounds[0].alignments[17].hsps[0].positives, (119, 227))
02416         self.assertEqual(record.rounds[0].alignments[17].hsps[0].gaps, (33, 227))
02417         self.assertEqual(record.rounds[0].alignments[18].hsps[0].identities, (80, 196))
02418         self.assertEqual(record.rounds[0].alignments[18].hsps[0].positives, (107, 196))
02419         self.assertEqual(record.rounds[0].alignments[18].hsps[0].gaps, (9, 196))
02420         self.assertEqual(record.rounds[0].alignments[19].hsps[0].identities, (81, 222))
02421         self.assertEqual(record.rounds[0].alignments[19].hsps[0].positives, (119, 222))
02422         self.assertEqual(record.rounds[0].alignments[19].hsps[0].gaps, (30, 222))
02423         self.assertEqual(record.rounds[0].alignments[20].hsps[0].identities, (84, 223))
02424         self.assertEqual(record.rounds[0].alignments[20].hsps[0].positives, (116, 223))
02425         self.assertEqual(record.rounds[0].alignments[20].hsps[0].gaps, (31, 223))
02426         self.assertEqual(record.rounds[0].alignments[21].hsps[0].identities, (78, 215))
02427         self.assertEqual(record.rounds[0].alignments[21].hsps[0].positives, (116, 215))
02428         self.assertEqual(record.rounds[0].alignments[21].hsps[0].gaps, (24, 215))
02429         self.assertEqual(record.rounds[0].alignments[22].hsps[0].identities, (79, 218))
02430         self.assertEqual(record.rounds[0].alignments[22].hsps[0].positives, (114, 218))
02431         self.assertEqual(record.rounds[0].alignments[22].hsps[0].gaps, (30, 218))
02432         self.assertEqual(record.rounds[0].alignments[23].hsps[0].identities, (68, 202))
02433         self.assertEqual(record.rounds[0].alignments[23].hsps[0].positives, (102, 202))
02434         self.assertEqual(record.rounds[0].alignments[23].hsps[0].gaps, (28, 202))
02435         self.assertEqual(record.rounds[0].alignments[24].hsps[0].identities, (34, 134))
02436         self.assertEqual(record.rounds[0].alignments[24].hsps[0].positives, (60, 134))
02437         self.assertEqual(record.rounds[0].alignments[24].hsps[0].gaps, (11, 134))
02438         self.assertEqual(record.rounds[0].alignments[25].hsps[0].identities, (16, 45))
02439         self.assertEqual(record.rounds[0].alignments[25].hsps[0].positives, (21, 45))
02440         self.assertEqual(record.rounds[0].alignments[25].hsps[0].gaps, (3, 45))
02441         self.assertEqual(record.rounds[0].alignments[26].hsps[0].identities, (17, 48))
02442         self.assertEqual(record.rounds[0].alignments[26].hsps[0].positives, (24, 48))
02443         self.assertEqual(record.rounds[0].alignments[26].hsps[0].gaps, (3, 48))
02444         self.assertEqual(record.rounds[0].alignments[27].hsps[0].identities, (25, 70))
02445         self.assertEqual(record.rounds[0].alignments[27].hsps[0].positives, (32, 70))
02446         self.assertEqual(record.rounds[0].alignments[27].hsps[0].gaps, (5, 70))
02447         self.assertEqual(record.rounds[0].alignments[28].hsps[0].identities, (16, 48))
02448         self.assertEqual(record.rounds[0].alignments[28].hsps[0].positives, (24, 48))
02449         self.assertEqual(record.rounds[0].alignments[28].hsps[0].gaps, (3, 48))
02450         self.assertEqual(record.rounds[0].alignments[29].hsps[0].identities, (20, 65))
02451         self.assertEqual(record.rounds[0].alignments[29].hsps[0].positives, (31, 65))
02452         self.assertEqual(record.rounds[0].alignments[29].hsps[0].gaps, (7, 65))
02453         self.assertEqual(record.rounds[1].alignments[0].hsps[0].identities, (96, 199))
02454         self.assertEqual(record.rounds[1].alignments[0].hsps[0].positives, (136, 199))
02455         self.assertEqual(record.rounds[1].alignments[0].hsps[0].gaps, (4, 199))
02456         self.assertEqual(record.rounds[1].alignments[1].hsps[0].identities, (99, 198))
02457         self.assertEqual(record.rounds[1].alignments[1].hsps[0].positives, (135, 198))
02458         self.assertEqual(record.rounds[1].alignments[1].hsps[0].gaps, (4, 198))
02459         self.assertEqual(record.rounds[1].alignments[2].hsps[0].identities, (200, 200))
02460         self.assertEqual(record.rounds[1].alignments[2].hsps[0].positives, (200, 200))
02461         self.assertEqual(record.rounds[1].alignments[3].hsps[0].identities, (88, 198))
02462         self.assertEqual(record.rounds[1].alignments[3].hsps[0].positives, (129, 198))
02463         self.assertEqual(record.rounds[1].alignments[3].hsps[0].gaps, (4, 198))
02464         self.assertEqual(record.rounds[1].alignments[4].hsps[0].identities, (91, 198))
02465         self.assertEqual(record.rounds[1].alignments[4].hsps[0].positives, (131, 198))
02466         self.assertEqual(record.rounds[1].alignments[4].hsps[0].gaps, (4, 198))
02467         self.assertEqual(record.rounds[1].alignments[5].hsps[0].identities, (93, 196))
02468         self.assertEqual(record.rounds[1].alignments[5].hsps[0].positives, (128, 196))
02469         self.assertEqual(record.rounds[1].alignments[5].hsps[0].gaps, (4, 196))
02470         self.assertEqual(record.rounds[1].alignments[6].hsps[0].identities, (89, 200))
02471         self.assertEqual(record.rounds[1].alignments[6].hsps[0].positives, (124, 200))
02472         self.assertEqual(record.rounds[1].alignments[6].hsps[0].gaps, (3, 200))
02473         self.assertEqual(record.rounds[1].alignments[7].hsps[0].identities, (78, 220))
02474         self.assertEqual(record.rounds[1].alignments[7].hsps[0].positives, (115, 220))
02475         self.assertEqual(record.rounds[1].alignments[7].hsps[0].gaps, (30, 220))
02476         self.assertEqual(record.rounds[1].alignments[8].hsps[0].identities, (81, 227))
02477         self.assertEqual(record.rounds[1].alignments[8].hsps[0].positives, (119, 227))
02478         self.assertEqual(record.rounds[1].alignments[8].hsps[0].gaps, (33, 227))
02479         self.assertEqual(record.rounds[1].alignments[9].hsps[0].identities, (79, 222))
02480         self.assertEqual(record.rounds[1].alignments[9].hsps[0].positives, (118, 222))
02481         self.assertEqual(record.rounds[1].alignments[9].hsps[0].gaps, (30, 222))
02482         self.assertEqual(record.rounds[1].alignments[10].hsps[0].identities, (76, 214))
02483         self.assertEqual(record.rounds[1].alignments[10].hsps[0].positives, (113, 214))
02484         self.assertEqual(record.rounds[1].alignments[10].hsps[0].gaps, (24, 214))
02485         self.assertEqual(record.rounds[1].alignments[11].hsps[0].identities, (91, 198))
02486         self.assertEqual(record.rounds[1].alignments[11].hsps[0].positives, (130, 198))
02487         self.assertEqual(record.rounds[1].alignments[11].hsps[0].gaps, (9, 198))
02488         self.assertEqual(record.rounds[1].alignments[12].hsps[0].identities, (91, 196))
02489         self.assertEqual(record.rounds[1].alignments[12].hsps[0].positives, (127, 196))
02490         self.assertEqual(record.rounds[1].alignments[12].hsps[0].gaps, (4, 196))
02491         self.assertEqual(record.rounds[1].alignments[13].hsps[0].identities, (83, 203))
02492         self.assertEqual(record.rounds[1].alignments[13].hsps[0].positives, (120, 203))
02493         self.assertEqual(record.rounds[1].alignments[13].hsps[0].gaps, (11, 203))
02494         self.assertEqual(record.rounds[1].alignments[14].hsps[0].identities, (82, 223))
02495         self.assertEqual(record.rounds[1].alignments[14].hsps[0].positives, (115, 223))
02496         self.assertEqual(record.rounds[1].alignments[14].hsps[0].gaps, (31, 223))
02497         self.assertEqual(record.rounds[1].alignments[15].hsps[0].identities, (89, 198))
02498         self.assertEqual(record.rounds[1].alignments[15].hsps[0].positives, (127, 198))
02499         self.assertEqual(record.rounds[1].alignments[15].hsps[0].gaps, (9, 198))
02500         self.assertEqual(record.rounds[1].alignments[16].hsps[0].identities, (83, 221))
02501         self.assertEqual(record.rounds[1].alignments[16].hsps[0].positives, (114, 221))
02502         self.assertEqual(record.rounds[1].alignments[16].hsps[0].gaps, (29, 221))
02503         self.assertEqual(record.rounds[1].alignments[17].hsps[0].identities, (86, 199))
02504         self.assertEqual(record.rounds[1].alignments[17].hsps[0].positives, (121, 199))
02505         self.assertEqual(record.rounds[1].alignments[17].hsps[0].gaps, (8, 199))
02506         self.assertEqual(record.rounds[1].alignments[18].hsps[0].identities, (89, 198))
02507         self.assertEqual(record.rounds[1].alignments[18].hsps[0].positives, (129, 198))
02508         self.assertEqual(record.rounds[1].alignments[18].hsps[0].gaps, (10, 198))
02509         self.assertEqual(record.rounds[1].alignments[19].hsps[0].identities, (92, 207))
02510         self.assertEqual(record.rounds[1].alignments[19].hsps[0].positives, (124, 207))
02511         self.assertEqual(record.rounds[1].alignments[19].hsps[0].gaps, (14, 207))
02512         self.assertEqual(record.rounds[1].alignments[20].hsps[0].identities, (81, 198))
02513         self.assertEqual(record.rounds[1].alignments[20].hsps[0].positives, (122, 198))
02514         self.assertEqual(record.rounds[1].alignments[20].hsps[0].gaps, (8, 198))
02515         self.assertEqual(record.rounds[1].alignments[21].hsps[0].identities, (79, 196))
02516         self.assertEqual(record.rounds[1].alignments[21].hsps[0].positives, (106, 196))
02517         self.assertEqual(record.rounds[1].alignments[21].hsps[0].gaps, (9, 196))
02518         self.assertEqual(record.rounds[1].alignments[22].hsps[0].identities, (68, 202))
02519         self.assertEqual(record.rounds[1].alignments[22].hsps[0].positives, (102, 202))
02520         self.assertEqual(record.rounds[1].alignments[22].hsps[0].gaps, (28, 202))
02521         self.assertEqual(record.rounds[1].alignments[23].hsps[0].identities, (83, 200))
02522         self.assertEqual(record.rounds[1].alignments[23].hsps[0].positives, (124, 200))
02523         self.assertEqual(record.rounds[1].alignments[23].hsps[0].gaps, (7, 200))
02524 
02525     def _check_bt009_hsps_details(self, record):
02526         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02527         self.assertEqual(record.rounds[0].alignments[0].hsps[0].match, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02528         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02529         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_start, 1)
02530         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_end, 200)
02531         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_start, 1)
02532         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_end, 200)
02533         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02534         self.assertEqual(record.rounds[0].alignments[1].hsps[0].match, "RI  + R TKET + + INLDGTG AD S+GI FLDHML  L  H  FD+ +   GD   V +D HH  ED+A+A+G  + + LG + GI R+G FT P+DEAL+   LD+SGRPYL ++ ++   Q++G YDT++ E FF++L   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G IPSSKGVL")
02535         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct, "RIGEVKRVTKETNVSVKINLDGTGVADSSSGIPFLDHMLDQLASHGLFDVHVRATGD---VHIDDHHTNEDIALAIGTALLKALGERKGINRFGDFTAPLDEALIHVSLDLSGRPYLGYNLEIP-TQRVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGENSHHIIEATFKAFARALRQATETDPRRGGTIPSSKGVL")
02536         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_start, 3)
02537         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_end, 200)
02538         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_start, 74)
02539         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_end, 267)
02540         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02541         self.assertEqual(record.rounds[0].alignments[2].hsps[0].match, "TR+  + R TKET + + INLDG+G AD STGI FLDHML  L  H  FD+ +   GD   V +D HH  EDVA+A+G  + + LG++ GI R+G F+ P+DEAL+   LD+SGRP+L ++ D+   Q++G YDT++ E F +++   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
02542         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct, "TRVGEVKRVTKETNVSVKINLDGSGVADSSTGIPFLDHMLDQLASHGLFDVHVKATGD---VHIDDHHTNEDVALAIGTALLQALGDRKGINRFGDFSAPLDEALIHVSLDLSGRPHLSYNLDIP-TQRVGTYDTQVVEHFLQSIVNTSGMTLHIRQLAGRNSHHIIEATFKAFARALRQATEYDPRRRGSVPSSKGVL")
02543         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_start, 2)
02544         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_end, 200)
02545         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_start, 84)
02546         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_end, 278)
02547         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query, "ITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02548         self.assertEqual(record.rounds[0].alignments[3].hsps[0].match, "I RNT ET+I +++NLDGTG  D+ TG+GFLDHML  L+ HS  DL +   GD   V +D HH  E   IA+G+ +++ +G++ GI+RYG   +PMDE L    LD S RPYL++    S   K+G  DTE+  E+F+A A  AG+TLH+   YG+N HHI+E  +K+ ARAL+  + ID  K   +PS+KG L")
02549         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct, "IERNTTETRIRVAVNLDGTGVYDVKTGVGFLDHMLEQLSRHSLMDLSVAAEGD---VHIDAHHTTEHSGIAIGQAVAKAVGDRKGIQRYGHAYVPMDETLTRVALDFSNRPYLIWKVSFS-RDKIGDMDTELFREWFQAFAMAAGVTLHVECLYGENNHHIVESCYKALARALRAGIEIDPRKRDAVPSTKGTL")
02550         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_start, 7)
02551         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_end, 200)
02552         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_start, 14)
02553         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_end, 203)
02554         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query, "ITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02555         self.assertEqual(record.rounds[0].alignments[4].hsps[0].match, "+ R TKET + + INLDGTG A+ STGI FLDHML  L  H  FD+ +   GD     +D HH  ED+A+A+G  + + LG++ GI R+G FT P+DEA V   LD+SGRP+L     +   +++G YDT++ E FF++L   +G+TLH+ +  G N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
02556         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct, "VKRVTKETNVHVKINLDGTGVANSSTGIPFLDHMLDQLASHGLFDVYVKATGDTH---IDDHHSNEDIALAIGTALLQALGDRKGINRFGHFTAPLDEAAVEVILDLSGRPHLSCGLSIP-TERVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGNNSHHIIEATFKAFARALRQATEYDLRRQGTMPSSKGVL")
02557         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query_start, 7)
02558         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query_end, 200)
02559         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct_start, 3)
02560         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct_end, 192)
02561         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02562         self.assertEqual(record.rounds[0].alignments[5].hsps[0].match, "M+R+  + R TKET + + I+LDGTG+ DI+TG+GF DHML  L  H  FDL +   GD   + +D HH IED A+ALG    + LG+K+GI R+G+ T+P+DE+L    +D+SGRPYLV     +    +G YD  MT     +    A + LH++  YG+N HHI+E  FK+ ARAL+ A   D    G +PS+KG L")
02563         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct, "MSRVGRVERTTKETSVLVEIDLDGTGKTDIATGVGFYDHMLDQLGRHGLFDLTVKTDGD---LHIDSHHTIEDTALALGAAFRQALGDKVGIYRFGNCTVPLDESLAQVTVDLSGRPYLVHTEPENMAPMIGEYDVTMTRHILESFVAQAQVALHVHVPYGRNAHHIVECQFKALARALRYASERDPRAAGILPSTKGAL")
02564         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query_start, 1)
02565         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query_end, 200)
02566         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct_start, 1)
02567         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct_end, 197)
02568         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02569         self.assertEqual(record.rounds[0].alignments[6].hsps[0].match, "RI+ + R T ET +++++NLDGTG    +TGI FLDHML  ++ H   DL +   GD E   +D HH  EDV I LG+ +++ LG++ GI R+G+F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF AL  ++ +TLH+ +  G N+HHIIE  FK+ ARA + A+ +D  + G IPSSKGVL")
02570         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct, "RIASVHRITGETNVQVTVNLDGTGICKAATGIPFLDHMLHQISSHGLIDLDVQAKGDWE---IDDHHTNEDVGITLGQALAKALGDRKGIVRFGNFLAPLDEALVQVALDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVALVNHSQMTLHIRQLDGINSHHIIEATFKAFARAARMAIEVDPRRAGTIPSSKGVL")
02571         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query_start, 3)
02572         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query_end, 200)
02573         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct_start, 16)
02574         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct_end, 209)
02575         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02576         self.assertEqual(record.rounds[0].alignments[7].hsps[0].match, "R +H+ RNTKETQI++ + LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +ALG+ +   LG+K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R L+QA+ ++      +PSSKGVL")
02577         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct, "RYAHVVRNTKETQIDVQVWLDREGGSKINTGVGFFDHMLDQIATHGGFRMEINVKGD---LYIDDHHTVEDTGLALGEALKIALGDKRGICRFG-FVLPMDECLARCALDISGRPHLEYKAEFT-YQRVGDLSTEMIEHFFRSLSYTMGVTLHLKTK-GKNDHHRVESLFKAFGRTLRQAIRVEGD---TLPSSKGVL")
02578         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query_start, 3)
02579         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query_end, 200)
02580         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct_start, 167)
02581         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct_end, 355)
02582         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02583         self.assertEqual(record.rounds[0].alignments[8].hsps[0].match, "R + + R TKET + +S+NL G+G   ++TG+ FLDHML  +  H   DL++   GD E   +D HH  EDV I LG+ ++E LG++ GI R+G F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF A+  ++ +TLH+ +  G N+HHIIE  FK+ ARA++ A+ +D  +   IPSSKGVL")
02584         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct, "RAAAVHRVTKETDVRVSLNLMGSGLCHVATGVPFLDHMLHQIASHGLIDLEVNATGDIE---IDDHHTNEDVGITLGQALAEALGDRRGINRFGHFIAPLDEALVQVTLDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVAVVNHSQMTLHIRQLDGINSHHIIEATFKAFARAMRMAIEVDPRRADTIPSSKGVL")
02585         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query_start, 3)
02586         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query_end, 200)
02587         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct_start, 17)
02588         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct_end, 210)
02589         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02590         self.assertEqual(record.rounds[0].alignments[9].hsps[0].match, "R + + R TKET I++ + LD  G  +I TG+GF DHML  +  H  F + +   GD   + +D HH +ED A+ALG+ + + +G+K GI R+G F +PMDE    C LD+SGRP++ F+A      K+G + TE+TE FF++LAF+   TLHLN   G N HH IE +FK+  R L+QA+ I+ +   E+PSSKGVL")
02591         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct, "RFAEVIRQTKETDIKVQVWLDEAGVNEIKTGVGFFDHMLDQIATHGGFRMNVQCKGD---LWIDEHHTVEDTALALGQALKQAVGDKRGIARFG-FVLPMDECKAECALDLSGRPWIKFNACFK-RDKVGDFSTELTEHFFQSLAFSMLATLHLNV-TGNNDHHKIESLFKAFGRTLRQAIRIEGN---EMPSSKGVL")
02592         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query_start, 3)
02593         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query_end, 200)
02594         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct_start, 174)
02595         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct_end, 362)
02596         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVF--------HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02597         self.assertEqual(record.rounds[0].alignments[10].hsps[0].match, "+R + I R T+E+ I + ++LDGTGQ  + TG+ F DHMLT L  H+ FDL +   GD E   ++ HH IED AIALG  + + LG+K GIRR+G   IPMDE L    +D+SGRPY V         H  ++G+     Y T +    F +LA NA I LH+   YG++ HHI E  +K+ ARAL+QAV  D  +V  +PS+KG L")
02598         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct, "SRRARIERRTRESDIVIELDLDGTGQVAVDTGVPFYDHMLTALGSHASFDLTVRATGDVE---IEAHHTIEDTAIALGTALGQALGDKRGIRRFGDAFIPMDETLAHAAVDLSGRPYCVHTGEPDHLQHTTIAGSSV--PYHTVINRHVFESLAANARIALHVRVLYGRDPHHITEAQYKAVARALRQAVEPD-PRVSGVPSTKGAL")
02599         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query_start, 2)
02600         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query_end, 200)
02601         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct_start, 10)
02602         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct_end, 210)
02603         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02604         self.assertEqual(record.rounds[0].alignments[11].hsps[0].match, "R +H+ RNTKETQI++S+ LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +AL + +   L +K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R ++QA+ ++      +PSSKGVL")
02605         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct, "RYAHVVRNTKETQIDVSVWLDREGNSKINTGVGFFDHMLDQIATHGGFRMEITVKGD---LYIDDHHTVEDTGLALREALKLALRDKRGICRFG-FVLPMDECL-ACALDISGRPHLEYKAEFT-YQRVGNLSTEMIEHFFRSLSYTMGVTLHLKTK-GKNDHHRVESLFKAFGRTVRQAIRVEGD---TLPSSKGVL")
02606         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query_start, 3)
02607         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query_end, 200)
02608         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct_start, 167)
02609         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct_end, 354)
02610         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02611         self.assertEqual(record.rounds[0].alignments[12].hsps[0].match, "R S  TR T ET +++ + +DG+G++ ++TG+GFLDHML  +  H   DL++   GD E   +D HH +EDVA+ LG+ + E LG+K GIRR     +PMD+AL T  LD+SGRPY V   +   +  +G   ++    F  +LA +A + +H +   G+N HH  E +FK+ A A++ AV ++    GEIPS+KG L")
02612         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct, "RRSMKTRETLETHVKVDLEIDGSGKSSVNTGLGFLDHMLESVARHGLLDLEVEARGDLE---VDDHHTVEDVALTLGEALREALGDKSGIRRMAHAMVPMDDALATVALDLSGRPYTVLELEFD-DAVIGDVKSQNIGHFIESLAVSAAMNIHASVR-GRNDHHKAEALFKALALAIRDAVRVEH---GEIPSTKGKL")
02613         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query_start, 3)
02614         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query_end, 200)
02615         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct_start, 5)
02616         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct_end, 194)
02617         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query, "RISHITRNTKETQIELSINLDGTG-----QADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02618         self.assertEqual(record.rounds[0].alignments[13].hsps[0].match, "RI+ + R T ET I  +I+LD        + ++STGIGFLDHM T L  H    L++   GD   + +D HH  ED A+ALG+   + LG + GI+RYG    P+DE+L    +DIS RPY + H   +  +K+G   TEM     ++ AF AG+TLH++   G+N HHI E  FK+ A A++ A+S   +   ++PS+KGVL")
02619         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct, "RIASVERTTSETHISCTIDLDHIPGVTEQKINVSTGIGFLDHMFTALAKHGGMSLQLQCKGD---LHIDDHHTAEDCALALGEAFKKALGERKGIKRYGYAYAPLDESLSRAVIDISSRPYFMCHLPFT-REKVGDLSTEMVSHLLQSFAFAAGVTLHIDSIRGENNHHIAESAFKALALAIRMAIS--RTGGDDVPSTKGVL")
02620         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query_start, 3)
02621         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query_end, 200)
02622         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct_start, 4)
02623         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct_end, 200)
02624         self.assertEqual(record.rounds[0].alignments[14].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHML-TLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02625         self.assertEqual(record.rounds[0].alignments[14].hsps[0].match, "M+R ++ITR TKET+IE+ +++D  G+  +ST I F +HML TLLT+ +     I+   D   +  D HH++EDVAI LG  I   LG+K GI+R+    IPMD+ALV   LDIS R     + +L  ++ +GG  TE    FF++ A+N+GITLH+++  G NTHHIIE  FK+   AL +A  I ++   EI S+KG++")
02626         self.assertEqual(record.rounds[0].alignments[14].hsps[0].sbjct, "MSRSANITRETKETKIEVLLDIDRKGEVKVSTPIPFFNHMLITLLTYMNS--TAIVSATDK--LPYDDHHIVEDVAITLGLAIKTALGDKRGIKRFSHQIIPMDDALVLVSLDISNRGMAFVNLNLKRSE-IGGLATENVPHFFQSFAYNSGITLHISQLSGYNTHHIIEASFKALGLALYEATRIVDN---EIRSTKGII")
02627         self.assertEqual(record.rounds[0].alignments[14].hsps[0].query_start, 1)
02628         self.assertEqual(record.rounds[0].alignments[14].hsps[0].query_end, 200)
02629         self.assertEqual(record.rounds[0].alignments[14].hsps[0].sbjct_start, 1)
02630         self.assertEqual(record.rounds[0].alignments[14].hsps[0].sbjct_end, 193)
02631         self.assertEqual(record.rounds[0].alignments[15].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02632         self.assertEqual(record.rounds[0].alignments[15].hsps[0].match, "R ++I+R TKET I + ++LDGTG++ +S+GIGFLDHMLT L  HS FDL++   GD     +D HH  ED A+ LG+     LG++ GI R+GS  +P+DEAL    +DIS R +   +  L     +G   +EM   FF + A  A  TLH++   G+N HH  E  FK+ A AL+ AV  D +    +PS+KGVL")
02633         self.assertEqual(record.rounds[0].alignments[15].hsps[0].sbjct, "REANISRVTKETSISVKLSLDGTGKSKVSSGIGFLDHMLTALAKHSRFDLELDCKGD---TWIDDHHTTEDCALTLGEAFDVALGDRAGIARFGSACVPLDEALSRAIVDISSRAHSEINLQLV-RPSVGELSSEMITHFFESFASAALXTLHVDVLRGRNDHHRAEASFKALAVALRTAVKHDAT--AGVPSTKGVL")
02634         self.assertEqual(record.rounds[0].alignments[15].hsps[0].query_start, 3)
02635         self.assertEqual(record.rounds[0].alignments[15].hsps[0].query_end, 200)
02636         self.assertEqual(record.rounds[0].alignments[15].hsps[0].sbjct_start, 260)
02637         self.assertEqual(record.rounds[0].alignments[15].hsps[0].sbjct_end, 451)
02638         self.assertEqual(record.rounds[0].alignments[16].hsps[0].query, "RISHITRNTKETQIELSINLD-----------------------GTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02639         self.assertEqual(record.rounds[0].alignments[16].hsps[0].match, "R + + RNT ET+I ++I LD                       G     + TGIGFLDHM   L  H+ + L++   GD   + +D HH  ED AIALG    + +GN  G++R+G    P+DEAL    +D+SGRPY V    L   +K+G    EM      + +  AGITLH+   YG N HH  E  FKS A A++ A S+  S   E+PS+KGVL")
02640         self.assertEqual(record.rounds[0].alignments[16].hsps[0].sbjct, "RRAFVERNTNETKISVAIALDKAPLPEESNFIDELITSKHANQKGEQVIQVDTGIGFLDHMYHALAKHAGWSLRLYSRGD---LIIDDHHTAEDTAIALGIAFKQAMGNFAGVKRFGHAYCPLDEALSRSVVDLSGRPYAVIDLGLK-REKVGELSCEMIPHLLYSFSVAAGITLHVTCLYGSNDHHRAESAFKSLAVAMRAATSLTGS--SEVPSTKGVL")
02641         self.assertEqual(record.rounds[0].alignments[16].hsps[0].query_start, 3)
02642         self.assertEqual(record.rounds[0].alignments[16].hsps[0].query_end, 200)
02643         self.assertEqual(record.rounds[0].alignments[16].hsps[0].sbjct_start, 2)
02644         self.assertEqual(record.rounds[0].alignments[16].hsps[0].sbjct_end, 216)
02645         self.assertEqual(record.rounds[0].alignments[17].hsps[0].query, "MTRISHITRNTKETQIELSINLDG---------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02646         self.assertEqual(record.rounds[0].alignments[17].hsps[0].match, "M+R + I R T ET+I++++NLDG                           +   ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  EDV I+LG    + LG   G++R+G    P+DEAL    +D+S RP+ V    L   +K+G   TEM      + A   GIT+H++   G N HH  E  FK+ A A+K+A+S  ++   +IPS+KGVL")
02647         self.assertEqual(record.rounds[0].alignments[17].hsps[0].sbjct, "MSREALINRITNETKIQIALNLDGGKLELKESIFPNQSIIIDEHHAKQVSGSQYINVQTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTAEDVGISLGMAFKQALGQIKGVKRFGHGFAPLDEALSRAVVDLSNRPFAVIELGLK-REKIGDLSTEMIPHVLESFAGAVGITIHVDCLRGFNDHHRAESAFKALAIAIKEAIS--KTGKNDIPSTKGVL")
02648         self.assertEqual(record.rounds[0].alignments[17].hsps[0].query_start, 1)
02649         self.assertEqual(record.rounds[0].alignments[17].hsps[0].query_end, 200)
02650         self.assertEqual(record.rounds[0].alignments[17].hsps[0].sbjct_start, 1)
02651         self.assertEqual(record.rounds[0].alignments[17].hsps[0].sbjct_end, 221)
02652         self.assertEqual(record.rounds[0].alignments[18].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKG")
02653         self.assertEqual(record.rounds[0].alignments[18].hsps[0].match, "RI  + R TKET I L IN+DGTG+  I TGI F DH+L     H  FDL +   GD E   +D HH +EDV I LG  +++    K  I R+G   IPMD+A  T  +D+SGR Y V + +    + +G   TE    FF ++A    + +H  E  G+N HH  E +FK+   AL  A  IDE K   + S+KG")
02654         self.assertEqual(record.rounds[0].alignments[18].hsps[0].sbjct, "RIFEVMRETKETNIYLKINIDGTGKYKIDTGIPFFDHLLASFAKHGCFDLIVKARGDLE---IDDHHTVEDVGICLGLALNQI--EKRNIFRFGWAIIPMDDARATVAIDLSGRSYCVGNYE-PKREFVGDLATENINHFFESVASYGMLNIHY-EVIGKNEHHKAEALFKAFGVALDLATKIDERK--GVISTKG")
02655         self.assertEqual(record.rounds[0].alignments[18].hsps[0].query_start, 3)
02656         self.assertEqual(record.rounds[0].alignments[18].hsps[0].query_end, 198)
02657         self.assertEqual(record.rounds[0].alignments[18].hsps[0].sbjct_start, 7)
02658         self.assertEqual(record.rounds[0].alignments[18].hsps[0].sbjct_end, 193)
02659         self.assertEqual(record.rounds[0].alignments[19].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------TGQA------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02660         self.assertEqual(record.rounds[0].alignments[19].hsps[0].match, "R + I+R T ET+I+++I+L+G                    QA      DI TG+GFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E +G   G++R+G+   P+DEAL    +D+S RP+ V    L   + +G   TEM   F  + A  A ITLH++   G N HH  E  FK+ A A+++A+S   +   ++PS+KGVL")
02661         self.assertEqual(record.rounds[0].alignments[19].hsps[0].sbjct, "RKAFISRITNETKIQIAISLNGGYIQIKDSILPAKKDDDVASQATQSQVIDIHTGVGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEAMGAVRGVKRFGTGFAPLDEALSRAVVDLSNRPFAVIDLGLK-REMIGDLSTEMIPHFLESFAEAARITLHVDCLRGFNDHHRSESAFKALAVAIREAIS--SNGTNDVPSTKGVL")
02662         self.assertEqual(record.rounds[0].alignments[19].hsps[0].query_start, 3)
02663         self.assertEqual(record.rounds[0].alignments[19].hsps[0].query_end, 200)
02664         self.assertEqual(record.rounds[0].alignments[19].hsps[0].sbjct_start, 16)
02665         self.assertEqual(record.rounds[0].alignments[19].hsps[0].sbjct_end, 231)
02666         self.assertEqual(record.rounds[0].alignments[20].hsps[0].query, "RISHITRNTKETQIELSINLDG-------------------TGQA------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02667         self.assertEqual(record.rounds[0].alignments[20].hsps[0].match, "R S I R T ET+I+++++LDG                     QA       ++TGIGFLDHML  L  H  + + I   GD   + +D HH  ED  IALG    E LG+  GI+R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM      + A  A +T+H++   G N HH  E  FK+ A A+K+A+S   +   +IPS+KGVL")
02668         self.assertEqual(record.rounds[0].alignments[20].hsps[0].sbjct, "RSSLIKRITNETKIQIALSLDGGPVSLAQSLFKDKDYSAEHAAQATSSQFISVNTGIGFLDHMLHALAKHGGWSVIIECVGD---LHIDDHHSAEDTGIALGMAFKEALGHVRGIKRFGSGFAPLDEALSRAVIDMSNRPYAVVDLGLK-REKIGDLSCEMIPHVLESFAQGAHVTMHVDCLRGFNDHHRAESAFKALAIAIKEAIS--SNGTDDIPSTKGVL")
02669         self.assertEqual(record.rounds[0].alignments[20].hsps[0].query_start, 3)
02670         self.assertEqual(record.rounds[0].alignments[20].hsps[0].query_end, 200)
02671         self.assertEqual(record.rounds[0].alignments[20].hsps[0].sbjct_start, 7)
02672         self.assertEqual(record.rounds[0].alignments[20].hsps[0].sbjct_end, 223)
02673         self.assertEqual(record.rounds[0].alignments[21].hsps[0].query, "ISHITRNTKETQIELSINLDG-----------------TGQA-DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02674         self.assertEqual(record.rounds[0].alignments[21].hsps[0].match, "++ + R T+ET I+L+++LDG                  GQ   + TG+GFLDHMLT L  H  + L +   GD   + +D HH +ED  IALG+   E LG+  GI+R+G    P+DEAL    +D S RP+ V    L   +++G   TEM   F  + A    IT+H++   G N HH  E  FK+ A A+++A +   +   ++PS+KGVL")
02675         self.assertEqual(record.rounds[0].alignments[21].hsps[0].sbjct, "MAFVKRVTQETNIQLALDLDGGSVSVRESILGKEYASGDGQTIHVHTGVGFLDHMLTALAKHGGWSLILECIGD---LHIDDHHTVEDCGIALGQAFKEALGSVRGIKRFGHGFAPLDEALSRAVVDFSNRPFAVVELGLK-RERIGQLSTEMIPHFLESFATEGRITMHVDCLRGTNDHHRSESGFKALAIAIREART--PTGRDDVPSTKGVL")
02676         self.assertEqual(record.rounds[0].alignments[21].hsps[0].query_start, 4)
02677         self.assertEqual(record.rounds[0].alignments[21].hsps[0].query_end, 200)
02678         self.assertEqual(record.rounds[0].alignments[21].hsps[0].sbjct_start, 1)
02679         self.assertEqual(record.rounds[0].alignments[21].hsps[0].sbjct_end, 209)
02680         self.assertEqual(record.rounds[0].alignments[22].hsps[0].query, "ITRNTKETQIELSINLDGTGQA------------------------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02681         self.assertEqual(record.rounds[0].alignments[22].hsps[0].match, "+ R T ET+I+++I+L G   A                        ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E LG   G++R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM   F  + A  + ITLH++   G+N HH  E  FK+ A A+++A S   +   ++PS+KGVL")
02682         self.assertEqual(record.rounds[0].alignments[22].hsps[0].sbjct, "VKRITNETKIQIAISLKGGPLAIEHSIFPEKEAEAVAEQATQSQVINVHTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEALGAVRGVKRFGSGFAPLDEALSRAVVDLSNRPYAVVELGLQ-REKVGDLSCEMIPHFLESFAEASRITLHVDCLRGKNDHHRSESAFKALAVAIREATS--PNGTNDVPSTKGVL")
02683         self.assertEqual(record.rounds[0].alignments[22].hsps[0].query_start, 7)
02684         self.assertEqual(record.rounds[0].alignments[22].hsps[0].query_end, 200)
02685         self.assertEqual(record.rounds[0].alignments[22].hsps[0].sbjct_start, 8)
02686         self.assertEqual(record.rounds[0].alignments[22].hsps[0].sbjct_end, 219)
02687         self.assertEqual(record.rounds[0].alignments[23].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALK")
02688         self.assertEqual(record.rounds[0].alignments[23].hsps[0].match, "R + ++R+T ET I++++++DG                        +    I+TGIGFLDHML  L  H+ + + +   GD   + +D HH  ED  IA+G   ++ LG   G+ R+G    P+DEAL    +D+S RPY V    L   +KLG    EM     ++ A  A ITLH++   G N HH  E  FK+ A A++")
02689         self.assertEqual(record.rounds[0].alignments[23].hsps[0].sbjct, "RAAALSRDTNETSIQIALSIDGGELPQDADPRLLEASSAHASQTSKSQVISINTGIGFLDHMLHALAKHAGWSMALNCKGD---LHIDDHHTAEDCCIAVGTTFAKALGALTGVARFGYAYAPLDEALSRAVVDLSNRPYTVVDLGLK-REKLGELSCEMIPHCLQSFAQAARITLHVDCLRGDNDHHRAESAFKALAVAVR")
02690         self.assertEqual(record.rounds[0].alignments[23].hsps[0].query_start, 3)
02691         self.assertEqual(record.rounds[0].alignments[23].hsps[0].query_end, 180)
02692         self.assertEqual(record.rounds[0].alignments[23].hsps[0].sbjct_start, 8)
02693         self.assertEqual(record.rounds[0].alignments[23].hsps[0].sbjct_end, 205)
02694         self.assertEqual(record.rounds[0].alignments[24].hsps[0].query, "GDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQK---LGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDES")
02695         self.assertEqual(record.rounds[0].alignments[24].hsps[0].match, "G+   +G  PH  + +++   G  +S  LG+   +      T+   + L T DL+   RPY+ + A ++ N K      YD     +++R +     + L+  +   Q+  HI E    S  R  KQA S +E+")
02696         self.assertEqual(record.rounds[0].alignments[24].hsps[0].sbjct, "GNLHQLGEKPHRAMVELSKTYGPLMSLKLGSVTTVVATSVETVR--DVLKTYDLECCSRPYMTYPARITYNLKDLVFSPYD-----KYWRQVRKLTVVELYTAKRV-QSFRHIREEEVASFVRFNKQAASSEET")
02697         self.assertEqual(record.rounds[0].alignments[24].hsps[0].query_start, 58)
02698         self.assertEqual(record.rounds[0].alignments[24].hsps[0].query_end, 188)
02699         self.assertEqual(record.rounds[0].alignments[24].hsps[0].sbjct_start, 40)
02700         self.assertEqual(record.rounds[0].alignments[24].hsps[0].sbjct_end, 165)
02701         self.assertEqual(record.rounds[0].alignments[25].hsps[0].query, "HSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLG")
02702         self.assertEqual(record.rounds[0].alignments[25].hsps[0].match, "HS+    I+G G H   G DPHH   D  +  G  +  D+G   G")
02703         self.assertEqual(record.rounds[0].alignments[25].hsps[0].sbjct, "HSEVAFVIVGSGPH---GADPHHGYSDRELREGDIVVVDIGGTYG")
02704         self.assertEqual(record.rounds[0].alignments[25].hsps[0].query_start, 47)
02705         self.assertEqual(record.rounds[0].alignments[25].hsps[0].query_end, 91)
02706         self.assertEqual(record.rounds[0].alignments[25].hsps[0].sbjct_start, 195)
02707         self.assertEqual(record.rounds[0].alignments[25].hsps[0].sbjct_end, 236)
02708         self.assertEqual(record.rounds[0].alignments[26].hsps[0].query, "PYLVF---HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYG")
02709         self.assertEqual(record.rounds[0].alignments[26].hsps[0].match, "PYL+    H D+ GN +  G+  +M +E    L FN  I L  +  YG")
02710         self.assertEqual(record.rounds[0].alignments[26].hsps[0].sbjct, "PYLMLKGNHQDMEGNDRYEGFCVDMLKELAEILRFNYKIRLVGDGVYG")
02711         self.assertEqual(record.rounds[0].alignments[26].hsps[0].query_start, 117)
02712         self.assertEqual(record.rounds[0].alignments[26].hsps[0].query_end, 161)
02713         self.assertEqual(record.rounds[0].alignments[26].hsps[0].sbjct_start, 427)
02714         self.assertEqual(record.rounds[0].alignments[26].hsps[0].sbjct_end, 474)
02715         self.assertEqual(record.rounds[0].alignments[27].hsps[0].query, "GKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLG---GYDTEMTEEFFRA")
02716         self.assertEqual(record.rounds[0].alignments[27].hsps[0].match, "GK ISED     GI + G     +D   VT + D  G    +  + L  N++ G    YD E T EF RA")
02717         self.assertEqual(record.rounds[0].alignments[27].hsps[0].sbjct, "GKEISEDKWEDFGISQRGEEKFFIDAEKVTVEFD--GFQAKIQMSSLYKNKQCGLCGHYDGEKTNEFRRA")
02718         self.assertEqual(record.rounds[0].alignments[27].hsps[0].query_start, 79)
02719         self.assertEqual(record.rounds[0].alignments[27].hsps[0].query_end, 145)
02720         self.assertEqual(record.rounds[0].alignments[27].hsps[0].sbjct_start, 1436)
02721         self.assertEqual(record.rounds[0].alignments[27].hsps[0].sbjct_end, 1503)
02722         self.assertEqual(record.rounds[0].alignments[28].hsps[0].query, "PYLVF---HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYG")
02723         self.assertEqual(record.rounds[0].alignments[28].hsps[0].match, "PYL+    H ++ GN +  G+  +M +E    L FN  I L  +  YG")
02724         self.assertEqual(record.rounds[0].alignments[28].hsps[0].sbjct, "PYLMLKGNHQEMEGNDRYEGFCVDMLKELAEILRFNYKIRLVGDGVYG")
02725         self.assertEqual(record.rounds[0].alignments[28].hsps[0].query_start, 117)
02726         self.assertEqual(record.rounds[0].alignments[28].hsps[0].query_end, 161)
02727         self.assertEqual(record.rounds[0].alignments[28].hsps[0].sbjct_start, 427)
02728         self.assertEqual(record.rounds[0].alignments[28].hsps[0].sbjct_end, 474)
02729         self.assertEqual(record.rounds[0].alignments[29].hsps[0].query, "RYGSFTIPMDEAL-----VTCDLDISGRPYLVFHADLSGNQKL--GGYDTEMTEEFFRALAFNAG")
02730         self.assertEqual(record.rounds[0].alignments[29].hsps[0].match, "R GS ++P++E          D DI G  Y   H D+  NQ+L  G  D  +++   +   FN+G")
02731         self.assertEqual(record.rounds[0].alignments[29].hsps[0].sbjct, "RNGSNSLPLNEKSNEGESTNVDQDIEGDEYHRLHEDILKNQELDDGSLDDLLSQIIPKITNFNSG")
02732         self.assertEqual(record.rounds[0].alignments[29].hsps[0].query_start, 94)
02733         self.assertEqual(record.rounds[0].alignments[29].hsps[0].query_end, 151)
02734         self.assertEqual(record.rounds[0].alignments[29].hsps[0].sbjct_start, 1141)
02735         self.assertEqual(record.rounds[0].alignments[29].hsps[0].sbjct_end, 1205)
02736         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02737         self.assertEqual(record.rounds[1].alignments[0].hsps[0].match, "TR+  + R TKET + + INLDG+G AD STGI FLDHML  L  H  FD+ +   GD   V +D HH  EDVA+A+G  + + LG++ GI R+G F+ P+DEAL+   LD+SGRP+L ++ D+   Q++G YDT++ E F +++   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
02738         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct, "TRVGEVKRVTKETNVSVKINLDGSGVADSSTGIPFLDHMLDQLASHGLFDVHVKATGD---VHIDDHHTNEDVALAIGTALLQALGDRKGINRFGDFSAPLDEALIHVSLDLSGRPHLSYNLDIP-TQRVGTYDTQVVEHFLQSIVNTSGMTLHIRQLAGRNSHHIIEATFKAFARALRQATEYDPRRRGSVPSSKGVL")
02739         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_start, 2)
02740         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_end, 200)
02741         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_start, 84)
02742         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_end, 278)
02743         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02744         self.assertEqual(record.rounds[1].alignments[1].hsps[0].match, "RI  + R TKET + + INLDGTG AD S+GI FLDHML  L  H  FD+ +   GD   V +D HH  ED+A+A+G  + + LG + GI R+G FT P+DEAL+   LD+SGRPYL ++ ++   Q++G YDT++ E FF++L   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G IPSSKGVL")
02745         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct, "RIGEVKRVTKETNVSVKINLDGTGVADSSSGIPFLDHMLDQLASHGLFDVHVRATGD---VHIDDHHTNEDIALAIGTALLKALGERKGINRFGDFTAPLDEALIHVSLDLSGRPYLGYNLEIP-TQRVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGENSHHIIEATFKAFARALRQATETDPRRGGTIPSSKGVL")
02746         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_start, 3)
02747         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_end, 200)
02748         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_start, 74)
02749         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_end, 267)
02750         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02751         self.assertEqual(record.rounds[1].alignments[2].hsps[0].match, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02752         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02753         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_start, 1)
02754         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_end, 200)
02755         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_start, 1)
02756         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_end, 200)
02757         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02758         self.assertEqual(record.rounds[1].alignments[3].hsps[0].match, "R + + R TKET + +S+NL G+G   ++TG+ FLDHML  +  H   DL++   GD E   +D HH  EDV I LG+ ++E LG++ GI R+G F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF A+  ++ +TLH+ +  G N+HHIIE  FK+ ARA++ A+ +D  +   IPSSKGVL")
02759         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct, "RAAAVHRVTKETDVRVSLNLMGSGLCHVATGVPFLDHMLHQIASHGLIDLEVNATGDIE---IDDHHTNEDVGITLGQALAEALGDRRGINRFGHFIAPLDEALVQVTLDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVAVVNHSQMTLHIRQLDGINSHHIIEATFKAFARAMRMAIEVDPRRADTIPSSKGVL")
02760         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_start, 3)
02761         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_end, 200)
02762         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_start, 17)
02763         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_end, 210)
02764         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02765         self.assertEqual(record.rounds[1].alignments[4].hsps[0].match, "RI+ + R T ET +++++NLDGTG    +TGI FLDHML  ++ H   DL +   GD E   +D HH  EDV I LG+ +++ LG++ GI R+G+F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF AL  ++ +TLH+ +  G N+HHIIE  FK+ ARA + A+ +D  + G IPSSKGVL")
02766         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct, "RIASVHRITGETNVQVTVNLDGTGICKAATGIPFLDHMLHQISSHGLIDLDVQAKGDWE---IDDHHTNEDVGITLGQALAKALGDRKGIVRFGNFLAPLDEALVQVALDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVALVNHSQMTLHIRQLDGINSHHIIEATFKAFARAARMAIEVDPRRAGTIPSSKGVL")
02767         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query_start, 3)
02768         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query_end, 200)
02769         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct_start, 16)
02770         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct_end, 209)
02771         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query, "SHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02772         self.assertEqual(record.rounds[1].alignments[5].hsps[0].match, "  + R TKET + + INLDGTG A+ STGI FLDHML  L  H  FD+ +   GD     +D HH  ED+A+A+G  + + LG++ GI R+G FT P+DEA V   LD+SGRP+L     +   +++G YDT++ E FF++L   +G+TLH+ +  G N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
02773         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct, "GEVKRVTKETNVHVKINLDGTGVANSSTGIPFLDHMLDQLASHGLFDVYVKATGDT---HIDDHHSNEDIALAIGTALLQALGDRKGINRFGHFTAPLDEAAVEVILDLSGRPHLSCGLSIP-TERVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGNNSHHIIEATFKAFARALRQATEYDLRRQGTMPSSKGVL")
02774         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query_start, 5)
02775         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query_end, 200)
02776         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct_start, 1)
02777         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct_end, 192)
02778         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02779         self.assertEqual(record.rounds[1].alignments[6].hsps[0].match, "M+R+  + R TKET + + I+LDGTG+ DI+TG+GF DHML  L  H  FDL +   GD   + +D HH IED A+ALG    + LG+K+GI R+G+ T+P+DE+L    +D+SGRPYLV     +    +G YD  MT     +    A + LH++  YG+N HHI+E  FK+ ARAL+ A   D    G +PS+KG L")
02780         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct, "MSRVGRVERTTKETSVLVEIDLDGTGKTDIATGVGFYDHMLDQLGRHGLFDLTVKTDGD---LHIDSHHTIEDTALALGAAFRQALGDKVGIYRFGNCTVPLDESLAQVTVDLSGRPYLVHTEPENMAPMIGEYDVTMTRHILESFVAQAQVALHVHVPYGRNAHHIVECQFKALARALRYASERDPRAAGILPSTKGAL")
02781         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query_start, 1)
02782         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query_end, 200)
02783         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct_start, 1)
02784         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct_end, 197)
02785         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query, "SHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02786         self.assertEqual(record.rounds[1].alignments[7].hsps[0].match, "+ + R T ET+I+++I+L G                        +   ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E LG   G++R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM   F  + A  + ITLH++   G+N HH  E  FK+ A A+++A S   +   ++PS+KGVL")
02787         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct, "ALVKRITNETKIQIAISLKGGPLAIEHSIFPEKEAEAVAEQATQSQVINVHTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEALGAVRGVKRFGSGFAPLDEALSRAVVDLSNRPYAVVELGL-QREKVGDLSCEMIPHFLESFAEASRITLHVDCLRGKNDHHRSESAFKALAVAIREATS--PNGTNDVPSTKGVL")
02788         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query_start, 5)
02789         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query_end, 200)
02790         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct_start, 6)
02791         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct_end, 219)
02792         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query, "MTRISHITRNTKETQIELSINLDG---------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02793         self.assertEqual(record.rounds[1].alignments[8].hsps[0].match, "M+R + I R T ET+I++++NLDG                           +   ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  EDV I+LG    + LG   G++R+G    P+DEAL    +D+S RP+ V    L   +K+G   TEM      + A   GIT+H++   G N HH  E  FK+ A A+K+A+S  ++   +IPS+KGVL")
02794         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct, "MSREALINRITNETKIQIALNLDGGKLELKESIFPNQSIIIDEHHAKQVSGSQYINVQTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTAEDVGISLGMAFKQALGQIKGVKRFGHGFAPLDEALSRAVVDLSNRPFAVIELGLK-REKIGDLSTEMIPHVLESFAGAVGITIHVDCLRGFNDHHRAESAFKALAIAIKEAIS--KTGKNDIPSTKGVL")
02795         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query_start, 1)
02796         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query_end, 200)
02797         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct_start, 1)
02798         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct_end, 221)
02799         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02800         self.assertEqual(record.rounds[1].alignments[9].hsps[0].match, "R + I+R T ET+I+++I+L+G                        +   DI TG+GFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E +G   G++R+G+   P+DEAL    +D+S RP+ V    L   + +G   TEM   F  + A  A ITLH++   G N HH  E  FK+ A A+++A+S   +   ++PS+KGVL")
02801         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct, "RKAFISRITNETKIQIAISLNGGYIQIKDSILPAKKDDDVASQATQSQVIDIHTGVGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEAMGAVRGVKRFGTGFAPLDEALSRAVVDLSNRPFAVIDLGLK-REMIGDLSTEMIPHFLESFAEAARITLHVDCLRGFNDHHRSESAFKALAVAIREAIS--SNGTNDVPSTKGVL")
02802         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query_start, 3)
02803         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query_end, 200)
02804         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct_start, 16)
02805         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct_end, 231)
02806         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query, "SHITRNTKETQIELSINLDGTGQA------------------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02807         self.assertEqual(record.rounds[1].alignments[10].hsps[0].match, "+ + R T+ET I+L+++LDG   +                   + TG+GFLDHMLT L  H  + L +   GD   + +D HH +ED  IALG+   E LG+  GI+R+G    P+DEAL    +D S RP+ V    L   +++G   TEM   F  + A    IT+H++   G N HH  E  FK+ A A+++A     +   ++PS+KGVL")
02808         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct, "AFVKRVTQETNIQLALDLDGGSVSVRESILGKEYASGDGQTIHVHTGVGFLDHMLTALAKHGGWSLILECIGD---LHIDDHHTVEDCGIALGQAFKEALGSVRGIKRFGHGFAPLDEALSRAVVDFSNRPFAVVELGLK-RERIGQLSTEMIPHFLESFATEGRITMHVDCLRGTNDHHRSESGFKALAIAIREA--RTPTGRDDVPSTKGVL")
02809         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query_start, 5)
02810         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query_end, 200)
02811         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct_start, 2)
02812         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct_end, 209)
02813         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02814         self.assertEqual(record.rounds[1].alignments[11].hsps[0].match, "R +H+ RNTKETQI++ + LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +ALG+ +   LG+K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R L+QA+ ++      +PSSKGVL")
02815         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct, "RYAHVVRNTKETQIDVQVWLDREGGSKINTGVGFFDHMLDQIATHGGFRMEINVKGD---LYIDDHHTVEDTGLALGEALKIALGDKRGICRFG-FVLPMDECLARCALDISGRPHLEYKAEFT-YQRVGDLSTEMIEHFFRSLSYTMGVTLHLKT-KGKNDHHRVESLFKAFGRTLRQAIRVEG---DTLPSSKGVL")
02816         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query_start, 3)
02817         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query_end, 200)
02818         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct_start, 167)
02819         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct_end, 355)
02820         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query, "SHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02821         self.assertEqual(record.rounds[1].alignments[12].hsps[0].match, "+ I RNT ET+I +++NLDGTG  D+ TG+GFLDHML  L+ HS  DL +   GD   V +D HH  E   IA+G+ +++ +G++ GI+RYG   +PMDE L    LD S RPYL++    S   K+G  DTE+  E+F+A A  AG+TLH+   YG+N HHI+E  +K+ ARAL+  + ID  K   +PS+KG L")
02822         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct, "ASIERNTTETRIRVAVNLDGTGVYDVKTGVGFLDHMLEQLSRHSLMDLSVAAEGD---VHIDAHHTTEHSGIAIGQAVAKAVGDRKGIQRYGHAYVPMDETLTRVALDFSNRPYLIWKVSFS-RDKIGDMDTELFREWFQAFAMAAGVTLHVECLYGENNHHIVESCYKALARALRAGIEIDPRKRDAVPSTKGTL")
02823         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query_start, 5)
02824         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query_end, 200)
02825         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct_start, 12)
02826         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct_end, 203)
02827         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query, "RISHITRNTKETQIELSINLDG-----TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02828         self.assertEqual(record.rounds[1].alignments[13].hsps[0].match, "RI+ + R T ET I  +I+LD        + ++STGIGFLDHM T L  H    L++   GD   + +D HH  ED A+ALG+   + LG + GI+RYG    P+DE+L    +DIS RPY + H   +  +K+G   TEM     ++ AF AG+TLH++   G+N HHI E  FK+ A A++ A+S   +   ++PS+KGVL")
02829         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct, "RIASVERTTSETHISCTIDLDHIPGVTEQKINVSTGIGFLDHMFTALAKHGGMSLQLQCKGD---LHIDDHHTAEDCALALGEAFKKALGERKGIKRYGYAYAPLDESLSRAVIDISSRPYFMCHLPFT-REKVGDLSTEMVSHLLQSFAFAAGVTLHIDSIRGENNHHIAESAFKALALAIRMAIS--RTGGDDVPSTKGVL")
02830         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query_start, 3)
02831         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query_end, 200)
02832         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct_start, 4)
02833         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct_end, 200)
02834         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQA-------------------------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02835         self.assertEqual(record.rounds[1].alignments[14].hsps[0].match, "R S I R T ET+I+++++LDG   +                          ++TGIGFLDHML  L  H  + + I   GD   + +D HH  ED  IALG    E LG+  GI+R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM      + A  A +T+H++   G N HH  E  FK+ A A+K+A+S   +   +IPS+KGVL")
02836         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct, "RSSLIKRITNETKIQIALSLDGGPVSLAQSLFKDKDYSAEHAAQATSSQFISVNTGIGFLDHMLHALAKHGGWSVIIECVGD---LHIDDHHSAEDTGIALGMAFKEALGHVRGIKRFGSGFAPLDEALSRAVIDMSNRPYAVVDLGLK-REKIGDLSCEMIPHVLESFAQGAHVTMHVDCLRGFNDHHRAESAFKALAIAIKEAIS--SNGTDDIPSTKGVL")
02837         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query_start, 3)
02838         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query_end, 200)
02839         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct_start, 7)
02840         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct_end, 223)
02841         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02842         self.assertEqual(record.rounds[1].alignments[15].hsps[0].match, "R + + R TKET I++ + LD  G  +I TG+GF DHML  +  H  F + +   GD   + +D HH +ED A+ALG+ + + +G+K GI R+G F +PMDE    C LD+SGRP++ F+A      K+G + TE+TE FF++LAF+   TLHLN   G N HH IE +FK+  R L+QA+ I+ +   E+PSSKGVL")
02843         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct, "RFAEVIRQTKETDIKVQVWLDEAGVNEIKTGVGFFDHMLDQIATHGGFRMNVQCKGD---LWIDEHHTVEDTALALGQALKQAVGDKRGIARFG-FVLPMDECKAECALDLSGRPWIKFNACFK-RDKVGDFSTELTEHFFQSLAFSMLATLHLNV-TGNNDHHKIESLFKAFGRTLRQAIRIEGN---EMPSSKGVL")
02844         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query_start, 3)
02845         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query_end, 200)
02846         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct_start, 174)
02847         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct_end, 362)
02848         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query, "RISHITRNTKETQIELSINLD-----------------------GTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02849         self.assertEqual(record.rounds[1].alignments[16].hsps[0].match, "R + + RNT ET+I ++I LD                       G     + TGIGFLDHM   L  H+ + L++   GD   + +D HH  ED AIALG    + +GN  G++R+G    P+DEAL    +D+SGRPY V    L   +K+G    EM      + +  AGITLH+   YG N HH  E  FKS A A++ A S+  +   E+PS+KGVL")
02850         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct, "RRAFVERNTNETKISVAIALDKAPLPEESNFIDELITSKHANQKGEQVIQVDTGIGFLDHMYHALAKHAGWSLRLYSRGD---LIIDDHHTAEDTAIALGIAFKQAMGNFAGVKRFGHAYCPLDEALSRSVVDLSGRPYAVIDLGLK-REKVGELSCEMIPHLLYSFSVAAGITLHVTCLYGSNDHHRAESAFKSLAVAMRAATSL--TGSSEVPSTKGVL")
02851         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query_start, 3)
02852         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query_end, 200)
02853         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct_start, 2)
02854         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct_end, 216)
02855         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGI-TLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02856         self.assertEqual(record.rounds[1].alignments[17].hsps[0].match, "R ++I+R TKET I + ++LDGTG++ +S+GIGFLDHMLT L  HS FDL++   GD     +D HH  ED A+ LG+     LG++ GI R+GS  +P+DEAL    +DIS R +   +  L     +G   +EM   FF + A  A + TLH++   G+N HH  E  FK+ A AL+ AV  D +    +PS+KGVL")
02857         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct, "REANISRVTKETSISVKLSLDGTGKSKVSSGIGFLDHMLTALAKHSRFDLELDCKGDT---WIDDHHTTEDCALTLGEAFDVALGDRAGIARFGSACVPLDEALSRAIVDISSRAHSEINLQLV-RPSVGELSSEMITHFFESFASAA-LXTLHVDVLRGRNDHHRAEASFKALAVALRTAVKHDAT--AGVPSTKGVL")
02858         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query_start, 3)
02859         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query_end, 200)
02860         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct_start, 260)
02861         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct_end, 451)
02862         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02863         self.assertEqual(record.rounds[1].alignments[18].hsps[0].match, "R +H+ RNTKETQI++S+ LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +AL + +   L +K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R ++QA+ ++      +PSSKGVL")
02864         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct, "RYAHVVRNTKETQIDVSVWLDREGNSKINTGVGFFDHMLDQIATHGGFRMEITVKGD---LYIDDHHTVEDTGLALREALKLALRDKRGICRFG-FVLPMDECLA-CALDISGRPHLEYKAEFT-YQRVGNLSTEMIEHFFRSLSYTMGVTLHLKT-KGKNDHHRVESLFKAFGRTVRQAIRVEG---DTLPSSKGVL")
02865         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query_start, 3)
02866         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query_end, 200)
02867         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct_start, 167)
02868         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct_end, 354)
02869         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVF--------HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02870         self.assertEqual(record.rounds[1].alignments[19].hsps[0].match, "+R + I R T+E+ I + ++LDGTGQ  + TG+ F DHMLT L  H+ FDL +   GD E   ++ HH IED AIALG  + + LG+K GIRR+G   IPMDE L    +D+SGRPY V         H  ++G+     Y T +    F +LA NA I LH+   YG++ HHI E  +K+ ARAL+QAV  D   V  +PS+KG L")
02871         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct, "SRRARIERRTRESDIVIELDLDGTGQVAVDTGVPFYDHMLTALGSHASFDLTVRATGDVE---IEAHHTIEDTAIALGTALGQALGDKRGIRRFGDAFIPMDETLAHAAVDLSGRPYCVHTGEPDHLQHTTIAGSSV--PYHTVINRHVFESLAANARIALHVRVLYGRDPHHITEAQYKAVARALRQAVEPDPR-VSGVPSTKGAL")
02872         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query_start, 2)
02873         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query_end, 200)
02874         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct_start, 10)
02875         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct_end, 210)
02876         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02877         self.assertEqual(record.rounds[1].alignments[20].hsps[0].match, "R S  TR T ET +++ + +DG+G++ ++TG+GFLDHML  +  H   DL++   GD E   +D HH +EDVA+ LG+ + E LG+K GIRR     +PMD+AL T  LD+SGRPY V   +   +  +G   ++    F  +LA +A + +H +   G+N HH  E +FK+ A A++ AV ++    GEIPS+KG L")
02878         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct, "RRSMKTRETLETHVKVDLEIDGSGKSSVNTGLGFLDHMLESVARHGLLDLEVEARGDLE---VDDHHTVEDVALTLGEALREALGDKSGIRRMAHAMVPMDDALATVALDLSGRPYTVLELEFD-DAVIGDVKSQNIGHFIESLAVSAAMNIHASV-RGRNDHHKAEALFKALALAIRDAVRVEH---GEIPSTKGKL")
02879         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query_start, 3)
02880         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query_end, 200)
02881         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct_start, 5)
02882         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct_end, 194)
02883         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKG")
02884         self.assertEqual(record.rounds[1].alignments[21].hsps[0].match, "RI  + R TKET I L IN+DGTG+  I TGI F DH+L     H  FDL +   GD E   +D HH +EDV I LG  +++    K  I R+G   IPMD+A  T  +D+SGR Y V + +    + +G   TE    FF ++A    + +H     G+N HH  E +FK+   AL  A  IDE K   + S+KG")
02885         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct, "RIFEVMRETKETNIYLKINIDGTGKYKIDTGIPFFDHLLASFAKHGCFDLIVKARGDLE---IDDHHTVEDVGICLGLALNQI--EKRNIFRFGWAIIPMDDARATVAIDLSGRSYCVGNYE-PKREFVGDLATENINHFFESVASYGMLNIHYEVI-GKNEHHKAEALFKAFGVALDLATKIDERK--GVISTKG")
02886         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query_start, 3)
02887         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query_end, 198)
02888         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct_start, 7)
02889         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct_end, 193)
02890         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALK")
02891         self.assertEqual(record.rounds[1].alignments[22].hsps[0].match, "R + ++R+T ET I++++++DG                        +    I+TGIGFLDHML  L  H+ + + +   GD   + +D HH  ED  IA+G   ++ LG   G+ R+G    P+DEAL    +D+S RPY V    L   +KLG    EM     ++ A  A ITLH++   G N HH  E  FK+ A A++")
02892         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct, "RAAALSRDTNETSIQIALSIDGGELPQDADPRLLEASSAHASQTSKSQVISINTGIGFLDHMLHALAKHAGWSMALNCKGD---LHIDDHHTAEDCCIAVGTTFAKALGALTGVARFGYAYAPLDEALSRAVVDLSNRPYTVVDLGLK-REKLGELSCEMIPHCLQSFAQAARITLHVDCLRGDNDHHRAESAFKALAVAVR")
02893         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query_start, 3)
02894         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query_end, 180)
02895         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct_start, 8)
02896         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct_end, 205)
02897         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
02898         self.assertEqual(record.rounds[1].alignments[23].hsps[0].match, "M+R ++ITR TKET+IE+ +++D  G+  +ST I F +HML  L  + +    +      + +  D HH++EDVAI LG  I   LG+K GI+R+    IPMD+ALV   LDIS R     + +L  ++ +GG  TE    FF++ A+N+GITLH+++  G NTHHIIE  FK+   AL +A  I ++   EI S+KG++")
02899         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct, "MSRSANITRETKETKIEVLLDIDRKGEVKVSTPIPFFNHMLITLLTYMNSTAIVSAT---DKLPYDDHHIVEDVAITLGLAIKTALGDKRGIKRFSHQIIPMDDALVLVSLDISNRGMAFVNLNLKRSE-IGGLATENVPHFFQSFAYNSGITLHISQLSGYNTHHIIEASFKALGLALYEATRIVDN---EIRSTKGII")
02900         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query_start, 1)
02901         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query_end, 200)
02902         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct_start, 1)
02903         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct_end, 193)
02904 
02905     def _check_bt009_footer(self, record):
02906         self.assertEqual(record.database_name, ['data/swissprot'])
02907         self.assertEqual(record.num_letters_in_database, [29652561])
02908         self.assertEqual(record.num_sequences_in_database, [82258])
02909         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
02910         self.assertEqual(len(record.ka_params), 3)
02911         self.assertAlmostEqual(record.ka_params[0], 0.317)
02912         self.assertAlmostEqual(record.ka_params[1], 0.149)
02913         self.assertAlmostEqual(record.ka_params[2], 0.479)
02914         self.assertEqual(len(record.ka_params_gap), 3)
02915         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
02916         self.assertAlmostEqual(record.ka_params_gap[1], 0.0524)
02917         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
02918         self.assertEqual(record.matrix, 'BLOSUM62')
02919         self.assertEqual(record.gap_penalties, [11,1])
02920         self.assertEqual(record.num_hits, 23641501)
02921         self.assertEqual(record.num_sequences, 82258)
02922         self.assertEqual(record.num_extends, 1047546)
02923         self.assertEqual(record.num_good_extends, 2481)
02924         self.assertEqual(record.num_seqs_better_e, 54)
02925         self.assertEqual(record.hsps_no_gap, 48)
02926         self.assertEqual(record.hsps_prelim_gapped, 6)
02927         self.assertEqual(record.hsps_gapped, 56)
02928         self.assertEqual(record.query_length, 200)
02929         self.assertEqual(record.database_length, 29652561)
02930         self.assertEqual(record.effective_hsp_length, 50)
02931         self.assertEqual(record.effective_query_length, 150)
02932         self.assertEqual(record.effective_database_length, 25539661)
02933         self.assertEqual(record.effective_search_space, 3830949150)
02934         self.assertEqual(record.effective_search_space_used, 3830949150)
02935         self.assertEqual(record.threshold, 11)
02936         self.assertEqual(record.window_size, 40)
02937         self.assertEqual(len(record.dropoff_1st_pass), 2)
02938         self.assertEqual(record.dropoff_1st_pass[0], 16)
02939         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
02940         self.assertEqual(len(record.gap_x_dropoff), 2)
02941         self.assertEqual(record.gap_x_dropoff[0], 38)
02942         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
02943         self.assertEqual(len(record.gap_x_dropoff_final), 2)
02944         self.assertEqual(record.gap_x_dropoff_final[0], 64)
02945         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
02946         self.assertEqual(len(record.gap_trigger), 2)
02947         self.assertEqual(record.gap_trigger[0], 41)
02948         self.assertAlmostEqual(record.gap_trigger[1], 21.5)
02949         self.assertEqual(len(record.blast_cutoff), 2)
02950         self.assertEqual(record.blast_cutoff[0], 63)
02951         self.assertAlmostEqual(record.blast_cutoff[1], 28.8)
02952 
02953     def test_bt010(self):
02954         "Test parsing BLASTN 2.0.10 output (bt010)"
02955 
02956         path = os.path.join('Blast', 'bt010.txt')
02957         handle = open(path)
02958         record = self.parser.parse(handle)
02959         handle.close()
02960         self.assertEqual(record.application, "BLASTN")
02961         self.assertEqual(record.version, '2.0.10')
02962         self.assertEqual(record.date, "Aug-26-1999")
02963         self.assertEqual(record.reference, TestNCBITextParser.reference)
02964         self.assertEqual(record.query, "gi|1348916|gb|G26684|G26684 human STS\nSTS_D11570.\x01gi|1375195|gb|G26945|G26945 human STS SHGC-32699.")
02965         self.assertEqual(record.query_letters, 285)
02966         self.assertEqual(record.database, "data/sts")
02967         self.assertEqual(record.database_sequences, 87792)
02968         self.assertEqual(record.database_letters, 31998854)
02969         self.assertEqual(len(record.descriptions), 4)
02970         self.assertEqual(record.descriptions[0].title, "gi|1348916|gb|G26684|G26684 human STS STS_D11570. >gi|1375195|g...")
02971         self.assertEqual(record.descriptions[0].score, 517)
02972         self.assertAlmostEqual(record.descriptions[0].e, 1e-146)
02973         self.assertEqual(record.descriptions[1].title, "gi|720683|gb|G03725|G03725 human STS WI-344.")
02974         self.assertEqual(record.descriptions[1].score, 32)
02975         self.assertAlmostEqual(record.descriptions[1].e, 1.6)
02976         self.assertEqual(record.descriptions[2].title, "gi|4516686|dbj|AU026763.1|AU026763 Rattus norvegicus, OTSUKA cl...")
02977         self.assertEqual(record.descriptions[2].score, 32)
02978         self.assertAlmostEqual(record.descriptions[2].e, 1.6)
02979         self.assertEqual(record.descriptions[3].title, "gi|6120827|gb|G55508.1|G55508 SHGC-100856 Human Homo sapiens ST...")
02980         self.assertEqual(record.descriptions[3].score, 32)
02981         self.assertAlmostEqual(record.descriptions[3].e, 1.6)
02982         self.assertEqual(len(record.alignments), 4)
02983         self.assertEqual(record.alignments[0].title, ">gi|1348916|gb|G26684|G26684 human STS STS_D11570. >gi|1375195|gb|G26945|G26945 human STS SHGC-32699.")
02984         self.assertEqual(record.alignments[0].length, 285)
02985         self.assertEqual(record.alignments[1].title, ">gi|720683|gb|G03725|G03725 human STS WI-344.")
02986         self.assertEqual(record.alignments[1].length, 246)
02987         self.assertEqual(record.alignments[2].title, ">gi|4516686|dbj|AU026763.1|AU026763 Rattus norvegicus, OTSUKA clone, OT33.16/752f07, microsatellite sequence, sequence tagged site")
02988         self.assertEqual(record.alignments[2].length, 307)
02989         self.assertEqual(record.alignments[3].title, ">gi|6120827|gb|G55508.1|G55508 SHGC-100856 Human Homo sapiens STS genomic, sequence tagged site")
02990         self.assertEqual(record.alignments[3].length, 711)
02991         self.assertEqual(record.alignments[0].hsps[0].score, 261)
02992         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 517)
02993         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 1e-146)
02994         self.assertEqual(len(record.alignments[0].hsps), 1)
02995         self.assertEqual(record.alignments[1].hsps[0].score, 16)
02996         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 32.2)
02997         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 1.6)
02998         self.assertEqual(len(record.alignments[1].hsps), 1)
02999         self.assertEqual(record.alignments[2].hsps[0].score, 16)
03000         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 32.2)
03001         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 1.6)
03002         self.assertEqual(len(record.alignments[2].hsps), 1)
03003         self.assertEqual(record.alignments[3].hsps[0].score, 16)
03004         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 32.2)
03005         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 1.6)
03006         self.assertEqual(len(record.alignments[3].hsps), 1)
03007         self.assertEqual(record.alignments[0].hsps[0].identities, (285, 285))
03008         self.assertEqual(record.alignments[1].hsps[0].identities, (16, 16))
03009         self.assertEqual(record.alignments[2].hsps[0].identities, (16, 16))
03010         self.assertEqual(record.alignments[3].hsps[0].identities, (18, 19))
03011         self.assertEqual(record.alignments[0].hsps[0].strand, ("Plus", "Plus"))
03012         self.assertEqual(record.alignments[1].hsps[0].strand, ("Plus", "Minus"))
03013         self.assertEqual(record.alignments[2].hsps[0].strand, ("Plus", "Plus"))
03014         self.assertEqual(record.alignments[3].hsps[0].strand, ("Plus", "Plus"))
03015         self.assertEqual(record.alignments[0].hsps[0].query, "gatccctacccttnccgttggtctctntcgctgactcgaggcacctaacatccattcacacccaacacaggccagcgacttctggggctcagccacagacatggtttgtnactnttgagcttctgttcctagagaatcctagaggcttgattggcccaggctgctgtntgtnctggaggcaaagaatccctacctcctaggggtgaaaggaaatnaaaatggaaagttcttgtagcgcaaggcctgacatgggtagctgctcaataaatgctagtntgttatttc")
03016         self.assertEqual(record.alignments[0].hsps[0].match, "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
03017         self.assertEqual(record.alignments[0].hsps[0].sbjct, "gatccctacccttnccgttggtctctntcgctgactcgaggcacctaacatccattcacacccaacacaggccagcgacttctggggctcagccacagacatggtttgtnactnttgagcttctgttcctagagaatcctagaggcttgattggcccaggctgctgtntgtnctggaggcaaagaatccctacctcctaggggtgaaaggaaatnaaaatggaaagttcttgtagcgcaaggcctgacatgggtagctgctcaataaatgctagtntgttatttc")
03018         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
03019         self.assertEqual(record.alignments[0].hsps[0].query_end, 285)
03020         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
03021         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 285)
03022         self.assertEqual(record.alignments[1].hsps[0].query, "ctcaataaatgctagt")
03023         self.assertEqual(record.alignments[1].hsps[0].match, "||||||||||||||||")
03024         self.assertEqual(record.alignments[1].hsps[0].sbjct, "ctcaataaatgctagt")
03025         self.assertEqual(record.alignments[1].hsps[0].query_start, 260)
03026         self.assertEqual(record.alignments[1].hsps[0].query_end, 275)
03027         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 178)
03028         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 163)
03029         self.assertEqual(record.alignments[2].hsps[0].query, "ggaaagttcttgtagc")
03030         self.assertEqual(record.alignments[2].hsps[0].match, "||||||||||||||||")
03031         self.assertEqual(record.alignments[2].hsps[0].sbjct, "ggaaagttcttgtagc")
03032         self.assertEqual(record.alignments[2].hsps[0].query_start, 221)
03033         self.assertEqual(record.alignments[2].hsps[0].query_end, 236)
03034         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 32)
03035         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 47)
03036         self.assertEqual(record.alignments[3].hsps[0].query, "gaaatnaaaatggaaagtt")
03037         self.assertEqual(record.alignments[3].hsps[0].match, "||||| |||||||||||||")
03038         self.assertEqual(record.alignments[3].hsps[0].sbjct, "gaaataaaaatggaaagtt")
03039         self.assertEqual(record.alignments[3].hsps[0].query_start, 210)
03040         self.assertEqual(record.alignments[3].hsps[0].query_end, 228)
03041         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 588)
03042         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 606)
03043         self.assertEqual(record.database_name, ['data/sts'])
03044         self.assertEqual(record.num_letters_in_database, [31998854])
03045         self.assertEqual(record.num_sequences_in_database, [87792])
03046         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
03047         self.assertEqual(len(record.ka_params), 3)
03048         self.assertAlmostEqual(record.ka_params[0], 1.37)
03049         self.assertAlmostEqual(record.ka_params[1], 0.711)
03050         self.assertAlmostEqual(record.ka_params[2], 1.31)
03051         self.assertEqual(len(record.ka_params_gap), 3)
03052         self.assertAlmostEqual(record.ka_params_gap[0], 1.37)
03053         self.assertAlmostEqual(record.ka_params_gap[1], 0.711)
03054         self.assertAlmostEqual(record.ka_params_gap[2], 1.31)
03055         self.assertEqual(record.matrix, 'blastn matrix:1 -3')
03056         self.assertEqual(record.gap_penalties, [5,2])
03057         self.assertEqual(record.num_hits, 3835)
03058         self.assertEqual(record.num_sequences, 87792)
03059         self.assertEqual(record.num_extends, 3835)
03060         self.assertEqual(record.num_good_extends, 1155)
03061         self.assertEqual(record.num_seqs_better_e, 4)
03062         self.assertEqual(record.query_length, 285)
03063         self.assertEqual(record.database_length, 31998854)
03064         self.assertEqual(record.effective_hsp_length, 17)
03065         self.assertEqual(record.effective_query_length, 268)
03066         self.assertEqual(record.effective_database_length, 30506390)
03067         self.assertEqual(record.effective_search_space, 8175712520)
03068         self.assertEqual(record.effective_search_space_used, 8175712520)
03069         self.assertEqual(record.threshold, 0)
03070         self.assertEqual(record.window_size, 0)
03071         self.assertEqual(len(record.dropoff_1st_pass), 2)
03072         self.assertEqual(record.dropoff_1st_pass[0], 6)
03073         self.assertAlmostEqual(record.dropoff_1st_pass[1], 11.9)
03074         self.assertEqual(len(record.gap_x_dropoff), 2)
03075         self.assertEqual(record.gap_x_dropoff[0], 25)
03076         self.assertAlmostEqual(record.gap_x_dropoff[1], 49.6)
03077         self.assertEqual(len(record.gap_trigger), 2)
03078         self.assertEqual(record.gap_trigger[0], 12)
03079         self.assertAlmostEqual(record.gap_trigger[1], 24.3)
03080         self.assertEqual(len(record.blast_cutoff), 2)
03081         self.assertEqual(record.blast_cutoff[0], 15)
03082         self.assertAlmostEqual(record.blast_cutoff[1], 30.2)
03083 
03084     def test_bt011(self):
03085         "Test parsing BLASTN 2.0.10 output without alignments (bt011)"
03086 
03087         path = os.path.join('Blast', 'bt011.txt')
03088         handle = open(path)
03089         record = self.parser.parse(handle)
03090         handle.close()
03091         self.assertEqual(record.application, "BLASTN")
03092         self.assertEqual(record.version, '2.0.10')
03093         self.assertEqual(record.date, "Aug-26-1999")
03094         self.assertEqual(record.reference, TestNCBITextParser.reference)
03095         self.assertEqual(record.query, "gi|1348400|gb|G26168|G26168 human STS\nEST47274.\x01gi|1375380|gb|G27130|G27130 human STS SHGC-32751.")
03096         self.assertEqual(record.query_letters, 434)
03097         self.assertEqual(record.database, "data/sts")
03098         self.assertEqual(record.database_sequences, 87792)
03099         self.assertEqual(record.database_letters, 31998854)
03100         self.assertEqual(len(record.descriptions), 19)
03101         self.assertEqual(record.descriptions[0].title, "gi|1348400|gb|G26168|G26168 human STS EST47274. >gi|1375380|gb|...")
03102         self.assertEqual(record.descriptions[0].score, 718)
03103         self.assertAlmostEqual(record.descriptions[0].e, 0.0)
03104         self.assertEqual(record.descriptions[1].title, "gi|6121436|gb|G56117.1|G56117 SHGC-101583 Human Homo sapiens ST...")
03105         self.assertEqual(record.descriptions[1].score, 34)
03106         self.assertAlmostEqual(record.descriptions[1].e, 0.65)
03107         self.assertEqual(record.descriptions[2].title, "gi|4632200|dbj|AU047565.1|AU047565 Rattus norvegicus, OTSUKA cl...")
03108         self.assertEqual(record.descriptions[2].score, 34)
03109         self.assertAlmostEqual(record.descriptions[2].e, 0.65)
03110         self.assertEqual(record.descriptions[3].title, "gi|3249175|gb|G38401|G38401 SHGC-57345 Human Homo sapiens STS g...")
03111         self.assertEqual(record.descriptions[3].score, 34)
03112         self.assertAlmostEqual(record.descriptions[3].e, 0.65)
03113         self.assertEqual(record.descriptions[4].title, "gi|605557|gb|L31312|HUMUT937B Human STS UT937, 3' primer bind.")
03114         self.assertEqual(record.descriptions[4].score, 34)
03115         self.assertAlmostEqual(record.descriptions[4].e, 0.65)
03116         self.assertEqual(record.descriptions[5].title, "gi|720383|gb|G03425|G03425 human STS WI-5868.")
03117         self.assertEqual(record.descriptions[5].score, 34)
03118         self.assertAlmostEqual(record.descriptions[5].e, 0.65)
03119         self.assertEqual(record.descriptions[6].title, "gi|859592|gb|G06347|G06347 human STS WI-7005.")
03120         self.assertEqual(record.descriptions[6].score, 32)
03121         self.assertAlmostEqual(record.descriptions[6].e, 2.6)
03122         self.assertEqual(record.descriptions[7].title, "gi|6121347|gb|G56178.1|G56178 SHGC-101470 Human Homo sapiens ST...")
03123         self.assertEqual(record.descriptions[7].score, 32)
03124         self.assertAlmostEqual(record.descriptions[7].e, 2.6)
03125         self.assertEqual(record.descriptions[8].title, "gi|1233216|emb|Z51916|HSA082WB5 H.sapiens (D1S2890) DNA segment...")
03126         self.assertEqual(record.descriptions[8].score, 32)
03127         self.assertAlmostEqual(record.descriptions[8].e, 2.6)
03128         self.assertEqual(record.descriptions[9].title, "gi|1232198|emb|Z50898|HS038XD8 H.sapiens (D18S1106) DNA segment...")
03129         self.assertEqual(record.descriptions[9].score, 32)
03130         self.assertAlmostEqual(record.descriptions[9].e, 2.6)
03131         self.assertEqual(record.descriptions[10].title, "gi|1348143|gb|G25911|G25911 human STS EST349382.")
03132         self.assertEqual(record.descriptions[10].score, 32)
03133         self.assertAlmostEqual(record.descriptions[10].e, 2.6)
03134         self.assertEqual(record.descriptions[11].title, "gi|6122805|gb|G57486.1|G57486 SHGC-103345 Human Homo sapiens ST...")
03135         self.assertEqual(record.descriptions[11].score, 32)
03136         self.assertAlmostEqual(record.descriptions[11].e, 2.6)
03137         self.assertEqual(record.descriptions[12].title, "gi|1396897|gb|G28178|G28178 human STS SHGC-34170.")
03138         self.assertEqual(record.descriptions[12].score, 32)
03139         self.assertAlmostEqual(record.descriptions[12].e, 2.6)
03140         self.assertEqual(record.descriptions[13].title, "gi|3893806|emb|AL034156|HSPE59A01 H.sapiens flow-sorted chromos...")
03141         self.assertEqual(record.descriptions[13].score, 32)
03142         self.assertAlmostEqual(record.descriptions[13].e, 2.6)
03143         self.assertEqual(record.descriptions[14].title, "gi|1161890|gb|G16001|G16001 human STS CHLC.GCT8D08.P11278 clone...")
03144         self.assertEqual(record.descriptions[14].score, 32)
03145         self.assertAlmostEqual(record.descriptions[14].e, 2.6)
03146         self.assertEqual(record.descriptions[15].title, "gi|1017612|gb|G11520|G11520 human STS SHGC-14676.")
03147         self.assertEqual(record.descriptions[15].score, 32)
03148         self.assertAlmostEqual(record.descriptions[15].e, 2.6)
03149         self.assertEqual(record.descriptions[16].title, "gi|1130137|gb|G14398|G14398 human STS SHGC-9310 clone pG-5191.")
03150         self.assertEqual(record.descriptions[16].score, 32)
03151         self.assertAlmostEqual(record.descriptions[16].e, 2.6)
03152         self.assertEqual(record.descriptions[17].title, "gi|5224295|gb|G52968.1|G52968 SHGC-86325 Human Homo sapiens STS...")
03153         self.assertEqual(record.descriptions[17].score, 32)
03154         self.assertAlmostEqual(record.descriptions[17].e, 2.6)
03155         self.assertEqual(record.descriptions[18].title, "gi|6123581|gb|G58262.1|G58262 SHGC-104352 Human Homo sapiens ST...")
03156         self.assertEqual(record.descriptions[18].score, 32)
03157         self.assertAlmostEqual(record.descriptions[18].e, 2.6)
03158         self.assertEqual(len(record.alignments), 0)
03159         self.assertEqual(record.database_name, ['data/sts'])
03160         self.assertEqual(record.num_letters_in_database, [31998854])
03161         self.assertEqual(record.num_sequences_in_database, [87792])
03162         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
03163         self.assertEqual(len(record.ka_params), 3)
03164         self.assertAlmostEqual(record.ka_params[0], 1.37)
03165         self.assertAlmostEqual(record.ka_params[1], 0.711)
03166         self.assertAlmostEqual(record.ka_params[2], 1.31)
03167         self.assertEqual(len(record.ka_params_gap), 3)
03168         self.assertAlmostEqual(record.ka_params_gap[0], 1.37)
03169         self.assertAlmostEqual(record.ka_params_gap[1], 0.711)
03170         self.assertAlmostEqual(record.ka_params_gap[2], 1.31)
03171         self.assertEqual(record.matrix, 'blastn matrix:1 -3')
03172         self.assertEqual(record.gap_penalties, [5,2])
03173         self.assertEqual(record.num_hits, 8762)
03174         self.assertEqual(record.num_sequences, 87792)
03175         self.assertEqual(record.num_extends, 8762)
03176         self.assertEqual(record.num_good_extends, 2655)
03177         self.assertEqual(record.num_seqs_better_e, 27)
03178         self.assertEqual(record.query_length, 434)
03179         self.assertEqual(record.database_length, 31998854)
03180         self.assertEqual(record.effective_hsp_length, 17)
03181         self.assertEqual(record.effective_query_length, 417)
03182         self.assertEqual(record.effective_database_length, 30506390)
03183         self.assertEqual(record.effective_search_space, 12721164630)
03184         self.assertEqual(record.effective_search_space_used, 12721164630)
03185         self.assertEqual(record.threshold, 0)
03186         self.assertEqual(record.window_size, 0)
03187         self.assertEqual(len(record.dropoff_1st_pass), 2)
03188         self.assertEqual(record.dropoff_1st_pass[0], 6)
03189         self.assertAlmostEqual(record.dropoff_1st_pass[1], 11.9)
03190         self.assertEqual(len(record.gap_x_dropoff), 2)
03191         self.assertEqual(record.gap_x_dropoff[0], 25)
03192         self.assertAlmostEqual(record.gap_x_dropoff[1], 49.6)
03193         self.assertEqual(len(record.gap_trigger), 2)
03194         self.assertEqual(record.gap_trigger[0], 12)
03195         self.assertAlmostEqual(record.gap_trigger[1], 24.3)
03196         self.assertEqual(len(record.blast_cutoff), 2)
03197         self.assertEqual(record.blast_cutoff[0], 16)
03198         self.assertAlmostEqual(record.blast_cutoff[1], 32.2)
03199 
03200     def test_bt012(self):
03201         "Test parsing BLASTN 2.0.10 output without descriptions (bt012)"
03202 
03203         path = os.path.join('Blast', 'bt012.txt')
03204         handle = open(path)
03205         record = self.parser.parse(handle)
03206         handle.close()
03207         self.assertEqual(record.application, "BLASTN")
03208         self.assertEqual(record.version, '2.0.10')
03209         self.assertEqual(record.date, "Aug-26-1999")
03210         self.assertEqual(record.reference, TestNCBITextParser.reference)
03211         self.assertEqual(record.query, "gi|1347201|gb|G24969|G24969 human STS\nEST21946.\x01gi|1375315|gb|G27065|G27065 human STS SHGC-31731.")
03212         self.assertEqual(record.query_letters, 331)
03213         self.assertEqual(record.database, "data/sts")
03214         self.assertEqual(record.database_sequences, 87792)
03215         self.assertEqual(record.database_letters, 31998854)
03216         self.assertEqual(len(record.descriptions), 0)
03217         self.assertEqual(len(record.alignments), 9)
03218         self.assertEqual(record.alignments[0].title, ">gi|1347201|gb|G24969|G24969 human STS EST21946. >gi|1375315|gb|G27065|G27065 human STS SHGC-31731.")
03219         self.assertEqual(record.alignments[0].length, 331)
03220         self.assertEqual(record.alignments[1].title, ">gi|2665277|emb|AL010115|HSPE77H4 H.sapiens flow-sorted chromosome 1 HindIII fragment, SC1pE77H4, sequence tagged site [Homo sapiens]")
03221         self.assertEqual(record.alignments[1].length, 554)
03222         self.assertEqual(record.alignments[2].title, ">gi|6120731|gb|G55412.1|G55412 SHGC-100745 Human Homo sapiens STS genomic, sequence tagged site")
03223         self.assertEqual(record.alignments[2].length, 652)
03224         self.assertEqual(record.alignments[3].title, ">gi|4493602|gb|G47248.1|G47248 Z17392_1 Zebrafish AB Danio rerio STS genomic clone Z17392 5', sequence tagged site")
03225         self.assertEqual(record.alignments[3].length, 454)
03226         self.assertEqual(record.alignments[4].title, ">gi|1342139|gb|G21813|G21813 human STS WI-12408.")
03227         self.assertEqual(record.alignments[4].length, 418)
03228         self.assertEqual(record.alignments[5].title, ">gi|1235411|emb|Z53965|HSC009WH1 H.sapiens (D2S2321) DNA segment containing (CA) repeat; clone AFMc009wh1; single read, sequence tagged site [Homo sapiens]")
03229         self.assertEqual(record.alignments[5].length, 382)
03230         self.assertEqual(record.alignments[6].title, ">gi|4757440|gb|G49267.1|G49267 stbK343C1_96809 chromosome 22 genomic clone Homo sapiens STS genomic clone 343C1, sequence tagged site")
03231         self.assertEqual(record.alignments[6].length, 360)
03232         self.assertEqual(record.alignments[7].title, ">gi|719782|gb|G02824|G02824 human STS WI-1312.")
03233         self.assertEqual(record.alignments[7].length, 349)
03234         self.assertEqual(record.alignments[8].title, ">gi|939357|gb|G08807|G08807 human STS CHLC.GATA70E11.P18111 clone GATA70E11")
03235         self.assertEqual(record.alignments[8].length, 643)
03236         self.assertEqual(record.alignments[0].hsps[0].score, 331)
03237         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 656)
03238         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 0.0)
03239         self.assertEqual(len(record.alignments[0].hsps), 1)
03240         self.assertEqual(record.alignments[1].hsps[0].score, 17)
03241         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 34.2)
03242         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 0.49)
03243         self.assertEqual(len(record.alignments[1].hsps), 1)
03244         self.assertEqual(record.alignments[2].hsps[0].score, 16)
03245         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 32.2)
03246         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 1.9)
03247         self.assertEqual(len(record.alignments[2].hsps), 1)
03248         self.assertEqual(record.alignments[3].hsps[0].score, 16)
03249         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 32.2)
03250         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 1.9)
03251         self.assertEqual(len(record.alignments[3].hsps), 1)
03252         self.assertEqual(record.alignments[4].hsps[0].score, 16)
03253         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 32.2)
03254         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 1.9)
03255         self.assertEqual(len(record.alignments[4].hsps), 1)
03256         self.assertEqual(record.alignments[5].hsps[0].score, 16)
03257         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 32.2)
03258         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 1.9)
03259         self.assertEqual(len(record.alignments[5].hsps), 1)
03260         self.assertEqual(record.alignments[6].hsps[0].score, 16)
03261         self.assertAlmostEqual(record.alignments[6].hsps[0].bits, 32.2)
03262         self.assertAlmostEqual(record.alignments[6].hsps[0].expect, 1.9)
03263         self.assertEqual(len(record.alignments[6].hsps), 1)
03264         self.assertEqual(record.alignments[7].hsps[0].score, 16)
03265         self.assertAlmostEqual(record.alignments[7].hsps[0].bits, 32.2)
03266         self.assertAlmostEqual(record.alignments[7].hsps[0].expect, 1.9)
03267         self.assertEqual(len(record.alignments[7].hsps), 1)
03268         self.assertEqual(record.alignments[8].hsps[0].score, 16)
03269         self.assertAlmostEqual(record.alignments[8].hsps[0].bits, 32.2)
03270         self.assertAlmostEqual(record.alignments[8].hsps[0].expect, 1.9)
03271         self.assertEqual(len(record.alignments[8].hsps), 1)
03272         self.assertEqual(record.alignments[0].hsps[0].identities, (331, 331))
03273         self.assertEqual(record.alignments[1].hsps[0].identities, (17, 17))
03274         self.assertEqual(record.alignments[2].hsps[0].identities, (16, 16))
03275         self.assertEqual(record.alignments[3].hsps[0].identities, (16, 16))
03276         self.assertEqual(record.alignments[4].hsps[0].identities, (16, 16))
03277         self.assertEqual(record.alignments[5].hsps[0].identities, (16, 16))
03278         self.assertEqual(record.alignments[6].hsps[0].identities, (22, 24))
03279         self.assertEqual(record.alignments[7].hsps[0].identities, (16, 16))
03280         self.assertEqual(record.alignments[8].hsps[0].identities, (16, 16))
03281         self.assertEqual(record.alignments[0].hsps[0].strand, ("Plus", "Plus"))
03282         self.assertEqual(record.alignments[1].hsps[0].strand, ("Plus", "Minus"))
03283         self.assertEqual(record.alignments[2].hsps[0].strand, ("Plus", "Minus"))
03284         self.assertEqual(record.alignments[3].hsps[0].strand, ("Plus", "Plus"))
03285         self.assertEqual(record.alignments[4].hsps[0].strand, ("Plus", "Minus"))
03286         self.assertEqual(record.alignments[5].hsps[0].strand, ("Plus", "Plus"))
03287         self.assertEqual(record.alignments[6].hsps[0].strand, ("Plus", "Minus"))
03288         self.assertEqual(record.alignments[7].hsps[0].strand, ("Plus", "Plus"))
03289         self.assertEqual(record.alignments[8].hsps[0].strand, ("Plus", "Minus"))
03290         self.assertEqual(record.alignments[0].hsps[0].query, "cctccaccctctcatgagcaacaggatatgtgaaagtacttgcagccagaagcaaaaccacaatcctcgggtgctagatggagctccccaaggagcagagaggaaaaggcaggaggagagggccaggcagcagggatggagactaagtttggcccaaggctgcccgcaagcactgatgccatcatgccctctggtaggtgtctatttctgtctgaaccagaaatacaccaagctccacacatgggggctttgctggcttcgacatcactggttcaactatgtcactgctttgttatatttagtgctccagaacctcaggttccttcagatt")
03291         self.assertEqual(record.alignments[0].hsps[0].match, "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
03292         self.assertEqual(record.alignments[0].hsps[0].sbjct, "cctccaccctctcatgagcaacaggatatgtgaaagtacttgcagccagaagcaaaaccacaatcctcgggtgctagatggagctccccaaggagcagagaggaaaaggcaggaggagagggccaggcagcagggatggagactaagtttggcccaaggctgcccgcaagcactgatgccatcatgccctctggtaggtgtctatttctgtctgaaccagaaatacaccaagctccacacatgggggctttgctggcttcgacatcactggttcaactatgtcactgctttgttatatttagtgctccagaacctcaggttccttcagatt")
03293         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
03294         self.assertEqual(record.alignments[0].hsps[0].query_end, 331)
03295         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
03296         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 331)
03297         self.assertEqual(record.alignments[1].hsps[0].query, "ccaggcagcagggatgg")
03298         self.assertEqual(record.alignments[1].hsps[0].match, "|||||||||||||||||")
03299         self.assertEqual(record.alignments[1].hsps[0].sbjct, "ccaggcagcagggatgg")
03300         self.assertEqual(record.alignments[1].hsps[0].query_start, 123)
03301         self.assertEqual(record.alignments[1].hsps[0].query_end, 139)
03302         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 434)
03303         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 418)
03304         self.assertEqual(record.alignments[2].hsps[0].query, "agaggaaaaggcagga")
03305         self.assertEqual(record.alignments[2].hsps[0].match, "||||||||||||||||")
03306         self.assertEqual(record.alignments[2].hsps[0].sbjct, "agaggaaaaggcagga")
03307         self.assertEqual(record.alignments[2].hsps[0].query_start, 99)
03308         self.assertEqual(record.alignments[2].hsps[0].query_end, 114)
03309         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 431)
03310         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 416)
03311         self.assertEqual(record.alignments[3].hsps[0].query, "agaagcaaaaccacaa")
03312         self.assertEqual(record.alignments[3].hsps[0].match, "||||||||||||||||")
03313         self.assertEqual(record.alignments[3].hsps[0].sbjct, "agaagcaaaaccacaa")
03314         self.assertEqual(record.alignments[3].hsps[0].query_start, 48)
03315         self.assertEqual(record.alignments[3].hsps[0].query_end, 63)
03316         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 434)
03317         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 449)
03318         self.assertEqual(record.alignments[4].hsps[0].query, "cagaagcaaaaccaca")
03319         self.assertEqual(record.alignments[4].hsps[0].match, "||||||||||||||||")
03320         self.assertEqual(record.alignments[4].hsps[0].sbjct, "cagaagcaaaaccaca")
03321         self.assertEqual(record.alignments[4].hsps[0].query_start, 47)
03322         self.assertEqual(record.alignments[4].hsps[0].query_end, 62)
03323         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 193)
03324         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 178)
03325         self.assertEqual(record.alignments[5].hsps[0].query, "agagaggaaaaggcag")
03326         self.assertEqual(record.alignments[5].hsps[0].match, "||||||||||||||||")
03327         self.assertEqual(record.alignments[5].hsps[0].sbjct, "agagaggaaaaggcag")
03328         self.assertEqual(record.alignments[5].hsps[0].query_start, 97)
03329         self.assertEqual(record.alignments[5].hsps[0].query_end, 112)
03330         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 107)
03331         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 122)
03332         self.assertEqual(record.alignments[6].hsps[0].query, "ggaggagagggccaggcagcaggg")
03333         self.assertEqual(record.alignments[6].hsps[0].match, "||||||||||| | ||||||||||")
03334         self.assertEqual(record.alignments[6].hsps[0].sbjct, "ggaggagaggggctggcagcaggg")
03335         self.assertEqual(record.alignments[6].hsps[0].query_start, 112)
03336         self.assertEqual(record.alignments[6].hsps[0].query_end, 135)
03337         self.assertEqual(record.alignments[6].hsps[0].sbjct_start, 287)
03338         self.assertEqual(record.alignments[6].hsps[0].sbjct_end, 264)
03339         self.assertEqual(record.alignments[7].hsps[0].query, "tgctttgttatattta")
03340         self.assertEqual(record.alignments[7].hsps[0].match, "||||||||||||||||")
03341         self.assertEqual(record.alignments[7].hsps[0].sbjct, "tgctttgttatattta")
03342         self.assertEqual(record.alignments[7].hsps[0].query_start, 286)
03343         self.assertEqual(record.alignments[7].hsps[0].query_end, 301)
03344         self.assertEqual(record.alignments[7].hsps[0].sbjct_start, 111)
03345         self.assertEqual(record.alignments[7].hsps[0].sbjct_end, 126)
03346         self.assertEqual(record.alignments[8].hsps[0].query, "gaggaaaaggcaggag")
03347         self.assertEqual(record.alignments[8].hsps[0].match, "||||||||||||||||")
03348         self.assertEqual(record.alignments[8].hsps[0].sbjct, "gaggaaaaggcaggag")
03349         self.assertEqual(record.alignments[8].hsps[0].query_start, 100)
03350         self.assertEqual(record.alignments[8].hsps[0].query_end, 115)
03351         self.assertEqual(record.alignments[8].hsps[0].sbjct_start, 482)
03352         self.assertEqual(record.alignments[8].hsps[0].sbjct_end, 467)
03353         self.assertEqual(record.database_name, ['data/sts'])
03354         self.assertEqual(record.num_letters_in_database, [31998854])
03355         self.assertEqual(record.num_sequences_in_database, [87792])
03356         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
03357         self.assertEqual(len(record.ka_params), 3)
03358         self.assertAlmostEqual(record.ka_params[0], 1.37)
03359         self.assertAlmostEqual(record.ka_params[1], 0.711)
03360         self.assertAlmostEqual(record.ka_params[2], 1.31)
03361         self.assertEqual(len(record.ka_params_gap), 3)
03362         self.assertAlmostEqual(record.ka_params_gap[0], 1.37)
03363         self.assertAlmostEqual(record.ka_params_gap[1], 0.711)
03364         self.assertAlmostEqual(record.ka_params_gap[2], 1.31)
03365         self.assertEqual(record.matrix, 'blastn matrix:1 -3')
03366         self.assertEqual(record.gap_penalties, [5,2])
03367         self.assertEqual(record.num_hits, 6844)
03368         self.assertEqual(record.num_sequences, 87792)
03369         self.assertEqual(record.num_extends, 6844)
03370         self.assertEqual(record.num_good_extends, 1887)
03371         self.assertEqual(record.num_seqs_better_e, 14)
03372         self.assertEqual(record.query_length, 331)
03373         self.assertEqual(record.database_length, 31998854)
03374         self.assertEqual(record.effective_hsp_length, 17)
03375         self.assertEqual(record.effective_query_length, 314)
03376         self.assertEqual(record.effective_database_length, 30506390)
03377         self.assertEqual(record.effective_search_space, 9579006460)
03378         self.assertEqual(record.effective_search_space_used, 9579006460)
03379         self.assertEqual(record.threshold, 0)
03380         self.assertEqual(record.window_size, 0)
03381         self.assertEqual(len(record.dropoff_1st_pass), 2)
03382         self.assertEqual(record.dropoff_1st_pass[0], 6)
03383         self.assertAlmostEqual(record.dropoff_1st_pass[1], 11.9)
03384         self.assertEqual(len(record.gap_x_dropoff), 2)
03385         self.assertEqual(record.gap_x_dropoff[0], 25)
03386         self.assertAlmostEqual(record.gap_x_dropoff[1], 49.6)
03387         self.assertEqual(len(record.gap_trigger), 2)
03388         self.assertEqual(record.gap_trigger[0], 12)
03389         self.assertAlmostEqual(record.gap_trigger[1], 24.3)
03390         self.assertEqual(len(record.blast_cutoff), 2)
03391         self.assertEqual(record.blast_cutoff[0], 15)
03392         self.assertAlmostEqual(record.blast_cutoff[1], 30.2)
03393 
03394     def test_bt013(self):
03395         "Test parsing BLASTN 2.0.10 output (bt013)"
03396 
03397         path = os.path.join('Blast', 'bt013.txt')
03398         handle = open(path)
03399         record = self.parser.parse(handle)
03400         handle.close()
03401         self.assertEqual(record.application, "BLASTN")
03402         self.assertEqual(record.version, '2.0.10')
03403         self.assertEqual(record.date, "Aug-26-1999")
03404         self.assertEqual(record.reference, TestNCBITextParser.reference)
03405         self.assertEqual(record.query, "gi|859351|gb|G06106|G06106 human STS WI-6344.")
03406         self.assertEqual(record.query_letters, 183)
03407         self.assertEqual(record.database, "data/sts")
03408         self.assertEqual(record.database_sequences, 87792)
03409         self.assertEqual(record.database_letters, 31998854)
03410         self.assertEqual(len(record.descriptions), 6)
03411         self.assertEqual(record.descriptions[0].title, "gi|859351|gb|G06106|G06106 human STS WI-6344.")
03412         self.assertEqual(record.descriptions[0].score, 327)
03413         self.assertAlmostEqual(record.descriptions[0].e, 1e-89)
03414         self.assertEqual(record.descriptions[1].title, "gi|1341350|gb|G21024|G21024 human STS WI-30979.")
03415         self.assertEqual(record.descriptions[1].score, 32)
03416         self.assertAlmostEqual(record.descriptions[1].e, 1.0)
03417         self.assertEqual(record.descriptions[2].title, "gi|6126285|gb|G60966.1|G60966 SHGC-84377 Human Homo sapiens STS...")
03418         self.assertEqual(record.descriptions[2].score, 30)
03419         self.assertAlmostEqual(record.descriptions[2].e, 4.1)
03420         self.assertEqual(record.descriptions[3].title, "gi|1340656|gb|G20319|G20319 human STS A005L39.")
03421         self.assertEqual(record.descriptions[3].score, 30)
03422         self.assertAlmostEqual(record.descriptions[3].e, 4.1)
03423         self.assertEqual(record.descriptions[4].title, "gi|5222421|gb|G51244.1|G51244 SHGC-80725 Human Homo sapiens STS...")
03424         self.assertEqual(record.descriptions[4].score, 30)
03425         self.assertAlmostEqual(record.descriptions[4].e, 4.1)
03426         self.assertEqual(record.descriptions[5].title, "gi|860526|gb|G07281|G07281 human STS WI-9430.")
03427         self.assertEqual(record.descriptions[5].score, 30)
03428         self.assertAlmostEqual(record.descriptions[5].e, 4.1)
03429         self.assertEqual(len(record.alignments), 0)
03430         self.assertEqual(record.database_name, ['data/sts'])
03431         self.assertEqual(record.num_letters_in_database, [31998854])
03432         self.assertEqual(record.num_sequences_in_database, [87792])
03433         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
03434         self.assertEqual(len(record.ka_params), 3)
03435         self.assertAlmostEqual(record.ka_params[0], 1.37)
03436         self.assertAlmostEqual(record.ka_params[1], 0.711)
03437         self.assertAlmostEqual(record.ka_params[2], 1.31)
03438         self.assertEqual(len(record.ka_params_gap), 3)
03439         self.assertAlmostEqual(record.ka_params_gap[0], 1.37)
03440         self.assertAlmostEqual(record.ka_params_gap[1], 0.711)
03441         self.assertAlmostEqual(record.ka_params_gap[2], 1.31)
03442         self.assertEqual(record.matrix, 'blastn matrix:1 -3')
03443         self.assertEqual(record.gap_penalties, [5,2])
03444         self.assertEqual(record.num_hits, 1902)
03445         self.assertEqual(record.num_sequences, 87792)
03446         self.assertEqual(record.num_extends, 1902)
03447         self.assertEqual(record.num_good_extends, 481)
03448         self.assertEqual(record.num_seqs_better_e, 8)
03449         self.assertEqual(record.query_length, 183)
03450         self.assertEqual(record.database_length, 31998854)
03451         self.assertEqual(record.effective_hsp_length, 16)
03452         self.assertEqual(record.effective_query_length, 167)
03453         self.assertEqual(record.effective_database_length, 30594182)
03454         self.assertEqual(record.effective_search_space, 5109228394)
03455         self.assertEqual(record.effective_search_space_used, 5109228394)
03456         self.assertEqual(record.threshold, 0)
03457         self.assertEqual(record.window_size, 0)
03458         self.assertEqual(len(record.dropoff_1st_pass), 2)
03459         self.assertEqual(record.dropoff_1st_pass[0], 6)
03460         self.assertAlmostEqual(record.dropoff_1st_pass[1], 11.9)
03461         self.assertEqual(len(record.gap_x_dropoff), 2)
03462         self.assertEqual(record.gap_x_dropoff[0], 25)
03463         self.assertAlmostEqual(record.gap_x_dropoff[1], 49.6)
03464         self.assertEqual(len(record.gap_trigger), 2)
03465         self.assertEqual(record.gap_trigger[0], 12)
03466         self.assertAlmostEqual(record.gap_trigger[1], 24.3)
03467         self.assertEqual(len(record.blast_cutoff), 2)
03468         self.assertEqual(record.blast_cutoff[0], 15)
03469         self.assertAlmostEqual(record.blast_cutoff[1], 30.2)
03470 
03471     def test_bt014(self):
03472         "Test parsing BLASTX 2.0.10 output (bt014)"
03473 
03474         path = os.path.join('Blast', 'bt014.txt')
03475         handle = open(path)
03476         record = self.parser.parse(handle)
03477         handle.close()
03478         self.assertEqual(record.application, "BLASTX")
03479         self.assertEqual(record.version, '2.0.10')
03480         self.assertEqual(record.date, "Aug-26-1999")
03481         self.assertEqual(record.reference, TestNCBITextParser.reference)
03482         self.assertEqual(record.query, "gi|1347369|gb|G25137|G25137 human STS EST48004.")
03483         self.assertEqual(record.query_letters, 556)
03484         self.assertEqual(record.database, "data/swissprot")
03485         self.assertEqual(record.database_sequences, 82258)
03486         self.assertEqual(record.database_letters, 29652561)
03487         self.assertEqual(len(record.descriptions), 4)
03488         self.assertEqual(record.descriptions[0].title, "gi|1731448|sp|P54103|ZRF1_MOUSE ZUOTIN RELATED FACTOR-1")
03489         self.assertEqual(record.descriptions[0].score, 87)
03490         self.assertAlmostEqual(record.descriptions[0].e, 3e-17)
03491         self.assertEqual(record.descriptions[1].title, "gi|465911|sp|P34454|YMA9_CAEEL HYPOTHETICAL 31.6 KD PROTEIN F54...")
03492         self.assertEqual(record.descriptions[1].score, 42)
03493         self.assertAlmostEqual(record.descriptions[1].e, 0.001)
03494         self.assertEqual(record.descriptions[2].title, "gi|2494160|sp|Q61712|MTJ1_MOUSE DNAJ PROTEIN HOMOLOG MTJ1")
03495         self.assertEqual(record.descriptions[2].score, 37)
03496         self.assertAlmostEqual(record.descriptions[2].e, 0.033)
03497         self.assertEqual(record.descriptions[3].title, "gi|1730688|sp|P53745|YN8X_YEAST HYPOTHETICAL 68.1 KD PROTEIN IN...")
03498         self.assertEqual(record.descriptions[3].score, 29)
03499         self.assertAlmostEqual(record.descriptions[3].e, 7.4)
03500         self.assertEqual(len(record.alignments), 4)
03501         self.assertEqual(record.alignments[0].title, ">gi|1731448|sp|P54103|ZRF1_MOUSE ZUOTIN RELATED FACTOR-1")
03502         self.assertEqual(record.alignments[0].length, 514)
03503         self.assertEqual(record.alignments[1].title, ">gi|465911|sp|P34454|YMA9_CAEEL HYPOTHETICAL 31.6 KD PROTEIN F54F2.9 IN CHROMOSOME III")
03504         self.assertEqual(record.alignments[1].length, 275)
03505         self.assertEqual(record.alignments[2].title, ">gi|2494160|sp|Q61712|MTJ1_MOUSE DNAJ PROTEIN HOMOLOG MTJ1")
03506         self.assertEqual(record.alignments[2].length, 552)
03507         self.assertEqual(record.alignments[3].title, ">gi|1730688|sp|P53745|YN8X_YEAST HYPOTHETICAL 68.1 KD PROTEIN IN BIO3-FRE4 INTERGENIC REGION")
03508         self.assertEqual(record.alignments[3].length, 580)
03509         self.assertEqual(record.alignments[0].hsps[0].score, 211)
03510         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 86.6)
03511         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 3e-17)
03512         self.assertEqual(len(record.alignments[0].hsps), 1)
03513         self.assertEqual(record.alignments[1].hsps[0].score, 96)
03514         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 41.8)
03515         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 0.001)
03516         self.assertEqual(len(record.alignments[1].hsps), 1)
03517         self.assertEqual(record.alignments[2].hsps[0].score, 83)
03518         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 36.7)
03519         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 0.033)
03520         self.assertEqual(record.alignments[2].hsps[1].score, 69)
03521         self.assertAlmostEqual(record.alignments[2].hsps[1].bits, 31.3)
03522         self.assertAlmostEqual(record.alignments[2].hsps[1].expect, 1.5)
03523         self.assertEqual(len(record.alignments[2].hsps), 2)
03524         self.assertEqual(record.alignments[3].hsps[0].score, 63)
03525         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 29.0)
03526         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 7.4)
03527         self.assertEqual(len(record.alignments[3].hsps), 1)
03528         self.assertEqual(record.alignments[0].hsps[0].identities, (41, 47))
03529         self.assertEqual(record.alignments[0].hsps[0].positives, (44, 47))
03530         self.assertEqual(record.alignments[1].hsps[0].identities, (30, 122))
03531         self.assertEqual(record.alignments[1].hsps[0].positives, (54, 122))
03532         self.assertEqual(record.alignments[2].hsps[0].identities, (17, 36))
03533         self.assertEqual(record.alignments[2].hsps[0].positives, (19, 36))
03534         self.assertEqual(record.alignments[2].hsps[1].identities, (18, 50))
03535         self.assertEqual(record.alignments[2].hsps[1].positives, (26, 50))
03536         self.assertEqual(record.alignments[3].hsps[0].identities, (27, 99))
03537         self.assertEqual(record.alignments[3].hsps[0].positives, (41, 99))
03538         self.assertEqual(record.alignments[0].hsps[0].frame, ("+1", ))
03539         self.assertEqual(record.alignments[1].hsps[0].frame, ("+1", ))
03540         self.assertEqual(record.alignments[2].hsps[0].frame, ("+1", ))
03541         self.assertEqual(record.alignments[2].hsps[1].frame, ("+1", ))
03542         self.assertEqual(record.alignments[3].hsps[0].frame, ("+1", ))
03543         self.assertEqual(record.alignments[0].hsps[0].query, "DLQLLIKAVNLFPAGTNSRWEVIANYMNIHSSSGVKRTAKDVIGKAK")
03544         self.assertEqual(record.alignments[0].hsps[0].match, "DLQLLIKAVNLFPAG NSRW+VIANYMNIHSSSGVKRTAKDVI + +")
03545         self.assertEqual(record.alignments[0].hsps[0].sbjct, "DLQLLIKAVNLFPAGRNSRWDVIANYMNIHSSSGVKRTAKDVISEVR")
03546         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
03547         self.assertEqual(record.alignments[0].hsps[0].query_end, 141)
03548         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 458)
03549         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 504)
03550         self.assertEqual(record.alignments[1].hsps[0].query, "FPAGTNSRWEVIANYMNIHSSSGVKRTAKDVIGKAKSLQKLDPHQKDDINKKAFDKFKKEHGVVPQADNATPSERFXGPYTDFTPXTTEXQKLXEQALNTYPVNTXERWXXIAVAVPGRXKE")
03551         self.assertEqual(record.alignments[1].hsps[0].match, "+PAGT +RWE +   +N        R+A+DVI  A  ++++   +++D  K      ++   V  ++++                 +   QK  E AL  YP  T ERW  I+  +  + K+")
03552         self.assertEqual(record.alignments[1].hsps[0].sbjct, "YPAGTPNRWEQMGRVLN--------RSAEDVIAMAGKMKQM---KQEDYTKLLMTTIQQSVPVEEKSED---------------DWSQAEQKAFETALQKYPKGTDERWERISEEIGSKTKK")
03553         self.assertEqual(record.alignments[1].hsps[0].query_start, 34)
03554         self.assertEqual(record.alignments[1].hsps[0].query_end, 399)
03555         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 159)
03556         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 254)
03557         self.assertEqual(record.alignments[2].hsps[0].query, "TTEXQKLXEQALNTYPVNTXERWXXIAVAVPGRXKE")
03558         self.assertEqual(record.alignments[2].hsps[0].match, "T   QKL E AL  YP    +RW  IA  VP + KE")
03559         self.assertEqual(record.alignments[2].hsps[0].sbjct, "TQSQQKLLELALQQYPKGASDRWDKIAKCVPSKSKE")
03560         self.assertEqual(record.alignments[2].hsps[0].query_start, 292)
03561         self.assertEqual(record.alignments[2].hsps[0].query_end, 399)
03562         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 496)
03563         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 531)
03564         self.assertEqual(record.alignments[2].hsps[1].query, "DLQLLIKAVNLFPAGTNSRWEVIANYMNIHSSSGVKRTAKDVIGKAKSLQ")
03565         self.assertEqual(record.alignments[2].hsps[1].match, "DL  L +++  FP GT  RW+ IA+ +         R+  DV  KAK L+")
03566         self.assertEqual(record.alignments[2].hsps[1].sbjct, "DLSQLTRSMVKFPGGTPGRWDKIAHELG--------RSVTDVTTKAKELK")
03567         self.assertEqual(record.alignments[2].hsps[1].query_start, 1)
03568         self.assertEqual(record.alignments[2].hsps[1].query_end, 150)
03569         self.assertEqual(record.alignments[2].hsps[1].sbjct_start, 332)
03570         self.assertEqual(record.alignments[2].hsps[1].sbjct_end, 373)
03571         self.assertEqual(record.alignments[3].hsps[0].query, "SRWEVIANYMNIHSSSGVKRTAKDVIGKAKSLQKLDPHQKDDINKKAFDKFKKEHGVVPQADNATPSERFXGPYTDFTPXTTEXQKLXEQALNTYPVNT")
03572         self.assertEqual(record.alignments[3].hsps[0].match, "+RW+   +Y        V R+ KDV   ++SL  LD +QK     +A       H +          E    PY +FT   +      EQ+ N +PV+T")
03573         self.assertEqual(record.alignments[3].hsps[0].sbjct, "NRWKSFISY--------VTRSRKDVKTVSRSLSNLDLYQKCSKEIRADQDISLLHSI----------ETKLFPYINFTALNS------EQSHNFWPVHT")
03574         self.assertEqual(record.alignments[3].hsps[0].query_start, 52)
03575         self.assertEqual(record.alignments[3].hsps[0].query_end, 348)
03576         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 75)
03577         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 149)
03578         self.assertEqual(record.database_name, ['data/swissprot'])
03579         self.assertEqual(record.num_letters_in_database, [29652561])
03580         self.assertEqual(record.num_sequences_in_database, [82258])
03581         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
03582         self.assertEqual(len(record.ka_params), 3)
03583         self.assertAlmostEqual(record.ka_params[0], 0.318)
03584         self.assertAlmostEqual(record.ka_params[1], 0.135)
03585         self.assertAlmostEqual(record.ka_params[2], 0.401)
03586         self.assertEqual(len(record.ka_params_gap), 3)
03587         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
03588         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
03589         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
03590         self.assertEqual(record.matrix, 'BLOSUM62')
03591         self.assertEqual(record.gap_penalties, [11,1])
03592         self.assertEqual(record.num_hits, 23174157)
03593         self.assertEqual(record.num_sequences, 82258)
03594         self.assertEqual(record.num_extends, 387821)
03595         self.assertEqual(record.num_good_extends, 980)
03596         self.assertEqual(record.num_seqs_better_e, 8)
03597         self.assertEqual(record.hsps_no_gap, 3)
03598         self.assertEqual(record.hsps_prelim_gapped, 1)
03599         self.assertEqual(record.hsps_gapped, 7)
03600         self.assertEqual(record.query_length, 185)
03601         self.assertEqual(record.database_length, 29652561)
03602         self.assertEqual(record.effective_hsp_length, 49)
03603         self.assertEqual(record.effective_query_length, 135)
03604         self.assertEqual(record.effective_database_length, 25621919)
03605         self.assertEqual(record.effective_search_space, 3458959065)
03606         self.assertEqual(record.effective_search_space_used, 3458959065)
03607         self.assertEqual(record.frameshift, ('50,','0.1'))
03608         self.assertEqual(record.threshold, 12)
03609         self.assertEqual(record.window_size, 40)
03610         self.assertEqual(len(record.dropoff_1st_pass), 2)
03611         self.assertEqual(record.dropoff_1st_pass[0], 16)
03612         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
03613         self.assertEqual(len(record.gap_x_dropoff), 2)
03614         self.assertEqual(record.gap_x_dropoff[0], 38)
03615         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
03616         self.assertEqual(len(record.gap_x_dropoff_final), 2)
03617         self.assertEqual(record.gap_x_dropoff_final[0], 64)
03618         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
03619         self.assertEqual(len(record.gap_trigger), 2)
03620         self.assertEqual(record.gap_trigger[0], 41)
03621         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
03622         self.assertEqual(len(record.blast_cutoff), 2)
03623         self.assertEqual(record.blast_cutoff[0], 62)
03624         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
03625 
03626     def test_bt015(self):
03627         "Test parsing BLASTX 2.0.10 output without hits (bt015)"
03628 
03629         path = os.path.join('Blast', 'bt015.txt')
03630         handle = open(path)
03631         record = self.parser.parse(handle)
03632         handle.close()
03633         self.assertEqual(record.application, "BLASTX")
03634         self.assertEqual(record.version, '2.0.10')
03635         self.assertEqual(record.date, "Aug-26-1999")
03636         self.assertEqual(record.reference, TestNCBITextParser.reference)
03637         self.assertEqual(record.query, "gi|1347782|gb|G25550|G25550 human STS\nEST47652.\x01gi|1592937|gb|G29386|G29386 human STS SHGC-32770")
03638         self.assertEqual(record.query_letters, 379)
03639         self.assertEqual(record.database, "data/swissprot")
03640         self.assertEqual(record.database_sequences, 82258)
03641         self.assertEqual(record.database_letters, 29652561)
03642         self.assertEqual(len(record.descriptions), 0)
03643         self.assertEqual(len(record.alignments), 0)
03644         self.assertEqual(record.database_name, ['data/swissprot'])
03645         self.assertEqual(record.num_letters_in_database, [29652561])
03646         self.assertEqual(record.num_sequences_in_database, [82258])
03647         self.assertEqual(record.posted_date, [('Nov 15, 1999  2:55 PM',)])
03648         self.assertEqual(len(record.ka_params), 3)
03649         self.assertAlmostEqual(record.ka_params[0], 0.318)
03650         self.assertAlmostEqual(record.ka_params[1], 0.135)
03651         self.assertAlmostEqual(record.ka_params[2], 0.401)
03652         self.assertEqual(len(record.ka_params_gap), 3)
03653         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
03654         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
03655         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
03656         self.assertEqual(record.matrix, 'BLOSUM62')
03657         self.assertEqual(record.gap_penalties, [11,1])
03658         self.assertEqual(record.num_hits, 14686001)
03659         self.assertEqual(record.num_sequences, 82258)
03660         self.assertEqual(record.num_extends, 235383)
03661         self.assertEqual(record.num_good_extends, 396)
03662         self.assertEqual(record.num_seqs_better_e, 0)
03663         self.assertEqual(record.hsps_no_gap, 0)
03664         self.assertEqual(record.hsps_prelim_gapped, 0)
03665         self.assertEqual(record.hsps_gapped, 0)
03666         self.assertEqual(record.query_length, 126)
03667         self.assertEqual(record.database_length, 29652561)
03668         self.assertEqual(record.effective_hsp_length, 48)
03669         self.assertEqual(record.effective_query_length, 77)
03670         self.assertEqual(record.effective_database_length, 25704177)
03671         self.assertEqual(record.effective_search_space, 1979221629)
03672         self.assertEqual(record.effective_search_space_used, 1979221629)
03673         self.assertEqual(record.frameshift, ('50,','0.1'))
03674         self.assertEqual(record.threshold, 12)
03675         self.assertEqual(record.window_size, 40)
03676         self.assertEqual(len(record.dropoff_1st_pass), 2)
03677         self.assertEqual(record.dropoff_1st_pass[0], 16)
03678         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
03679         self.assertEqual(len(record.gap_x_dropoff), 2)
03680         self.assertEqual(record.gap_x_dropoff[0], 38)
03681         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
03682         self.assertEqual(len(record.gap_x_dropoff_final), 2)
03683         self.assertEqual(record.gap_x_dropoff_final[0], 64)
03684         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
03685         self.assertEqual(len(record.gap_trigger), 2)
03686         self.assertEqual(record.gap_trigger[0], 41)
03687         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
03688         self.assertEqual(len(record.blast_cutoff), 2)
03689         self.assertEqual(record.blast_cutoff[0], 60)
03690         self.assertAlmostEqual(record.blast_cutoff[1], 27.8)
03691 
03692     def test_bt016(self):
03693         "Test parsing TBLASTN 2.0.10 output (bt016)"
03694 
03695         path = os.path.join('Blast', 'bt016.txt')
03696         handle = open(path)
03697         record = self.parser.parse(handle)
03698         handle.close()
03699         self.assertEqual(record.application, "TBLASTN")
03700         self.assertEqual(record.version, '2.0.10')
03701         self.assertEqual(record.date, "Aug-26-1999")
03702         self.assertEqual(record.reference, TestNCBITextParser.reference)
03703         self.assertEqual(record.query, "gi|729325|sp|P39483|DHG2_BACME GLUCOSE 1-DEHYDROGENASE II\n(GLCDH-II)")
03704         self.assertEqual(record.query_letters, 261)
03705         self.assertEqual(record.database, "data/sts")
03706         self.assertEqual(record.database_sequences, 87792)
03707         self.assertEqual(record.database_letters, 31998854)
03708         self.assertEqual(len(record.descriptions), 7)
03709         self.assertEqual(record.descriptions[0].title, "gi|3820341|emb|AJ229891|KLAJ9891 Kluyveromyces lactis DNA fragm...")
03710         self.assertEqual(record.descriptions[0].score, 47)
03711         self.assertAlmostEqual(record.descriptions[0].e, 0.00001)
03712         self.assertEqual(record.descriptions[1].title, "gi|1375419|gb|G27169|G27169 human STS SHGC-31983.")
03713         self.assertEqual(record.descriptions[1].score, 43)
03714         self.assertAlmostEqual(record.descriptions[1].e, 0.0001)
03715         self.assertEqual(record.descriptions[2].title, "gi|3819804|emb|AJ230012|KLAJ0012 Kluyveromyces lactis DNA fragm...")
03716         self.assertEqual(record.descriptions[2].score, 39)
03717         self.assertAlmostEqual(record.descriptions[2].e, 0.002)
03718         self.assertEqual(record.descriptions[3].title, "gi|1375215|gb|G26965|G26965 human STS SHGC-31083.")
03719         self.assertEqual(record.descriptions[3].score, 31)
03720         self.assertAlmostEqual(record.descriptions[3].e, 0.73)
03721         self.assertEqual(record.descriptions[4].title, "gi|177714|gb|L09988|HUM4STS889 Human Chromosome 4 (clone p4-109...")
03722         self.assertEqual(record.descriptions[4].score, 29)
03723         self.assertAlmostEqual(record.descriptions[4].e, 2.2)
03724         self.assertEqual(record.descriptions[5].title, "gi|5714409|gb|AF106665.1|AF106665 Mus musculus chromosome 6 clo...")
03725         self.assertEqual(record.descriptions[5].score, 29)
03726         self.assertAlmostEqual(record.descriptions[5].e, 2.2)
03727         self.assertEqual(record.descriptions[6].title, "gi|1341648|gb|G21322|G21322 human STS WI-12250.")
03728         self.assertEqual(record.descriptions[6].score, 29)
03729         self.assertAlmostEqual(record.descriptions[6].e, 3.7)
03730         self.assertEqual(len(record.alignments), 7)
03731         self.assertEqual(record.alignments[0].title, ">gi|3820341|emb|AJ229891|KLAJ9891 Kluyveromyces lactis DNA fragment for sequence tagged site, clone okam5d07r [Kluyveromyces lactis]")
03732         self.assertEqual(record.alignments[0].length, 230)
03733         self.assertEqual(record.alignments[1].title, ">gi|1375419|gb|G27169|G27169 human STS SHGC-31983.")
03734         self.assertEqual(record.alignments[1].length, 594)
03735         self.assertEqual(record.alignments[2].title, ">gi|3819804|emb|AJ230012|KLAJ0012 Kluyveromyces lactis DNA fragment for sequence tagged site, clone okam6d01d [Kluyveromyces lactis]")
03736         self.assertEqual(record.alignments[2].length, 199)
03737         self.assertEqual(record.alignments[3].title, ">gi|1375215|gb|G26965|G26965 human STS SHGC-31083.")
03738         self.assertEqual(record.alignments[3].length, 268)
03739         self.assertEqual(record.alignments[4].title, ">gi|177714|gb|L09988|HUM4STS889 Human Chromosome 4 (clone p4-1095) STS4-889.")
03740         self.assertEqual(record.alignments[4].length, 412)
03741         self.assertEqual(record.alignments[5].title, ">gi|5714409|gb|AF106665.1|AF106665 Mus musculus chromosome 6 clone D6wum9 map between Nkrp1 and Prp strain C57BL/6J, sequence tagged site")
03742         self.assertEqual(record.alignments[5].length, 299)
03743         self.assertEqual(record.alignments[6].title, ">gi|1341648|gb|G21322|G21322 human STS WI-12250.")
03744         self.assertEqual(record.alignments[6].length, 586)
03745         self.assertEqual(record.alignments[0].hsps[0].score, 109)
03746         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 46.9)
03747         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 1e-5)
03748         self.assertEqual(len(record.alignments[0].hsps), 1)
03749         self.assertEqual(record.alignments[1].hsps[0].score, 100)
03750         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 43.4)
03751         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 1e-4)
03752         self.assertEqual(len(record.alignments[1].hsps), 1)
03753         self.assertEqual(record.alignments[2].hsps[0].score, 90)
03754         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 39.5)
03755         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 0.002)
03756         self.assertEqual(len(record.alignments[2].hsps), 1)
03757         self.assertEqual(record.alignments[3].hsps[0].score, 68)
03758         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 30.9)
03759         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 0.73)
03760         self.assertEqual(len(record.alignments[3].hsps), 1)
03761         self.assertEqual(record.alignments[4].hsps[0].score, 64)
03762         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 29.3)
03763         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 2.2)
03764         self.assertEqual(len(record.alignments[4].hsps), 1)
03765         self.assertEqual(record.alignments[5].hsps[0].score, 64)
03766         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 29.3)
03767         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 2.2)
03768         self.assertEqual(len(record.alignments[5].hsps), 1)
03769         self.assertEqual(record.alignments[6].hsps[0].score, 62)
03770         self.assertAlmostEqual(record.alignments[6].hsps[0].bits, 28.6)
03771         self.assertAlmostEqual(record.alignments[6].hsps[0].expect, 3.7)
03772         self.assertEqual(len(record.alignments[6].hsps), 1)
03773         self.assertEqual(record.alignments[0].hsps[0].identities, (25, 72))
03774         self.assertEqual(record.alignments[0].hsps[0].positives, (44, 72))
03775         self.assertEqual(record.alignments[0].hsps[0].gaps, (3, 72))
03776         self.assertEqual(record.alignments[1].hsps[0].identities, (21, 73))
03777         self.assertEqual(record.alignments[1].hsps[0].positives, (34, 73))
03778         self.assertEqual(record.alignments[2].hsps[0].identities, (18, 49))
03779         self.assertEqual(record.alignments[2].hsps[0].positives, (26, 49))
03780         self.assertEqual(record.alignments[3].hsps[0].identities, (12, 37))
03781         self.assertEqual(record.alignments[3].hsps[0].positives, (19, 37))
03782         self.assertEqual(record.alignments[4].hsps[0].identities, (14, 34))
03783         self.assertEqual(record.alignments[4].hsps[0].positives, (22, 34))
03784         self.assertEqual(record.alignments[5].hsps[0].identities, (17, 55))
03785         self.assertEqual(record.alignments[5].hsps[0].positives, (32, 55))
03786         self.assertEqual(record.alignments[5].hsps[0].gaps, (2, 55))
03787         self.assertEqual(record.alignments[6].hsps[0].identities, (16, 39))
03788         self.assertEqual(record.alignments[6].hsps[0].positives, (20, 39))
03789         self.assertEqual(record.alignments[6].hsps[0].gaps, (1, 39))
03790         self.assertEqual(record.alignments[0].hsps[0].frame, ("+1", ))
03791         self.assertEqual(record.alignments[1].hsps[0].frame, ("-1", ))
03792         self.assertEqual(record.alignments[2].hsps[0].frame, ("-1", ))
03793         self.assertEqual(record.alignments[3].hsps[0].frame, ("-1", ))
03794         self.assertEqual(record.alignments[4].hsps[0].frame, ("-1", ))
03795         self.assertEqual(record.alignments[5].hsps[0].frame, ("-2", ))
03796         self.assertEqual(record.alignments[6].hsps[0].frame, ("+1", ))
03797         self.assertEqual(record.alignments[0].hsps[0].query, "NWNQVIDTNLTGAFLGSREAIKYFVEN---DIKGNVINMSSVHEMIPWPLFVHYAASKGGMKLMTETLALEYAPK")
03798         self.assertEqual(record.alignments[0].hsps[0].match, "+W QVIDTN+ G F   + A+     +   D +  V+N+S+V+ ++  P    Y A+K  +  +T+++ALEYA +")
03799         self.assertEqual(record.alignments[0].hsps[0].sbjct, "SWRQVIDTNINGTFYTLKYALPLMESSSSPDSEAAVVNLSAVNGLVGIPGISPYTATKHAVIGITQSVALEYAER")
03800         self.assertEqual(record.alignments[0].hsps[0].query_start, 108)
03801         self.assertEqual(record.alignments[0].hsps[0].query_end, 179)
03802         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
03803         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 225)
03804         self.assertEqual(record.alignments[1].hsps[0].query, "APKGIRVNNIGPGAIDTPINAEKFADPEQRADVESMIPMGYIGKPEEIASVAAFLASSQASYVTGITLFADGG")
03805         self.assertEqual(record.alignments[1].hsps[0].match, "AP   RVN + P  + T +    + DP +   + +  P+G   + E +     FL S ++   TG TL  +GG")
03806         self.assertEqual(record.alignments[1].hsps[0].sbjct, "APXRXRVNAVXPXVVMTSMGQATWXDPXKAXTMLNRXPLGXFAEVEHVVKAILFLLSDRSGMTTGSTLPVEGG")
03807         self.assertEqual(record.alignments[1].hsps[0].query_start, 177)
03808         self.assertEqual(record.alignments[1].hsps[0].query_end, 249)
03809         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 312)
03810         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 94)
03811         self.assertEqual(record.alignments[2].hsps[0].query, "FADPEQRADVESMIPMGYIGKPEEIASVAAFLASSQASYVTGITLFADG")
03812         self.assertEqual(record.alignments[2].hsps[0].match, "F D + +    S+IPMG  G P+E+     + AS  ++Y TG  L  DG")
03813         self.assertEqual(record.alignments[2].hsps[0].sbjct, "FVDEDLKNKWHSLIPMGREGLPQELVGAYLYFASDASTYTTGSDLLVDG")
03814         self.assertEqual(record.alignments[2].hsps[0].query_start, 200)
03815         self.assertEqual(record.alignments[2].hsps[0].query_end, 248)
03816         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 157)
03817         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 11)
03818         self.assertEqual(record.alignments[3].hsps[0].query, "PMGYIGKPEEIASVAAFLASSQASYVTGITLFADGGM")
03819         self.assertEqual(record.alignments[3].hsps[0].match, "PMG  G PE++  V A      +  +TG ++   GG+")
03820         self.assertEqual(record.alignments[3].hsps[0].sbjct, "PMGXXGDPEDVXDVXAXXXXEXSGXITGTSVEVTGGL")
03821         self.assertEqual(record.alignments[3].hsps[0].query_start, 214)
03822         self.assertEqual(record.alignments[3].hsps[0].query_end, 250)
03823         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 268)
03824         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 158)
03825         self.assertEqual(record.alignments[4].hsps[0].query, "DKVVVVTGGSKGLGRAMAVRFGQEQSKVVVNYRS")
03826         self.assertEqual(record.alignments[4].hsps[0].match, "DKV  V GGS+G+GRA+A    ++  ++ V  R+")
03827         self.assertEqual(record.alignments[4].hsps[0].sbjct, "DKVCAVFGGSRGIGRAVAQLMARKGYRLAVIARN")
03828         self.assertEqual(record.alignments[4].hsps[0].query_start, 7)
03829         self.assertEqual(record.alignments[4].hsps[0].query_end, 40)
03830         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 316)
03831         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 215)
03832         self.assertEqual(record.alignments[5].hsps[0].query, "NMSSVHEMIPWPLFVHYAASKGGMKLMTETL--ALEYAPKGIRVNNIGPGAIDTPIN")
03833         self.assertEqual(record.alignments[5].hsps[0].match, "++S    +I +P F+    S  G  L+  +L  A+ + P GI V+++GP ++ T +N")
03834         self.assertEqual(record.alignments[5].hsps[0].sbjct, "SLSPTQYLIMFPSFLPCPLSHPGPFLLPSSLVIAVFFLPNGIEVSSLGPFSLRTLLN")
03835         self.assertEqual(record.alignments[5].hsps[0].query_start, 142)
03836         self.assertEqual(record.alignments[5].hsps[0].query_end, 196)
03837         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 172)
03838         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 2)
03839         self.assertEqual(record.alignments[6].hsps[0].query, "PVPSHELSLENWNQ-VIDTNLTGAFLGSREAIKYFVENDI")
03840         self.assertEqual(record.alignments[6].hsps[0].match, "PVP  ELS  +W+Q  + T+ T  F  S     YF  N I")
03841         self.assertEqual(record.alignments[6].hsps[0].sbjct, "PVPMQELSKVHWSQFFLTTSPTMTFFFSHYLANYFFRNSI")
03842         self.assertEqual(record.alignments[6].hsps[0].query_start, 98)
03843         self.assertEqual(record.alignments[6].hsps[0].query_end, 136)
03844         self.assertEqual(record.alignments[6].hsps[0].sbjct_start, 220)
03845         self.assertEqual(record.alignments[6].hsps[0].sbjct_end, 339)
03846         self.assertEqual(record.database_name, ['data/sts'])
03847         self.assertEqual(record.num_letters_in_database, [31998854])
03848         self.assertEqual(record.num_sequences_in_database, [87792])
03849         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
03850         self.assertEqual(len(record.ka_params), 3)
03851         self.assertAlmostEqual(record.ka_params[0], 0.315)
03852         self.assertAlmostEqual(record.ka_params[1], 0.134)
03853         self.assertAlmostEqual(record.ka_params[2], 0.378)
03854         self.assertEqual(len(record.ka_params_gap), 3)
03855         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
03856         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
03857         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
03858         self.assertEqual(record.matrix, 'BLOSUM62')
03859         self.assertEqual(record.gap_penalties, [11,1])
03860         self.assertEqual(record.num_hits, 6165875)
03861         self.assertEqual(record.num_sequences, 87792)
03862         self.assertEqual(record.num_extends, 55665)
03863         self.assertEqual(record.num_good_extends, 148)
03864         self.assertEqual(record.num_seqs_better_e, 14)
03865         self.assertEqual(record.hsps_no_gap, 5)
03866         self.assertEqual(record.hsps_prelim_gapped, 2)
03867         self.assertEqual(record.hsps_gapped, 7)
03868         self.assertEqual(record.query_length, 261)
03869         self.assertEqual(record.database_length, 10666284)
03870         self.assertEqual(record.effective_hsp_length, 50)
03871         self.assertEqual(record.effective_query_length, 211)
03872         self.assertEqual(record.effective_database_length, 6276684)
03873         self.assertEqual(record.effective_search_space, 1324380324)
03874         self.assertEqual(record.effective_search_space_used, 1324380324)
03875         self.assertEqual(record.frameshift, ('50,','0.1'))
03876         self.assertEqual(record.threshold, 13)
03877         self.assertEqual(record.window_size, 40)
03878         self.assertEqual(len(record.dropoff_1st_pass), 2)
03879         self.assertEqual(record.dropoff_1st_pass[0], 16)
03880         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
03881         self.assertEqual(len(record.gap_x_dropoff), 2)
03882         self.assertEqual(record.gap_x_dropoff[0], 38)
03883         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
03884         self.assertEqual(len(record.gap_x_dropoff_final), 2)
03885         self.assertEqual(record.gap_x_dropoff_final[0], 64)
03886         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
03887         self.assertEqual(len(record.gap_trigger), 2)
03888         self.assertEqual(record.gap_trigger[0], 42)
03889         self.assertAlmostEqual(record.gap_trigger[1], 22.0)
03890         self.assertEqual(len(record.blast_cutoff), 2)
03891         self.assertEqual(record.blast_cutoff[0], 58)
03892         self.assertAlmostEqual(record.blast_cutoff[1], 27.0)
03893 
03894     def test_bt017(self):
03895         "Test parsing TBLASTN 2.0.10 output without hits (bt017)"
03896 
03897         path = os.path.join('Blast', 'bt017.txt')
03898         handle = open(path)
03899         record = self.parser.parse(handle)
03900         handle.close()
03901         self.assertEqual(record.application, "TBLASTN")
03902         self.assertEqual(record.version, '2.0.10')
03903         self.assertEqual(record.date, "Aug-26-1999")
03904         self.assertEqual(record.reference, TestNCBITextParser.reference)
03905         self.assertEqual(record.query, "gi|127420|sp|P19888|MTBA_BACAR MODIFICATION METHYLASE BANI\n(CYTOSINE-SPECIFIC METHYLTRANSFERASE BANI) (M.BANI)")
03906         self.assertEqual(record.query_letters, 428)
03907         self.assertEqual(record.database, "data/sts")
03908         self.assertEqual(record.database_sequences, 87792)
03909         self.assertEqual(record.database_letters, 31998854)
03910         self.assertEqual(len(record.descriptions), 0)
03911         self.assertEqual(len(record.alignments), 0)
03912         self.assertEqual(record.database_name, ['data/sts'])
03913         self.assertEqual(record.num_letters_in_database, [31998854])
03914         self.assertEqual(record.num_sequences_in_database, [87792])
03915         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
03916         self.assertEqual(len(record.ka_params), 3)
03917         self.assertAlmostEqual(record.ka_params[0], 0.320)
03918         self.assertAlmostEqual(record.ka_params[1], 0.140)
03919         self.assertAlmostEqual(record.ka_params[2], 0.403)
03920         self.assertEqual(len(record.ka_params_gap), 3)
03921         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
03922         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
03923         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
03924         self.assertEqual(record.matrix, 'BLOSUM62')
03925         self.assertEqual(record.gap_penalties, [11,1])
03926         self.assertEqual(record.num_hits, 13588598)
03927         self.assertEqual(record.num_sequences, 87792)
03928         self.assertEqual(record.num_extends, 162273)
03929         self.assertEqual(record.num_good_extends, 546)
03930         self.assertEqual(record.num_seqs_better_e, 0)
03931         self.assertEqual(record.hsps_no_gap, 0)
03932         self.assertEqual(record.hsps_prelim_gapped, 0)
03933         self.assertEqual(record.hsps_gapped, 0)
03934         self.assertEqual(record.query_length, 428)
03935         self.assertEqual(record.database_length, 10666284)
03936         self.assertEqual(record.effective_hsp_length, 48)
03937         self.assertEqual(record.effective_query_length, 380)
03938         self.assertEqual(record.effective_database_length, 6452268)
03939         self.assertEqual(record.effective_search_space, 2451861840)
03940         self.assertEqual(record.effective_search_space_used, 2451861840)
03941         self.assertEqual(record.frameshift, ('50,','0.1'))
03942         self.assertEqual(record.threshold, 13)
03943         self.assertEqual(record.window_size, 40)
03944         self.assertEqual(len(record.dropoff_1st_pass), 2)
03945         self.assertEqual(record.dropoff_1st_pass[0], 16)
03946         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.4)
03947         self.assertEqual(len(record.gap_x_dropoff), 2)
03948         self.assertEqual(record.gap_x_dropoff[0], 38)
03949         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
03950         self.assertEqual(len(record.gap_x_dropoff_final), 2)
03951         self.assertEqual(record.gap_x_dropoff_final[0], 64)
03952         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
03953         self.assertEqual(len(record.gap_trigger), 2)
03954         self.assertEqual(record.gap_trigger[0], 41)
03955         self.assertAlmostEqual(record.gap_trigger[1], 21.8)
03956         self.assertEqual(len(record.blast_cutoff), 2)
03957         self.assertEqual(record.blast_cutoff[0], 61)
03958         self.assertAlmostEqual(record.blast_cutoff[1], 28.2)
03959 
03960     def test_bt018(self):
03961         "Test parsing TBLASTX 2.0.10 output (bt018)"
03962 
03963         path = os.path.join('Blast', 'bt018.txt')
03964         handle = open(path)
03965         record = self.parser.parse(handle)
03966         handle.close()
03967         self.assertEqual(record.application, "TBLASTX")
03968         self.assertEqual(record.version, '2.0.10')
03969         self.assertEqual(record.date, "Aug-26-1999")
03970         self.assertEqual(record.reference, TestNCBITextParser.reference)
03971         self.assertEqual(record.query, "gi|1348853|gb|G26621|G26621 human STS\nSTS_D12006.\x01gi|1396339|gb|G27620|G27620 human STS SHGC-32705.")
03972         self.assertEqual(record.query_letters, 615)
03973         self.assertEqual(record.database, "data/sts")
03974         self.assertEqual(record.database_sequences, 87792)
03975         self.assertEqual(record.database_letters, 31998854)
03976         self.assertEqual(len(record.descriptions), 19)
03977         self.assertEqual(record.descriptions[0].title, "gi|1348853|gb|G26621|G26621 human STS STS_D12006. >gi|1396339|g...")
03978         self.assertEqual(record.descriptions[0].score, 398)
03979         self.assertAlmostEqual(record.descriptions[0].e, 1e-111)
03980         self.assertEqual(record.descriptions[1].title, "gi|1348016|gb|G25784|G25784 human STS EST47998.")
03981         self.assertEqual(record.descriptions[1].score, 302)
03982         self.assertAlmostEqual(record.descriptions[1].e, 1e-83)
03983         self.assertEqual(record.descriptions[2].title, "gi|3403105|gb|G41148|G41148 Z7324 Zebrafish AB Danio rerio STS ...")
03984         self.assertEqual(record.descriptions[2].score, 31)
03985         self.assertAlmostEqual(record.descriptions[2].e, 0.6)
03986         self.assertEqual(record.descriptions[3].title, "gi|1234967|emb|Z53521|HSB316XA9 H.sapiens (D22S1166) DNA segmen...")
03987         self.assertEqual(record.descriptions[3].score, 30)
03988         self.assertAlmostEqual(record.descriptions[3].e, 0.83)
03989         self.assertEqual(record.descriptions[4].title, "gi|4185670|gb|G42865|G42865 Xq3845 KWOK Homo sapiens STS genomi...")
03990         self.assertEqual(record.descriptions[4].score, 30)
03991         self.assertAlmostEqual(record.descriptions[4].e, 1.1)
03992         self.assertEqual(record.descriptions[5].title, "gi|4757419|gb|G49246.1|G49246 stbK116F5_30376 chromosome 22 gen...")
03993         self.assertEqual(record.descriptions[5].score, 29)
03994         self.assertAlmostEqual(record.descriptions[5].e, 1.6)
03995         self.assertEqual(record.descriptions[6].title, "gi|6120694|gb|G55375.1|G55375 SHGC-100697 Human Homo sapiens ST...")
03996         self.assertEqual(record.descriptions[6].score, 29)
03997         self.assertAlmostEqual(record.descriptions[6].e, 3.0)
03998         self.assertEqual(record.descriptions[7].title, "gi|5225124|gb|G53947.1|G53947 SHGC-85304 Human Homo sapiens STS...")
03999         self.assertEqual(record.descriptions[7].score, 29)
04000         self.assertAlmostEqual(record.descriptions[7].e, 3.0)
04001         self.assertEqual(record.descriptions[8].title, "gi|1311530|gb|L77996|HUMSWX945 Human chromosome X STS sWXD945, ...")
04002         self.assertEqual(record.descriptions[8].score, 28)
04003         self.assertAlmostEqual(record.descriptions[8].e, 4.1)
04004         self.assertEqual(record.descriptions[9].title, "gi|2734624|gb|G36957|G36957 SHGC-56642 Human Homo sapiens STS cDNA")
04005         self.assertEqual(record.descriptions[9].score, 28)
04006         self.assertAlmostEqual(record.descriptions[9].e, 4.1)
04007         self.assertEqual(record.descriptions[10].title, "gi|4631600|dbj|AU046965.1|AU046965 Rattus norvegicus, OTSUKA cl...")
04008         self.assertEqual(record.descriptions[10].score, 28)
04009         self.assertAlmostEqual(record.descriptions[10].e, 4.1)
04010         self.assertEqual(record.descriptions[11].title, "gi|4631518|dbj|AU046883.1|AU046883 Rattus norvegicus, OTSUKA cl...")
04011         self.assertEqual(record.descriptions[11].score, 28)
04012         self.assertAlmostEqual(record.descriptions[11].e, 4.1)
04013         self.assertEqual(record.descriptions[12].title, "gi|2226478|gb|G33174|G33174 human STS SHGC-6097 clone pG-2470")
04014         self.assertEqual(record.descriptions[12].score, 28)
04015         self.assertAlmostEqual(record.descriptions[12].e, 4.1)
04016         self.assertEqual(record.descriptions[13].title, "gi|938611|gb|G08061|G08061 human STS CHLC.GGAA7E02.P7438 clone ...")
04017         self.assertEqual(record.descriptions[13].score, 27)
04018         self.assertAlmostEqual(record.descriptions[13].e, 7.7)
04019         self.assertEqual(record.descriptions[14].title, "gi|307789|gb|L18105|HUMUT1736 Human STS UT1736.")
04020         self.assertEqual(record.descriptions[14].score, 27)
04021         self.assertAlmostEqual(record.descriptions[14].e, 7.7)
04022         self.assertEqual(record.descriptions[15].title, "gi|859804|gb|G06559|G06559 human STS WI-7401.")
04023         self.assertEqual(record.descriptions[15].score, 27)
04024         self.assertAlmostEqual(record.descriptions[15].e, 7.7)
04025         self.assertEqual(record.descriptions[16].title, "gi|4493143|gb|G46852.1|G46852 Z14841_1 Zebrafish AB Danio rerio...")
04026         self.assertEqual(record.descriptions[16].score, 27)
04027         self.assertAlmostEqual(record.descriptions[16].e, 7.7)
04028         self.assertEqual(record.descriptions[17].title, "gi|4492122|gb|G45831.1|G45831 Z4588_1 Zebrafish AB Danio rerio ...")
04029         self.assertEqual(record.descriptions[17].score, 27)
04030         self.assertAlmostEqual(record.descriptions[17].e, 7.7)
04031         self.assertEqual(record.descriptions[18].title, "gi|6121804|gb|G56635.1|G56635 SHGC-102032 Human Homo sapiens ST...")
04032         self.assertEqual(record.descriptions[18].score, 27)
04033         self.assertAlmostEqual(record.descriptions[18].e, 7.7)
04034         self.assertEqual(len(record.alignments), 19)
04035         self.assertEqual(record.alignments[0].title, ">gi|1348853|gb|G26621|G26621 human STS STS_D12006. >gi|1396339|gb|G27620|G27620 human STS SHGC-32705.")
04036         self.assertEqual(record.alignments[0].length, 615)
04037         self.assertEqual(record.alignments[1].title, ">gi|1348016|gb|G25784|G25784 human STS EST47998.")
04038         self.assertEqual(record.alignments[1].length, 617)
04039         self.assertEqual(record.alignments[2].title, ">gi|3403105|gb|G41148|G41148 Z7324 Zebrafish AB Danio rerio STS genomic")
04040         self.assertEqual(record.alignments[2].length, 351)
04041         self.assertEqual(record.alignments[3].title, ">gi|1234967|emb|Z53521|HSB316XA9 H.sapiens (D22S1166) DNA segment containing (CA) repeat; clone AFMb316xa9; single read, sequence tagged site [Homo sapiens]")
04042         self.assertEqual(record.alignments[3].length, 345)
04043         self.assertEqual(record.alignments[4].title, ">gi|4185670|gb|G42865|G42865 Xq3845 KWOK Homo sapiens STS genomic, sequence tagged site [Homo sapiens]")
04044         self.assertEqual(record.alignments[4].length, 1200)
04045         self.assertEqual(record.alignments[5].title, ">gi|4757419|gb|G49246.1|G49246 stbK116F5_30376 chromosome 22 genomic clone Homo sapiens STS genomic clone 116F5, sequence tagged site")
04046         self.assertEqual(record.alignments[5].length, 375)
04047         self.assertEqual(record.alignments[6].title, ">gi|6120694|gb|G55375.1|G55375 SHGC-100697 Human Homo sapiens STS genomic, sequence tagged site")
04048         self.assertEqual(record.alignments[6].length, 460)
04049         self.assertEqual(record.alignments[7].title, ">gi|5225124|gb|G53947.1|G53947 SHGC-85304 Human Homo sapiens STS genomic, sequence tagged site")
04050         self.assertEqual(record.alignments[7].length, 444)
04051         self.assertEqual(record.alignments[8].title, ">gi|1311530|gb|L77996|HUMSWX945 Human chromosome X STS sWXD945, single read.")
04052         self.assertEqual(record.alignments[8].length, 196)
04053         self.assertEqual(record.alignments[9].title, ">gi|2734624|gb|G36957|G36957 SHGC-56642 Human Homo sapiens STS cDNA")
04054         self.assertEqual(record.alignments[9].length, 466)
04055         self.assertEqual(record.alignments[10].title, ">gi|4631600|dbj|AU046965.1|AU046965 Rattus norvegicus, OTSUKA clone, 108a02, microsatellite sequence, sequence tagged site")
04056         self.assertEqual(record.alignments[10].length, 330)
04057         self.assertEqual(record.alignments[11].title, ">gi|4631518|dbj|AU046883.1|AU046883 Rattus norvegicus, OTSUKA clone, 085f03, microsatellite sequence, sequence tagged site")
04058         self.assertEqual(record.alignments[11].length, 351)
04059         self.assertEqual(record.alignments[12].title, ">gi|2226478|gb|G33174|G33174 human STS SHGC-6097 clone pG-2470")
04060         self.assertEqual(record.alignments[12].length, 299)
04061         self.assertEqual(record.alignments[13].title, ">gi|938611|gb|G08061|G08061 human STS CHLC.GGAA7E02.P7438 clone GGAA7E02")
04062         self.assertEqual(record.alignments[13].length, 338)
04063         self.assertEqual(record.alignments[14].title, ">gi|307789|gb|L18105|HUMUT1736 Human STS UT1736.")
04064         self.assertEqual(record.alignments[14].length, 355)
04065         self.assertEqual(record.alignments[15].title, ">gi|859804|gb|G06559|G06559 human STS WI-7401.")
04066         self.assertEqual(record.alignments[15].length, 3280)
04067         self.assertEqual(record.alignments[16].title, ">gi|4493143|gb|G46852.1|G46852 Z14841_1 Zebrafish AB Danio rerio STS genomic clone Z14841 5', sequence tagged site")
04068         self.assertEqual(record.alignments[16].length, 291)
04069         self.assertEqual(record.alignments[17].title, ">gi|4492122|gb|G45831.1|G45831 Z4588_1 Zebrafish AB Danio rerio STS genomic clone Z4588 5', sequence tagged site")
04070         self.assertEqual(record.alignments[17].length, 398)
04071         self.assertEqual(record.alignments[18].title, ">gi|6121804|gb|G56635.1|G56635 SHGC-102032 Human Homo sapiens STS genomic, sequence tagged site")
04072         self.assertEqual(record.alignments[18].length, 541)
04073         self.assertEqual(record.alignments[0].hsps[0].score, 796)
04074         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 367)
04075         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 1e-102)
04076         self.assertEqual(record.alignments[0].hsps[1].score, 759)
04077         self.assertAlmostEqual(record.alignments[0].hsps[1].bits, 350)
04078         self.assertAlmostEqual(record.alignments[0].hsps[1].expect, 3e-97)
04079         self.assertEqual(record.alignments[0].hsps[2].score, 387)
04080         self.assertAlmostEqual(record.alignments[0].hsps[2].bits, 180)
04081         self.assertAlmostEqual(record.alignments[0].hsps[2].expect, 9e-91)
04082         self.assertEqual(record.alignments[0].hsps[3].score, 368)
04083         self.assertAlmostEqual(record.alignments[0].hsps[3].bits, 171)
04084         self.assertAlmostEqual(record.alignments[0].hsps[3].expect, 9e-91)
04085         self.assertEqual(record.alignments[0].hsps[4].score, 864)
04086         self.assertAlmostEqual(record.alignments[0].hsps[4].bits, 398)
04087         self.assertAlmostEqual(record.alignments[0].hsps[4].expect, 1e-111)
04088         self.assertEqual(record.alignments[0].hsps[5].score, 846)
04089         self.assertAlmostEqual(record.alignments[0].hsps[5].bits, 390)
04090         self.assertAlmostEqual(record.alignments[0].hsps[5].expect, 1e-109)
04091         self.assertEqual(record.alignments[0].hsps[6].score, 684)
04092         self.assertAlmostEqual(record.alignments[0].hsps[6].bits, 316)
04093         self.assertAlmostEqual(record.alignments[0].hsps[6].expect, 7e-87)
04094         self.assertEqual(len(record.alignments[0].hsps), 7)
04095         self.assertEqual(record.alignments[1].hsps[0].score, 366)
04096         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 170)
04097         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 3e-63)
04098         self.assertEqual(record.alignments[1].hsps[1].score, 188)
04099         self.assertAlmostEqual(record.alignments[1].hsps[1].bits, 89.0)
04100         self.assertAlmostEqual(record.alignments[1].hsps[1].expect, 3e-63)
04101         self.assertEqual(record.alignments[1].hsps[2].score, 590)
04102         self.assertAlmostEqual(record.alignments[1].hsps[2].bits, 273)
04103         self.assertAlmostEqual(record.alignments[1].hsps[2].expect, 7e-74)
04104         self.assertEqual(record.alignments[1].hsps[3].score, 593)
04105         self.assertAlmostEqual(record.alignments[1].hsps[3].bits, 274)
04106         self.assertAlmostEqual(record.alignments[1].hsps[3].expect, 8e-76)
04107         self.assertEqual(record.alignments[1].hsps[4].score, 53)
04108         self.assertAlmostEqual(record.alignments[1].hsps[4].bits, 27.2)
04109         self.assertAlmostEqual(record.alignments[1].hsps[4].expect, 8e-76)
04110         self.assertEqual(record.alignments[1].hsps[5].score, 653)
04111         self.assertAlmostEqual(record.alignments[1].hsps[5].bits, 302)
04112         self.assertAlmostEqual(record.alignments[1].hsps[5].expect, 1e-82)
04113         self.assertEqual(record.alignments[1].hsps[6].score, 598)
04114         self.assertAlmostEqual(record.alignments[1].hsps[6].bits, 276)
04115         self.assertAlmostEqual(record.alignments[1].hsps[6].expect, 5e-75)
04116         self.assertEqual(record.alignments[1].hsps[7].score, 628)
04117         self.assertAlmostEqual(record.alignments[1].hsps[7].bits, 290)
04118         self.assertAlmostEqual(record.alignments[1].hsps[7].expect, 4e-79)
04119         self.assertEqual(len(record.alignments[1].hsps), 8)
04120         self.assertEqual(record.alignments[2].hsps[0].score, 61)
04121         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 30.8)
04122         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 0.60)
04123         self.assertEqual(len(record.alignments[2].hsps), 1)
04124         self.assertEqual(record.alignments[3].hsps[0].score, 60)
04125         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 30.4)
04126         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 0.83)
04127         self.assertEqual(len(record.alignments[3].hsps), 1)
04128         self.assertEqual(record.alignments[4].hsps[0].score, 59)
04129         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 29.9)
04130         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 1.1)
04131         self.assertEqual(len(record.alignments[4].hsps), 1)
04132         self.assertEqual(record.alignments[5].hsps[0].score, 58)
04133         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 29.5)
04134         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 1.6)
04135         self.assertEqual(len(record.alignments[5].hsps), 1)
04136         self.assertEqual(record.alignments[6].hsps[0].score, 56)
04137         self.assertAlmostEqual(record.alignments[6].hsps[0].bits, 28.6)
04138         self.assertAlmostEqual(record.alignments[6].hsps[0].expect, 3.0)
04139         self.assertEqual(len(record.alignments[6].hsps), 1)
04140         self.assertEqual(record.alignments[7].hsps[0].score, 56)
04141         self.assertAlmostEqual(record.alignments[7].hsps[0].bits, 28.6)
04142         self.assertAlmostEqual(record.alignments[7].hsps[0].expect, 3.0)
04143         self.assertEqual(len(record.alignments[7].hsps), 1)
04144         self.assertEqual(record.alignments[8].hsps[0].score, 55)
04145         self.assertAlmostEqual(record.alignments[8].hsps[0].bits, 28.1)
04146         self.assertAlmostEqual(record.alignments[8].hsps[0].expect, 4.1)
04147         self.assertEqual(len(record.alignments[8].hsps), 1)
04148         self.assertEqual(record.alignments[9].hsps[0].score, 55)
04149         self.assertAlmostEqual(record.alignments[9].hsps[0].bits, 28.1)
04150         self.assertAlmostEqual(record.alignments[9].hsps[0].expect, 4.1)
04151         self.assertEqual(len(record.alignments[9].hsps), 1)
04152         self.assertEqual(record.alignments[10].hsps[0].score, 55)
04153         self.assertAlmostEqual(record.alignments[10].hsps[0].bits, 28.1)
04154         self.assertAlmostEqual(record.alignments[10].hsps[0].expect, 4.1)
04155         self.assertEqual(len(record.alignments[10].hsps), 1)
04156         self.assertEqual(record.alignments[11].hsps[0].score, 55)
04157         self.assertAlmostEqual(record.alignments[11].hsps[0].bits, 28.1)
04158         self.assertAlmostEqual(record.alignments[11].hsps[0].expect, 4.1)
04159         self.assertEqual(len(record.alignments[11].hsps), 1)
04160         self.assertEqual(record.alignments[12].hsps[0].score, 55)
04161         self.assertAlmostEqual(record.alignments[12].hsps[0].bits, 28.1)
04162         self.assertAlmostEqual(record.alignments[12].hsps[0].expect, 4.1)
04163         self.assertEqual(len(record.alignments[12].hsps), 1)
04164         self.assertEqual(record.alignments[13].hsps[0].score, 53)
04165         self.assertAlmostEqual(record.alignments[13].hsps[0].bits, 27.2)
04166         self.assertAlmostEqual(record.alignments[13].hsps[0].expect, 7.7)
04167         self.assertEqual(len(record.alignments[13].hsps), 1)
04168         self.assertEqual(record.alignments[14].hsps[0].score, 53)
04169         self.assertAlmostEqual(record.alignments[14].hsps[0].bits, 27.2)
04170         self.assertAlmostEqual(record.alignments[14].hsps[0].expect, 7.7)
04171         self.assertEqual(len(record.alignments[14].hsps), 1)
04172         self.assertEqual(record.alignments[15].hsps[0].score, 53)
04173         self.assertAlmostEqual(record.alignments[15].hsps[0].bits, 27.2)
04174         self.assertAlmostEqual(record.alignments[15].hsps[0].expect, 7.7)
04175         self.assertEqual(len(record.alignments[15].hsps), 1)
04176         self.assertEqual(record.alignments[16].hsps[0].score, 53)
04177         self.assertAlmostEqual(record.alignments[16].hsps[0].bits, 27.2)
04178         self.assertAlmostEqual(record.alignments[16].hsps[0].expect, 7.7)
04179         self.assertEqual(len(record.alignments[16].hsps), 1)
04180         self.assertEqual(record.alignments[17].hsps[0].score, 53)
04181         self.assertAlmostEqual(record.alignments[17].hsps[0].bits, 27.2)
04182         self.assertAlmostEqual(record.alignments[17].hsps[0].expect, 7.7)
04183         self.assertEqual(len(record.alignments[17].hsps), 1)
04184         self.assertEqual(record.alignments[18].hsps[0].score, 53)
04185         self.assertAlmostEqual(record.alignments[18].hsps[0].bits, 27.2)
04186         self.assertAlmostEqual(record.alignments[18].hsps[0].expect, 7.7)
04187         self.assertEqual(len(record.alignments[18].hsps), 1)
04188         self.assertEqual(record.alignments[0].hsps[0].identities, (192, 200))
04189         self.assertEqual(record.alignments[0].hsps[0].positives, (192, 200))
04190         self.assertEqual(record.alignments[0].hsps[1].identities, (195, 205))
04191         self.assertEqual(record.alignments[0].hsps[1].positives, (195, 205))
04192         self.assertEqual(record.alignments[0].hsps[2].identities, (74, 74))
04193         self.assertEqual(record.alignments[0].hsps[2].positives, (74, 74))
04194         self.assertEqual(record.alignments[0].hsps[3].identities, (114, 114))
04195         self.assertEqual(record.alignments[0].hsps[3].positives, (114, 114))
04196         self.assertEqual(record.alignments[0].hsps[4].identities, (205, 205))
04197         self.assertEqual(record.alignments[0].hsps[4].positives, (205, 205))
04198         self.assertEqual(record.alignments[0].hsps[5].identities, (196, 196))
04199         self.assertEqual(record.alignments[0].hsps[5].positives, (196, 196))
04200         self.assertEqual(record.alignments[0].hsps[6].identities, (146, 146))
04201         self.assertEqual(record.alignments[0].hsps[6].positives, (146, 146))
04202         self.assertEqual(record.alignments[1].hsps[0].identities, (71, 74))
04203         self.assertEqual(record.alignments[1].hsps[0].positives, (71, 74))
04204         self.assertEqual(record.alignments[1].hsps[1].identities, (42, 67))
04205         self.assertEqual(record.alignments[1].hsps[1].positives, (43, 67))
04206         self.assertEqual(record.alignments[1].hsps[2].identities, (121, 133))
04207         self.assertEqual(record.alignments[1].hsps[2].positives, (121, 133))
04208         self.assertEqual(record.alignments[1].hsps[3].identities, (112, 131))
04209         self.assertEqual(record.alignments[1].hsps[3].positives, (112, 131))
04210         self.assertEqual(record.alignments[1].hsps[4].identities, (9, 13))
04211         self.assertEqual(record.alignments[1].hsps[4].positives, (10, 13))
04212         self.assertEqual(record.alignments[1].hsps[5].identities, (128, 157))
04213         self.assertEqual(record.alignments[1].hsps[5].positives, (132, 157))
04214         self.assertEqual(record.alignments[1].hsps[6].identities, (122, 130))
04215         self.assertEqual(record.alignments[1].hsps[6].positives, (122, 130))
04216         self.assertEqual(record.alignments[1].hsps[7].identities, (119, 131))
04217         self.assertEqual(record.alignments[1].hsps[7].positives, (120, 131))
04218         self.assertEqual(record.alignments[2].hsps[0].identities, (11, 27))
04219         self.assertEqual(record.alignments[2].hsps[0].positives, (18, 27))
04220         self.assertEqual(record.alignments[3].hsps[0].identities, (10, 19))
04221         self.assertEqual(record.alignments[3].hsps[0].positives, (13, 19))
04222         self.assertEqual(record.alignments[4].hsps[0].identities, (10, 24))
04223         self.assertEqual(record.alignments[4].hsps[0].positives, (14, 24))
04224         self.assertEqual(record.alignments[5].hsps[0].identities, (15, 34))
04225         self.assertEqual(record.alignments[5].hsps[0].positives, (17, 34))
04226         self.assertEqual(record.alignments[6].hsps[0].identities, (9, 28))
04227         self.assertEqual(record.alignments[6].hsps[0].positives, (16, 28))
04228         self.assertEqual(record.alignments[7].hsps[0].identities, (10, 24))
04229         self.assertEqual(record.alignments[7].hsps[0].positives, (15, 24))
04230         self.assertEqual(record.alignments[8].hsps[0].identities, (9, 33))
04231         self.assertEqual(record.alignments[8].hsps[0].positives, (19, 33))
04232         self.assertEqual(record.alignments[9].hsps[0].identities, (10, 15))
04233         self.assertEqual(record.alignments[9].hsps[0].positives, (11, 15))
04234         self.assertEqual(record.alignments[10].hsps[0].identities, (12, 39))
04235         self.assertEqual(record.alignments[10].hsps[0].positives, (19, 39))
04236         self.assertEqual(record.alignments[11].hsps[0].identities, (8, 26))
04237         self.assertEqual(record.alignments[11].hsps[0].positives, (15, 26))
04238         self.assertEqual(record.alignments[12].hsps[0].identities, (13, 38))
04239         self.assertEqual(record.alignments[12].hsps[0].positives, (19, 38))
04240         self.assertEqual(record.alignments[13].hsps[0].identities, (12, 24))
04241         self.assertEqual(record.alignments[13].hsps[0].positives, (13, 24))
04242         self.assertEqual(record.alignments[14].hsps[0].identities, (12, 24))
04243         self.assertEqual(record.alignments[14].hsps[0].positives, (13, 24))
04244         self.assertEqual(record.alignments[15].hsps[0].identities, (9, 21))
04245         self.assertEqual(record.alignments[15].hsps[0].positives, (13, 21))
04246         self.assertEqual(record.alignments[16].hsps[0].identities, (8, 20))
04247         self.assertEqual(record.alignments[16].hsps[0].positives, (13, 20))
04248         self.assertEqual(record.alignments[17].hsps[0].identities, (7, 22))
04249         self.assertEqual(record.alignments[17].hsps[0].positives, (13, 22))
04250         self.assertEqual(record.alignments[18].hsps[0].identities, (9, 20))
04251         self.assertEqual(record.alignments[18].hsps[0].positives, (13, 20))
04252         self.assertEqual(record.alignments[0].hsps[0].frame, ("+2", "+2"))
04253         self.assertEqual(record.alignments[0].hsps[1].frame, ("+1", "+1"))
04254         self.assertEqual(record.alignments[0].hsps[2].frame, ("+3", "+3"))
04255         self.assertEqual(record.alignments[0].hsps[3].frame, ("+3", "+3"))
04256         self.assertEqual(record.alignments[0].hsps[4].frame, ("-1", "-1"))
04257         self.assertEqual(record.alignments[0].hsps[5].frame, ("-3", "-3"))
04258         self.assertEqual(record.alignments[0].hsps[6].frame, ("-2", "-2"))
04259         self.assertEqual(record.alignments[1].hsps[0].frame, ("+3", "+3"))
04260         self.assertEqual(record.alignments[1].hsps[1].frame, ("+3", "+3"))
04261         self.assertEqual(record.alignments[1].hsps[2].frame, ("+1", "+1"))
04262         self.assertEqual(record.alignments[1].hsps[3].frame, ("+2", "+2"))
04263         self.assertEqual(record.alignments[1].hsps[4].frame, ("+2", "+2"))
04264         self.assertEqual(record.alignments[1].hsps[5].frame, ("-3", "-2"))
04265         self.assertEqual(record.alignments[1].hsps[6].frame, ("-2", "-1"))
04266         self.assertEqual(record.alignments[1].hsps[7].frame, ("-1", "-3"))
04267         self.assertEqual(record.alignments[2].hsps[0].frame, ("+1", "+2"))
04268         self.assertEqual(record.alignments[3].hsps[0].frame, ("-3", "+1"))
04269         self.assertEqual(record.alignments[4].hsps[0].frame, ("-3", "-2"))
04270         self.assertEqual(record.alignments[5].hsps[0].frame, ("-3", "-2"))
04271         self.assertEqual(record.alignments[6].hsps[0].frame, ("+3", "+1"))
04272         self.assertEqual(record.alignments[7].hsps[0].frame, ("+1", "-2"))
04273         self.assertEqual(record.alignments[8].hsps[0].frame, ("+3", "-2"))
04274         self.assertEqual(record.alignments[9].hsps[0].frame, ("-3", "-3"))
04275         self.assertEqual(record.alignments[10].hsps[0].frame, ("+2", "-3"))
04276         self.assertEqual(record.alignments[11].hsps[0].frame, ("+1", "+3"))
04277         self.assertEqual(record.alignments[12].hsps[0].frame, ("+1", "+2"))
04278         self.assertEqual(record.alignments[13].hsps[0].frame, ("-3", "+3"))
04279         self.assertEqual(record.alignments[14].hsps[0].frame, ("-3", "-1"))
04280         self.assertEqual(record.alignments[15].hsps[0].frame, ("-1", "-1"))
04281         self.assertEqual(record.alignments[16].hsps[0].frame, ("-3", "+1"))
04282         self.assertEqual(record.alignments[17].hsps[0].frame, ("+1", "+1"))
04283         self.assertEqual(record.alignments[18].hsps[0].frame, ("-1", "+2"))
04284         self.assertEqual(record.alignments[0].hsps[0].query, "IRMPLHS*DSSFCPL*QEKWECMXXXXXXXXRPKRCLQPHPLNWP*LGLNALMQNPLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQFSPLQPLFWWTNNLGTPNPGRKNIQHYEXALX*S*NGFPKLVTHGPGXVXLXLXGLSSFQEFXSTVANPWGX*XXXXXXXXXFXXGXRXXXLXXXXGGCXXVXXVXXXWXXXF")
04285         self.assertEqual(record.alignments[0].hsps[0].match, "IRMPLHS*DSSFCPL*QEKWECM        RPKRCLQPHPLNWP*LGLNALMQNPLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQFSPLQPLFWWTNNLGTPNPGRKNIQHYE AL *S*NGFPKLVTHGPG V L L GLSSFQEF STVANPWG *         F  G R   L    GGC  V  V   W   F")
04286         self.assertEqual(record.alignments[0].hsps[0].sbjct, "IRMPLHS*DSSFCPL*QEKWECMQSSQKKQKRPKRCLQPHPLNWP*LGLNALMQNPLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQFSPLQPLFWWTNNLGTPNPGRKNIQHYEXALX*S*NGFPKLVTHGPGXVXLXLXGLSSFQEFXSTVANPWGX*XXXXXXXXXFXXGXRXXXLXXXXGGCXXVXXVXXXWXXXF")
04287         self.assertEqual(record.alignments[0].hsps[0].query_start, 2)
04288         self.assertEqual(record.alignments[0].hsps[0].query_end, 601)
04289         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 2)
04290         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 601)
04291         self.assertEqual(record.alignments[0].hsps[1].query, "DQNAPPLMRLFILSTLTGKVGMYAELSKETKKAKTVPSATSSELALTWTKCTNAKSLDKSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVLVDK*PRYSKSWQEKYTAL*XSTXVILKWISKAGYTWPWXXXIXFXXAFFXXXXXXXXXXXXXXLXGXVX*XXXXSXGPXXXXVXXPXGWVXXGXFXFXXXXXXFXXXLG")
04292         self.assertEqual(record.alignments[0].hsps[1].match, "DQNAPPLMRLFILSTLTGKVGMYAELSKETKKAKTVPSATSSELALTWTKCTNAKSLDKSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVLVDK*PRYSKSWQEKYTAL* ST VILKWISKAGYTWPW   I F  AFF              L G V *    S GP    V  P GWV  G F F      F   LG")
04293         self.assertEqual(record.alignments[0].hsps[1].sbjct, "DQNAPPLMRLFILSTLTGKVGMYAELSKETKKAKTVPSATSSELALTWTKCTNAKSLDKSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVLVDK*PRYSKSWQEKYTAL*XSTXVILKWISKAGYTWPWXXXIXFXXAFFXSGVXVNGGKSXGXLXGXVX*XXXXSXGPXXXXVXXPXGWVXXGXFXFXXXXXXFXXXLG")
04294         self.assertEqual(record.alignments[0].hsps[1].query_start, 1)
04295         self.assertEqual(record.alignments[0].hsps[1].query_end, 615)
04296         self.assertEqual(record.alignments[0].hsps[1].sbjct_start, 1)
04297         self.assertEqual(record.alignments[0].hsps[1].sbjct_end, 615)
04298         self.assertEqual(record.alignments[0].hsps[2].query, "SECPSTHETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHIL*IGPDLD*MH*CKIP*QKRIGYFKPALFFM*PV")
04299         self.assertEqual(record.alignments[0].hsps[2].match, "SECPSTHETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHIL*IGPDLD*MH*CKIP*QKRIGYFKPALFFM*PV")
04300         self.assertEqual(record.alignments[0].hsps[2].sbjct, "SECPSTHETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHIL*IGPDLD*MH*CKIP*QKRIGYFKPALFFM*PV")
04301         self.assertEqual(record.alignments[0].hsps[2].query_start, 3)
04302         self.assertEqual(record.alignments[0].hsps[2].query_end, 224)
04303         self.assertEqual(record.alignments[0].hsps[2].sbjct_start, 3)
04304         self.assertEqual(record.alignments[0].hsps[2].sbjct_end, 224)
04305         self.assertEqual(record.alignments[0].hsps[3].query, "YSHCSGGQIT*VLQILAGKIYSIMXQHSXNPKMDFQSWLHMALXXSY*XXXGFLXFRSXGQRWQIXGVXXWXGXLXXXXFXGAXGGXGXXSXXVGAXGXXXFXXXGXXXXXXXW")
04306         self.assertEqual(record.alignments[0].hsps[3].match, "YSHCSGGQIT*VLQILAGKIYSIM QHS NPKMDFQSWLHMAL  SY*   GFL FRS GQRWQI GV  W G L    F GA GG G  S  VGA G   F   G       W")
04307         self.assertEqual(record.alignments[0].hsps[3].sbjct, "YSHCSGGQIT*VLQILAGKIYSIMXQHSXNPKMDFQSWLHMALXXSY*XXXGFLXFRSXGQRWQIXGVXXWXGXLXXXXFXGAXGGXGXXSXXVGAXGXXXFXXXGXXXXXXXW")
04308         self.assertEqual(record.alignments[0].hsps[3].query_start, 273)
04309         self.assertEqual(record.alignments[0].hsps[3].query_end, 614)
04310         self.assertEqual(record.alignments[0].hsps[3].sbjct_start, 273)
04311         self.assertEqual(record.alignments[0].hsps[3].sbjct_end, 614)
04312         self.assertEqual(record.alignments[0].hsps[4].query, "PKXXXKXXXXXXKTKXTXXHPPXWXXNXXXLWPXXXXXXLXNXXX*XPXGFATVDXNS*XEESPXKXNXTXPGPCVTSFGNPF*DYXSAXS*CCIFFLPGFGVPRLFVHQNNGCKGEN*AVVRSC*EDAVKQVT*KTMLV*NNLCAFVKGFCISAFSPSQGQFRGCG*RHRFGLFCFF*ELCIHSHFSCQSGQNEESHEWRGILI")
04313         self.assertEqual(record.alignments[0].hsps[4].match, "PK   K      KTK T  HPP W  N   LWP      L N   * P GFATVD NS* EESP K N T PGPCVTSFGNPF*DY SA S*CCIFFLPGFGVPRLFVHQNNGCKGEN*AVVRSC*EDAVKQVT*KTMLV*NNLCAFVKGFCISAFSPSQGQFRGCG*RHRFGLFCFF*ELCIHSHFSCQSGQNEESHEWRGILI")
04314         self.assertEqual(record.alignments[0].hsps[4].sbjct, "PKXXXKXXXXXXKTKXTXXHPPXWXXNXXXLWPXXXXXXLXNXXX*XPXGFATVDXNS*XEESPXKXNXTXPGPCVTSFGNPF*DYXSAXS*CCIFFLPGFGVPRLFVHQNNGCKGEN*AVVRSC*EDAVKQVT*KTMLV*NNLCAFVKGFCISAFSPSQGQFRGCG*RHRFGLFCFF*ELCIHSHFSCQSGQNEESHEWRGILI")
04315         self.assertEqual(record.alignments[0].hsps[4].query_start, 615)
04316         self.assertEqual(record.alignments[0].hsps[4].query_end, 1)
04317         self.assertEqual(record.alignments[0].hsps[4].sbjct_start, 615)
04318         self.assertEqual(record.alignments[0].hsps[4].sbjct_end, 1)
04319         self.assertEqual(record.alignments[0].hsps[5].query, "PXXXNXXNPXAPTXXXX*PXPPXAPXKXXXXXXPXXLXTPXICHR*PKLLKXRKPX*XQXDXXRAMCNQLWKSILGLXECXFIMLYIFPARIWST*VICPPEQWL*RRKLSSGQKLLRRCGKTGYIKNNAGLK*PMRFCQGILH*CI*SKSGPIQRMWLKAPFWPFLFLLRALHTFPLFLSKWTK*RVS*VEGHSD")
04320         self.assertEqual(record.alignments[0].hsps[5].match, "P   N  NP APT    *P PP AP K      P  L TP ICHR*PKLLK RKP * Q D  RAMCNQLWKSILGL EC FIMLYIFPARIWST*VICPPEQWL*RRKLSSGQKLLRRCGKTGYIKNNAGLK*PMRFCQGILH*CI*SKSGPIQRMWLKAPFWPFLFLLRALHTFPLFLSKWTK*RVS*VEGHSD")
04321         self.assertEqual(record.alignments[0].hsps[5].sbjct, "PXXXNXXNPXAPTXXXX*PXPPXAPXKXXXXXXPXXLXTPXICHR*PKLLKXRKPX*XQXDXXRAMCNQLWKSILGLXECXFIMLYIFPARIWST*VICPPEQWL*RRKLSSGQKLLRRCGKTGYIKNNAGLK*PMRFCQGILH*CI*SKSGPIQRMWLKAPFWPFLFLLRALHTFPLFLSKWTK*RVS*VEGHSD")
04322         self.assertEqual(record.alignments[0].hsps[5].query_start, 589)
04323         self.assertEqual(record.alignments[0].hsps[5].query_end, 2)
04324         self.assertEqual(record.alignments[0].hsps[5].sbjct_start, 589)
04325         self.assertEqual(record.alignments[0].hsps[5].sbjct_end, 2)
04326         self.assertEqual(record.alignments[0].hsps[6].query, "EXKKAXXXSIXXXQGHV*PALEIHFRIT*VLXHNAVYFSCQDLEYLGYLSTRTMAVKEKIEQWSEAAEKMR*NRLHKKQCWFEITYALLSRDFALVHLVQVRANSEDVAEGTVLAFFVSFESSAYIPTFPVKVDKMKSLMSGGAF*")
04327         self.assertEqual(record.alignments[0].hsps[6].match, "E KKA   SI   QGHV*PALEIHFRIT*VL HNAVYFSCQDLEYLGYLSTRTMAVKEKIEQWSEAAEKMR*NRLHKKQCWFEITYALLSRDFALVHLVQVRANSEDVAEGTVLAFFVSFESSAYIPTFPVKVDKMKSLMSGGAF*")
04328         self.assertEqual(record.alignments[0].hsps[6].sbjct, "EXKKAXXXSIXXXQGHV*PALEIHFRIT*VLXHNAVYFSCQDLEYLGYLSTRTMAVKEKIEQWSEAAEKMR*NRLHKKQCWFEITYALLSRDFALVHLVQVRANSEDVAEGTVLAFFVSFESSAYIPTFPVKVDKMKSLMSGGAF*")
04329         self.assertEqual(record.alignments[0].hsps[6].query_start, 440)
04330         self.assertEqual(record.alignments[0].hsps[6].query_end, 3)
04331         self.assertEqual(record.alignments[0].hsps[6].sbjct_start, 440)
04332         self.assertEqual(record.alignments[0].hsps[6].sbjct_end, 3)
04333         self.assertEqual(record.alignments[1].hsps[0].query, "SECPSTHETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHIL*IGPDLD*MH*CKIP*QKRIGYFKPALFFM*PV")
04334         self.assertEqual(record.alignments[1].hsps[0].match, "S CPSTHETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHIL*IGPDLD*  *CKIP*QKRIGYFKPALFFM*PV")
04335         self.assertEqual(record.alignments[1].hsps[0].sbjct, "SXCPSTHETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHIL*IGPDLD*XX*CKIP*QKRIGYFKPALFFM*PV")
04336         self.assertEqual(record.alignments[1].hsps[0].query_start, 3)
04337         self.assertEqual(record.alignments[1].hsps[0].query_end, 224)
04338         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 3)
04339         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 224)
04340         self.assertEqual(record.alignments[1].hsps[1].query, "YSHCSGGQIT*VLQILAGKIYSIMXQHSXNPKMDFQSWLHMALXXSY*XXXGFLXFRSXGQRWQIXG")
04341         self.assertEqual(record.alignments[1].hsps[1].match, "YSHCSGGQIT*VLQILAGKIYSIM QHS   K  FQSWLHM     +     F   R  GQR Q  G")
04342         self.assertEqual(record.alignments[1].hsps[1].sbjct, "YSHCSGGQIT*VLQILAGKIYSIMKQHSVILKWIFQSWLHMXCKVLFKFKRPFSFTRGLGQRXQTPG")
04343         self.assertEqual(record.alignments[1].hsps[1].query_start, 273)
04344         self.assertEqual(record.alignments[1].hsps[1].query_end, 473)
04345         self.assertEqual(record.alignments[1].hsps[1].sbjct_start, 273)
04346         self.assertEqual(record.alignments[1].hsps[1].sbjct_end, 473)
04347         self.assertEqual(record.alignments[1].hsps[2].query, "DQNAPPLMRLFILSTLTGKVGMYAELSKETKKAKTVPSATSSELALTWTKCTNAKSLDKSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVLVDK*PRYSKSWQEKYTAL*XSTXVILKWISKAGYTWP")
04348         self.assertEqual(record.alignments[1].hsps[2].match, "DQ APPLMRLFILSTLTGKVGMYAELSKETKKAKTVPSATSSELALTWTK  NAKSLDKSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVLVDK*PRYSKSWQEKYTAL* ST       SKAGYT P")
04349         self.assertEqual(record.alignments[1].hsps[2].sbjct, "DQXAPPLMRLFILSTLTGKVGMYAELSKETKKAKTVPSATSSELALTWTKXXNAKSLDKSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVLVDK*PRYSKSWQEKYTAL*NSTQ*S*NGFSKAGYTXP")
04350         self.assertEqual(record.alignments[1].hsps[2].query_start, 1)
04351         self.assertEqual(record.alignments[1].hsps[2].query_end, 399)
04352         self.assertEqual(record.alignments[1].hsps[2].sbjct_start, 1)
04353         self.assertEqual(record.alignments[1].hsps[2].sbjct_end, 399)
04354         self.assertEqual(record.alignments[1].hsps[3].query, "IRMPLHS*DSSFCPL*QEKWECMXXXXXXXXRPKRCLQPHPLNWP*LGLNALMQNPLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQFSPLQPLFWWTNNLGTPNPGRKNIQHYEXALX*S*NGFPKLVTH")
04355         self.assertEqual(record.alignments[1].hsps[3].match, "IR PLHS*DSSFCPL*QEKWECM        RPKRCLQPHPLNWP*LGL  LMQNPLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQF PLQPLFWWTNNLGTPNPGRKNIQHYE AL      FPKLVTH")
04356         self.assertEqual(record.alignments[1].hsps[3].sbjct, "IRXPLHS*DSSFCPL*QEKWECMQSSQKKQKRPKRCLQPHPLNWP*LGLXPLMQNPLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQFFPLQPLFWWTNNLGTPNPGRKNIQHYETALSNPKMDFPKLVTH")
04357         self.assertEqual(record.alignments[1].hsps[3].query_start, 2)
04358         self.assertEqual(record.alignments[1].hsps[3].query_end, 394)
04359         self.assertEqual(record.alignments[1].hsps[3].sbjct_start, 2)
04360         self.assertEqual(record.alignments[1].hsps[3].sbjct_end, 394)
04361         self.assertEqual(record.alignments[1].hsps[4].query, "FQEFXSTVANPWG")
04362         self.assertEqual(record.alignments[1].hsps[4].match, "+Q F ST ANPWG")
04363         self.assertEqual(record.alignments[1].hsps[4].sbjct, "YQGFRSTXANPWG")
04364         self.assertEqual(record.alignments[1].hsps[4].query_start, 437)
04365         self.assertEqual(record.alignments[1].hsps[4].query_end, 475)
04366         self.assertEqual(record.alignments[1].hsps[4].sbjct_start, 437)
04367         self.assertEqual(record.alignments[1].hsps[4].sbjct_end, 475)
04368         self.assertEqual(record.alignments[1].hsps[5].query, "PXICHR*PKLLKXRKPX*XQXDXXRAMCNQLWKSILGLXECXFIMLYIFPARIWST*VICPPEQWL*RRKLSSGQKLLRRCGKTGYIKNNAGLK*PMRFCQGILH*CI*SKSGPIQRMWLKAPFWPFLFLLRALHTFPLFLSKWTK*RVS*VEGHSD")
04369         self.assertEqual(record.alignments[1].hsps[5].match, "P +C R*PK L   K         + MCNQLWK    + EC FIMLYIFPARIWST*VICPPEQWL*R+KLSSGQKLLRRCGKTGYIKNNAGLK*PMRFCQGILH*  *SKSGPIQRMWLKAPFWPFLFLLRALHTFPLFLSKWTK*RVS*VEG SD")
04370         self.assertEqual(record.alignments[1].hsps[5].sbjct, "PGVCXR*PKPLVNEKGLLNLNKTLQXMCNQLWKIHFRITECCFIMLYIFPARIWST*VICPPEQWL*RKKLSSGQKLLRRCGKTGYIKNNAGLK*PMRFCQGILH*XX*SKSGPIQRMWLKAPFWPFLFLLRALHTFPLFLSKWTK*RVS*VEGXSD")
04371         self.assertEqual(record.alignments[1].hsps[5].query_start, 472)
04372         self.assertEqual(record.alignments[1].hsps[5].query_end, 2)
04373         self.assertEqual(record.alignments[1].hsps[5].sbjct_start, 472)
04374         self.assertEqual(record.alignments[1].hsps[5].sbjct_end, 2)
04375         self.assertEqual(record.alignments[1].hsps[6].query, "GHV*PALEIHFRIT*VLXHNAVYFSCQDLEYLGYLSTRTMAVKEKIEQWSEAAEKMR*NRLHKKQCWFEITYALLSRDFALVHLVQVRANSEDVAEGTVLAFFVSFESSAYIPTFPVKVDKMKSLMSGGA")
04376         self.assertEqual(record.alignments[1].hsps[6].match, "GHV*PALE  F   *VL HNAVYFSCQDLEYLGYLSTRTMAVKEKIEQWSEAAEKMR*NRLHKKQCWFEITYALLSRDFAL  LVQVRANSEDVAEGTVLAFFVSFESSAYIPTFPVKVDKMKSLMSGGA")
04377         self.assertEqual(record.alignments[1].hsps[6].sbjct, "GHV*PALENPF*DY*VLFHNAVYFSCQDLEYLGYLSTRTMAVKEKIEQWSEAAEKMR*NRLHKKQCWFEITYALLSRDFALXXLVQVRANSEDVAEGTVLAFFVSFESSAYIPTFPVKVDKMKSLMSGGA")
04378         self.assertEqual(record.alignments[1].hsps[6].query_start, 398)
04379         self.assertEqual(record.alignments[1].hsps[6].query_end, 9)
04380         self.assertEqual(record.alignments[1].hsps[6].sbjct_start, 398)
04381         self.assertEqual(record.alignments[1].hsps[6].sbjct_end, 9)
04382         self.assertEqual(record.alignments[1].hsps[7].query, "CVTSFGNPF*DYXSAXS*CCIFFLPGFGVPRLFVHQNNGCKGEN*AVVRSC*EDAVKQVT*KTMLV*NNLCAFVKGFCISAFSPSQGQFRGCG*RHRFGLFCFF*ELCIHSHFSCQSGQNEESHEWRGILI")
04383         self.assertEqual(record.alignments[1].hsps[7].match, "CVTSFG       SA S*CCIFFLPGFGVPRLFVHQNNGCKG+N*AVVRSC*EDAVKQVT*KTMLV*NNLCAFVKGFCI  FSPSQGQFRGCG*RHRFGLFCFF*ELCIHSHFSCQSGQNEESHEWRG LI")
04384         self.assertEqual(record.alignments[1].hsps[7].sbjct, "CVTSFGKSILGLLSAVS*CCIFFLPGFGVPRLFVHQNNGCKGKN*AVVRSC*EDAVKQVT*KTMLV*NNLCAFVKGFCIXGFSPSQGQFRGCG*RHRFGLFCFF*ELCIHSHFSCQSGQNEESHEWRGXLI")
04385         self.assertEqual(record.alignments[1].hsps[7].query_start, 393)
04386         self.assertEqual(record.alignments[1].hsps[7].query_end, 1)
04387         self.assertEqual(record.alignments[1].hsps[7].sbjct_start, 393)
04388         self.assertEqual(record.alignments[1].hsps[7].sbjct_end, 1)
04389         self.assertEqual(record.alignments[2].hsps[0].query, "LCNLFYRIFSAASDHCSIFSFTAIVLV")
04390         self.assertEqual(record.alignments[2].hsps[0].match, "L NL +R+F++  DHCS+  F   V++")
04391         self.assertEqual(record.alignments[2].hsps[0].sbjct, "LTNLIFRLFTSK*DHCSLKQFNNKVVI")
04392         self.assertEqual(record.alignments[2].hsps[0].query_start, 211)
04393         self.assertEqual(record.alignments[2].hsps[0].query_end, 291)
04394         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 2)
04395         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 82)
04396         self.assertEqual(record.alignments[3].hsps[0].query, "IWST*VICPPEQWL*RRKL")
04397         self.assertEqual(record.alignments[3].hsps[0].match, "+W T  +CPP  W *RR+L")
04398         self.assertEqual(record.alignments[3].hsps[0].sbjct, "LWGTAPLCPPVPWA*RRQL")
04399         self.assertEqual(record.alignments[3].hsps[0].query_start, 316)
04400         self.assertEqual(record.alignments[3].hsps[0].query_end, 260)
04401         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 226)
04402         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 282)
04403         self.assertEqual(record.alignments[4].hsps[0].query, "PFWPFLFLLRALHTFPLFLSKWTK")
04404         self.assertEqual(record.alignments[4].hsps[0].match, "P WP + LL  +H+FP  +  W K")
04405         self.assertEqual(record.alignments[4].hsps[0].sbjct, "PEWPSINLLPGMHSFPRVIPCWEK")
04406         self.assertEqual(record.alignments[4].hsps[0].query_start, 106)
04407         self.assertEqual(record.alignments[4].hsps[0].query_end, 35)
04408         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 716)
04409         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 645)
04410         self.assertEqual(record.alignments[5].hsps[0].query, "PFWPFLFLLRALHTFPLFLSKWTK*RVS*VEGHS")
04411         self.assertEqual(record.alignments[5].hsps[0].match, "P W   FLLR LHT P    K+    V+  EG S")
04412         self.assertEqual(record.alignments[5].hsps[0].sbjct, "PGWTLRFLLRGLHTPPKAAEKFPSQGVAEPEGFS")
04413         self.assertEqual(record.alignments[5].hsps[0].query_start, 106)
04414         self.assertEqual(record.alignments[5].hsps[0].query_end, 5)
04415         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 176)
04416         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 75)
04417         self.assertEqual(record.alignments[6].hsps[0].query, "STHETLHFVHFDRKSGNVCRALKRNKKG")
04418         self.assertEqual(record.alignments[6].hsps[0].match, "+TH    F+H  +K  N+C  +  N++G")
04419         self.assertEqual(record.alignments[6].hsps[0].sbjct, "TTHSMTVFLHVKKKLSNICIYMPENREG")
04420         self.assertEqual(record.alignments[6].hsps[0].query_start, 15)
04421         self.assertEqual(record.alignments[6].hsps[0].query_end, 98)
04422         self.assertEqual(record.alignments[6].hsps[0].sbjct_start, 82)
04423         self.assertEqual(record.alignments[6].hsps[0].sbjct_end, 165)
04424         self.assertEqual(record.alignments[7].hsps[0].query, "HCFLCNLFYRIFSAASDHCSIFSF")
04425         self.assertEqual(record.alignments[7].hsps[0].match, "HC L ++F RIF    +  S+F+F")
04426         self.assertEqual(record.alignments[7].hsps[0].sbjct, "HCHLSSVFCRIFFTLEESLSLFAF")
04427         self.assertEqual(record.alignments[7].hsps[0].query_start, 202)
04428         self.assertEqual(record.alignments[7].hsps[0].query_end, 273)
04429         self.assertEqual(record.alignments[7].hsps[0].sbjct_start, 443)
04430         self.assertEqual(record.alignments[7].hsps[0].sbjct_end, 372)
04431         self.assertEqual(record.alignments[8].hsps[0].query, "ETLHFVHFDRKSGNVCRALKRNKKGQNGAFSHI")
04432         self.assertEqual(record.alignments[8].hsps[0].match, "E +H+V F +  G +  + ++ ++ QN   SH+")
04433         self.assertEqual(record.alignments[8].hsps[0].sbjct, "EKIHYVLF*KNCGKIMTS*RQRQENQNNLLSHV")
04434         self.assertEqual(record.alignments[8].hsps[0].query_start, 24)
04435         self.assertEqual(record.alignments[8].hsps[0].query_end, 122)
04436         self.assertEqual(record.alignments[8].hsps[0].sbjct_start, 141)
04437         self.assertEqual(record.alignments[8].hsps[0].sbjct_end, 43)
04438         self.assertEqual(record.alignments[9].hsps[0].query, "LKAPFWPFLFLLRAL")
04439         self.assertEqual(record.alignments[9].hsps[0].match, "L  PFW FLF L+AL")
04440         self.assertEqual(record.alignments[9].hsps[0].sbjct, "LSVPFWKFLFYLQAL")
04441         self.assertEqual(record.alignments[9].hsps[0].query_start, 115)
04442         self.assertEqual(record.alignments[9].hsps[0].query_end, 71)
04443         self.assertEqual(record.alignments[9].hsps[0].sbjct_start, 242)
04444         self.assertEqual(record.alignments[9].hsps[0].sbjct_end, 198)
04445         self.assertEqual(record.alignments[10].hsps[0].query, "PLTKAHRLFQTSIVFYVTCFTASSQQLLTTAQFSPLQPL")
04446         self.assertEqual(record.alignments[10].hsps[0].match, "PL    RLF + +  ++ C T     L  +  F P++PL")
04447         self.assertEqual(record.alignments[10].hsps[0].sbjct, "PLKTQGRLFYSKVSLFLKCRTTLCLFLNVSEGFXPIEPL")
04448         self.assertEqual(record.alignments[10].hsps[0].query_start, 167)
04449         self.assertEqual(record.alignments[10].hsps[0].query_end, 283)
04450         self.assertEqual(record.alignments[10].hsps[0].sbjct_start, 211)
04451         self.assertEqual(record.alignments[10].hsps[0].sbjct_end, 95)
04452         self.assertEqual(record.alignments[11].hsps[0].query, "CFLCNLFYRIFSAASDHCSIFSFTAI")
04453         self.assertEqual(record.alignments[11].hsps[0].match, "CF+C L  +I+  A +   +  FT++")
04454         self.assertEqual(record.alignments[11].hsps[0].sbjct, "CFICKLVLKIYLRAEERTQLIEFTSL")
04455         self.assertEqual(record.alignments[11].hsps[0].query_start, 205)
04456         self.assertEqual(record.alignments[11].hsps[0].query_end, 282)
04457         self.assertEqual(record.alignments[11].hsps[0].sbjct_start, 249)
04458         self.assertEqual(record.alignments[11].hsps[0].sbjct_end, 326)
04459         self.assertEqual(record.alignments[12].hsps[0].query, "KSA*VISNQHCFLCNLFYRIFSAASDHCSIFSFTAIVL")
04460         self.assertEqual(record.alignments[12].hsps[0].match, "+SA +I   HC    +   +FS ASD  S    T ++L")
04461         self.assertEqual(record.alignments[12].hsps[0].sbjct, "QSAWIIGMSHCAWAVIHCLLFSTASDEKSAVDLTGVLL")
04462         self.assertEqual(record.alignments[12].hsps[0].query_start, 175)
04463         self.assertEqual(record.alignments[12].hsps[0].query_end, 288)
04464         self.assertEqual(record.alignments[12].hsps[0].sbjct_start, 119)
04465         self.assertEqual(record.alignments[12].hsps[0].sbjct_end, 232)
04466         self.assertEqual(record.alignments[13].hsps[0].query, "WLKAPFWPFLFLLRALHTFPLFLS")
04467         self.assertEqual(record.alignments[13].hsps[0].match, "WL  PF PFL  L +L   P  LS")
04468         self.assertEqual(record.alignments[13].hsps[0].sbjct, "WLLFPFLPFLPFLPSLPFLPFLLS")
04469         self.assertEqual(record.alignments[13].hsps[0].query_start, 118)
04470         self.assertEqual(record.alignments[13].hsps[0].query_end, 47)
04471         self.assertEqual(record.alignments[13].hsps[0].sbjct_start, 153)
04472         self.assertEqual(record.alignments[13].hsps[0].sbjct_end, 224)
04473         self.assertEqual(record.alignments[14].hsps[0].query, "WLKAPFWPFLFLLRALHTFPLFLS")
04474         self.assertEqual(record.alignments[14].hsps[0].match, "WL  PF PFL  L +L   P  LS")
04475         self.assertEqual(record.alignments[14].hsps[0].sbjct, "WLLFPFLPFLPFLPSLPFLPFLLS")
04476         self.assertEqual(record.alignments[14].hsps[0].query_start, 118)
04477         self.assertEqual(record.alignments[14].hsps[0].query_end, 47)
04478         self.assertEqual(record.alignments[14].hsps[0].sbjct_start, 235)
04479         self.assertEqual(record.alignments[14].hsps[0].sbjct_end, 164)
04480         self.assertEqual(record.alignments[15].hsps[0].query, "CCIFFLPGFGVPRLFVHQNNG")
04481         self.assertEqual(record.alignments[15].hsps[0].match, "C IF++P F    LF+H+  G")
04482         self.assertEqual(record.alignments[15].hsps[0].sbjct, "CFIFYVPDFPWSNLFLHRGRG")
04483         self.assertEqual(record.alignments[15].hsps[0].query_start, 339)
04484         self.assertEqual(record.alignments[15].hsps[0].query_end, 277)
04485         self.assertEqual(record.alignments[15].hsps[0].sbjct_start, 1396)
04486         self.assertEqual(record.alignments[15].hsps[0].sbjct_end, 1334)
04487         self.assertEqual(record.alignments[16].hsps[0].query, "NQLWKSILGLXECXFIMLYI")
04488         self.assertEqual(record.alignments[16].hsps[0].match, "NQ+WK  L +  C F+ +Y+")
04489         self.assertEqual(record.alignments[16].hsps[0].sbjct, "NQMWKHSLEVCMCVFVYIYV")
04490         self.assertEqual(record.alignments[16].hsps[0].query_start, 388)
04491         self.assertEqual(record.alignments[16].hsps[0].query_end, 329)
04492         self.assertEqual(record.alignments[16].hsps[0].sbjct_start, 37)
04493         self.assertEqual(record.alignments[16].hsps[0].sbjct_end, 96)
04494         self.assertEqual(record.alignments[17].hsps[0].query, "CFLCNLFYRIFSAASDHCSIFS")
04495         self.assertEqual(record.alignments[17].hsps[0].match, "CF   + +R+F+    HC+ F+")
04496         self.assertEqual(record.alignments[17].hsps[0].sbjct, "CFALTVIWRVFAGCRPHCATFT")
04497         self.assertEqual(record.alignments[17].hsps[0].query_start, 205)
04498         self.assertEqual(record.alignments[17].hsps[0].query_end, 270)
04499         self.assertEqual(record.alignments[17].hsps[0].sbjct_start, 13)
04500         self.assertEqual(record.alignments[17].hsps[0].sbjct_end, 78)
04501         self.assertEqual(record.alignments[18].hsps[0].query, "VKGFCISAFSPSQGQFRGCG")
04502         self.assertEqual(record.alignments[18].hsps[0].match, "V GFC+++FSP +    G G")
04503         self.assertEqual(record.alignments[18].hsps[0].sbjct, "VDGFCVTSFSPKKDTHPGSG")
04504         self.assertEqual(record.alignments[18].hsps[0].query_start, 174)
04505         self.assertEqual(record.alignments[18].hsps[0].query_end, 115)
04506         self.assertEqual(record.alignments[18].hsps[0].sbjct_start, 125)
04507         self.assertEqual(record.alignments[18].hsps[0].sbjct_end, 184)
04508         self.assertEqual(record.database_name, ['data/sts'])
04509         self.assertEqual(record.num_letters_in_database, [31998854])
04510         self.assertEqual(record.num_sequences_in_database, [87792])
04511         self.assertEqual(record.posted_date, [('Nov 26, 1999  5:52 PM',)])
04512         self.assertEqual(len(record.ka_params), 3)
04513         self.assertAlmostEqual(record.ka_params[0], 0.318)
04514         self.assertAlmostEqual(record.ka_params[1], 0.135)
04515         self.assertAlmostEqual(record.ka_params[2], 0.401)
04516         self.assertEqual(record.matrix, 'BLOSUM62')
04517         self.assertEqual(record.num_hits, 40473548)
04518         self.assertEqual(record.num_sequences, 87792)
04519         self.assertEqual(record.num_extends, 487631)
04520         self.assertEqual(record.num_good_extends, 13175)
04521         self.assertEqual(record.num_seqs_better_e, 38)
04522         self.assertEqual(record.query_length, 205)
04523         self.assertEqual(record.database_length, 10666284)
04524         self.assertEqual(record.effective_hsp_length, 46)
04525         self.assertEqual(record.effective_query_length, 158)
04526         self.assertEqual(record.effective_database_length, 6627852)
04527         self.assertEqual(record.effective_search_space, 1047200616)
04528         self.assertEqual(record.effective_search_space_used, 1047200616)
04529         self.assertEqual(record.frameshift, ('50,','0.1'))
04530         self.assertEqual(record.threshold, 13)
04531         self.assertEqual(record.window_size, 40)
04532         self.assertEqual(len(record.dropoff_1st_pass), 2)
04533         self.assertEqual(record.dropoff_1st_pass[0], 16)
04534         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
04535         self.assertEqual(len(record.gap_x_dropoff), 2)
04536         self.assertEqual(record.gap_x_dropoff[0], 0)
04537         self.assertAlmostEqual(record.gap_x_dropoff[1], 0.0)
04538         self.assertEqual(len(record.gap_trigger), 2)
04539         self.assertEqual(record.gap_trigger[0], 41)
04540         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
04541         self.assertEqual(len(record.blast_cutoff), 2)
04542         self.assertEqual(record.blast_cutoff[0], 52)
04543         self.assertAlmostEqual(record.blast_cutoff[1], 26.7)
04544 
04545     def test_bt039(self):
04546         "Test parsing BLASTP 2.0.10 output (bt039)"
04547 
04548         path = os.path.join('Blast', 'bt039.txt')
04549         handle = open(path)
04550         record = self.parser.parse(handle)
04551         handle.close()
04552         self.assertEqual(record.application, "BLASTP")
04553         self.assertEqual(record.version, '2.0.10')
04554         self.assertEqual(record.date, "Aug-26-1999")
04555         self.assertEqual(record.reference, TestNCBITextParser.reference)
04556         self.assertEqual(record.query, "gi|585505|sp|Q08386|MOPB_RHOCA MOLYBDENUM-PTERIN BINDING\nPROTEIN MOPB")
04557         self.assertEqual(record.query_letters, 270)
04558         self.assertEqual(record.database, "data/swissprot")
04559         self.assertEqual(record.database_sequences, 82258)
04560         self.assertEqual(record.database_letters, 29652561)
04561         self.assertEqual(len(record.descriptions), 13)
04562         self.assertEqual(record.descriptions[0].title, "gi|585505|sp|Q08386|MOPB_RHOCA MOLYBDENUM-PTERIN BINDING PROTEI...")
04563         self.assertEqual(record.descriptions[0].score, 467)
04564         self.assertAlmostEqual(record.descriptions[0].e, 1e-131)
04565         self.assertEqual(record.descriptions[1].title, "gi|585504|sp|Q08385|MOPA_RHOCA MOLYBDENUM-PTERIN BINDING PROTEI...")
04566         self.assertEqual(record.descriptions[1].score, 207)
04567         self.assertAlmostEqual(record.descriptions[1].e, 2e-53)
04568         self.assertEqual(record.descriptions[2].title, "gi|585492|sp|P37733|MODA_AZOVI MOLYBDENUM TRANSPORT PROTEIN MODA")
04569         self.assertEqual(record.descriptions[2].score, 145)
04570         self.assertAlmostEqual(record.descriptions[2].e, 9e-35)
04571         self.assertEqual(record.descriptions[3].title, "gi|1709070|sp|P46930|MODE_ECOLI MOLYBDENUM TRANSPORT PROTEIN MODE")
04572         self.assertEqual(record.descriptions[3].score, 87)
04573         self.assertAlmostEqual(record.descriptions[3].e, 5e-17)
04574         self.assertEqual(record.descriptions[4].title, "gi|1709071|sp|P45324|MODE_HAEIN MOLYBDENUM TRANSPORT PROTEIN MO...")
04575         self.assertEqual(record.descriptions[4].score, 54)
04576         self.assertAlmostEqual(record.descriptions[4].e, 2e-7)
04577         self.assertEqual(record.descriptions[5].title, "gi|585502|sp|P04952|MOP1_CLOPA MOLYBDENUM-PTERIN BINDING PROTEIN I")
04578         self.assertEqual(record.descriptions[5].score, 53)
04579         self.assertAlmostEqual(record.descriptions[5].e, 6e-7)
04580         self.assertEqual(record.descriptions[6].title, "gi|127241|sp|P08854|MOP2_CLOPA MOLYBDENUM-PTERIN BINDING PROTEI...")
04581         self.assertEqual(record.descriptions[6].score, 52)
04582         self.assertAlmostEqual(record.descriptions[6].e, 0.000001)
04583         self.assertEqual(record.descriptions[7].title, "gi|585503|sp|P38366|MOP3_CLOPA MOLYBDENUM-PTERIN BINDING PROTEI...")
04584         self.assertEqual(record.descriptions[7].score, 51)
04585         self.assertAlmostEqual(record.descriptions[7].e, 0.000003)
04586         self.assertEqual(record.descriptions[8].title, "gi|1170996|sp|P45183|MOP_HAEIN PROBABLE MOLYBDENUM-PTERIN BINDI...")
04587         self.assertEqual(record.descriptions[8].score, 46)
04588         self.assertAlmostEqual(record.descriptions[8].e, 0.00005)
04589         self.assertEqual(record.descriptions[9].title, "gi|1709069|sp|P09833|MODC_ECOLI MOLYBDENUM TRANSPORT ATP-BINDIN...")
04590         self.assertEqual(record.descriptions[9].score, 38)
04591         self.assertAlmostEqual(record.descriptions[9].e, 0.021)
04592         self.assertEqual(record.descriptions[10].title, "gi|585500|sp|P37732|MODD_AZOVI MOLYBDENUM TRANSPORT ATP-BINDING...")
04593         self.assertEqual(record.descriptions[10].score, 33)
04594         self.assertAlmostEqual(record.descriptions[10].e, 0.53)
04595         self.assertEqual(record.descriptions[11].title, "gi|2507168|sp|P08838|PT1_BACSU PHOSPHOENOLPYRUVATE-PROTEIN PHOS...")
04596         self.assertEqual(record.descriptions[11].score, 30)
04597         self.assertAlmostEqual(record.descriptions[11].e, 4.6)
04598         self.assertEqual(record.descriptions[12].title, "gi|729786|sp|Q05355|HYDL_STRHA PUTATIVE POLYKETIDE HYDROXYLASE")
04599         self.assertEqual(record.descriptions[12].score, 29)
04600         self.assertAlmostEqual(record.descriptions[12].e, 7.9)
04601         self.assertEqual(len(record.alignments), 13)
04602         self.assertEqual(record.alignments[0].title, ">gi|585505|sp|Q08386|MOPB_RHOCA MOLYBDENUM-PTERIN BINDING PROTEIN MOPB")
04603         self.assertEqual(record.alignments[0].length, 270)
04604         self.assertEqual(record.alignments[1].title, ">gi|585504|sp|Q08385|MOPA_RHOCA MOLYBDENUM-PTERIN BINDING PROTEIN MOPA")
04605         self.assertEqual(record.alignments[1].length, 265)
04606         self.assertEqual(record.alignments[2].title, ">gi|585492|sp|P37733|MODA_AZOVI MOLYBDENUM TRANSPORT PROTEIN MODA")
04607         self.assertEqual(record.alignments[2].length, 270)
04608         self.assertEqual(record.alignments[3].title, ">gi|1709070|sp|P46930|MODE_ECOLI MOLYBDENUM TRANSPORT PROTEIN MODE")
04609         self.assertEqual(record.alignments[3].length, 262)
04610         self.assertEqual(record.alignments[4].title, ">gi|1709071|sp|P45324|MODE_HAEIN MOLYBDENUM TRANSPORT PROTEIN MODE HOMOLOG")
04611         self.assertEqual(record.alignments[4].length, 255)
04612         self.assertEqual(record.alignments[5].title, ">gi|585502|sp|P04952|MOP1_CLOPA MOLYBDENUM-PTERIN BINDING PROTEIN I")
04613         self.assertEqual(record.alignments[5].length, 68)
04614         self.assertEqual(record.alignments[6].title, ">gi|127241|sp|P08854|MOP2_CLOPA MOLYBDENUM-PTERIN BINDING PROTEIN II")
04615         self.assertEqual(record.alignments[6].length, 68)
04616         self.assertEqual(record.alignments[7].title, ">gi|585503|sp|P38366|MOP3_CLOPA MOLYBDENUM-PTERIN BINDING PROTEIN III")
04617         self.assertEqual(record.alignments[7].length, 68)
04618         self.assertEqual(record.alignments[8].title, ">gi|1170996|sp|P45183|MOP_HAEIN PROBABLE MOLYBDENUM-PTERIN BINDING PROTEIN")
04619         self.assertEqual(record.alignments[8].length, 69)
04620         self.assertEqual(record.alignments[9].title, ">gi|1709069|sp|P09833|MODC_ECOLI MOLYBDENUM TRANSPORT ATP-BINDING PROTEIN MODC")
04621         self.assertEqual(record.alignments[9].length, 352)
04622         self.assertEqual(record.alignments[10].title, ">gi|585500|sp|P37732|MODD_AZOVI MOLYBDENUM TRANSPORT ATP-BINDING PROTEIN MODD")
04623         self.assertEqual(record.alignments[10].length, 380)
04624         self.assertEqual(record.alignments[11].title, ">gi|2507168|sp|P08838|PT1_BACSU PHOSPHOENOLPYRUVATE-PROTEIN PHOSPHOTRANSFERASE (PHOSPHOTRANSFERASE SYSTEM, ENZYME I)")
04625         self.assertEqual(record.alignments[11].length, 570)
04626         self.assertEqual(record.alignments[12].title, ">gi|729786|sp|Q05355|HYDL_STRHA PUTATIVE POLYKETIDE HYDROXYLASE")
04627         self.assertEqual(record.alignments[12].length, 555)
04628         self.assertEqual(record.alignments[0].hsps[0].score, 1189)
04629         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 467)
04630         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 1e-131)
04631         self.assertEqual(len(record.alignments[0].hsps), 1)
04632         self.assertEqual(record.alignments[1].hsps[0].score, 521)
04633         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 207)
04634         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 2e-53)
04635         self.assertEqual(len(record.alignments[1].hsps), 1)
04636         self.assertEqual(record.alignments[2].hsps[0].score, 362)
04637         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 145)
04638         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 9e-35)
04639         self.assertEqual(record.alignments[2].hsps[1].score, 98)
04640         self.assertAlmostEqual(record.alignments[2].hsps[1].bits, 42.6)
04641         self.assertAlmostEqual(record.alignments[2].hsps[1].expect, 8e-4)
04642         self.assertEqual(len(record.alignments[2].hsps), 2)
04643         self.assertEqual(record.alignments[3].hsps[0].score, 211)
04644         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 86.6)
04645         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 5e-17)
04646         self.assertEqual(len(record.alignments[3].hsps), 1)
04647         self.assertEqual(record.alignments[4].hsps[0].score, 128)
04648         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 54.3)
04649         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 2e-7)
04650         self.assertEqual(len(record.alignments[4].hsps), 1)
04651         self.assertEqual(record.alignments[5].hsps[0].score, 125)
04652         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 53.1)
04653         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 6e-7)
04654         self.assertEqual(record.alignments[5].hsps[1].score, 84)
04655         self.assertAlmostEqual(record.alignments[5].hsps[1].bits, 37.1)
04656         self.assertAlmostEqual(record.alignments[5].hsps[1].expect, 0.036)
04657         self.assertEqual(len(record.alignments[5].hsps), 2)
04658         self.assertEqual(record.alignments[6].hsps[0].score, 123)
04659         self.assertAlmostEqual(record.alignments[6].hsps[0].bits, 52.3)
04660         self.assertAlmostEqual(record.alignments[6].hsps[0].expect, 1e-6)
04661         self.assertEqual(record.alignments[6].hsps[1].score, 86)
04662         self.assertAlmostEqual(record.alignments[6].hsps[1].bits, 37.9)
04663         self.assertAlmostEqual(record.alignments[6].hsps[1].expect, 0.021)
04664         self.assertEqual(len(record.alignments[6].hsps), 2)
04665         self.assertEqual(record.alignments[7].hsps[0].score, 119)
04666         self.assertAlmostEqual(record.alignments[7].hsps[0].bits, 50.8)
04667         self.assertAlmostEqual(record.alignments[7].hsps[0].expect, 3e-6)
04668         self.assertEqual(record.alignments[7].hsps[1].score, 83)
04669         self.assertAlmostEqual(record.alignments[7].hsps[1].bits, 36.7)
04670         self.assertAlmostEqual(record.alignments[7].hsps[1].expect, 0.047)
04671         self.assertEqual(len(record.alignments[7].hsps), 2)
04672         self.assertEqual(record.alignments[8].hsps[0].score, 108)
04673         self.assertAlmostEqual(record.alignments[8].hsps[0].bits, 46.5)
04674         self.assertAlmostEqual(record.alignments[8].hsps[0].expect, 5e-5)
04675         self.assertEqual(len(record.alignments[8].hsps), 1)
04676         self.assertEqual(record.alignments[9].hsps[0].score, 86)
04677         self.assertAlmostEqual(record.alignments[9].hsps[0].bits, 37.9)
04678         self.assertAlmostEqual(record.alignments[9].hsps[0].expect, 0.021)
04679         self.assertEqual(len(record.alignments[9].hsps), 1)
04680         self.assertEqual(record.alignments[10].hsps[0].score, 74)
04681         self.assertAlmostEqual(record.alignments[10].hsps[0].bits, 33.2)
04682         self.assertAlmostEqual(record.alignments[10].hsps[0].expect, 0.53)
04683         self.assertEqual(len(record.alignments[10].hsps), 1)
04684         self.assertEqual(record.alignments[11].hsps[0].score, 66)
04685         self.assertAlmostEqual(record.alignments[11].hsps[0].bits, 30.1)
04686         self.assertAlmostEqual(record.alignments[11].hsps[0].expect, 4.6)
04687         self.assertEqual(len(record.alignments[11].hsps), 1)
04688         self.assertEqual(record.alignments[12].hsps[0].score, 64)
04689         self.assertAlmostEqual(record.alignments[12].hsps[0].bits, 29.3)
04690         self.assertAlmostEqual(record.alignments[12].hsps[0].expect, 7.9)
04691         self.assertEqual(len(record.alignments[12].hsps), 1)
04692         self.assertEqual(record.alignments[0].hsps[0].identities, (247, 270))
04693         self.assertEqual(record.alignments[0].hsps[0].positives, (247, 270))
04694         self.assertEqual(record.alignments[1].hsps[0].identities, (123, 259))
04695         self.assertEqual(record.alignments[1].hsps[0].positives, (155, 259))
04696         self.assertEqual(record.alignments[1].hsps[0].gaps, (13, 259))
04697         self.assertEqual(record.alignments[2].hsps[0].identities, (93, 253))
04698         self.assertEqual(record.alignments[2].hsps[0].positives, (132, 253))
04699         self.assertEqual(record.alignments[2].hsps[0].gaps, (8, 253))
04700         self.assertEqual(record.alignments[2].hsps[1].identities, (33, 99))
04701         self.assertEqual(record.alignments[2].hsps[1].positives, (47, 99))
04702         self.assertEqual(record.alignments[2].hsps[1].gaps, (7, 99))
04703         self.assertEqual(record.alignments[3].hsps[0].identities, (76, 247))
04704         self.assertEqual(record.alignments[3].hsps[0].positives, (114, 247))
04705         self.assertEqual(record.alignments[3].hsps[0].gaps, (17, 247))
04706         self.assertEqual(record.alignments[4].hsps[0].identities, (46, 170))
04707         self.assertEqual(record.alignments[4].hsps[0].positives, (76, 170))
04708         self.assertEqual(record.alignments[4].hsps[0].gaps, (3, 170))
04709         self.assertEqual(record.alignments[5].hsps[0].identities, (25, 64))
04710         self.assertEqual(record.alignments[5].hsps[0].positives, (43, 64))
04711         self.assertEqual(record.alignments[5].hsps[1].identities, (19, 63))
04712         self.assertEqual(record.alignments[5].hsps[1].positives, (36, 63))
04713         self.assertEqual(record.alignments[6].hsps[0].identities, (24, 64))
04714         self.assertEqual(record.alignments[6].hsps[0].positives, (43, 64))
04715         self.assertEqual(record.alignments[6].hsps[1].identities, (21, 63))
04716         self.assertEqual(record.alignments[6].hsps[1].positives, (36, 63))
04717         self.assertEqual(record.alignments[7].hsps[0].identities, (24, 64))
04718         self.assertEqual(record.alignments[7].hsps[0].positives, (43, 64))
04719         self.assertEqual(record.alignments[7].hsps[1].identities, (20, 63))
04720         self.assertEqual(record.alignments[7].hsps[1].positives, (37, 63))
04721         self.assertEqual(record.alignments[8].hsps[0].identities, (19, 67))
04722         self.assertEqual(record.alignments[8].hsps[0].positives, (46, 67))
04723         self.assertEqual(record.alignments[9].hsps[0].identities, (23, 62))
04724         self.assertEqual(record.alignments[9].hsps[0].positives, (37, 62))
04725         self.assertEqual(record.alignments[9].hsps[0].gaps, (1, 62))
04726         self.assertEqual(record.alignments[10].hsps[0].identities, (41, 143))
04727         self.assertEqual(record.alignments[10].hsps[0].positives, (62, 143))
04728         self.assertEqual(record.alignments[10].hsps[0].gaps, (12, 143))
04729         self.assertEqual(record.alignments[11].hsps[0].identities, (32, 141))
04730         self.assertEqual(record.alignments[11].hsps[0].positives, (61, 141))
04731         self.assertEqual(record.alignments[11].hsps[0].gaps, (6, 141))
04732         self.assertEqual(record.alignments[12].hsps[0].identities, (21, 62))
04733         self.assertEqual(record.alignments[12].hsps[0].positives, (29, 62))
04734         self.assertEqual(record.alignments[0].hsps[0].query, "MAATKQGGGDDGRCARGVVLERTGARMGAERVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNNXXXXXXXXXXXXXXXXXXXXXXXAGEKLIAAYGAIEAGVAKLLSSFEKSLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILALP")
04735         self.assertEqual(record.alignments[0].hsps[0].match, "MAATKQGGGDDGRCARGVVLERTGARMGAERVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNN                       AGEKLIAAYGAIEAGVAKLLSSFEKSLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILALP")
04736         self.assertEqual(record.alignments[0].hsps[0].sbjct, "MAATKQGGGDDGRCARGVVLERTGARMGAERVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNNLLAAPVVTAAPGGKAGGGAVLTPAGEKLIAAYGAIEAGVAKLLSSFEKSLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILALP")
04737         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
04738         self.assertEqual(record.alignments[0].hsps[0].query_end, 270)
04739         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
04740         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 270)
04741         self.assertEqual(record.alignments[1].hsps[0].query, "LERTGA-RMGAERVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNNXXXXXXXXXXXXXXXXXXXXXXXAGEKLIAAYGAIEAGVAKLL-------SSFEKSLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILALP")
04742         self.assertEqual(record.alignments[1].hsps[0].match, "L+R GA R+G +R+ LL AI R G+I+ AAREVGLSYK AWD V  +NN                       AG+ LIA +G +E  + K L       S+ EK+LN      L  L++RTS RN   C V  V    V A+V + L +G  LTAVIT RSA EM LAPG EV AL+K++FV+LA  G P R+S  NR+ G V  R D P+++E+ LDLG  K+ITA IT  SA+ L L PGV  TAL K+SHVILA+P")
04743         self.assertEqual(record.alignments[1].hsps[0].sbjct, "LQRAGAPRVGGDRIRLLEAIARHGTIAGAAREVGLSYKTAWDAVGTLNNLFEQPLVEAAPGGRTGGNARVTEAGQALIAGFGLLEGALTKALGVLEGGVSAPEKALN-----TLWSLTMRTSNRNTLRCTVTRVTLGAVNAEVELALTDGHSLTAVITERSATEMGLAPGVEVFALIKASFVMLAAGGDPGRISACNRLTGIVAARTDGPVNTEIILDLGNCKSITAVITHTSADALGLAPGVPATALFKASHVILAMP")
04744         self.assertEqual(record.alignments[1].hsps[0].query_start, 20)
04745         self.assertEqual(record.alignments[1].hsps[0].query_end, 270)
04746         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 12)
04747         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 265)
04748         self.assertEqual(record.alignments[2].hsps[0].query, "GARMGAERVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNNXXXXXXXXXXXXXXXXXXXXXXXAGEKLIAAYGAIEAGVAKLLSSFEKSLNLDPA-------EVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILAL")
04749         self.assertEqual(record.alignments[2].hsps[0].match, "G  +   R+ LL AI R GSI+ AA+ V LSYKAAWD +  MNN                        G +++A Y A+E      L    + LN            ++  +S++TSARN +A  V  +    V  +VR+RL    ++ AVIT  SA  + LA G EV ALVKS+ V+L       +L+ RN++ G VI+  + P+++EVTL L  G+++T  +T DS + L L PGV   A  KSS VILA+")
04750         self.assertEqual(record.alignments[2].hsps[0].sbjct, "GTALSDTRIRLLEAIEREGSINRAAKVVPLSYKAAWDAIDTMNNLAPEPLVVRVAGGRQGGGTQLTDYGRRIVAMYRALEIEYQSALDRLSERLNEVTGGDIQAFQRLMHSMSMKTSARNQFAGIVTGLRVGGVDYEVRIRLDAENEIAAVITKASAENLELAIGKEVFALVKSSSVMLT-TEPSLKLTARNQLWGEVIDIHEGPVNNEVTLALPSGRSVTCVVTADSCKALGLAPGVAACAFFKSSSVILAV")
04751         self.assertEqual(record.alignments[2].hsps[0].query_start, 24)
04752         self.assertEqual(record.alignments[2].hsps[0].query_end, 269)
04753         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 17)
04754         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 268)
04755         self.assertEqual(record.alignments[2].hsps[1].query, "AIEAGVAKLLSSFEKSLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAG")
04756         self.assertEqual(record.alignments[2].hsps[1].match, "AI   V  L+ S    L  +P       SL+ +ARN    +V  +    V  +V + L  G+ +T V+TA S   + LAPG    A  KS+ V+LA  G")
04757         self.assertEqual(record.alignments[2].hsps[1].sbjct, "AIGKEVFALVKSSSVMLTTEP-------SLKLTARNQLWGEVIDIHEGPVNNEVTLALPSGRSVTCVVTADSCKALGLAPGVAACAFFKSSSVILAVYG")
04758         self.assertEqual(record.alignments[2].hsps[1].query_start, 101)
04759         self.assertEqual(record.alignments[2].hsps[1].query_end, 199)
04760         self.assertEqual(record.alignments[2].hsps[1].sbjct_start, 179)
04761         self.assertEqual(record.alignments[2].hsps[1].sbjct_end, 270)
04762         self.assertEqual(record.alignments[3].hsps[0].query, "RVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNNXXXXXXXXXXXXXXXXXXXXXXXAGEKLIAAY---GAIEAGVAKLLSSFEK-SLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQD-LTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVR----NRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILA")
04763         self.assertEqual(record.alignments[3].hsps[0].match, "R++LL  I  +GSIS  A++ G+SYK+AWD +  MN                         G++LI  Y     I+     +LS  +   LN   A + R  SL+TSARN W   + +   DDV   V + L +G+  L   ITA+S A + L  G EVL L+K+ +V     G+ +  +V     N++ G +          EV + L  G+T+ AT+  +  E   L  G   TA   +  VI+A")
04764         self.assertEqual(record.alignments[3].hsps[0].sbjct, "RISLLKHIALSGSISQGAKDAGISYKSAWDAINEMNQLSEHILVERATGGKGGGGAVLTRYGQRLIQLYDLLAQIQQKAFDVLSDDDALPLNSLLAAISR-FSLQTSARNQWFGTITARDHDDVQQHVDVLLADGKTRLKVAITAQSGARLGLDEGKEVLILLKAPWV-----GITQDEAVAQNADNQLPGIISHIERGAEQCEVLMALPDGQTLCATVPVN--EATSLQQGQNVTAYFNADSVIIA")
04765         self.assertEqual(record.alignments[3].hsps[0].query_start, 31)
04766         self.assertEqual(record.alignments[3].hsps[0].query_end, 268)
04767         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 21)
04768         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 259)
04769         self.assertEqual(record.alignments[4].hsps[0].query, "ERVALLAAIGRTGSISAAAREVGLSYKAAWDGVQAMNNXXXXXXXXXXXXXXXXXXXXXXXAGEKLIAAYGAIEAGVAKLLSSF-EKSLNLDP-AEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRL-GEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLA")
04770         self.assertEqual(record.alignments[4].hsps[0].match, "+RV LL  I + GSI+ AA+   +SYK+AWD ++AMN                          E+L+  Y  +E           ++S+ LD         SL++SARN +  +V      D    V + + G    L   IT +S+A ++L    EV+ + K+ +V ++")
04771         self.assertEqual(record.alignments[4].hsps[0].sbjct, "KRVRLLKEIQQCGSINQAAKNAKVSYKSAWDHLEAMNKISPRPLLERNTGGKNGGGTALTTYAERLLQLYDLLERTQEHAFHILQDESVPLDSLLTATARFSLQSSARNQFFGRVAQQRIIDSRCVVDVNVQGLPTPLQVSITTKSSARLKLITEKEVMLMFKAPWVKIS")
04772         self.assertEqual(record.alignments[4].hsps[0].query_start, 30)
04773         self.assertEqual(record.alignments[4].hsps[0].query_end, 196)
04774         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 21)
04775         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 190)
04776         self.assertEqual(record.alignments[5].hsps[0].query, "LSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVIL")
04777         self.assertEqual(record.alignments[5].hsps[0].match, "+S RN+++G+V+      +++EV L++ GG  IT+ I+ DS E L +  G E TA+IKS+ V++")
04778         self.assertEqual(record.alignments[5].hsps[0].sbjct, "ISARNQLKGKVVGLKKGVITAEVVLEIAGGNKITSIISLDSVEELGVKEGAELTAVIKSTDVMI")
04779         self.assertEqual(record.alignments[5].hsps[0].query_start, 204)
04780         self.assertEqual(record.alignments[5].hsps[0].query_end, 267)
04781         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 3)
04782         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 66)
04783         self.assertEqual(record.alignments[5].hsps[1].query, "SARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLL")
04784         self.assertEqual(record.alignments[5].hsps[1].match, "SARN    KV  +    + A+V + +  G  +T++I+  S  E+ +  G+E+ A++KS  V++")
04785         self.assertEqual(record.alignments[5].hsps[1].sbjct, "SARNQLKGKVVGLKKGVITAEVVLEIAGGNKITSIISLDSVEELGVKEGAELTAVIKSTDVMI")
04786         self.assertEqual(record.alignments[5].hsps[1].query_start, 133)
04787         self.assertEqual(record.alignments[5].hsps[1].query_end, 195)
04788         self.assertEqual(record.alignments[5].hsps[1].sbjct_start, 4)
04789         self.assertEqual(record.alignments[5].hsps[1].sbjct_end, 66)
04790         self.assertEqual(record.alignments[6].hsps[0].query, "LSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVIL")
04791         self.assertEqual(record.alignments[6].hsps[0].match, "+S RN+++G+V+      +++EV L++ GG  IT+ I+ DS E L +  G E TA++KS+ V++")
04792         self.assertEqual(record.alignments[6].hsps[0].sbjct, "ISARNQLKGKVVGLKKGVVTAEVVLEIAGGNKITSIISLDSVEELGVKEGAELTAVVKSTDVMI")
04793         self.assertEqual(record.alignments[6].hsps[0].query_start, 204)
04794         self.assertEqual(record.alignments[6].hsps[0].query_end, 267)
04795         self.assertEqual(record.alignments[6].hsps[0].sbjct_start, 3)
04796         self.assertEqual(record.alignments[6].hsps[0].sbjct_end, 66)
04797         self.assertEqual(record.alignments[6].hsps[1].query, "SARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLL")
04798         self.assertEqual(record.alignments[6].hsps[1].match, "SARN    KV  +    V A+V + +  G  +T++I+  S  E+ +  G+E+ A+VKS  V++")
04799         self.assertEqual(record.alignments[6].hsps[1].sbjct, "SARNQLKGKVVGLKKGVVTAEVVLEIAGGNKITSIISLDSVEELGVKEGAELTAVVKSTDVMI")
04800         self.assertEqual(record.alignments[6].hsps[1].query_start, 133)
04801         self.assertEqual(record.alignments[6].hsps[1].query_end, 195)
04802         self.assertEqual(record.alignments[6].hsps[1].sbjct_start, 4)
04803         self.assertEqual(record.alignments[6].hsps[1].sbjct_end, 66)
04804         self.assertEqual(record.alignments[7].hsps[0].query, "LSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVIL")
04805         self.assertEqual(record.alignments[7].hsps[0].match, "+S RN+++G+V+      +++EV L++ GG  +T+ I+ DS E L +  G E TA+IKS+ V++")
04806         self.assertEqual(record.alignments[7].hsps[0].sbjct, "ISARNQLKGKVVAVKKGLVTAEVVLEIAGGDKVTSIISLDSIEDLGVKEGTELTAVIKSTDVMI")
04807         self.assertEqual(record.alignments[7].hsps[0].query_start, 204)
04808         self.assertEqual(record.alignments[7].hsps[0].query_end, 267)
04809         self.assertEqual(record.alignments[7].hsps[0].sbjct_start, 3)
04810         self.assertEqual(record.alignments[7].hsps[0].sbjct_end, 66)
04811         self.assertEqual(record.alignments[7].hsps[1].query, "SARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLL")
04812         self.assertEqual(record.alignments[7].hsps[1].match, "SARN    KV +V    V A+V + +  G  +T++I+  S  ++ +  G+E+ A++KS  V++")
04813         self.assertEqual(record.alignments[7].hsps[1].sbjct, "SARNQLKGKVVAVKKGLVTAEVVLEIAGGDKVTSIISLDSIEDLGVKEGTELTAVIKSTDVMI")
04814         self.assertEqual(record.alignments[7].hsps[1].query_start, 133)
04815         self.assertEqual(record.alignments[7].hsps[1].query_end, 195)
04816         self.assertEqual(record.alignments[7].hsps[1].sbjct_start, 4)
04817         self.assertEqual(record.alignments[7].hsps[1].sbjct_end, 66)
04818         self.assertEqual(record.alignments[8].hsps[0].query, "RLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKSSHVILAL")
04819         self.assertEqual(record.alignments[8].hsps[0].match, "++S RN+++G+V+   +  +++ V +D+GGG  +++T++  + + L+L  G E  A+IK++ V++ +")
04820         self.assertEqual(record.alignments[8].hsps[0].sbjct, "KISARNQLKGKVVSIENGSVNAIVHIDIGGGNVLSSTVSLAAVKELNLEVGKEAYAIIKATSVMVGV")
04821         self.assertEqual(record.alignments[8].hsps[0].query_start, 203)
04822         self.assertEqual(record.alignments[8].hsps[0].query_end, 269)
04823         self.assertEqual(record.alignments[8].hsps[0].sbjct_start, 2)
04824         self.assertEqual(record.alignments[8].hsps[0].sbjct_end, 68)
04825         self.assertEqual(record.alignments[9].hsps[0].query, "PERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTITATITRDSAEMLDLHPGVETTALIKS")
04826         self.assertEqual(record.alignments[9].hsps[0].match, "P++ S+RN +R +V+   D     EV L++ GGKT+ A I+  + + L + PG+   A IKS")
04827         self.assertEqual(record.alignments[9].hsps[0].sbjct, "PQQTSIRNVLRAKVVNSYDDNGQVEVELEV-GGKTLWARISPWARDELAIKPGLWLYAQIKS")
04828         self.assertEqual(record.alignments[9].hsps[0].query_start, 201)
04829         self.assertEqual(record.alignments[9].hsps[0].query_end, 262)
04830         self.assertEqual(record.alignments[9].hsps[0].sbjct_start, 287)
04831         self.assertEqual(record.alignments[9].hsps[0].sbjct_end, 347)
04832         self.assertEqual(record.alignments[10].hsps[0].query, "EVLRGLSLRTSARNAWACKVWSVAA--DDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGG-GKTITATITRDSAEMLDLHPGVETTALIKS")
04833         self.assertEqual(record.alignments[10].hsps[0].match, "+++  L L T+        + SV A  DD     R+    G    AV+ AR       APG  +   V +  V LA + + E  S+ N +   V E ++A   + V + L   G  + A ITR S + L + PG    A IK+")
04834         self.assertEqual(record.alignments[10].hsps[0].sbjct, "DIMARLDLPTAFHEDAGVVIESVVAEHDDHYHLTRLAFPGG----AVLVARRPE----APGQRLRLRVHARDVSLANSRI-EDSSITNVLPATVREVVEADTPAHVLVRLEAEGTPLIARITRRSCDQLGIAPGRRMWAQIKA")
04835         self.assertEqual(record.alignments[10].hsps[0].query_start, 123)
04836         self.assertEqual(record.alignments[10].hsps[0].query_end, 262)
04837         self.assertEqual(record.alignments[10].hsps[0].sbjct_start, 242)
04838         self.assertEqual(record.alignments[10].hsps[0].sbjct_end, 375)
04839         self.assertEqual(record.alignments[11].hsps[0].query, "AAYGAIEAGVAKLLSSFEKSLNLDP-AEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQDLTAVITARSAAEMRLAPGSEVLALVKSNFVLLAGAGVPERLSVRNRVRGRVIERIDAPLSSEVTLDLGGGKTI")
04840         self.assertEqual(record.alignments[11].hsps[0].match, "AA G I+ GV  ++      + +DP AE ++    + +A  A   + W+   ++       + G   +L A I      +  L  G E + L ++ F+ +    +P      +  +  V+ER++       TLD+GG K +")
04841         self.assertEqual(record.alignments[11].hsps[0].sbjct, "AATGTIQNGVTVIVDGINGDVIIDPSAETVKEYEEKHNAYLAQKAE-WAKLVNEPTVS---KDGHHVELAANIGTPDDVKGVLENGGEAVGLYRTEFLYMGRDQLPTEDEQFDAYK-TVLERMEGKSVVVRTLDIGGDKEL")
04842         self.assertEqual(record.alignments[11].hsps[0].query_start, 97)
04843         self.assertEqual(record.alignments[11].hsps[0].query_end, 236)
04844         self.assertEqual(record.alignments[11].hsps[0].sbjct_start, 207)
04845         self.assertEqual(record.alignments[11].hsps[0].sbjct_end, 342)
04846         self.assertEqual(record.alignments[12].hsps[0].query, "AIEAGVAKLLSSFEKSLNLDPAEVLRGLSLRTSARNAWACKVWSVAADDVAAQVRMRLGEGQ")
04847         self.assertEqual(record.alignments[12].hsps[0].match, "A+E G     S+  +S   DPA V   +  R S  +      + VAAD   + VR +LG GQ")
04848         self.assertEqual(record.alignments[12].hsps[0].sbjct, "AVELGGEIRFSTELQSFEQDPAGVTAVIKSRRSGEHTTVRADYLVAADGPRSPVREQLGIGQ")
04849         self.assertEqual(record.alignments[12].hsps[0].query_start, 101)
04850         self.assertEqual(record.alignments[12].hsps[0].query_end, 162)
04851         self.assertEqual(record.alignments[12].hsps[0].sbjct_start, 136)
04852         self.assertEqual(record.alignments[12].hsps[0].sbjct_end, 197)
04853         self.assertEqual(record.database_name, ['data/swissprot'])
04854         self.assertEqual(record.num_letters_in_database, [29652561])
04855         self.assertEqual(record.num_sequences_in_database, [82258])
04856         self.assertEqual(record.posted_date, [('Nov 29, 1999  4:39 PM',)])
04857         self.assertEqual(len(record.ka_params), 3)
04858         self.assertAlmostEqual(record.ka_params[0], 0.316)
04859         self.assertAlmostEqual(record.ka_params[1], 0.131)
04860         self.assertAlmostEqual(record.ka_params[2], 0.361)
04861         self.assertEqual(len(record.ka_params_gap), 3)
04862         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
04863         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
04864         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
04865         self.assertEqual(record.matrix, 'BLOSUM62')
04866         self.assertEqual(record.gap_penalties, [11,1])
04867         self.assertEqual(record.num_hits, 12068104)
04868         self.assertEqual(record.num_sequences, 82258)
04869         self.assertEqual(record.num_extends, 396723)
04870         self.assertEqual(record.num_good_extends, 1066)
04871         self.assertEqual(record.num_seqs_better_e, 13)
04872         self.assertEqual(record.hsps_no_gap, 10)
04873         self.assertEqual(record.hsps_prelim_gapped, 3)
04874         self.assertEqual(record.hsps_gapped, 18)
04875         self.assertEqual(record.query_length, 270)
04876         self.assertEqual(record.database_length, 29652561)
04877         self.assertEqual(record.effective_hsp_length, 56)
04878         self.assertEqual(record.effective_query_length, 214)
04879         self.assertEqual(record.effective_database_length, 25046113)
04880         self.assertEqual(record.effective_search_space, 5359868182)
04881         self.assertEqual(record.effective_search_space_used, 5359868182)
04882         self.assertEqual(record.threshold, 11)
04883         self.assertEqual(record.window_size, 40)
04884         self.assertEqual(len(record.dropoff_1st_pass), 2)
04885         self.assertEqual(record.dropoff_1st_pass[0], 16)
04886         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
04887         self.assertEqual(len(record.gap_x_dropoff), 2)
04888         self.assertEqual(record.gap_x_dropoff[0], 38)
04889         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
04890         self.assertEqual(len(record.gap_x_dropoff_final), 2)
04891         self.assertEqual(record.gap_x_dropoff_final[0], 64)
04892         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
04893         self.assertEqual(len(record.gap_trigger), 2)
04894         self.assertEqual(record.gap_trigger[0], 41)
04895         self.assertAlmostEqual(record.gap_trigger[1], 21.6)
04896         self.assertEqual(len(record.blast_cutoff), 2)
04897         self.assertEqual(record.blast_cutoff[0], 64)
04898         self.assertAlmostEqual(record.blast_cutoff[1], 29.3)
04899 
04900     def test_bt040(self):
04901         "Test parsing BLASTP 2.0.10 output (bt040)"
04902 
04903         path = os.path.join('Blast', 'bt040.txt')
04904         handle = open(path)
04905         record = self.parser.parse(handle)
04906         handle.close()
04907         self.assertEqual(record.application, "BLASTP")
04908         self.assertEqual(record.version, '2.0.10')
04909         self.assertEqual(record.date, "Aug-26-1999")
04910         self.assertEqual(record.reference, TestNCBITextParser.reference)
04911         self.assertEqual(record.query, "gi|730725|sp|Q05362|SCHB_STRHA SCHB PROTEIN")
04912         self.assertEqual(record.query_letters, 138)
04913         self.assertEqual(record.database, "data/swissprot")
04914         self.assertEqual(record.database_sequences, 82258)
04915         self.assertEqual(record.database_letters, 29652561)
04916         self.assertEqual(len(record.descriptions), 0)
04917         self.assertEqual(len(record.alignments), 0)
04918         self.assertEqual(record.database_name, ['data/swissprot'])
04919         self.assertEqual(record.num_letters_in_database, [29652561])
04920         self.assertEqual(record.num_sequences_in_database, [82258])
04921         self.assertEqual(record.posted_date, [('Nov 29, 1999  4:39 PM',)])
04922         self.assertEqual(len(record.ka_params), 3)
04923         self.assertAlmostEqual(record.ka_params[0], 0.319)
04924         self.assertAlmostEqual(record.ka_params[1], 0.139)
04925         self.assertAlmostEqual(record.ka_params[2], 0.415)
04926         self.assertEqual(len(record.ka_params_gap), 3)
04927         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
04928         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
04929         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
04930         self.assertEqual(record.matrix, 'BLOSUM62')
04931         self.assertEqual(record.gap_penalties, [11,1])
04932         self.assertEqual(record.num_hits, 8952568)
04933         self.assertEqual(record.num_sequences, 82258)
04934         self.assertEqual(record.num_extends, 387403)
04935         self.assertEqual(record.num_good_extends, 727)
04936         self.assertEqual(record.num_seqs_better_e, 23)
04937         self.assertEqual(record.hsps_no_gap, 13)
04938         self.assertEqual(record.hsps_prelim_gapped, 10)
04939         self.assertEqual(record.hsps_gapped, 23)
04940         self.assertEqual(record.query_length, 138)
04941         self.assertEqual(record.database_length, 29652561)
04942         self.assertEqual(record.effective_hsp_length, 47)
04943         self.assertEqual(record.effective_query_length, 91)
04944         self.assertEqual(record.effective_database_length, 25786435)
04945         self.assertEqual(record.effective_search_space, 2346565585)
04946         self.assertEqual(record.effective_search_space_used, 2346565585)
04947         self.assertEqual(record.threshold, 11)
04948         self.assertEqual(record.window_size, 40)
04949         self.assertEqual(len(record.dropoff_1st_pass), 2)
04950         self.assertEqual(record.dropoff_1st_pass[0], 16)
04951         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.4)
04952         self.assertEqual(len(record.gap_x_dropoff), 2)
04953         self.assertEqual(record.gap_x_dropoff[0], 38)
04954         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
04955         self.assertEqual(len(record.gap_x_dropoff_final), 2)
04956         self.assertEqual(record.gap_x_dropoff_final[0], 64)
04957         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
04958         self.assertEqual(len(record.gap_trigger), 2)
04959         self.assertEqual(record.gap_trigger[0], 41)
04960         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
04961         self.assertEqual(len(record.blast_cutoff), 2)
04962         self.assertEqual(record.blast_cutoff[0], 61)
04963         self.assertAlmostEqual(record.blast_cutoff[1], 28.2)
04964 
04965     def test_bt041(self):
04966         "Test parsing BLASTP 2.0.11 output (bt041)"
04967 
04968         path = os.path.join('Blast', 'bt041.txt')
04969         handle = open(path)
04970         record = self.parser.parse(handle)
04971         handle.close()
04972         self.assertEqual(record.application, "BLASTP")
04973         self.assertEqual(record.version, '2.0.11')
04974         self.assertEqual(record.date, "Jan-20-2000")
04975         self.assertEqual(record.reference, TestNCBITextParser.reference)
04976         self.assertEqual(record.query, "gi|120291|sp|P21297|FLBT_CAUCR FLBT PROTEIN")
04977         self.assertEqual(record.query_letters, 141)
04978         self.assertEqual(record.database, "data/swissprot")
04979         self.assertEqual(record.database_sequences, 82258)
04980         self.assertEqual(record.database_letters, 29652561)
04981         self.assertEqual(len(record.descriptions), 2)
04982         self.assertEqual(record.descriptions[0].title, "gi|120291|sp|P21297|FLBT_CAUCR FLBT PROTEIN")
04983         self.assertEqual(record.descriptions[0].score, 256)
04984         self.assertAlmostEqual(record.descriptions[0].e, 2e-68)
04985         self.assertEqual(record.descriptions[1].title, "gi|3024946|sp|Q58368|Y958_METJA HYPOTHETICAL PROTEIN MJ0958 PRE...")
04986         self.assertEqual(record.descriptions[1].score, 29)
04987         self.assertAlmostEqual(record.descriptions[1].e, 3.4)
04988         self.assertEqual(len(record.alignments), 2)
04989         self.assertEqual(record.alignments[0].title, ">gi|120291|sp|P21297|FLBT_CAUCR FLBT PROTEIN")
04990         self.assertEqual(record.alignments[0].length, 141)
04991         self.assertEqual(record.alignments[1].title, ">gi|3024946|sp|Q58368|Y958_METJA HYPOTHETICAL PROTEIN MJ0958 PRECURSOR")
04992         self.assertEqual(record.alignments[1].length, 426)
04993         self.assertEqual(record.alignments[0].hsps[0].score, 646)
04994         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 256)
04995         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 2e-68)
04996         self.assertEqual(len(record.alignments[0].hsps), 1)
04997         self.assertEqual(record.alignments[1].hsps[0].score, 64)
04998         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 29.3)
04999         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 3.4)
05000         self.assertEqual(len(record.alignments[1].hsps), 1)
05001         self.assertEqual(record.alignments[0].hsps[0].identities, (127, 127))
05002         self.assertEqual(record.alignments[0].hsps[0].positives, (127, 127))
05003         self.assertEqual(record.alignments[1].hsps[0].identities, (15, 47))
05004         self.assertEqual(record.alignments[1].hsps[0].positives, (23, 47))
05005         self.assertEqual(record.alignments[0].hsps[0].query, "MPLKLSLKPGEKFVLNGAVVQNGDRRGVLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERL")
05006         self.assertEqual(record.alignments[0].hsps[0].match, "MPLKLSLKPGEKFVLNGAVVQNGDRRGVLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERL")
05007         self.assertEqual(record.alignments[0].hsps[0].sbjct, "MPLKLSLKPGEKFVLNGAVVQNGDRRGVLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFYEEFATRLNEFMGVVRNPVVLQDCIAISKHVMAREYYKALMLSRKLIEYEDERL")
05008         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
05009         self.assertEqual(record.alignments[0].hsps[0].query_end, 127)
05010         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
05011         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 127)
05012         self.assertEqual(record.alignments[1].hsps[0].query, "VLVLQNKASVLREKDIMQPDQVTTPARHIYFPVMMMYLDEVGAEKFY")
05013         self.assertEqual(record.alignments[1].hsps[0].match, "+LVL N  ++   K     D  TT   +IY P+ +    +  A+KFY")
05014         self.assertEqual(record.alignments[1].hsps[0].sbjct, "ILVLINNTNITELKKFEDDDYYTTFQHYIYQPIFIFTTYDSKAKKFY")
05015         self.assertEqual(record.alignments[1].hsps[0].query_start, 28)
05016         self.assertEqual(record.alignments[1].hsps[0].query_end, 74)
05017         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 169)
05018         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 215)
05019         self.assertEqual(record.database_name, ['data/swissprot'])
05020         self.assertEqual(record.num_letters_in_database, [29652561])
05021         self.assertEqual(record.num_sequences_in_database, [82258])
05022         self.assertEqual(record.posted_date, [('Feb 2, 2000  9:39 AM',)])
05023         self.assertEqual(len(record.ka_params), 3)
05024         self.assertAlmostEqual(record.ka_params[0], 0.323)
05025         self.assertAlmostEqual(record.ka_params[1], 0.139)
05026         self.assertAlmostEqual(record.ka_params[2], 0.392)
05027         self.assertEqual(len(record.ka_params_gap), 3)
05028         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
05029         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
05030         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
05031         self.assertEqual(record.matrix, 'BLOSUM62')
05032         self.assertEqual(record.gap_penalties, [11,1])
05033         self.assertEqual(record.num_hits, 6932673)
05034         self.assertEqual(record.num_sequences, 82258)
05035         self.assertEqual(record.num_extends, 246623)
05036         self.assertEqual(record.num_good_extends, 486)
05037         self.assertEqual(record.num_seqs_better_e, 2)
05038         self.assertEqual(record.hsps_no_gap, 2)
05039         self.assertEqual(record.hsps_prelim_gapped, 0)
05040         self.assertEqual(record.hsps_gapped, 2)
05041         self.assertEqual(record.query_length, 141)
05042         self.assertEqual(record.database_length, 29652561)
05043         self.assertEqual(record.effective_hsp_length, 50)
05044         self.assertEqual(record.effective_query_length, 91)
05045         self.assertEqual(record.effective_database_length, 25539661)
05046         self.assertEqual(record.effective_search_space, 2324109151)
05047         self.assertEqual(record.effective_search_space_used, 2324109151)
05048         self.assertEqual(record.threshold, 11)
05049         self.assertEqual(record.window_size, 40)
05050         self.assertEqual(len(record.dropoff_1st_pass), 2)
05051         self.assertEqual(record.dropoff_1st_pass[0], 16)
05052         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.5)
05053         self.assertEqual(len(record.gap_x_dropoff), 2)
05054         self.assertEqual(record.gap_x_dropoff[0], 38)
05055         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
05056         self.assertEqual(len(record.gap_x_dropoff_final), 2)
05057         self.assertEqual(record.gap_x_dropoff_final[0], 64)
05058         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
05059         self.assertEqual(len(record.gap_trigger), 2)
05060         self.assertEqual(record.gap_trigger[0], 41)
05061         self.assertAlmostEqual(record.gap_trigger[1], 21.9)
05062         self.assertEqual(len(record.blast_cutoff), 2)
05063         self.assertEqual(record.blast_cutoff[0], 61)
05064         self.assertAlmostEqual(record.blast_cutoff[1], 28.2)
05065 
05066     def test_bt042(self):
05067         "Test parsing BLASTP 2.0.11 output without hits (bt042)"
05068 
05069         path = os.path.join('Blast', 'bt042.txt')
05070         handle = open(path)
05071         record = self.parser.parse(handle)
05072         handle.close()
05073         self.assertEqual(record.application, "BLASTP")
05074         self.assertEqual(record.version, '2.0.11')
05075         self.assertEqual(record.date, "Jan-20-2000")
05076         self.assertEqual(record.reference, TestNCBITextParser.reference)
05077         self.assertEqual(record.query, "gi|400206|sp|Q02112|LYTA_BACSU MEMBRANE-BOUND PROTEIN LYTA\nPRECURSOR")
05078         self.assertEqual(record.query_letters, 102)
05079         self.assertEqual(record.database, "data/pdbaa")
05080         self.assertEqual(record.database_sequences, 6999)
05081         self.assertEqual(record.database_letters, 1461753)
05082         self.assertEqual(len(record.descriptions), 0)
05083         self.assertEqual(len(record.alignments), 0)
05084         self.assertEqual(record.database_name, ['data/pdbaa'])
05085         self.assertEqual(record.num_letters_in_database, [1461753])
05086         self.assertEqual(record.num_sequences_in_database, [6999])
05087         self.assertEqual(record.posted_date, [('Feb 11, 2000  2:32 PM',)])
05088         self.assertEqual(len(record.ka_params), 3)
05089         self.assertAlmostEqual(record.ka_params[0], 0.302)
05090         self.assertAlmostEqual(record.ka_params[1], 0.126)
05091         self.assertAlmostEqual(record.ka_params[2], 0.332)
05092         self.assertEqual(len(record.ka_params_gap), 3)
05093         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
05094         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
05095         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
05096         self.assertEqual(record.matrix, 'BLOSUM62')
05097         self.assertEqual(record.gap_penalties, [11,1])
05098         self.assertEqual(record.num_hits, 270485)
05099         self.assertEqual(record.num_sequences, 6999)
05100         self.assertEqual(record.num_extends, 9861)
05101         self.assertEqual(record.num_good_extends, 7)
05102         self.assertEqual(record.num_seqs_better_e, 0)
05103         self.assertEqual(record.hsps_no_gap, 0)
05104         self.assertEqual(record.hsps_prelim_gapped, 0)
05105         self.assertEqual(record.hsps_gapped, 0)
05106         self.assertEqual(record.query_length, 102)
05107         self.assertEqual(record.database_length, 1461753)
05108         self.assertEqual(record.effective_hsp_length, 47)
05109         self.assertEqual(record.effective_query_length, 55)
05110         self.assertEqual(record.effective_database_length, 1132800)
05111         self.assertEqual(record.effective_search_space, 62304000)
05112         self.assertEqual(record.effective_search_space_used, 62304000)
05113         self.assertEqual(record.threshold, 11)
05114         self.assertEqual(record.window_size, 40)
05115         self.assertEqual(len(record.dropoff_1st_pass), 2)
05116         self.assertEqual(record.dropoff_1st_pass[0], 17)
05117         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.4)
05118         self.assertEqual(len(record.gap_x_dropoff), 2)
05119         self.assertEqual(record.gap_x_dropoff[0], 38)
05120         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
05121         self.assertEqual(len(record.gap_x_dropoff_final), 2)
05122         self.assertEqual(record.gap_x_dropoff_final[0], 64)
05123         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
05124         self.assertEqual(len(record.gap_trigger), 2)
05125         self.assertEqual(record.gap_trigger[0], 43)
05126         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
05127         self.assertEqual(len(record.blast_cutoff), 2)
05128         self.assertEqual(record.blast_cutoff[0], 47)
05129         self.assertAlmostEqual(record.blast_cutoff[1], 22.7)
05130 
05131     def test_bt043(self):
05132         "Test parsing BLASTP 2.0.11 output without descriptions (bt043)"
05133 
05134         path = os.path.join('Blast', 'bt043.txt')
05135         handle = open(path)
05136         record = self.parser.parse(handle)
05137         handle.close()
05138         self.assertEqual(record.application, "BLASTP")
05139         self.assertEqual(record.version, '2.0.11')
05140         self.assertEqual(record.date, "Jan-20-2000")
05141         self.assertEqual(record.reference, TestNCBITextParser.reference)
05142         self.assertEqual(record.query, "gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
05143         self.assertEqual(record.query_letters, 166)
05144         self.assertEqual(record.database, "data/swissprot")
05145         self.assertEqual(record.database_sequences, 82258)
05146         self.assertEqual(record.database_letters, 29652561)
05147         self.assertEqual(len(record.descriptions), 0)
05148         self.assertEqual(len(record.alignments), 6)
05149         self.assertEqual(record.alignments[0].title, ">gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
05150         self.assertEqual(record.alignments[0].length, 166)
05151         self.assertEqual(record.alignments[1].title, ">gi|140528|sp|P24811|YQXH_BACSU HYPOTHETICAL 15.7 KD PROTEIN IN SPOIIIC-CWLA INTERGENIC REGION (ORF2)")
05152         self.assertEqual(record.alignments[1].length, 140)
05153         self.assertEqual(record.alignments[2].title, ">gi|141088|sp|P26835|YNGD_CLOPE HYPOTHETICAL 14.9 KD PROTEIN IN NAGH 3'REGION (ORFD)")
05154         self.assertEqual(record.alignments[2].length, 132)
05155         self.assertEqual(record.alignments[3].title, ">gi|6014830|sp|O78935|CYB_MARAM CYTOCHROME B")
05156         self.assertEqual(record.alignments[3].length, 379)
05157         self.assertEqual(record.alignments[4].title, ">gi|1351589|sp|P47694|Y456_MYCGE HYPOTHETICAL PROTEIN MG456")
05158         self.assertEqual(record.alignments[4].length, 334)
05159         self.assertEqual(record.alignments[5].title, ">gi|2496246|sp|Q57881|Y439_METJA HYPOTHETICAL ATP-BINDING PROTEIN MJ0439")
05160         self.assertEqual(record.alignments[5].length, 361)
05161         self.assertEqual(record.alignments[0].hsps[0].score, 843)
05162         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 332)
05163         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 2e-91)
05164         self.assertEqual(len(record.alignments[0].hsps), 1)
05165         self.assertEqual(record.alignments[1].hsps[0].score, 90)
05166         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 39.5)
05167         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 0.004)
05168         self.assertEqual(len(record.alignments[1].hsps), 1)
05169         self.assertEqual(record.alignments[2].hsps[0].score, 88)
05170         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 38.7)
05171         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 0.007)
05172         self.assertEqual(len(record.alignments[2].hsps), 1)
05173         self.assertEqual(record.alignments[3].hsps[0].score, 64)
05174         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 29.3)
05175         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 4.6)
05176         self.assertEqual(len(record.alignments[3].hsps), 1)
05177         self.assertEqual(record.alignments[4].hsps[0].score, 63)
05178         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 29.0)
05179         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 6.0)
05180         self.assertEqual(len(record.alignments[4].hsps), 1)
05181         self.assertEqual(record.alignments[5].hsps[0].score, 62)
05182         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 28.6)
05183         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 7.8)
05184         self.assertEqual(len(record.alignments[5].hsps), 1)
05185         self.assertEqual(record.alignments[0].hsps[0].identities, (166, 166))
05186         self.assertEqual(record.alignments[0].hsps[0].positives, (166, 166))
05187         self.assertEqual(record.alignments[1].hsps[0].identities, (27, 130))
05188         self.assertEqual(record.alignments[1].hsps[0].positives, (55, 130))
05189         self.assertEqual(record.alignments[1].hsps[0].gaps, (19, 130))
05190         self.assertEqual(record.alignments[2].hsps[0].identities, (24, 110))
05191         self.assertEqual(record.alignments[2].hsps[0].positives, (52, 110))
05192         self.assertEqual(record.alignments[2].hsps[0].gaps, (18, 110))
05193         self.assertEqual(record.alignments[3].hsps[0].identities, (19, 57))
05194         self.assertEqual(record.alignments[3].hsps[0].positives, (33, 57))
05195         self.assertEqual(record.alignments[3].hsps[0].gaps, (2, 57))
05196         self.assertEqual(record.alignments[4].hsps[0].identities, (16, 44))
05197         self.assertEqual(record.alignments[4].hsps[0].positives, (24, 44))
05198         self.assertEqual(record.alignments[4].hsps[0].gaps, (2, 44))
05199         self.assertEqual(record.alignments[5].hsps[0].identities, (19, 56))
05200         self.assertEqual(record.alignments[5].hsps[0].positives, (30, 56))
05201         self.assertEqual(record.alignments[5].hsps[0].gaps, (12, 56))
05202         self.assertEqual(record.alignments[0].hsps[0].query, "MHSSSPFYISNGNKIFFYINLGGVMNMTISFLSEHIFIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDEK")
05203         self.assertEqual(record.alignments[0].hsps[0].match, "MHSSSPFYISNGNKIFFYINLGGVMNMTISFLSEHIFIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDEK")
05204         self.assertEqual(record.alignments[0].hsps[0].sbjct, "MHSSSPFYISNGNKIFFYINLGGVMNMTISFLSEHIFIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDEK")
05205         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
05206         self.assertEqual(record.alignments[0].hsps[0].query_end, 166)
05207         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
05208         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 166)
05209         self.assertEqual(record.alignments[1].hsps[0].query, "FIKLVILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILF-ILYESVSILKNMCLCGLPVPKRLKEKIAILLDAMTDEMNAKDE")
05210         self.assertEqual(record.alignments[1].hsps[0].match, "++ L+++    D L G + A K +K  S     G +RK+     +   +V+D +   N                  G+  F ++LF I  E +SI +N+   G+ +P  + +++  + +      N  D+")
05211         self.assertEqual(record.alignments[1].hsps[0].sbjct, "YLDLLLVLSIIDVLTGVIKAWKFKKLRSRSAWFGYVRKLLNFFAVILANVIDTVLNLN------------------GVLTFGTVLFYIANEGLSITENLAQIGVKIPSSITDRLQTIENEKEQSKNNADK")
05212         self.assertEqual(record.alignments[1].hsps[0].query_start, 37)
05213         self.assertEqual(record.alignments[1].hsps[0].query_end, 165)
05214         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 26)
05215         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 137)
05216         self.assertEqual(record.alignments[2].hsps[0].query, "VILTISFDTLLGCLSAIKSRKFNSSFGIDGGIRKVAMIACIFFLSVVD-ILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCLCGLPVPKRLKEKI")
05217         self.assertEqual(record.alignments[2].hsps[0].match, "+++ I  D L G +   KS++  S+ G+ G  +K  ++  +    ++D +L    ++F                     +  +I+ E +SIL+N    G+P+P++LK+ +")
05218         self.assertEqual(record.alignments[2].hsps[0].sbjct, "LLVFIFLDYLTGVIKGCKSKELCSNIGLRGITKKGLILVVLLVAVMLDRLLDNGTWMFRT-----------------LIAYFYIMNEGISILENCAALGVPIPEKLKQAL")
05219         self.assertEqual(record.alignments[2].hsps[0].query_start, 41)
05220         self.assertEqual(record.alignments[2].hsps[0].query_end, 149)
05221         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 33)
05222         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 125)
05223         self.assertEqual(record.alignments[3].hsps[0].query, "CIFFLSVVDILTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKNMCL")
05224         self.assertEqual(record.alignments[3].hsps[0].match, "C+F+L V D+LT   ++   P +   F+ +  L    +F+IL IL  ++SI++N  L")
05225         self.assertEqual(record.alignments[3].hsps[0].sbjct, "CLFWLLVADLLT-LTWIGGQPVEH-PFITIGQLASILYFAILLILMPAISIIENNLL")
05226         self.assertEqual(record.alignments[3].hsps[0].query_start, 80)
05227         self.assertEqual(record.alignments[3].hsps[0].query_end, 136)
05228         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 323)
05229         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 377)
05230         self.assertEqual(record.alignments[4].hsps[0].query, "LTKFNFLFMLPQDCINFLRLKHLGISEFFSILFILYESVSILKN")
05231         self.assertEqual(record.alignments[4].hsps[0].match, "LTKFN  F+ P     FLR+  +G+   FS++ I +   S  +N")
05232         self.assertEqual(record.alignments[4].hsps[0].sbjct, "LTKFNKFFLTPNKLNAFLRV--IGLCGLFSVIAISFGIYSYTRN")
05233         self.assertEqual(record.alignments[4].hsps[0].query_start, 90)
05234         self.assertEqual(record.alignments[4].hsps[0].query_end, 133)
05235         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 4)
05236         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 45)
05237         self.assertEqual(record.alignments[5].hsps[0].query, "FLRLKHLGIS---EFFSILFILYES----VSILKNMC-----LCGLPVPKRLKEKI")
05238         self.assertEqual(record.alignments[5].hsps[0].match, "++ L+ + IS   +F  +LF  YE     V I+K++      LCG+P PK   E+I")
05239         self.assertEqual(record.alignments[5].hsps[0].sbjct, "YINLRGIFISKYKDFIEVLFEEYEEDRKPVEIIKSLIKDVPSLCGIPTPKNTLEEI")
05240         self.assertEqual(record.alignments[5].hsps[0].query_start, 106)
05241         self.assertEqual(record.alignments[5].hsps[0].query_end, 149)
05242         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 68)
05243         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 123)
05244         self.assertEqual(record.database_name, ['data/swissprot'])
05245         self.assertEqual(record.num_letters_in_database, [29652561])
05246         self.assertEqual(record.num_sequences_in_database, [82258])
05247         self.assertEqual(record.posted_date, [('Feb 2, 2000  9:39 AM',)])
05248         self.assertEqual(len(record.ka_params), 3)
05249         self.assertAlmostEqual(record.ka_params[0], 0.331)
05250         self.assertAlmostEqual(record.ka_params[1], 0.146)
05251         self.assertAlmostEqual(record.ka_params[2], 0.428)
05252         self.assertEqual(len(record.ka_params_gap), 3)
05253         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
05254         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
05255         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
05256         self.assertEqual(record.matrix, 'BLOSUM62')
05257         self.assertEqual(record.gap_penalties, [11,1])
05258         self.assertEqual(record.num_hits, 8801581)
05259         self.assertEqual(record.num_sequences, 82258)
05260         self.assertEqual(record.num_extends, 320828)
05261         self.assertEqual(record.num_good_extends, 892)
05262         self.assertEqual(record.num_seqs_better_e, 6)
05263         self.assertEqual(record.hsps_no_gap, 3)
05264         self.assertEqual(record.hsps_prelim_gapped, 3)
05265         self.assertEqual(record.hsps_gapped, 6)
05266         self.assertEqual(record.query_length, 166)
05267         self.assertEqual(record.database_length, 29652561)
05268         self.assertEqual(record.effective_hsp_length, 46)
05269         self.assertEqual(record.effective_query_length, 120)
05270         self.assertEqual(record.effective_database_length, 25868693)
05271         self.assertEqual(record.effective_search_space, 3104243160)
05272         self.assertEqual(record.effective_search_space_used, 3104243160)
05273         self.assertEqual(record.threshold, 11)
05274         self.assertEqual(record.window_size, 40)
05275         self.assertEqual(len(record.dropoff_1st_pass), 2)
05276         self.assertEqual(record.dropoff_1st_pass[0], 15)
05277         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.2)
05278         self.assertEqual(len(record.gap_x_dropoff), 2)
05279         self.assertEqual(record.gap_x_dropoff[0], 38)
05280         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
05281         self.assertEqual(len(record.gap_x_dropoff_final), 2)
05282         self.assertEqual(record.gap_x_dropoff_final[0], 64)
05283         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
05284         self.assertEqual(len(record.gap_trigger), 2)
05285         self.assertEqual(record.gap_trigger[0], 40)
05286         self.assertAlmostEqual(record.gap_trigger[1], 21.9)
05287         self.assertEqual(len(record.blast_cutoff), 2)
05288         self.assertEqual(record.blast_cutoff[0], 62)
05289         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
05290 
05291     def test_bt044(self):
05292         "Test parsing BLASTP 2.0.11 output without alignments (bt044)"
05293 
05294         path = os.path.join('Blast', 'bt044.txt')
05295         handle = open(path)
05296         record = self.parser.parse(handle)
05297         handle.close()
05298         self.assertEqual(record.application, "BLASTP")
05299         self.assertEqual(record.version, '2.0.11')
05300         self.assertEqual(record.date, "Jan-20-2000")
05301         self.assertEqual(record.reference, TestNCBITextParser.reference)
05302         self.assertEqual(record.query, "gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
05303         self.assertEqual(record.query_letters, 166)
05304         self.assertEqual(record.database, "data/swissprot")
05305         self.assertEqual(record.database_sequences, 82258)
05306         self.assertEqual(record.database_letters, 29652561)
05307         self.assertEqual(len(record.descriptions), 6)
05308         self.assertEqual(record.descriptions[0].title, "gi|1718062|sp|P16153|UTXA_CLODI UTXA PROTEIN")
05309         self.assertEqual(record.descriptions[0].score, 332)
05310         self.assertAlmostEqual(record.descriptions[0].e, 2e-91)
05311         self.assertEqual(record.descriptions[1].title, "gi|140528|sp|P24811|YQXH_BACSU HYPOTHETICAL 15.7 KD PROTEIN IN ...")
05312         self.assertEqual(record.descriptions[1].score, 39)
05313         self.assertAlmostEqual(record.descriptions[1].e, 0.004)
05314         self.assertEqual(record.descriptions[2].title, "gi|141088|sp|P26835|YNGD_CLOPE HYPOTHETICAL 14.9 KD PROTEIN IN ...")
05315         self.assertEqual(record.descriptions[2].score, 39)
05316         self.assertAlmostEqual(record.descriptions[2].e, 0.007)
05317         self.assertEqual(record.descriptions[3].title, "gi|6014830|sp|O78935|CYB_MARAM CYTOCHROME B")
05318         self.assertEqual(record.descriptions[3].score, 29)
05319         self.assertAlmostEqual(record.descriptions[3].e, 4.6)
05320         self.assertEqual(record.descriptions[4].title, "gi|1351589|sp|P47694|Y456_MYCGE HYPOTHETICAL PROTEIN MG456")
05321         self.assertEqual(record.descriptions[4].score, 29)
05322         self.assertAlmostEqual(record.descriptions[4].e, 6.0)
05323         self.assertEqual(record.descriptions[5].title, "gi|2496246|sp|Q57881|Y439_METJA HYPOTHETICAL ATP-BINDING PROTEI...")
05324         self.assertEqual(record.descriptions[5].score, 29)
05325         self.assertAlmostEqual(record.descriptions[5].e, 7.8)
05326         self.assertEqual(len(record.alignments), 0)
05327         self.assertEqual(record.database_name, ['data/swissprot'])
05328         self.assertEqual(record.num_letters_in_database, [29652561])
05329         self.assertEqual(record.num_sequences_in_database, [82258])
05330         self.assertEqual(record.posted_date, [('Feb 2, 2000  9:39 AM',)])
05331         self.assertEqual(len(record.ka_params), 3)
05332         self.assertAlmostEqual(record.ka_params[0], 0.331)
05333         self.assertAlmostEqual(record.ka_params[1], 0.146)
05334         self.assertAlmostEqual(record.ka_params[2], 0.428)
05335         self.assertEqual(len(record.ka_params_gap), 3)
05336         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
05337         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
05338         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
05339         self.assertEqual(record.matrix, 'BLOSUM62')
05340         self.assertEqual(record.gap_penalties, [11,1])
05341         self.assertEqual(record.num_hits, 8801581)
05342         self.assertEqual(record.num_sequences, 82258)
05343         self.assertEqual(record.num_extends, 320828)
05344         self.assertEqual(record.num_good_extends, 892)
05345         self.assertEqual(record.num_seqs_better_e, 6)
05346         self.assertEqual(record.hsps_no_gap, 3)
05347         self.assertEqual(record.hsps_prelim_gapped, 3)
05348         self.assertEqual(record.hsps_gapped, 6)
05349         self.assertEqual(record.query_length, 166)
05350         self.assertEqual(record.database_length, 29652561)
05351         self.assertEqual(record.effective_hsp_length, 46)
05352         self.assertEqual(record.effective_query_length, 120)
05353         self.assertEqual(record.effective_database_length, 25868693)
05354         self.assertEqual(record.effective_search_space, 3104243160)
05355         self.assertEqual(record.effective_search_space_used, 3104243160)
05356         self.assertEqual(record.threshold, 11)
05357         self.assertEqual(record.window_size, 40)
05358         self.assertEqual(len(record.dropoff_1st_pass), 2)
05359         self.assertEqual(record.dropoff_1st_pass[0], 15)
05360         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.2)
05361         self.assertEqual(len(record.gap_x_dropoff), 2)
05362         self.assertEqual(record.gap_x_dropoff[0], 38)
05363         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
05364         self.assertEqual(len(record.gap_x_dropoff_final), 2)
05365         self.assertEqual(record.gap_x_dropoff_final[0], 64)
05366         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
05367         self.assertEqual(len(record.gap_trigger), 2)
05368         self.assertEqual(record.gap_trigger[0], 40)
05369         self.assertAlmostEqual(record.gap_trigger[1], 21.9)
05370         self.assertEqual(len(record.blast_cutoff), 2)
05371         self.assertEqual(record.blast_cutoff[0], 62)
05372         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
05373 
05374     def test_bt045(self):
05375         "Test parsing BLASTP 2.0.11 output (bt045)"
05376 
05377         path = os.path.join('Blast', 'bt045.txt')
05378         handle = open(path)
05379         record = self.parser.parse(handle)
05380         handle.close()
05381         self.assertEqual(record.application, "BLASTP")
05382         self.assertEqual(record.version, '2.0.11')
05383         self.assertEqual(record.date, "Jan-20-2000")
05384         self.assertEqual(record.reference, TestNCBITextParser.reference)
05385         self.assertEqual(record.query, "gi|132349|sp|P15394|REPA_AGRTU REPLICATING PROTEIN")
05386         self.assertEqual(record.query_letters, 250)
05387         self.assertEqual(record.database, "data/swissprot")
05388         self.assertEqual(record.database_sequences, 82258)
05389         self.assertEqual(record.database_letters, 29652561)
05390         self.assertEqual(len(record.descriptions), 15)
05391         self.assertEqual(record.descriptions[0].title, "gi|132349|sp|P15394|REPA_AGRTU REPLICATING PROTEIN")
05392         self.assertEqual(record.descriptions[0].score, 514)
05393         self.assertAlmostEqual(record.descriptions[0].e, 1e-146)
05394         self.assertEqual(record.descriptions[1].title, "gi|123932|sp|P19922|HYIN_BRAJA INDOLEACETAMIDE HYDROLASE (IAH) ...")
05395         self.assertEqual(record.descriptions[1].score, 34)
05396         self.assertAlmostEqual(record.descriptions[1].e, 0.29)
05397         self.assertEqual(record.descriptions[2].title, "gi|137670|sp|P06422|VE2_HPV08 REGULATORY PROTEIN E2")
05398         self.assertEqual(record.descriptions[2].score, 32)
05399         self.assertAlmostEqual(record.descriptions[2].e, 0.86)
05400         self.assertEqual(record.descriptions[3].title, "gi|5921693|sp|Q05152|CCAB_RABIT VOLTAGE-DEPENDENT N-TYPE CALCIU...")
05401         self.assertEqual(record.descriptions[3].score, 32)
05402         self.assertAlmostEqual(record.descriptions[3].e, 1.5)
05403         self.assertEqual(record.descriptions[4].title, "gi|121952|sp|P02256|H1_PARAN HISTONE H1, GONADAL")
05404         self.assertEqual(record.descriptions[4].score, 31)
05405         self.assertAlmostEqual(record.descriptions[4].e, 2.5)
05406         self.assertEqual(record.descriptions[5].title, "gi|3915729|sp|P51592|HYDP_DROME HYPERPLASTIC DISCS PROTEIN (HYD...")
05407         self.assertEqual(record.descriptions[5].score, 31)
05408         self.assertAlmostEqual(record.descriptions[5].e, 3.3)
05409         self.assertEqual(record.descriptions[6].title, "gi|124141|sp|P08392|ICP4_HSV11 TRANS-ACTING TRANSCRIPTIONAL PRO...")
05410         self.assertEqual(record.descriptions[6].score, 31)
05411         self.assertAlmostEqual(record.descriptions[6].e, 3.3)
05412         self.assertEqual(record.descriptions[7].title, "gi|462182|sp|P33438|GLT_DROME GLUTACTIN PRECURSOR")
05413         self.assertEqual(record.descriptions[7].score, 31)
05414         self.assertAlmostEqual(record.descriptions[7].e, 3.3)
05415         self.assertEqual(record.descriptions[8].title, "gi|1708851|sp|P55268|LMB2_HUMAN LAMININ BETA-2 CHAIN PRECURSOR ...")
05416         self.assertEqual(record.descriptions[8].score, 30)
05417         self.assertAlmostEqual(record.descriptions[8].e, 4.3)
05418         self.assertEqual(record.descriptions[9].title, "gi|731294|sp|P39713|YAG1_YEAST HYPOTHETICAL ZINC-TYPE ALCOHOL D...")
05419         self.assertEqual(record.descriptions[9].score, 30)
05420         self.assertAlmostEqual(record.descriptions[9].e, 4.3)
05421         self.assertEqual(record.descriptions[10].title, "gi|2495137|sp|Q24704|H1_DROVI HISTONE H1")
05422         self.assertEqual(record.descriptions[10].score, 29)
05423         self.assertAlmostEqual(record.descriptions[10].e, 7.5)
05424         self.assertEqual(record.descriptions[11].title, "gi|6226905|sp|Q59567|TOP1_MYCTU DNA TOPOISOMERASE I (OMEGA-PROT...")
05425         self.assertEqual(record.descriptions[11].score, 29)
05426         self.assertAlmostEqual(record.descriptions[11].e, 9.8)
05427         self.assertEqual(record.descriptions[12].title, "gi|6093970|sp|Q61085|RHOP_MOUSE GTP-RHO BINDING PROTEIN 1 (RHOP...")
05428         self.assertEqual(record.descriptions[12].score, 29)
05429         self.assertAlmostEqual(record.descriptions[12].e, 9.8)
05430         self.assertEqual(record.descriptions[13].title, "gi|1172635|sp|P46466|PRS4_ORYSA 26S PROTEASE REGULATORY SUBUNIT...")
05431         self.assertEqual(record.descriptions[13].score, 29)
05432         self.assertAlmostEqual(record.descriptions[13].e, 9.8)
05433         self.assertEqual(record.descriptions[14].title, "gi|547963|sp|Q01989|MYS9_DROME MYOSIN HEAVY CHAIN 95F (95F MHC)")
05434         self.assertEqual(record.descriptions[14].score, 29)
05435         self.assertAlmostEqual(record.descriptions[14].e, 9.8)
05436         self.assertEqual(len(record.alignments), 0)
05437         self.assertEqual(record.database_name, ['data/swissprot'])
05438         self.assertEqual(record.posted_date, [('Feb 2, 2000  9:39 AM',)])
05439         self.assertEqual(record.num_letters_in_database, [29652561])
05440         self.assertEqual(record.num_sequences_in_database, [82258])
05441         self.assertEqual(len(record.ka_params), 3)
05442         self.assertAlmostEqual(record.ka_params[0], 0.317)
05443         self.assertAlmostEqual(record.ka_params[1], 0.133)
05444         self.assertAlmostEqual(record.ka_params[2], 0.395)
05445         self.assertEqual(len(record.ka_params_gap), 3)
05446         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
05447         self.assertAlmostEqual(record.ka_params_gap[1], 0.0470)
05448         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
05449         self.assertEqual(record.matrix, 'BLOSUM62')
05450         self.assertEqual(record.gap_penalties, [11,1])
05451         self.assertEqual(record.num_hits, 14679054)
05452         self.assertEqual(record.num_sequences, 82258)
05453         self.assertEqual(record.num_extends, 599117)
05454         self.assertEqual(record.num_good_extends, 1508)
05455         self.assertEqual(record.num_seqs_better_e, 15)
05456         self.assertEqual(record.hsps_no_gap, 4)
05457         self.assertEqual(record.hsps_prelim_gapped, 11)
05458         self.assertEqual(record.hsps_gapped, 15)
05459         self.assertEqual(record.query_length, 250)
05460         self.assertEqual(record.database_length, 29652561)
05461         self.assertEqual(record.effective_hsp_length, 51)
05462         self.assertEqual(record.effective_query_length, 199)
05463         self.assertEqual(record.effective_database_length, 25457403)
05464         self.assertEqual(record.effective_search_space, 5066023197)
05465         self.assertEqual(record.effective_search_space_used, 5066023197)
05466         self.assertEqual(record.threshold, 11)
05467         self.assertEqual(record.window_size, 40)
05468         self.assertEqual(len(record.dropoff_1st_pass), 2)
05469         self.assertEqual(record.dropoff_1st_pass[0], 16)
05470         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
05471         self.assertEqual(len(record.gap_x_dropoff), 2)
05472         self.assertEqual(record.gap_x_dropoff[0], 38)
05473         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
05474         self.assertEqual(len(record.gap_x_dropoff_final), 2)
05475         self.assertEqual(record.gap_x_dropoff_final[0], 64)
05476         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
05477         self.assertEqual(len(record.gap_trigger), 2)
05478         self.assertEqual(record.gap_trigger[0], 41)
05479         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
05480         self.assertEqual(len(record.blast_cutoff), 2)
05481         self.assertEqual(record.blast_cutoff[0], 63)
05482         self.assertAlmostEqual(record.blast_cutoff[1], 29.0)
05483 
05484     def test_bt046(self):
05485         "Test parsing PHI-BLAST, BLASTP 2.0.11 output, two rounds (bt046)"
05486 
05487         path = os.path.join('Blast', 'bt046.txt')
05488         handle = open(path)
05489         record = self.pb_parser.parse(handle)
05490         handle.close()
05491         self.assertEqual(record.application, "BLASTP")
05492         self.assertEqual(record.version, '2.0.11')
05493         self.assertEqual(record.date, "Jan-20-2000")
05494         self.assertEqual(record.reference, TestNCBITextParser.reference)
05495         self.assertEqual(record.query, "gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
05496         self.assertEqual(record.query_letters, 197)
05497         self.assertEqual(record.database, "data/swissprot")
05498         self.assertEqual(record.database_sequences, 82258)
05499         self.assertEqual(record.database_letters, 29652561)
05500         self.assertEqual(len(record.rounds), 2)
05501         self.assertEqual(len(record.rounds[0].new_seqs), 4)
05502         self.assertEqual(record.rounds[0].new_seqs[0].title, "gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
05503         self.assertEqual(record.rounds[0].new_seqs[0].score, 402)
05504         self.assertAlmostEqual(record.rounds[0].new_seqs[0].e, 1e-112)
05505         self.assertEqual(record.rounds[0].new_seqs[1].title, "gi|1352934|sp|P47169|YJ9F_YEAST HYPOTHETICAL 161.2 KD PROTEIN I...")
05506         self.assertEqual(record.rounds[0].new_seqs[1].score, 30)
05507         self.assertAlmostEqual(record.rounds[0].new_seqs[1].e, 3.3)
05508         self.assertEqual(record.rounds[0].new_seqs[2].title, "gi|3915741|sp|P04407|KITH_HSV23 THYMIDINE KINASE")
05509         self.assertEqual(record.rounds[0].new_seqs[2].score, 29)
05510         self.assertAlmostEqual(record.rounds[0].new_seqs[2].e, 7.4)
05511         self.assertEqual(record.rounds[0].new_seqs[3].title, "gi|3334489|sp|P15398|RPA1_SCHPO DNA-DIRECTED RNA POLYMERASE I 1...")
05512         self.assertEqual(record.rounds[0].new_seqs[3].score, 29)
05513         self.assertAlmostEqual(record.rounds[0].new_seqs[3].e, 7.4)
05514         self.assertEqual(len(record.rounds[0].alignments), 4)
05515         self.assertEqual(record.rounds[0].alignments[0].title, ">gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
05516         self.assertEqual(record.rounds[0].alignments[0].length, 197)
05517         self.assertEqual(record.rounds[0].alignments[1].title, ">gi|1352934|sp|P47169|YJ9F_YEAST HYPOTHETICAL 161.2 KD PROTEIN IN NMD5-HOM6 INTERGENIC REGION")
05518         self.assertEqual(record.rounds[0].alignments[1].length, 1442)
05519         self.assertEqual(record.rounds[0].alignments[2].title, ">gi|3915741|sp|P04407|KITH_HSV23 THYMIDINE KINASE")
05520         self.assertEqual(record.rounds[0].alignments[2].length, 376)
05521         self.assertEqual(record.rounds[0].alignments[3].title, ">gi|3334489|sp|P15398|RPA1_SCHPO DNA-DIRECTED RNA POLYMERASE I 190 KD POLYPEPTIDE")
05522         self.assertEqual(record.rounds[0].alignments[3].length, 1689)
05523         self.assertEqual(len(record.rounds[1].new_seqs), 3)
05524         self.assertEqual(record.rounds[1].new_seqs[0].title, "gi|1352934|sp|P47169|YJ9F_YEAST HYPOTHETICAL 161.2 KD PROTEIN I...")
05525         self.assertEqual(record.rounds[1].new_seqs[0].score, 30)
05526         self.assertAlmostEqual(record.rounds[1].new_seqs[0].e, 3.3)
05527         self.assertEqual(record.rounds[1].new_seqs[1].title, "gi|3334489|sp|P15398|RPA1_SCHPO DNA-DIRECTED RNA POLYMERASE I 1...")
05528         self.assertEqual(record.rounds[1].new_seqs[1].score, 30)
05529         self.assertAlmostEqual(record.rounds[1].new_seqs[1].e, 3.3)
05530         self.assertEqual(record.rounds[1].new_seqs[2].title, "gi|3915741|sp|P04407|KITH_HSV23 THYMIDINE KINASE")
05531         self.assertEqual(record.rounds[1].new_seqs[2].score, 29)
05532         self.assertAlmostEqual(record.rounds[1].new_seqs[2].e, 7.4)
05533         self.assertEqual(len(record.rounds[1].alignments), 4)
05534         self.assertEqual(record.rounds[1].alignments[0].title, ">gi|1174726|sp|P12921|TMRB_BACSU TUNICAMYCIN RESISTANCE PROTEIN")
05535         self.assertEqual(record.rounds[1].alignments[0].length, 197)
05536         self.assertEqual(record.rounds[1].alignments[1].title, ">gi|1352934|sp|P47169|YJ9F_YEAST HYPOTHETICAL 161.2 KD PROTEIN IN NMD5-HOM6 INTERGENIC REGION")
05537         self.assertEqual(record.rounds[1].alignments[1].length, 1442)
05538         self.assertEqual(record.rounds[1].alignments[2].title, ">gi|3334489|sp|P15398|RPA1_SCHPO DNA-DIRECTED RNA POLYMERASE I 190 KD POLYPEPTIDE")
05539         self.assertEqual(record.rounds[1].alignments[2].length, 1689)
05540         self.assertEqual(record.rounds[1].alignments[3].title, ">gi|3915741|sp|P04407|KITH_HSV23 THYMIDINE KINASE")
05541         self.assertEqual(record.rounds[1].alignments[3].length, 376)
05542         self.assertEqual(record.rounds[0].alignments[0].hsps[0].score, 1021)
05543         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].bits, 402)
05544         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].expect, 1e-112)
05545         self.assertEqual(len(record.rounds[0].alignments[0].hsps), 1)
05546         self.assertEqual(record.rounds[0].alignments[1].hsps[0].score, 66)
05547         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].bits, 30.1)
05548         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].expect, 3.3)
05549         self.assertEqual(len(record.rounds[0].alignments[1].hsps), 1)
05550         self.assertEqual(record.rounds[0].alignments[2].hsps[0].score, 63)
05551         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].bits, 29.0)
05552         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].expect, 7.4)
05553         self.assertEqual(len(record.rounds[0].alignments[2].hsps), 1)
05554         self.assertEqual(record.rounds[0].alignments[3].hsps[0].score, 63)
05555         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].bits, 29.0)
05556         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].expect, 7.4)
05557         self.assertEqual(record.rounds[1].alignments[0].hsps[0].score, 1031)
05558         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].bits, 406)
05559         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].expect, 1e-113)
05560         self.assertEqual(len(record.rounds[1].alignments[0].hsps), 1)
05561         self.assertEqual(record.rounds[1].alignments[1].hsps[0].score, 66)
05562         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].bits, 30.1)
05563         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].expect, 3.3)
05564         self.assertEqual(len(record.rounds[1].alignments[1].hsps), 1)
05565         self.assertEqual(record.rounds[1].alignments[2].hsps[0].score, 66)
05566         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].bits, 30.1)
05567         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].expect, 3.3)
05568         self.assertEqual(len(record.rounds[1].alignments[2].hsps), 1)
05569         self.assertEqual(record.rounds[1].alignments[3].hsps[0].score, 63)
05570         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].bits, 28.9)
05571         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].expect, 7.4)
05572         self.assertEqual(len(record.rounds[1].alignments[3].hsps), 1)
05573         self.assertEqual(record.rounds[0].alignments[0].hsps[0].identities, (197, 197))
05574         self.assertEqual(record.rounds[0].alignments[0].hsps[0].positives, (197, 197))
05575         self.assertEqual(record.rounds[0].alignments[1].hsps[0].identities, (23, 70))
05576         self.assertEqual(record.rounds[0].alignments[1].hsps[0].positives, (35, 70))
05577         self.assertEqual(record.rounds[0].alignments[1].hsps[0].gaps, (10, 70))
05578         self.assertEqual(record.rounds[0].alignments[2].hsps[0].identities, (15, 37))
05579         self.assertEqual(record.rounds[0].alignments[2].hsps[0].positives, (22, 37))
05580         self.assertEqual(record.rounds[0].alignments[2].hsps[0].gaps, (2, 37))
05581         self.assertEqual(record.rounds[0].alignments[3].hsps[0].identities, (12, 38))
05582         self.assertEqual(record.rounds[0].alignments[3].hsps[0].positives, (20, 38))
05583         self.assertEqual(record.rounds[1].alignments[0].hsps[0].identities, (197, 197))
05584         self.assertEqual(record.rounds[1].alignments[0].hsps[0].positives, (197, 197))
05585         self.assertEqual(record.rounds[1].alignments[1].hsps[0].identities, (23, 70))
05586         self.assertEqual(record.rounds[1].alignments[1].hsps[0].positives, (35, 70))
05587         self.assertEqual(record.rounds[1].alignments[1].hsps[0].gaps, (10, 70))
05588         self.assertEqual(record.rounds[1].alignments[2].hsps[0].identities, (12, 38))
05589         self.assertEqual(record.rounds[1].alignments[2].hsps[0].positives, (20, 38))
05590         self.assertEqual(record.rounds[1].alignments[3].hsps[0].identities, (15, 37))
05591         self.assertEqual(record.rounds[1].alignments[3].hsps[0].positives, (22, 37))
05592         self.assertEqual(record.rounds[1].alignments[3].hsps[0].gaps, (2, 37))
05593         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
05594         self.assertEqual(record.rounds[0].alignments[0].hsps[0].match, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
05595         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
05596         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_start, 1)
05597         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_end, 197)
05598         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_start, 1)
05599         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_end, 197)
05600         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query, "TLMASKETLLKR--------LRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARA")
05601         self.assertEqual(record.rounds[0].alignments[1].hsps[0].match, "TL+  K+  L R          TR + K S AA   D+ +EGLS P    +  +D  +  ++A+ +AARA")
05602         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct, "TLLTRKDPSLSRNLKQSAGDALTRKQEKRSKAA--FDQLLEGLSGPPLHVYYASDGGNAANLAKRLAARA")
05603         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_start, 107)
05604         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_end, 168)
05605         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_start, 637)
05606         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_end, 704)
05607         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query, "IWINGAFGSGKTQTAFELHRRLNP--SYVYDPEKMGF")
05608         self.assertEqual(record.rounds[0].alignments[2].hsps[0].match, "++I+G  G GKT T+ +L   L P  + VY PE M +")
05609         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct, "VYIDGPHGVGKTTTSAQLMEALGPRDNIVYVPEPMTY")
05610         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_start, 3)
05611         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_end, 37)
05612         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_start, 52)
05613         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_end, 88)
05614         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query, "GILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASK")
05615         self.assertEqual(record.rounds[0].alignments[3].hsps[0].match, "G +++P+   HP +F+++   LR      HHF L   K")
05616         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct, "GHIVLPIPAYHPLFFSQMYNLLRSTCLYCHHFKLSKVK")
05617         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_start, 75)
05618         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_end, 112)
05619         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_start, 78)
05620         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_end, 115)
05621         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
05622         self.assertEqual(record.rounds[1].alignments[0].hsps[0].match, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
05623         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct, "MIIWINGAFGSGKTQTAFELHRRLNPSYVYDPEKMGFALRSMVPQEIAKDDFQSYPLWRAFNYSLLASLTDTYRGILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASKETLLKRLRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARAELPLDPDTRGSLRRFADRLMVKLNHIRIK")
05624         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_start, 1)
05625         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_end, 197)
05626         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_start, 1)
05627         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_end, 197)
05628         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query, "TLMASKETLLKR--------LRTRAEGKNSWAAKQIDRCVEGLSSPIFEDHIQTDNLSIQDVAENIAARA")
05629         self.assertEqual(record.rounds[1].alignments[1].hsps[0].match, "TL+  K+  L R          TR + K S AA   D+ +EGLS P    +  +D  +  ++A+ +AARA")
05630         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct, "TLLTRKDPSLSRNLKQSAGDALTRKQEKRSKAA--FDQLLEGLSGPPLHVYYASDGGNAANLAKRLAARA")
05631         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_start, 107)
05632         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_end, 168)
05633         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_start, 637)
05634         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_end, 704)
05635         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query, "GILIVPMTIVHPEYFNEIIGRLRQEGRIVHHFTLMASK")
05636         self.assertEqual(record.rounds[1].alignments[2].hsps[0].match, "G +++P+   HP +F+++   LR      HHF L   K")
05637         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct, "GHIVLPIPAYHPLFFSQMYNLLRSTCLYCHHFKLSKVK")
05638         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_start, 75)
05639         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_end, 112)
05640         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_start, 78)
05641         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_end, 115)
05642         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query, "IWINGAFGSGKTQTAFELHRRLNP--SYVYDPEKMGF")
05643         self.assertEqual(record.rounds[1].alignments[3].hsps[0].match, "++I+G  G GKT T+ +L   L P  + VY PE M +")
05644         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct, "VYIDGPHGVGKTTTSAQLMEALGPRDNIVYVPEPMTY")
05645         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_start, 3)
05646         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_end, 37)
05647         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_start, 52)
05648         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_end, 88)
05649         self.assertEqual(record.database_name, ['data/swissprot'])
05650         self.assertEqual(record.num_letters_in_database, [29652561])
05651         self.assertEqual(record.num_sequences_in_database, [82258])
05652         self.assertEqual(record.posted_date, [('Feb 2, 2000  9:39 AM',)])
05653         self.assertEqual(len(record.ka_params), 3)
05654         self.assertAlmostEqual(record.ka_params[0], 0.318)
05655         self.assertAlmostEqual(record.ka_params[1], 0.134)
05656         self.assertAlmostEqual(record.ka_params[2], 0.412)
05657         self.assertEqual(len(record.ka_params_gap), 3)
05658         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
05659         self.assertAlmostEqual(record.ka_params_gap[1], 0.0471)
05660         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
05661         self.assertEqual(record.matrix, 'BLOSUM62')
05662         self.assertEqual(record.gap_penalties, [11,1])
05663         self.assertEqual(record.num_hits, 23669955)
05664         self.assertEqual(record.num_sequences, 82258)
05665         self.assertEqual(record.num_extends, 918938)
05666         self.assertEqual(record.num_good_extends, 2130)
05667         self.assertEqual(record.num_seqs_better_e, 8)
05668         self.assertEqual(record.hsps_no_gap, 4)
05669         self.assertEqual(record.hsps_prelim_gapped, 4)
05670         self.assertEqual(record.hsps_gapped, 8)
05671         self.assertEqual(record.query_length, 197)
05672         self.assertEqual(record.database_length, 29652561)
05673         self.assertEqual(record.effective_hsp_length, 48)
05674         self.assertEqual(record.effective_query_length, 149)
05675         self.assertEqual(record.effective_database_length, 25704177)
05676         self.assertEqual(record.effective_search_space, 3829922373)
05677         self.assertEqual(record.effective_search_space_used, 3829922373)
05678         self.assertEqual(record.threshold, 11)
05679         self.assertEqual(record.window_size, 40)
05680         self.assertEqual(len(record.dropoff_1st_pass), 2)
05681         self.assertEqual(record.dropoff_1st_pass[0], 16)
05682         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
05683         self.assertEqual(len(record.gap_x_dropoff), 2)
05684         self.assertEqual(record.gap_x_dropoff[0], 38)
05685         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
05686         self.assertEqual(len(record.gap_x_dropoff_final), 2)
05687         self.assertEqual(record.gap_x_dropoff_final[0], 64)
05688         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
05689         self.assertEqual(len(record.gap_trigger), 2)
05690         self.assertEqual(record.gap_trigger[0], 41)
05691         self.assertAlmostEqual(record.gap_trigger[1], 21.7)
05692         self.assertEqual(len(record.blast_cutoff), 2)
05693         self.assertEqual(record.blast_cutoff[0], 62)
05694         self.assertAlmostEqual(record.blast_cutoff[1], 28.6)
05695 
05696     def test_bt047(self):
05697         "Test parsing PHI-BLAST, BLASTP 2.0.11 output, two rounds (bt047)"
05698 
05699         path = os.path.join('Blast', 'bt047.txt')
05700         handle = open(path)
05701         record = self.pb_parser.parse(handle)
05702         handle.close()
05703         self.assertEqual(record.application, "BLASTP")
05704         self.assertEqual(record.version, '2.0.11')
05705         self.assertEqual(record.date, "Jan-20-2000")
05706         self.assertEqual(record.reference, TestNCBITextParser.reference)
05707         self.assertEqual(record.query, "gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE\nDEHYDRATASE (IGPD)")
05708         self.assertEqual(record.query_letters, 200)
05709         self.assertEqual(record.database, "data/swissprot")
05710         self.assertEqual(record.database_sequences, 82258)
05711         self.assertEqual(record.database_letters, 29652561)
05712         self.assertEqual(len(record.rounds), 2)
05713         self.assertEqual(len(record.rounds[0].new_seqs), 30)
05714         #Rest of test broken up to avoid Jython JVM limitations
05715         self._check_bt047_round0(record)
05716         self._check_bt047_round1(record)
05717         self._check_bt047_hsps(record)
05718         self._check_bt047_hsps_details(record)
05719         self._check_bt047_footer(record)
05720 
05721     def _check_bt047_round0(self, record):
05722         self.assertEqual(record.rounds[0].new_seqs[0].title, "gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05723         self.assertEqual(record.rounds[0].new_seqs[0].score, 409)
05724         self.assertAlmostEqual(record.rounds[0].new_seqs[0].e, 1e-114)
05725         self.assertEqual(record.rounds[0].new_seqs[1].title, "gi|462273|sp|P34047|HIS7_ARATH IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05726         self.assertEqual(record.rounds[0].new_seqs[1].score, 198)
05727         self.assertAlmostEqual(record.rounds[0].new_seqs[1].e, 6e-51)
05728         self.assertEqual(record.rounds[0].new_seqs[2].title, "gi|2495230|sp|Q43072|HIS7_PEA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYD...")
05729         self.assertEqual(record.rounds[0].new_seqs[2].score, 196)
05730         self.assertAlmostEqual(record.rounds[0].new_seqs[2].e, 4e-50)
05731         self.assertEqual(record.rounds[0].new_seqs[3].title, "gi|123157|sp|P18787|HIS7_AZOBR IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05732         self.assertEqual(record.rounds[0].new_seqs[3].score, 185)
05733         self.assertAlmostEqual(record.rounds[0].new_seqs[3].e, 5e-47)
05734         self.assertEqual(record.rounds[0].new_seqs[4].title, "gi|462275|sp|P34048|HIS7_WHEAT IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05735         self.assertEqual(record.rounds[0].new_seqs[4].score, 181)
05736         self.assertAlmostEqual(record.rounds[0].new_seqs[4].e, 8e-46)
05737         self.assertEqual(record.rounds[0].new_seqs[5].title, "gi|123161|sp|P16247|HIS7_STRCO IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05738         self.assertEqual(record.rounds[0].new_seqs[5].score, 178)
05739         self.assertAlmostEqual(record.rounds[0].new_seqs[5].e, 7e-45)
05740         self.assertEqual(record.rounds[0].new_seqs[6].title, "gi|462272|sp|Q05068|HIS7_ANASP IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05741         self.assertEqual(record.rounds[0].new_seqs[6].score, 178)
05742         self.assertAlmostEqual(record.rounds[0].new_seqs[6].e, 7e-45)
05743         self.assertEqual(record.rounds[0].new_seqs[7].title, "gi|123158|sp|P06987|HIS7_ECOLI HISTIDINE BIOSYNTHESIS BIFUNCTIO...")
05744         self.assertEqual(record.rounds[0].new_seqs[7].score, 175)
05745         self.assertAlmostEqual(record.rounds[0].new_seqs[7].e, 8e-44)
05746         self.assertEqual(record.rounds[0].new_seqs[8].title, "gi|1346293|sp|P48054|HIS7_SYNY3 IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
05747         self.assertEqual(record.rounds[0].new_seqs[8].score, 174)
05748         self.assertAlmostEqual(record.rounds[0].new_seqs[8].e, 1e-43)
05749         self.assertEqual(record.rounds[0].new_seqs[9].title, "gi|1170286|sp|P44327|HIS7_HAEIN HISTIDINE BIOSYNTHESIS BIFUNCTI...")
05750         self.assertEqual(record.rounds[0].new_seqs[9].score, 168)
05751         self.assertAlmostEqual(record.rounds[0].new_seqs[9].e, 8e-42)
05752         self.assertEqual(record.rounds[0].new_seqs[10].title, "gi|2495224|sp|O06590|HIS7_MYCTU IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
05753         self.assertEqual(record.rounds[0].new_seqs[10].score, 167)
05754         self.assertAlmostEqual(record.rounds[0].new_seqs[10].e, 2e-41)
05755         self.assertEqual(record.rounds[0].new_seqs[11].title, "gi|123160|sp|P10368|HIS7_SALTY HISTIDINE BIOSYNTHESIS BIFUNCTIO...")
05756         self.assertEqual(record.rounds[0].new_seqs[11].score, 166)
05757         self.assertAlmostEqual(record.rounds[0].new_seqs[11].e, 2e-41)
05758         self.assertEqual(record.rounds[0].new_seqs[12].title, "gi|2495226|sp|Q50504|HIS7_METTH PROBABLE IMIDAZOLEGLYCEROL-PHOS...")
05759         self.assertEqual(record.rounds[0].new_seqs[12].score, 153)
05760         self.assertAlmostEqual(record.rounds[0].new_seqs[12].e, 3e-37)
05761         self.assertEqual(record.rounds[0].new_seqs[13].title, "gi|729718|sp|P40919|HIS7_CRYNE IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05762         self.assertEqual(record.rounds[0].new_seqs[13].score, 152)
05763         self.assertAlmostEqual(record.rounds[0].new_seqs[13].e, 7e-37)
05764         self.assertEqual(record.rounds[0].new_seqs[14].title, "gi|3334215|sp|O33773|HIS7_SULSO PROBABLE IMIDAZOLEGLYCEROL-PHOS...")
05765         self.assertEqual(record.rounds[0].new_seqs[14].score, 151)
05766         self.assertAlmostEqual(record.rounds[0].new_seqs[14].e, 9e-37)
05767         self.assertEqual(record.rounds[0].new_seqs[15].title, "gi|123159|sp|P28624|HIS7_PHYPR IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05768         self.assertEqual(record.rounds[0].new_seqs[15].score, 149)
05769         self.assertAlmostEqual(record.rounds[0].new_seqs[15].e, 3e-36)
05770         self.assertEqual(record.rounds[0].new_seqs[16].title, "gi|729719|sp|P40374|HIS7_SCHPO IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05771         self.assertEqual(record.rounds[0].new_seqs[16].score, 136)
05772         self.assertAlmostEqual(record.rounds[0].new_seqs[16].e, 3e-32)
05773         self.assertEqual(record.rounds[0].new_seqs[17].title, "gi|2495227|sp|P56090|HIS7_CANAL IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
05774         self.assertEqual(record.rounds[0].new_seqs[17].score, 128)
05775         self.assertAlmostEqual(record.rounds[0].new_seqs[17].e, 9e-30)
05776         self.assertEqual(record.rounds[0].new_seqs[18].title, "gi|2495225|sp|Q58109|HIS7_METJA PROBABLE IMIDAZOLEGLYCEROL-PHOS...")
05777         self.assertEqual(record.rounds[0].new_seqs[18].score, 126)
05778         self.assertAlmostEqual(record.rounds[0].new_seqs[18].e, 4e-29)
05779         self.assertEqual(record.rounds[0].new_seqs[19].title, "gi|2495229|sp|Q92447|HIS7_PICPA IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
05780         self.assertEqual(record.rounds[0].new_seqs[19].score, 125)
05781         self.assertAlmostEqual(record.rounds[0].new_seqs[19].e, 6e-29)
05782         self.assertEqual(record.rounds[0].new_seqs[20].title, "gi|399897|sp|Q02986|HIS7_SACKL IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05783         self.assertEqual(record.rounds[0].new_seqs[20].score, 125)
05784         self.assertAlmostEqual(record.rounds[0].new_seqs[20].e, 6e-29)
05785         self.assertEqual(record.rounds[0].new_seqs[21].title, "gi|2495228|sp|Q12578|HIS7_CANGA IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
05786         self.assertEqual(record.rounds[0].new_seqs[21].score, 123)
05787         self.assertAlmostEqual(record.rounds[0].new_seqs[21].e, 2e-28)
05788         self.assertEqual(record.rounds[0].new_seqs[22].title, "gi|2506514|sp|P06633|HIS7_YEAST IMIDAZOLEGLYCEROL-PHOSPHATE DEH...")
05789         self.assertEqual(record.rounds[0].new_seqs[22].score, 122)
05790         self.assertAlmostEqual(record.rounds[0].new_seqs[22].e, 4e-28)
05791         self.assertEqual(record.rounds[0].new_seqs[23].title, "gi|462274|sp|P34041|HIS7_TRIHA IMIDAZOLEGLYCEROL-PHOSPHATE DEHY...")
05792         self.assertEqual(record.rounds[0].new_seqs[23].score, 106)
05793         self.assertAlmostEqual(record.rounds[0].new_seqs[23].e, 3e-23)
05794         self.assertEqual(record.rounds[0].new_seqs[24].title, "gi|1345641|sp|P49264|C7B1_THLAR CYTOCHROME P450 71B1 (CYPLXXIB1)")
05795         self.assertEqual(record.rounds[0].new_seqs[24].score, 35)
05796         self.assertAlmostEqual(record.rounds[0].new_seqs[24].e, 0.13)
05797         self.assertEqual(record.rounds[0].new_seqs[25].title, "gi|1731346|sp|Q10698|YY29_MYCTU PROBABLE DIPEPTIDASE CY49.29C")
05798         self.assertEqual(record.rounds[0].new_seqs[25].score, 32)
05799         self.assertAlmostEqual(record.rounds[0].new_seqs[25].e, 1.1)
05800         self.assertEqual(record.rounds[0].new_seqs[26].title, "gi|3287839|sp|Q01812|GLK4_RAT GLUTAMATE RECEPTOR, IONOTROPIC KA...")
05801         self.assertEqual(record.rounds[0].new_seqs[26].score, 30)
05802         self.assertAlmostEqual(record.rounds[0].new_seqs[26].e, 3.3)
05803         self.assertEqual(record.rounds[0].new_seqs[27].title, "gi|3123025|sp|Q94637|VIT6_OSCBR VITELLOGENIN 6 PRECURSOR")
05804         self.assertEqual(record.rounds[0].new_seqs[27].score, 29)
05805         self.assertAlmostEqual(record.rounds[0].new_seqs[27].e, 5.6)
05806         self.assertEqual(record.rounds[0].new_seqs[28].title, "gi|1174406|sp|P36126|SP14_YEAST PHOSPHOLIPASE D1 (PLD 1) (CHOLI...")
05807         self.assertEqual(record.rounds[0].new_seqs[28].score, 29)
05808         self.assertAlmostEqual(record.rounds[0].new_seqs[28].e, 9.7)
05809         self.assertEqual(record.rounds[0].new_seqs[29].title, "gi|3287848|sp|Q16099|GLK4_HUMAN GLUTAMATE RECEPTOR, IONOTROPIC ...")
05810         self.assertEqual(record.rounds[0].new_seqs[29].score, 29)
05811         self.assertAlmostEqual(record.rounds[0].new_seqs[29].e, 9.7)
05812         self.assertEqual(len(record.rounds[0].alignments), 30)
05813         self.assertEqual(record.rounds[0].alignments[0].title, ">gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05814         self.assertEqual(record.rounds[0].alignments[0].length, 200)
05815         self.assertEqual(record.rounds[0].alignments[1].title, ">gi|462273|sp|P34047|HIS7_ARATH IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05816         self.assertEqual(record.rounds[0].alignments[1].length, 270)
05817         self.assertEqual(record.rounds[0].alignments[2].title, ">gi|2495230|sp|Q43072|HIS7_PEA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05818         self.assertEqual(record.rounds[0].alignments[2].length, 281)
05819         self.assertEqual(record.rounds[0].alignments[3].title, ">gi|123157|sp|P18787|HIS7_AZOBR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05820         self.assertEqual(record.rounds[0].alignments[3].length, 207)
05821         self.assertEqual(record.rounds[0].alignments[4].title, ">gi|462275|sp|P34048|HIS7_WHEAT IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05822         self.assertEqual(record.rounds[0].alignments[4].length, 195)
05823         self.assertEqual(record.rounds[0].alignments[5].title, ">gi|123161|sp|P16247|HIS7_STRCO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05824         self.assertEqual(record.rounds[0].alignments[5].length, 197)
05825         self.assertEqual(record.rounds[0].alignments[6].title, ">gi|462272|sp|Q05068|HIS7_ANASP IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05826         self.assertEqual(record.rounds[0].alignments[6].length, 209)
05827         self.assertEqual(record.rounds[0].alignments[7].title, ">gi|123158|sp|P06987|HIS7_ECOLI HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
05828         self.assertEqual(record.rounds[0].alignments[7].length, 355)
05829         self.assertEqual(record.rounds[0].alignments[8].title, ">gi|1346293|sp|P48054|HIS7_SYNY3 IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05830         self.assertEqual(record.rounds[0].alignments[8].length, 210)
05831         self.assertEqual(record.rounds[0].alignments[9].title, ">gi|1170286|sp|P44327|HIS7_HAEIN HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
05832         self.assertEqual(record.rounds[0].alignments[9].length, 362)
05833         self.assertEqual(record.rounds[0].alignments[10].title, ">gi|2495224|sp|O06590|HIS7_MYCTU IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05834         self.assertEqual(record.rounds[0].alignments[10].length, 210)
05835         self.assertEqual(record.rounds[0].alignments[11].title, ">gi|123160|sp|P10368|HIS7_SALTY HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
05836         self.assertEqual(record.rounds[0].alignments[11].length, 354)
05837         self.assertEqual(record.rounds[0].alignments[12].title, ">gi|2495226|sp|Q50504|HIS7_METTH PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05838         self.assertEqual(record.rounds[0].alignments[12].length, 194)
05839         self.assertEqual(record.rounds[0].alignments[13].title, ">gi|729718|sp|P40919|HIS7_CRYNE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05840         self.assertEqual(record.rounds[0].alignments[13].length, 202)
05841         self.assertEqual(record.rounds[0].alignments[14].title, ">gi|3334215|sp|O33773|HIS7_SULSO PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05842         self.assertEqual(record.rounds[0].alignments[14].length, 193)
05843         self.assertEqual(record.rounds[0].alignments[15].title, ">gi|123159|sp|P28624|HIS7_PHYPR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05844         self.assertEqual(record.rounds[0].alignments[15].length, 452)
05845         self.assertEqual(record.rounds[0].alignments[16].title, ">gi|729719|sp|P40374|HIS7_SCHPO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05846         self.assertEqual(record.rounds[0].alignments[16].length, 216)
05847         self.assertEqual(record.rounds[0].alignments[17].title, ">gi|2495227|sp|P56090|HIS7_CANAL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05848         self.assertEqual(record.rounds[0].alignments[17].length, 223)
05849         self.assertEqual(record.rounds[0].alignments[18].title, ">gi|2495225|sp|Q58109|HIS7_METJA PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05850         self.assertEqual(record.rounds[0].alignments[18].length, 197)
05851         self.assertEqual(record.rounds[0].alignments[19].title, ">gi|2495229|sp|Q92447|HIS7_PICPA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05852         self.assertEqual(record.rounds[0].alignments[19].length, 224)
05853         self.assertEqual(record.rounds[0].alignments[20].title, ">gi|399897|sp|Q02986|HIS7_SACKL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05854         self.assertEqual(record.rounds[0].alignments[20].length, 232)
05855         self.assertEqual(record.rounds[0].alignments[21].title, ">gi|2495228|sp|Q12578|HIS7_CANGA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05856         self.assertEqual(record.rounds[0].alignments[21].length, 210)
05857         self.assertEqual(record.rounds[0].alignments[22].title, ">gi|2506514|sp|P06633|HIS7_YEAST IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05858         self.assertEqual(record.rounds[0].alignments[22].length, 220)
05859         self.assertEqual(record.rounds[0].alignments[23].title, ">gi|462274|sp|P34041|HIS7_TRIHA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05860         self.assertEqual(record.rounds[0].alignments[23].length, 208)
05861         self.assertEqual(record.rounds[0].alignments[24].title, ">gi|1345641|sp|P49264|C7B1_THLAR CYTOCHROME P450 71B1 (CYPLXXIB1)")
05862         self.assertEqual(record.rounds[0].alignments[24].length, 496)
05863         self.assertEqual(record.rounds[0].alignments[25].title, ">gi|1731346|sp|Q10698|YY29_MYCTU PROBABLE DIPEPTIDASE CY49.29C")
05864         self.assertEqual(record.rounds[0].alignments[25].length, 375)
05865         self.assertEqual(record.rounds[0].alignments[26].title, ">gi|3287839|sp|Q01812|GLK4_RAT GLUTAMATE RECEPTOR, IONOTROPIC KAINATE 4 PRECURSOR (GLUTAMATE RECEPTOR KA-1) (KA1)")
05866         self.assertEqual(record.rounds[0].alignments[26].length, 956)
05867         self.assertEqual(record.rounds[0].alignments[27].title, ">gi|3123025|sp|Q94637|VIT6_OSCBR VITELLOGENIN 6 PRECURSOR")
05868         self.assertEqual(record.rounds[0].alignments[27].length, 1660)
05869         self.assertEqual(record.rounds[0].alignments[28].title, ">gi|1174406|sp|P36126|SP14_YEAST PHOSPHOLIPASE D1 (PLD 1) (CHOLINE PHOSPHATASE 1) (PHOSPHATIDYLCHOLINE-HYDROLYZING PHOSPHOLIPASE D1) (MEIOSIS-SPECIFIC SPORULATION PROTEIN SPO14)")
05870         self.assertEqual(record.rounds[0].alignments[28].length, 1380)
05871         self.assertEqual(record.rounds[0].alignments[29].title, ">gi|3287848|sp|Q16099|GLK4_HUMAN GLUTAMATE RECEPTOR, IONOTROPIC KAINATE 4 PRECURSOR (GLUTAMATE RECEPTOR KA-1) (KA1) (EXCITATORY AMINO ACID RECEPTOR 1) (EAA1)")
05872         self.assertEqual(record.rounds[0].alignments[29].length, 956)
05873 
05874     def _check_bt047_round1(self, record):
05875         self.assertEqual(len(record.rounds[1].new_seqs), 2)
05876         self.assertEqual(record.rounds[1].new_seqs[0].title, "gi|2833252|sp|Q14571|IP3S_HUMAN INOSITOL 1,4,5-TRISPHOSPHATE-BI...")
05877         self.assertEqual(record.rounds[1].new_seqs[0].score, 30)
05878         self.assertAlmostEqual(record.rounds[1].new_seqs[0].e, 3.7)
05879         self.assertEqual(record.rounds[1].new_seqs[1].title, "gi|266389|sp|P29995|IP3S_RAT INOSITOL 1,4,5-TRISPHOSPHATE-BINDI...")
05880         self.assertEqual(record.rounds[1].new_seqs[1].score, 29)
05881         self.assertAlmostEqual(record.rounds[1].new_seqs[1].e, 8.2)
05882         self.assertEqual(len(record.rounds[1].alignments), 26)
05883         self.assertEqual(record.rounds[1].alignments[0].title, ">gi|2495230|sp|Q43072|HIS7_PEA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05884         self.assertEqual(record.rounds[1].alignments[0].length, 281)
05885         self.assertEqual(record.rounds[1].alignments[1].title, ">gi|462273|sp|P34047|HIS7_ARATH IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05886         self.assertEqual(record.rounds[1].alignments[1].length, 270)
05887         self.assertEqual(record.rounds[1].alignments[2].title, ">gi|399896|sp|Q02134|HIS7_LACLA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05888         self.assertEqual(record.rounds[1].alignments[2].length, 200)
05889         self.assertEqual(record.rounds[1].alignments[3].title, ">gi|1346293|sp|P48054|HIS7_SYNY3 IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05890         self.assertEqual(record.rounds[1].alignments[3].length, 210)
05891         self.assertEqual(record.rounds[1].alignments[4].title, ">gi|462272|sp|Q05068|HIS7_ANASP IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05892         self.assertEqual(record.rounds[1].alignments[4].length, 209)
05893         self.assertEqual(record.rounds[1].alignments[5].title, ">gi|462275|sp|P34048|HIS7_WHEAT IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05894         self.assertEqual(record.rounds[1].alignments[5].length, 195)
05895         self.assertEqual(record.rounds[1].alignments[6].title, ">gi|123161|sp|P16247|HIS7_STRCO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05896         self.assertEqual(record.rounds[1].alignments[6].length, 197)
05897         self.assertEqual(record.rounds[1].alignments[7].title, ">gi|2506514|sp|P06633|HIS7_YEAST IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05898         self.assertEqual(record.rounds[1].alignments[7].length, 220)
05899         self.assertEqual(record.rounds[1].alignments[8].title, ">gi|2495227|sp|P56090|HIS7_CANAL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05900         self.assertEqual(record.rounds[1].alignments[8].length, 223)
05901         self.assertEqual(record.rounds[1].alignments[9].title, ">gi|399897|sp|Q02986|HIS7_SACKL IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05902         self.assertEqual(record.rounds[1].alignments[9].length, 232)
05903         self.assertEqual(record.rounds[1].alignments[10].title, ">gi|2495228|sp|Q12578|HIS7_CANGA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05904         self.assertEqual(record.rounds[1].alignments[10].length, 210)
05905         self.assertEqual(record.rounds[1].alignments[11].title, ">gi|123158|sp|P06987|HIS7_ECOLI HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
05906         self.assertEqual(record.rounds[1].alignments[11].length, 355)
05907         self.assertEqual(record.rounds[1].alignments[12].title, ">gi|123157|sp|P18787|HIS7_AZOBR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05908         self.assertEqual(record.rounds[1].alignments[12].length, 207)
05909         self.assertEqual(record.rounds[1].alignments[13].title, ">gi|729718|sp|P40919|HIS7_CRYNE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05910         self.assertEqual(record.rounds[1].alignments[13].length, 202)
05911         self.assertEqual(record.rounds[1].alignments[14].title, ">gi|2495229|sp|Q92447|HIS7_PICPA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05912         self.assertEqual(record.rounds[1].alignments[14].length, 224)
05913         self.assertEqual(record.rounds[1].alignments[15].title, ">gi|1170286|sp|P44327|HIS7_HAEIN HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
05914         self.assertEqual(record.rounds[1].alignments[15].length, 362)
05915         self.assertEqual(record.rounds[1].alignments[16].title, ">gi|123159|sp|P28624|HIS7_PHYPR IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05916         self.assertEqual(record.rounds[1].alignments[16].length, 452)
05917         self.assertEqual(record.rounds[1].alignments[17].title, ">gi|729719|sp|P40374|HIS7_SCHPO IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05918         self.assertEqual(record.rounds[1].alignments[17].length, 216)
05919         self.assertEqual(record.rounds[1].alignments[18].title, ">gi|123160|sp|P10368|HIS7_SALTY HISTIDINE BIOSYNTHESIS BIFUNCTIONAL PROTEIN HISB [INCLUDES: IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD); HISTIDINOL-PHOSPHATASE ]")
05920         self.assertEqual(record.rounds[1].alignments[18].length, 354)
05921         self.assertEqual(record.rounds[1].alignments[19].title, ">gi|2495224|sp|O06590|HIS7_MYCTU IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05922         self.assertEqual(record.rounds[1].alignments[19].length, 210)
05923         self.assertEqual(record.rounds[1].alignments[20].title, ">gi|2495226|sp|Q50504|HIS7_METTH PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05924         self.assertEqual(record.rounds[1].alignments[20].length, 194)
05925         self.assertEqual(record.rounds[1].alignments[21].title, ">gi|2495225|sp|Q58109|HIS7_METJA PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05926         self.assertEqual(record.rounds[1].alignments[21].length, 197)
05927         self.assertEqual(record.rounds[1].alignments[22].title, ">gi|462274|sp|P34041|HIS7_TRIHA IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05928         self.assertEqual(record.rounds[1].alignments[22].length, 208)
05929         self.assertEqual(record.rounds[1].alignments[23].title, ">gi|3334215|sp|O33773|HIS7_SULSO PROBABLE IMIDAZOLEGLYCEROL-PHOSPHATE DEHYDRATASE (IGPD)")
05930         self.assertEqual(record.rounds[1].alignments[23].length, 193)
05931         self.assertEqual(record.rounds[1].alignments[24].title, ">gi|2833252|sp|Q14571|IP3S_HUMAN INOSITOL 1,4,5-TRISPHOSPHATE-BINDING PROTEIN TYPE 2 RECEPTOR (TYPE 2 INSP3 RECEPTOR) (TYPE 2 INOSITOL 1,4,5-TRISPHOSPHATE RECEPTOR)")
05932         self.assertEqual(record.rounds[1].alignments[24].length, 2701)
05933         self.assertEqual(record.rounds[1].alignments[25].title, ">gi|266389|sp|P29995|IP3S_RAT INOSITOL 1,4,5-TRISPHOSPHATE-BINDING PROTEIN TYPE 2 RECEPTOR (TYPE 2 INSP3 RECEPTOR) (TYPE 2 INOSITOL 1,4,5-TRISPHOSPHATE RECEPTOR)")
05934         self.assertEqual(record.rounds[1].alignments[25].length, 2701)
05935 
05936     def _check_bt047_hsps(self, record):
05937         self.assertEqual(record.rounds[0].alignments[0].hsps[0].score, 1040)
05938         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].bits, 409)
05939         self.assertAlmostEqual(record.rounds[0].alignments[0].hsps[0].expect, 1e-114)
05940         self.assertEqual(len(record.rounds[0].alignments[0].hsps), 1)
05941         self.assertEqual(record.rounds[0].alignments[1].hsps[0].score, 499)
05942         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].bits, 198)
05943         self.assertAlmostEqual(record.rounds[0].alignments[1].hsps[0].expect, 6e-51)
05944         self.assertEqual(len(record.rounds[0].alignments[1].hsps), 1)
05945         self.assertEqual(record.rounds[0].alignments[2].hsps[0].score, 492)
05946         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].bits, 196)
05947         self.assertAlmostEqual(record.rounds[0].alignments[2].hsps[0].expect, 4e-50)
05948         self.assertEqual(len(record.rounds[0].alignments[2].hsps), 1)
05949         self.assertEqual(record.rounds[0].alignments[3].hsps[0].score, 465)
05950         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].bits, 185)
05951         self.assertAlmostEqual(record.rounds[0].alignments[3].hsps[0].expect, 5e-47)
05952         self.assertEqual(len(record.rounds[0].alignments[3].hsps), 1)
05953         self.assertEqual(record.rounds[0].alignments[4].hsps[0].score, 455)
05954         self.assertAlmostEqual(record.rounds[0].alignments[4].hsps[0].bits, 181)
05955         self.assertAlmostEqual(record.rounds[0].alignments[4].hsps[0].expect, 8e-46)
05956         self.assertEqual(len(record.rounds[0].alignments[4].hsps), 1)
05957         self.assertEqual(record.rounds[0].alignments[5].hsps[0].score, 447)
05958         self.assertAlmostEqual(record.rounds[0].alignments[5].hsps[0].bits, 178)
05959         self.assertAlmostEqual(record.rounds[0].alignments[5].hsps[0].expect, 7e-45)
05960         self.assertEqual(len(record.rounds[0].alignments[5].hsps), 1)
05961         self.assertEqual(record.rounds[0].alignments[6].hsps[0].score, 447)
05962         self.assertAlmostEqual(record.rounds[0].alignments[6].hsps[0].bits, 178)
05963         self.assertAlmostEqual(record.rounds[0].alignments[6].hsps[0].expect, 7e-45)
05964         self.assertEqual(len(record.rounds[0].alignments[6].hsps), 1)
05965         self.assertEqual(record.rounds[0].alignments[7].hsps[0].score, 438)
05966         self.assertAlmostEqual(record.rounds[0].alignments[7].hsps[0].bits, 175)
05967         self.assertAlmostEqual(record.rounds[0].alignments[7].hsps[0].expect, 8e-44)
05968         self.assertEqual(len(record.rounds[0].alignments[7].hsps), 1)
05969         self.assertEqual(record.rounds[0].alignments[8].hsps[0].score, 437)
05970         self.assertAlmostEqual(record.rounds[0].alignments[8].hsps[0].bits, 174)
05971         self.assertAlmostEqual(record.rounds[0].alignments[8].hsps[0].expect, 1e-43)
05972         self.assertEqual(len(record.rounds[0].alignments[8].hsps), 1)
05973         self.assertEqual(record.rounds[0].alignments[9].hsps[0].score, 421)
05974         self.assertAlmostEqual(record.rounds[0].alignments[9].hsps[0].bits, 168)
05975         self.assertAlmostEqual(record.rounds[0].alignments[9].hsps[0].expect, 8e-42)
05976         self.assertEqual(len(record.rounds[0].alignments[9].hsps), 1)
05977         self.assertEqual(record.rounds[0].alignments[10].hsps[0].score, 418)
05978         self.assertAlmostEqual(record.rounds[0].alignments[10].hsps[0].bits, 167)
05979         self.assertAlmostEqual(record.rounds[0].alignments[10].hsps[0].expect, 2e-41)
05980         self.assertEqual(len(record.rounds[0].alignments[10].hsps), 1)
05981         self.assertEqual(record.rounds[0].alignments[11].hsps[0].score, 417)
05982         self.assertAlmostEqual(record.rounds[0].alignments[11].hsps[0].bits, 166)
05983         self.assertAlmostEqual(record.rounds[0].alignments[11].hsps[0].expect, 2e-41)
05984         self.assertEqual(len(record.rounds[0].alignments[11].hsps), 1)
05985         self.assertEqual(record.rounds[0].alignments[12].hsps[0].score, 382)
05986         self.assertAlmostEqual(record.rounds[0].alignments[12].hsps[0].bits, 153)
05987         self.assertAlmostEqual(record.rounds[0].alignments[12].hsps[0].expect, 3e-37)
05988         self.assertEqual(len(record.rounds[0].alignments[12].hsps), 1)
05989         self.assertEqual(record.rounds[0].alignments[13].hsps[0].score, 379)
05990         self.assertAlmostEqual(record.rounds[0].alignments[13].hsps[0].bits, 152)
05991         self.assertAlmostEqual(record.rounds[0].alignments[13].hsps[0].expect, 7e-37)
05992         self.assertEqual(len(record.rounds[0].alignments[13].hsps), 1)
05993         self.assertEqual(record.rounds[0].alignments[14].hsps[0].score, 378)
05994         self.assertAlmostEqual(record.rounds[0].alignments[14].hsps[0].bits, 151)
05995         self.assertAlmostEqual(record.rounds[0].alignments[14].hsps[0].expect, 9e-37)
05996         self.assertEqual(len(record.rounds[0].alignments[14].hsps), 1)
05997         self.assertEqual(record.rounds[0].alignments[15].hsps[0].score, 373)
05998         self.assertAlmostEqual(record.rounds[0].alignments[15].hsps[0].bits, 149)
05999         self.assertAlmostEqual(record.rounds[0].alignments[15].hsps[0].expect, 3e-36)
06000         self.assertEqual(len(record.rounds[0].alignments[15].hsps), 1)
06001         self.assertEqual(record.rounds[0].alignments[16].hsps[0].score, 339)
06002         self.assertAlmostEqual(record.rounds[0].alignments[16].hsps[0].bits, 136)
06003         self.assertAlmostEqual(record.rounds[0].alignments[16].hsps[0].expect, 3e-32)
06004         self.assertEqual(len(record.rounds[0].alignments[16].hsps), 1)
06005         self.assertEqual(record.rounds[0].alignments[17].hsps[0].score, 318)
06006         self.assertAlmostEqual(record.rounds[0].alignments[17].hsps[0].bits, 128)
06007         self.assertAlmostEqual(record.rounds[0].alignments[17].hsps[0].expect, 9e-30)
06008         self.assertEqual(len(record.rounds[0].alignments[17].hsps), 1)
06009         self.assertEqual(record.rounds[0].alignments[18].hsps[0].score, 313)
06010         self.assertAlmostEqual(record.rounds[0].alignments[18].hsps[0].bits, 126)
06011         self.assertAlmostEqual(record.rounds[0].alignments[18].hsps[0].expect, 4e-29)
06012         self.assertEqual(len(record.rounds[0].alignments[18].hsps), 1)
06013         self.assertEqual(record.rounds[0].alignments[19].hsps[0].score, 311)
06014         self.assertAlmostEqual(record.rounds[0].alignments[19].hsps[0].bits, 125)
06015         self.assertAlmostEqual(record.rounds[0].alignments[19].hsps[0].expect, 6e-29)
06016         self.assertEqual(len(record.rounds[0].alignments[19].hsps), 1)
06017         self.assertEqual(record.rounds[0].alignments[20].hsps[0].score, 311)
06018         self.assertAlmostEqual(record.rounds[0].alignments[20].hsps[0].bits, 125)
06019         self.assertAlmostEqual(record.rounds[0].alignments[20].hsps[0].expect, 6e-29)
06020         self.assertEqual(len(record.rounds[0].alignments[20].hsps), 1)
06021         self.assertEqual(record.rounds[0].alignments[21].hsps[0].score, 306)
06022         self.assertAlmostEqual(record.rounds[0].alignments[21].hsps[0].bits, 123)
06023         self.assertAlmostEqual(record.rounds[0].alignments[21].hsps[0].expect, 2e-28)
06024         self.assertEqual(len(record.rounds[0].alignments[21].hsps), 1)
06025         self.assertEqual(record.rounds[0].alignments[22].hsps[0].score, 304)
06026         self.assertAlmostEqual(record.rounds[0].alignments[22].hsps[0].bits, 122)
06027         self.assertAlmostEqual(record.rounds[0].alignments[22].hsps[0].expect, 4e-28)
06028         self.assertEqual(len(record.rounds[0].alignments[22].hsps), 1)
06029         self.assertEqual(record.rounds[0].alignments[23].hsps[0].score, 263)
06030         self.assertAlmostEqual(record.rounds[0].alignments[23].hsps[0].bits, 106)
06031         self.assertAlmostEqual(record.rounds[0].alignments[23].hsps[0].expect, 3e-23)
06032         self.assertEqual(len(record.rounds[0].alignments[23].hsps), 1)
06033         self.assertEqual(record.rounds[0].alignments[24].hsps[0].score, 78)
06034         self.assertAlmostEqual(record.rounds[0].alignments[24].hsps[0].bits, 34.8)
06035         self.assertAlmostEqual(record.rounds[0].alignments[24].hsps[0].expect, 0.13)
06036         self.assertEqual(len(record.rounds[0].alignments[24].hsps), 1)
06037         self.assertEqual(record.rounds[0].alignments[25].hsps[0].score, 70)
06038         self.assertAlmostEqual(record.rounds[0].alignments[25].hsps[0].bits, 31.7)
06039         self.assertAlmostEqual(record.rounds[0].alignments[25].hsps[0].expect, 1.1)
06040         self.assertEqual(len(record.rounds[0].alignments[25].hsps), 1)
06041         self.assertEqual(record.rounds[0].alignments[26].hsps[0].score, 66)
06042         self.assertAlmostEqual(record.rounds[0].alignments[26].hsps[0].bits, 30.1)
06043         self.assertAlmostEqual(record.rounds[0].alignments[26].hsps[0].expect, 3.3)
06044         self.assertEqual(len(record.rounds[0].alignments[26].hsps), 1)
06045         self.assertEqual(record.rounds[0].alignments[27].hsps[0].score, 64)
06046         self.assertAlmostEqual(record.rounds[0].alignments[27].hsps[0].bits, 29.3)
06047         self.assertAlmostEqual(record.rounds[0].alignments[27].hsps[0].expect, 5.6)
06048         self.assertEqual(len(record.rounds[0].alignments[27].hsps), 1)
06049         self.assertEqual(record.rounds[0].alignments[28].hsps[0].score, 62)
06050         self.assertAlmostEqual(record.rounds[0].alignments[28].hsps[0].bits, 28.6)
06051         self.assertAlmostEqual(record.rounds[0].alignments[28].hsps[0].expect, 9.7)
06052         self.assertEqual(len(record.rounds[0].alignments[28].hsps), 1)
06053         self.assertEqual(record.rounds[0].alignments[29].hsps[0].score, 62)
06054         self.assertAlmostEqual(record.rounds[0].alignments[29].hsps[0].bits, 28.6)
06055         self.assertAlmostEqual(record.rounds[0].alignments[29].hsps[0].expect, 9.7)
06056         self.assertEqual(record.rounds[1].alignments[0].hsps[0].score, 820)
06057         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].bits, 323)
06058         self.assertAlmostEqual(record.rounds[1].alignments[0].hsps[0].expect, 1e-88)
06059         self.assertEqual(len(record.rounds[1].alignments[0].hsps), 1)
06060         self.assertEqual(record.rounds[1].alignments[1].hsps[0].score, 817)
06061         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].bits, 322)
06062         self.assertAlmostEqual(record.rounds[1].alignments[1].hsps[0].expect, 3e-88)
06063         self.assertEqual(len(record.rounds[1].alignments[1].hsps), 1)
06064         self.assertEqual(record.rounds[1].alignments[2].hsps[0].score, 808)
06065         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].bits, 318)
06066         self.assertAlmostEqual(record.rounds[1].alignments[2].hsps[0].expect, 4e-87)
06067         self.assertEqual(len(record.rounds[1].alignments[2].hsps), 1)
06068         self.assertEqual(record.rounds[1].alignments[3].hsps[0].score, 798)
06069         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].bits, 315)
06070         self.assertAlmostEqual(record.rounds[1].alignments[3].hsps[0].expect, 5e-86)
06071         self.assertEqual(len(record.rounds[1].alignments[3].hsps), 1)
06072         self.assertEqual(record.rounds[1].alignments[4].hsps[0].score, 795)
06073         self.assertAlmostEqual(record.rounds[1].alignments[4].hsps[0].bits, 313)
06074         self.assertAlmostEqual(record.rounds[1].alignments[4].hsps[0].expect, 1e-85)
06075         self.assertEqual(len(record.rounds[1].alignments[4].hsps), 1)
06076         self.assertEqual(record.rounds[1].alignments[5].hsps[0].score, 793)
06077         self.assertAlmostEqual(record.rounds[1].alignments[5].hsps[0].bits, 313)
06078         self.assertAlmostEqual(record.rounds[1].alignments[5].hsps[0].expect, 2e-85)
06079         self.assertEqual(len(record.rounds[1].alignments[5].hsps), 1)
06080         self.assertEqual(record.rounds[1].alignments[6].hsps[0].score, 776)
06081         self.assertAlmostEqual(record.rounds[1].alignments[6].hsps[0].bits, 306)
06082         self.assertAlmostEqual(record.rounds[1].alignments[6].hsps[0].expect, 2e-83)
06083         self.assertEqual(len(record.rounds[1].alignments[6].hsps), 1)
06084         self.assertEqual(record.rounds[1].alignments[7].hsps[0].score, 772)
06085         self.assertAlmostEqual(record.rounds[1].alignments[7].hsps[0].bits, 304)
06086         self.assertAlmostEqual(record.rounds[1].alignments[7].hsps[0].expect, 6e-83)
06087         self.assertEqual(len(record.rounds[1].alignments[7].hsps), 1)
06088         self.assertEqual(record.rounds[1].alignments[8].hsps[0].score, 771)
06089         self.assertAlmostEqual(record.rounds[1].alignments[8].hsps[0].bits, 304)
06090         self.assertAlmostEqual(record.rounds[1].alignments[8].hsps[0].expect, 8e-83)
06091         self.assertEqual(len(record.rounds[1].alignments[8].hsps), 1)
06092         self.assertEqual(record.rounds[1].alignments[9].hsps[0].score, 770)
06093         self.assertAlmostEqual(record.rounds[1].alignments[9].hsps[0].bits, 304)
06094         self.assertAlmostEqual(record.rounds[1].alignments[9].hsps[0].expect, 1e-82)
06095         self.assertEqual(len(record.rounds[1].alignments[9].hsps), 1)
06096         self.assertEqual(record.rounds[1].alignments[10].hsps[0].score, 767)
06097         self.assertAlmostEqual(record.rounds[1].alignments[10].hsps[0].bits, 303)
06098         self.assertAlmostEqual(record.rounds[1].alignments[10].hsps[0].expect, 2e-82)
06099         self.assertEqual(len(record.rounds[1].alignments[10].hsps), 1)
06100         self.assertEqual(record.rounds[1].alignments[11].hsps[0].score, 765)
06101         self.assertAlmostEqual(record.rounds[1].alignments[11].hsps[0].bits, 302)
06102         self.assertAlmostEqual(record.rounds[1].alignments[11].hsps[0].expect, 4e-82)
06103         self.assertEqual(len(record.rounds[1].alignments[11].hsps), 1)
06104         self.assertEqual(record.rounds[1].alignments[12].hsps[0].score, 762)
06105         self.assertAlmostEqual(record.rounds[1].alignments[12].hsps[0].bits, 301)
06106         self.assertAlmostEqual(record.rounds[1].alignments[12].hsps[0].expect, 9e-82)
06107         self.assertEqual(len(record.rounds[1].alignments[12].hsps), 1)
06108         self.assertEqual(record.rounds[1].alignments[13].hsps[0].score, 759)
06109         self.assertAlmostEqual(record.rounds[1].alignments[13].hsps[0].bits, 299)
06110         self.assertAlmostEqual(record.rounds[1].alignments[13].hsps[0].expect, 2e-81)
06111         self.assertEqual(len(record.rounds[1].alignments[13].hsps), 1)
06112         self.assertEqual(record.rounds[1].alignments[14].hsps[0].score, 756)
06113         self.assertAlmostEqual(record.rounds[1].alignments[14].hsps[0].bits, 298)
06114         self.assertAlmostEqual(record.rounds[1].alignments[14].hsps[0].expect, 5e-81)
06115         self.assertEqual(len(record.rounds[1].alignments[14].hsps), 1)
06116         self.assertEqual(record.rounds[1].alignments[15].hsps[0].score, 741)
06117         self.assertAlmostEqual(record.rounds[1].alignments[15].hsps[0].bits, 292)
06118         self.assertAlmostEqual(record.rounds[1].alignments[15].hsps[0].expect, 3e-79)
06119         self.assertEqual(len(record.rounds[1].alignments[15].hsps), 1)
06120         self.assertEqual(record.rounds[1].alignments[16].hsps[0].score, 734)
06121         self.assertAlmostEqual(record.rounds[1].alignments[16].hsps[0].bits, 290)
06122         self.assertAlmostEqual(record.rounds[1].alignments[16].hsps[0].expect, 2e-78)
06123         self.assertEqual(len(record.rounds[1].alignments[16].hsps), 1)
06124         self.assertEqual(record.rounds[1].alignments[17].hsps[0].score, 734)
06125         self.assertAlmostEqual(record.rounds[1].alignments[17].hsps[0].bits, 290)
06126         self.assertAlmostEqual(record.rounds[1].alignments[17].hsps[0].expect, 2e-78)
06127         self.assertEqual(len(record.rounds[1].alignments[17].hsps), 1)
06128         self.assertEqual(record.rounds[1].alignments[18].hsps[0].score, 726)
06129         self.assertAlmostEqual(record.rounds[1].alignments[18].hsps[0].bits, 287)
06130         self.assertAlmostEqual(record.rounds[1].alignments[18].hsps[0].expect, 1e-77)
06131         self.assertEqual(len(record.rounds[1].alignments[18].hsps), 1)
06132         self.assertEqual(record.rounds[1].alignments[19].hsps[0].score, 716)
06133         self.assertAlmostEqual(record.rounds[1].alignments[19].hsps[0].bits, 283)
06134         self.assertAlmostEqual(record.rounds[1].alignments[19].hsps[0].expect, 2e-76)
06135         self.assertEqual(len(record.rounds[1].alignments[19].hsps), 1)
06136         self.assertEqual(record.rounds[1].alignments[20].hsps[0].score, 695)
06137         self.assertAlmostEqual(record.rounds[1].alignments[20].hsps[0].bits, 274)
06138         self.assertAlmostEqual(record.rounds[1].alignments[20].hsps[0].expect, 6e-74)
06139         self.assertEqual(len(record.rounds[1].alignments[20].hsps), 1)
06140         self.assertEqual(record.rounds[1].alignments[21].hsps[0].score, 685)
06141         self.assertAlmostEqual(record.rounds[1].alignments[21].hsps[0].bits, 271)
06142         self.assertAlmostEqual(record.rounds[1].alignments[21].hsps[0].expect, 1e-72)
06143         self.assertEqual(len(record.rounds[1].alignments[21].hsps), 1)
06144         self.assertEqual(record.rounds[1].alignments[22].hsps[0].score, 680)
06145         self.assertAlmostEqual(record.rounds[1].alignments[22].hsps[0].bits, 269)
06146         self.assertAlmostEqual(record.rounds[1].alignments[22].hsps[0].expect, 4e-72)
06147         self.assertEqual(len(record.rounds[1].alignments[22].hsps), 1)
06148         self.assertEqual(record.rounds[1].alignments[23].hsps[0].score, 662)
06149         self.assertAlmostEqual(record.rounds[1].alignments[23].hsps[0].bits, 262)
06150         self.assertAlmostEqual(record.rounds[1].alignments[23].hsps[0].expect, 5e-70)
06151         self.assertEqual(len(record.rounds[1].alignments[23].hsps), 1)
06152         self.assertEqual(record.rounds[1].alignments[24].hsps[0].score, 66)
06153         self.assertAlmostEqual(record.rounds[1].alignments[24].hsps[0].bits, 30.0)
06154         self.assertAlmostEqual(record.rounds[1].alignments[24].hsps[0].expect, 3.7)
06155         self.assertEqual(len(record.rounds[1].alignments[24].hsps), 1)
06156         self.assertEqual(record.rounds[1].alignments[25].hsps[0].score, 63)
06157         self.assertAlmostEqual(record.rounds[1].alignments[25].hsps[0].bits, 28.8)
06158         self.assertAlmostEqual(record.rounds[1].alignments[25].hsps[0].expect, 8.2)
06159         self.assertEqual(len(record.rounds[1].alignments[25].hsps), 1)
06160         
06161     def _check_bt047_hsps_details(self, record):
06162         self.assertEqual(record.rounds[0].alignments[0].hsps[0].identities, (200, 200))
06163         self.assertEqual(record.rounds[0].alignments[0].hsps[0].positives, (200, 200))
06164         self.assertEqual(record.rounds[0].alignments[1].hsps[0].identities, (99, 198))
06165         self.assertEqual(record.rounds[0].alignments[1].hsps[0].positives, (135, 198))
06166         self.assertEqual(record.rounds[0].alignments[1].hsps[0].gaps, (4, 198))
06167         self.assertEqual(record.rounds[0].alignments[2].hsps[0].identities, (96, 199))
06168         self.assertEqual(record.rounds[0].alignments[2].hsps[0].positives, (136, 199))
06169         self.assertEqual(record.rounds[0].alignments[2].hsps[0].gaps, (4, 199))
06170         self.assertEqual(record.rounds[0].alignments[3].hsps[0].identities, (91, 194))
06171         self.assertEqual(record.rounds[0].alignments[3].hsps[0].positives, (126, 194))
06172         self.assertEqual(record.rounds[0].alignments[3].hsps[0].gaps, (4, 194))
06173         self.assertEqual(record.rounds[0].alignments[4].hsps[0].identities, (93, 194))
06174         self.assertEqual(record.rounds[0].alignments[4].hsps[0].positives, (128, 194))
06175         self.assertEqual(record.rounds[0].alignments[4].hsps[0].gaps, (4, 194))
06176         self.assertEqual(record.rounds[0].alignments[5].hsps[0].identities, (89, 200))
06177         self.assertEqual(record.rounds[0].alignments[5].hsps[0].positives, (124, 200))
06178         self.assertEqual(record.rounds[0].alignments[5].hsps[0].gaps, (3, 200))
06179         self.assertEqual(record.rounds[0].alignments[6].hsps[0].identities, (91, 198))
06180         self.assertEqual(record.rounds[0].alignments[6].hsps[0].positives, (131, 198))
06181         self.assertEqual(record.rounds[0].alignments[6].hsps[0].gaps, (4, 198))
06182         self.assertEqual(record.rounds[0].alignments[7].hsps[0].identities, (91, 198))
06183         self.assertEqual(record.rounds[0].alignments[7].hsps[0].positives, (130, 198))
06184         self.assertEqual(record.rounds[0].alignments[7].hsps[0].gaps, (9, 198))
06185         self.assertEqual(record.rounds[0].alignments[8].hsps[0].identities, (88, 198))
06186         self.assertEqual(record.rounds[0].alignments[8].hsps[0].positives, (129, 198))
06187         self.assertEqual(record.rounds[0].alignments[8].hsps[0].gaps, (4, 198))
06188         self.assertEqual(record.rounds[0].alignments[9].hsps[0].identities, (89, 198))
06189         self.assertEqual(record.rounds[0].alignments[9].hsps[0].positives, (127, 198))
06190         self.assertEqual(record.rounds[0].alignments[9].hsps[0].gaps, (9, 198))
06191         self.assertEqual(record.rounds[0].alignments[10].hsps[0].identities, (92, 207))
06192         self.assertEqual(record.rounds[0].alignments[10].hsps[0].positives, (125, 207))
06193         self.assertEqual(record.rounds[0].alignments[10].hsps[0].gaps, (14, 207))
06194         self.assertEqual(record.rounds[0].alignments[11].hsps[0].identities, (89, 198))
06195         self.assertEqual(record.rounds[0].alignments[11].hsps[0].positives, (129, 198))
06196         self.assertEqual(record.rounds[0].alignments[11].hsps[0].gaps, (10, 198))
06197         self.assertEqual(record.rounds[0].alignments[12].hsps[0].identities, (81, 198))
06198         self.assertEqual(record.rounds[0].alignments[12].hsps[0].positives, (122, 198))
06199         self.assertEqual(record.rounds[0].alignments[12].hsps[0].gaps, (8, 198))
06200         self.assertEqual(record.rounds[0].alignments[13].hsps[0].identities, (83, 203))
06201         self.assertEqual(record.rounds[0].alignments[13].hsps[0].positives, (120, 203))
06202         self.assertEqual(record.rounds[0].alignments[13].hsps[0].gaps, (11, 203))
06203         self.assertEqual(record.rounds[0].alignments[14].hsps[0].identities, (88, 201))
06204         self.assertEqual(record.rounds[0].alignments[14].hsps[0].positives, (128, 201))
06205         self.assertEqual(record.rounds[0].alignments[14].hsps[0].gaps, (9, 201))
06206         self.assertEqual(record.rounds[0].alignments[15].hsps[0].identities, (86, 198))
06207         self.assertEqual(record.rounds[0].alignments[15].hsps[0].positives, (120, 198))
06208         self.assertEqual(record.rounds[0].alignments[15].hsps[0].gaps, (6, 198))
06209         self.assertEqual(record.rounds[0].alignments[16].hsps[0].identities, (84, 221))
06210         self.assertEqual(record.rounds[0].alignments[16].hsps[0].positives, (114, 221))
06211         self.assertEqual(record.rounds[0].alignments[16].hsps[0].gaps, (29, 221))
06212         self.assertEqual(record.rounds[0].alignments[17].hsps[0].identities, (81, 227))
06213         self.assertEqual(record.rounds[0].alignments[17].hsps[0].positives, (119, 227))
06214         self.assertEqual(record.rounds[0].alignments[17].hsps[0].gaps, (33, 227))
06215         self.assertEqual(record.rounds[0].alignments[18].hsps[0].identities, (80, 196))
06216         self.assertEqual(record.rounds[0].alignments[18].hsps[0].positives, (107, 196))
06217         self.assertEqual(record.rounds[0].alignments[18].hsps[0].gaps, (9, 196))
06218         self.assertEqual(record.rounds[0].alignments[19].hsps[0].identities, (84, 223))
06219         self.assertEqual(record.rounds[0].alignments[19].hsps[0].positives, (116, 223))
06220         self.assertEqual(record.rounds[0].alignments[19].hsps[0].gaps, (31, 223))
06221         self.assertEqual(record.rounds[0].alignments[20].hsps[0].identities, (81, 222))
06222         self.assertEqual(record.rounds[0].alignments[20].hsps[0].positives, (119, 222))
06223         self.assertEqual(record.rounds[0].alignments[20].hsps[0].gaps, (30, 222))
06224         self.assertEqual(record.rounds[0].alignments[21].hsps[0].identities, (78, 215))
06225         self.assertEqual(record.rounds[0].alignments[21].hsps[0].positives, (116, 215))
06226         self.assertEqual(record.rounds[0].alignments[21].hsps[0].gaps, (24, 215))
06227         self.assertEqual(record.rounds[0].alignments[22].hsps[0].identities, (79, 218))
06228         self.assertEqual(record.rounds[0].alignments[22].hsps[0].positives, (114, 218))
06229         self.assertEqual(record.rounds[0].alignments[22].hsps[0].gaps, (30, 218))
06230         self.assertEqual(record.rounds[0].alignments[23].hsps[0].identities, (68, 202))
06231         self.assertEqual(record.rounds[0].alignments[23].hsps[0].positives, (102, 202))
06232         self.assertEqual(record.rounds[0].alignments[23].hsps[0].gaps, (28, 202))
06233         self.assertEqual(record.rounds[0].alignments[24].hsps[0].identities, (34, 134))
06234         self.assertEqual(record.rounds[0].alignments[24].hsps[0].positives, (60, 134))
06235         self.assertEqual(record.rounds[0].alignments[24].hsps[0].gaps, (11, 134))
06236         self.assertEqual(record.rounds[0].alignments[25].hsps[0].identities, (16, 45))
06237         self.assertEqual(record.rounds[0].alignments[25].hsps[0].positives, (21, 45))
06238         self.assertEqual(record.rounds[0].alignments[25].hsps[0].gaps, (3, 45))
06239         self.assertEqual(record.rounds[0].alignments[26].hsps[0].identities, (17, 48))
06240         self.assertEqual(record.rounds[0].alignments[26].hsps[0].positives, (24, 48))
06241         self.assertEqual(record.rounds[0].alignments[26].hsps[0].gaps, (3, 48))
06242         self.assertEqual(record.rounds[0].alignments[27].hsps[0].identities, (25, 70))
06243         self.assertEqual(record.rounds[0].alignments[27].hsps[0].positives, (32, 70))
06244         self.assertEqual(record.rounds[0].alignments[27].hsps[0].gaps, (5, 70))
06245         self.assertEqual(record.rounds[0].alignments[28].hsps[0].identities, (20, 65))
06246         self.assertEqual(record.rounds[0].alignments[28].hsps[0].positives, (31, 65))
06247         self.assertEqual(record.rounds[0].alignments[28].hsps[0].gaps, (7, 65))
06248         self.assertEqual(record.rounds[0].alignments[29].hsps[0].identities, (16, 48))
06249         self.assertEqual(record.rounds[0].alignments[29].hsps[0].positives, (24, 48))
06250         self.assertEqual(record.rounds[0].alignments[29].hsps[0].gaps, (3, 48))
06251         self.assertEqual(record.rounds[1].alignments[0].hsps[0].identities, (96, 199))
06252         self.assertEqual(record.rounds[1].alignments[0].hsps[0].positives, (136, 199))
06253         self.assertEqual(record.rounds[1].alignments[0].hsps[0].gaps, (4, 199))
06254         self.assertEqual(record.rounds[1].alignments[1].hsps[0].identities, (99, 198))
06255         self.assertEqual(record.rounds[1].alignments[1].hsps[0].positives, (135, 198))
06256         self.assertEqual(record.rounds[1].alignments[1].hsps[0].gaps, (4, 198))
06257         self.assertEqual(record.rounds[1].alignments[2].hsps[0].identities, (200, 200))
06258         self.assertEqual(record.rounds[1].alignments[2].hsps[0].positives, (200, 200))
06259         self.assertEqual(record.rounds[1].alignments[3].hsps[0].identities, (88, 198))
06260         self.assertEqual(record.rounds[1].alignments[3].hsps[0].positives, (129, 198))
06261         self.assertEqual(record.rounds[1].alignments[3].hsps[0].gaps, (4, 198))
06262         self.assertEqual(record.rounds[1].alignments[4].hsps[0].identities, (91, 198))
06263         self.assertEqual(record.rounds[1].alignments[4].hsps[0].positives, (131, 198))
06264         self.assertEqual(record.rounds[1].alignments[4].hsps[0].gaps, (4, 198))
06265         self.assertEqual(record.rounds[1].alignments[5].hsps[0].identities, (93, 196))
06266         self.assertEqual(record.rounds[1].alignments[5].hsps[0].positives, (128, 196))
06267         self.assertEqual(record.rounds[1].alignments[5].hsps[0].gaps, (4, 196))
06268         self.assertEqual(record.rounds[1].alignments[6].hsps[0].identities, (89, 200))
06269         self.assertEqual(record.rounds[1].alignments[6].hsps[0].positives, (124, 200))
06270         self.assertEqual(record.rounds[1].alignments[6].hsps[0].gaps, (3, 200))
06271         self.assertEqual(record.rounds[1].alignments[7].hsps[0].identities, (78, 220))
06272         self.assertEqual(record.rounds[1].alignments[7].hsps[0].positives, (115, 220))
06273         self.assertEqual(record.rounds[1].alignments[7].hsps[0].gaps, (30, 220))
06274         self.assertEqual(record.rounds[1].alignments[8].hsps[0].identities, (81, 227))
06275         self.assertEqual(record.rounds[1].alignments[8].hsps[0].positives, (119, 227))
06276         self.assertEqual(record.rounds[1].alignments[8].hsps[0].gaps, (33, 227))
06277         self.assertEqual(record.rounds[1].alignments[9].hsps[0].identities, (79, 222))
06278         self.assertEqual(record.rounds[1].alignments[9].hsps[0].positives, (118, 222))
06279         self.assertEqual(record.rounds[1].alignments[9].hsps[0].gaps, (30, 222))
06280         self.assertEqual(record.rounds[1].alignments[10].hsps[0].identities, (76, 214))
06281         self.assertEqual(record.rounds[1].alignments[10].hsps[0].positives, (113, 214))
06282         self.assertEqual(record.rounds[1].alignments[10].hsps[0].gaps, (24, 214))
06283         self.assertEqual(record.rounds[1].alignments[11].hsps[0].identities, (91, 198))
06284         self.assertEqual(record.rounds[1].alignments[11].hsps[0].positives, (130, 198))
06285         self.assertEqual(record.rounds[1].alignments[11].hsps[0].gaps, (9, 198))
06286         self.assertEqual(record.rounds[1].alignments[12].hsps[0].identities, (91, 196))
06287         self.assertEqual(record.rounds[1].alignments[12].hsps[0].positives, (127, 196))
06288         self.assertEqual(record.rounds[1].alignments[12].hsps[0].gaps, (4, 196))
06289         self.assertEqual(record.rounds[1].alignments[13].hsps[0].identities, (83, 203))
06290         self.assertEqual(record.rounds[1].alignments[13].hsps[0].positives, (120, 203))
06291         self.assertEqual(record.rounds[1].alignments[13].hsps[0].gaps, (11, 203))
06292         self.assertEqual(record.rounds[1].alignments[14].hsps[0].identities, (82, 223))
06293         self.assertEqual(record.rounds[1].alignments[14].hsps[0].positives, (115, 223))
06294         self.assertEqual(record.rounds[1].alignments[14].hsps[0].gaps, (31, 223))
06295         self.assertEqual(record.rounds[1].alignments[15].hsps[0].identities, (89, 198))
06296         self.assertEqual(record.rounds[1].alignments[15].hsps[0].positives, (127, 198))
06297         self.assertEqual(record.rounds[1].alignments[15].hsps[0].gaps, (9, 198))
06298         self.assertEqual(record.rounds[1].alignments[16].hsps[0].identities, (86, 199))
06299         self.assertEqual(record.rounds[1].alignments[16].hsps[0].positives, (121, 199))
06300         self.assertEqual(record.rounds[1].alignments[16].hsps[0].gaps, (8, 199))
06301         self.assertEqual(record.rounds[1].alignments[17].hsps[0].identities, (83, 221))
06302         self.assertEqual(record.rounds[1].alignments[17].hsps[0].positives, (114, 221))
06303         self.assertEqual(record.rounds[1].alignments[17].hsps[0].gaps, (29, 221))
06304         self.assertEqual(record.rounds[1].alignments[18].hsps[0].identities, (89, 198))
06305         self.assertEqual(record.rounds[1].alignments[18].hsps[0].positives, (129, 198))
06306         self.assertEqual(record.rounds[1].alignments[18].hsps[0].gaps, (10, 198))
06307         self.assertEqual(record.rounds[1].alignments[19].hsps[0].identities, (92, 207))
06308         self.assertEqual(record.rounds[1].alignments[19].hsps[0].positives, (124, 207))
06309         self.assertEqual(record.rounds[1].alignments[19].hsps[0].gaps, (14, 207))
06310         self.assertEqual(record.rounds[1].alignments[20].hsps[0].identities, (81, 198))
06311         self.assertEqual(record.rounds[1].alignments[20].hsps[0].positives, (122, 198))
06312         self.assertEqual(record.rounds[1].alignments[20].hsps[0].gaps, (8, 198))
06313         self.assertEqual(record.rounds[1].alignments[21].hsps[0].identities, (79, 196))
06314         self.assertEqual(record.rounds[1].alignments[21].hsps[0].positives, (106, 196))
06315         self.assertEqual(record.rounds[1].alignments[21].hsps[0].gaps, (9, 196))
06316         self.assertEqual(record.rounds[1].alignments[22].hsps[0].identities, (68, 202))
06317         self.assertEqual(record.rounds[1].alignments[22].hsps[0].positives, (102, 202))
06318         self.assertEqual(record.rounds[1].alignments[22].hsps[0].gaps, (28, 202))
06319         self.assertEqual(record.rounds[1].alignments[23].hsps[0].identities, (83, 200))
06320         self.assertEqual(record.rounds[1].alignments[23].hsps[0].positives, (124, 200))
06321         self.assertEqual(record.rounds[1].alignments[23].hsps[0].gaps, (7, 200))
06322         self.assertEqual(record.rounds[1].alignments[24].hsps[0].identities, (18, 120))
06323         self.assertEqual(record.rounds[1].alignments[24].hsps[0].positives, (39, 120))
06324         self.assertEqual(record.rounds[1].alignments[24].hsps[0].gaps, (19, 120))
06325         self.assertEqual(record.rounds[1].alignments[25].hsps[0].identities, (18, 120))
06326         self.assertEqual(record.rounds[1].alignments[25].hsps[0].positives, (37, 120))
06327         self.assertEqual(record.rounds[1].alignments[25].hsps[0].gaps, (19, 120))
06328         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06329         self.assertEqual(record.rounds[0].alignments[0].hsps[0].match, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06330         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06331         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_start, 1)
06332         self.assertEqual(record.rounds[0].alignments[0].hsps[0].query_end, 200)
06333         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_start, 1)
06334         self.assertEqual(record.rounds[0].alignments[0].hsps[0].sbjct_end, 200)
06335         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06336         self.assertEqual(record.rounds[0].alignments[1].hsps[0].match, "RI  + R TKET + + INLDGTG AD S+GI FLDHML  L  H  FD+ +   GD   V +D HH  ED+A+A+G  + + LG + GI R+G FT P+DEAL+   LD+SGRPYL ++ ++   Q++G YDT++ E FF++L   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G IPSSKGVL")
06337         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct, "RIGEVKRVTKETNVSVKINLDGTGVADSSSGIPFLDHMLDQLASHGLFDVHVRATGD---VHIDDHHTNEDIALAIGTALLKALGERKGINRFGDFTAPLDEALIHVSLDLSGRPYLGYNLEIP-TQRVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGENSHHIIEATFKAFARALRQATETDPRRGGTIPSSKGVL")
06338         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_start, 3)
06339         self.assertEqual(record.rounds[0].alignments[1].hsps[0].query_end, 200)
06340         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_start, 74)
06341         self.assertEqual(record.rounds[0].alignments[1].hsps[0].sbjct_end, 267)
06342         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06343         self.assertEqual(record.rounds[0].alignments[2].hsps[0].match, "TR+  + R TKET + + INLDG+G AD STGI FLDHML  L  H  FD+ +   GD   V +D HH  EDVA+A+G  + + LG++ GI R+G F+ P+DEAL+   LD+SGRP+L ++ D+   Q++G YDT++ E F +++   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
06344         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct, "TRVGEVKRVTKETNVSVKINLDGSGVADSSTGIPFLDHMLDQLASHGLFDVHVKATGD---VHIDDHHTNEDVALAIGTALLQALGDRKGINRFGDFSAPLDEALIHVSLDLSGRPHLSYNLDIP-TQRVGTYDTQVVEHFLQSIVNTSGMTLHIRQLAGRNSHHIIEATFKAFARALRQATEYDPRRRGSVPSSKGVL")
06345         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_start, 2)
06346         self.assertEqual(record.rounds[0].alignments[2].hsps[0].query_end, 200)
06347         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_start, 84)
06348         self.assertEqual(record.rounds[0].alignments[2].hsps[0].sbjct_end, 278)
06349         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query, "ITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06350         self.assertEqual(record.rounds[0].alignments[3].hsps[0].match, "I RNT ET+I +++NLDGTG  D+ TG+GFLDHML  L+ HS  DL +   GD   V +D HH  E   IA+G+ +++ +G++ GI+RYG   +PMDE L    LD S RPYL++    S   K+G  DTE+  E+F+A A  AG+TLH+   YG+N HHI+E  +K+ ARAL+  + ID  K   +PS+KG L")
06351         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct, "IERNTTETRIRVAVNLDGTGVYDVKTGVGFLDHMLEQLSRHSLMDLSVAAEGD---VHIDAHHTTEHSGIAIGQAVAKAVGDRKGIQRYGHAYVPMDETLTRVALDFSNRPYLIWKVSFS-RDKIGDMDTELFREWFQAFAMAAGVTLHVECLYGENNHHIVESCYKALARALRAGIEIDPRKRDAVPSTKGTL")
06352         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_start, 7)
06353         self.assertEqual(record.rounds[0].alignments[3].hsps[0].query_end, 200)
06354         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_start, 14)
06355         self.assertEqual(record.rounds[0].alignments[3].hsps[0].sbjct_end, 203)
06356         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query, "ITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06357         self.assertEqual(record.rounds[0].alignments[4].hsps[0].match, "+ R TKET + + INLDGTG A+ STGI FLDHML  L  H  FD+ +   GD     +D HH  ED+A+A+G  + + LG++ GI R+G FT P+DEA V   LD+SGRP+L     +   +++G YDT++ E FF++L   +G+TLH+ +  G N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
06358         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct, "VKRVTKETNVHVKINLDGTGVANSSTGIPFLDHMLDQLASHGLFDVYVKATGDTH---IDDHHSNEDIALAIGTALLQALGDRKGINRFGHFTAPLDEAAVEVILDLSGRPHLSCGLSIP-TERVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGNNSHHIIEATFKAFARALRQATEYDLRRQGTMPSSKGVL")
06359         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query_start, 7)
06360         self.assertEqual(record.rounds[0].alignments[4].hsps[0].query_end, 200)
06361         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct_start, 3)
06362         self.assertEqual(record.rounds[0].alignments[4].hsps[0].sbjct_end, 192)
06363         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06364         self.assertEqual(record.rounds[0].alignments[5].hsps[0].match, "M+R+  + R TKET + + I+LDGTG+ DI+TG+GF DHML  L  H  FDL +   GD   + +D HH IED A+ALG    + LG+K+GI R+G+ T+P+DE+L    +D+SGRPYLV     +    +G YD  MT     +    A + LH++  YG+N HHI+E  FK+ ARAL+ A   D    G +PS+KG L")
06365         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct, "MSRVGRVERTTKETSVLVEIDLDGTGKTDIATGVGFYDHMLDQLGRHGLFDLTVKTDGD---LHIDSHHTIEDTALALGAAFRQALGDKVGIYRFGNCTVPLDESLAQVTVDLSGRPYLVHTEPENMAPMIGEYDVTMTRHILESFVAQAQVALHVHVPYGRNAHHIVECQFKALARALRYASERDPRAAGILPSTKGAL")
06366         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query_start, 1)
06367         self.assertEqual(record.rounds[0].alignments[5].hsps[0].query_end, 200)
06368         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct_start, 1)
06369         self.assertEqual(record.rounds[0].alignments[5].hsps[0].sbjct_end, 197)
06370         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06371         self.assertEqual(record.rounds[0].alignments[6].hsps[0].match, "RI+ + R T ET +++++NLDGTG    +TGI FLDHML  ++ H   DL +   GD E   +D HH  EDV I LG+ +++ LG++ GI R+G+F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF AL  ++ +TLH+ +  G N+HHIIE  FK+ ARA + A+ +D  + G IPSSKGVL")
06372         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct, "RIASVHRITGETNVQVTVNLDGTGICKAATGIPFLDHMLHQISSHGLIDLDVQAKGDWE---IDDHHTNEDVGITLGQALAKALGDRKGIVRFGNFLAPLDEALVQVALDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVALVNHSQMTLHIRQLDGINSHHIIEATFKAFARAARMAIEVDPRRAGTIPSSKGVL")
06373         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query_start, 3)
06374         self.assertEqual(record.rounds[0].alignments[6].hsps[0].query_end, 200)
06375         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct_start, 16)
06376         self.assertEqual(record.rounds[0].alignments[6].hsps[0].sbjct_end, 209)
06377         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06378         self.assertEqual(record.rounds[0].alignments[7].hsps[0].match, "R +H+ RNTKETQI++ + LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +ALG+ +   LG+K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R L+QA+ ++      +PSSKGVL")
06379         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct, "RYAHVVRNTKETQIDVQVWLDREGGSKINTGVGFFDHMLDQIATHGGFRMEINVKGD---LYIDDHHTVEDTGLALGEALKIALGDKRGICRFG-FVLPMDECLARCALDISGRPHLEYKAEFT-YQRVGDLSTEMIEHFFRSLSYTMGVTLHLKTK-GKNDHHRVESLFKAFGRTLRQAIRVEGD---TLPSSKGVL")
06380         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query_start, 3)
06381         self.assertEqual(record.rounds[0].alignments[7].hsps[0].query_end, 200)
06382         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct_start, 167)
06383         self.assertEqual(record.rounds[0].alignments[7].hsps[0].sbjct_end, 355)
06384         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06385         self.assertEqual(record.rounds[0].alignments[8].hsps[0].match, "R + + R TKET + +S+NL G+G   ++TG+ FLDHML  +  H   DL++   GD E   +D HH  EDV I LG+ ++E LG++ GI R+G F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF A+  ++ +TLH+ +  G N+HHIIE  FK+ ARA++ A+ +D  +   IPSSKGVL")
06386         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct, "RAAAVHRVTKETDVRVSLNLMGSGLCHVATGVPFLDHMLHQIASHGLIDLEVNATGDIE---IDDHHTNEDVGITLGQALAEALGDRRGINRFGHFIAPLDEALVQVTLDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVAVVNHSQMTLHIRQLDGINSHHIIEATFKAFARAMRMAIEVDPRRADTIPSSKGVL")
06387         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query_start, 3)
06388         self.assertEqual(record.rounds[0].alignments[8].hsps[0].query_end, 200)
06389         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct_start, 17)
06390         self.assertEqual(record.rounds[0].alignments[8].hsps[0].sbjct_end, 210)
06391         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06392         self.assertEqual(record.rounds[0].alignments[9].hsps[0].match, "R + + R TKET I++ + LD  G  +I TG+GF DHML  +  H  F + +   GD   + +D HH +ED A+ALG+ + + +G+K GI R+G F +PMDE    C LD+SGRP++ F+A      K+G + TE+TE FF++LAF+   TLHLN   G N HH IE +FK+  R L+QA+ I+ +   E+PSSKGVL")
06393         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct, "RFAEVIRQTKETDIKVQVWLDEAGVNEIKTGVGFFDHMLDQIATHGGFRMNVQCKGD---LWIDEHHTVEDTALALGQALKQAVGDKRGIARFG-FVLPMDECKAECALDLSGRPWIKFNACFK-RDKVGDFSTELTEHFFQSLAFSMLATLHLNV-TGNNDHHKIESLFKAFGRTLRQAIRIEGN---EMPSSKGVL")
06394         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query_start, 3)
06395         self.assertEqual(record.rounds[0].alignments[9].hsps[0].query_end, 200)
06396         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct_start, 174)
06397         self.assertEqual(record.rounds[0].alignments[9].hsps[0].sbjct_end, 362)
06398         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVF--------HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06399         self.assertEqual(record.rounds[0].alignments[10].hsps[0].match, "+R + I R T+E+ I + ++LDGTGQ  + TG+ F DHMLT L  H+ FDL +   GD E   ++ HH IED AIALG  + + LG+K GIRR+G   IPMDE L    +D+SGRPY V         H  ++G+     Y T +    F +LA NA I LH+   YG++ HHI E  +K+ ARAL+QAV  D  +V  +PS+KG L")
06400         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct, "SRRARIERRTRESDIVIELDLDGTGQVAVDTGVPFYDHMLTALGSHASFDLTVRATGDVE---IEAHHTIEDTAIALGTALGQALGDKRGIRRFGDAFIPMDETLAHAAVDLSGRPYCVHTGEPDHLQHTTIAGSSV--PYHTVINRHVFESLAANARIALHVRVLYGRDPHHITEAQYKAVARALRQAVEPD-PRVSGVPSTKGAL")
06401         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query_start, 2)
06402         self.assertEqual(record.rounds[0].alignments[10].hsps[0].query_end, 200)
06403         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct_start, 10)
06404         self.assertEqual(record.rounds[0].alignments[10].hsps[0].sbjct_end, 210)
06405         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06406         self.assertEqual(record.rounds[0].alignments[11].hsps[0].match, "R +H+ RNTKETQI++S+ LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +AL + +   L +K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R ++QA+ ++      +PSSKGVL")
06407         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct, "RYAHVVRNTKETQIDVSVWLDREGNSKINTGVGFFDHMLDQIATHGGFRMEITVKGD---LYIDDHHTVEDTGLALREALKLALRDKRGICRFG-FVLPMDECL-ACALDISGRPHLEYKAEFT-YQRVGNLSTEMIEHFFRSLSYTMGVTLHLKTK-GKNDHHRVESLFKAFGRTVRQAIRVEGD---TLPSSKGVL")
06408         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query_start, 3)
06409         self.assertEqual(record.rounds[0].alignments[11].hsps[0].query_end, 200)
06410         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct_start, 167)
06411         self.assertEqual(record.rounds[0].alignments[11].hsps[0].sbjct_end, 354)
06412         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06413         self.assertEqual(record.rounds[0].alignments[12].hsps[0].match, "R S  TR T ET +++ + +DG+G++ ++TG+GFLDHML  +  H   DL++   GD E   +D HH +EDVA+ LG+ + E LG+K GIRR     +PMD+AL T  LD+SGRPY V   +   +  +G   ++    F  +LA +A + +H +   G+N HH  E +FK+ A A++ AV ++    GEIPS+KG L")
06414         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct, "RRSMKTRETLETHVKVDLEIDGSGKSSVNTGLGFLDHMLESVARHGLLDLEVEARGDLE---VDDHHTVEDVALTLGEALREALGDKSGIRRMAHAMVPMDDALATVALDLSGRPYTVLELEFD-DAVIGDVKSQNIGHFIESLAVSAAMNIHASVR-GRNDHHKAEALFKALALAIRDAVRVEH---GEIPSTKGKL")
06415         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query_start, 3)
06416         self.assertEqual(record.rounds[0].alignments[12].hsps[0].query_end, 200)
06417         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct_start, 5)
06418         self.assertEqual(record.rounds[0].alignments[12].hsps[0].sbjct_end, 194)
06419         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query, "RISHITRNTKETQIELSINLDGTG-----QADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06420         self.assertEqual(record.rounds[0].alignments[13].hsps[0].match, "RI+ + R T ET I  +I+LD        + ++STGIGFLDHM T L  H    L++   GD   + +D HH  ED A+ALG+   + LG + GI+RYG    P+DE+L    +DIS RPY + H   +  +K+G   TEM     ++ AF AG+TLH++   G+N HHI E  FK+ A A++ A+S   +   ++PS+KGVL")
06421         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct, "RIASVERTTSETHISCTIDLDHIPGVTEQKINVSTGIGFLDHMFTALAKHGGMSLQLQCKGD---LHIDDHHTAEDCALALGEAFKKALGERKGIKRYGYAYAPLDESLSRAVIDISSRPYFMCHLPFT-REKVGDLSTEMVSHLLQSFAFAAGVTLHIDSIRGENNHHIAESAFKALALAIRMAIS--RTGGDDVPSTKGVL")
06422         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query_start, 3)
06423         self.assertEqual(record.rounds[0].alignments[13].hsps[0].query_end, 200)
06424         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct_start, 4)
06425         self.assertEqual(record.rounds[0].alignments[13].hsps[0].sbjct_end, 200)
06426         self.assertEqual(record.rounds[0].alignments[14].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHML-TLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06427         self.assertEqual(record.rounds[0].alignments[14].hsps[0].match, "M+R ++ITR TKET+IE+ +++D  G+  +ST I F +HML TLLT+ +     I+   D   +  D HH++EDVAI LG  I   LG+K GI+R+    IPMD+ALV   LDIS R     + +L  ++ +GG  TE    FF++ A+N+GITLH+++  G NTHHIIE  FK+   AL +A  I ++   EI S+KG++")
06428         self.assertEqual(record.rounds[0].alignments[14].hsps[0].sbjct, "MSRSANITRETKETKIEVLLDIDRKGEVKVSTPIPFFNHMLITLLTYMNS--TAIVSATDK--LPYDDHHIVEDVAITLGLAIKTALGDKRGIKRFSHQIIPMDDALVLVSLDISNRGMAFVNLNLKRSE-IGGLATENVPHFFQSFAYNSGITLHISQLSGYNTHHIIEASFKALGLALYEATRIVDN---EIRSTKGII")
06429         self.assertEqual(record.rounds[0].alignments[14].hsps[0].query_start, 1)
06430         self.assertEqual(record.rounds[0].alignments[14].hsps[0].query_end, 200)
06431         self.assertEqual(record.rounds[0].alignments[14].hsps[0].sbjct_start, 1)
06432         self.assertEqual(record.rounds[0].alignments[14].hsps[0].sbjct_end, 193)
06433         self.assertEqual(record.rounds[0].alignments[15].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06434         self.assertEqual(record.rounds[0].alignments[15].hsps[0].match, "R ++I+R TKET I + ++LDGTG++ +S+GIGFLDHMLT L  HS FDL++   GD     +D HH  ED A+ LG+     LG++ GI R+GS  +P+DEAL    +DIS R +   +  L     +G   +EM   FF + A  A  TLH++   G+N HH  E  FK+ A AL+ AV  D +    +PS+KGVL")
06435         self.assertEqual(record.rounds[0].alignments[15].hsps[0].sbjct, "REANISRVTKETSISVKLSLDGTGKSKVSSGIGFLDHMLTALAKHSRFDLELDCKGD---TWIDDHHTTEDCALTLGEAFDVALGDRAGIARFGSACVPLDEALSRAIVDISSRAHSEINLQLV-RPSVGELSSEMITHFFESFASAALXTLHVDVLRGRNDHHRAEASFKALAVALRTAVKHDAT--AGVPSTKGVL")
06436         self.assertEqual(record.rounds[0].alignments[15].hsps[0].query_start, 3)
06437         self.assertEqual(record.rounds[0].alignments[15].hsps[0].query_end, 200)
06438         self.assertEqual(record.rounds[0].alignments[15].hsps[0].sbjct_start, 260)
06439         self.assertEqual(record.rounds[0].alignments[15].hsps[0].sbjct_end, 451)
06440         self.assertEqual(record.rounds[0].alignments[16].hsps[0].query, "RISHITRNTKETQIELSINLD-----------------------GTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06441         self.assertEqual(record.rounds[0].alignments[16].hsps[0].match, "R + + RNT ET+I ++I LD                       G     + TGIGFLDHM   L  H+ + L++   GD   + +D HH  ED AIALG    + +GN  G++R+G    P+DEAL    +D+SGRPY V    L   +K+G    EM      + +  AGITLH+   YG N HH  E  FKS A A++ A S+  S   E+PS+KGVL")
06442         self.assertEqual(record.rounds[0].alignments[16].hsps[0].sbjct, "RRAFVERNTNETKISVAIALDKAPLPEESNFIDELITSKHANQKGEQVIQVDTGIGFLDHMYHALAKHAGWSLRLYSRGD---LIIDDHHTAEDTAIALGIAFKQAMGNFAGVKRFGHAYCPLDEALSRSVVDLSGRPYAVIDLGLK-REKVGELSCEMIPHLLYSFSVAAGITLHVTCLYGSNDHHRAESAFKSLAVAMRAATSLTGS--SEVPSTKGVL")
06443         self.assertEqual(record.rounds[0].alignments[16].hsps[0].query_start, 3)
06444         self.assertEqual(record.rounds[0].alignments[16].hsps[0].query_end, 200)
06445         self.assertEqual(record.rounds[0].alignments[16].hsps[0].sbjct_start, 2)
06446         self.assertEqual(record.rounds[0].alignments[16].hsps[0].sbjct_end, 216)
06447         self.assertEqual(record.rounds[0].alignments[17].hsps[0].query, "MTRISHITRNTKETQIELSINLDG---------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06448         self.assertEqual(record.rounds[0].alignments[17].hsps[0].match, "M+R + I R T ET+I++++NLDG                           +   ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  EDV I+LG    + LG   G++R+G    P+DEAL    +D+S RP+ V    L   +K+G   TEM      + A   GIT+H++   G N HH  E  FK+ A A+K+A+S  ++   +IPS+KGVL")
06449         self.assertEqual(record.rounds[0].alignments[17].hsps[0].sbjct, "MSREALINRITNETKIQIALNLDGGKLELKESIFPNQSIIIDEHHAKQVSGSQYINVQTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTAEDVGISLGMAFKQALGQIKGVKRFGHGFAPLDEALSRAVVDLSNRPFAVIELGLK-REKIGDLSTEMIPHVLESFAGAVGITIHVDCLRGFNDHHRAESAFKALAIAIKEAIS--KTGKNDIPSTKGVL")
06450         self.assertEqual(record.rounds[0].alignments[17].hsps[0].query_start, 1)
06451         self.assertEqual(record.rounds[0].alignments[17].hsps[0].query_end, 200)
06452         self.assertEqual(record.rounds[0].alignments[17].hsps[0].sbjct_start, 1)
06453         self.assertEqual(record.rounds[0].alignments[17].hsps[0].sbjct_end, 221)
06454         self.assertEqual(record.rounds[0].alignments[18].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKG")
06455         self.assertEqual(record.rounds[0].alignments[18].hsps[0].match, "RI  + R TKET I L IN+DGTG+  I TGI F DH+L     H  FDL +   GD E   +D HH +EDV I LG  +++    K  I R+G   IPMD+A  T  +D+SGR Y V + +    + +G   TE    FF ++A    + +H  E  G+N HH  E +FK+   AL  A  IDE K   + S+KG")
06456         self.assertEqual(record.rounds[0].alignments[18].hsps[0].sbjct, "RIFEVMRETKETNIYLKINIDGTGKYKIDTGIPFFDHLLASFAKHGCFDLIVKARGDLE---IDDHHTVEDVGICLGLALNQI--EKRNIFRFGWAIIPMDDARATVAIDLSGRSYCVGNYE-PKREFVGDLATENINHFFESVASYGMLNIHY-EVIGKNEHHKAEALFKAFGVALDLATKIDERK--GVISTKG")
06457         self.assertEqual(record.rounds[0].alignments[18].hsps[0].query_start, 3)
06458         self.assertEqual(record.rounds[0].alignments[18].hsps[0].query_end, 198)
06459         self.assertEqual(record.rounds[0].alignments[18].hsps[0].sbjct_start, 7)
06460         self.assertEqual(record.rounds[0].alignments[18].hsps[0].sbjct_end, 193)
06461         self.assertEqual(record.rounds[0].alignments[19].hsps[0].query, "RISHITRNTKETQIELSINLDG-------------------TGQA------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06462         self.assertEqual(record.rounds[0].alignments[19].hsps[0].match, "R S I R T ET+I+++++LDG                     QA       ++TGIGFLDHML  L  H  + + I   GD   + +D HH  ED  IALG    E LG+  GI+R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM      + A  A +T+H++   G N HH  E  FK+ A A+K+A+S   +   +IPS+KGVL")
06463         self.assertEqual(record.rounds[0].alignments[19].hsps[0].sbjct, "RSSLIKRITNETKIQIALSLDGGPVSLAQSLFKDKDYSAEHAAQATSSQFISVNTGIGFLDHMLHALAKHGGWSVIIECVGD---LHIDDHHSAEDTGIALGMAFKEALGHVRGIKRFGSGFAPLDEALSRAVIDMSNRPYAVVDLGLK-REKIGDLSCEMIPHVLESFAQGAHVTMHVDCLRGFNDHHRAESAFKALAIAIKEAIS--SNGTDDIPSTKGVL")
06464         self.assertEqual(record.rounds[0].alignments[19].hsps[0].query_start, 3)
06465         self.assertEqual(record.rounds[0].alignments[19].hsps[0].query_end, 200)
06466         self.assertEqual(record.rounds[0].alignments[19].hsps[0].sbjct_start, 7)
06467         self.assertEqual(record.rounds[0].alignments[19].hsps[0].sbjct_end, 223)
06468         self.assertEqual(record.rounds[0].alignments[20].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------TGQA------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06469         self.assertEqual(record.rounds[0].alignments[20].hsps[0].match, "R + I+R T ET+I+++I+L+G                    QA      DI TG+GFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E +G   G++R+G+   P+DEAL    +D+S RP+ V    L   + +G   TEM   F  + A  A ITLH++   G N HH  E  FK+ A A+++A+S   +   ++PS+KGVL")
06470         self.assertEqual(record.rounds[0].alignments[20].hsps[0].sbjct, "RKAFISRITNETKIQIAISLNGGYIQIKDSILPAKKDDDVASQATQSQVIDIHTGVGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEAMGAVRGVKRFGTGFAPLDEALSRAVVDLSNRPFAVIDLGLK-REMIGDLSTEMIPHFLESFAEAARITLHVDCLRGFNDHHRSESAFKALAVAIREAIS--SNGTNDVPSTKGVL")
06471         self.assertEqual(record.rounds[0].alignments[20].hsps[0].query_start, 3)
06472         self.assertEqual(record.rounds[0].alignments[20].hsps[0].query_end, 200)
06473         self.assertEqual(record.rounds[0].alignments[20].hsps[0].sbjct_start, 16)
06474         self.assertEqual(record.rounds[0].alignments[20].hsps[0].sbjct_end, 231)
06475         self.assertEqual(record.rounds[0].alignments[21].hsps[0].query, "ISHITRNTKETQIELSINLDG-----------------TGQA-DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06476         self.assertEqual(record.rounds[0].alignments[21].hsps[0].match, "++ + R T+ET I+L+++LDG                  GQ   + TG+GFLDHMLT L  H  + L +   GD   + +D HH +ED  IALG+   E LG+  GI+R+G    P+DEAL    +D S RP+ V    L   +++G   TEM   F  + A    IT+H++   G N HH  E  FK+ A A+++A +   +   ++PS+KGVL")
06477         self.assertEqual(record.rounds[0].alignments[21].hsps[0].sbjct, "MAFVKRVTQETNIQLALDLDGGSVSVRESILGKEYASGDGQTIHVHTGVGFLDHMLTALAKHGGWSLILECIGD---LHIDDHHTVEDCGIALGQAFKEALGSVRGIKRFGHGFAPLDEALSRAVVDFSNRPFAVVELGLK-RERIGQLSTEMIPHFLESFATEGRITMHVDCLRGTNDHHRSESGFKALAIAIREART--PTGRDDVPSTKGVL")
06478         self.assertEqual(record.rounds[0].alignments[21].hsps[0].query_start, 4)
06479         self.assertEqual(record.rounds[0].alignments[21].hsps[0].query_end, 200)
06480         self.assertEqual(record.rounds[0].alignments[21].hsps[0].sbjct_start, 1)
06481         self.assertEqual(record.rounds[0].alignments[21].hsps[0].sbjct_end, 209)
06482         self.assertEqual(record.rounds[0].alignments[22].hsps[0].query, "ITRNTKETQIELSINLDGTGQA------------------------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06483         self.assertEqual(record.rounds[0].alignments[22].hsps[0].match, "+ R T ET+I+++I+L G   A                        ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E LG   G++R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM   F  + A  + ITLH++   G+N HH  E  FK+ A A+++A S   +   ++PS+KGVL")
06484         self.assertEqual(record.rounds[0].alignments[22].hsps[0].sbjct, "VKRITNETKIQIAISLKGGPLAIEHSIFPEKEAEAVAEQATQSQVINVHTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEALGAVRGVKRFGSGFAPLDEALSRAVVDLSNRPYAVVELGLQ-REKVGDLSCEMIPHFLESFAEASRITLHVDCLRGKNDHHRSESAFKALAVAIREATS--PNGTNDVPSTKGVL")
06485         self.assertEqual(record.rounds[0].alignments[22].hsps[0].query_start, 7)
06486         self.assertEqual(record.rounds[0].alignments[22].hsps[0].query_end, 200)
06487         self.assertEqual(record.rounds[0].alignments[22].hsps[0].sbjct_start, 8)
06488         self.assertEqual(record.rounds[0].alignments[22].hsps[0].sbjct_end, 219)
06489         self.assertEqual(record.rounds[0].alignments[23].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALK")
06490         self.assertEqual(record.rounds[0].alignments[23].hsps[0].match, "R + ++R+T ET I++++++DG                        +    I+TGIGFLDHML  L  H+ + + +   GD   + +D HH  ED  IA+G   ++ LG   G+ R+G    P+DEAL    +D+S RPY V    L   +KLG    EM     ++ A  A ITLH++   G N HH  E  FK+ A A++")
06491         self.assertEqual(record.rounds[0].alignments[23].hsps[0].sbjct, "RAAALSRDTNETSIQIALSIDGGELPQDADPRLLEASSAHASQTSKSQVISINTGIGFLDHMLHALAKHAGWSMALNCKGD---LHIDDHHTAEDCCIAVGTTFAKALGALTGVARFGYAYAPLDEALSRAVVDLSNRPYTVVDLGLK-REKLGELSCEMIPHCLQSFAQAARITLHVDCLRGDNDHHRAESAFKALAVAVR")
06492         self.assertEqual(record.rounds[0].alignments[23].hsps[0].query_start, 3)
06493         self.assertEqual(record.rounds[0].alignments[23].hsps[0].query_end, 180)
06494         self.assertEqual(record.rounds[0].alignments[23].hsps[0].sbjct_start, 8)
06495         self.assertEqual(record.rounds[0].alignments[23].hsps[0].sbjct_end, 205)
06496         self.assertEqual(record.rounds[0].alignments[24].hsps[0].query, "GDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQK---LGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDES")
06497         self.assertEqual(record.rounds[0].alignments[24].hsps[0].match, "G+   +G  PH  + +++   G  +S  LG+   +      T+   + L T DL+   RPY+ + A ++ N K      YD     +++R +     + L+  +   Q+  HI E    S  R  KQA S +E+")
06498         self.assertEqual(record.rounds[0].alignments[24].hsps[0].sbjct, "GNLHQLGEKPHRAMVELSKTYGPLMSLKLGSVTTVVATSVETVR--DVLKTYDLECCSRPYMTYPARITYNLKDLVFSPYD-----KYWRQVRKLTVVELYTAKRV-QSFRHIREEEVASFVRFNKQAASSEET")
06499         self.assertEqual(record.rounds[0].alignments[24].hsps[0].query_start, 58)
06500         self.assertEqual(record.rounds[0].alignments[24].hsps[0].query_end, 188)
06501         self.assertEqual(record.rounds[0].alignments[24].hsps[0].sbjct_start, 40)
06502         self.assertEqual(record.rounds[0].alignments[24].hsps[0].sbjct_end, 165)
06503         self.assertEqual(record.rounds[0].alignments[25].hsps[0].query, "HSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLG")
06504         self.assertEqual(record.rounds[0].alignments[25].hsps[0].match, "HS+    I+G G H   G DPHH   D  +  G  +  D+G   G")
06505         self.assertEqual(record.rounds[0].alignments[25].hsps[0].sbjct, "HSEVAFVIVGSGPH---GADPHHGYSDRELREGDIVVVDIGGTYG")
06506         self.assertEqual(record.rounds[0].alignments[25].hsps[0].query_start, 47)
06507         self.assertEqual(record.rounds[0].alignments[25].hsps[0].query_end, 91)
06508         self.assertEqual(record.rounds[0].alignments[25].hsps[0].sbjct_start, 195)
06509         self.assertEqual(record.rounds[0].alignments[25].hsps[0].sbjct_end, 236)
06510         self.assertEqual(record.rounds[0].alignments[26].hsps[0].query, "PYLVF---HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYG")
06511         self.assertEqual(record.rounds[0].alignments[26].hsps[0].match, "PYL+    H D+ GN +  G+  +M +E    L FN  I L  +  YG")
06512         self.assertEqual(record.rounds[0].alignments[26].hsps[0].sbjct, "PYLMLKGNHQDMEGNDRYEGFCVDMLKELAEILRFNYKIRLVGDGVYG")
06513         self.assertEqual(record.rounds[0].alignments[26].hsps[0].query_start, 117)
06514         self.assertEqual(record.rounds[0].alignments[26].hsps[0].query_end, 161)
06515         self.assertEqual(record.rounds[0].alignments[26].hsps[0].sbjct_start, 427)
06516         self.assertEqual(record.rounds[0].alignments[26].hsps[0].sbjct_end, 474)
06517         self.assertEqual(record.rounds[0].alignments[27].hsps[0].query, "GKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLG---GYDTEMTEEFFRA")
06518         self.assertEqual(record.rounds[0].alignments[27].hsps[0].match, "GK ISED     GI + G     +D   VT + D  G    +  + L  N++ G    YD E T EF RA")
06519         self.assertEqual(record.rounds[0].alignments[27].hsps[0].sbjct, "GKEISEDKWEDFGISQRGEEKFFIDAEKVTVEFD--GFQAKIQMSSLYKNKQCGLCGHYDGEKTNEFRRA")
06520         self.assertEqual(record.rounds[0].alignments[27].hsps[0].query_start, 79)
06521         self.assertEqual(record.rounds[0].alignments[27].hsps[0].query_end, 145)
06522         self.assertEqual(record.rounds[0].alignments[27].hsps[0].sbjct_start, 1436)
06523         self.assertEqual(record.rounds[0].alignments[27].hsps[0].sbjct_end, 1503)
06524         self.assertEqual(record.rounds[0].alignments[28].hsps[0].query, "RYGSFTIPMDEAL-----VTCDLDISGRPYLVFHADLSGNQKL--GGYDTEMTEEFFRALAFNAG")
06525         self.assertEqual(record.rounds[0].alignments[28].hsps[0].match, "R GS ++P++E          D DI G  Y   H D+  NQ+L  G  D  +++   +   FN+G")
06526         self.assertEqual(record.rounds[0].alignments[28].hsps[0].sbjct, "RNGSNSLPLNEKSNEGESTNVDQDIEGDEYHRLHEDILKNQELDDGSLDDLLSQIIPKITNFNSG")
06527         self.assertEqual(record.rounds[0].alignments[28].hsps[0].query_start, 94)
06528         self.assertEqual(record.rounds[0].alignments[28].hsps[0].query_end, 151)
06529         self.assertEqual(record.rounds[0].alignments[28].hsps[0].sbjct_start, 1141)
06530         self.assertEqual(record.rounds[0].alignments[28].hsps[0].sbjct_end, 1205)
06531         self.assertEqual(record.rounds[0].alignments[29].hsps[0].query, "PYLVF---HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYG")
06532         self.assertEqual(record.rounds[0].alignments[29].hsps[0].match, "PYL+    H ++ GN +  G+  +M +E    L FN  I L  +  YG")
06533         self.assertEqual(record.rounds[0].alignments[29].hsps[0].sbjct, "PYLMLKGNHQEMEGNDRYEGFCVDMLKELAEILRFNYKIRLVGDGVYG")
06534         self.assertEqual(record.rounds[0].alignments[29].hsps[0].query_start, 117)
06535         self.assertEqual(record.rounds[0].alignments[29].hsps[0].query_end, 161)
06536         self.assertEqual(record.rounds[0].alignments[29].hsps[0].sbjct_start, 427)
06537         self.assertEqual(record.rounds[0].alignments[29].hsps[0].sbjct_end, 474)
06538         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06539         self.assertEqual(record.rounds[1].alignments[0].hsps[0].match, "TR+  + R TKET + + INLDG+G AD STGI FLDHML  L  H  FD+ +   GD   V +D HH  EDVA+A+G  + + LG++ GI R+G F+ P+DEAL+   LD+SGRP+L ++ D+   Q++G YDT++ E F +++   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
06540         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct, "TRVGEVKRVTKETNVSVKINLDGSGVADSSTGIPFLDHMLDQLASHGLFDVHVKATGD---VHIDDHHTNEDVALAIGTALLQALGDRKGINRFGDFSAPLDEALIHVSLDLSGRPHLSYNLDIP-TQRVGTYDTQVVEHFLQSIVNTSGMTLHIRQLAGRNSHHIIEATFKAFARALRQATEYDPRRRGSVPSSKGVL")
06541         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_start, 2)
06542         self.assertEqual(record.rounds[1].alignments[0].hsps[0].query_end, 200)
06543         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_start, 84)
06544         self.assertEqual(record.rounds[1].alignments[0].hsps[0].sbjct_end, 278)
06545         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06546         self.assertEqual(record.rounds[1].alignments[1].hsps[0].match, "RI  + R TKET + + INLDGTG AD S+GI FLDHML  L  H  FD+ +   GD   V +D HH  ED+A+A+G  + + LG + GI R+G FT P+DEAL+   LD+SGRPYL ++ ++   Q++G YDT++ E FF++L   +G+TLH+ +  G+N+HHIIE  FK+ ARAL+QA   D  + G IPSSKGVL")
06547         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct, "RIGEVKRVTKETNVSVKINLDGTGVADSSSGIPFLDHMLDQLASHGLFDVHVRATGD---VHIDDHHTNEDIALAIGTALLKALGERKGINRFGDFTAPLDEALIHVSLDLSGRPYLGYNLEIP-TQRVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGENSHHIIEATFKAFARALRQATETDPRRGGTIPSSKGVL")
06548         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_start, 3)
06549         self.assertEqual(record.rounds[1].alignments[1].hsps[0].query_end, 200)
06550         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_start, 74)
06551         self.assertEqual(record.rounds[1].alignments[1].hsps[0].sbjct_end, 267)
06552         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06553         self.assertEqual(record.rounds[1].alignments[2].hsps[0].match, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06554         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06555         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_start, 1)
06556         self.assertEqual(record.rounds[1].alignments[2].hsps[0].query_end, 200)
06557         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_start, 1)
06558         self.assertEqual(record.rounds[1].alignments[2].hsps[0].sbjct_end, 200)
06559         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06560         self.assertEqual(record.rounds[1].alignments[3].hsps[0].match, "R + + R TKET + +S+NL G+G   ++TG+ FLDHML  +  H   DL++   GD E   +D HH  EDV I LG+ ++E LG++ GI R+G F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF A+  ++ +TLH+ +  G N+HHIIE  FK+ ARA++ A+ +D  +   IPSSKGVL")
06561         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct, "RAAAVHRVTKETDVRVSLNLMGSGLCHVATGVPFLDHMLHQIASHGLIDLEVNATGDIE---IDDHHTNEDVGITLGQALAEALGDRRGINRFGHFIAPLDEALVQVTLDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVAVVNHSQMTLHIRQLDGINSHHIIEATFKAFARAMRMAIEVDPRRADTIPSSKGVL")
06562         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_start, 3)
06563         self.assertEqual(record.rounds[1].alignments[3].hsps[0].query_end, 200)
06564         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_start, 17)
06565         self.assertEqual(record.rounds[1].alignments[3].hsps[0].sbjct_end, 210)
06566         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06567         self.assertEqual(record.rounds[1].alignments[4].hsps[0].match, "RI+ + R T ET +++++NLDGTG    +TGI FLDHML  ++ H   DL +   GD E   +D HH  EDV I LG+ +++ LG++ GI R+G+F  P+DEALV   LD SGRP+L +   +   +++G YDT++  EFF AL  ++ +TLH+ +  G N+HHIIE  FK+ ARA + A+ +D  + G IPSSKGVL")
06568         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct, "RIASVHRITGETNVQVTVNLDGTGICKAATGIPFLDHMLHQISSHGLIDLDVQAKGDWE---IDDHHTNEDVGITLGQALAKALGDRKGIVRFGNFLAPLDEALVQVALDFSGRPHLSYGLQIP-TERVGTYDTQLVREFFVALVNHSQMTLHIRQLDGINSHHIIEATFKAFARAARMAIEVDPRRAGTIPSSKGVL")
06569         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query_start, 3)
06570         self.assertEqual(record.rounds[1].alignments[4].hsps[0].query_end, 200)
06571         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct_start, 16)
06572         self.assertEqual(record.rounds[1].alignments[4].hsps[0].sbjct_end, 209)
06573         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query, "SHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06574         self.assertEqual(record.rounds[1].alignments[5].hsps[0].match, "  + R TKET + + INLDGTG A+ STGI FLDHML  L  H  FD+ +   GD     +D HH  ED+A+A+G  + + LG++ GI R+G FT P+DEA V   LD+SGRP+L     +   +++G YDT++ E FF++L   +G+TLH+ +  G N+HHIIE  FK+ ARAL+QA   D  + G +PSSKGVL")
06575         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct, "GEVKRVTKETNVHVKINLDGTGVANSSTGIPFLDHMLDQLASHGLFDVYVKATGDT---HIDDHHSNEDIALAIGTALLQALGDRKGINRFGHFTAPLDEAAVEVILDLSGRPHLSCGLSIP-TERVGTYDTQLVEHFFQSLVNTSGMTLHIRQLAGNNSHHIIEATFKAFARALRQATEYDLRRQGTMPSSKGVL")
06576         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query_start, 5)
06577         self.assertEqual(record.rounds[1].alignments[5].hsps[0].query_end, 200)
06578         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct_start, 1)
06579         self.assertEqual(record.rounds[1].alignments[5].hsps[0].sbjct_end, 192)
06580         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06581         self.assertEqual(record.rounds[1].alignments[6].hsps[0].match, "M+R+  + R TKET + + I+LDGTG+ DI+TG+GF DHML  L  H  FDL +   GD   + +D HH IED A+ALG    + LG+K+GI R+G+ T+P+DE+L    +D+SGRPYLV     +    +G YD  MT     +    A + LH++  YG+N HHI+E  FK+ ARAL+ A   D    G +PS+KG L")
06582         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct, "MSRVGRVERTTKETSVLVEIDLDGTGKTDIATGVGFYDHMLDQLGRHGLFDLTVKTDGD---LHIDSHHTIEDTALALGAAFRQALGDKVGIYRFGNCTVPLDESLAQVTVDLSGRPYLVHTEPENMAPMIGEYDVTMTRHILESFVAQAQVALHVHVPYGRNAHHIVECQFKALARALRYASERDPRAAGILPSTKGAL")
06583         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query_start, 1)
06584         self.assertEqual(record.rounds[1].alignments[6].hsps[0].query_end, 200)
06585         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct_start, 1)
06586         self.assertEqual(record.rounds[1].alignments[6].hsps[0].sbjct_end, 197)
06587         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query, "SHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06588         self.assertEqual(record.rounds[1].alignments[7].hsps[0].match, "+ + R T ET+I+++I+L G                        +   ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E LG   G++R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM   F  + A  + ITLH++   G+N HH  E  FK+ A A+++A S   +   ++PS+KGVL")
06589         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct, "ALVKRITNETKIQIAISLKGGPLAIEHSIFPEKEAEAVAEQATQSQVINVHTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEALGAVRGVKRFGSGFAPLDEALSRAVVDLSNRPYAVVELGL-QREKVGDLSCEMIPHFLESFAEASRITLHVDCLRGKNDHHRSESAFKALAVAIREATS--PNGTNDVPSTKGVL")
06590         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query_start, 5)
06591         self.assertEqual(record.rounds[1].alignments[7].hsps[0].query_end, 200)
06592         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct_start, 6)
06593         self.assertEqual(record.rounds[1].alignments[7].hsps[0].sbjct_end, 219)
06594         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query, "MTRISHITRNTKETQIELSINLDG---------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06595         self.assertEqual(record.rounds[1].alignments[8].hsps[0].match, "M+R + I R T ET+I++++NLDG                           +   ++ TGIGFLDHM+  L  HS + L +   GD   + +D HH  EDV I+LG    + LG   G++R+G    P+DEAL    +D+S RP+ V    L   +K+G   TEM      + A   GIT+H++   G N HH  E  FK+ A A+K+A+S  ++   +IPS+KGVL")
06596         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct, "MSREALINRITNETKIQIALNLDGGKLELKESIFPNQSIIIDEHHAKQVSGSQYINVQTGIGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTAEDVGISLGMAFKQALGQIKGVKRFGHGFAPLDEALSRAVVDLSNRPFAVIELGLK-REKIGDLSTEMIPHVLESFAGAVGITIHVDCLRGFNDHHRAESAFKALAIAIKEAIS--KTGKNDIPSTKGVL")
06597         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query_start, 1)
06598         self.assertEqual(record.rounds[1].alignments[8].hsps[0].query_end, 200)
06599         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct_start, 1)
06600         self.assertEqual(record.rounds[1].alignments[8].hsps[0].sbjct_end, 221)
06601         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06602         self.assertEqual(record.rounds[1].alignments[9].hsps[0].match, "R + I+R T ET+I+++I+L+G                        +   DI TG+GFLDHM+  L  HS + L +   GD   + +D HH  ED  IALG+   E +G   G++R+G+   P+DEAL    +D+S RP+ V    L   + +G   TEM   F  + A  A ITLH++   G N HH  E  FK+ A A+++A+S   +   ++PS+KGVL")
06603         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct, "RKAFISRITNETKIQIAISLNGGYIQIKDSILPAKKDDDVASQATQSQVIDIHTGVGFLDHMIHALAKHSGWSLIVECIGD---LHIDDHHTTEDCGIALGQAFKEAMGAVRGVKRFGTGFAPLDEALSRAVVDLSNRPFAVIDLGLK-REMIGDLSTEMIPHFLESFAEAARITLHVDCLRGFNDHHRSESAFKALAVAIREAIS--SNGTNDVPSTKGVL")
06604         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query_start, 3)
06605         self.assertEqual(record.rounds[1].alignments[9].hsps[0].query_end, 200)
06606         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct_start, 16)
06607         self.assertEqual(record.rounds[1].alignments[9].hsps[0].sbjct_end, 231)
06608         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query, "SHITRNTKETQIELSINLDGTGQA------------------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06609         self.assertEqual(record.rounds[1].alignments[10].hsps[0].match, "+ + R T+ET I+L+++LDG   +                   + TG+GFLDHMLT L  H  + L +   GD   + +D HH +ED  IALG+   E LG+  GI+R+G    P+DEAL    +D S RP+ V    L   +++G   TEM   F  + A    IT+H++   G N HH  E  FK+ A A+++A     +   ++PS+KGVL")
06610         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct, "AFVKRVTQETNIQLALDLDGGSVSVRESILGKEYASGDGQTIHVHTGVGFLDHMLTALAKHGGWSLILECIGD---LHIDDHHTVEDCGIALGQAFKEALGSVRGIKRFGHGFAPLDEALSRAVVDFSNRPFAVVELGLK-RERIGQLSTEMIPHFLESFATEGRITMHVDCLRGTNDHHRSESGFKALAIAIREA--RTPTGRDDVPSTKGVL")
06611         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query_start, 5)
06612         self.assertEqual(record.rounds[1].alignments[10].hsps[0].query_end, 200)
06613         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct_start, 2)
06614         self.assertEqual(record.rounds[1].alignments[10].hsps[0].sbjct_end, 209)
06615         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06616         self.assertEqual(record.rounds[1].alignments[11].hsps[0].match, "R +H+ RNTKETQI++ + LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +ALG+ +   LG+K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R L+QA+ ++      +PSSKGVL")
06617         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct, "RYAHVVRNTKETQIDVQVWLDREGGSKINTGVGFFDHMLDQIATHGGFRMEINVKGD---LYIDDHHTVEDTGLALGEALKIALGDKRGICRFG-FVLPMDECLARCALDISGRPHLEYKAEFT-YQRVGDLSTEMIEHFFRSLSYTMGVTLHLKT-KGKNDHHRVESLFKAFGRTLRQAIRVEG---DTLPSSKGVL")
06618         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query_start, 3)
06619         self.assertEqual(record.rounds[1].alignments[11].hsps[0].query_end, 200)
06620         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct_start, 167)
06621         self.assertEqual(record.rounds[1].alignments[11].hsps[0].sbjct_end, 355)
06622         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query, "SHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06623         self.assertEqual(record.rounds[1].alignments[12].hsps[0].match, "+ I RNT ET+I +++NLDGTG  D+ TG+GFLDHML  L+ HS  DL +   GD   V +D HH  E   IA+G+ +++ +G++ GI+RYG   +PMDE L    LD S RPYL++    S   K+G  DTE+  E+F+A A  AG+TLH+   YG+N HHI+E  +K+ ARAL+  + ID  K   +PS+KG L")
06624         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct, "ASIERNTTETRIRVAVNLDGTGVYDVKTGVGFLDHMLEQLSRHSLMDLSVAAEGD---VHIDAHHTTEHSGIAIGQAVAKAVGDRKGIQRYGHAYVPMDETLTRVALDFSNRPYLIWKVSFS-RDKIGDMDTELFREWFQAFAMAAGVTLHVECLYGENNHHIVESCYKALARALRAGIEIDPRKRDAVPSTKGTL")
06625         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query_start, 5)
06626         self.assertEqual(record.rounds[1].alignments[12].hsps[0].query_end, 200)
06627         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct_start, 12)
06628         self.assertEqual(record.rounds[1].alignments[12].hsps[0].sbjct_end, 203)
06629         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query, "RISHITRNTKETQIELSINLDG-----TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06630         self.assertEqual(record.rounds[1].alignments[13].hsps[0].match, "RI+ + R T ET I  +I+LD        + ++STGIGFLDHM T L  H    L++   GD   + +D HH  ED A+ALG+   + LG + GI+RYG    P+DE+L    +DIS RPY + H   +  +K+G   TEM     ++ AF AG+TLH++   G+N HHI E  FK+ A A++ A+S   +   ++PS+KGVL")
06631         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct, "RIASVERTTSETHISCTIDLDHIPGVTEQKINVSTGIGFLDHMFTALAKHGGMSLQLQCKGD---LHIDDHHTAEDCALALGEAFKKALGERKGIKRYGYAYAPLDESLSRAVIDISSRPYFMCHLPFT-REKVGDLSTEMVSHLLQSFAFAAGVTLHIDSIRGENNHHIAESAFKALALAIRMAIS--RTGGDDVPSTKGVL")
06632         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query_start, 3)
06633         self.assertEqual(record.rounds[1].alignments[13].hsps[0].query_end, 200)
06634         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct_start, 4)
06635         self.assertEqual(record.rounds[1].alignments[13].hsps[0].sbjct_end, 200)
06636         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQA-------------------------DISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06637         self.assertEqual(record.rounds[1].alignments[14].hsps[0].match, "R S I R T ET+I+++++LDG   +                          ++TGIGFLDHML  L  H  + + I   GD   + +D HH  ED  IALG    E LG+  GI+R+GS   P+DEAL    +D+S RPY V    L   +K+G    EM      + A  A +T+H++   G N HH  E  FK+ A A+K+A+S   +   +IPS+KGVL")
06638         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct, "RSSLIKRITNETKIQIALSLDGGPVSLAQSLFKDKDYSAEHAAQATSSQFISVNTGIGFLDHMLHALAKHGGWSVIIECVGD---LHIDDHHSAEDTGIALGMAFKEALGHVRGIKRFGSGFAPLDEALSRAVIDMSNRPYAVVDLGLK-REKIGDLSCEMIPHVLESFAQGAHVTMHVDCLRGFNDHHRAESAFKALAIAIKEAIS--SNGTDDIPSTKGVL")
06639         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query_start, 3)
06640         self.assertEqual(record.rounds[1].alignments[14].hsps[0].query_end, 200)
06641         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct_start, 7)
06642         self.assertEqual(record.rounds[1].alignments[14].hsps[0].sbjct_end, 223)
06643         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06644         self.assertEqual(record.rounds[1].alignments[15].hsps[0].match, "R + + R TKET I++ + LD  G  +I TG+GF DHML  +  H  F + +   GD   + +D HH +ED A+ALG+ + + +G+K GI R+G F +PMDE    C LD+SGRP++ F+A      K+G + TE+TE FF++LAF+   TLHLN   G N HH IE +FK+  R L+QA+ I+ +   E+PSSKGVL")
06645         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct, "RFAEVIRQTKETDIKVQVWLDEAGVNEIKTGVGFFDHMLDQIATHGGFRMNVQCKGD---LWIDEHHTVEDTALALGQALKQAVGDKRGIARFG-FVLPMDECKAECALDLSGRPWIKFNACFK-RDKVGDFSTELTEHFFQSLAFSMLATLHLNV-TGNNDHHKIESLFKAFGRTLRQAIRIEGN---EMPSSKGVL")
06646         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query_start, 3)
06647         self.assertEqual(record.rounds[1].alignments[15].hsps[0].query_end, 200)
06648         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct_start, 174)
06649         self.assertEqual(record.rounds[1].alignments[15].hsps[0].sbjct_end, 362)
06650         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGI-TLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06651         self.assertEqual(record.rounds[1].alignments[16].hsps[0].match, "R ++I+R TKET I + ++LDGTG++ +S+GIGFLDHMLT L  HS FDL++   GD     +D HH  ED A+ LG+     LG++ GI R+GS  +P+DEAL    +DIS R +   +  L     +G   +EM   FF + A  A + TLH++   G+N HH  E  FK+ A AL+ AV  D +    +PS+KGVL")
06652         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct, "REANISRVTKETSISVKLSLDGTGKSKVSSGIGFLDHMLTALAKHSRFDLELDCKGDT---WIDDHHTTEDCALTLGEAFDVALGDRAGIARFGSACVPLDEALSRAIVDISSRAHSEINLQLV-RPSVGELSSEMITHFFESFASAA-LXTLHVDVLRGRNDHHRAEASFKALAVALRTAVKHDAT--AGVPSTKGVL")
06653         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query_start, 3)
06654         self.assertEqual(record.rounds[1].alignments[16].hsps[0].query_end, 200)
06655         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct_start, 260)
06656         self.assertEqual(record.rounds[1].alignments[16].hsps[0].sbjct_end, 451)
06657         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query, "RISHITRNTKETQIELSINLD-----------------------GTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06658         self.assertEqual(record.rounds[1].alignments[17].hsps[0].match, "R + + RNT ET+I ++I LD                       G     + TGIGFLDHM   L  H+ + L++   GD   + +D HH  ED AIALG    + +GN  G++R+G    P+DEAL    +D+SGRPY V    L   +K+G    EM      + +  AGITLH+   YG N HH  E  FKS A A++ A S+  +   E+PS+KGVL")
06659         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct, "RRAFVERNTNETKISVAIALDKAPLPEESNFIDELITSKHANQKGEQVIQVDTGIGFLDHMYHALAKHAGWSLRLYSRGD---LIIDDHHTAEDTAIALGIAFKQAMGNFAGVKRFGHAYCPLDEALSRSVVDLSGRPYAVIDLGLK-REKVGELSCEMIPHLLYSFSVAAGITLHVTCLYGSNDHHRAESAFKSLAVAMRAATSL--TGSSEVPSTKGVL")
06660         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query_start, 3)
06661         self.assertEqual(record.rounds[1].alignments[17].hsps[0].query_end, 200)
06662         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct_start, 2)
06663         self.assertEqual(record.rounds[1].alignments[17].hsps[0].sbjct_end, 216)
06664         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06665         self.assertEqual(record.rounds[1].alignments[18].hsps[0].match, "R +H+ RNTKETQI++S+ LD  G + I+TG+GF DHML  +  H  F ++I   GD   + +D HH +ED  +AL + +   L +K GI R+G F +PMDE L  C LDISGRP+L + A+ +  Q++G   TEM E FFR+L++  G+TLHL    G+N HH +E +FK+  R ++QA+ ++      +PSSKGVL")
06666         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct, "RYAHVVRNTKETQIDVSVWLDREGNSKINTGVGFFDHMLDQIATHGGFRMEITVKGD---LYIDDHHTVEDTGLALREALKLALRDKRGICRFG-FVLPMDECLA-CALDISGRPHLEYKAEFT-YQRVGNLSTEMIEHFFRSLSYTMGVTLHLKT-KGKNDHHRVESLFKAFGRTVRQAIRVEG---DTLPSSKGVL")
06667         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query_start, 3)
06668         self.assertEqual(record.rounds[1].alignments[18].hsps[0].query_end, 200)
06669         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct_start, 167)
06670         self.assertEqual(record.rounds[1].alignments[18].hsps[0].sbjct_end, 354)
06671         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query, "TRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVF--------HADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06672         self.assertEqual(record.rounds[1].alignments[19].hsps[0].match, "+R + I R T+E+ I + ++LDGTGQ  + TG+ F DHMLT L  H+ FDL +   GD E   ++ HH IED AIALG  + + LG+K GIRR+G   IPMDE L    +D+SGRPY V         H  ++G+     Y T +    F +LA NA I LH+   YG++ HHI E  +K+ ARAL+QAV  D   V  +PS+KG L")
06673         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct, "SRRARIERRTRESDIVIELDLDGTGQVAVDTGVPFYDHMLTALGSHASFDLTVRATGDVE---IEAHHTIEDTAIALGTALGQALGDKRGIRRFGDAFIPMDETLAHAAVDLSGRPYCVHTGEPDHLQHTTIAGSSV--PYHTVINRHVFESLAANARIALHVRVLYGRDPHHITEAQYKAVARALRQAVEPDPR-VSGVPSTKGAL")
06674         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query_start, 2)
06675         self.assertEqual(record.rounds[1].alignments[19].hsps[0].query_end, 200)
06676         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct_start, 10)
06677         self.assertEqual(record.rounds[1].alignments[19].hsps[0].sbjct_end, 210)
06678         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06679         self.assertEqual(record.rounds[1].alignments[20].hsps[0].match, "R S  TR T ET +++ + +DG+G++ ++TG+GFLDHML  +  H   DL++   GD E   +D HH +EDVA+ LG+ + E LG+K GIRR     +PMD+AL T  LD+SGRPY V   +   +  +G   ++    F  +LA +A + +H +   G+N HH  E +FK+ A A++ AV ++    GEIPS+KG L")
06680         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct, "RRSMKTRETLETHVKVDLEIDGSGKSSVNTGLGFLDHMLESVARHGLLDLEVEARGDLE---VDDHHTVEDVALTLGEALREALGDKSGIRRMAHAMVPMDDALATVALDLSGRPYTVLELEFD-DAVIGDVKSQNIGHFIESLAVSAAMNIHASV-RGRNDHHKAEALFKALALAIRDAVRVEH---GEIPSTKGKL")
06681         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query_start, 3)
06682         self.assertEqual(record.rounds[1].alignments[20].hsps[0].query_end, 200)
06683         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct_start, 5)
06684         self.assertEqual(record.rounds[1].alignments[20].hsps[0].sbjct_end, 194)
06685         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query, "RISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKG")
06686         self.assertEqual(record.rounds[1].alignments[21].hsps[0].match, "RI  + R TKET I L IN+DGTG+  I TGI F DH+L     H  FDL +   GD E   +D HH +EDV I LG  +++    K  I R+G   IPMD+A  T  +D+SGR Y V + +    + +G   TE    FF ++A    + +H     G+N HH  E +FK+   AL  A  IDE K   + S+KG")
06687         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct, "RIFEVMRETKETNIYLKINIDGTGKYKIDTGIPFFDHLLASFAKHGCFDLIVKARGDLE---IDDHHTVEDVGICLGLALNQI--EKRNIFRFGWAIIPMDDARATVAIDLSGRSYCVGNYE-PKREFVGDLATENINHFFESVASYGMLNIHYEVI-GKNEHHKAEALFKAFGVALDLATKIDERK--GVISTKG")
06688         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query_start, 3)
06689         self.assertEqual(record.rounds[1].alignments[21].hsps[0].query_end, 198)
06690         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct_start, 7)
06691         self.assertEqual(record.rounds[1].alignments[21].hsps[0].sbjct_end, 193)
06692         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query, "RISHITRNTKETQIELSINLDG------------------------TGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALK")
06693         self.assertEqual(record.rounds[1].alignments[22].hsps[0].match, "R + ++R+T ET I++++++DG                        +    I+TGIGFLDHML  L  H+ + + +   GD   + +D HH  ED  IA+G   ++ LG   G+ R+G    P+DEAL    +D+S RPY V    L   +KLG    EM     ++ A  A ITLH++   G N HH  E  FK+ A A++")
06694         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct, "RAAALSRDTNETSIQIALSIDGGELPQDADPRLLEASSAHASQTSKSQVISINTGIGFLDHMLHALAKHAGWSMALNCKGD---LHIDDHHTAEDCCIAVGTTFAKALGALTGVARFGYAYAPLDEALSRAVVDLSNRPYTVVDLGLK-REKLGELSCEMIPHCLQSFAQAARITLHVDCLRGDNDHHRAESAFKALAVAVR")
06695         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query_start, 3)
06696         self.assertEqual(record.rounds[1].alignments[22].hsps[0].query_end, 180)
06697         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct_start, 8)
06698         self.assertEqual(record.rounds[1].alignments[22].hsps[0].sbjct_end, 205)
06699         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query, "MTRISHITRNTKETQIELSINLDGTGQADISTGIGFLDHMLTLLTFHSDFDLKIIGHGDHETVGMDPHHLIEDVAIALGKCISEDLGNKLGIRRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEEFFRALAFNAGITLHLNEHYGQNTHHIIEGMFKSTARALKQAVSIDESKVGEIPSSKGVL")
06700         self.assertEqual(record.rounds[1].alignments[23].hsps[0].match, "M+R ++ITR TKET+IE+ +++D  G+  +ST I F +HML  L  + +    +      + +  D HH++EDVAI LG  I   LG+K GI+R+    IPMD+ALV   LDIS R     + +L  ++ +GG  TE    FF++ A+N+GITLH+++  G NTHHIIE  FK+   AL +A  I ++   EI S+KG++")
06701         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct, "MSRSANITRETKETKIEVLLDIDRKGEVKVSTPIPFFNHMLITLLTYMNSTAIVSAT---DKLPYDDHHIVEDVAITLGLAIKTALGDKRGIKRFSHQIIPMDDALVLVSLDISNRGMAFVNLNLKRSE-IGGLATENVPHFFQSFAYNSGITLHISQLSGYNTHHIIEASFKALGLALYEATRIVDN---EIRSTKGII")
06702         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query_start, 1)
06703         self.assertEqual(record.rounds[1].alignments[23].hsps[0].query_end, 200)
06704         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct_start, 1)
06705         self.assertEqual(record.rounds[1].alignments[23].hsps[0].sbjct_end, 193)
06706         self.assertEqual(record.rounds[1].alignments[24].hsps[0].query, "LTLLTFHSDFDLKIIGHGDHETVGMDPH-HLIEDVAIAL------GKCISEDLG----NKLGI--------RRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEE")
06707         self.assertEqual(record.rounds[1].alignments[24].hsps[0].match, "L  +  +    + +       T+ M  H ++++  A+        G    E LG    +   I                PM +A  +  +D+   P L+F        + G + +++   ")
06708         self.assertEqual(record.rounds[1].alignments[24].hsps[0].sbjct, "LAEVAKNRGIAIPVDLDSQVNTLFMKSHSNMVQRAAMGWRLSARSGPRFKEALGGPAWDYRNIIEKLQDVVASLEHQFSPMMQAEFSVLVDVLYSPELLFPEGSDARIRCGAFMSKLINH")
06709         self.assertEqual(record.rounds[1].alignments[24].hsps[0].query_start, 41)
06710         self.assertEqual(record.rounds[1].alignments[24].hsps[0].query_end, 141)
06711         self.assertEqual(record.rounds[1].alignments[24].hsps[0].sbjct_start, 1540)
06712         self.assertEqual(record.rounds[1].alignments[24].hsps[0].sbjct_end, 1659)
06713         self.assertEqual(record.rounds[1].alignments[25].hsps[0].query, "LTLLTFHSDFDLKIIGHGDHETVGMDPHH-LIEDVAIAL------GKCISEDLG----NKLGI--------RRYGSFTIPMDEALVTCDLDISGRPYLVFHADLSGNQKLGGYDTEMTEE")
06714         self.assertEqual(record.rounds[1].alignments[25].hsps[0].match, "L  +  +    + +       T+ M  H   ++  A+        G    E LG    +   I                PM +A  +  +D+   P L+F        + G + +++   ")
06715         self.assertEqual(record.rounds[1].alignments[25].hsps[0].sbjct, "LAEVAKNRGIAIPVDLDSQVNTLFMKNHSSTVQRAAMGWRLSARSGPRFKEALGGPAWDYRNIIEKLQDVVASLEQQFSPMMQAEFSVLVDVLYSPELLFPEGSDARIRCGAFMSKLINH")
06716         self.assertEqual(record.rounds[1].alignments[25].hsps[0].query_start, 41)
06717         self.assertEqual(record.rounds[1].alignments[25].hsps[0].query_end, 141)
06718         self.assertEqual(record.rounds[1].alignments[25].hsps[0].sbjct_start, 1540)
06719         self.assertEqual(record.rounds[1].alignments[25].hsps[0].sbjct_end, 1659)
06720 
06721     def _check_bt047_footer(self, record):
06722         self.assertEqual(record.database_name, ['data/swissprot'])
06723         self.assertEqual(record.num_letters_in_database, [29652561])
06724         self.assertEqual(record.num_sequences_in_database, [82258])
06725         self.assertEqual(record.posted_date, [('Feb 2, 2000  9:39 AM',)])
06726         self.assertEqual(len(record.ka_params), 3)
06727         self.assertAlmostEqual(record.ka_params[0], 0.317)
06728         self.assertAlmostEqual(record.ka_params[1], 0.149)
06729         self.assertAlmostEqual(record.ka_params[2], 0.479)
06730         self.assertEqual(len(record.ka_params_gap), 3)
06731         self.assertAlmostEqual(record.ka_params_gap[0], 0.270)
06732         self.assertAlmostEqual(record.ka_params_gap[1], 0.0524)
06733         self.assertAlmostEqual(record.ka_params_gap[2], 0.230)
06734         self.assertEqual(record.matrix, 'BLOSUM62')
06735         self.assertEqual(record.gap_penalties, [11,1])
06736         self.assertEqual(record.num_hits, 26734132)
06737         self.assertEqual(record.num_sequences, 82258)
06738         self.assertEqual(record.num_extends, 1229035)
06739         self.assertEqual(record.num_good_extends, 2616)
06740         self.assertEqual(record.num_seqs_better_e, 56)
06741         self.assertEqual(record.hsps_no_gap, 48)
06742         self.assertEqual(record.hsps_prelim_gapped, 8)
06743         self.assertEqual(record.hsps_gapped, 58)
06744         self.assertEqual(record.query_length, 200)
06745         self.assertEqual(record.database_length, 29652561)
06746         self.assertEqual(record.effective_hsp_length, 50)
06747         self.assertEqual(record.effective_query_length, 150)
06748         self.assertEqual(record.effective_database_length, 25539661)
06749         self.assertEqual(record.effective_search_space, 3830949150)
06750         self.assertEqual(record.effective_search_space_used, 3830949150)
06751         self.assertEqual(record.threshold, 11)
06752         self.assertEqual(record.window_size, 40)
06753         self.assertEqual(len(record.dropoff_1st_pass), 2)
06754         self.assertEqual(record.dropoff_1st_pass[0], 16)
06755         self.assertAlmostEqual(record.dropoff_1st_pass[1], 7.3)
06756         self.assertEqual(len(record.gap_x_dropoff), 2)
06757         self.assertEqual(record.gap_x_dropoff[0], 38)
06758         self.assertAlmostEqual(record.gap_x_dropoff[1], 14.8)
06759         self.assertEqual(len(record.gap_x_dropoff_final), 2)
06760         self.assertEqual(record.gap_x_dropoff_final[0], 64)
06761         self.assertAlmostEqual(record.gap_x_dropoff_final[1], 24.9)
06762         self.assertEqual(len(record.gap_trigger), 2)
06763         self.assertEqual(record.gap_trigger[0], 41)
06764         self.assertAlmostEqual(record.gap_trigger[1], 21.5)
06765         self.assertEqual(len(record.blast_cutoff), 2)
06766         self.assertEqual(record.blast_cutoff[0], 63)
06767         self.assertAlmostEqual(record.blast_cutoff[1], 28.8)
06768 
06769     def test_bt048(self):
06770         "Test parsing BLASTN 2.0.11 output (bt048)"
06771 
06772         path = os.path.join('Blast', 'bt048.txt')
06773         handle = open(path)
06774         record = self.parser.parse(handle)
06775         handle.close()
06776         self.assertEqual(record.application, "BLASTN")
06777         self.assertEqual(record.version, '2.0.11')
06778         self.assertEqual(record.date, "Jan-20-2000")
06779         self.assertEqual(record.reference, TestNCBITextParser.reference)
06780         self.assertEqual(record.query, "gi|1348916|gb|G26684|G26684 human STS\nSTS_D11570.\x01gi|1375195|gb|G26945|G26945 human STS SHGC-32699.")
06781         self.assertEqual(record.query_letters, 285)
06782         self.assertEqual(record.database, "data/sts")
06783         self.assertEqual(record.database_sequences, 87792)
06784         self.assertEqual(record.database_letters, 31998854)
06785         self.assertEqual(len(record.descriptions), 23)
06786         self.assertEqual(record.descriptions[0].title, "gi|1348916|gb|G26684|G26684 human STS STS_D11570. >gi|1375195|g...")
06787         self.assertEqual(record.descriptions[0].score, 517)
06788         self.assertAlmostEqual(record.descriptions[0].e, 1e-146)
06789         self.assertEqual(record.descriptions[1].title, "gi|4516686|dbj|AU026763.1|AU026763 Rattus norvegicus, OTSUKA cl...")
06790         self.assertEqual(record.descriptions[1].score, 32)
06791         self.assertAlmostEqual(record.descriptions[1].e, 1.6)
06792         self.assertEqual(record.descriptions[2].title, "gi|6120827|gb|G55508.1|G55508 SHGC-100856 Human Homo sapiens ST...")
06793         self.assertEqual(record.descriptions[2].score, 32)
06794         self.assertAlmostEqual(record.descriptions[2].e, 1.6)
06795         self.assertEqual(record.descriptions[3].title, "gi|720683|gb|G03725|G03725 human STS WI-344.")
06796         self.assertEqual(record.descriptions[3].score, 32)
06797         self.assertAlmostEqual(record.descriptions[3].e, 1.6)
06798         self.assertEqual(record.descriptions[4].title, "gi|5690111|gb|G54226.1|G54226 B124N23/SP6 Human Chromosome 12 H...")
06799         self.assertEqual(record.descriptions[4].score, 30)
06800         self.assertAlmostEqual(record.descriptions[4].e, 6.5)
06801         self.assertEqual(record.descriptions[5].title, "gi|4493307|gb|G47007.1|G47007 Z15259_1 Zebrafish AB Danio rerio...")
06802         self.assertEqual(record.descriptions[5].score, 30)
06803         self.assertAlmostEqual(record.descriptions[5].e, 6.5)
06804         self.assertEqual(record.descriptions[6].title, "gi|4491799|gb|G45508.1|G45508 Z24506_1 Zebrafish AB Danio rerio...")
06805         self.assertEqual(record.descriptions[6].score, 30)
06806         self.assertAlmostEqual(record.descriptions[6].e, 6.5)
06807         self.assertEqual(record.descriptions[7].title, "gi|6121596|gb|G56277.1|G56277 SHGC-101791 Human Homo sapiens ST...")
06808         self.assertEqual(record.descriptions[7].score, 30)
06809         self.assertAlmostEqual(record.descriptions[7].e, 6.5)
06810         self.assertEqual(record.descriptions[8].title, "gi|5222417|gb|G51240.1|G51240 SHGC-80720 Human Homo sapiens STS...")
06811         self.assertEqual(record.descriptions[8].score, 30)
06812         self.assertAlmostEqual(record.descriptions[8].e, 6.5)
06813         self.assertEqual(record.descriptions[9].title, "gi|5221977|gb|G50800.1|G50800 SHGC-83850 Human Homo sapiens STS...")
06814         self.assertEqual(record.descriptions[9].score, 30)
06815         self.assertAlmostEqual(record.descriptions[9].e, 6.5)
06816         self.assertEqual(record.descriptions[10].title, "gi|5224501|gb|G53324.1|G53324 SHGC-82315 Human Homo sapiens STS...")
06817         self.assertEqual(record.descriptions[10].score, 30)
06818         self.assertAlmostEqual(record.descriptions[10].e, 6.5)
06819         self.assertEqual(record.descriptions[11].title, "gi|4529247|gb|G48587.1|G48587 SHGC-82546 Human Homo sapiens STS...")
06820         self.assertEqual(record.descriptions[11].score, 30)
06821         self.assertAlmostEqual(record.descriptions[11].e, 6.5)
06822         self.assertEqual(record.descriptions[12].title, "gi|3359917|gb|G40708|G40708 Z8947 Zebrafish AB Danio rerio STS ...")
06823         self.assertEqual(record.descriptions[12].score, 30)
06824         self.assertAlmostEqual(record.descriptions[12].e, 6.5)
06825         self.assertEqual(record.descriptions[13].title, "gi|3359244|gb|G40035|G40035 Z13538 Zebrafish AB Danio rerio STS...")
06826         self.assertEqual(record.descriptions[13].score, 30)
06827         self.assertAlmostEqual(record.descriptions[13].e, 6.5)
06828         self.assertEqual(record.descriptions[14].title, "gi|1347715|gb|G25483|G25483 human STS EST334642.")
06829         self.assertEqual(record.descriptions[14].score, 30)
06830         self.assertAlmostEqual(record.descriptions[14].e, 6.5)
06831         self.assertEqual(record.descriptions[15].title, "gi|1244262|gb|G19475|G19475 human STS SHGC-18755.")
06832         self.assertEqual(record.descriptions[15].score, 30)
06833         self.assertAlmostEqual(record.descriptions[15].e, 6.5)
06834         self.assertEqual(record.descriptions[16].title, "gi|1232611|emb|Z51311|HS302WC9 H.sapiens (D5S2069) DNA segment ...")
06835         self.assertEqual(record.descriptions[16].score, 30)
06836         self.assertAlmostEqual(record.descriptions[16].e, 6.5)
06837         self.assertEqual(record.descriptions[17].title, "gi|1223022|gb|G18565|G18565 BMS485 cow Bos taurus STS genomic, ...")
06838         self.assertEqual(record.descriptions[17].score, 30)
06839         self.assertAlmostEqual(record.descriptions[17].e, 6.5)
06840         self.assertEqual(record.descriptions[18].title, "gi|1161779|gb|G15890|G15890 human STS CHLC.UTR_01448_M84721.P56...")
06841         self.assertEqual(record.descriptions[18].score, 30)
06842         self.assertAlmostEqual(record.descriptions[18].e, 6.5)
06843         self.assertEqual(record.descriptions[19].title, "gi|858803|gb|G05558|G05558 human STS WI-7105.")
06844         self.assertEqual(record.descriptions[19].score, 30)
06845         self.assertAlmostEqual(record.descriptions[19].e, 6.5)
06846         self.assertEqual(record.descriptions[20].title, "gi|1342455|gb|G22129|G22129 human STS WI-14200.")
06847         self.assertEqual(record.descriptions[20].score, 30)
06848         self.assertAlmostEqual(record.descriptions[20].e, 6.5)
06849         self.assertEqual(record.descriptions[21].title, "gi|1347001|gb|G24769|G24769 human STS EST129834.")
06850         self.assertEqual(record.descriptions[21].score, 30)
06851         self.assertAlmostEqual(record.descriptions[21].e, 6.5)
06852         self.assertEqual(record.descriptions[22].title, "gi|605469|gb|L31223|HUMUT821B Human STS UT821, 3' primer bind.")
06853         self.assertEqual(record.descriptions[22].score, 30)
06854         self.assertAlmostEqual(record.descriptions[22].e, 6.5)
06855         self.assertEqual(len(record.alignments), 23)
06856         self.assertEqual(record.alignments[0].title, ">gi|1348916|gb|G26684|G26684 human STS STS_D11570. >gi|1375195|gb|G26945|G26945 human STS SHGC-32699.")
06857         self.assertEqual(record.alignments[0].length, 285)
06858         self.assertEqual(record.alignments[1].title, ">gi|4516686|dbj|AU026763.1|AU026763 Rattus norvegicus, OTSUKA clone, OT33.16/752f07, microsatellite sequence, sequence tagged site")
06859         self.assertEqual(record.alignments[1].length, 307)
06860         self.assertEqual(record.alignments[2].title, ">gi|6120827|gb|G55508.1|G55508 SHGC-100856 Human Homo sapiens STS genomic, sequence tagged site")
06861         self.assertEqual(record.alignments[2].length, 711)
06862         self.assertEqual(record.alignments[3].title, ">gi|720683|gb|G03725|G03725 human STS WI-344.")
06863         self.assertEqual(record.alignments[3].length, 246)
06864         self.assertEqual(record.alignments[4].title, ">gi|5690111|gb|G54226.1|G54226 B124N23/SP6 Human Chromosome 12 Homo sapiens STS genomic clone RPCI-11-B124N23 SP6, sequence tagged site")
06865         self.assertEqual(record.alignments[4].length, 550)
06866         self.assertEqual(record.alignments[5].title, ">gi|4493307|gb|G47007.1|G47007 Z15259_1 Zebrafish AB Danio rerio STS genomic clone Z15259 5', sequence tagged site")
06867         self.assertEqual(record.alignments[5].length, 442)
06868         self.assertEqual(record.alignments[6].title, ">gi|4491799|gb|G45508.1|G45508 Z24506_1 Zebrafish AB Danio rerio STS genomic clone Z24506 5', sequence tagged site")
06869         self.assertEqual(record.alignments[6].length, 272)
06870         self.assertEqual(record.alignments[7].title, ">gi|6121596|gb|G56277.1|G56277 SHGC-101791 Human Homo sapiens STS genomic, sequence tagged site")
06871         self.assertEqual(record.alignments[7].length, 641)
06872         self.assertEqual(record.alignments[8].title, ">gi|5222417|gb|G51240.1|G51240 SHGC-80720 Human Homo sapiens STS genomic, sequence tagged site")
06873         self.assertEqual(record.alignments[8].length, 712)
06874         self.assertEqual(record.alignments[9].title, ">gi|5221977|gb|G50800.1|G50800 SHGC-83850 Human Homo sapiens STS genomic, sequence tagged site")
06875         self.assertEqual(record.alignments[9].length, 422)
06876         self.assertEqual(record.alignments[10].title, ">gi|5224501|gb|G53324.1|G53324 SHGC-82315 Human Homo sapiens STS genomic, sequence tagged site")
06877         self.assertEqual(record.alignments[10].length, 428)
06878         self.assertEqual(record.alignments[11].title, ">gi|4529247|gb|G48587.1|G48587 SHGC-82546 Human Homo sapiens STS genomic, sequence tagged site")
06879         self.assertEqual(record.alignments[11].length, 694)
06880         self.assertEqual(record.alignments[12].title, ">gi|3359917|gb|G40708|G40708 Z8947 Zebrafish AB Danio rerio STS genomic")
06881         self.assertEqual(record.alignments[12].length, 549)
06882         self.assertEqual(record.alignments[13].title, ">gi|3359244|gb|G40035|G40035 Z13538 Zebrafish AB Danio rerio STS genomic")
06883         self.assertEqual(record.alignments[13].length, 536)
06884         self.assertEqual(record.alignments[14].title, ">gi|1347715|gb|G25483|G25483 human STS EST334642.")
06885         self.assertEqual(record.alignments[14].length, 407)
06886         self.assertEqual(record.alignments[15].title, ">gi|1244262|gb|G19475|G19475 human STS SHGC-18755.")
06887         self.assertEqual(record.alignments[15].length, 400)
06888         self.assertEqual(record.alignments[16].title, ">gi|1232611|emb|Z51311|HS302WC9 H.sapiens (D5S2069) DNA segment containing (CA) repeat; clone AFM302wc9; single read, sequence tagged site [Homo sapiens]")
06889         self.assertEqual(record.alignments[16].length, 374)
06890         self.assertEqual(record.alignments[17].title, ">gi|1223022|gb|G18565|G18565 BMS485 cow Bos taurus STS genomic, sequence tagged site [Bos taurus]")
06891         self.assertEqual(record.alignments[17].length, 181)
06892         self.assertEqual(record.alignments[18].title, ">gi|1161779|gb|G15890|G15890 human STS CHLC.UTR_01448_M84721.P56085 clone UTR_01448_M84721.")
06893         self.assertEqual(record.alignments[18].length, 729)
06894         self.assertEqual(record.alignments[19].title, ">gi|858803|gb|G05558|G05558 human STS WI-7105.")
06895         self.assertEqual(record.alignments[19].length, 735)
06896         self.assertEqual(record.alignments[20].title, ">gi|1342455|gb|G22129|G22129 human STS WI-14200.")
06897         self.assertEqual(record.alignments[20].length, 373)
06898         self.assertEqual(record.alignments[21].title, ">gi|1347001|gb|G24769|G24769 human STS EST129834.")
06899         self.assertEqual(record.alignments[21].length, 306)
06900         self.assertEqual(record.alignments[22].title, ">gi|605469|gb|L31223|HUMUT821B Human STS UT821, 3' primer bind.")
06901         self.assertEqual(record.alignments[22].length, 127)
06902         self.assertEqual(record.alignments[0].hsps[0].score, 261)
06903         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 517)
06904         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 1e-146)
06905         self.assertEqual(len(record.alignments[0].hsps), 1)
06906         self.assertEqual(record.alignments[1].hsps[0].score, 16)
06907         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 32.2)
06908         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 1.6)
06909         self.assertEqual(len(record.alignments[1].hsps), 1)
06910         self.assertEqual(record.alignments[2].hsps[0].score, 16)
06911         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 32.2)
06912         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 1.6)
06913         self.assertEqual(len(record.alignments[2].hsps), 1)
06914         self.assertEqual(record.alignments[3].hsps[0].score, 16)
06915         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 32.2)
06916         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 1.6)
06917         self.assertEqual(len(record.alignments[3].hsps), 1)
06918         self.assertEqual(record.alignments[4].hsps[0].score, 15)
06919         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 30.2)
06920         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 6.5)
06921         self.assertEqual(len(record.alignments[4].hsps), 1)
06922         self.assertEqual(record.alignments[5].hsps[0].score, 15)
06923         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 30.2)
06924         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 6.5)
06925         self.assertEqual(len(record.alignments[5].hsps), 1)
06926         self.assertEqual(record.alignments[6].hsps[0].score, 15)
06927         self.assertAlmostEqual(record.alignments[6].hsps[0].bits, 30.2)
06928         self.assertAlmostEqual(record.alignments[6].hsps[0].expect, 6.5)
06929         self.assertEqual(len(record.alignments[6].hsps), 1)
06930         self.assertEqual(record.alignments[7].hsps[0].score, 15)
06931         self.assertAlmostEqual(record.alignments[7].hsps[0].bits, 30.2)
06932         self.assertAlmostEqual(record.alignments[7].hsps[0].expect, 6.5)
06933         self.assertEqual(len(record.alignments[7].hsps), 1)
06934         self.assertEqual(record.alignments[8].hsps[0].score, 15)
06935         self.assertAlmostEqual(record.alignments[8].hsps[0].bits, 30.2)
06936         self.assertAlmostEqual(record.alignments[8].hsps[0].expect, 6.5)
06937         self.assertEqual(len(record.alignments[8].hsps), 1)
06938         self.assertEqual(record.alignments[9].hsps[0].score, 15)
06939         self.assertAlmostEqual(record.alignments[9].hsps[0].bits, 30.2)
06940         self.assertAlmostEqual(record.alignments[9].hsps[0].expect, 6.5)
06941         self.assertEqual(len(record.alignments[9].hsps), 1)
06942         self.assertEqual(record.alignments[10].hsps[0].score, 15)
06943         self.assertAlmostEqual(record.alignments[10].hsps[0].bits, 30.2)
06944         self.assertAlmostEqual(record.alignments[10].hsps[0].expect, 6.5)
06945         self.assertEqual(len(record.alignments[10].hsps), 1)
06946         self.assertEqual(record.alignments[11].hsps[0].score, 15)
06947         self.assertAlmostEqual(record.alignments[11].hsps[0].bits, 30.2)
06948         self.assertAlmostEqual(record.alignments[11].hsps[0].expect, 6.5)
06949         self.assertEqual(len(record.alignments[11].hsps), 1)
06950         self.assertEqual(record.alignments[12].hsps[0].score, 15)
06951         self.assertAlmostEqual(record.alignments[12].hsps[0].bits, 30.2)
06952         self.assertAlmostEqual(record.alignments[12].hsps[0].expect, 6.5)
06953         self.assertEqual(len(record.alignments[12].hsps), 1)
06954         self.assertEqual(record.alignments[13].hsps[0].score, 15)
06955         self.assertAlmostEqual(record.alignments[13].hsps[0].bits, 30.2)
06956         self.assertAlmostEqual(record.alignments[13].hsps[0].expect, 6.5)
06957         self.assertEqual(len(record.alignments[13].hsps), 1)
06958         self.assertEqual(record.alignments[14].hsps[0].score, 15)
06959         self.assertAlmostEqual(record.alignments[14].hsps[0].bits, 30.2)
06960         self.assertAlmostEqual(record.alignments[14].hsps[0].expect, 6.5)
06961         self.assertEqual(len(record.alignments[14].hsps), 1)
06962         self.assertEqual(record.alignments[15].hsps[0].score, 15)
06963         self.assertAlmostEqual(record.alignments[15].hsps[0].bits, 30.2)
06964         self.assertAlmostEqual(record.alignments[15].hsps[0].expect, 6.5)
06965         self.assertEqual(len(record.alignments[15].hsps), 1)
06966         self.assertEqual(record.alignments[16].hsps[0].score, 15)
06967         self.assertAlmostEqual(record.alignments[16].hsps[0].bits, 30.2)
06968         self.assertAlmostEqual(record.alignments[16].hsps[0].expect, 6.5)
06969         self.assertEqual(len(record.alignments[16].hsps), 1)
06970         self.assertEqual(record.alignments[17].hsps[0].score, 15)
06971         self.assertAlmostEqual(record.alignments[17].hsps[0].bits, 30.2)
06972         self.assertAlmostEqual(record.alignments[17].hsps[0].expect, 6.5)
06973         self.assertEqual(len(record.alignments[17].hsps), 1)
06974         self.assertEqual(record.alignments[18].hsps[0].score, 15)
06975         self.assertAlmostEqual(record.alignments[18].hsps[0].bits, 30.2)
06976         self.assertAlmostEqual(record.alignments[18].hsps[0].expect, 6.5)
06977         self.assertEqual(len(record.alignments[18].hsps), 1)
06978         self.assertEqual(record.alignments[19].hsps[0].score, 15)
06979         self.assertAlmostEqual(record.alignments[19].hsps[0].bits, 30.2)
06980         self.assertAlmostEqual(record.alignments[19].hsps[0].expect, 6.5)
06981         self.assertEqual(len(record.alignments[19].hsps), 1)
06982         self.assertEqual(record.alignments[20].hsps[0].score, 15)
06983         self.assertAlmostEqual(record.alignments[20].hsps[0].bits, 30.2)
06984         self.assertAlmostEqual(record.alignments[20].hsps[0].expect, 6.5)
06985         self.assertEqual(len(record.alignments[20].hsps), 1)
06986         self.assertEqual(record.alignments[21].hsps[0].score, 15)
06987         self.assertAlmostEqual(record.alignments[21].hsps[0].bits, 30.2)
06988         self.assertAlmostEqual(record.alignments[21].hsps[0].expect, 6.5)
06989         self.assertEqual(len(record.alignments[21].hsps), 1)
06990         self.assertEqual(record.alignments[22].hsps[0].score, 15)
06991         self.assertAlmostEqual(record.alignments[22].hsps[0].bits, 30.2)
06992         self.assertAlmostEqual(record.alignments[22].hsps[0].expect, 6.5)
06993         self.assertEqual(len(record.alignments[22].hsps), 1)
06994         self.assertEqual(record.alignments[0].hsps[0].identities, (285, 285))
06995         self.assertEqual(record.alignments[1].hsps[0].identities, (16, 16))
06996         self.assertEqual(record.alignments[2].hsps[0].identities, (18, 19))
06997         self.assertEqual(record.alignments[3].hsps[0].identities, (16, 16))
06998         self.assertEqual(record.alignments[4].hsps[0].identities, (15, 15))
06999         self.assertEqual(record.alignments[5].hsps[0].identities, (15, 15))
07000         self.assertEqual(record.alignments[6].hsps[0].identities, (15, 15))
07001         self.assertEqual(record.alignments[7].hsps[0].identities, (15, 15))
07002         self.assertEqual(record.alignments[8].hsps[0].identities, (17, 18))
07003         self.assertEqual(record.alignments[9].hsps[0].identities, (15, 15))
07004         self.assertEqual(record.alignments[10].hsps[0].identities, (15, 15))
07005         self.assertEqual(record.alignments[11].hsps[0].identities, (17, 18))
07006         self.assertEqual(record.alignments[12].hsps[0].identities, (15, 15))
07007         self.assertEqual(record.alignments[13].hsps[0].identities, (15, 15))
07008         self.assertEqual(record.alignments[14].hsps[0].identities, (15, 15))
07009         self.assertEqual(record.alignments[15].hsps[0].identities, (15, 15))
07010         self.assertEqual(record.alignments[16].hsps[0].identities, (15, 15))
07011         self.assertEqual(record.alignments[17].hsps[0].identities, (15, 15))
07012         self.assertEqual(record.alignments[18].hsps[0].identities, (18, 19))
07013         self.assertEqual(record.alignments[19].hsps[0].identities, (15, 15))
07014         self.assertEqual(record.alignments[20].hsps[0].identities, (15, 15))
07015         self.assertEqual(record.alignments[21].hsps[0].identities, (15, 15))
07016         self.assertEqual(record.alignments[22].hsps[0].identities, (15, 15))
07017         self.assertEqual(record.alignments[0].hsps[0].strand, ("Plus", "Plus"))
07018         self.assertEqual(record.alignments[1].hsps[0].strand, ("Plus", "Plus"))
07019         self.assertEqual(record.alignments[2].hsps[0].strand, ("Plus", "Plus"))
07020         self.assertEqual(record.alignments[3].hsps[0].strand, ("Plus", "Minus"))
07021         self.assertEqual(record.alignments[4].hsps[0].strand, ("Plus", "Plus"))
07022         self.assertEqual(record.alignments[5].hsps[0].strand, ("Plus", "Minus"))
07023         self.assertEqual(record.alignments[6].hsps[0].strand, ("Plus", "Minus"))
07024         self.assertEqual(record.alignments[7].hsps[0].strand, ("Plus", "Minus"))
07025         self.assertEqual(record.alignments[8].hsps[0].strand, ("Plus", "Plus"))
07026         self.assertEqual(record.alignments[9].hsps[0].strand, ("Plus", "Minus"))
07027         self.assertEqual(record.alignments[10].hsps[0].strand, ("Plus", "Minus"))
07028         self.assertEqual(record.alignments[11].hsps[0].strand, ("Plus", "Plus"))
07029         self.assertEqual(record.alignments[12].hsps[0].strand, ("Plus", "Minus"))
07030         self.assertEqual(record.alignments[13].hsps[0].strand, ("Plus", "Minus"))
07031         self.assertEqual(record.alignments[14].hsps[0].strand, ("Plus", "Plus"))
07032         self.assertEqual(record.alignments[15].hsps[0].strand, ("Plus", "Minus"))
07033         self.assertEqual(record.alignments[16].hsps[0].strand, ("Plus", "Plus"))
07034         self.assertEqual(record.alignments[17].hsps[0].strand, ("Plus", "Plus"))
07035         self.assertEqual(record.alignments[18].hsps[0].strand, ("Plus", "Plus"))
07036         self.assertEqual(record.alignments[19].hsps[0].strand, ("Plus", "Minus"))
07037         self.assertEqual(record.alignments[20].hsps[0].strand, ("Plus", "Minus"))
07038         self.assertEqual(record.alignments[21].hsps[0].strand, ("Plus", "Plus"))
07039         self.assertEqual(record.alignments[22].hsps[0].strand, ("Plus", "Minus"))
07040         self.assertEqual(record.alignments[0].hsps[0].query, "gatccctacccttnccgttggtctctntcgctgactcgaggcacctaacatccattcacacccaacacaggccagcgacttctggggctcagccacagacatggtttgtnactnttgagcttctgttcctagagaatcctagaggcttgattggcccaggctgctgtntgtnctggaggcaaagaatccctacctcctaggggtgaaaggaaatnaaaatggaaagttcttgtagcgcaaggcctgacatgggtagctgctcaataaatgctagtntgttatttc")
07041         self.assertEqual(record.alignments[0].hsps[0].match, "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
07042         self.assertEqual(record.alignments[0].hsps[0].sbjct, "gatccctacccttnccgttggtctctntcgctgactcgaggcacctaacatccattcacacccaacacaggccagcgacttctggggctcagccacagacatggtttgtnactnttgagcttctgttcctagagaatcctagaggcttgattggcccaggctgctgtntgtnctggaggcaaagaatccctacctcctaggggtgaaaggaaatnaaaatggaaagttcttgtagcgcaaggcctgacatgggtagctgctcaataaatgctagtntgttatttc")
07043         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
07044         self.assertEqual(record.alignments[0].hsps[0].query_end, 285)
07045         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
07046         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 285)
07047         self.assertEqual(record.alignments[1].hsps[0].query, "ggaaagttcttgtagc")
07048         self.assertEqual(record.alignments[1].hsps[0].match, "||||||||||||||||")
07049         self.assertEqual(record.alignments[1].hsps[0].sbjct, "ggaaagttcttgtagc")
07050         self.assertEqual(record.alignments[1].hsps[0].query_start, 221)
07051         self.assertEqual(record.alignments[1].hsps[0].query_end, 236)
07052         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 32)
07053         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 47)
07054         self.assertEqual(record.alignments[2].hsps[0].query, "gaaatnaaaatggaaagtt")
07055         self.assertEqual(record.alignments[2].hsps[0].match, "||||| |||||||||||||")
07056         self.assertEqual(record.alignments[2].hsps[0].sbjct, "gaaataaaaatggaaagtt")
07057         self.assertEqual(record.alignments[2].hsps[0].query_start, 210)
07058         self.assertEqual(record.alignments[2].hsps[0].query_end, 228)
07059         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 588)
07060         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 606)
07061         self.assertEqual(record.alignments[3].hsps[0].query, "ctcaataaatgctagt")
07062         self.assertEqual(record.alignments[3].hsps[0].match, "||||||||||||||||")
07063         self.assertEqual(record.alignments[3].hsps[0].sbjct, "ctcaataaatgctagt")
07064         self.assertEqual(record.alignments[3].hsps[0].query_start, 260)
07065         self.assertEqual(record.alignments[3].hsps[0].query_end, 275)
07066         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 178)
07067         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 163)
07068         self.assertEqual(record.alignments[4].hsps[0].query, "aaaatggaaagttct")
07069         self.assertEqual(record.alignments[4].hsps[0].match, "|||||||||||||||")
07070         self.assertEqual(record.alignments[4].hsps[0].sbjct, "aaaatggaaagttct")
07071         self.assertEqual(record.alignments[4].hsps[0].query_start, 216)
07072         self.assertEqual(record.alignments[4].hsps[0].query_end, 230)
07073         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 330)
07074         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 344)
07075         self.assertEqual(record.alignments[5].hsps[0].query, "ttctgttcctagaga")
07076         self.assertEqual(record.alignments[5].hsps[0].match, "|||||||||||||||")
07077         self.assertEqual(record.alignments[5].hsps[0].sbjct, "ttctgttcctagaga")
07078         self.assertEqual(record.alignments[5].hsps[0].query_start, 121)
07079         self.assertEqual(record.alignments[5].hsps[0].query_end, 135)
07080         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 384)
07081         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 370)
07082         self.assertEqual(record.alignments[6].hsps[0].query, "ggaaagttcttgtag")
07083         self.assertEqual(record.alignments[6].hsps[0].match, "|||||||||||||||")
07084         self.assertEqual(record.alignments[6].hsps[0].sbjct, "ggaaagttcttgtag")
07085         self.assertEqual(record.alignments[6].hsps[0].query_start, 221)
07086         self.assertEqual(record.alignments[6].hsps[0].query_end, 235)
07087         self.assertEqual(record.alignments[6].hsps[0].sbjct_start, 138)
07088         self.assertEqual(record.alignments[6].hsps[0].sbjct_end, 124)
07089         self.assertEqual(record.alignments[7].hsps[0].query, "tgctcaataaatgct")
07090         self.assertEqual(record.alignments[7].hsps[0].match, "|||||||||||||||")
07091         self.assertEqual(record.alignments[7].hsps[0].sbjct, "tgctcaataaatgct")
07092         self.assertEqual(record.alignments[7].hsps[0].query_start, 258)
07093         self.assertEqual(record.alignments[7].hsps[0].query_end, 272)
07094         self.assertEqual(record.alignments[7].hsps[0].sbjct_start, 216)
07095         self.assertEqual(record.alignments[7].hsps[0].sbjct_end, 202)
07096         self.assertEqual(record.alignments[8].hsps[0].query, "taaatgctagtntgttat")
07097         self.assertEqual(record.alignments[8].hsps[0].match, "||||||||||| ||||||")
07098         self.assertEqual(record.alignments[8].hsps[0].sbjct, "taaatgctagtttgttat")
07099         self.assertEqual(record.alignments[8].hsps[0].query_start, 265)
07100         self.assertEqual(record.alignments[8].hsps[0].query_end, 282)
07101         self.assertEqual(record.alignments[8].hsps[0].sbjct_start, 293)
07102         self.assertEqual(record.alignments[8].hsps[0].sbjct_end, 310)
07103         self.assertEqual(record.alignments[9].hsps[0].query, "tgctcaataaatgct")
07104         self.assertEqual(record.alignments[9].hsps[0].match, "|||||||||||||||")
07105         self.assertEqual(record.alignments[9].hsps[0].sbjct, "tgctcaataaatgct")
07106         self.assertEqual(record.alignments[9].hsps[0].query_start, 258)
07107         self.assertEqual(record.alignments[9].hsps[0].query_end, 272)
07108         self.assertEqual(record.alignments[9].hsps[0].sbjct_start, 32)
07109         self.assertEqual(record.alignments[9].hsps[0].sbjct_end, 18)
07110         self.assertEqual(record.alignments[10].hsps[0].query, "tgctcaataaatgct")
07111         self.assertEqual(record.alignments[10].hsps[0].match, "|||||||||||||||")
07112         self.assertEqual(record.alignments[10].hsps[0].sbjct, "tgctcaataaatgct")
07113         self.assertEqual(record.alignments[10].hsps[0].query_start, 258)
07114         self.assertEqual(record.alignments[10].hsps[0].query_end, 272)
07115         self.assertEqual(record.alignments[10].hsps[0].sbjct_start, 47)
07116         self.assertEqual(record.alignments[10].hsps[0].sbjct_end, 33)
07117         self.assertEqual(record.alignments[11].hsps[0].query, "taaatgctagtntgttat")
07118         self.assertEqual(record.alignments[11].hsps[0].match, "||||||||||| ||||||")
07119         self.assertEqual(record.alignments[11].hsps[0].sbjct, "taaatgctagtttgttat")
07120         self.assertEqual(record.alignments[11].hsps[0].query_start, 265)
07121         self.assertEqual(record.alignments[11].hsps[0].query_end, 282)
07122         self.assertEqual(record.alignments[11].hsps[0].sbjct_start, 292)
07123         self.assertEqual(record.alignments[11].hsps[0].sbjct_end, 309)
07124         self.assertEqual(record.alignments[12].hsps[0].query, "aacatccattcacac")
07125         self.assertEqual(record.alignments[12].hsps[0].match, "|||||||||||||||")
07126         self.assertEqual(record.alignments[12].hsps[0].sbjct, "aacatccattcacac")
07127         self.assertEqual(record.alignments[12].hsps[0].query_start, 47)
07128         self.assertEqual(record.alignments[12].hsps[0].query_end, 61)
07129         self.assertEqual(record.alignments[12].hsps[0].sbjct_start, 479)
07130         self.assertEqual(record.alignments[12].hsps[0].sbjct_end, 465)
07131         self.assertEqual(record.alignments[13].hsps[0].query, "ttctgttcctagaga")
07132         self.assertEqual(record.alignments[13].hsps[0].match, "|||||||||||||||")
07133         self.assertEqual(record.alignments[13].hsps[0].sbjct, "ttctgttcctagaga")
07134         self.assertEqual(record.alignments[13].hsps[0].query_start, 121)
07135         self.assertEqual(record.alignments[13].hsps[0].query_end, 135)
07136         self.assertEqual(record.alignments[13].hsps[0].sbjct_start, 433)
07137         self.assertEqual(record.alignments[13].hsps[0].sbjct_end, 419)
07138         self.assertEqual(record.alignments[14].hsps[0].query, "ctaacatccattcac")
07139         self.assertEqual(record.alignments[14].hsps[0].match, "|||||||||||||||")
07140         self.assertEqual(record.alignments[14].hsps[0].sbjct, "ctaacatccattcac")
07141         self.assertEqual(record.alignments[14].hsps[0].query_start, 45)
07142         self.assertEqual(record.alignments[14].hsps[0].query_end, 59)
07143         self.assertEqual(record.alignments[14].hsps[0].sbjct_start, 389)
07144         self.assertEqual(record.alignments[14].hsps[0].sbjct_end, 403)
07145         self.assertEqual(record.alignments[15].hsps[0].query, "tgctcaataaatgct")
07146         self.assertEqual(record.alignments[15].hsps[0].match, "|||||||||||||||")
07147         self.assertEqual(record.alignments[15].hsps[0].sbjct, "tgctcaataaatgct")
07148         self.assertEqual(record.alignments[15].hsps[0].query_start, 258)
07149         self.assertEqual(record.alignments[15].hsps[0].query_end, 272)
07150         self.assertEqual(record.alignments[15].hsps[0].sbjct_start, 324)
07151         self.assertEqual(record.alignments[15].hsps[0].sbjct_end, 310)
07152         self.assertEqual(record.alignments[16].hsps[0].query, "acagacatggtttgt")
07153         self.assertEqual(record.alignments[16].hsps[0].match, "|||||||||||||||")
07154         self.assertEqual(record.alignments[16].hsps[0].sbjct, "acagacatggtttgt")
07155         self.assertEqual(record.alignments[16].hsps[0].query_start, 95)
07156         self.assertEqual(record.alignments[16].hsps[0].query_end, 109)
07157         self.assertEqual(record.alignments[16].hsps[0].sbjct_start, 246)
07158         self.assertEqual(record.alignments[16].hsps[0].sbjct_end, 260)
07159         self.assertEqual(record.alignments[17].hsps[0].query, "ctcaataaatgctag")
07160         self.assertEqual(record.alignments[17].hsps[0].match, "|||||||||||||||")
07161         self.assertEqual(record.alignments[17].hsps[0].sbjct, "ctcaataaatgctag")
07162         self.assertEqual(record.alignments[17].hsps[0].query_start, 260)
07163         self.assertEqual(record.alignments[17].hsps[0].query_end, 274)
07164         self.assertEqual(record.alignments[17].hsps[0].sbjct_start, 145)
07165         self.assertEqual(record.alignments[17].hsps[0].sbjct_end, 159)
07166         self.assertEqual(record.alignments[18].hsps[0].query, "gtagctgctcaataaatgc")
07167         self.assertEqual(record.alignments[18].hsps[0].match, "|||| ||||||||||||||")
07168         self.assertEqual(record.alignments[18].hsps[0].sbjct, "gtaggtgctcaataaatgc")
07169         self.assertEqual(record.alignments[18].hsps[0].query_start, 253)
07170         self.assertEqual(record.alignments[18].hsps[0].query_end, 271)
07171         self.assertEqual(record.alignments[18].hsps[0].sbjct_start, 698)
07172         self.assertEqual(record.alignments[18].hsps[0].sbjct_end, 716)
07173         self.assertEqual(record.alignments[19].hsps[0].query, "gaaagttcttgtagc")
07174         self.assertEqual(record.alignments[19].hsps[0].match, "|||||||||||||||")
07175         self.assertEqual(record.alignments[19].hsps[0].sbjct, "gaaagttcttgtagc")
07176         self.assertEqual(record.alignments[19].hsps[0].query_start, 222)
07177         self.assertEqual(record.alignments[19].hsps[0].query_end, 236)
07178         self.assertEqual(record.alignments[19].hsps[0].sbjct_start, 543)
07179         self.assertEqual(record.alignments[19].hsps[0].sbjct_end, 529)
07180         self.assertEqual(record.alignments[20].hsps[0].query, "tgctcaataaatgct")
07181         self.assertEqual(record.alignments[20].hsps[0].match, "|||||||||||||||")
07182         self.assertEqual(record.alignments[20].hsps[0].sbjct, "tgctcaataaatgct")
07183         self.assertEqual(record.alignments[20].hsps[0].query_start, 258)
07184         self.assertEqual(record.alignments[20].hsps[0].query_end, 272)
07185         self.assertEqual(record.alignments[20].hsps[0].sbjct_start, 33)
07186         self.assertEqual(record.alignments[20].hsps[0].sbjct_end, 19)
07187         self.assertEqual(record.alignments[21].hsps[0].query, "tggaaagttcttgta")
07188         self.assertEqual(record.alignments[21].hsps[0].match, "|||||||||||||||")
07189         self.assertEqual(record.alignments[21].hsps[0].sbjct, "tggaaagttcttgta")
07190         self.assertEqual(record.alignments[21].hsps[0].query_start, 220)
07191         self.assertEqual(record.alignments[21].hsps[0].query_end, 234)
07192         self.assertEqual(record.alignments[21].hsps[0].sbjct_start, 144)
07193         self.assertEqual(record.alignments[21].hsps[0].sbjct_end, 158)
07194         self.assertEqual(record.alignments[22].hsps[0].query, "acagacatggtttgt")
07195         self.assertEqual(record.alignments[22].hsps[0].match, "|||||||||||||||")
07196         self.assertEqual(record.alignments[22].hsps[0].sbjct, "acagacatggtttgt")
07197         self.assertEqual(record.alignments[22].hsps[0].query_start, 95)
07198         self.assertEqual(record.alignments[22].hsps[0].query_end, 109)
07199         self.assertEqual(record.alignments[22].hsps[0].sbjct_start, 106)
07200         self.assertEqual(record.alignments[22].hsps[0].sbjct_end, 92)
07201         self.assertEqual(record.database_name, ['data/sts'])
07202         self.assertEqual(record.posted_date, [('Feb 11, 2000  2:37 PM',)])
07203         self.assertEqual(record.num_letters_in_database, [31998854])
07204         self.assertEqual(record.num_sequences_in_database, [87792])
07205         self.assertEqual(len(record.ka_params), 3)
07206         self.assertAlmostEqual(record.ka_params[0], 1.37)
07207         self.assertAlmostEqual(record.ka_params[1], 0.711)
07208         self.assertAlmostEqual(record.ka_params[2], 1.31)
07209         self.assertEqual(len(record.ka_params_gap), 3)
07210         self.assertAlmostEqual(record.ka_params_gap[0], 1.37)
07211         self.assertAlmostEqual(record.ka_params_gap[1], 0.711)
07212         self.assertAlmostEqual(record.ka_params_gap[2], 1.31)
07213         self.assertEqual(record.matrix, 'blastn matrix:1 -3')
07214         self.assertEqual(record.gap_penalties, [5,2])
07215         self.assertEqual(record.num_hits, 3835)
07216         self.assertEqual(record.num_sequences, 87792)
07217         self.assertEqual(record.num_extends, 3835)
07218         self.assertEqual(record.num_good_extends, 1155)
07219         self.assertEqual(record.num_seqs_better_e, 24)
07220         self.assertEqual(record.query_length, 285)
07221         self.assertEqual(record.database_length, 31998854)
07222         self.assertEqual(record.effective_hsp_length, 17)
07223         self.assertEqual(record.effective_query_length, 268)
07224         self.assertEqual(record.effective_database_length, 30506390)
07225         self.assertEqual(record.effective_search_space, 8175712520)
07226         self.assertEqual(record.effective_search_space_used, 8175712520)
07227         self.assertEqual(record.threshold, 0)
07228         self.assertEqual(record.window_size, 0)
07229         self.assertEqual(len(record.dropoff_1st_pass), 2)
07230         self.assertEqual(record.dropoff_1st_pass[0], 6)
07231         self.assertAlmostEqual(record.dropoff_1st_pass[1], 11.9)
07232         self.assertEqual(len(record.gap_x_dropoff), 2)
07233         self.assertEqual(record.gap_x_dropoff[0], 10)
07234         self.assertAlmostEqual(record.gap_x_dropoff[1], 19.8)
07235         self.assertEqual(len(record.gap_trigger), 2)
07236         self.assertEqual(record.gap_trigger[0], 12)
07237         self.assertAlmostEqual(record.gap_trigger[1], 24.3)
07238         self.assertEqual(len(record.blast_cutoff), 2)
07239         self.assertEqual(record.blast_cutoff[0], 15)
07240         self.assertAlmostEqual(record.blast_cutoff[1], 30.2)
07241 
07242     def test_bt049(self):
07243         "Test parsing BLASTN 2.0.11 output without alignments (bt049)"
07244 
07245         path = os.path.join('Blast', 'bt049.txt')
07246         handle = open(path)
07247         record = self.parser.parse(handle)
07248         handle.close()
07249         self.assertEqual(record.application, "BLASTN")
07250         self.assertEqual(record.version, '2.0.11')
07251         self.assertEqual(record.date, "Jan-20-2000")
07252         self.assertEqual(record.reference, TestNCBITextParser.reference)
07253         self.assertEqual(record.query, "gi|1348400|gb|G26168|G26168 human STS\nEST47274.\x01gi|1375380|gb|G27130|G27130 human STS SHGC-32751.")
07254         self.assertEqual(record.query_letters, 434)
07255         self.assertEqual(record.database, "data/sts")
07256         self.assertEqual(record.database_sequences, 87792)
07257         self.assertEqual(record.database_letters, 31998854)
07258         self.assertEqual(len(record.descriptions), 19)
07259         self.assertEqual(record.descriptions[0].title, "gi|1348400|gb|G26168|G26168 human STS EST47274. >gi|1375380|gb|...")
07260         self.assertEqual(record.descriptions[0].score, 718)
07261         self.assertAlmostEqual(record.descriptions[0].e, 0.0)
07262         self.assertEqual(record.descriptions[1].title, "gi|4632200|dbj|AU047565.1|AU047565 Rattus norvegicus, OTSUKA cl...")
07263         self.assertEqual(record.descriptions[1].score, 34)
07264         self.assertAlmostEqual(record.descriptions[1].e, 0.65)
07265         self.assertEqual(record.descriptions[2].title, "gi|6121436|gb|G56117.1|G56117 SHGC-101583 Human Homo sapiens ST...")
07266         self.assertEqual(record.descriptions[2].score, 34)
07267         self.assertAlmostEqual(record.descriptions[2].e, 0.65)
07268         self.assertEqual(record.descriptions[3].title, "gi|3249175|gb|G38401|G38401 SHGC-57345 Human Homo sapiens STS g...")
07269         self.assertEqual(record.descriptions[3].score, 34)
07270         self.assertAlmostEqual(record.descriptions[3].e, 0.65)
07271         self.assertEqual(record.descriptions[4].title, "gi|720383|gb|G03425|G03425 human STS WI-5868.")
07272         self.assertEqual(record.descriptions[4].score, 34)
07273         self.assertAlmostEqual(record.descriptions[4].e, 0.65)
07274         self.assertEqual(record.descriptions[5].title, "gi|605557|gb|L31312|HUMUT937B Human STS UT937, 3' primer bind.")
07275         self.assertEqual(record.descriptions[5].score, 34)
07276         self.assertAlmostEqual(record.descriptions[5].e, 0.65)
07277         self.assertEqual(record.descriptions[6].title, "gi|6123581|gb|G58262.1|G58262 SHGC-104352 Human Homo sapiens ST...")
07278         self.assertEqual(record.descriptions[6].score, 32)
07279         self.assertAlmostEqual(record.descriptions[6].e, 2.6)
07280         self.assertEqual(record.descriptions[7].title, "gi|6122805|gb|G57486.1|G57486 SHGC-103345 Human Homo sapiens ST...")
07281         self.assertEqual(record.descriptions[7].score, 32)
07282         self.assertAlmostEqual(record.descriptions[7].e, 2.6)
07283         self.assertEqual(record.descriptions[8].title, "gi|6121347|gb|G56178.1|G56178 SHGC-101470 Human Homo sapiens ST...")
07284         self.assertEqual(record.descriptions[8].score, 32)
07285         self.assertAlmostEqual(record.descriptions[8].e, 2.6)
07286         self.assertEqual(record.descriptions[9].title, "gi|3893806|emb|AL034156|HSPE59A01 H.sapiens flow-sorted chromos...")
07287         self.assertEqual(record.descriptions[9].score, 32)
07288         self.assertAlmostEqual(record.descriptions[9].e, 2.6)
07289         self.assertEqual(record.descriptions[10].title, "gi|5224295|gb|G52968.1|G52968 SHGC-86325 Human Homo sapiens STS...")
07290         self.assertEqual(record.descriptions[10].score, 32)
07291         self.assertAlmostEqual(record.descriptions[10].e, 2.6)
07292         self.assertEqual(record.descriptions[11].title, "gi|1348143|gb|G25911|G25911 human STS EST349382.")
07293         self.assertEqual(record.descriptions[11].score, 32)
07294         self.assertAlmostEqual(record.descriptions[11].e, 2.6)
07295         self.assertEqual(record.descriptions[12].title, "gi|1233216|emb|Z51916|HSA082WB5 H.sapiens (D1S2890) DNA segment...")
07296         self.assertEqual(record.descriptions[12].score, 32)
07297         self.assertAlmostEqual(record.descriptions[12].e, 2.6)
07298         self.assertEqual(record.descriptions[13].title, "gi|1232198|emb|Z50898|HS038XD8 H.sapiens (D18S1106) DNA segment...")
07299         self.assertEqual(record.descriptions[13].score, 32)
07300         self.assertAlmostEqual(record.descriptions[13].e, 2.6)
07301         self.assertEqual(record.descriptions[14].title, "gi|1161890|gb|G16001|G16001 human STS CHLC.GCT8D08.P11278 clone...")
07302         self.assertEqual(record.descriptions[14].score, 32)
07303         self.assertAlmostEqual(record.descriptions[14].e, 2.6)
07304         self.assertEqual(record.descriptions[15].title, "gi|1130137|gb|G14398|G14398 human STS SHGC-9310 clone pG-5191.")
07305         self.assertEqual(record.descriptions[15].score, 32)
07306         self.assertAlmostEqual(record.descriptions[15].e, 2.6)
07307         self.assertEqual(record.descriptions[16].title, "gi|1017612|gb|G11520|G11520 human STS SHGC-14676.")
07308         self.assertEqual(record.descriptions[16].score, 32)
07309         self.assertAlmostEqual(record.descriptions[16].e, 2.6)
07310         self.assertEqual(record.descriptions[17].title, "gi|1396897|gb|G28178|G28178 human STS SHGC-34170.")
07311         self.assertEqual(record.descriptions[17].score, 32)
07312         self.assertAlmostEqual(record.descriptions[17].e, 2.6)
07313         self.assertEqual(record.descriptions[18].title, "gi|859592|gb|G06347|G06347 human STS WI-7005.")
07314         self.assertEqual(record.descriptions[18].score, 32)
07315         self.assertAlmostEqual(record.descriptions[18].e, 2.6)
07316         self.assertEqual(len(record.alignments), 0)
07317         self.assertEqual(record.database_name, ['data/sts'])
07318         self.assertEqual(record.num_letters_in_database, [31998854])
07319         self.assertEqual(record.num_sequences_in_database, [87792])
07320         self.assertEqual(record.posted_date, [('Feb 11, 2000  2:37 PM',)])
07321         self.assertEqual(len(record.ka_params), 3)
07322         self.assertAlmostEqual(record.ka_params[0], 1.37)
07323         self.assertAlmostEqual(record.ka_params[1], 0.711)
07324         self.assertAlmostEqual(record.ka_params[2], 1.31)
07325         self.assertEqual(len(record.ka_params_gap), 3)
07326         self.assertAlmostEqual(record.ka_params_gap[0], 1.37)
07327         self.assertAlmostEqual(record.ka_params_gap[1], 0.711)
07328         self.assertAlmostEqual(record.ka_params_gap[2], 1.31)
07329         self.assertEqual(record.matrix, 'blastn matrix:1 -3')
07330         self.assertEqual(record.gap_penalties, [5,2])
07331         self.assertEqual(record.num_hits, 8762)
07332         self.assertEqual(record.num_sequences, 87792)
07333         self.assertEqual(record.num_extends, 8762)
07334         self.assertEqual(record.num_good_extends, 2655)
07335         self.assertEqual(record.num_seqs_better_e, 27)
07336         self.assertEqual(record.query_length, 434)
07337         self.assertEqual(record.database_length, 31998854)
07338         self.assertEqual(record.effective_hsp_length, 17)
07339         self.assertEqual(record.effective_query_length, 417)
07340         self.assertEqual(record.effective_database_length, 30506390)
07341         self.assertEqual(record.effective_search_space, 12721164630)
07342         self.assertEqual(record.effective_search_space_used, 12721164630)
07343         self.assertEqual(record.threshold, 0)
07344         self.assertEqual(record.window_size, 0)
07345         self.assertEqual(len(record.dropoff_1st_pass), 2)
07346         self.assertEqual(record.dropoff_1st_pass[0], 6)
07347         self.assertAlmostEqual(record.dropoff_1st_pass[1], 11.9)
07348         self.assertEqual(len(record.gap_x_dropoff), 2)
07349         self.assertEqual(record.gap_x_dropoff[0], 10)
07350         self.assertAlmostEqual(record.gap_x_dropoff[1], 19.8)
07351         self.assertEqual(len(record.gap_trigger), 2)
07352         self.assertEqual(record.gap_trigger[0], 12)
07353         self.assertAlmostEqual(record.gap_trigger[1], 24.3)
07354         self.assertEqual(len(record.blast_cutoff), 2)
07355         self.assertEqual(record.blast_cutoff[0], 16)
07356         self.assertAlmostEqual(record.blast_cutoff[1], 32.2)
07357 
07358     def test_bt050(self):
07359         "Test parsing BLASTN 2.0.11 output without descriptions (bt050)"
07360 
07361         path = os.path.join('Blast', 'bt050.txt')
07362         handle = open(path)
07363         record = self.parser.parse(handle)
07364         handle.close()
07365         self.assertEqual(record.application, "BLASTN")
07366         self.assertEqual(record.version, '2.0.11')
07367         self.assertEqual(record.date, "Jan-20-2000")
07368         self.assertEqual(record.reference, TestNCBITextParser.reference)
07369         self.assertEqual(record.query, "gi|1347201|gb|G24969|G24969 human STS\nEST21946.\x01gi|1375315|gb|G27065|G27065 human STS SHGC-31731.")
07370         self.assertEqual(record.query_letters, 331)
07371         self.assertEqual(record.database, "data/sts")
07372         self.assertEqual(record.database_sequences, 87792)
07373         self.assertEqual(record.database_letters, 31998854)
07374         self.assertEqual(len(record.descriptions), 0)
07375         self.assertEqual(len(record.alignments), 45)
07376         self.assertEqual(record.alignments[0].title, ">gi|1347201|gb|G24969|G24969 human STS EST21946. >gi|1375315|gb|G27065|G27065 human STS SHGC-31731.")
07377         self.assertEqual(record.alignments[0].length, 331)
07378         self.assertEqual(record.alignments[1].title, ">gi|2665277|emb|AL010115|HSPE77H4 H.sapiens flow-sorted chromosome 1 HindIII fragment, SC1pE77H4, sequence tagged site [Homo sapiens]")
07379         self.assertEqual(record.alignments[1].length, 554)
07380         self.assertEqual(record.alignments[2].title, ">gi|4757440|gb|G49267.1|G49267 stbK343C1_96809 chromosome 22 genomic clone Homo sapiens STS genomic clone 343C1, sequence tagged site")
07381         self.assertEqual(record.alignments[2].length, 360)
07382         self.assertEqual(record.alignments[3].title, ">gi|4493602|gb|G47248.1|G47248 Z17392_1 Zebrafish AB Danio rerio STS genomic clone Z17392 5', sequence tagged site")
07383         self.assertEqual(record.alignments[3].length, 454)
07384         self.assertEqual(record.alignments[4].title, ">gi|6120731|gb|G55412.1|G55412 SHGC-100745 Human Homo sapiens STS genomic, sequence tagged site")
07385         self.assertEqual(record.alignments[4].length, 652)
07386         self.assertEqual(record.alignments[5].title, ">gi|1235411|emb|Z53965|HSC009WH1 H.sapiens (D2S2321) DNA segment containing (CA) repeat; clone AFMc009wh1; single read, sequence tagged site [Homo sapiens]")
07387         self.assertEqual(record.alignments[5].length, 382)
07388         self.assertEqual(record.alignments[6].title, ">gi|939357|gb|G08807|G08807 human STS CHLC.GATA70E11.P18111 clone GATA70E11")
07389         self.assertEqual(record.alignments[6].length, 643)
07390         self.assertEqual(record.alignments[7].title, ">gi|1342139|gb|G21813|G21813 human STS WI-12408.")
07391         self.assertEqual(record.alignments[7].length, 418)
07392         self.assertEqual(record.alignments[8].title, ">gi|719782|gb|G02824|G02824 human STS WI-1312.")
07393         self.assertEqual(record.alignments[8].length, 349)
07394         self.assertEqual(record.alignments[9].title, ">gi|5902652|gb|G54536.1|G54536 Xq4072 KWOK Homo sapiens STS genomic, sequence tagged site")
07395         self.assertEqual(record.alignments[9].length, 997)
07396         self.assertEqual(record.alignments[10].title, ">gi|5566455|gb|AF167528.1|AF167528 Mus musculus chromosome 10 STS D10Jhu41, sequence tagged site")
07397         self.assertEqual(record.alignments[10].length, 749)
07398         self.assertEqual(record.alignments[11].title, ">gi|5566418|gb|AF167504.1|AF167504 Mus musculus chromosome 10 STS D10Jhu59, sequence tagged site")
07399         self.assertEqual(record.alignments[11].length, 550)
07400         self.assertEqual(record.alignments[12].title, ">gi|5565757|gb|AF096569.1|AF096569 Rattus norvegicus clone D5Uwm59, sequence tagged site")
07401         self.assertEqual(record.alignments[12].length, 580)
07402         self.assertEqual(record.alignments[13].title, ">gi|4757436|gb|G49263.1|G49263 stbK343C1_70109 chromosome 22 genomic clone Homo sapiens STS genomic clone 343C1, sequence tagged site")
07403         self.assertEqual(record.alignments[13].length, 359)
07404         self.assertEqual(record.alignments[14].title, ">gi|4518571|dbj|AU028648.1|AU028648 Rattus norvegicus, OTSUKA clone, OT10.41/02694, microsatellite sequence, sequence tagged site")
07405         self.assertEqual(record.alignments[14].length, 465)
07406         self.assertEqual(record.alignments[15].title, ">gi|6123014|gb|G57845.1|G57845 SHGC-103599 Human Homo sapiens STS genomic, sequence tagged site")
07407         self.assertEqual(record.alignments[15].length, 680)
07408         self.assertEqual(record.alignments[16].title, ">gi|6124406|gb|G59237.1|G59237 SHGC-110189 Human Homo sapiens STS genomic, sequence tagged site")
07409         self.assertEqual(record.alignments[16].length, 505)
07410         self.assertEqual(record.alignments[17].title, ">gi|6121931|gb|G56612.1|G56612 SHGC-102181 Human Homo sapiens STS genomic, sequence tagged site")
07411         self.assertEqual(record.alignments[17].length, 489)
07412         self.assertEqual(record.alignments[18].title, ">gi|3599905|gb|G41846|G41846 Z1061 Zebrafish AB Danio rerio STS genomic, sequence tagged site [Danio rerio]")
07413         self.assertEqual(record.alignments[18].length, 410)
07414         self.assertEqual(record.alignments[19].title, ">gi|5224504|gb|G53327.1|G53327 SHGC-82321 Human Homo sapiens STS genomic, sequence tagged site")
07415         self.assertEqual(record.alignments[19].length, 421)
07416         self.assertEqual(record.alignments[20].title, ">gi|5221389|gb|G50212.1|G50212 SHGC-82917 Human Homo sapiens STS genomic, sequence tagged site")
07417         self.assertEqual(record.alignments[20].length, 297)
07418         self.assertEqual(record.alignments[21].title, ">gi|3168757|gb|G38183|G38183 RPCI-6-164E4Sp6 Human Homo sapiens STS genomic")
07419         self.assertEqual(record.alignments[21].length, 395)
07420         self.assertEqual(record.alignments[22].title, ">gi|3150191|emb|AL023622|HS863J11T H.sapiens STS from genomic clone 863J11, sequence tagged site [Homo sapiens]")
07421         self.assertEqual(record.alignments[22].length, 558)
07422         self.assertEqual(record.alignments[23].title, ">gi|3123402|emb|AL023351|DM171A7S Drosophila melanogaster STS determined from European Mapping Project cosmid, sequence tagged site [Drosophila melanogaster]")
07423         self.assertEqual(record.alignments[23].length, 600)
07424         self.assertEqual(record.alignments[24].title, ">gi|2665031|emb|AL009868|HSPE36B05 H.sapiens flow-sorted chromosome 1 HindIII fragment, SC1pE36B05, sequence tagged site [Homo sapiens]")
07425         self.assertEqual(record.alignments[24].length, 397)
07426         self.assertEqual(record.alignments[25].title, ">gi|2641969|dbj|AB004264|AB004264 Mus spretus genomic DNA, RLGS spot, D5Rik122, sequence tagged site [Mus spretus]")
07427         self.assertEqual(record.alignments[25].length, 237)
07428         self.assertEqual(record.alignments[26].title, ">gi|4529138|gb|G48478.1|G48478 SHGC-68947 Human Homo sapiens STS genomic, sequence tagged site")
07429         self.assertEqual(record.alignments[26].length, 415)
07430         self.assertEqual(record.alignments[27].title, ">gi|2484048|gb|G36284|G36284   STS h14a2375 5")
07431         self.assertEqual(record.alignments[27].length, 305)
07432         self.assertEqual(record.alignments[28].title, ">gi|1871265|gb|G31295|G31295 sy625c11-R Human (A.Gnirke) Homo sapiens STS genomic, sequence tagged site [Homo sapiens]")
07433         self.assertEqual(record.alignments[28].length, 279)
07434         self.assertEqual(record.alignments[29].title, ">gi|1263801|emb|Z70926|DM63D12T D. melanogaster STS determined from European Mapping Project cosmid, sequence tagged site [Drosophila melanogaster]")
07435         self.assertEqual(record.alignments[29].length, 350)
07436         self.assertEqual(record.alignments[30].title, ">gi|1244248|gb|G19461|G19461 human STS SHGC-11979.")
07437         self.assertEqual(record.alignments[30].length, 400)
07438         self.assertEqual(record.alignments[31].title, ">gi|1233253|emb|Z51953|HSA084XF1 H.sapiens (D19S932) DNA segment containing (CA) repeat; clone AFMa084xf1; single read, sequence tagged site [Homo sapiens]")
07439         self.assertEqual(record.alignments[31].length, 276)
07440         self.assertEqual(record.alignments[32].title, ">gi|1233152|emb|Z51852|HSA070WH1 H.sapiens (D9S1879) DNA segment containing (CA) repeat; clone AFMa070wh1; single read, sequence tagged site [Homo sapiens]")
07441         self.assertEqual(record.alignments[32].length, 363)
07442         self.assertEqual(record.alignments[33].title, ">gi|1215106|gb|G17680|G17680 human STS SHGC-3112 clone pG-956.")
07443         self.assertEqual(record.alignments[33].length, 313)
07444         self.assertEqual(record.alignments[34].title, ">gi|1594113|gb|G30562|G30562 human STS SHGC-37420")
07445         self.assertEqual(record.alignments[34].length, 447)
07446         self.assertEqual(record.alignments[35].title, ">gi|1593022|gb|G29471|G29471 human STS SHGC-33749")
07447         self.assertEqual(record.alignments[35].length, 437)
07448         self.assertEqual(record.alignments[36].title, ">gi|1052040|emb|Z67257|HSA090WF9 H.sapiens DNA segment containing (CA) repeat; clone AFMa090wf9; single read, sequence tagged site [Homo sapiens]")
07449         self.assertEqual(record.alignments[36].length, 312)
07450         self.assertEqual(record.alignments[37].title, ">gi|881858|gb|G07651|G07651 human STS SHGC-5830 clone pG-2175.")
07451         self.assertEqual(record.alignments[37].length, 336)
07452         self.assertEqual(record.alignments[38].title, ">gi|1344417|gb|G24091|G24091 human STS WI-12544.")
07453         self.assertEqual(record.alignments[38].length, 452)
07454         self.assertEqual(record.alignments[39].title, ">gi|860391|gb|G07146|G07146 human STS WI-9143.")
07455         self.assertEqual(record.alignments[39].length, 1946)
07456         self.assertEqual(record.alignments[40].title, ">gi|858959|gb|G05714|G05714 human STS WI-8961.")
07457         self.assertEqual(record.alignments[40].length, 1337)
07458         self.assertEqual(record.alignments[41].title, ">gi|1341506|gb|G21180|G21180 human STS WI-14638.")
07459         self.assertEqual(record.alignments[41].length, 375)
07460         self.assertEqual(record.alignments[42].title, ">gi|1341551|gb|G21225|G21225 human STS WI-11777.")
07461         self.assertEqual(record.alignments[42].length, 348)
07462         self.assertEqual(record.alignments[43].title, ">gi|465219|gb|L29850|HUMUT50 Human STS UT50.")
07463         self.assertEqual(record.alignments[43].length, 382)
07464         self.assertEqual(record.alignments[44].title, ">gi|860599|gb|G07354|G07354 human STS WI-9600.")
07465         self.assertEqual(record.alignments[44].length, 226)
07466         self.assertEqual(record.alignments[0].hsps[0].score, 331)
07467         self.assertAlmostEqual(record.alignments[0].hsps[0].bits, 656)
07468         self.assertAlmostEqual(record.alignments[0].hsps[0].expect, 0.0)
07469         self.assertEqual(len(record.alignments[0].hsps), 1)
07470         self.assertEqual(record.alignments[1].hsps[0].score, 17)
07471         self.assertAlmostEqual(record.alignments[1].hsps[0].bits, 34.2)
07472         self.assertAlmostEqual(record.alignments[1].hsps[0].expect, 0.49)
07473         self.assertEqual(len(record.alignments[1].hsps), 1)
07474         self.assertEqual(record.alignments[2].hsps[0].score, 16)
07475         self.assertAlmostEqual(record.alignments[2].hsps[0].bits, 32.2)
07476         self.assertAlmostEqual(record.alignments[2].hsps[0].expect, 1.9)
07477         self.assertEqual(len(record.alignments[2].hsps), 1)
07478         self.assertEqual(record.alignments[3].hsps[0].score, 16)
07479         self.assertAlmostEqual(record.alignments[3].hsps[0].bits, 32.2)
07480         self.assertAlmostEqual(record.alignments[3].hsps[0].expect, 1.9)
07481         self.assertEqual(len(record.alignments[3].hsps), 1)
07482         self.assertEqual(record.alignments[4].hsps[0].score, 16)
07483         self.assertAlmostEqual(record.alignments[4].hsps[0].bits, 32.2)
07484         self.assertAlmostEqual(record.alignments[4].hsps[0].expect, 1.9)
07485         self.assertEqual(len(record.alignments[4].hsps), 1)
07486         self.assertEqual(record.alignments[5].hsps[0].score, 16)
07487         self.assertAlmostEqual(record.alignments[5].hsps[0].bits, 32.2)
07488         self.assertAlmostEqual(record.alignments[5].hsps[0].expect, 1.9)
07489         self.assertEqual(len(record.alignments[5].hsps), 1)
07490         self.assertEqual(record.alignments[6].hsps[0].score, 16)
07491         self.assertAlmostEqual(record.alignments[6].hsps[0].bits, 32.2)
07492         self.assertAlmostEqual(record.alignments[6].hsps[0].expect, 1.9)
07493         self.assertEqual(len(record.alignments[6].hsps), 1)
07494         self.assertEqual(record.alignments[7].hsps[0].score, 16)
07495         self.assertAlmostEqual(record.alignments[7].hsps[0].bits, 32.2)
07496         self.assertAlmostEqual(record.alignments[7].hsps[0].expect, 1.9)
07497         self.assertEqual(len(record.alignments[7].hsps), 1)
07498         self.assertEqual(record.alignments[8].hsps[0].score, 16)
07499         self.assertAlmostEqual(record.alignments[8].hsps[0].bits, 32.2)
07500         self.assertAlmostEqual(record.alignments[8].hsps[0].expect, 1.9)
07501         self.assertEqual(len(record.alignments[8].hsps), 1)
07502         self.assertEqual(record.alignments[9].hsps[0].score, 15)
07503         self.assertAlmostEqual(record.alignments[9].hsps[0].bits, 30.2)
07504         self.assertAlmostEqual(record.alignments[9].hsps[0].expect, 7.6)
07505         self.assertEqual(len(record.alignments[9].hsps), 1)
07506         self.assertEqual(record.alignments[10].hsps[0].score, 15)
07507         self.assertAlmostEqual(record.alignments[10].hsps[0].bits, 30.2)
07508         self.assertAlmostEqual(record.alignments[10].hsps[0].expect, 7.6)
07509         self.assertEqual(len(record.alignments[10].hsps), 1)
07510         self.assertEqual(record.alignments[11].hsps[0].score, 15)
07511         self.assertAlmostEqual(record.alignments[11].hsps[0].bits, 30.2)
07512         self.assertAlmostEqual(record.alignments[11].hsps[0].expect, 7.6)
07513         self.assertEqual(len(record.alignments[11].hsps), 1)
07514         self.assertEqual(record.alignments[12].hsps[0].score, 15)
07515         self.assertAlmostEqual(record.alignments[12].hsps[0].bits, 30.2)
07516         self.assertAlmostEqual(record.alignments[12].hsps[0].expect, 7.6)
07517         self.assertEqual(len(record.alignments[12].hsps), 1)
07518         self.assertEqual(record.alignments[13].hsps[0].score, 15)
07519         self.assertAlmostEqual(record.alignments[13].hsps[0].bits, 30.2)
07520         self.assertAlmostEqual(record.alignments[13].hsps[0].expect, 7.6)
07521         self.assertEqual(len(record.alignments[13].hsps), 1)
07522         self.assertEqual(record.alignments[14].hsps[0].score, 15)
07523         self.assertAlmostEqual(record.alignments[14].hsps[0].bits, 30.2)
07524         self.assertAlmostEqual(record.alignments[14].hsps[0].expect, 7.6)
07525         self.assertEqual(len(record.alignments[14].hsps), 1)
07526         self.assertEqual(record.alignments[15].hsps[0].score, 15)
07527         self.assertAlmostEqual(record.alignments[15].hsps[0].bits, 30.2)
07528         self.assertAlmostEqual(record.alignments[15].hsps[0].expect, 7.6)
07529         self.assertEqual(len(record.alignments[15].hsps), 1)
07530         self.assertEqual(record.alignments[16].hsps[0].score, 15)
07531         self.assertAlmostEqual(record.alignments[16].hsps[0].bits, 30.2)
07532         self.assertAlmostEqual(record.alignments[16].hsps[0].expect, 7.6)
07533         self.assertEqual(len(record.alignments[16].hsps), 1)
07534         self.assertEqual(record.alignments[17].hsps[0].score, 15)
07535         self.assertAlmostEqual(record.alignments[17].hsps[0].bits, 30.2)
07536         self.assertAlmostEqual(record.alignments[17].hsps[0].expect, 7.6)
07537         self.assertEqual(len(record.alignments[17].hsps), 1)
07538         self.assertEqual(record.alignments[18].hsps[0].score, 15)
07539         self.assertAlmostEqual(record.alignments[18].hsps[0].bits, 30.2)
07540         self.assertAlmostEqual(record.alignments[18].hsps[0].expect, 7.6)
07541         self.assertEqual(len(record.alignments[18].hsps), 1)
07542         self.assertEqual(record.alignments[19].hsps[0].score, 15)
07543         self.assertAlmostEqual(record.alignments[19].hsps[0].bits, 30.2)
07544         self.assertAlmostEqual(record.alignments[19].hsps[0].expect, 7.6)
07545         self.assertEqual(len(record.alignments[19].hsps), 1)
07546         self.assertEqual(record.alignments[20].hsps[0].score, 15)
07547         self.assertAlmostEqual(record.alignments[20].hsps[0].bits, 30.2)
07548         self.assertAlmostEqual(record.alignments[20].hsps[0].expect, 7.6)
07549         self.assertEqual(len(record.alignments[20].hsps), 1)
07550         self.assertEqual(record.alignments[21].hsps[0].score, 15)
07551         self.assertAlmostEqual(record.alignments[21].hsps[0].bits, 30.2)
07552         self.assertAlmostEqual(record.alignments[21].hsps[0].expect, 7.6)
07553         self.assertEqual(len(record.alignments[21].hsps), 1)
07554         self.assertEqual(record.alignments[22].hsps[0].score, 15)
07555         self.assertAlmostEqual(record.alignments[22].hsps[0].bits, 30.2)
07556         self.assertAlmostEqual(record.alignments[22].hsps[0].expect, 7.6)
07557         self.assertEqual(len(record.alignments[22].hsps), 1)
07558         self.assertEqual(record.alignments[23].hsps[0].score, 15)
07559         self.assertAlmostEqual(record.alignments[23].hsps[0].bits, 30.2)
07560         self.assertAlmostEqual(record.alignments[23].hsps[0].expect, 7.6)
07561         self.assertEqual(len(record.alignments[23].hsps), 1)
07562         self.assertEqual(record.alignments[24].hsps[0].score, 15)
07563         self.assertAlmostEqual(record.alignments[24].hsps[0].bits, 30.2)
07564         self.assertAlmostEqual(record.alignments[24].hsps[0].expect, 7.6)
07565         self.assertEqual(len(record.alignments[24].hsps), 1)
07566         self.assertEqual(record.alignments[25].hsps[0].score, 15)
07567         self.assertAlmostEqual(record.alignments[25].hsps[0].bits, 30.2)
07568         self.assertAlmostEqual(record.alignments[25].hsps[0].expect, 7.6)
07569         self.assertEqual(len(record.alignments[25].hsps), 1)
07570         self.assertEqual(record.alignments[26].hsps[0].score, 15)
07571         self.assertAlmostEqual(record.alignments[26].hsps[0].bits, 30.2)
07572         self.assertAlmostEqual(record.alignments[26].hsps[0].expect, 7.6)
07573         self.assertEqual(len(record.alignments[26].hsps), 1)
07574         self.assertEqual(record.alignments[27].hsps[0].score, 15)
07575         self.assertAlmostEqual(record.alignments[27].hsps[0].bits, 30.2)
07576         self.assertAlmostEqual(record.alignments[27].hsps[0].expect, 7.6)
07577         self.assertEqual(len(record.alignments[27].hsps), 1)
07578         self.assertEqual(record.alignments[28].hsps[0].score, 15)
07579         self.assertAlmostEqual(record.alignments[28].hsps[0].bits, 30.2)
07580         self.assertAlmostEqual(record.alignments[28].hsps[0].expect, 7.6)
07581         self.assertEqual(len(record.alignments[28].hsps), 1)
07582         self.assertEqual(record.alignments[29].hsps[0].score, 15)
07583         self.assertAlmostEqual(record.alignments[29].hsps[0].bits, 30.2)
07584         self.assertAlmostEqual(record.alignments[29].hsps[0].expect, 7.6)
07585         self.assertEqual(len(record.alignments[29].hsps), 1)
07586         self.assertEqual(record.alignments[30].hsps[0].score, 15)
07587         self.assertAlmostEqual(record.alignments[30].hsps[0].bits, 30.2)
07588         self.assertAlmostEqual(record.alignments[30].hsps[0].expect, 7.6)
07589         self.assertEqual(len(record.alignments[30].hsps), 1)
07590         self.assertEqual(record.alignments[31].hsps[0].score, 15)
07591         self.assertAlmostEqual(record.alignments[31].hsps[0].bits, 30.2)
07592         self.assertAlmostEqual(record.alignments[31].hsps[0].expect, 7.6)
07593         self.assertEqual(len(record.alignments[31].hsps), 1)
07594         self.assertEqual(record.alignments[32].hsps[0].score, 15)
07595         self.assertAlmostEqual(record.alignments[32].hsps[0].bits, 30.2)
07596         self.assertAlmostEqual(record.alignments[32].hsps[0].expect, 7.6)
07597         self.assertEqual(len(record.alignments[32].hsps), 1)
07598         self.assertEqual(record.alignments[33].hsps[0].score, 15)
07599         self.assertAlmostEqual(record.alignments[33].hsps[0].bits, 30.2)
07600         self.assertAlmostEqual(record.alignments[33].hsps[0].expect, 7.6)
07601         self.assertEqual(len(record.alignments[33].hsps), 1)
07602         self.assertEqual(record.alignments[34].hsps[0].score, 15)
07603         self.assertAlmostEqual(record.alignments[34].hsps[0].bits, 30.2)
07604         self.assertAlmostEqual(record.alignments[34].hsps[0].expect, 7.6)
07605         self.assertEqual(len(record.alignments[34].hsps), 1)
07606         self.assertEqual(record.alignments[35].hsps[0].score, 15)
07607         self.assertAlmostEqual(record.alignments[35].hsps[0].bits, 30.2)
07608         self.assertAlmostEqual(record.alignments[35].hsps[0].expect, 7.6)
07609         self.assertEqual(len(record.alignments[35].hsps), 1)
07610         self.assertEqual(record.alignments[36].hsps[0].score, 15)
07611         self.assertAlmostEqual(record.alignments[36].hsps[0].bits, 30.2)
07612         self.assertAlmostEqual(record.alignments[36].hsps[0].expect, 7.6)
07613         self.assertEqual(len(record.alignments[36].hsps), 1)
07614         self.assertEqual(record.alignments[37].hsps[0].score, 15)
07615         self.assertAlmostEqual(record.alignments[37].hsps[0].bits, 30.2)
07616         self.assertAlmostEqual(record.alignments[37].hsps[0].expect, 7.6)
07617         self.assertEqual(len(record.alignments[37].hsps), 1)
07618         self.assertEqual(record.alignments[38].hsps[0].score, 15)
07619         self.assertAlmostEqual(record.alignments[38].hsps[0].bits, 30.2)
07620         self.assertAlmostEqual(record.alignments[38].hsps[0].expect, 7.6)
07621         self.assertEqual(len(record.alignments[38].hsps), 1)
07622         self.assertEqual(record.alignments[39].hsps[0].score, 15)
07623         self.assertAlmostEqual(record.alignments[39].hsps[0].bits, 30.2)
07624         self.assertAlmostEqual(record.alignments[39].hsps[0].expect, 7.6)
07625         self.assertEqual(len(record.alignments[39].hsps), 1)
07626         self.assertEqual(record.alignments[40].hsps[0].score, 15)
07627         self.assertAlmostEqual(record.alignments[40].hsps[0].bits, 30.2)
07628         self.assertAlmostEqual(record.alignments[40].hsps[0].expect, 7.6)
07629         self.assertEqual(len(record.alignments[40].hsps), 1)
07630         self.assertEqual(record.alignments[41].hsps[0].score, 15)
07631         self.assertAlmostEqual(record.alignments[41].hsps[0].bits, 30.2)
07632         self.assertAlmostEqual(record.alignments[41].hsps[0].expect, 7.6)
07633         self.assertEqual(len(record.alignments[41].hsps), 1)
07634         self.assertEqual(record.alignments[42].hsps[0].score, 15)
07635         self.assertAlmostEqual(record.alignments[42].hsps[0].bits, 30.2)
07636         self.assertAlmostEqual(record.alignments[42].hsps[0].expect, 7.6)
07637         self.assertEqual(len(record.alignments[42].hsps), 1)
07638         self.assertEqual(record.alignments[43].hsps[0].score, 15)
07639         self.assertAlmostEqual(record.alignments[43].hsps[0].bits, 30.2)
07640         self.assertAlmostEqual(record.alignments[43].hsps[0].expect, 7.6)
07641         self.assertEqual(len(record.alignments[43].hsps), 1)
07642         self.assertEqual(record.alignments[44].hsps[0].score, 15)
07643         self.assertAlmostEqual(record.alignments[44].hsps[0].bits, 30.2)
07644         self.assertAlmostEqual(record.alignments[44].hsps[0].expect, 7.6)
07645         self.assertEqual(len(record.alignments[44].hsps), 1)
07646         self.assertEqual(record.alignments[0].hsps[0].identities, (331, 331))
07647         self.assertEqual(record.alignments[1].hsps[0].identities, (17, 17))
07648         self.assertEqual(record.alignments[2].hsps[0].identities, (22, 24))
07649         self.assertEqual(record.alignments[3].hsps[0].identities, (16, 16))
07650         self.assertEqual(record.alignments[4].hsps[0].identities, (16, 16))
07651         self.assertEqual(record.alignments[5].hsps[0].identities, (16, 16))
07652         self.assertEqual(record.alignments[6].hsps[0].identities, (16, 16))
07653         self.assertEqual(record.alignments[7].hsps[0].identities, (16, 16))
07654         self.assertEqual(record.alignments[8].hsps[0].identities, (16, 16))
07655         self.assertEqual(record.alignments[9].hsps[0].identities, (15, 15))
07656         self.assertEqual(record.alignments[10].hsps[0].identities, (15, 15))
07657         self.assertEqual(record.alignments[11].hsps[0].identities, (15, 15))
07658         self.assertEqual(record.alignments[12].hsps[0].identities, (21, 23))
07659         self.assertEqual(record.alignments[13].hsps[0].identities, (15, 15))
07660         self.assertEqual(record.alignments[14].hsps[0].identities, (15, 15))
07661         self.assertEqual(record.alignments[15].hsps[0].identities, (15, 15))
07662         self.assertEqual(record.alignments[16].hsps[0].identities, (15, 15))
07663         self.assertEqual(record.alignments[17].hsps[0].identities, (18, 19))
07664         self.assertEqual(record.alignments[18].hsps[0].identities, (15, 15))
07665         self.assertEqual(record.alignments[19].hsps[0].identities, (18, 19))
07666         self.assertEqual(record.alignments[20].hsps[0].identities, (15, 15))
07667         self.assertEqual(record.alignments[21].hsps[0].identities, (15, 15))
07668         self.assertEqual(record.alignments[22].hsps[0].identities, (15, 15))
07669         self.assertEqual(record.alignments[23].hsps[0].identities, (15, 15))
07670         self.assertEqual(record.alignments[24].hsps[0].identities, (15, 15))
07671         self.assertEqual(record.alignments[25].hsps[0].identities, (15, 15))
07672         self.assertEqual(record.alignments[26].hsps[0].identities, (15, 15))
07673         self.assertEqual(record.alignments[27].hsps[0].identities, (15, 15))
07674         self.assertEqual(record.alignments[28].hsps[0].identities, (15, 15))
07675         self.assertEqual(record.alignments[29].hsps[0].identities, (15, 15))
07676         self.assertEqual(record.alignments[30].hsps[0].identities, (15, 15))
07677         self.assertEqual(record.alignments[31].hsps[0].identities, (15, 15))
07678         self.assertEqual(record.alignments[32].hsps[0].identities, (15, 15))
07679         self.assertEqual(record.alignments[33].hsps[0].identities, (18, 19))
07680         self.assertEqual(record.alignments[34].hsps[0].identities, (18, 19))
07681         self.assertEqual(record.alignments[35].hsps[0].identities, (15, 15))
07682         self.assertEqual(record.alignments[36].hsps[0].identities, (15, 15))
07683         self.assertEqual(record.alignments[37].hsps[0].identities, (15, 15))
07684         self.assertEqual(record.alignments[38].hsps[0].identities, (18, 19))
07685         self.assertEqual(record.alignments[39].hsps[0].identities, (15, 15))
07686         self.assertEqual(record.alignments[40].hsps[0].identities, (15, 15))
07687         self.assertEqual(record.alignments[41].hsps[0].identities, (15, 15))
07688         self.assertEqual(record.alignments[42].hsps[0].identities, (15, 15))
07689         self.assertEqual(record.alignments[43].hsps[0].identities, (15, 15))
07690         self.assertEqual(record.alignments[44].hsps[0].identities, (15, 15))
07691         self.assertEqual(record.alignments[0].hsps[0].strand, ("Plus", "Plus"))
07692         self.assertEqual(record.alignments[1].hsps[0].strand, ("Plus", "Minus"))
07693         self.assertEqual(record.alignments[2].hsps[0].strand, ("Plus", "Minus"))
07694         self.assertEqual(record.alignments[3].hsps[0].strand, ("Plus", "Plus"))
07695         self.assertEqual(record.alignments[4].hsps[0].strand, ("Plus", "Minus"))
07696         self.assertEqual(record.alignments[5].hsps[0].strand, ("Plus", "Plus"))
07697         self.assertEqual(record.alignments[6].hsps[0].strand, ("Plus", "Minus"))
07698         self.assertEqual(record.alignments[7].hsps[0].strand, ("Plus", "Minus"))
07699         self.assertEqual(record.alignments[8].hsps[0].strand, ("Plus", "Plus"))
07700         self.assertEqual(record.alignments[9].hsps[0].strand, ("Plus", "Minus"))
07701         self.assertEqual(record.alignments[10].hsps[0].strand, ("Plus", "Plus"))
07702         self.assertEqual(record.alignments[11].hsps[0].strand, ("Plus", "Minus"))
07703         self.assertEqual(record.alignments[12].hsps[0].strand, ("Plus", "Plus"))
07704         self.assertEqual(record.alignments[13].hsps[0].strand, ("Plus", "Minus"))
07705         self.assertEqual(record.alignments[14].hsps[0].strand, ("Plus", "Minus"))
07706         self.assertEqual(record.alignments[15].hsps[0].strand, ("Plus", "Plus"))
07707         self.assertEqual(record.alignments[16].hsps[0].strand, ("Plus", "Minus"))
07708         self.assertEqual(record.alignments[17].hsps[0].strand, ("Plus", "Plus"))
07709         self.assertEqual(record.alignments[18].hsps[0].strand, ("Plus", "Plus"))
07710         self.assertEqual(record.alignments[19].hsps[0].strand, ("Plus", "Plus"))
07711         self.assertEqual(record.alignments[20].hsps[0].strand, ("Plus", "Plus"))
07712         self.assertEqual(record.alignments[21].hsps[0].strand, ("Plus", "Plus"))
07713         self.assertEqual(record.alignments[22].hsps[0].strand, ("Plus", "Plus"))
07714         self.assertEqual(record.alignments[23].hsps[0].strand, ("Plus", "Plus"))
07715         self.assertEqual(record.alignments[24].hsps[0].strand, ("Plus", "Plus"))
07716         self.assertEqual(record.alignments[25].hsps[0].strand, ("Plus", "Minus"))
07717         self.assertEqual(record.alignments[26].hsps[0].strand, ("Plus", "Plus"))
07718         self.assertEqual(record.alignments[27].hsps[0].strand, ("Plus", "Plus"))
07719         self.assertEqual(record.alignments[28].hsps[0].strand, ("Plus", "Plus"))
07720         self.assertEqual(record.alignments[29].hsps[0].strand, ("Plus", "Minus"))
07721         self.assertEqual(record.alignments[30].hsps[0].strand, ("Plus", "Minus"))
07722         self.assertEqual(record.alignments[31].hsps[0].strand, ("Plus", "Minus"))
07723         self.assertEqual(record.alignments[32].hsps[0].strand, ("Plus", "Plus"))
07724         self.assertEqual(record.alignments[33].hsps[0].strand, ("Plus", "Minus"))
07725         self.assertEqual(record.alignments[34].hsps[0].strand, ("Plus", "Plus"))
07726         self.assertEqual(record.alignments[35].hsps[0].strand, ("Plus", "Minus"))
07727         self.assertEqual(record.alignments[36].hsps[0].strand, ("Plus", "Plus"))
07728         self.assertEqual(record.alignments[37].hsps[0].strand, ("Plus", "Plus"))
07729         self.assertEqual(record.alignments[38].hsps[0].strand, ("Plus", "Minus"))
07730         self.assertEqual(record.alignments[39].hsps[0].strand, ("Plus", "Minus"))
07731         self.assertEqual(record.alignments[40].hsps[0].strand, ("Plus", "Plus"))
07732         self.assertEqual(record.alignments[41].hsps[0].strand, ("Plus", "Minus"))
07733         self.assertEqual(record.alignments[42].hsps[0].strand, ("Plus", "Plus"))
07734         self.assertEqual(record.alignments[43].hsps[0].strand, ("Plus", "Minus"))
07735         self.assertEqual(record.alignments[44].hsps[0].strand, ("Plus", "Plus"))
07736         self.assertEqual(record.alignments[0].hsps[0].query, "cctccaccctctcatgagcaacaggatatgtgaaagtacttgcagccagaagcaaaaccacaatcctcgggtgctagatggagctccccaaggagcagagaggaaaaggcaggaggagagggccaggcagcagggatggagactaagtttggcccaaggctgcccgcaagcactgatgccatcatgccctctggtaggtgtctatttctgtctgaaccagaaatacaccaagctccacacatgggggctttgctggcttcgacatcactggttcaactatgtcactgctttgttatatttagtgctccagaacctcaggttccttcagatt")
07737         self.assertEqual(record.alignments[0].hsps[0].match, "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
07738         self.assertEqual(record.alignments[0].hsps[0].sbjct, "cctccaccctctcatgagcaacaggatatgtgaaagtacttgcagccagaagcaaaaccacaatcctcgggtgctagatggagctccccaaggagcagagaggaaaaggcaggaggagagggccaggcagcagggatggagactaagtttggcccaaggctgcccgcaagcactgatgccatcatgccctctggtaggtgtctatttctgtctgaaccagaaatacaccaagctccacacatgggggctttgctggcttcgacatcactggttcaactatgtcactgctttgttatatttagtgctccagaacctcaggttccttcagatt")
07739         self.assertEqual(record.alignments[0].hsps[0].query_start, 1)
07740         self.assertEqual(record.alignments[0].hsps[0].query_end, 331)
07741         self.assertEqual(record.alignments[0].hsps[0].sbjct_start, 1)
07742         self.assertEqual(record.alignments[0].hsps[0].sbjct_end, 331)
07743         self.assertEqual(record.alignments[1].hsps[0].query, "ccaggcagcagggatgg")
07744         self.assertEqual(record.alignments[1].hsps[0].match, "|||||||||||||||||")
07745         self.assertEqual(record.alignments[1].hsps[0].sbjct, "ccaggcagcagggatgg")
07746         self.assertEqual(record.alignments[1].hsps[0].query_start, 123)
07747         self.assertEqual(record.alignments[1].hsps[0].query_end, 139)
07748         self.assertEqual(record.alignments[1].hsps[0].sbjct_start, 434)
07749         self.assertEqual(record.alignments[1].hsps[0].sbjct_end, 418)
07750         self.assertEqual(record.alignments[2].hsps[0].query, "ggaggagagggccaggcagcaggg")
07751         self.assertEqual(record.alignments[2].hsps[0].match, "||||||||||| | ||||||||||")
07752         self.assertEqual(record.alignments[2].hsps[0].sbjct, "ggaggagaggggctggcagcaggg")
07753         self.assertEqual(record.alignments[2].hsps[0].query_start, 112)
07754         self.assertEqual(record.alignments[2].hsps[0].query_end, 135)
07755         self.assertEqual(record.alignments[2].hsps[0].sbjct_start, 287)
07756         self.assertEqual(record.alignments[2].hsps[0].sbjct_end, 264)
07757         self.assertEqual(record.alignments[3].hsps[0].query, "agaagcaaaaccacaa")
07758         self.assertEqual(record.alignments[3].hsps[0].match, "||||||||||||||||")
07759         self.assertEqual(record.alignments[3].hsps[0].sbjct, "agaagcaaaaccacaa")
07760         self.assertEqual(record.alignments[3].hsps[0].query_start, 48)
07761         self.assertEqual(record.alignments[3].hsps[0].query_end, 63)
07762         self.assertEqual(record.alignments[3].hsps[0].sbjct_start, 434)
07763         self.assertEqual(record.alignments[3].hsps[0].sbjct_end, 449)
07764         self.assertEqual(record.alignments[4].hsps[0].query, "agaggaaaaggcagga")
07765         self.assertEqual(record.alignments[4].hsps[0].match, "||||||||||||||||")
07766         self.assertEqual(record.alignments[4].hsps[0].sbjct, "agaggaaaaggcagga")
07767         self.assertEqual(record.alignments[4].hsps[0].query_start, 99)
07768         self.assertEqual(record.alignments[4].hsps[0].query_end, 114)
07769         self.assertEqual(record.alignments[4].hsps[0].sbjct_start, 431)
07770         self.assertEqual(record.alignments[4].hsps[0].sbjct_end, 416)
07771         self.assertEqual(record.alignments[5].hsps[0].query, "agagaggaaaaggcag")
07772         self.assertEqual(record.alignments[5].hsps[0].match, "||||||||||||||||")
07773         self.assertEqual(record.alignments[5].hsps[0].sbjct, "agagaggaaaaggcag")
07774         self.assertEqual(record.alignments[5].hsps[0].query_start, 97)
07775         self.assertEqual(record.alignments[5].hsps[0].query_end, 112)
07776         self.assertEqual(record.alignments[5].hsps[0].sbjct_start, 107)
07777         self.assertEqual(record.alignments[5].hsps[0].sbjct_end, 122)
07778         self.assertEqual(record.alignments[6].hsps[0].query, "gaggaaaaggcaggag")
07779         self.assertEqual(record.alignments[6].hsps[0].match, "||||||||||||||||")
07780         self.assertEqual(record.alignments[6].hsps[0].sbjct, "gaggaaaaggcaggag")
07781         self.assertEqual(record.alignments[6].hsps[0].query_start, 100)
07782         self.assertEqual(record.alignments[6].hsps[0].query_end, 115)
07783         self.assertEqual(record.alignments[6].hsps[0].sbjct_start, 482)
07784         self.assertEqual(record.alignments[6].hsps[0].sbjct_end, 467)
07785         self.assertEqual(record.alignments[7].hsps[0].query, "cagaagcaaaaccaca")
07786         self.assertEqual(record.alignments[7].hsps[0].match, "||||||||||||||||")
07787         self.assertEqual(record.alignments[7].hsps[0].sbjct, "cagaagcaaaaccaca")
07788         self.assertEqual(record.alignments[7].hsps[0].query_start, 47)
07789         self.assertEqual(record.alignments[7].hsps[0].query_end, 62)
07790         self.assertEqual(record.alignments[7].hsps[0].sbjct_start, 193)
07791         self.assertEqual(record.alignments[7].hsps[0].sbjct_end, 178)
07792         self.assertEqual(record.alignments[8].hsps[0].query, "tgctttgttatattta")
07793         self.assertEqual(record.alignments[8].hsps[0].match, "||||||||||||||||")
07794         self.assertEqual(record.alignments[8].hsps[0].sbjct, "tgctttgttatattta")
07795         self.assertEqual(record.alignments[8].hsps[0].query_start, 286)
07796         self.assertEqual(record.alignments[8].hsps[0].query_end, 301)
07797         self.assertEqual(record.alignments[8].hsps[0].sbjct_start, 111)
07798         self.assertEqual(record.alignments[8].hsps[0].sbjct_end, 126)
07799         self.assertEqual(record.alignments[9].hsps[0].query, "cctccaccctctcat")
07800         self.assertEqual(record.alignments[9].hsps[0].match, "|||||||||||||||")
07801         self.assertEqual(record.alignments[9].hsps[0].sbjct, "cctccaccctctcat")
07802         self.assertEqual(record.alignments[9].hsps[0].query_start, 1)
07803         self.assertEqual(record.alignments[9].hsps[0].query_end, 15)
07804         self.assertEqual(record.alignments[9].hsps[0].sbjct_start, 618)
07805         self.assertEqual(record.alignments[9].hsps[0].sbjct_end, 604)
07806         self.assertEqual(record.alignments[10].hsps[0].query, "agagggccaggcagc")
07807         self.assertEqual(record.alignments[10].hsps[0].match, "|||||||||||||||")
07808         self.assertEqual(record.alignments[10].hsps[0].sbjct, "agagggccaggcagc")
07809         self.assertEqual(record.alignments[10].hsps[0].query_start, 117)
07810         self.assertEqual(record.alignments[10].hsps[0].query_end, 131)
07811         self.assertEqual(record.alignments[10].hsps[0].sbjct_start, 487)
07812         self.assertEqual(record.alignments[10].hsps[0].sbjct_end, 501)
07813         self.assertEqual(record.alignments[11].hsps[0].query, "gagctccccaaggag")
07814         self.assertEqual(record.alignments[11].hsps[0].match, "|||||||||||||||")
07815         self.assertEqual(record.alignments[11].hsps[0].sbjct, "gagctccccaaggag")
07816         self.assertEqual(record.alignments[11].hsps[0].query_start, 81)
07817         self.assertEqual(record.alignments[11].hsps[0].query_end, 95)
07818         self.assertEqual(record.alignments[11].hsps[0].sbjct_start, 278)
07819         self.assertEqual(record.alignments[11].hsps[0].sbjct_end, 264)
07820         self.assertEqual(record.alignments[12].hsps[0].query, "gcagagaggaaaaggcaggagga")
07821         self.assertEqual(record.alignments[12].hsps[0].match, "||||| |||| ||||||||||||")
07822         self.assertEqual(record.alignments[12].hsps[0].sbjct, "gcagacaggagaaggcaggagga")
07823         self.assertEqual(record.alignments[12].hsps[0].query_start, 95)
07824         self.assertEqual(record.alignments[12].hsps[0].query_end, 117)
07825         self.assertEqual(record.alignments[12].hsps[0].sbjct_start, 84)
07826         self.assertEqual(record.alignments[12].hsps[0].sbjct_end, 106)
07827         self.assertEqual(record.alignments[13].hsps[0].query, "aggcagcagggatgg")
07828         self.assertEqual(record.alignments[13].hsps[0].match, "|||||||||||||||")
07829         self.assertEqual(record.alignments[13].hsps[0].sbjct, "aggcagcagggatgg")
07830         self.assertEqual(record.alignments[13].hsps[0].query_start, 125)
07831         self.assertEqual(record.alignments[13].hsps[0].query_end, 139)
07832         self.assertEqual(record.alignments[13].hsps[0].sbjct_start, 58)
07833         self.assertEqual(record.alignments[13].hsps[0].sbjct_end, 44)
07834         self.assertEqual(record.alignments[14].hsps[0].query, "atgccctctggtagg")
07835         self.assertEqual(record.alignments[14].hsps[0].match, "|||||||||||||||")
07836         self.assertEqual(record.alignments[14].hsps[0].sbjct, "atgccctctggtagg")
07837         self.assertEqual(record.alignments[14].hsps[0].query_start, 184)
07838         self.assertEqual(record.alignments[14].hsps[0].query_end, 198)
07839         self.assertEqual(record.alignments[14].hsps[0].sbjct_start, 114)
07840         self.assertEqual(record.alignments[14].hsps[0].sbjct_end, 100)
07841         self.assertEqual(record.alignments[15].hsps[0].query, "ggatggagactaagt")
07842         self.assertEqual(record.alignments[15].hsps[0].match, "|||||||||||||||")
07843         self.assertEqual(record.alignments[15].hsps[0].sbjct, "ggatggagactaagt")
07844         self.assertEqual(record.alignments[15].hsps[0].query_start, 134)
07845         self.assertEqual(record.alignments[15].hsps[0].query_end, 148)
07846         self.assertEqual(record.alignments[15].hsps[0].sbjct_start, 451)
07847         self.assertEqual(record.alignments[15].hsps[0].sbjct_end, 465)
07848         self.assertEqual(record.alignments[16].hsps[0].query, "cagcagggatggaga")
07849         self.assertEqual(record.alignments[16].hsps[0].match, "|||||||||||||||")
07850         self.assertEqual(record.alignments[16].hsps[0].sbjct, "cagcagggatggaga")
07851         self.assertEqual(record.alignments[16].hsps[0].query_start, 128)
07852         self.assertEqual(record.alignments[16].hsps[0].query_end, 142)
07853         self.assertEqual(record.alignments[16].hsps[0].sbjct_start, 163)
07854         self.assertEqual(record.alignments[16].hsps[0].sbjct_end, 149)
07855         self.assertEqual(record.alignments[17].hsps[0].query, "tggagactaagtttggccc")
07856         self.assertEqual(record.alignments[17].hsps[0].match, "||||||||||||| |||||")
07857         self.assertEqual(record.alignments[17].hsps[0].sbjct, "tggagactaagttgggccc")
07858         self.assertEqual(record.alignments[17].hsps[0].query_start, 137)
07859         self.assertEqual(record.alignments[17].hsps[0].query_end, 155)
07860         self.assertEqual(record.alignments[17].hsps[0].sbjct_start, 302)
07861         self.assertEqual(record.alignments[17].hsps[0].sbjct_end, 320)
07862         self.assertEqual(record.alignments[18].hsps[0].query, "tcactggttcaacta")
07863         self.assertEqual(record.alignments[18].hsps[0].match, "|||||||||||||||")
07864         self.assertEqual(record.alignments[18].hsps[0].sbjct, "tcactggttcaacta")
07865         self.assertEqual(record.alignments[18].hsps[0].query_start, 265)
07866         self.assertEqual(record.alignments[18].hsps[0].query_end, 279)
07867         self.assertEqual(record.alignments[18].hsps[0].sbjct_start, 185)
07868         self.assertEqual(record.alignments[18].hsps[0].sbjct_end, 199)
07869         self.assertEqual(record.alignments[19].hsps[0].query, "aaggagcagagaggaaaag")
07870         self.assertEqual(record.alignments[19].hsps[0].match, "|||||| ||||||||||||")
07871         self.assertEqual(record.alignments[19].hsps[0].sbjct, "aaggagaagagaggaaaag")
07872         self.assertEqual(record.alignments[19].hsps[0].query_start, 90)
07873         self.assertEqual(record.alignments[19].hsps[0].query_end, 108)
07874         self.assertEqual(record.alignments[19].hsps[0].sbjct_start, 209)
07875         self.assertEqual(record.alignments[19].hsps[0].sbjct_end, 227)
07876         self.assertEqual(record.alignments[20].hsps[0].query, "gagagggccaggcag")
07877         self.assertEqual(record.alignments[20].hsps[0].match, "|||||||||||||||")
07878         self.assertEqual(record.alignments[20].hsps[0].sbjct, "gagagggccaggcag")
07879         self.assertEqual(record.alignments[20].hsps[0].query_start, 116)
07880         self.assertEqual(record.alignments[20].hsps[0].query_end, 130)
07881         self.assertEqual(record.alignments[20].hsps[0].sbjct_start, 155)
07882         self.assertEqual(record.alignments[20].hsps[0].sbjct_end, 169)
07883         self.assertEqual(record.alignments[21].hsps[0].query, "gcagccagaagcaaa")
07884         self.assertEqual(record.alignments[21].hsps[0].match,