コード例 #1
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    options, files = parser.parse_args()
    stat = Stat()
    plumb(stat, files)
コード例 #2
0
def run():

    parser = optparse.OptionParser(__doc__)
    options, files = parser.parse_args()

    height = Height()
    plumb(height, files)
コード例 #3
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    options, files = parser.parse_args()

    # Read trees
    first = True
    for count, line in enumerate(fileinput.input(files),1):
        t = ete2.Tree(line)
        leaves = t.get_leaves()
        # If first tree, get names
        if first:
            names = sorted([l.name for l in leaves])
            print_middle(names)
            first = False
        for l in leaves:
            if l.name in names:
                l.name = str(names.index(l.name)+1)

        # Print tree line
        print "TREE tree_%d = %s" % (count, t.write())
    
    print_footer()

    # Done
    return 0
コード例 #4
0
def run():

    parser = optparse.OptionParser(__doc__)
    parser.add_option('-a', '--attribute', default=None)
    parser.add_option('-f',
                      '--file',
                      dest="filename",
                      help='Specifies a file from which to read taxa')
    parser.add_option('-i',
                      '--inverse',
                      action="store_true",
                      default=False,
                      dest="inverse")
    parser.add_option('-v', '--value', default=None)
    options, files = parser.parse_args()

    if (options.attribute and options.value) or options.filename:
        taxa = []
    else:
        if files:
            taxa = set(files[0].split(","))
            files = files[1:]
        else:
            sys.stderr.write(
                "Must specify either a list of taxa, a file of taxa, or an attribute and value.\n"
            )
            sys.exit(1)

    prune = Prune(taxa, options.filename, options.attribute, options.value,
                  options.inverse)
    plumb(prune, files)
コード例 #5
0
def run():

    parser = optparse.OptionParser(__doc__)
    options, files = parser.parse_args()

    dedupe = Dedupe()
    plumb(dedupe, files)
コード例 #6
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-a',
                      '--age',
                      action="store_true",
                      dest="age",
                      default=False,
                      help="Include age information in report.")
    parser.add_option('-f',
                      '--frequency',
                      type="float",
                      dest="frequency",
                      default=1.0,
                      help='Minimum clade frequency to report.')
    parser.add_option("-o",
                      "--output",
                      action="store",
                      dest="filename",
                      help="save clades to FILE",
                      metavar="FILE")
    parser.add_option('-s',
                      '--sort',
                      action="store_true",
                      dest="sort",
                      default=False)
    options, files = parser.parse_args()

    support = Support(options.frequency, options.age, options.sort,
                      options.filename)
    plumb(support, files)
コード例 #7
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    options, files = parser.parse_args()

    taxa = Taxa()
    plumb(taxa, files)
コード例 #8
0
def run():
    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-a', '--attribute', dest="attribute", default=None)
    parser.add_option('-d', '--dpi', type="int", default=None)
    parser.add_option('-H', '--height', type="int", dest="h", default=None)
    parser.add_option('-l', '--label', default="name")
    parser.add_option('-m', '--multiple', default=False, action="store_true")
    parser.add_option('-o', '--output', default=None)
    parser.add_option('-u', '--units', default="px")
    parser.add_option('-w', '--width', type="int", dest="w", default=None)
    options, files = parser.parse_args()

    # Setup TreeStyle
    ts = ete2.TreeStyle()
    ts.show_scale = False
    ts.show_branch_support = True

    # Read trees
    for n, line in enumerate(fileinput.input(files)):
        t = ete2.Tree(line)

        # Add faces
        if options.attribute:
            values = set(
                [getattr(l, options.attribute) for l in t.get_leaves()])
            colours = get_colour_set(len(values))
            colour_map = dict(zip(values, colours))
            for l in t.iter_leaves():
                mycolour = colour_map[getattr(l, options.attribute)]
                l.add_face(
                    ete2.CircleFace(radius=10, color=mycolour, style="sphere"),
                    0)
        for l in t.iter_leaves():
            l.add_face(ete2.TextFace(getattr(l, options.label)), 1)

        # Plot or save
        if options.output:
            kw = {}
            if options.h or options.w:
                for o in ("h", "w", "units", "dpi"):
                    if getattr(options, o):
                        kw[o] = getattr(options, o)
            if options.multiple:
                base, ext = os.path.splitext(options.output)
                filename = base + ("_%06d" % (n + 1)) + ext
            else:
                filename = options.output
            t.render(filename, ultrametric, tree_style=ts, **kw)
        else:
            t.show(ultrametric, tree_style=ts)

        if not options.multiple:
            return 0

    return 0
コード例 #9
0
def run():

    parser = optparse.OptionParser(__doc__)
    parser.add_option('-a', '--attribute', dest="attribute", default=None)
    parser.add_option('-t', '--translate',
                help='Specifies the translation file.',default=None)
    options, files = parser.parse_args()

    collapse = Collapse(options.translate, options.attribute)
    plumb(collapse, files)
コード例 #10
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-a', '--ages', action="store_true", dest="age", default=False, help="Include age information in report.")
    parser.add_option('-f', '--frequency', type="float", dest="frequency",
            default=1.0, help='Minimum clade frequency to report.')
    options, files = parser.parse_args()

    clades = Clades(options.frequency, options.age)
    plumb(clades, files)
コード例 #11
0
def run():
    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-c',
                      '--compress',
                      action="store_true",
                      dest="compress",
                      default=False)
    options, files = parser.parse_args()

    pretty = Pretty(compress=options.compress)
    plumb(pretty, files)
コード例 #12
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-s',
                      '--scale',
                      type="float",
                      default=1.0,
                      help='Scaling factor.')
    options, files = parser.parse_args()

    scale = Scale(options.scale)
    plumb(scale, files)
コード例 #13
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-f',
                      '--file',
                      dest="filename",
                      help='Specifies the translation file.')
    print(sys.argv)
    options, files = parser.parse_args()

    rename = Rename(options.filename)
    plumb(rename, files)
コード例 #14
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-l',
                      '--lengths',
                      action="store",
                      dest="lengths",
                      default="mean")
    options, files = parser.parse_args()

    uniq = Uniq(options.lengths)
    plumb(uniq, files)
コード例 #15
0
def run():

    parser = optparse.OptionParser(__doc__)
    parser.add_option('-f',
                      '--frequency',
                      type="float",
                      dest="frequency",
                      default=0.5,
                      help="Minimum clade support to include in tree.")
    options, files = parser.parse_args()

    consensus = Consensus(options.frequency)
    plumb(consensus, file)
コード例 #16
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-n',
                      action="store",
                      dest="iterations",
                      type="int",
                      default=1)
    parser.add_option('-g', "--guard", action="store", dest="guarded")
    options, files = parser.parse_args()

    rogue = Rogue(options.iterations, options.guarded)
    plumb(rogue, files)
コード例 #17
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-e',
                      '--extract',
                      action="store_true",
                      help="Extract data from annotated tree to file.")
    parser.add_option('-f',
                      '--file',
                      dest="filename",
                      help="File to read/write annotation data from/to.")
    parser.add_option(
        '-k',
        '--key',
        dest="key",
        help="Name of column in annotation file to match against taxon names")
    parser.add_option('-m', '--multiple', default=False, action="store_true")
    options, files = parser.parse_args()

    annotate = Annotate(options.filename, options.key, options.extract,
                        options.multiple)
    plumb(annotate, files)
コード例 #18
0
def run():

    # Parse options
    parser = optparse.OptionParser(__doc__)
    parser.add_option('-b',
                      '--burnin',
                      action="store",
                      dest="burnin",
                      type="int",
                      default=0)
    parser.add_option('-s',
                      '--subsample',
                      action="store",
                      dest="subsample",
                      type="int",
                      default=1)
    parser.add_option('--no-annotations',
                      action="store_true",
                      dest="no_annotations",
                      default=False)
    options, files = parser.parse_args()
    if not files:
        files = ["-"]

    # Read files
    for filename in files:
        if filename == "-":
            fp = sys.stdin
        else:
            fp = open(filename, "r")

        tree_strings = []
        firstline = True
        for line in fp:
            # Skip blank lines
            if not line:
                continue

            # Detect Nexus file format by checking first line
            if firstline:
                if line.strip() == "#NEXUS":
                    isNexus = True
                    inTranslate = False
                    nexus_trans = {}
                else:
                    isNexus = False
                firstline = False

            # Detect beginning of Nexus translate block
            if isNexus and "translate" in line.lower():
                inTranslate = True
                continue

            # Handle Nexus translate block
            if isNexus and inTranslate:
                # Detect ending of translate block...
                if line.strip() == ";":
                    inTranslate = False
                # ...or handle a line of translate block
                else:
                    if line.strip().endswith(";"):
                        line = line[:-1]
                        inTranslate = False
                    index, name = line.strip().split()
                    if name.endswith(","):
                        name = name[:-1]
                    nexus_trans[index] = name

            # Try to find a likely tree on this line and extract it
            if (")" in line and ";" in line
                    and line.count("(") == line.count(")")):
                # Smells like a tree!
                start = line.index("(")
                end = line.rindex(";") + 1
                tree_strings.append(line[start:end])

        burnin = int(round((options.burnin / 100.0) * len(tree_strings)))
        tree_strings = tree_strings[burnin::options.subsample]

        while tree_strings:
            tree_string = tree_strings.pop(0)
            t = get_tree(tree_string)
            if not t:
                continue
            if isNexus and nexus_trans:
                for node in t.traverse():
                    if node.name and node.name in nexus_trans:
                        node.name = nexus_trans[node.name]
            if options.no_annotations:
                print t.write(format_root_node=True)
            else:
                print t.write(features=[], format_root_node=True)

    # Done
    return 0