1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
import os
import sys
import unittest
from Bio.Sequencing import Ace
def run_tests(argv):
test_suite = testing_suite()
runner = unittest.TextTestRunner(sys.stdout, verbosity = 2)
runner.run(test_suite)
def testing_suite():
"""Generate the suite of tests.
"""
test_suite = unittest.TestSuite()
test_loader = unittest.TestLoader()
test_loader.testMethodPrefix = 't_'
tests = [AceTestOne]
for test in tests:
cur_suite = test_loader.loadTestsFromTestCase(test)
test_suite.addTest(cur_suite)
return test_suite
class AceTestOne(unittest.TestCase):
def setUp(self):
self.handle = open("Ace/contig1.ace")
def tearDown(self):
self.handle.close()
def contig_summary(self,c,x):
"""Print a summary of a contig."""
print '\n--------------------'
print 'Contig no.',x,'has',len(c.reads),'reads.'
print 'CO:',c.name,c.nbases,c.nreads,c.nsegments,c.uorc
print c.sequence[:10],'...',c.sequence[len(c.sequence)/2-5:len(c.sequence)/2+5],'...',c.sequence[-10:]
print c.quality[:10],'...',c.quality[len(c.quality)/2-5:len(c.quality)/2+5],'...',c.quality[-10:]
print '# AF:',len(c.af),'; # BS:',len(c.bs)
for i in (len(c.af)/2,-1):
print 'AF(%d) %s %s %d' % (i,c.af[i].name,c.af[i].coru,c.af[i].padded_start),';',
print
for i in (len(c.bs)/2,-1):
print 'BS(%d) %s %d %d' % (i,c.bs[i].name,c.bs[i].padded_start,c.bs[i].padded_end),';',
print
print 'CT:',
if not c.ct:
print 'none'
else:
print
for i in c.ct:
print i.name, i.tag_type, i.program, i.padded_start, i.padded_end, i.date, i.info
print 'WA:',
if not c.wa:
print 'none'
else:
print
for i in c.wa:
print i.tag_type, i.program, i.date, i.info
for r in c.reads:
print 'RD:',r.rd.name,r.rd.padded_bases,r.rd.info_items,r.rd.read_tags,
print r.rd.sequence[:10],'...',r.rd.sequence[len(r.rd.sequence)/2-5:len(r.rd.sequence)/2+5],'...',r.rd.sequence[-10:]
print 'QA:',r.qa.qual_clipping_start,r.qa.qual_clipping_end,r.qa.align_clipping_start,r.qa.align_clipping_end
if r.ds:
print 'DS:','CHROMAT_FILE:',r.ds.chromat_file,'PHD_FILE:',r.ds.phd_file,'TIME:',r.ds.time,
print 'CHEM:',r.ds.chem,'DYE:',r.ds.dye,'TEMPLATE:',r.ds.template,'DIRECTION:',r.ds.direction
else:
print 'DS: none'
print 'RT:',
if not r.rt:
print 'none'
else:
print
for i in r.rt:
print i.name, i.tag_type, i.program, i.padded_start, i.padded_end, i.date
print 'WR:',
if not r.wr:
print 'none'
else:
print
for i in r.wr:
print i.name, i.aligned, i.program, i.date
def t_check_ACEParser(self):
"""Test to check that ACEParser can parse the whole file into one record."""
aceparser=Ace.ACEParser()
record=aceparser.parse(self.handle)
x=0
print '\nContigs:',record.ncontigs,'; Reads:',record.nreads
print 'all WA:',
if not record.wa:
print 'none'
else:
print
for i in record.wa:
print i.tag_type, i.program, i.date, i.info
for c in record.contigs:
self.contig_summary(c,x)
x+=1
def t_check_record_parser(self):
"""Test to check that record parser parses each contig into a record."""
recparser=Ace.RecordParser()
it=Ace.Iterator(self.handle,recparser)
x=0
while 1:
r=it.next()
if not r:
break
self.contig_summary(r,x)
x+=1
if __name__ == "__main__":
sys.exit(run_tests(sys.argv))
|