コード例 #1
0
ファイル: treevis.py プロジェクト: ChriZiegler/ivy
    def add(self, data, name=None, support=70, scaled=True,
            branchlabels=False, leaflabels=True, *args, **kwargs):
        """
        Add tree to existing figure
        """
        root = None
        if isinstance(data, tree.Node):
            root = data
        else:
            root = tree.read(data)
        if not root:
            raise IOError, "cannot coerce data into tree.Node"

        name = name or root.treename
        self.root.append(root)

        fig = self.figure
        N = len(self.plot)+1
        for i, p in enumerate(self.plot):
            p.change_geometry(1, N, i+1)
        plt = TreePlot(fig, 1, N, N, tf=self, app=self, name=name, support=support,
                       scaled=scaled, branchlabels=branchlabels,
                       leaflabels=leaflabels, *args, **kwargs)
        p = fig.add_subplot(plt)
        p.set_root(root)
        p.plot_tree()
        p.index = N-1
        self.plot.append(p)
        if name:
            assert name not in self.name2plot
            self.name2plot[name] = p
コード例 #2
0
    def add(self, data, name=None, support=70, scaled=True,
            branchlabels=False, leaflabels=True):
        root = None
        if isinstance(data, tree.Node):
            root = data
        else:
            root = tree.read(data)
        if not root:
            raise IOError, "cannot coerce data into tree.Node"
        
        name = name or root.treename
        self.root.append(root)
            
        fig = self.figure
        N = len(self.plots)+1
        for i, p in enumerate(self.plots):
            p.change_geometry(1, N, i+1)
        p = fig.add_subplot(
            TreePlot(fig, 1, N, N, app=self, name=name, support=support,
                     scaled=scaled, branchlabels=branchlabels,
                     leaflabels=leaflabels)
            ).plot_tree(self.root[-1])
        p.index = N-1
        self.plots.append(p)
        if name:
            assert name not in self.name2plot
            self.name2plot[name] = p

        ## global IP
        ## if IP:
        ##     def f(shell, s):
        ##         self.highlight(s)
        ##         return sorted([ x.label for x in self.highlighted ])
        ##     IP.expose_magic("highlight", f)
        ##     def f(shell, s):
        ##         self.root.ladderize()
        ##         self.redraw()
        ##     IP.expose_magic("ladderize", f)
        ##     def f(shell, s):
        ##         self.show()
        ##     IP.expose_magic("show", f)
        ##     def f(shell, s):
        ##         self.redraw()
        ##     IP.expose_magic("redraw", f)
        return p
コード例 #3
0
    def __init__(self, data, name=None, scaled=True, div=0.25,
                 branchlabels=True, leaflabels=True, overview=True):
        self.name = name
        self.div_value = div
        self.scaled = scaled
        self.branchlabels = branchlabels
        self.leaflabels = leaflabels
        self.highlighted = set()
        if isinstance(data, tree.Node):
            root = data
        else:
            root = tree.read(data)
        self.root = root
        if not self.root:
            raise IOError, "cannot coerce data into tree.Node"
        self.name = self.name or root.treename
        pars = SubplotParams(
            left=0, right=1, bottom=0.05, top=1, wspace=0.01
            )
        fig = pyplot.figure(subplotpars=pars, facecolor="white")
        connect_events(fig.canvas)
        self.figure = fig
        tp = TreePlot(fig, 1, 2, 2, app=self, name=self.name,
                      scaled=self.scaled, branchlabels=self.branchlabels,
                      leaflabels=self.leaflabels)
        ax2 = fig.add_subplot(tp)
        ax2.plot_tree(self.root)
        self.detail = ax2
        ax1 = fig.add_subplot(
            OverviewTreePlot(fig, 121, app=self, snap=False, scaled=scaled,
                             branchlabels=False,
                             leaflabels=False,
                             target=self.detail)
            ).plot_tree(self.root)
        self.overview = ax1
        if not overview:
            self.toggle_overview(False)
        self.set_positions()

        if self.detail.nleaves < 50:
            self.toggle_overview()
コード例 #4
0
ファイル: treevis.py プロジェクト: ChriZiegler/ivy
 def __init__(self, data, name=None, scaled=True, div=0.25,
              branchlabels=True, leaflabels=True, xoff=0, yoff=0,
              mark_named=True, overview=True, interactive=True,
              radial=False, leaf_fontsize=10, branch_fontsize=10,
              direction="rightwards"):
     self.overview = None
     self.overview_width = div
     self.name = name
     self.scaled = scaled
     self.radial = radial
     if radial:
         self.leaflabels = False
     self.branchlabels = branchlabels
     self.leaflabels = leaflabels
     self.xoff = xoff
     self.yoff = yoff
     self.direction=direction
     self.leaf_anchor = "left" if self.direction == "rightwards" else "right"
     self.branch_anchor = "right" if self.direction == "rightwards" else "left"
     self.mark_named=mark_named # Drawing a circle at named nodes
     if isinstance(data, tree.Node):
         root = data
     else:
         root = tree.read(data)
     self.root = root
     if not self.root:
         raise IOError, "cannot coerce data into tree.Node"
     self.name = self.name or root.treename
     pars = SubplotParams(
         left=0, right=1, bottom=0.05, top=1, wspace=0.01
         )
     fig = pyplot.figure(subplotpars=pars, facecolor="white")
     events.connect_events(fig.canvas)
     self.figure = fig
     self.layers = OrderedDict()
     self.ovlayers = OrderedDict()
     self.initialize_subplots(overview, leaf_fontsize, branch_fontsize)
     self.home()
コード例 #5
0
ファイル: catpars.py プロジェクト: rhr/ivy
    for child in node.children:
        _bindeltran(child, stepmatrix, node2dpv, node2deltr, s)

    return node2deltr
    
def binary_deltran(tree, chardata, stepmatrix):
    states = range(len(stepmatrix))
    node2dpv = downpass(tree, states, stepmatrix, chardata)
    node2deltr = _bindeltran(tree, stepmatrix, node2dpv)
    return node2deltr
        

if __name__ == "__main__":
    from pprint import pprint
    from ivy import tree
    root = tree.read("(a,((b,c),(d,(e,f))));")

    nstates = 4
    states = range(nstates)
    cm = default_costmatrix(nstates)
    chardata = dict(zip("abcdef", map(int, "000233")))
    dp = downpass(root, states, cm, chardata)

    for i, node in enumerate(root):
        if not node.label:
            node.label = "N%s" % i
        else:
            node.label = "%s (%s)" % (node.label, chardata[node.label])

    print(ascii.render(root))
            
コード例 #6
0
ファイル: catpars.py プロジェクト: wennading/ivy
        _bindeltran(child, stepmatrix, node2dpv, node2deltr, s)

    return node2deltr


def binary_deltran(tree, chardata, stepmatrix):
    states = range(len(stepmatrix))
    node2dpv = downpass(tree, states, stepmatrix, chardata)
    node2deltr = _bindeltran(tree, stepmatrix, node2dpv)
    return node2deltr


if __name__ == "__main__":
    from pprint import pprint
    from ivy import tree
    root = tree.read("(a,((b,c),(d,(e,f))));")

    nstates = 4
    states = range(nstates)
    cm = default_costmatrix(nstates)
    chardata = dict(zip("abcdef", map(int, "000233")))
    dp = downpass(root, states, cm, chardata)

    for i, node in enumerate(root):
        if not node.label:
            node.label = "N%s" % i
        else:
            node.label = "%s (%s)" % (node.label, chardata[node.label])

    print(ascii.render(root))