#!/usr/bin/python from PIPRes.cipres_types import * from PIPRes.util.client_import import * '''Exercises the tree merger service.''' def testSimpleMerger(obj): showingTrees = False # draw a Tree if 0: cipresTrees = [CipresTree('(14:8.0,82:9.0,(((85:31.0,((((134:28.0,135:24.0):5.0,(136:12.0,137:14.0):7.0):13.0,(244:28.0,(322:18.0,347:19.0):14.0):9.0):3.0,(((160:11.0,174:8.0):3.0,162:21.0):3.0,(189:12.0,203:12.0):2.0):10.0):9.0):6.0,158:7.0):4.0,92:9.0):4.0);'), CipresTree('((((397:39.0,436:37.0):23.0,471:34.0):38.0,((330:30.0,366:35.0):25.0,392:44.0):15.0):0,((((481:47.0,491:36.0):27.0,363:35.0):0,353:25.0):0,((((300:38.0,163:16.0):0,82:57.0):0,(((22:35.0,152:35.0):0,(48:29.0,244:21.0):0):0,((153:45.0,189:35.0):0,151:19.0):0):0):5.0,((170:56.0,312:47.0):32.0,((((18:25.0,(41:29.0,301:11.0):3.0):11.0,(107:24.0,160:18.0):9.0):0,418:47.0):0,((441:36.0,(349:31.0,((203:9.0,208:9.0):5.0,222:10.0):14.0):0):0,(92:43.0,168:21.0):0):0):24.0):0):0):0,373:27.0);'), CipresTree('(((173:16.0,108:18.0):0,((154:18.0,182:11.0):3.0,(((160:4.0,164:4.0):13.0,(183:20.0,186:34.0):11.0):0,(123:34.0,(126:26.0,150:47.0):6.0):10.0):0):0):3.0,((((((189:7.0,(203:9.0,244:15.0):2.0):13.0,252:30.0):16.0,104:18.0):0,(95:5.0,82:19.0):0):0,((34:15.0,52:23.0):0,92:17.0):0):2.0,(24:20.0,(((292:19.0,35:30.0):0,209:23.0):0,7:33.0):0):3.0):0,(((398:18.0,((118:25.0,369:13.0):4.0,((233:21.0,340:11.0):15.0,480:23.0):5.0):0):0,(444:27.0,(384:24.0,411:18.0):0):0):0,(446:26.0,393:19.0):0):8.0);'), CipresTree('(82:8.0,(92:10.0,160:14.0):2.0,(189:26.0,(203:18.0,244:19.0):16.0):17.0);') ] elif False: cipresTrees = [CipresTree('(149:16.0,205:5.0,((335:40.0,(434:24.0,(447:22.0,483:47.0):8.0):20.0):16.0,426:9.0):15.0);'), CipresTree('(((110:14.0,(((262:19.0,282:21.0):6.0,316:20.0):8.0,((408:30.0,497:26.0):12.0,420:19.0):24.0):10.0):6.0,(114:17.0,(28:22.0,(19:6.0,62:1.0):14.0):23.0):10.0):2.0,((146:20.0,254:8.0):0,(127:21.0,120:18.0):0):30.0,((((145:26.0,155:7.0):0,(149:19.0,(228:33.0,237:24.0):14.0):0):5.0,((447:25.0,(((365:43.0,((374:21.0,402:18.0):16.0,403:24.0):17.0):16.0,(276:36.0,295:23.0):9.0):0,((17:50.0,(433:18.0,434:32.0):10.0):11.0,129:35.0):0):0):0,((426:16.0,((360:22.0,16:26.0):0,((176:23.0,((223:40.0,230:41.0):17.0,271:13.0):23.0):14.0,(79:40.0,(20:17.0,69:18.0):26.0):25.0):0):0):0,(5:48.0,(431:29.0,484:28.0):7.0):0):0):8.0):17.0,((247:37.0,314:22.0):7.0,326:26.0):9.0):22.0);'), CipresTree('((26:45.0,((((442:29.0,451:18.0):11.0,500:19.0):0,(((149:12.0,(434:6.0,(109:7.0,177:7.0):3.0):1.0):18.0,465:13.0):0,(474:35.0,478:27.0):16.0):0):0,447:34.0):14.0):0,(((((84:29.0,(90:9.0,130:9.0):7.0):32.0,148:31.0):25.0,257:31.0):16.0,467:29.0):12.0,499:28.0):0,((((((313:36.0,(201:10.0,216:25.0):0):0,((180:17.0,45:17.0):0,25:10.0):0):0,((75:46.0,(101:1.0,231:34.0):0):0,(321:25.0,(234:28.0,328:28.0):0):0):0):0,(((10:9.0,139:45.0):0,43:13.0):0,(265:56.0,293:51.0):0):0):10.0,375:30.0):0,(((426:15.0,432:18.0):17.0,372:47.0):0,((348:8.0,(440:7.0,(332:28.0,(307:27.0,327:38.0):20.0):0):0):0,((383:6.0,(388:50.0,396:22.0):20.0):0,346:7.0):0):13.0):0):0);'), CipresTree('(149:29.0,((172:27.0,426:28.0):11.0,434:17.0):32.0,447:26.0);') ] elif 1: cipresTrees = [CipresTree('(81:6.0,(112:12.0,(((120:27.0,224:6.0):12.0,(230:16.0,((238:27.0,409:21.0):8.0,(249:10.0,344:17.0):19.0):13.0):7.0):1.0,(161:27.0,176:34.0):10.0):13.0):12.0,113:2.0);'), CipresTree('(5:41.0,36:40.0,((37:11.0,266:4.0):22.0,(((113:15.0,120:14.0):12.0,(161:34.0,176:18.0):39.0):28.0,((((230:46.0,241:34.0):21.0,(365:28.0,413:20.0):5.0):6.0,(409:10.0,412:17.0):24.0):2.0,(343:18.0,358:21.0):9.0):10.0):8.0):15.0);'), CipresTree('(23:5.0,42:5.0,((46:4.0,64:6.0):3.0,((73:7.0,113:15.0):14.0,(120:34.0,(((161:15.0,176:14.0):17.0,230:22.0):13.0,((232:29.0,(409:12.0,417:15.0):10.0):14.0,(((251:18.0,319:21.0):12.0,488:17.0):6.0,320:26.0):10.0):12.0):16.0):38.0):5.0):1.0);'), CipresTree('(27:22.0,39:14.0,(86:20.0,(113:24.0,(((120:24.0,450:13.0):3.0,((161:2.0,176:8.0):34.0,((195:4.0,206:1.0,(230:2.0,261:2.0):1.0):1.0,(279:1.0,280:7.0):1.0):9.0):6.0):3.0,(288:22.0,(((289:22.0,291:17.0):11.0,299:29.0):5.0,(409:9.0,449:18.0):20.0):10.0):2.0):6.0):17.0):25.0);') ] elif True: cipresTrees = [CipresTree('(81:6.0,112:2.0,((((((113:10.0,409:17.0):19.0,(161:21.0,176:27.0):8.0):13.0,230:16.0):7.0,(120:6.0,344:27.0):12.0):1.0,(224:27.0,238:34.0):10.0):14.0,249:12.0):11.0);'), CipresTree('(5:47.0,((((((36:40.0,266:38.0):18.0,(37:11.0,412:4.0):17.0):11.0,((241:15.0,413:14.0):12.0,(343:34.0,358:18.0):39.0):27.0):11.0,(120:16.0,230:23.0):9.0):3.0,(113:8.0,409:19.0):23.0):4.0,(161:20.0,176:28.0):6.0):23.0,365:35.0);'), CipresTree('(23:38.0,((42:23.0,(251:15.0,417:14.0):16.0):17.0,(((113:12.0,409:15.0):10.0,232:29.0):14.0,(((120:18.0,230:21.0):12.0,161:17.0):6.0,176:26.0):10.0):8.0):16.0,(((46:5.0,319:5.0):1.0,(320:4.0,488:6.0):3.0):4.0,(64:6.0,73:16.0):10.0):39.0);'), CipresTree('(27:22.0,39:14.0,(86:20.0,(((((113:9.0,409:18.0):20.0,((120:22.0,230:17.0):11.0,176:29.0):5.0):10.0,261:22.0):2.0,((161:13.0,206:24.0):3.0,((279:2.0,280:8.0):34.0,((288:4.0,(289:2.0,450:2.0):1.0,299:1.0):1.0,(291:1.0,449:7.0):1.0):9.0):6.0):3.0):6.0,195:24.0):17.0):25.0);')] elif False: cipresTrees = [CipresTree('(1,(107,(222,363)))'), CipresTree('(1,(((16,(139,328)),((45,(374,478)),180)),((43,346),265)),(((((((((((((17,396),101),(((130,500),(348,465)),223)),(75,365)),201),(234,360)),((((20,295),(327,431)),332),(((((129,403),383),451),(372,432)),216))),39),249),((((69,79),((230,307),499)),(257,276)),488)),(195,251)),319),((37,(86,(((((((((84,148),176),313),((271,402),(375,442))),110),412),46),((((((((((((((19,62),155),(114,254)),(((28,408),((237,434),497)),(((127,247),316),(((149,262),228),420)))),((145,(146,326)),(282,314))),205),((172,447),483)),((((109,177),321),426),335)),231),(90,(120,440))),(293,474)),(25,26)),388),(433,467))),(42,224)))),(((484,73),(238,64)),(417,(320,112))))))'), CipresTree('(1,(((236,(((175,131),(((345,468),((167,445),208)),355)),190)),(((398,77),(256,(351,55))),((((104,((303,349),108)),((((((186,158),119),((400,(151,252)),((135,95),(160,209)))),((491,369),(189,182))),((((34,(118,347)),((275,(300,471)),(392,164))),((373,((173,41),(((136,(411,174)),152),((92,(162,(292,444))),222)))),446)),((35,163),(((((29,393),((340,(85,384)),(366,153))),(441,123)),(353,(272,(52,322)))),(126,244))))),((150,154),363))),(((168,(((30,24),((134,(312,199)),233)),(48,((187,480),418)))),((137,170),(((436,211),203),(22,330)))),(301,(38,183)))),250))),(((((258,246),(93,74)),59),((115,397),((482,427),487))),(197,107))),(((415,(286,341)),424),(169,486)))'), CipresTree('(1,((((((((214,144),(472,89)),(((192,264),470),(285,91))),159),439),(370,(277,(416,202)))),((((56,437),70),(323,66)),(((157,57),422),116))),((((466,((490,65),124)),(428,273)),(67,((461,308),378))),(410,218))),((((((304,296),((361,294),350)),((133,((476,(473,460)),(274,389))),(((72,263),(((458,11),(198,(248,(((492,(((219,455),204),((284,((((165,(194,(371,212))),494),(302,(270,227))),(122,(12,240)))),((325,(((329,239),339),(((121,(469,51)),((278,(243,456)),(((((381,225),(394,342)),(395,363)),317),(((207,423),((390,(((107,391),309),82)),462)),((((140,255),318),338),((179,(188,((63,222),((100,334),178)))),((141,259),156))))))),((306,414),287)))),(242,283))))),(185,(382,386))),385)))),430)),((117,324),(200,(58,143)))))),(429,337)),(((49,464),96),((142,94),305))),221))')] elif True: cipresTrees = [CipresTree('(((32:0.0279830,30:0.0195940):0.0090420,(((((37:0.0395040,38:0.0157030):0.0034740,40:0.0204420):0.0030870,39:0.0105750):0.0156940,42:0.0475990):0.0053080,41:0.0315870):0.0076790):0.0092970,45:0.0393700)'), CipresTree('((((32:0.0279830,30:0.0195940):0.0090420,39:0.0392560):0.0092970,((43:0.0409910,45:0.0266040):0.0080480,44:0.0484770):0.0047180):0.0195670,(46:0.0451800,(47:0.0187930,48:0.0137880):0.0147730):0.0049980,49:0.0406330)'), CipresTree('(((((13:0.0248790,5:0.0232630):0.0144300,32:0.0267540):0.0012290,30:0.0195940):0.0090420,39:0.0392560):0.0092970,45:0.0393700)'), CipresTree('(((32:0.0279830,((((26:0.0025720,29:0.0134590):0.0028560,33:0.0100950):0.0043070,(28:0.0190590,30:0.0004750):0.0061900):0.0048320,27:0.0194850):0.0080970):0.0090420,39:0.0392560):0.0092970,45:0.0393700)')] else: cipresTrees = [ CipresTree('(7,(8,9,21),16)'), CipresTree('(1,(((2,4),3),(7,((8,9),16))),(5,6))'), CipresTree('(7,(((((8,(19,20)),(12,13)),(17,18)),11),9),16)'), CipresTree('(7,((8,(9,10)),(14,15)),16)')] _LOG.debug('calling mergeTrees with [%s]' % ',\n'.join([str(i) for i in cipresTrees])) if showingTrees: for n, t in enumerate(cipresTrees): t.show('tree' + str(n) + '.dot') returned = obj.mergeTrees([toIDLTree(i) for i in cipresTrees]) if showingTrees: CipresTree(returned).show('returned.dot') return returned _LOG = cipresGetLogger('pipres.service_impl.client.tree_merge') if __name__ == '__main__': registryWrapper = cipresClientInit(sys.argv) treeMergeObjRef = registryWrapper.getServiceOrExit(CipresIDL_api1.TreeMerge) try: tree = testSimpleMerger(treeMergeObjRef) _LOG.debug('Returned: %s' % tree.m_newick) print 'Returned ', tree.m_newick finally: treeMergeObjRef.remove()