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)
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)
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)