#!/usr/bin/env python import sys from collections import defaultdict from ete2 import Tree try: t = Tree(sys.argv[1]) except IndexError: print >>sys.stderr, 'you need to provide a newick tree file as first argument\n\n' print >>sys.stderr, 'Usage: Newick2FastTreeConstraints.py tree.nw > constraints.fa' sys.exit(1) n2content = t.get_cached_content() all_leaves = sorted(n2content[t]) alg = defaultdict(list) for n in t.traverse("postorder"): if len(n.children) > 1: ones = n2content[n] for leaf in all_leaves: if leaf in ones: alg[leaf].append("1") else: alg[leaf].append("0") print >>sys.stderr, "Number of leafs:", len(alg) print >>sys.stderr, "Number of constraints:", set([len(v) for v in alg.values()]) for name, values in alg.iteritems(): print ">%s\n%s" %(name.name, ''.join(values))