text: # This code is part of the Biopython distribution and governed by its
  # license.  Please see the LICENSE file that should have been included
  # as part of this package.
  
  from Bio import UniGene
  import unittest
  
  
  class TestUniGene(unittest.TestCase):
  
      def test_parse(self):
  
          #Start of the UniGene file for Equus caballus downloaded from:
          #ftp://ftp.ncbi.nih.gov/repository/UniGene/Equus_caballus
          handle = open("UniGene/Eca.1.2425.data")
  
          records = UniGene.parse(handle)
  
          # First record
          record = next(records)
          self.assertEqual(record.ID, "Eca.1")
          self.assertEqual(record.title, "Ribosomal protein L3")
          self.assertEqual(record.symbol, "RPL3")
          self.assertEqual(record.gene_id, "100070291")
          self.assertEqual(record.locuslink, "100070291")
          self.assertEqual(record.homol, True)
          self.assertEqual(record.express, ["blood", "cartilage", "trophoblast", "adult"])
          self.assertEqual(record.restr_expr, ["blood", "adult"])
          self.assertEqual(len(record.protsim), 40)
          self.assertEqual(record.protsim[0].org, "10090")
          self.assertEqual(record.protsim[0].protgi, "149270989")
          self.assertEqual(record.protsim[0].protid, "XP_001477314.1")
          self.assertEqual(record.protsim[0].pct, "99.26")
          self.assertEqual(record.protsim[0].aln, "401")
          self.assertEqual(record.protsim[1].org, "5207")
          self.assertEqual(record.protsim[1].protgi, "134117057")
          self.assertEqual(record.protsim[1].protid, "XP_772755.1")
          self.assertEqual(record.protsim[1].pct, "70.91")
          self.assertEqual(record.protsim[1].aln, "384")
          self.assertEqual(record.protsim[2].org, "44689")
          self.assertEqual(record.protsim[2].protgi, "66802278")
          self.assertEqual(record.protsim[2].protid, "XP_629921.1")
          self.assertEqual(record.protsim[2].pct, "67.76")
          self.assertEqual(record.protsim[2].aln, "396")
          self.assertEqual(record.protsim[3].org, "9606")
          self.assertEqual(record.protsim[3].protgi, "4506649")
          self.assertEqual(record.protsim[3].protid, "NP_000958.1")
          self.assertEqual(record.protsim[3].pct, "99.50")
          self.assertEqual(record.protsim[3].aln, "401")
          self.assertEqual(record.protsim[4].org, "7719")
          self.assertEqual(record.protsim[4].protgi, "198435984")
          self.assertEqual(record.protsim[4].protid, "XP_002132034.1")
          self.assertEqual(record.protsim[4].pct, "80.15")
          self.assertEqual(record.protsim[4].aln, "402")
          self.assertEqual(record.protsim[5].org, "13616")
          self.assertEqual(record.protsim[5].protgi, "126339540")
          self.assertEqual(record.protsim[5].protid, "XP_001366844.1")
          self.assertEqual(record.protsim[5].pct, "97.05")
          self.assertEqual(record.protsim[5].aln, "405")
          self.assertEqual(record.protsim[6].org, "9615")
          self.assertEqual(record.protsim[6].protgi, "73969069")
          self.assertEqual(record.protsim[6].protid, "XP_531732.2")
          self.assertEqual(record.protsim[6].pct, "99.50")
          self.assertEqual(record.protsim[6].aln, "401")
          self.assertEqual(record.protsim[7].org, "3218")
          self.assertEqual(record.protsim[7].protgi, "168040500")
          self.assertEqual(record.protsim[7].protid, "XP_001772732.1")
          self.assertEqual(record.protsim[7].pct, "73.01")
          self.assertEqual(record.protsim[7].aln, "388")
          self.assertEqual(record.protsim[8].org, "9913")
          self.assertEqual(record.protsim[8].protgi, "27807287")
          self.assertEqual(record.protsim[8].protid, "NP_777140.1")
          self.assertEqual(record.protsim[8].pct, "99.26")
          self.assertEqual(record.protsim[8].aln, "401")
          self.assertEqual(record.protsim[9].org, "8355")
          self.assertEqual(record.protsim[9].protgi, "148228673")
          self.assertEqual(record.protsim[9].protid, "NP_001080341.1")
          self.assertEqual(record.protsim[9].pct, "94.04")
          self.assertEqual(record.protsim[9].aln, "401")
          self.assertEqual(record.protsim[10].org, "9258")
          self.assertEqual(record.protsim[10].protgi, "149585070")
          self.assertEqual(record.protsim[10].protid, "XP_001514408.1")
          self.assertEqual(record.protsim[10].pct, "97.29")
          self.assertEqual(record.protsim[10].aln, "367")
          self.assertEqual(record.protsim[11].org, "7955")
          self.assertEqual(record.protsim[11].protgi, "48597014")
          self.assertEqual(record.protsim[11].protid, "NP_001001590.1")
          self.assertEqual(record.protsim[11].pct, "92.31")
          self.assertEqual(record.protsim[11].aln, "401")
          self.assertEqual(record.protsim[12].org, "7227")
          self.assertEqual(record.protsim[12].protgi, "17737907")
          self.assertEqual(record.protsim[12].protid, "NP_524316.1")
          self.assertEqual(record.protsim[12].pct, "78.91")
          self.assertEqual(record.protsim[12].aln, "402")
          self.assertEqual(record.protsim[13].org, "28985")
          self.assertEqual(record.protsim[13].protgi, "50311593")
          self.assertEqual(record.protsim[13].protid, "XP_455822.1")
          self.assertEqual(record.protsim[13].pct, "72.28")
          self.assertEqual(record.protsim[13].aln, "385")
          self.assertEqual(record.protsim[14].org, "9796")
          self.assertEqual(record.protsim[14].protgi, "149743311")
          self.assertEqual(record.protsim[14].protid, "XP_001501957.1")
          self.assertEqual(record.protsim[14].pct, "100.00")
          self.assertEqual(record.protsim[14].aln, "401")
          self.assertEqual(record.protsim[15].org, "4896")
          self.assertEqual(record.protsim[15].protgi, "19115692")
          self.assertEqual(record.protsim[15].protid, "NP_594780.1")
          self.assertEqual(record.protsim[15].pct, "74.61")
          self.assertEqual(record.protsim[15].aln, "385")
          self.assertEqual(record.protsim[16].org, "4932")
          self.assertEqual(record.protsim[16].protgi, "6324637")
          self.assertEqual(record.protsim[16].protid, "NP_014706.1")
          self.assertEqual(record.protsim[16].pct, "72.02")
          self.assertEqual(record.protsim[16].aln, "385")
          self.assertEqual(record.protsim[17].org, "8364")
          self.assertEqual(record.protsim[17].protgi, "187607061")
          self.assertEqual(record.protsim[17].protid, "NP_001120075.1")
          self.assertEqual(record.protsim[17].pct, "94.54")
          self.assertEqual(record.protsim[17].aln, "401")
          self.assertEqual(record.protsim[18].org, "5911")
          self.assertEqual(record.protsim[18].protgi, "118389862")
          self.assertEqual(record.protsim[18].protid, "XP_001027976.1")
          self.assertEqual(record.protsim[18].pct, "64.60")
          self.assertEqual(record.protsim[18].aln, "386")
          self.assertEqual(record.protsim[19].org, "4530")
          self.assertEqual(record.protsim[19].protgi, "115487526")
          self.assertEqual(record.protsim[19].protid, "NP_001066250.1")
          self.assertEqual(record.protsim[19].pct, "73.20")
          self.assertEqual(record.protsim[19].aln, "387")
          self.assertEqual(record.protsim[20].org, "10116")
          self.assertEqual(record.protsim[20].protgi, "38454246")
          self.assertEqual(record.protsim[20].protid, "NP_942048.1")
          self.assertEqual(record.protsim[20].pct, "99.01")
          self.assertEqual(record.protsim[20].aln, "401")
          self.assertEqual(record.protsim[21].org, "5833")
          self.assertEqual(record.protsim[21].protgi, "124802670")
          self.assertEqual(record.protsim[21].protid, "XP_001347556.1")
          self.assertEqual(record.protsim[21].pct, "69.45")
          self.assertEqual(record.protsim[21].aln, "382")
          self.assertEqual(record.protsim[22].org, "148305")
          self.assertEqual(record.protsim[22].protgi, "145608344")
          self.assertEqual(record.protsim[22].protid, "XP_360650.2")
          self.assertEqual(record.protsim[22].pct, "71.28")
          self.assertEqual(record.protsim[22].aln, "389")
          self.assertEqual(record.protsim[23].org, "7668")
          self.assertEqual(record.protsim[23].protgi, "115725235")
          self.assertEqual(record.protsim[23].protid, "XP_791350.2")
          self.assertEqual(record.protsim[23].pct, "81.50")
          self.assertEqual(record.protsim[23].aln, "399")
          self.assertEqual(record.protsim[24].org, "3702")
          self.assertEqual(record.protsim[24].protgi, "15218306")
          self.assertEqual(record.protsim[24].protid, "NP_175009.1")
          self.assertEqual(record.protsim[24].pct, "71.47")
          self.assertEqual(record.protsim[24].aln, "387")
          self.assertEqual(record.protsim[25].org, "45351")
          self.assertEqual(record.protsim[25].protgi, "156359547")
          self.assertEqual(record.protsim[25].protid, "XP_001624829.1")
          self.assertEqual(record.protsim[25].pct, "80.10")
          self.assertEqual(record.protsim[25].aln, "396")
          self.assertEqual(record.protsim[26].org, "7091")
          self.assertEqual(record.protsim[26].protgi, "112982798")
          self.assertEqual(record.protsim[26].protid, "NP_001037126.1")
          self.assertEqual(record.protsim[26].pct, "80.65")
          self.assertEqual(record.protsim[26].aln, "402")
          self.assertEqual(record.protsim[27].org, "33169")
          self.assertEqual(record.protsim[27].protgi, "45188079")
          self.assertEqual(record.protsim[27].protid, "NP_984302.1")
          self.assertEqual(record.protsim[27].pct, "72.35")
          self.assertEqual(record.protsim[27].aln, "386")
          self.assertEqual(record.protsim[28].org, "7460")
          self.assertEqual(record.protsim[28].protgi, "66566113")
          self.assertEqual(record.protsim[28].protid, "XP_624821.1")
          self.assertEqual(record.protsim[28].pct, "80.89")
          self.assertEqual(record.protsim[28].aln, "402")
          self.assertEqual(record.protsim[29].org, "5141")
          self.assertEqual(record.protsim[29].protgi, "164424622")
          self.assertEqual(record.protsim[29].protid, "XP_963317.2")
          self.assertEqual(record.protsim[29].pct, "71.54")
          self.assertEqual(record.protsim[29].aln, "389")
          self.assertEqual(record.protsim[30].org, "6239")
          self.assertEqual(record.protsim[30].protgi, "71984538")
          self.assertEqual(record.protsim[30].protid, "NP_001021254.1")
          self.assertEqual(record.protsim[30].pct, "75.63")
          self.assertEqual(record.protsim[30].aln, "397")
          self.assertEqual(record.protsim[31].org, "3055")
          self.assertEqual(record.protsim[31].protgi, "159489312")
          self.assertEqual(record.protsim[31].protid, "XP_001702641.1")
          self.assertEqual(record.protsim[31].pct, "72.99")
          self.assertEqual(record.protsim[31].aln, "384")
          self.assertEqual(record.protsim[32].org, "7070")
          self.assertEqual(record.protsim[32].protgi, "189240524")
          self.assertEqual(record.protsim[32].protid, "XP_971875.2")
          self.assertEqual(record.protsim[32].pct, "76.67")
          self.assertEqual(record.protsim[32].aln, "402")
          self.assertEqual(record.protsim[33].org, "7165")
          self.assertEqual(record.protsim[33].protgi, "158291770")
          self.assertEqual(record.protsim[33].protid, "XP_313303.4")
          self.assertEqual(record.protsim[33].pct, "76.56")
          self.assertEqual(record.protsim[33].aln, "400")
          self.assertEqual(record.protsim[34].org, "9544")
          self.assertEqual(record.protsim[34].protgi, "109094341")
          self.assertEqual(record.protsim[34].protid, "XP_001095608.1")
          self.assertEqual(record.protsim[34].pct, "99.50")
          self.assertEqual(record.protsim[34].aln, "401")
          self.assertEqual(record.protsim[35].org, "7176")
          self.assertEqual(record.protsim[35].protgi, "170041842")
          self.assertEqual(record.protsim[35].protid, "XP_001848658.1")
          self.assertEqual(record.protsim[35].pct, "74.75")
          self.assertEqual(record.protsim[35].aln, "403")
          self.assertEqual(record.protsim[36].org, "5888")
          self.assertEqual(record.protsim[36].protgi, "145475213")
          self.assertEqual(record.protsim[36].protid, "XP_001423629.1")
          self.assertEqual(record.protsim[36].pct, "66.67")
          self.assertEqual(record.protsim[36].aln, "377")
          self.assertEqual(record.protsim[37].org, "9031")
          self.assertEqual(record.protsim[37].protgi, "57525400")
          self.assertEqual(record.protsim[37].protid, "NP_001006241.1")
          self.assertEqual(record.protsim[37].pct, "97.27")
          self.assertEqual(record.protsim[37].aln, "401")
          self.assertEqual(record.protsim[38].org, "7029")
          self.assertEqual(record.protsim[38].protgi, "193580256")
          self.assertEqual(record.protsim[38].protid, "XP_001951042.1")
          self.assertEqual(record.protsim[38].pct, "79.40")
          self.assertEqual(record.protsim[38].aln, "402")
          self.assertEqual(record.protsim[39].org, "9598")
          self.assertEqual(record.protsim[39].protgi, "114608746")
          self.assertEqual(record.protsim[39].protid, "XP_518669.2")
          self.assertEqual(record.protsim[39].pct, "93.73")
          self.assertEqual(record.protsim[39].aln, "381")
          self.assertEqual(len(record.sequence), 69)
          self.assertEqual(record.sequence[0].acc, "XM_001501907.1")
          self.assertEqual(record.sequence[0].nid, "g149743310")
          self.assertEqual(record.sequence[0].pid, "g149743311")
          self.assertEqual(record.sequence[0].seqtype, "Model")
          self.assertEqual(record.sequence[1].acc, "CD469355.1")
          self.assertEqual(record.sequence[1].nid, "g31390623")
          self.assertEqual(record.sequence[1].clone, "LeukoS2_3_H08_A024")
          self.assertEqual(record.sequence[1].end, "5'")
          self.assertEqual(record.sequence[1].lid, "13776")
          self.assertEqual(record.sequence[1].seqtype, "EST")
          self.assertEqual(record.sequence[1].trace, "891191391")
          self.assertEqual(record.sequence[2].acc, "CD535273.1")
          self.assertEqual(record.sequence[2].nid, "g31577688")
          self.assertEqual(record.sequence[2].clone, "LeukoN5_1_E01_A027")
          self.assertEqual(record.sequence[2].end, "5'")
          self.assertEqual(record.sequence[2].lid, "13843")
          self.assertEqual(record.sequence[2].seqtype, "EST")
          self.assertEqual(record.sequence[2].trace, "891188893")
          self.assertEqual(record.sequence[3].acc, "CD466249.1")
          self.assertEqual(record.sequence[3].nid, "g31387517")
          self.assertEqual(record.sequence[3].clone, "LeukoN2_3_E11_A024")
          self.assertEqual(record.sequence[3].end, "3'")
          self.assertEqual(record.sequence[3].lid, "13773")
          self.assertEqual(record.sequence[3].seqtype, "EST")
          self.assertEqual(record.sequence[3].trace, "891186094")
          self.assertEqual(record.sequence[4].acc, "CD465822.1")
          self.assertEqual(record.sequence[4].nid, "g31387090")
          self.assertEqual(record.sequence[4].clone, "LeukoN1_8_C11_A023")
          self.assertEqual(record.sequence[4].end, "3'")
          self.assertEqual(record.sequence[4].lid, "13772")
          self.assertEqual(record.sequence[4].seqtype, "EST")
          self.assertEqual(record.sequence[4].trace, "891184882")
          self.assertEqual(record.sequence[5].acc, "CD466309.1")
          self.assertEqual(record.sequence[5].nid, "g31387577")
          self.assertEqual(record.sequence[5].clone, "LeukoN2_3_E11_A024")
          self.assertEqual(record.sequence[5].end, "5'")
          self.assertEqual(record.sequence[5].lid, "13773")
          self.assertEqual(record.sequence[5].seqtype, "EST")
          self.assertEqual(record.sequence[5].trace, "891185997")
          self.assertEqual(record.sequence[6].acc, "CD465893.1")
          self.assertEqual(record.sequence[6].nid, "g31387161")
          self.assertEqual(record.sequence[6].clone, "LeukoN1_8_C11_A023")
          self.assertEqual(record.sequence[6].end, "5'")
          self.assertEqual(record.sequence[6].lid, "13772")
          self.assertEqual(record.sequence[6].seqtype, "EST")
          self.assertEqual(record.sequence[6].trace, "891185010")
          self.assertEqual(record.sequence[7].acc, "CD471087.1")
          self.assertEqual(record.sequence[7].nid, "g31392355")
          self.assertEqual(record.sequence[7].clone, "LeukoS5_4_H03_A027")
          self.assertEqual(record.sequence[7].end, "5'")
          self.assertEqual(record.sequence[7].lid, "13778")
          self.assertEqual(record.sequence[7].seqtype, "EST")
          self.assertEqual(record.sequence[7].trace, "891193766")
          self.assertEqual(record.sequence[8].acc, "CD472103.1")
          self.assertEqual(record.sequence[8].nid, "g31393371")
          self.assertEqual(record.sequence[8].clone, "LeukoS6_1_C10_A028")
          self.assertEqual(record.sequence[8].end, "3'")
          self.assertEqual(record.sequence[8].lid, "13779")
          self.assertEqual(record.sequence[8].seqtype, "EST")
          self.assertEqual(record.sequence[8].trace, "891194618")
          self.assertEqual(record.sequence[9].acc, "CD471067.1")
          self.assertEqual(record.sequence[9].nid, "g31392335")
          self.assertEqual(record.sequence[9].clone, "LeukoS5_4_H03_A027")
          self.assertEqual(record.sequence[9].end, "3'")
          self.assertEqual(record.sequence[9].lid, "13778")
          self.assertEqual(record.sequence[9].seqtype, "EST")
          self.assertEqual(record.sequence[9].trace, "891194175")
          self.assertEqual(record.sequence[10].acc, "CD470984.1")
          self.assertEqual(record.sequence[10].nid, "g31392252")
          self.assertEqual(record.sequence[10].clone, "LeukoS5_3_A04_A027")
          self.assertEqual(record.sequence[10].end, "5'")
          self.assertEqual(record.sequence[10].lid, "13778")
          self.assertEqual(record.sequence[10].seqtype, "EST")
          self.assertEqual(record.sequence[10].trace, "891194114")
          self.assertEqual(record.sequence[11].acc, "CD472154.1")
          self.assertEqual(record.sequence[11].nid, "g31393422")
          self.assertEqual(record.sequence[11].clone, "LeukoS6_1_H10_A028")
          self.assertEqual(record.sequence[11].end, "3'")
          self.assertEqual(record.sequence[11].lid, "13779")
          self.assertEqual(record.sequence[11].seqtype, "EST")
          self.assertEqual(record.sequence[11].trace, "891195062")
          self.assertEqual(record.sequence[12].acc, "CD467586.1")
          self.assertEqual(record.sequence[12].nid, "g31388854")
          self.assertEqual(record.sequence[12].clone, "LeukoS1_5_G11_A023")
          self.assertEqual(record.sequence[12].end, "5'")
          self.assertEqual(record.sequence[12].lid, "13774")
          self.assertEqual(record.sequence[12].seqtype, "EST")
          self.assertEqual(record.sequence[12].trace, "891190912")
          self.assertEqual(record.sequence[13].acc, "CD465578.1")
          self.assertEqual(record.sequence[13].nid, "g31386846")
          self.assertEqual(record.sequence[13].clone, "LeukoN1_5_F07_A023")
          self.assertEqual(record.sequence[13].end, "5'")
          self.assertEqual(record.sequence[13].lid, "13772")
          self.assertEqual(record.sequence[13].seqtype, "EST")
          self.assertEqual(record.sequence[13].trace, "891185096")
          self.assertEqual(record.sequence[14].acc, "CD465858.1")
          self.assertEqual(record.sequence[14].nid, "g31387126")
          self.assertEqual(record.sequence[14].clone, "LeukoN1_8_H04_A023")
          self.assertEqual(record.sequence[14].end, "3'")
          self.assertEqual(record.sequence[14].lid, "13772")
          self.assertEqual(record.sequence[14].seqtype, "EST")
          self.assertEqual(record.sequence[14].trace, "891185129")
          self.assertEqual(record.sequence[15].acc, "CD471796.1")
          self.assertEqual(record.sequence[15].nid, "g31393064")
          self.assertEqual(record.sequence[15].clone, "LeukoS6_2_D05_A028")
          self.assertEqual(record.sequence[15].end, "3'")
          self.assertEqual(record.sequence[15].lid, "13779")
          self.assertEqual(record.sequence[15].seqtype, "EST")
          self.assertEqual(record.sequence[15].trace, "891194917")
          self.assertEqual(record.sequence[16].acc, "CD471724.1")
          self.assertEqual(record.sequence[16].nid, "g31392992")
          self.assertEqual(record.sequence[16].clone, "LeukoS6_4_F09_A028")
          self.assertEqual(record.sequence[16].end, "5'")
          self.assertEqual(record.sequence[16].lid, "13779")
          self.assertEqual(record.sequence[16].seqtype, "EST")
          self.assertEqual(record.sequence[16].trace, "891195058")
          self.assertEqual(record.sequence[17].acc, "CD471610.1")
          self.assertEqual(record.sequence[17].nid, "g31392878")
          self.assertEqual(record.sequence[17].clone, "LeukoS6_4_F09_A028")
          self.assertEqual(record.sequence[17].end, "3'")
          self.assertEqual(record.sequence[17].lid, "13779")
          self.assertEqual(record.sequence[17].seqtype, "EST")
          self.assertEqual(record.sequence[17].trace, "891194846")
          self.assertEqual(record.sequence[18].acc, "CD535233.1")
          self.assertEqual(record.sequence[18].nid, "g31577648")
          self.assertEqual(record.sequence[18].clone, "LeukoN5_1_B08_A027")
          self.assertEqual(record.sequence[18].end, "5'")
          self.assertEqual(record.sequence[18].lid, "13843")
          self.assertEqual(record.sequence[18].seqtype, "EST")
          self.assertEqual(record.sequence[18].trace, "891188752")
          self.assertEqual(record.sequence[19].acc, "CD464482.1")
          self.assertEqual(record.sequence[19].nid, "g31385750")
          self.assertEqual(record.sequence[19].clone, "LeukoN4_4_D01_A026")
          self.assertEqual(record.sequence[19].end, "3'")
          self.assertEqual(record.sequence[19].lid, "13771")
          self.assertEqual(record.sequence[19].seqtype, "EST")
          self.assertEqual(record.sequence[19].trace, "891187846")
          self.assertEqual(record.sequence[20].acc, "CD468770.1")
          self.assertEqual(record.sequence[20].nid, "g31390038")
          self.assertEqual(record.sequence[20].clone, "LeukoS3_5_D03_A025")
          self.assertEqual(record.sequence[20].end, "5'")
          self.assertEqual(record.sequence[20].lid, "13775")
          self.assertEqual(record.sequence[20].seqtype, "EST")
          self.assertEqual(record.sequence[20].trace, "891192280")
          self.assertEqual(record.sequence[21].acc, "CD470966.1")
          self.assertEqual(record.sequence[21].nid, "g31392234")
          self.assertEqual(record.sequence[21].clone, "LeukoS5_3_F05_A027")
          self.assertEqual(record.sequence[21].end, "5'")
          self.assertEqual(record.sequence[21].lid, "13778")
          self.assertEqual(record.sequence[21].seqtype, "EST")
          self.assertEqual(record.sequence[21].trace, "891193981")
          self.assertEqual(record.sequence[22].acc, "CD536398.1")
          self.assertEqual(record.sequence[22].nid, "g31578813")
          self.assertEqual(record.sequence[22].clone, "LeukoN6_7_C09_A028")
          self.assertEqual(record.sequence[22].end, "5'")
          self.assertEqual(record.sequence[22].lid, "13844")
          self.assertEqual(record.sequence[22].seqtype, "EST")
          self.assertEqual(record.sequence[22].trace, "891184341")
          self.assertEqual(record.sequence[23].acc, "CD535162.1")
          self.assertEqual(record.sequence[23].nid, "g31577577")
          self.assertEqual(record.sequence[23].clone, "LeukoN5_1_E01_A027")
          self.assertEqual(record.sequence[23].end, "3'")
          self.assertEqual(record.sequence[23].lid, "13843")
          self.assertEqual(record.sequence[23].seqtype, "EST")
          self.assertEqual(record.sequence[23].trace, "891188481")
          self.assertEqual(record.sequence[24].acc, "CD536377.1")
          self.assertEqual(record.sequence[24].nid, "g31578792")
          self.assertEqual(record.sequence[24].clone, "LeukoN6_7_C09_A028")
          self.assertEqual(record.sequence[24].end, "3'")
          self.assertEqual(record.sequence[24].lid, "13844")
          self.assertEqual(record.sequence[24].seqtype, "EST")
          self.assertEqual(record.sequence[24].trace, "891184713")
          self.assertEqual(record.sequence[25].acc, "CX603705.1")
          self.assertEqual(record.sequence[25].nid, "g57720427")
          self.assertEqual(record.sequence[25].clone, "CT02036A2C09")
          self.assertEqual(record.sequence[25].lid, "16895")
          self.assertEqual(record.sequence[25].seqtype, "EST")
          self.assertEqual(record.sequence[26].acc, "CD470556.1")
          self.assertEqual(record.sequence[26].nid, "g31391824")
          self.assertEqual(record.sequence[26].clone, "LeukoS4_5_C09_A026")
          self.assertEqual(record.sequence[26].end, "5'")
          self.assertEqual(record.sequence[26].lid, "13777")
          self.assertEqual(record.sequence[26].seqtype, "EST")
          self.assertEqual(record.sequence[26].trace, "891193234")
          self.assertEqual(record.sequence[27].acc, "CD466384.1")
          self.assertEqual(record.sequence[27].nid, "g31387652")
          self.assertEqual(record.sequence[27].clone, "LeukoN2_3_A06_A024")
          self.assertEqual(record.sequence[27].end, "5'")
          self.assertEqual(record.sequence[27].lid, "13773")
          self.assertEqual(record.sequence[27].seqtype, "EST")
          self.assertEqual(record.sequence[27].trace, "891186500")
          self.assertEqual(record.sequence[28].acc, "CD472213.1")
          self.assertEqual(record.sequence[28].nid, "g31393481")
          self.assertEqual(record.sequence[28].clone, "LeukoS6_1_C10_A028")
          self.assertEqual(record.sequence[28].end, "5'")
          self.assertEqual(record.sequence[28].lid, "13779")
          self.assertEqual(record.sequence[28].seqtype, "EST")
          self.assertEqual(record.sequence[28].trace, "891194841")
          self.assertEqual(record.sequence[29].acc, "DN510913.1")
          self.assertEqual(record.sequence[29].nid, "g60721103")
          self.assertEqual(record.sequence[29].clone, "HL02021A2C09")
          self.assertEqual(record.sequence[29].lid, "17147")
          self.assertEqual(record.sequence[29].seqtype, "EST")
          self.assertEqual(record.sequence[30].acc, "CD472329.1")
          self.assertEqual(record.sequence[30].nid, "g31393597")
          self.assertEqual(record.sequence[30].clone, "LeukoS6_5_H05_A028")
          self.assertEqual(record.sequence[30].end, "3'")
          self.assertEqual(record.sequence[30].lid, "13779")
          self.assertEqual(record.sequence[30].seqtype, "EST")
          self.assertEqual(record.sequence[30].trace, "891195397")
          self.assertEqual(record.sequence[31].acc, "CD536804.1")
          self.assertEqual(record.sequence[31].nid, "g31579219")
          self.assertEqual(record.sequence[31].clone, "LeukoN6_6_F12_A028")
          self.assertEqual(record.sequence[31].end, "3'")
          self.assertEqual(record.sequence[31].lid, "13844")
          self.assertEqual(record.sequence[31].seqtype, "EST")
          self.assertEqual(record.sequence[31].trace, "891184838")
          self.assertEqual(record.sequence[32].acc, "CD466071.1")
          self.assertEqual(record.sequence[32].nid, "g31387339")
          self.assertEqual(record.sequence[32].clone, "LeukoN2_1_E06_A024")
          self.assertEqual(record.sequence[32].end, "5'")
          self.assertEqual(record.sequence[32].lid, "13773")
          self.assertEqual(record.sequence[32].seqtype, "EST")
          self.assertEqual(record.sequence[32].trace, "891186571")
          self.assertEqual(record.sequence[33].acc, "CD471909.1")
          self.assertEqual(record.sequence[33].nid, "g31393177")
          self.assertEqual(record.sequence[33].clone, "LeukoS6_2_D05_A028")
          self.assertEqual(record.sequence[33].end, "5'")
          self.assertEqual(record.sequence[33].lid, "13779")
          self.assertEqual(record.sequence[33].seqtype, "EST")
          self.assertEqual(record.sequence[33].trace, "891195132")
          self.assertEqual(record.sequence[34].acc, "CD465985.1")
          self.assertEqual(record.sequence[34].nid, "g31387253")
          self.assertEqual(record.sequence[34].clone, "LeukoN2_1_E06_A024")
          self.assertEqual(record.sequence[34].end, "3'")
          self.assertEqual(record.sequence[34].lid, "13773")
          self.assertEqual(record.sequence[34].seqtype, "EST")
          self.assertEqual(record.sequence[34].trace, "891186530")
          self.assertEqual(record.sequence[35].acc, "CD471244.1")
          self.assertEqual(record.sequence[35].nid, "g31392512")
          self.assertEqual(record.sequence[35].clone, "LeukoS5_1_F09_A027")
          self.assertEqual(record.sequence[35].end, "5'")
          self.assertEqual(record.sequence[35].lid, "13778")
          self.assertEqual(record.sequence[35].seqtype, "EST")
          self.assertEqual(record.sequence[35].trace, "891193761")
          self.assertEqual(record.sequence[36].acc, "DN508615.1")
          self.assertEqual(record.sequence[36].nid, "g60718805")
          self.assertEqual(record.sequence[36].clone, "HL02013A1F04")
          self.assertEqual(record.sequence[36].lid, "17147")
          self.assertEqual(record.sequence[36].seqtype, "EST")
          self.assertEqual(record.sequence[37].acc, "CD465146.1")
          self.assertEqual(record.sequence[37].nid, "g31386414")
          self.assertEqual(record.sequence[37].clone, "LeukoN1_2_E04_A023")
          self.assertEqual(record.sequence[37].end, "3'")
          self.assertEqual(record.sequence[37].lid, "13772")
          self.assertEqual(record.sequence[37].seqtype, "EST")
          self.assertEqual(record.sequence[37].trace, "891185503")
          self.assertEqual(record.sequence[38].acc, "CD465620.1")
          self.assertEqual(record.sequence[38].nid, "g31386888")
          self.assertEqual(record.sequence[38].clone, "LeukoN1_6_E09_A023")
          self.assertEqual(record.sequence[38].end, "3'")
          self.assertEqual(record.sequence[38].lid, "13772")
          self.assertEqual(record.sequence[38].seqtype, "EST")
          self.assertEqual(record.sequence[38].trace, "891184965")
          self.assertEqual(record.sequence[39].acc, "CD472042.1")
          self.assertEqual(record.sequence[39].nid, "g31393310")
          self.assertEqual(record.sequence[39].clone, "LeukoS6_3_F02_A028")
          self.assertEqual(record.sequence[39].end, "5'")
          self.assertEqual(record.sequence[39].lid, "13779")
          self.assertEqual(record.sequence[39].seqtype, "EST")
          self.assertEqual(record.sequence[39].trace, "891194801")
          self.assertEqual(record.sequence[40].acc, "CD471148.1")
          self.assertEqual(record.sequence[40].nid, "g31392416")
          self.assertEqual(record.sequence[40].clone, "LeukoS5_4_F11_A027")
          self.assertEqual(record.sequence[40].end, "5'")
          self.assertEqual(record.sequence[40].lid, "13778")
          self.assertEqual(record.sequence[40].seqtype, "EST")
          self.assertEqual(record.sequence[40].trace, "891194177")
          self.assertEqual(record.sequence[41].acc, "CD466241.1")
          self.assertEqual(record.sequence[41].nid, "g31387509")
          self.assertEqual(record.sequence[41].clone, "LeukoN2_3_A06_A024")
          self.assertEqual(record.sequence[41].end, "3'")
          self.assertEqual(record.sequence[41].lid, "13773")
          self.assertEqual(record.sequence[41].seqtype, "EST")
          self.assertEqual(record.sequence[41].trace, "891186007")
          self.assertEqual(record.sequence[42].acc, "CD472182.1")
          self.assertEqual(record.sequence[42].nid, "g31393450")
          self.assertEqual(record.sequence[42].clone, "LeukoS6_1_H10_A028")
          self.assertEqual(record.sequence[42].end, "5'")
          self.assertEqual(record.sequence[42].lid, "13779")
          self.assertEqual(record.sequence[42].seqtype, "EST")
          self.assertEqual(record.sequence[42].trace, "891194593")
          self.assertEqual(record.sequence[43].acc, "CD470462.1")
          self.assertEqual(record.sequence[43].nid, "g31391730")
          self.assertEqual(record.sequence[43].clone, "LeukoS4_5_C12_A026")
          self.assertEqual(record.sequence[43].end, "3'")
          self.assertEqual(record.sequence[43].lid, "13777")
          self.assertEqual(record.sequence[43].seqtype, "EST")
          self.assertEqual(record.sequence[43].trace, "891193322")
          self.assertEqual(record.sequence[44].acc, "CX596662.1")
          self.assertEqual(record.sequence[44].nid, "g57706330")
          self.assertEqual(record.sequence[44].clone, "CT020015A10A06")
          self.assertEqual(record.sequence[44].lid, "16895")
          self.assertEqual(record.sequence[44].seqtype, "EST")
          self.assertEqual(record.sequence[45].acc, "CD536825.1")
          self.assertEqual(record.sequence[45].nid, "g31579240")
          self.assertEqual(record.sequence[45].clone, "LeukoN6_6_F12_A028")
          self.assertEqual(record.sequence[45].end, "5'")
          self.assertEqual(record.sequence[45].lid, "13844")
          self.assertEqual(record.sequence[45].seqtype, "EST")
          self.assertEqual(record.sequence[45].trace, "891184460")
          self.assertEqual(record.sequence[46].acc, "CD471373.1")
          self.assertEqual(record.sequence[46].nid, "g31392641")
          self.assertEqual(record.sequence[46].clone, "LeukoS5_5_H05_A027")
          self.assertEqual(record.sequence[46].end, "3'")
          self.assertEqual(record.sequence[46].lid, "13778")
          self.assertEqual(record.sequence[46].seqtype, "EST")
          self.assertEqual(record.sequence[46].trace, "891194564")
          self.assertEqual(record.sequence[47].acc, "CD470875.1")
          self.assertEqual(record.sequence[47].nid, "g31392143")
          self.assertEqual(record.sequence[47].clone, "LeukoS5_3_F05_A027")
          self.assertEqual(record.sequence[47].end, "3'")
          self.assertEqual(record.sequence[47].lid, "13778")
          self.assertEqual(record.sequence[47].seqtype, "EST")
          self.assertEqual(record.sequence[47].trace, "891193793")
          self.assertEqual(record.sequence[48].acc, "CD470392.1")
          self.assertEqual(record.sequence[48].nid, "g31391660")
          self.assertEqual(record.sequence[48].clone, "LeukoS4_4_G05_A026")
          self.assertEqual(record.sequence[48].end, "3'")
          self.assertEqual(record.sequence[48].lid, "13777")
          self.assertEqual(record.sequence[48].seqtype, "EST")
          self.assertEqual(record.sequence[48].trace, "891193723")
          self.assertEqual(record.sequence[49].acc, "DN509023.1")
          self.assertEqual(record.sequence[49].nid, "g60719213")
          self.assertEqual(record.sequence[49].clone, "HL02014B1D10")
          self.assertEqual(record.sequence[49].lid, "17147")
          self.assertEqual(record.sequence[49].seqtype, "EST")
          self.assertEqual(record.sequence[50].acc, "CD471226.1")
          self.assertEqual(record.sequence[50].nid, "g31392494")
          self.assertEqual(record.sequence[50].clone, "LeukoS5_1_F09_A027")
          self.assertEqual(record.sequence[50].end, "3'")
          self.assertEqual(record.sequence[50].lid, "13778")
          self.assertEqual(record.sequence[50].seqtype, "EST")
          self.assertEqual(record.sequence[50].trace, "891194172")
          self.assertEqual(record.sequence[51].acc, "CD470547.1")
          self.assertEqual(record.sequence[51].nid, "g31391815")
          self.assertEqual(record.sequence[51].clone, "LeukoS4_5_C12_A026")
          self.assertEqual(record.sequence[51].end, "5'")
          self.assertEqual(record.sequence[51].lid, "13777")
          self.assertEqual(record.sequence[51].seqtype, "EST")
          self.assertEqual(record.sequence[51].trace, "891193220")
          self.assertEqual(record.sequence[52].acc, "CX593399.1")
          self.assertEqual(record.sequence[52].nid, "g57699803")
          self.assertEqual(record.sequence[52].clone, "CT020005A10B06")
          self.assertEqual(record.sequence[52].lid, "16895")
          self.assertEqual(record.sequence[52].seqtype, "EST")
          self.assertEqual(record.sequence[53].acc, "CD465261.1")
          self.assertEqual(record.sequence[53].nid, "g31386529")
          self.assertEqual(record.sequence[53].clone, "LeukoN1_2_E04_A023")
          self.assertEqual(record.sequence[53].end, "5'")
          self.assertEqual(record.sequence[53].lid, "13772")
          self.assertEqual(record.sequence[53].seqtype, "EST")
          self.assertEqual(record.sequence[53].trace, "891185735")
          self.assertEqual(record.sequence[54].acc, "CD470468.1")
          self.assertEqual(record.sequence[54].nid, "g31391736")
          self.assertEqual(record.sequence[54].clone, "LeukoS4_5_C09_A026")
          self.assertEqual(record.sequence[54].end, "3'")
          self.assertEqual(record.sequence[54].lid, "13777")
          self.assertEqual(record.sequence[54].seqtype, "EST")
          self.assertEqual(record.sequence[54].trace, "891193330")
          self.assertEqual(record.sequence[55].acc, "CX594874.1")
          self.assertEqual(record.sequence[55].nid, "g57702753")
          self.assertEqual(record.sequence[55].clone, "CT020009B10E10")
          self.assertEqual(record.sequence[55].lid, "16895")
          self.assertEqual(record.sequence[55].seqtype, "EST")
          self.assertEqual(record.sequence[56].acc, "CD464520.1")
          self.assertEqual(record.sequence[56].nid, "g31385788")
          self.assertEqual(record.sequence[56].clone, "LeukoN4_4_D01_A026")
          self.assertEqual(record.sequence[56].end, "5'")
          self.assertEqual(record.sequence[56].lid, "13771")
          self.assertEqual(record.sequence[56].seqtype, "EST")
          self.assertEqual(record.sequence[56].trace, "891188021")
          self.assertEqual(record.sequence[57].acc, "AW260814.1")
          self.assertEqual(record.sequence[57].nid, "g6636524")
          self.assertEqual(record.sequence[57].end, "5'")
          self.assertEqual(record.sequence[57].lid, "2777")
          self.assertEqual(record.sequence[57].seqtype, "EST")
          self.assertEqual(record.sequence[58].acc, "CD465691.1")
          self.assertEqual(record.sequence[58].nid, "g31386959")
          self.assertEqual(record.sequence[58].clone, "LeukoN1_6_E09_A023")
          self.assertEqual(record.sequence[58].end, "5'")
          self.assertEqual(record.sequence[58].lid, "13772")
          self.assertEqual(record.sequence[58].seqtype, "EST")
          self.assertEqual(record.sequence[58].trace, "891185089")
          self.assertEqual(record.sequence[59].acc, "CX595434.1")
          self.assertEqual(record.sequence[59].nid, "g57703875")
          self.assertEqual(record.sequence[59].clone, "CT020011A20F11")
          self.assertEqual(record.sequence[59].lid, "16895")
          self.assertEqual(record.sequence[59].seqtype, "EST")
          self.assertEqual(record.sequence[60].acc, "CD464759.1")
          self.assertEqual(record.sequence[60].nid, "g31386027")
          self.assertEqual(record.sequence[60].clone, "LeukoN4_6_A09_A026")
          self.assertEqual(record.sequence[60].end, "5'")
          self.assertEqual(record.sequence[60].lid, "13771")
          self.assertEqual(record.sequence[60].seqtype, "EST")
          self.assertEqual(record.sequence[60].trace, "891188174")
          self.assertEqual(record.sequence[61].acc, "CD469441.1")
          self.assertEqual(record.sequence[61].nid, "g31390709")
          self.assertEqual(record.sequence[61].clone, "LeukoS2_3_F03_A024")
          self.assertEqual(record.sequence[61].end, "5'")
          self.assertEqual(record.sequence[61].lid, "13776")
          self.assertEqual(record.sequence[61].seqtype, "EST")
          self.assertEqual(record.sequence[61].trace, "946412740")
          self.assertEqual(record.sequence[62].acc, "CD471416.1")
          self.assertEqual(record.sequence[62].nid, "g31392684")
          self.assertEqual(record.sequence[62].clone, "LeukoS5_5_H05_A027")
          self.assertEqual(record.sequence[62].end, "5'")
          self.assertEqual(record.sequence[62].lid, "13778")
          self.assertEqual(record.sequence[62].seqtype, "EST")
          self.assertEqual(record.sequence[62].trace, "891194460")
          self.assertEqual(record.sequence[63].acc, "CD536439.1")
          self.assertEqual(record.sequence[63].nid, "g31578854")
          self.assertEqual(record.sequence[63].clone, "LeukoN6_7_B04_A028")
          self.assertEqual(record.sequence[63].end, "5'")
          self.assertEqual(record.sequence[63].lid, "13844")
          self.assertEqual(record.sequence[63].seqtype, "EST")
          self.assertEqual(record.sequence[63].trace, "891184662")
          self.assertEqual(record.sequence[64].acc, "CX605282.1")
          self.assertEqual(record.sequence[64].nid, "g57723597")
          self.assertEqual(record.sequence[64].clone, "CT02041A1A07")
          self.assertEqual(record.sequence[64].lid, "16895")
          self.assertEqual(record.sequence[64].seqtype, "EST")
          self.assertEqual(record.sequence[65].acc, "CD464302.1")
          self.assertEqual(record.sequence[65].nid, "g31385570")
          self.assertEqual(record.sequence[65].clone, "LeukoN4_3_B01_A026")
          self.assertEqual(record.sequence[65].end, "3'")
          self.assertEqual(record.sequence[65].lid, "13771")
          self.assertEqual(record.sequence[65].seqtype, "EST")
          self.assertEqual(record.sequence[65].trace, "891187636")
          self.assertEqual(record.sequence[66].acc, "CD469295.1")
          self.assertEqual(record.sequence[66].nid, "g31390563")
          self.assertEqual(record.sequence[66].clone, "LeukoS2_3_F03_A024")
          self.assertEqual(record.sequence[66].end, "3'")
          self.assertEqual(record.sequence[66].lid, "13776")
          self.assertEqual(record.sequence[66].seqtype, "EST")
          self.assertEqual(record.sequence[66].trace, "891191446")
          self.assertEqual(record.sequence[67].acc, "CD470883.1")
          self.assertEqual(record.sequence[67].nid, "g31392151")
          self.assertEqual(record.sequence[67].clone, "LeukoS5_3_G08_A027")
          self.assertEqual(record.sequence[67].end, "3'")
          self.assertEqual(record.sequence[67].lid, "13778")
          self.assertEqual(record.sequence[67].seqtype, "EST")
          self.assertEqual(record.sequence[67].trace, "891193865")
          self.assertEqual(record.sequence[68].acc, "CD468749.1")
          self.assertEqual(record.sequence[68].nid, "g31390017")
          self.assertEqual(record.sequence[68].clone, "LeukoS3_5_E02_A025")
          self.assertEqual(record.sequence[68].end, "5'")
          self.assertEqual(record.sequence[68].lid, "13775")
          self.assertEqual(record.sequence[68].seqtype, "EST")
          self.assertEqual(record.sequence[68].trace, "891192160")
  
          # Second record
          record = next(records)
  
          self.assertEqual(record.ID, "Eca.2425")
          self.assertEqual(record.title, "Immunoglobulin-like transcript 11 protein")
          self.assertEqual(record.symbol, "ILT11B")
          self.assertEqual(record.cytoband, "10p12")
          self.assertEqual(record.gene_id, "100034238")
          self.assertEqual(record.locuslink, "100034238")
          self.assertEqual(record.homol, True)
          self.assertEqual(record.express, ["blood", "adult"])
          self.assertEqual(len(record.protsim), 11)
          self.assertEqual(record.protsim[0].org, "10090")
          self.assertEqual(record.protsim[0].protgi, "156766061")
          self.assertEqual(record.protsim[0].protid, "NP_001074708.2")
          self.assertEqual(record.protsim[0].pct, "50.00")
          self.assertEqual(record.protsim[0].aln, "281")
          self.assertEqual(record.protsim[1].org, "9606")
          self.assertEqual(record.protsim[1].protgi, "32490553")
          self.assertEqual(record.protsim[1].protid, "NP_067073.1")
          self.assertEqual(record.protsim[1].pct, "62.42")
          self.assertEqual(record.protsim[1].aln, "296")
          self.assertEqual(record.protsim[2].org, "13616")
          self.assertEqual(record.protsim[2].protgi, "126346255")
          self.assertEqual(record.protsim[2].protid, "XP_001375479.1")
          self.assertEqual(record.protsim[2].pct, "40.43")
          self.assertEqual(record.protsim[2].aln, "281")
          self.assertEqual(record.protsim[3].org, "9615")
          self.assertEqual(record.protsim[3].protgi, "73947540")
          self.assertEqual(record.protsim[3].protid, "XP_854148.1")
          self.assertEqual(record.protsim[3].pct, "42.11")
          self.assertEqual(record.protsim[3].aln, "303")
          self.assertEqual(record.protsim[4].org, "9913")
          self.assertEqual(record.protsim[4].protgi, "194674905")
          self.assertEqual(record.protsim[4].protid, "XP_001788837.1")
          self.assertEqual(record.protsim[4].pct, "61.11")
          self.assertEqual(record.protsim[4].aln, "233")
          self.assertEqual(record.protsim[5].org, "9258")
          self.assertEqual(record.protsim[5].protgi, "149631692")
          self.assertEqual(record.protsim[5].protid, "XP_001516158.1")
          self.assertEqual(record.protsim[5].pct, "35.65")
          self.assertEqual(record.protsim[5].aln, "229")
          self.assertEqual(record.protsim[6].org, "9796")
          self.assertEqual(record.protsim[6].protgi, "146262003")
          self.assertEqual(record.protsim[6].protid, "NP_001075996.1")
          self.assertEqual(record.protsim[6].pct, "100.00")
          self.assertEqual(record.protsim[6].aln, "279")
          self.assertEqual(record.protsim[7].org, "10116")
          self.assertEqual(record.protsim[7].protgi, "109461031")
          self.assertEqual(record.protsim[7].protid, "XP_001065532.1")
          self.assertEqual(record.protsim[7].pct, "52.77")
          self.assertEqual(record.protsim[7].aln, "269")
          self.assertEqual(record.protsim[8].org, "9544")
          self.assertEqual(record.protsim[8].protgi, "100818611")
          self.assertEqual(record.protsim[8].protid, "NP_001035767.1")
          self.assertEqual(record.protsim[8].pct, "57.35")
          self.assertEqual(record.protsim[8].aln, "277")
          self.assertEqual(record.protsim[9].org, "9823")
          self.assertEqual(record.protsim[9].protgi, "178057314")
          self.assertEqual(record.protsim[9].protid, "NP_001116615.1")
          self.assertEqual(record.protsim[9].pct, "43.01")
          self.assertEqual(record.protsim[9].aln, "278")
          self.assertEqual(record.protsim[10].org, "9598")
          self.assertEqual(record.protsim[10].protgi, "58801536")
          self.assertEqual(record.protsim[10].protid, "NP_001009045.1")
          self.assertEqual(record.protsim[10].pct, "54.51")
          self.assertEqual(record.protsim[10].aln, "276")
          self.assertEqual(len(record.sequence), 9)
          self.assertEqual(record.sequence[0].acc, "AB120409.1")
          self.assertEqual(record.sequence[0].nid, "g45597282")
          self.assertEqual(record.sequence[0].pid, "g45597283")
          self.assertEqual(record.sequence[0].seqtype, "mRNA")
          self.assertEqual(record.sequence[1].acc, "NM_001082527.1")
          self.assertEqual(record.sequence[1].nid, "g146262002")
          self.assertEqual(record.sequence[1].pid, "g146262003")
          self.assertEqual(record.sequence[1].seqtype, "mRNA")
          self.assertEqual(record.sequence[2].acc, "AB120410.1")
          self.assertEqual(record.sequence[2].nid, "g45597284")
          self.assertEqual(record.sequence[2].pid, "g45597285")
          self.assertEqual(record.sequence[2].seqtype, "mRNA")
          self.assertEqual(record.sequence[3].acc, "AB120411.1")
          self.assertEqual(record.sequence[3].nid, "g45597286")
          self.assertEqual(record.sequence[3].pid, "g45597287")
          self.assertEqual(record.sequence[3].seqtype, "mRNA")
          self.assertEqual(record.sequence[4].acc, "CD467202.1")
          self.assertEqual(record.sequence[4].nid, "g31388470")
          self.assertEqual(record.sequence[4].clone, "LeukoS1_2_D11_A023")
          self.assertEqual(record.sequence[4].end, "5'")
          self.assertEqual(record.sequence[4].lid, "13774")
          self.assertEqual(record.sequence[4].seqtype, "EST")
          self.assertEqual(record.sequence[4].trace, "891190473")
          self.assertEqual(record.sequence[5].acc, "CD535974.1")
          self.assertEqual(record.sequence[5].nid, "g31578389")
          self.assertEqual(record.sequence[5].clone, "LeukoN6_2_F07_A028")
          self.assertEqual(record.sequence[5].end, "3'")
          self.assertEqual(record.sequence[5].lid, "13844")
          self.assertEqual(record.sequence[5].seqtype, "EST")
          self.assertEqual(record.sequence[5].trace, "891184067")
          self.assertEqual(record.sequence[6].acc, "CD469544.1")
          self.assertEqual(record.sequence[6].nid, "g31390812")
          self.assertEqual(record.sequence[6].clone, "LeukoS2_4_D05_A024")
          self.assertEqual(record.sequence[6].end, "5'")
          self.assertEqual(record.sequence[6].lid, "13776")
          self.assertEqual(record.sequence[6].seqtype, "EST")
          self.assertEqual(record.sequence[6].trace, "891191700")
          self.assertEqual(record.sequence[7].acc, "CD528742.1")
          self.assertEqual(record.sequence[7].nid, "g31567364")
          self.assertEqual(record.sequence[7].clone, "LeukoN3_7_F08_A025")
          self.assertEqual(record.sequence[7].end, "3'")
          self.assertEqual(record.sequence[7].lid, "13842")
          self.assertEqual(record.sequence[7].seqtype, "EST")
          self.assertEqual(record.sequence[7].trace, "891187302")
          self.assertEqual(record.sequence[8].acc, "CD469487.1")
          self.assertEqual(record.sequence[8].nid, "g31390755")
          self.assertEqual(record.sequence[8].clone, "LeukoS2_4_D05_A024")
          self.assertEqual(record.sequence[8].end, "3'")
          self.assertEqual(record.sequence[8].lid, "13776")
          self.assertEqual(record.sequence[8].seqtype, "EST")
          self.assertEqual(record.sequence[8].trace, "891191801")
  
          # Make sure that there are no more records
          self.assertRaises(StopIteration, next, records)
  
          handle.close()
  
      def test_read(self):
  
          #Start of the UniGene file for Homo sapiens downloaded from:
          #ftp://ftp.ncbi.nih.gov/repository/UniGene/Homo_sapiens
          handle = open("UniGene/Hs.2.data")
  
          record = UniGene.read(handle)
          self.assertEqual(record.ID, "Hs.2")
          self.assertEqual(record.title, "N-acetyltransferase 2 (arylamine N-acetyltransferase)")
          self.assertEqual(record.symbol, "NAT2")
          self.assertEqual(record.cytoband, "8p22")
          self.assertEqual(record.gene_id, "10")
          self.assertEqual(record.locuslink, "10")
          self.assertEqual(record.homol, True)
          self.assertEqual(record.express, ["bone", "connective tissue", "intestine", "liver", "liver tumor", "normal", "soft tissue/muscle tissue tumor", "adult"])
          self.assertEqual(record.restr_expr, ["adult"])
          self.assertEqual(record.chromosome, "8")
          self.assertEqual(len(record.sts), 7)
          self.assertEqual(record.sts[0].acc, "PMC310725P3")
          self.assertEqual(record.sts[0].unists, "272646")
          self.assertEqual(record.sts[1].acc, "WIAF-2120")
          self.assertEqual(record.sts[1].unists, "44576")
          self.assertEqual(record.sts[2].acc, "G59899")
          self.assertEqual(record.sts[2].unists, "137181")
          self.assertEqual(record.sts[3].acc, "G06461")
          self.assertEqual(record.sts[3].unists, "17088")
          self.assertEqual(record.sts[4].acc, "GDB:310612")
          self.assertEqual(record.sts[4].unists, "156422")
          self.assertEqual(record.sts[5].acc, "GDB:310613")
          self.assertEqual(record.sts[5].unists, "156423")
          self.assertEqual(record.sts[6].acc, "GDB:187676")
          self.assertEqual(record.sts[6].unists, "155563")
          self.assertEqual(len(record.protsim), 13)
          self.assertEqual(record.protsim[0].org, "10090")
          self.assertEqual(record.protsim[0].protgi, "6754794")
          self.assertEqual(record.protsim[0].protid, "NP_035004.1")
          self.assertEqual(record.protsim[0].pct, "76.55")
          self.assertEqual(record.protsim[0].aln, "288")
          self.assertEqual(record.protsim[1].org, "9796")
          self.assertEqual(record.protsim[1].protgi, "149742490")
          self.assertEqual(record.protsim[1].protid, "XP_001487907.1")
          self.assertEqual(record.protsim[1].pct, "79.66")
          self.assertEqual(record.protsim[1].aln, "288")
          self.assertEqual(record.protsim[2].org, "9986")
          self.assertEqual(record.protsim[2].protgi, "126722851")
          self.assertEqual(record.protsim[2].protid, "NP_001075655.1")
          self.assertEqual(record.protsim[2].pct, "76.90")
          self.assertEqual(record.protsim[2].aln, "288")
          self.assertEqual(record.protsim[3].org, "9544")
          self.assertEqual(record.protsim[3].protgi, "113461974")
          self.assertEqual(record.protsim[3].protid, "NP_001038201.1")
          self.assertEqual(record.protsim[3].pct, "93.10")
          self.assertEqual(record.protsim[3].aln, "288")
          self.assertEqual(record.protsim[4].org, "9606")
          self.assertEqual(record.protsim[4].protgi, "116295260")
          self.assertEqual(record.protsim[4].protid, "NP_000006.2")
          self.assertEqual(record.protsim[4].pct, "100.00")
          self.assertEqual(record.protsim[4].aln, "288")
          self.assertEqual(record.protsim[5].org, "7719")
          self.assertEqual(record.protsim[5].protgi, "198423589")
          self.assertEqual(record.protsim[5].protid, "XP_002126320.1")
          self.assertEqual(record.protsim[5].pct, "29.46")
          self.assertEqual(record.protsim[5].aln, "240")
          self.assertEqual(record.protsim[6].org, "10116")
          self.assertEqual(record.protsim[6].protgi, "16758720")
          self.assertEqual(record.protsim[6].protid, "NP_446306.1")
          self.assertEqual(record.protsim[6].pct, "75.52")
          self.assertEqual(record.protsim[6].aln, "288")
          self.assertEqual(record.protsim[7].org, "13616")
          self.assertEqual(record.protsim[7].protgi, "126303190")
          self.assertEqual(record.protsim[7].protid, "XP_001371814.1")
          self.assertEqual(record.protsim[7].pct, "63.67")
          self.assertEqual(record.protsim[7].aln, "287")
          self.assertEqual(record.protsim[8].org, "9031")
          self.assertEqual(record.protsim[8].protgi, "45384408")
          self.assertEqual(record.protsim[8].protid, "NP_990671.1")
          self.assertEqual(record.protsim[8].pct, "57.93")
          self.assertEqual(record.protsim[8].aln, "288")
          self.assertEqual(record.protsim[9].org, "9913")
          self.assertEqual(record.protsim[9].protgi, "115497526")
          self.assertEqual(record.protsim[9].protid, "NP_001069040.1")
          self.assertEqual(record.protsim[9].pct, "80.34")
          self.assertEqual(record.protsim[9].aln, "288")
          self.assertEqual(record.protsim[10].org, "9258")
          self.assertEqual(record.protsim[10].protgi, "149640224")
          self.assertEqual(record.protsim[10].protid, "XP_001508302.1")
          self.assertEqual(record.protsim[10].pct, "62.37")
          self.assertEqual(record.protsim[10].aln, "278")
          self.assertEqual(record.protsim[11].org, "7955")
          self.assertEqual(record.protsim[11].protgi, "125821897")
          self.assertEqual(record.protsim[11].protid, "XP_001334322.1")
          self.assertEqual(record.protsim[11].pct, "43.21")
          self.assertEqual(record.protsim[11].aln, "279")
          self.assertEqual(record.protsim[12].org, "9598")
          self.assertEqual(record.protsim[12].protgi, "114619004")
          self.assertEqual(record.protsim[12].protid, "XP_519631.2")
          self.assertEqual(record.protsim[12].pct, "98.28")
          self.assertEqual(record.protsim[12].aln, "288")
          self.assertEqual(len(record.sequence), 38)
          self.assertEqual(record.sequence[0].acc, "BC067218.1")
          self.assertEqual(record.sequence[0].nid, "g45501306")
          self.assertEqual(record.sequence[0].pid, "g45501307")
          self.assertEqual(record.sequence[0].seqtype, "mRNA")
          self.assertEqual(record.sequence[1].acc, "NM_000015.2")
          self.assertEqual(record.sequence[1].nid, "g116295259")
          self.assertEqual(record.sequence[1].pid, "g116295260")
          self.assertEqual(record.sequence[1].seqtype, "mRNA")
          self.assertEqual(record.sequence[2].acc, "D90042.1")
          self.assertEqual(record.sequence[2].nid, "g219415")
          self.assertEqual(record.sequence[2].pid, "g219416")
          self.assertEqual(record.sequence[2].seqtype, "mRNA")
          self.assertEqual(record.sequence[3].acc, "D90040.1")
          self.assertEqual(record.sequence[3].nid, "g219411")
          self.assertEqual(record.sequence[3].pid, "g219412")
          self.assertEqual(record.sequence[3].seqtype, "mRNA")
          self.assertEqual(record.sequence[4].acc, "BC015878.1")
          self.assertEqual(record.sequence[4].nid, "g16198419")
          self.assertEqual(record.sequence[4].pid, "g16198420")
          self.assertEqual(record.sequence[4].seqtype, "mRNA")
          self.assertEqual(record.sequence[5].acc, "CR407631.1")
          self.assertEqual(record.sequence[5].nid, "g47115198")
          self.assertEqual(record.sequence[5].pid, "g47115199")
          self.assertEqual(record.sequence[5].seqtype, "mRNA")
          self.assertEqual(record.sequence[6].acc, "BG569293.1")
          self.assertEqual(record.sequence[6].nid, "g13576946")
          self.assertEqual(record.sequence[6].clone, "IMAGE:4722596")
          self.assertEqual(record.sequence[6].end, "5'")
          self.assertEqual(record.sequence[6].lid, "6989")
          self.assertEqual(record.sequence[6].seqtype, "EST")
          self.assertEqual(record.sequence[6].trace, "44157214")
          self.assertEqual(record.sequence[7].acc, "AI792606.1")
          self.assertEqual(record.sequence[7].nid, "g5340322")
          self.assertEqual(record.sequence[7].clone, "IMAGE:1870937")
          self.assertEqual(record.sequence[7].end, "5'")
          self.assertEqual(record.sequence[7].lid, "1079")
          self.assertEqual(record.sequence[7].seqtype, "EST")
          self.assertEqual(record.sequence[8].acc, "BG568794.1")
          self.assertEqual(record.sequence[8].nid, "g13576447")
          self.assertEqual(record.sequence[8].clone, "IMAGE:4716636")
          self.assertEqual(record.sequence[8].end, "5'")
          self.assertEqual(record.sequence[8].lid, "6989")
          self.assertEqual(record.sequence[8].seqtype, "EST")
          self.assertEqual(record.sequence[8].trace, "44156817")
          self.assertEqual(record.sequence[9].acc, "BG533459.1")
          self.assertEqual(record.sequence[9].nid, "g13524999")
          self.assertEqual(record.sequence[9].clone, "IMAGE:4072143")
          self.assertEqual(record.sequence[9].end, "5'")
          self.assertEqual(record.sequence[9].lid, "6989")
          self.assertEqual(record.sequence[9].seqtype, "EST")
          self.assertEqual(record.sequence[9].trace, "44404609")
          self.assertEqual(record.sequence[10].acc, "BG568400.1")
          self.assertEqual(record.sequence[10].nid, "g13576053")
          self.assertEqual(record.sequence[10].clone, "IMAGE:4716802")
          self.assertEqual(record.sequence[10].end, "5'")
          self.assertEqual(record.sequence[10].lid, "6989")
          self.assertEqual(record.sequence[10].seqtype, "EST")
          self.assertEqual(record.sequence[10].trace, "44156561")
          self.assertEqual(record.sequence[11].acc, "BG618195.1")
          self.assertEqual(record.sequence[11].nid, "g13669566")
          self.assertEqual(record.sequence[11].clone, "IMAGE:4767316")
          self.assertEqual(record.sequence[11].end, "5'")
          self.assertEqual(record.sequence[11].lid, "6989")
          self.assertEqual(record.sequence[11].seqtype, "EST")
          self.assertEqual(record.sequence[11].trace, "45338366")
          self.assertEqual(record.sequence[12].acc, "BG563731.1")
          self.assertEqual(record.sequence[12].nid, "g13571383")
          self.assertEqual(record.sequence[12].clone, "IMAGE:4712210")
          self.assertEqual(record.sequence[12].end, "5'")
          self.assertEqual(record.sequence[12].lid, "6989")
          self.assertEqual(record.sequence[12].seqtype, "EST")
          self.assertEqual(record.sequence[12].trace, "44153506")
          self.assertEqual(record.sequence[13].acc, "AI733799.1")
          self.assertEqual(record.sequence[13].nid, "g5054912")
          self.assertEqual(record.sequence[13].clone, "IMAGE:1870937")
          self.assertEqual(record.sequence[13].end, "3'")
          self.assertEqual(record.sequence[13].lid, "1079")
          self.assertEqual(record.sequence[13].seqtype, "EST")
          self.assertEqual(record.sequence[14].acc, "BG569272.1")
          self.assertEqual(record.sequence[14].nid, "g13576925")
          self.assertEqual(record.sequence[14].clone, "IMAGE:4722638")
          self.assertEqual(record.sequence[14].end, "5'")
          self.assertEqual(record.sequence[14].lid, "6989")
          self.assertEqual(record.sequence[14].seqtype, "EST")
          self.assertEqual(record.sequence[14].trace, "44157191")
          self.assertEqual(record.sequence[15].acc, "AJ581147.1")
          self.assertEqual(record.sequence[15].nid, "g73759744")
          self.assertEqual(record.sequence[15].pid, "g73759745")
          self.assertEqual(record.sequence[15].seqtype, "mRNA")
          self.assertEqual(record.sequence[16].acc, "BU624903.1")
          self.assertEqual(record.sequence[16].nid, "g23291118")
          self.assertEqual(record.sequence[16].clone, "UI-H-FG1-bgl-g-02-0-UI")
          self.assertEqual(record.sequence[16].end, "3'")
          self.assertEqual(record.sequence[16].lid, "11914")
          self.assertEqual(record.sequence[16].seqtype, "EST")
          self.assertEqual(record.sequence[16].trace, "159705553")
          self.assertEqual(record.sequence[17].acc, "BG617259.1")
          self.assertEqual(record.sequence[17].nid, "g13668630")
          self.assertEqual(record.sequence[17].clone, "IMAGE:4734378")
          self.assertEqual(record.sequence[17].end, "5'")
          self.assertEqual(record.sequence[17].lid, "6989")
          self.assertEqual(record.sequence[17].seqtype, "EST")
          self.assertEqual(record.sequence[17].trace, "44229423")
          self.assertEqual(record.sequence[18].acc, "CV029049.1")
          self.assertEqual(record.sequence[18].nid, "g51487181")
          self.assertEqual(record.sequence[18].end, "5'")
          self.assertEqual(record.sequence[18].lid, "16264")
          self.assertEqual(record.sequence[18].seqtype, "EST")
          self.assertEqual(record.sequence[19].acc, "BP264356.1")
          self.assertEqual(record.sequence[19].nid, "g52179587")
          self.assertEqual(record.sequence[19].clone, "HSI15615")
          self.assertEqual(record.sequence[19].end, "5'")
          self.assertEqual(record.sequence[19].lid, "16400")
          self.assertEqual(record.sequence[19].seqtype, "EST")
          self.assertEqual(record.sequence[20].acc, "BP262043.1")
          self.assertEqual(record.sequence[20].nid, "g52177274")
          self.assertEqual(record.sequence[20].clone, "HSI05750")
          self.assertEqual(record.sequence[20].end, "5'")
          self.assertEqual(record.sequence[20].lid, "16400")
          self.assertEqual(record.sequence[20].seqtype, "EST")
          self.assertEqual(record.sequence[21].acc, "BP262787.1")
          self.assertEqual(record.sequence[21].nid, "g52178018")
          self.assertEqual(record.sequence[21].clone, "HSI08034")
          self.assertEqual(record.sequence[21].end, "5'")
          self.assertEqual(record.sequence[21].lid, "16400")
          self.assertEqual(record.sequence[21].seqtype, "EST")
          self.assertEqual(record.sequence[22].acc, "CB161982.1")
          self.assertEqual(record.sequence[22].nid, "g28148108")
          self.assertEqual(record.sequence[22].clone, "L17N670205n1-15-F12")
          self.assertEqual(record.sequence[22].end, "5'")
          self.assertEqual(record.sequence[22].lid, "12542")
          self.assertEqual(record.sequence[22].seqtype, "EST")
          self.assertEqual(record.sequence[23].acc, "BX095770.1")
          self.assertEqual(record.sequence[23].nid, "g27827877")
          self.assertEqual(record.sequence[23].clone, "IMAGp998I184581_,_IMAGE:1870937")
          self.assertEqual(record.sequence[23].lid, "1079")
          self.assertEqual(record.sequence[23].seqtype, "EST")
          self.assertEqual(record.sequence[24].acc, "AI262683.1")
          self.assertEqual(record.sequence[24].nid, "g3870886")
          self.assertEqual(record.sequence[24].clone, "IMAGE:1870937")
          self.assertEqual(record.sequence[24].end, "3'")
          self.assertEqual(record.sequence[24].lid, "1079")
          self.assertEqual(record.sequence[24].seqtype, "EST")
          self.assertEqual(record.sequence[25].acc, "AI460128.1")
          self.assertEqual(record.sequence[25].nid, "g4313009")
          self.assertEqual(record.sequence[25].clone, "IMAGE:2151449")
          self.assertEqual(record.sequence[25].end, "3'")
          self.assertEqual(record.sequence[25].lid, "1556")
          self.assertEqual(record.sequence[25].seqtype, "EST")
          self.assertEqual(record.sequence[26].acc, "CB161860.1")
          self.assertEqual(record.sequence[26].nid, "g28147986")
          self.assertEqual(record.sequence[26].clone, "L17N670205n1-41-A04")
          self.assertEqual(record.sequence[26].end, "5'")
          self.assertEqual(record.sequence[26].lid, "12542")
          self.assertEqual(record.sequence[26].seqtype, "EST")
          self.assertEqual(record.sequence[27].acc, "AJ581145.1")
          self.assertEqual(record.sequence[27].nid, "g73759740")
          self.assertEqual(record.sequence[27].pid, "g73759741")
          self.assertEqual(record.sequence[27].seqtype, "mRNA")
          self.assertEqual(record.sequence[28].acc, "EG327405.1")
          self.assertEqual(record.sequence[28].nid, "g116004924")
          self.assertEqual(record.sequence[28].clone, "MGC12part.1.3.L1.1.D01.")
          self.assertEqual(record.sequence[28].lid, "17261")
          self.assertEqual(record.sequence[28].seqtype, "EST")
          self.assertEqual(record.sequence[29].acc, "AJ581144.1")
          self.assertEqual(record.sequence[29].nid, "g73759738")
          self.assertEqual(record.sequence[29].pid, "g73759739")
          self.assertEqual(record.sequence[29].seqtype, "mRNA")
          self.assertEqual(record.sequence[30].acc, "EG327340.1")
          self.assertEqual(record.sequence[30].nid, "g116004859")
          self.assertEqual(record.sequence[30].clone, "MGC12part.1.2.L1.1.D01.")
          self.assertEqual(record.sequence[30].lid, "17261")
          self.assertEqual(record.sequence[30].seqtype, "EST")
          self.assertEqual(record.sequence[31].acc, "AV658623.1")
          self.assertEqual(record.sequence[31].nid, "g9879637")
          self.assertEqual(record.sequence[31].clone, "GLCFOD10")
          self.assertEqual(record.sequence[31].end, "3'")
          self.assertEqual(record.sequence[31].lid, "5601")
          self.assertEqual(record.sequence[31].seqtype, "EST")
          self.assertEqual(record.sequence[32].acc, "AV658656.1")
          self.assertEqual(record.sequence[32].nid, "g9879670")
          self.assertEqual(record.sequence[32].clone, "GLCFOG07")
          self.assertEqual(record.sequence[32].end, "3'")
          self.assertEqual(record.sequence[32].lid, "5601")
          self.assertEqual(record.sequence[32].seqtype, "EST")
          self.assertEqual(record.sequence[33].acc, "AV684197.2")
          self.assertEqual(record.sequence[33].nid, "g55943471")
          self.assertEqual(record.sequence[33].clone, "GKCFZH06")
          self.assertEqual(record.sequence[33].end, "5'")
          self.assertEqual(record.sequence[33].lid, "6533")
          self.assertEqual(record.sequence[33].seqtype, "EST")
          self.assertEqual(record.sequence[34].acc, "AJ581146.1")
          self.assertEqual(record.sequence[34].nid, "g73759742")
          self.assertEqual(record.sequence[34].pid, "g73759743")
          self.assertEqual(record.sequence[34].seqtype, "mRNA")
          self.assertEqual(record.sequence[35].acc, "EG327618.1")
          self.assertEqual(record.sequence[35].nid, "g116005137")
          self.assertEqual(record.sequence[35].clone, "MGC11part.2.3.L1.1.E06.")
          self.assertEqual(record.sequence[35].lid, "17261")
          self.assertEqual(record.sequence[35].seqtype, "EST")
          self.assertEqual(record.sequence[36].acc, "BG204539.1")
          self.assertEqual(record.sequence[36].nid, "g13726226")
          self.assertEqual(record.sequence[36].lid, "8655")
          self.assertEqual(record.sequence[36].seqtype, "EST")
          self.assertEqual(record.sequence[37].acc, "AU099534.1")
          self.assertEqual(record.sequence[37].nid, "g13550663")
          self.assertEqual(record.sequence[37].clone, "HSI08034")
          self.assertEqual(record.sequence[37].end, "5'")
          self.assertEqual(record.sequence[37].lid, "8800")
          self.assertEqual(record.sequence[37].seqtype, "EST")
  
          handle.close()
  
  
  if __name__ == "__main__":
      runner = unittest.TextTestRunner(verbosity = 2)
      unittest.main(testRunner=runner)
  