Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 100 lines (84 sloc) 3.414 kB
import os
import sys
import StringIO
import unittest
from Bio.Nexus import Nexus
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 = [NexusTest1]
for test in tests:
cur_suite = test_loader.loadTestsFromTestCase(test)
test_suite.addTest(cur_suite)
return test_suite
class NexusTest1(unittest.TestCase):
def setUp(self):
self.handle = open("Nexus/test_Nexus_input.nex")
def tearDown(self):
self.handle.close()
def print_dictnlist(self,name,d):
"""Output a list or a dict alphabetically by keys()"""
if type(d)==dict:
dk=d.keys()
dk.sort()
print '\n%s:\n%s' % (name, '\n'.join([str(k)+'\t'+str(d[k]) for k in dk]))
else:
print '\n%s:\n%s' % (name, '\n'.join([k for k in d]))
def output_basics(self,n):
"""Output basic info of a nexus file."""
# When run on Windows, want to match the expected test output
# (in file output/test_Nexus) which uses "Nexus/f1.nex", not "Nexus\f1.nex"
print '\nName:',n.filename.replace(os.sep,"/")
print '\n',n.ntax, n.nchar, n.datatype, n.interleave, n.missing, n.gap
self.print_dictnlist('Taxa',n.taxlabels)
self.print_dictnlist('Charlabels',n.charlabels)
self.print_dictnlist('Charsets',n.charsets)
self.print_dictnlist('Taxsets',n.taxsets)
ps=n.charpartitions.keys()
ps.sort()
print '\nCharpartitions:'
for pk in ps:
self.print_dictnlist(pk,n.charpartitions[pk])
ps=n.taxpartitions.keys()
ps.sort()
print '\nTaxpartitions:'
for pk in ps:
self.print_dictnlist(pk,n.taxpartitions[pk])
def t_NexusTest1(self):
"""Test Nexus module"""
n=Nexus.Nexus(self.handle)
# check data of main nexus file
self.output_basics(n)
# now we check excluding characters, deleting taxa, and exporting adjusted sets
f1=os.path.join('Nexus','f1.nex')
f2=os.path.join('Nexus','f2.nex')
n.write_nexus_data(f1,delete=['t1','t7'],exclude=n.invert(n.charsets['big']))
n.write_nexus_data(f2,delete=['t2_the_name'],exclude=range(3,40,4))
nf1=Nexus.Nexus(f1)
self.output_basics(nf1)
nf2=Nexus.Nexus(f2)
self.output_basics(nf2)
# check the stepmatrix
print n.weighted_stepmatrix(name='matrix_test')
def t_TreeTest1(self):
"""Test Tree module."""
n=Nexus.Nexus(self.handle)
t3=n.trees[2]
t2=n.trees[2]
t3.root_with_outgroup(['t1','t5'])
print t3
print 'Monophyletic t6,t7,t8,t9:',t3.is_monophyletic(['t8','t9','t6','t7'])
print 'Monophyletic t1,t5:',t3.is_monophyletic(['t1','t5'])
print 'Subtree t1,t5:',t3.set_subtree(t3.is_monophyletic(['t1','t5']))
t3.split(parent_id=t3.search_taxon('t9'))
print 'The tree looks as follows:'
t3.display()
print 'self incompatibility...:',t3.is_compatible(t2,threshold=0.3)
if __name__ == "__main__":
sys.exit(run_tests(sys.argv))
Jump to Line
Something went wrong with that request. Please try again.