Mercurial > repos > yufei-luo > s_mart
comparison commons/core/tree/test/Test_Tree.py @ 6:769e306b7933
Change the repository level.
author | yufei-luo |
---|---|
date | Fri, 18 Jan 2013 04:54:14 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
5:ea3082881bf8 | 6:769e306b7933 |
---|---|
1 import unittest | |
2 import os | |
3 import time | |
4 from commons.core.tree.Tree import Tree | |
5 from commons.core.utils.FileUtils import FileUtils | |
6 | |
7 | |
8 class Test_Tree( unittest.TestCase ): | |
9 | |
10 def setUp( self ): | |
11 self._tree = Tree() | |
12 self._uniqId = "%s_%s" % ( time.strftime("%Y%m%d%H%M%S") , os.getpid() ) | |
13 | |
14 | |
15 def test_parseTree_oneLeaf( self ): | |
16 inString = "seq1:0.0023" | |
17 obs = self._tree.parseTree( inString ) | |
18 exp = { "left":None, "right":None, "name":"seq1", "length":0.0023 } | |
19 self.assertEqual( obs, exp ) | |
20 | |
21 | |
22 def test_parseTree_twoLeaves( self ): | |
23 inString = "(seq1:0.0023,seq2:0.0017)" | |
24 obs = self._tree.parseTree( inString ) | |
25 exp = {'length':0, 'right':{'length':0.0016999999999999999, 'right':None, 'name':'seq2', 'left':None}, 'name':'internal', 'left':{'length':0.0023, 'right':None, 'name':'seq1', 'left':None}} | |
26 self.assertEqual( obs, exp ) | |
27 | |
28 ## def test_parseTree_threeLeaves( self ): | |
29 ## inString = "(seq1:0.0023,(seq2:0.0017,seq3:0.0009))" | |
30 ## obs = self._tree.parseTree( inString ) | |
31 ## print obs | |
32 ## exp = {'length':0, 'right':{'length':0.0016999999999999999, 'right':None, 'name':'seq2', 'left':None}, 'name':'internal', 'left':{'length':0.0023, 'right':None, 'name':'seq1', 'left':None}} | |
33 ## self.assertEqual( obs, exp ) | |
34 | |
35 | |
36 def test_parseSubTree( self ): | |
37 inString = "(seq1:0.0023,seq2:0.0017)" | |
38 lExp = [ "seq1:0.0023", "seq2:0.0017" ] | |
39 lObs = self._tree.parseSubTree( inString ) | |
40 self.assertEqual( lObs, lExp ) | |
41 | |
42 | |
43 def test_saveTree( self ): | |
44 inFileName = "dummyInFile_%s" % ( self._uniqId ) | |
45 inF = open( inFileName, "w" ) | |
46 inF.write( "(seq4:0.012511,(seq3:0.005340,seq2:0.002201))" ) | |
47 inF.close() | |
48 self._tree = Tree( inFileName ) | |
49 obsFileName = "dummyObsFile_%s" % ( self._uniqId ) | |
50 self._tree.saveTree( obsFileName ) | |
51 self.assertTrue( FileUtils.are2FilesIdentical( obsFileName, inFileName ) ) | |
52 for f in [ inFileName, obsFileName ]: | |
53 os.remove( f ) | |
54 | |
55 | |
56 def test_retrieveInitialSequenceHeaders( self ): | |
57 inString = "(seq4:0.012511,(seq3:0.005340,seq2:0.002201))" | |
58 self._tree.tree = self._tree.parseTree( inString ) | |
59 dNew2Init = { "seq2":"consensus524::215 dmel_chr4 142..765", "seq3":"DmelChr4-B-G387-MAP16", "seq4":"1360|1cl-3gr" } | |
60 expFileName = "dummyExpFile_%s" % ( self._uniqId ) | |
61 expF = open( expFileName, "w" ) | |
62 expF.write( "(1360|1cl-3gr:0.012511,(DmelChr4-B-G387-MAP16:0.005340,consensus524-215_dmel_chr4_142..765:0.002201))" ) | |
63 expF.close() | |
64 obsFileName = "dummyObsFile_%s" % ( self._uniqId ) | |
65 self._tree.retrieveInitialSequenceHeaders( dNew2Init, obsFileName ) | |
66 self.assertTrue( FileUtils.are2FilesIdentical( obsFileName, expFileName ) ) | |
67 for f in [ expFileName, obsFileName ]: | |
68 os.remove( f ) | |
69 | |
70 | |
71 def test_getNbOfLeaves( self ): | |
72 inString = "(seq4:0.012511,(seq3:0.005340,seq2:0.002201))" | |
73 self._tree.tree = self._tree.parseTree( inString ) | |
74 exp = 3 | |
75 obs = self._tree.getNbOfLeaves() | |
76 self.assertEqual( obs, exp ) | |
77 | |
78 | |
79 def test_getNbOfNodes( self ): | |
80 inString = "(seq4:0.012511,(seq3:0.005340,seq2:0.002201))" | |
81 self._tree.tree = self._tree.parseTree( inString ) | |
82 exp = 4 | |
83 obs = self._tree.getNbOfNodes() | |
84 self.assertEqual( obs, exp ) | |
85 | |
86 | |
87 test_suite = unittest.TestSuite() | |
88 test_suite.addTest( unittest.makeSuite( Test_Tree ) ) | |
89 if __name__ == "__main__": | |
90 unittest.TextTestRunner(verbosity=2).run( test_suite ) |