Exemplo n.º 1
0
    def test_convert_tree_tips(self):
        """Convert tree tips to phylip labels"""

        # convert tree tips to PHYLIP labels
        tree = convert_tree_tips(self.align_map, self.tmp_tree_fname)

        self.assertEqual(tree.getNewick(with_distances=True), PHYLIP_TREE)
Exemplo n.º 2
0
    def test_convert_tree_tips(self):
        """Convert tree tips to phylip labels"""

        # convert tree tips to PHYLIP labels
        tree = convert_tree_tips(self.align_map, self.tmp_tree_fname)

        self.assertEqual(tree.getNewick(with_distances=True), PHYLIP_TREE)
def main():
    option_parser, opts, args =\
        parse_command_line_parameters(**script_info)

    parameters = {}

    # get the tree insertion method to use
    module = opts.insertion_method

    # create output directory
    output_dir = opts.output_dir
    create_dir(output_dir)

    # list of tree insertion methods
    tree_insertion_module_names = \
        {'raxml_v730': brokit.raxml_v730,
         'parsinsert': brokit.parsinsert,
         'pplacer': brokit.pplacer}

    # load input sequences and convert to phylip since the tools require
    # the query sequences to phylip-compliant names
    load_aln = parse_fasta(open(opts.input_fasta_fp, 'U'))
    aln = DenseAlignment(load_aln)
    seqs, align_map = aln.toPhylip()

    if opts.method_params_fp:
        param_dict = parse_qiime_parameters(open(opts.method_params_fp, 'U'))

    if module == 'raxml_v730':
        # load the reference sequences
        load_ref_aln = \
            DenseAlignment(parse_fasta(open(opts.refseq_fp, 'U')))

        # combine and load the reference plus query
        combined_aln = parse_fasta(StringIO(load_ref_aln.toFasta() +
                                                   '\n' + aln.toFasta()))
        # overwrite the alignment map
        aln = DenseAlignment(combined_aln)
        seqs, align_map = aln.toPhylip()

        try:
            parameters = param_dict['raxml']
        except:
            parameters = {}

        tree = convert_tree_tips(align_map, opts.starting_tree_fp)

        # write out the tree with phylip labels
        updated_tree_fp = join(output_dir,
                               '%s_phylip_named_tree.tre' % (module))
        write_updated_tree_file(updated_tree_fp, tree)

        # set the primary parameters for raxml
        parameters['-w'] = abspath(output_dir) + '/'
        parameters["-n"] = split(splitext(get_tmp_filename())[0])[-1]
        parameters["-t"] = updated_tree_fp

        if "-f" not in parameters:
            parameters["-f"] = 'v'
        if "-m" not in parameters:
            parameters["-m"] = 'GTRGAMMA'

    elif module == 'pplacer':
        try:
            parameters = param_dict['pplacer']
        except:
            parameters = {}

        # make sure stats file is passed
        if not opts.stats_fp:
            raise IOError(
                'When using pplacer, the RAxML produced info file is required.')

        # set the primary parameters for pplacer - allow for user-defined
        parameters['--out-dir'] = abspath(output_dir) + '/'
        parameters["-t"] = opts.starting_tree_fp
        parameters['-r'] = opts.refseq_fp
        parameters['-s'] = opts.stats_fp

    elif module == 'parsinsert':
        try:
            parameters = param_dict['parsinsert']
        except:
            parameters = {}

        # define log fp
        log_fp = join(output_dir, 'parsinsert.log')

        # define tax assignment values fp
        tax_assign_fp = join(output_dir, 'parsinsert_assignments.log')
        parameters["-l"] = log_fp
        parameters["-o"] = tax_assign_fp
        parameters["-s"] = opts.refseq_fp
        parameters["-t"] = opts.starting_tree_fp

    # call the module and return a tree object
    result = \
        tree_insertion_module_names[module].insert_sequences_into_tree(seqs,
                                                                       moltype=DNA, params=parameters)

    result_tree = strip_and_rename_unwanted_labels_from_tree(align_map, result)

    # write out the resulting tree
    final_tree = join(output_dir, '%s_final_placement.tre' % (module))
    write_updated_tree_file(final_tree, result)
Exemplo n.º 4
0
def main():
    option_parser, opts, args =\
       parse_command_line_parameters(**script_info)

    parameters = {}

    # get the tree insertion method to use
    module = opts.insertion_method

    # create output directory
    output_dir = opts.output_dir
    create_dir(output_dir)

    # list of tree insertion methods
    tree_insertion_module_names = \
                {'raxml_v730':cogent.app.raxml_v730,
                 'parsinsert':cogent.app.parsinsert,
                 'pplacer':cogent.app.pplacer}

    # load input sequences and convert to phylip since the tools require
    # the query sequences to phylip-compliant names
    load_aln = MinimalFastaParser(open(opts.input_fasta_fp, 'U'))
    aln = DenseAlignment(load_aln)
    seqs, align_map = aln.toPhylip()

    if opts.method_params_fp:
        param_dict = parse_qiime_parameters(open(opts.method_params_fp, 'U'))

    if module == 'raxml_v730':
        # load the reference sequences
        load_ref_aln = \
            DenseAlignment(MinimalFastaParser(open(opts.refseq_fp,'U')))

        # combine and load the reference plus query
        combined_aln = MinimalFastaParser(StringIO(load_ref_aln.toFasta() + \
                                                   '\n' + aln.toFasta()))
        # overwrite the alignment map
        aln = DenseAlignment(combined_aln)
        seqs, align_map = aln.toPhylip()

        try:
            parameters = param_dict['raxml']
        except:
            parameters = {}

        tree = convert_tree_tips(align_map, opts.starting_tree_fp)

        # write out the tree with phylip labels
        updated_tree_fp = join(output_dir, \
                                '%s_phylip_named_tree.tre' % (module))
        write_updated_tree_file(updated_tree_fp, tree)

        # set the primary parameters for raxml
        parameters['-w'] = abspath(output_dir) + '/'
        parameters["-n"] = split(splitext(get_tmp_filename())[0])[-1]
        parameters["-t"] = updated_tree_fp

        if "-f" not in parameters:
            parameters["-f"] = 'v'
        if "-m" not in parameters:
            parameters["-m"] = 'GTRGAMMA'

    elif module == 'pplacer':
        try:
            parameters = param_dict['pplacer']
        except:
            parameters = {}

        # make sure stats file is passed
        if not opts.stats_fp:
            raise IOError, \
                'When using pplacer, the RAxML produced info file is required.'

        # set the primary parameters for pplacer - allow for user-defined
        parameters['--out-dir'] = abspath(output_dir) + '/'
        parameters["-t"] = opts.starting_tree_fp
        parameters['-r'] = opts.refseq_fp
        parameters['-s'] = opts.stats_fp

    elif module == 'parsinsert':
        try:
            parameters = param_dict['parsinsert']
        except:
            parameters = {}

        # define log fp
        log_fp = join(output_dir, 'parsinsert.log')

        # define tax assignment values fp
        tax_assign_fp = join(output_dir, 'parsinsert_assignments.log')
        parameters["-l"] = log_fp
        parameters["-o"] = tax_assign_fp
        parameters["-s"] = opts.refseq_fp
        parameters["-t"] = opts.starting_tree_fp

    # call the module and return a tree object
    result = \
        tree_insertion_module_names[module].insert_sequences_into_tree(seqs,
                                                moltype=DNA, params=parameters)

    result_tree = strip_and_rename_unwanted_labels_from_tree(align_map, result)

    # write out the resulting tree
    final_tree = join(output_dir, '%s_final_placement.tre' % (module))
    write_updated_tree_file(final_tree, result)
Exemplo n.º 5
0
def main():
    option_parser, opts, args = parse_command_line_parameters(**script_info)

    parameters = {}

    # get the tree insertion method to use
    module = opts.insertion_method

    # create output directory
    output_dir = opts.output_dir
    create_dir(output_dir)

    # list of tree insertion methods
    tree_insertion_module_names = {
        "raxml_v730": qiime.pycogent_backports.raxml_v730,
        "parsinsert": qiime.pycogent_backports.parsinsert,
        "pplacer": qiime.pycogent_backports.pplacer,
    }

    # load input sequences and convert to phylip since the tools require
    # the query sequences to phylip-compliant names
    load_aln = MinimalFastaParser(open(opts.input_fasta_fp, "U"))
    aln = DenseAlignment(load_aln)
    seqs, align_map = aln.toPhylip()

    if opts.method_params_fp:
        param_dict = parse_qiime_parameters(open(opts.method_params_fp, "U"))

    if module == "raxml_v730":
        # load the reference sequences
        load_ref_aln = DenseAlignment(MinimalFastaParser(open(opts.refseq_fp, "U")))

        # combine and load the reference plus query
        combined_aln = MinimalFastaParser(StringIO(load_ref_aln.toFasta() + "\n" + aln.toFasta()))
        # overwrite the alignment map
        aln = DenseAlignment(combined_aln)
        seqs, align_map = aln.toPhylip()

        try:
            parameters = param_dict["raxml"]
        except:
            parameters = {}

        tree = convert_tree_tips(align_map, opts.starting_tree_fp)

        # write out the tree with phylip labels
        updated_tree_fp = join(output_dir, "%s_phylip_named_tree.tre" % (module))
        write_updated_tree_file(updated_tree_fp, tree)

        # set the primary parameters for raxml
        parameters["-w"] = abspath(output_dir) + "/"
        parameters["-n"] = split(splitext(get_tmp_filename())[0])[-1]
        parameters["-t"] = updated_tree_fp

        if "-f" not in parameters:
            parameters["-f"] = "v"
        if "-m" not in parameters:
            parameters["-m"] = "GTRGAMMA"

    elif module == "pplacer":
        try:
            parameters = param_dict["pplacer"]
        except:
            parameters = {}

        # make sure stats file is passed
        if not opts.stats_fp:
            raise IOError, "When using pplacer, the RAxML produced info file is required."

        # set the primary parameters for pplacer - allow for user-defined
        parameters["--out-dir"] = abspath(output_dir) + "/"
        parameters["-t"] = opts.starting_tree_fp
        parameters["-r"] = opts.refseq_fp
        parameters["-s"] = opts.stats_fp

    elif module == "parsinsert":
        try:
            parameters = param_dict["parsinsert"]
        except:
            parameters = {}

        # define log fp
        log_fp = join(output_dir, "parsinsert.log")

        # define tax assignment values fp
        tax_assign_fp = join(output_dir, "parsinsert_assignments.log")
        parameters["-l"] = log_fp
        parameters["-o"] = tax_assign_fp
        parameters["-s"] = opts.refseq_fp
        parameters["-t"] = opts.starting_tree_fp

    # call the module and return a tree object
    result = tree_insertion_module_names[module].insert_sequences_into_tree(seqs, moltype=DNA, params=parameters)

    result_tree = strip_and_rename_unwanted_labels_from_tree(align_map, result)

    # write out the resulting tree
    final_tree = join(output_dir, "%s_final_placement.tre" % (module))
    write_updated_tree_file(final_tree, result)