本文整理汇总了Python中qiime.workflow.util.get_params_str函数的典型用法代码示例。如果您正苦于以下问题:Python get_params_str函数的具体用法?Python get_params_str怎么用?Python get_params_str使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_params_str函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
def main():
option_parser, opts, args = \
parse_command_line_parameters(suppress_verbose=True, **script_info)
input_dir = opts.input_dir
parameter_fp = opts.parameter_fp
read1_indicator = opts.read1_indicator
read2_indicator = opts.read2_indicator
match_barcodes = opts.match_barcodes
barcode_indicator = opts.barcode_indicator
leading_text = opts.leading_text
trailing_text = opts.trailing_text
include_input_dir_path = opts.include_input_dir_path
output_dir = abspath(opts.output_dir)
remove_filepath_in_name = opts.remove_filepath_in_name
print_only = opts.print_only
if remove_filepath_in_name and not include_input_dir_path:
option_parser.error("If --remove_filepath_in_name is enabled, "
"--include_input_dir_path must also be enabled.")
if opts.parameter_fp:
with open(opts.parameter_fp, 'U') as parameter_f:
params_dict = parse_qiime_parameters(parameter_f)
params_str = get_params_str(params_dict['join_paired_ends'])
else:
params_dict = {}
params_str = ""
create_dir(output_dir)
all_files = []
extensions = ['.fastq.gz', '.fastq', '.fq.gz', '.fq']
for root, dir, fps in walk(input_dir):
for fp in fps:
for extension in extensions:
if fp.endswith(extension):
all_files += [abspath(join(root, fp))]
pairs, bc_pairs = get_pairs(all_files, read1_indicator, read2_indicator,
match_barcodes, barcode_indicator)
commands = create_commands_jpe(pairs, output_dir,
params_str, leading_text, trailing_text, include_input_dir_path,
remove_filepath_in_name, match_barcodes, bc_pairs)
qiime_config = load_qiime_config()
if print_only:
command_handler = print_commands
else:
command_handler = call_commands_serially
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params_dict,
qiime_config=qiime_config)
# Call the command handler on the list of commands
command_handler(commands,
status_update_callback=no_status_updates,
logger=logger,
close_logger_on_success=True)
示例2: pick_denovo_otus
def pick_denovo_otus(input_fp, output_dir, new_ref_set_id, otu_picking_method, params, logger):
try:
d = params["pick_otus"].copy()
del d["otu_picking_method"]
except KeyError:
pass
d["uclust_otu_id_prefix"] = "%s.ReferenceOTU" % new_ref_set_id
params_str = " %s" % get_params_str(d)
# Build the OTU picking command
result = "pick_otus.py -i %s -o %s -m %s %s" % (input_fp, output_dir, otu_picking_method, params_str)
return result
示例3: pick_denovo_otus
def pick_denovo_otus(input_fp,
output_dir,
new_ref_set_id,
otu_picking_method,
params,
logger):
try:
d = params['pick_otus'].copy()
del d['otu_picking_method']
except KeyError:
pass
d['uclust_otu_id_prefix'] = '%s.ReferenceOTU' % new_ref_set_id
params_str = ' %s' % get_params_str(d)
# Build the OTU picking command
result = 'pick_otus.py -i %s -o %s -m %s %s' %\
(input_fp, output_dir, otu_picking_method, params_str)
return result
示例4: run_pick_closed_reference_otus
def run_pick_closed_reference_otus(
input_fp,
refseqs_fp,
output_dir,
taxonomy_fp,
command_handler,
params,
qiime_config,
parallel=False,
logger=None,
suppress_md5=False,
status_update_callback=print_to_stdout):
""" Run the data preparation steps of Qiime
The steps performed by this function are:
1) Pick OTUs;
2) Build an OTU table with optional pre-defined taxonmy.
"""
# confirm that a valid otu picking method was supplied before doing
# any work
reference_otu_picking_methods = ['blast','uclust_ref','usearch61_ref']
try:
otu_picking_method = params['pick_otus']['otu_picking_method']
except KeyError:
otu_picking_method = 'uclust_ref'
assert otu_picking_method in reference_otu_picking_methods,\
"Invalid OTU picking method supplied: %s. Valid choices are: %s"\
% (otu_picking_method,' '.join(reference_otu_picking_methods))
# Prepare some variables for the later steps
input_dir, input_filename = split(input_fp)
input_basename, input_ext = splitext(input_filename)
create_dir(output_dir)
commands = []
python_exe_fp = qiime_config['python_exe_fp']
script_dir = get_qiime_scripts_dir()
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger,[input_fp,refseqs_fp,taxonomy_fp])
# Prep the OTU picking command
pick_otu_dir = '%s/%s_picked_otus' % (output_dir, otu_picking_method)
otu_fp = '%s/%s_otus.txt' % (pick_otu_dir,input_basename)
if parallel and (otu_picking_method == 'blast' or
otu_picking_method == 'uclust_ref' or
otu_picking_method == 'usearch61_ref'):
# Grab the parallel-specific parameters
try:
params_str = get_params_str(params['parallel'])
except KeyError:
params_str = ''
# Grab the OTU picker parameters
try:
# Want to find a cleaner strategy for this: the parallel script
# is method-specific, so doesn't take a --alignment_method
# option. This works for now though.
d = params['pick_otus'].copy()
if 'otu_picking_method' in d:
del d['otu_picking_method']
params_str += ' %s' % get_params_str(d)
except KeyError:
pass
otu_picking_script = 'parallel_pick_otus_%s.py' % otu_picking_method
# Build the OTU picking command
pick_otus_cmd = '%s %s/%s -i %s -o %s -r %s -T %s' %\
(python_exe_fp,
script_dir,
otu_picking_script,
input_fp,
pick_otu_dir,
refseqs_fp,
params_str)
else:
try:
params_str = get_params_str(params['pick_otus'])
except KeyError:
params_str = ''
# Since this is reference-based OTU picking we always want to
# suppress new clusters -- force it here.
params_str+= ' --suppress_new_clusters'
logger.write("Forcing --suppress_new_clusters as this is closed-reference OTU picking.\n\n")
# Build the OTU picking command
pick_otus_cmd = '%s %s/pick_otus.py -i %s -o %s -r %s -m %s %s' %\
(python_exe_fp,
script_dir,
input_fp,
pick_otu_dir,
refseqs_fp,
otu_picking_method,
#.........这里部分代码省略.........
示例5: run_pick_de_novo_otus
def run_pick_de_novo_otus(input_fp,
output_dir,
command_handler,
params,
qiime_config,
parallel=False,
logger=None,
suppress_md5=False,
status_update_callback=print_to_stdout):
""" Run the data preparation steps of Qiime
The steps performed by this function are:
1) Pick OTUs;
2) Pick a representative set;
3) Align the representative set;
4) Assign taxonomy;
5) Filter the alignment prior to tree building - remove positions
which are all gaps, and specified as 0 in the lanemask
6) Build a phylogenetic tree;
7) Build an OTU table.
"""
# Prepare some variables for the later steps
input_dir, input_filename = split(input_fp)
input_basename, input_ext = splitext(input_filename)
create_dir(output_dir)
commands = []
python_exe_fp = qiime_config['python_exe_fp']
script_dir = get_qiime_scripts_dir()
cluster_failures = False
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger,[input_fp])
# Prep the OTU picking command
try:
otu_picking_method = params['pick_otus']['otu_picking_method']
except KeyError:
otu_picking_method = 'uclust'
pick_otu_dir = '%s/%s_picked_otus' % (output_dir, otu_picking_method)
otu_fp = '%s/%s_otus.txt' % (pick_otu_dir,input_basename)
if parallel and (otu_picking_method == 'blast' or
otu_picking_method == 'uclust_ref'):
# Grab the parallel-specific parameters
try:
params_str = get_params_str(params['parallel'])
except KeyError:
params_str = ''
# Grab the OTU picker parameters
try:
# Want to find a cleaner strategy for this: the parallel script
# is method-specific, so doesn't take a --otu_picking_method
# option. This works for now though.
d = params['pick_otus'].copy()
del d['otu_picking_method']
except KeyError:
pass
if otu_picking_method == 'uclust_ref':
try:
suppress_new_clusters = d['suppress_new_clusters']
del d['suppress_new_clusters']
cluster_failures = False
except KeyError:
cluster_failures = True
failure_otu_picking_method = 'uclust'
params_str += ' %s' % get_params_str(d)
otu_picking_script = 'parallel_pick_otus_%s.py' % otu_picking_method
# Build the OTU picking command
pick_otus_cmd = '%s %s/%s -i %s -o %s -T %s' % (python_exe_fp,
script_dir,
otu_picking_script,
input_fp,
pick_otu_dir,
params_str)
else:
try:
params_str = get_params_str(params['pick_otus'])
except KeyError:
params_str = ''
# Build the OTU picking command
pick_otus_cmd = '%s %s/pick_otus.py -i %s -o %s %s' %\
(python_exe_fp, script_dir, input_fp, pick_otu_dir, params_str)
commands.append([('Pick OTUs', pick_otus_cmd)])
if cluster_failures:
reference_otu_fp = otu_fp
clustered_failures_dir = '%s/failure_otus/' % pick_otu_dir
#.........这里部分代码省略.........
示例6: run_core_diversity_analyses
def run_core_diversity_analyses(
biom_fp,
mapping_fp,
sampling_depth,
output_dir,
qiime_config,
command_handler=call_commands_serially,
tree_fp=None,
params=None,
categories=None,
arare_min_rare_depth=10,
arare_num_steps=10,
parallel=False,
suppress_taxa_summary=False,
suppress_beta_diversity=False,
suppress_alpha_diversity=False,
suppress_otu_category_significance=False,
status_update_callback=print_to_stdout,
):
"""
"""
if categories != None:
# Validate categories provided by the users
mapping_data, mapping_comments = parse_mapping_file_to_dict(open(mapping_fp, "U"))
metadata_map = MetadataMap(mapping_data, mapping_comments)
for c in categories:
if c not in metadata_map.CategoryNames:
raise ValueError, (
"Category '%s' is not a column header "
"in your mapping file. "
"Categories are case and white space sensitive. Valid "
"choices are: (%s)" % (c, ", ".join(metadata_map.CategoryNames))
)
if metadata_map.hasSingleCategoryValue(c):
raise ValueError, (
"Category '%s' contains only one value. "
"Categories analyzed here require at least two values." % c
)
else:
categories = []
# prep some variables
if params == None:
params = parse_qiime_parameters([])
create_dir(output_dir)
index_fp = "%s/index.html" % output_dir
index_links = []
commands = []
# begin logging
log_fp = generate_log_fp(output_dir)
index_links.append(("Master run log", log_fp, _index_headers["run_summary"]))
logger = WorkflowLogger(log_fp, params=params, qiime_config=qiime_config)
input_fps = [biom_fp, mapping_fp]
if tree_fp != None:
input_fps.append(tree_fp)
log_input_md5s(logger, input_fps)
# run print_biom_table_summary.py on input BIOM table
try:
params_str = get_params_str(params["print_biom_table_summary"])
except KeyError:
params_str = ""
biom_table_stats_output_fp = "%s/biom_table_summary.txt" % output_dir
print_biom_table_summary_cmd = "print_biom_table_summary.py -i %s -o %s --suppress_md5 %s" % (
biom_fp,
biom_table_stats_output_fp,
params_str,
)
index_links.append(("BIOM table statistics", biom_table_stats_output_fp, _index_headers["run_summary"]))
commands.append([("Generate BIOM table summary", print_biom_table_summary_cmd)])
# filter samples with fewer observations than the requested sampling_depth.
# since these get filtered for some analyses (eg beta diversity after
# even sampling) it's useful to filter them here so they're filtered
# from all analyses.
filtered_biom_fp = "%s/table_mc%d.biom" % (output_dir, sampling_depth)
filter_samples_cmd = "filter_samples_from_otu_table.py -i %s -o %s -n %d" % (
biom_fp,
filtered_biom_fp,
sampling_depth,
)
commands.append(
[
(
"Filter low sequence count samples from table (minimum sequence count: %d)" % sampling_depth,
filter_samples_cmd,
)
]
)
biom_fp = filtered_biom_fp
# run initial commands and reset the command list
command_handler(commands, status_update_callback, logger, close_logger_on_success=False)
commands = []
if not suppress_beta_diversity:
bdiv_even_output_dir = "%s/bdiv_even%d/" % (output_dir, sampling_depth)
#.........这里部分代码省略.........
示例7: run_core_diversity_analyses
def run_core_diversity_analyses(
biom_fp,
mapping_fp,
sampling_depth,
output_dir,
qiime_config,
command_handler=call_commands_serially,
tree_fp=None,
params=None,
categories=None,
arare_min_rare_depth=10,
arare_num_steps=10,
parallel=False,
suppress_taxa_summary=False,
suppress_beta_diversity=False,
suppress_alpha_diversity=False,
suppress_otu_category_significance=False,
status_update_callback=print_to_stdout):
"""
"""
if categories != None:
# Validate categories provided by the users
mapping_data, mapping_comments = \
parse_mapping_file_to_dict(open(mapping_fp,'U'))
metadata_map = MetadataMap(mapping_data, mapping_comments)
for c in categories:
if c not in metadata_map.CategoryNames:
raise ValueError, ("Category '%s' is not a column header "
"in your mapping file. "
"Categories are case and white space sensitive. Valid "
"choices are: (%s)" % (c,', '.join(metadata_map.CategoryNames)))
if metadata_map.hasSingleCategoryValue(c):
raise ValueError, ("Category '%s' contains only one value. "
"Categories analyzed here require at least two values." % c)
else:
categories= []
# prep some variables
if params == None:
params = parse_qiime_parameters([])
create_dir(output_dir)
index_fp = '%s/index.html' % output_dir
index_links = []
commands = []
# begin logging
old_log_fps = glob(join(output_dir,'log_20*txt'))
log_fp = generate_log_fp(output_dir)
index_links.append(('Master run log',log_fp,_index_headers['run_summary']))
for old_log_fp in old_log_fps:
index_links.append(('Previous run log',old_log_fp,_index_headers['run_summary']))
logger = WorkflowLogger(log_fp,
params=params,
qiime_config=qiime_config)
input_fps = [biom_fp,mapping_fp]
if tree_fp != None:
input_fps.append(tree_fp)
log_input_md5s(logger,input_fps)
# run 'biom summarize-table' on input BIOM table
try:
params_str = get_params_str(params['biom-summarize-table'])
except KeyError:
params_str = ''
biom_table_stats_output_fp = '%s/biom_table_summary.txt' % output_dir
if not exists(biom_table_stats_output_fp):
biom_table_summary_cmd = \
"biom summarize-table -i %s -o %s --suppress-md5 %s" % \
(biom_fp, biom_table_stats_output_fp,params_str)
commands.append([('Generate BIOM table summary',
biom_table_summary_cmd)])
else:
logger.write("Skipping 'biom summarize-table' as %s exists.\n\n" \
% biom_table_stats_output_fp)
index_links.append(('BIOM table statistics',
biom_table_stats_output_fp,
_index_headers['run_summary']))
# filter samples with fewer observations than the requested sampling_depth.
# since these get filtered for some analyses (eg beta diversity after
# even sampling) it's useful to filter them here so they're filtered
# from all analyses.
filtered_biom_fp = "%s/table_mc%d.biom" % (output_dir, sampling_depth)
if not exists(filtered_biom_fp):
filter_samples_cmd = "filter_samples_from_otu_table.py -i %s -o %s -n %d" %\
(biom_fp,filtered_biom_fp,sampling_depth)
commands.append([('Filter low sequence count samples from table (minimum sequence count: %d)' % sampling_depth,
filter_samples_cmd)])
else:
logger.write("Skipping filter_samples_from_otu_table.py as %s exists.\n\n" \
% filtered_biom_fp)
biom_fp = filtered_biom_fp
# run initial commands and reset the command list
if len(commands) > 0:
command_handler(commands,
status_update_callback,
logger,
#.........这里部分代码省略.........
示例8: pick_reference_otus
def pick_reference_otus(
input_fp, output_dir, otu_picking_method, refseqs_fp, parallel, params, logger, similarity_override=None
):
params_copy = deepcopy(params)
if "pick_otus" in params_copy and "refseqs_fp" in params_copy["pick_otus"]:
raise WorkflowError(
"Cannot pass pick_otus:refseqs_fp in parameters file. This can only be"
" passed on the command line or through the API."
)
if similarity_override is not None:
logger.write("Overridding similiary with %1.3f.\n" % similarity_override)
if "pick_otus" in params_copy:
params_copy["pick_otus"]["similarity"] = str(similarity_override)
else:
params_copy["pick_otus"] = {"similarity": str(similarity_override)}
if parallel and otu_picking_method == "uclust_ref":
# Grab the parallel-specific parameters
try:
params_str = get_params_str(params_copy["parallel"])
except KeyError:
params_str = ""
# Grab the OTU picker parameters
try:
# Want to find a cleaner strategy for this: the parallel script
# is method-specific, so doesn't take a --otu_picking_method
# option. This works for now though.
if "otu_picking_method" in params_copy["pick_otus"]:
del params_copy["pick_otus"]["otu_picking_method"]
except KeyError:
pass
params_str += " %s" % get_params_str(params_copy["pick_otus"])
otu_picking_script = "parallel_pick_otus_%s.py" % otu_picking_method
# Build the OTU picking command
pick_otus_cmd = "%s -i %s -o %s -r %s -T %s" % (
otu_picking_script,
input_fp,
output_dir,
refseqs_fp,
params_str,
)
else:
try:
params_str = get_params_str(params_copy["pick_otus"])
except KeyError:
params_str = ""
# Since this is reference-based OTU picking we always want to
# suppress new clusters -- force it here.
params_str += " --suppress_new_clusters"
logger.write("Forcing --suppress_new_clusters as this is reference-based OTU picking.\n\n")
# Build the OTU picking command
pick_otus_cmd = "pick_otus.py -i %s -o %s -r %s -m %s %s" % (
input_fp,
output_dir,
refseqs_fp,
otu_picking_method,
params_str,
)
return pick_otus_cmd
示例9: run_core_diversity_analyses
def run_core_diversity_analyses(
biom_fp,
mapping_fp,
sampling_depth,
output_dir,
qiime_config,
command_handler=call_commands_serially,
tree_fp=None,
params=None,
categories=None,
arare_min_rare_depth=10,
arare_num_steps=10,
parallel=False,
suppress_taxa_summary=False,
suppress_beta_diversity=False,
suppress_alpha_diversity=False,
suppress_group_significance=False,
status_update_callback=print_to_stdout,
):
"""
"""
if categories is not None:
# Validate categories provided by the users
mapping_data, mapping_comments = parse_mapping_file_to_dict(open(mapping_fp, "U"))
metadata_map = MetadataMap(mapping_data, mapping_comments)
for c in categories:
if c not in metadata_map.CategoryNames:
raise ValueError(
"Category '%s' is not a column header "
"in your mapping file. "
"Categories are case and white space sensitive. Valid "
"choices are: (%s)" % (c, ", ".join(metadata_map.CategoryNames))
)
if metadata_map.hasSingleCategoryValue(c):
raise ValueError(
"Category '%s' contains only one value. "
"Categories analyzed here require at least two values." % c
)
else:
categories = []
comma_separated_categories = ",".join(categories)
# prep some variables
if params is None:
params = parse_qiime_parameters([])
create_dir(output_dir)
index_fp = "%s/index.html" % output_dir
index_links = []
commands = []
# begin logging
old_log_fps = glob(join(output_dir, "log_20*txt"))
log_fp = generate_log_fp(output_dir)
index_links.append(("Master run log", log_fp, _index_headers["run_summary"]))
for old_log_fp in old_log_fps:
index_links.append(("Previous run log", old_log_fp, _index_headers["run_summary"]))
logger = WorkflowLogger(log_fp, params=params, qiime_config=qiime_config)
input_fps = [biom_fp, mapping_fp]
if tree_fp is not None:
input_fps.append(tree_fp)
log_input_md5s(logger, input_fps)
# run 'biom summarize-table' on input BIOM table
try:
params_str = get_params_str(params["biom-summarize-table"])
except KeyError:
params_str = ""
biom_table_stats_output_fp = "%s/biom_table_summary.txt" % output_dir
if not exists(biom_table_stats_output_fp):
biom_table_summary_cmd = "biom summarize-table -i %s -o %s --suppress-md5 %s" % (
biom_fp,
biom_table_stats_output_fp,
params_str,
)
commands.append([("Generate BIOM table summary", biom_table_summary_cmd)])
else:
logger.write("Skipping 'biom summarize-table' as %s exists.\n\n" % biom_table_stats_output_fp)
index_links.append(("BIOM table statistics", biom_table_stats_output_fp, _index_headers["run_summary"]))
# filter samples with fewer observations than the requested sampling_depth.
# since these get filtered for some analyses (eg beta diversity after
# even sampling) it's useful to filter them here so they're filtered
# from all analyses.
filtered_biom_fp = "%s/table_mc%d.biom" % (output_dir, sampling_depth)
if not exists(filtered_biom_fp):
filter_samples_cmd = "filter_samples_from_otu_table.py -i %s -o %s -n %d" % (
biom_fp,
filtered_biom_fp,
sampling_depth,
)
commands.append(
[
(
"Filter low sequence count samples from table (minimum sequence count: %d)" % sampling_depth,
filter_samples_cmd,
)
]
)
else:
#.........这里部分代码省略.........
示例10: align_and_tree
def align_and_tree(repset_fasta_fp,
output_dir,
command_handler,
params,
qiime_config,
parallel=False,
logger=None,
status_update_callback=print_to_stdout):
input_dir, input_filename = split(repset_fasta_fp)
input_basename, input_ext = splitext(input_filename)
commands = []
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
## Prep the pynast alignment command
alignment_method = 'pynast'
pynast_dir = '%s/%s_aligned_seqs' % (output_dir,alignment_method)
aln_fp = '%s/%s_aligned.fasta' % (pynast_dir,input_basename)
failures_fp = '%s/%s_failures.fasta' % (pynast_dir,input_basename)
if exists(pynast_dir):
rmtree(pynast_dir)
if parallel:
# Grab the parallel-specific parameters
try:
params_str = get_params_str(params['parallel'])
except KeyError:
params_str = ''
# Grab the OTU picker parameters
try:
# Want to find a cleaner strategy for this: the parallel script
# is method-specific, so doesn't take a --alignment_method
# option. This works for now though.
d = params['align_seqs'].copy()
if 'alignment_method' in d:
del d['alignment_method']
params_str += ' %s' % get_params_str(d)
except KeyError:
pass
# Build the parallel pynast alignment command
align_seqs_cmd = 'parallel_align_seqs_pynast.py -i %s -o %s -T %s' %\
(repset_fasta_fp, pynast_dir, params_str)
else:
try:
params_str = get_params_str(params['align_seqs'])
except KeyError:
params_str = ''
# Build the pynast alignment command
align_seqs_cmd = 'align_seqs.py -i %s -o %s %s' %\
(repset_fasta_fp, pynast_dir, params_str)
commands.append([('Align sequences', align_seqs_cmd)])
## Prep the alignment filtering command
filtered_aln_fp = '%s/%s_aligned_pfiltered.fasta' %\
(pynast_dir,input_basename)
try:
params_str = get_params_str(params['filter_alignment'])
except KeyError:
params_str = ''
# Build the alignment filtering command
filter_alignment_cmd = 'filter_alignment.py -o %s -i %s %s' %\
(pynast_dir, aln_fp, params_str)
commands.append([('Filter alignment', filter_alignment_cmd)])
## Prep the tree building command
tree_fp = '%s/rep_set.tre' % output_dir
try:
params_str = get_params_str(params['make_phylogeny'])
except KeyError:
params_str = ''
# Build the tree building command
make_phylogeny_cmd = 'make_phylogeny.py -i %s -o %s %s' %\
(filtered_aln_fp, tree_fp,params_str)
commands.append([('Build phylogenetic tree', make_phylogeny_cmd)])
if exists(tree_fp):
remove_files([tree_fp])
# Call the command handler on the list of commands
command_handler(commands,
status_update_callback,
logger=logger,
close_logger_on_success=close_logger_on_success)
return failures_fp
示例11: run_jackknifed_beta_diversity
def run_jackknifed_beta_diversity(otu_table_fp,
tree_fp,
seqs_per_sample,
output_dir,
command_handler,
params,
qiime_config,
mapping_fp,
parallel=False,
logger=None,
suppress_md5=False,
status_update_callback=print_to_stdout,
master_tree=None):
""" Run the data preparation steps of Qiime
The steps performed by this function are:
1) Compute beta diversity distance matrix from otu table (and
tree, if applicable)
2) Build rarefied OTU tables;
3) Build UPGMA tree from full distance matrix;
4) Compute distance matrics for rarefied OTU tables;
5) Build UPGMA trees from rarefied OTU table distance matrices;
5.5) Build a consensus tree from the rarefied UPGMA trees
6) Compare rarefied OTU table distance matrix UPGMA trees
to tree full UPGMA tree and write support file and newick tree
with support values as node labels.
master_tree can be 'full' or 'consensus', default full
"""
# Prepare some variables for the later steps
if master_tree == None:
master_tree = 'full'
otu_table_dir, otu_table_filename = split(otu_table_fp)
otu_table_basename, otu_table_ext = splitext(otu_table_filename)
create_dir(output_dir)
commands = []
python_exe_fp = qiime_config['python_exe_fp']
script_dir = get_qiime_scripts_dir()
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger,[otu_table_fp,mapping_fp,tree_fp])
try:
beta_diversity_metrics = params['beta_diversity']['metrics'].split(',')
except KeyError:
beta_diversity_metrics = ['weighted_unifrac','unweighted_unifrac']
# Prep the beta-diversity command
try:
params_str = get_params_str(params['beta_diversity'])
except KeyError:
params_str = ''
if tree_fp:
params_str = '%s -t %s' % (params_str,tree_fp)
# Build the beta-diversity command
beta_div_cmd = '%s %s/beta_diversity.py -i %s -o %s %s' %\
(python_exe_fp, script_dir, otu_table_fp, output_dir, params_str)
commands.append(\
[('Beta Diversity (%s)' % ', '.join(beta_diversity_metrics), beta_div_cmd)])
# Prep rarefaction command
rarefaction_dir = '%s/rarefaction/' % output_dir
create_dir(rarefaction_dir)
try:
params_str = get_params_str(params['multiple_rarefactions_even_depth'])
except KeyError:
params_str = ''
# Build the rarefaction command
rarefaction_cmd = \
'%s %s/multiple_rarefactions_even_depth.py -i %s -d %d -o %s %s' %\
(python_exe_fp, script_dir, otu_table_fp, seqs_per_sample,
rarefaction_dir, params_str)
commands.append([('Rarefaction', rarefaction_cmd)])
# Begin iterating over beta diversity distance metrics, if more than one
# was provided
for beta_diversity_metric in beta_diversity_metrics:
metric_output_dir = '%s/%s/' % (output_dir, beta_diversity_metric)
distance_matrix_fp = '%s/%s_%s.txt' % \
(output_dir, beta_diversity_metric, otu_table_basename)
# Prep the hierarchical clustering command (for full distance matrix)
full_tree_fp = '%s/%s_upgma.tre' % (metric_output_dir,otu_table_basename)
try:
params_str = get_params_str(params['upgma_cluster'])
except KeyError:
params_str = ''
# Build the hierarchical clustering command (for full distance matrix)
hierarchical_cluster_cmd = '%s %s/upgma_cluster.py -i %s -o %s %s' %\
(python_exe_fp, script_dir, distance_matrix_fp, full_tree_fp, params_str)
commands.append(\
[('UPGMA on full distance matrix: %s' % beta_diversity_metric,\
hierarchical_cluster_cmd)])
#.........这里部分代码省略.........
示例12: run_beta_diversity_through_plots
def run_beta_diversity_through_plots(otu_table_fp,
mapping_fp,
output_dir,
command_handler,
params,
qiime_config,
color_by_interesting_fields_only=True,
sampling_depth=None,
tree_fp=None,
parallel=False,
logger=None,
suppress_emperor_plots=False,
suppress_md5=False,
status_update_callback=print_to_stdout):
""" Compute beta diversity distance matrices, run PCoA, and generate emperor plots
The steps performed by this function are:
1) Compute a beta diversity distance matrix for each metric
2) Peform a principal coordinates analysis on the result of step 1
3) Generate an emperor plot for each result of step 2
"""
# Prepare some variables for the later steps
otu_table_dir, otu_table_filename = split(otu_table_fp)
otu_table_basename, otu_table_ext = splitext(otu_table_filename)
create_dir(output_dir)
commands = []
python_exe_fp = qiime_config['python_exe_fp']
script_dir = get_qiime_scripts_dir()
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger,[otu_table_fp,mapping_fp,tree_fp])
mapping_data, mapping_header, mapping_comments =\
parse_mapping_file(open(mapping_fp,'U'))
# Get the interesting mapping fields to color by -- if none are
# interesting, take all of them. Interesting is defined as those
# which have greater than one value and fewer values than the number
# of samples
if color_by_interesting_fields_only:
mapping_fields =\
get_interesting_mapping_fields(mapping_data, mapping_header) or\
mapping_header
else:
mapping_fields = mapping_header
mapping_fields = ','.join(mapping_fields)
if sampling_depth:
# Sample the OTU table at even depth
even_sampled_otu_table_fp = '%s/%s_even%d%s' %\
(output_dir, otu_table_basename,
sampling_depth, otu_table_ext)
single_rarefaction_cmd = \
'%s %s/single_rarefaction.py -i %s -o %s -d %d' %\
(python_exe_fp, script_dir, otu_table_fp,
even_sampled_otu_table_fp, sampling_depth)
commands.append([
('Sample OTU table at %d seqs/sample' % sampling_depth,
single_rarefaction_cmd)])
otu_table_fp = even_sampled_otu_table_fp
otu_table_dir, otu_table_filename = split(even_sampled_otu_table_fp)
otu_table_basename, otu_table_ext = splitext(otu_table_filename)
try:
beta_diversity_metrics = params['beta_diversity']['metrics'].split(',')
except KeyError:
beta_diversity_metrics = ['weighted_unifrac','unweighted_unifrac']
dm_fps = []
for beta_diversity_metric in beta_diversity_metrics:
# Prep the beta-diversity command
try:
bdiv_params_copy = params['beta_diversity'].copy()
except KeyError:
bdiv_params_copy = {}
try:
del bdiv_params_copy['metrics']
except KeyError:
pass
params_str = get_params_str(bdiv_params_copy)
if tree_fp:
params_str = '%s -t %s ' % (params_str,tree_fp)
# Build the beta-diversity command
if parallel:
# Grab the parallel-specific parameters
try:
params_str += get_params_str(params['parallel'])
except KeyError:
pass
#.........这里部分代码省略.........
示例13: run_alpha_rarefaction
def run_alpha_rarefaction(otu_table_fp,
mapping_fp,
output_dir,
command_handler,
params,
qiime_config,
tree_fp=None,
num_steps=10,
parallel=False,
logger=None,
min_rare_depth=10,
max_rare_depth=None,
suppress_md5=False,
status_update_callback=print_to_stdout,
plot_stderr_and_stddev=False,
retain_intermediate_files=True):
""" Run the data preparation steps of Qiime
The steps performed by this function are:
1) Generate rarefied OTU tables;
2) Compute alpha diversity metrics for each rarefied OTU table;
3) Collate alpha diversity results;
4) Generate alpha rarefaction plots.
"""
# Prepare some variables for the later steps
otu_table_dir, otu_table_filename = split(otu_table_fp)
otu_table_basename, otu_table_ext = splitext(otu_table_filename)
create_dir(output_dir)
commands = []
python_exe_fp = qiime_config['python_exe_fp']
script_dir = get_qiime_scripts_dir()
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger,[otu_table_fp,mapping_fp,tree_fp])
if max_rare_depth == None:
min_count, max_count, median_count, mean_count, counts_per_sample =\
compute_counts_per_sample_stats(parse_biom_table(open(otu_table_fp,'U')))
max_rare_depth = median_count
step = int((max_rare_depth - min_rare_depth) / num_steps) or 1
max_rare_depth = int(max_rare_depth)
rarefaction_dir = '%s/rarefaction/' % output_dir
create_dir(rarefaction_dir)
try:
params_str = get_params_str(params['multiple_rarefactions'])
except KeyError:
params_str = ''
if parallel:
params_str += ' %s' % get_params_str(params['parallel'])
# Build the rarefaction command
rarefaction_cmd = \
'%s %s/parallel_multiple_rarefactions.py -T -i %s -m %s -x %s -s %s -o %s %s' %\
(python_exe_fp, script_dir, otu_table_fp, min_rare_depth, max_rare_depth,
step, rarefaction_dir, params_str)
else:
# Build the rarefaction command
rarefaction_cmd = \
'%s %s/multiple_rarefactions.py -i %s -m %s -x %s -s %s -o %s %s' %\
(python_exe_fp, script_dir, otu_table_fp, min_rare_depth, max_rare_depth,
step, rarefaction_dir, params_str)
commands.append([('Alpha rarefaction', rarefaction_cmd)])
# Prep the alpha diversity command
alpha_diversity_dir = '%s/alpha_div/' % output_dir
create_dir(alpha_diversity_dir)
try:
params_str = get_params_str(params['alpha_diversity'])
except KeyError:
params_str = ''
if tree_fp:
params_str += ' -t %s' % tree_fp
if parallel:
params_str += ' %s' % get_params_str(params['parallel'])
# Build the alpha diversity command
alpha_diversity_cmd = \
"%s %s/parallel_alpha_diversity.py -T -i %s -o %s %s" %\
(python_exe_fp, script_dir, rarefaction_dir, alpha_diversity_dir,
params_str)
else:
# Build the alpha diversity command
alpha_diversity_cmd = \
"%s %s/alpha_diversity.py -i %s -o %s %s" %\
(python_exe_fp, script_dir, rarefaction_dir, alpha_diversity_dir,
params_str)
commands.append(\
[('Alpha diversity on rarefied OTU tables',alpha_diversity_cmd)])
# Prep the alpha diversity collation command
alpha_collated_dir = '%s/alpha_div_collated/' % output_dir
create_dir(alpha_collated_dir)
#.........这里部分代码省略.........
示例14: run_beta_diversity_through_plots
def run_beta_diversity_through_plots(otu_table_fp,
mapping_fp,
output_dir,
command_handler,
params,
qiime_config,
color_by_interesting_fields_only=True,
sampling_depth=None,
histogram_categories=None,
tree_fp=None,
parallel=False,
logger=None,
suppress_3d_plots=False,
suppress_2d_plots=False,
suppress_md5=False,
status_update_callback=print_to_stdout):
""" Run the data preparation steps of Qiime
The steps performed by this function are:
1) Compute a beta diversity distance matrix;
2) Peform a principal coordinates analysis on the result of
Step 1;
3) Generate a 3D prefs file for optimized coloring of continuous
variables;
4) Generate a 3D plot for all mapping fields with colors
optimized for continuous data;
5) Generate a 3D plot for all mapping fields with colors
optimized for discrete data.
"""
# Prepare some variables for the later steps
otu_table_dir, otu_table_filename = split(otu_table_fp)
otu_table_basename, otu_table_ext = splitext(otu_table_filename)
create_dir(output_dir)
commands = []
python_exe_fp = qiime_config['python_exe_fp']
script_dir = get_qiime_scripts_dir()
if logger == None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger,[otu_table_fp,mapping_fp,tree_fp])
mapping_data, mapping_header, mapping_comments =\
parse_mapping_file(open(mapping_fp,'U'))
if histogram_categories:
invalid_categories = set(histogram_categories) - set(mapping_header)
if invalid_categories:
raise ValueError,\
"Invalid histogram categories - these must exactly match "+\
"mapping file column headers: %s" % (' '.join(invalid_categories))
# Get the interesting mapping fields to color by -- if none are
# interesting, take all of them. Interesting is defined as those
# which have greater than one value and fewer values than the number
# of samples
if color_by_interesting_fields_only:
mapping_fields =\
get_interesting_mapping_fields(mapping_data, mapping_header) or\
mapping_header
else:
mapping_fields = mapping_header
mapping_fields = ','.join(mapping_fields)
if sampling_depth:
# Sample the OTU table at even depth
even_sampled_otu_table_fp = '%s/%s_even%d%s' %\
(output_dir, otu_table_basename,
sampling_depth, otu_table_ext)
single_rarefaction_cmd = \
'%s %s/single_rarefaction.py -i %s -o %s -d %d' %\
(python_exe_fp, script_dir, otu_table_fp,
even_sampled_otu_table_fp, sampling_depth)
commands.append([
('Sample OTU table at %d seqs/sample' % sampling_depth,
single_rarefaction_cmd)])
otu_table_fp = even_sampled_otu_table_fp
otu_table_dir, otu_table_filename = split(even_sampled_otu_table_fp)
otu_table_basename, otu_table_ext = splitext(otu_table_filename)
try:
beta_diversity_metrics = params['beta_diversity']['metrics'].split(',')
except KeyError:
beta_diversity_metrics = ['weighted_unifrac','unweighted_unifrac']
# Prep the 3d prefs file generator command
prefs_fp = '%s/prefs.txt' % output_dir
try:
params_str = get_params_str(params['make_prefs_file'])
except KeyError:
params_str = ''
if not 'mapping_headers_to_use' in params['make_prefs_file']:
params_str = '%s --mapping_headers_to_use %s' \
% (params_str,mapping_fields)
# Build the 3d prefs file generator command
prefs_cmd = \
'%s %s/make_prefs_file.py -m %s -o %s %s' %\
#.........这里部分代码省略.........
示例15: run_pick_closed_reference_otus
def run_pick_closed_reference_otus(
input_fp,
refseqs_fp,
output_dir,
taxonomy_fp,
command_handler,
params,
qiime_config,
assign_taxonomy=False,
parallel=False,
logger=None,
suppress_md5=False,
status_update_callback=print_to_stdout):
""" Run the data preparation steps of Qiime
The steps performed by this function are:
1) Pick OTUs;
2) If assignment_taxonomy is True, choose representative sequence
for OTUs and assign taxonomy using a classifier.
3) Build an OTU table with optional predefined taxonomy
(if assign_taxonomy=False) or taxonomic assignments from step 2
(if assign_taxonomy=True).
"""
# confirm that a valid otu picking method was supplied before doing
# any work
reference_otu_picking_methods = ['blast', 'uclust_ref', 'usearch61_ref',
'usearch_ref', 'sortmerna']
try:
otu_picking_method = params['pick_otus']['otu_picking_method']
except KeyError:
otu_picking_method = 'uclust_ref'
assert otu_picking_method in reference_otu_picking_methods,\
"Invalid OTU picking method supplied: %s. Valid choices are: %s"\
% (otu_picking_method, ' '.join(reference_otu_picking_methods))
# Prepare some variables for the later steps
input_dir, input_filename = split(input_fp)
input_basename, input_ext = splitext(input_filename)
create_dir(output_dir)
commands = []
if logger is None:
logger = WorkflowLogger(generate_log_fp(output_dir),
params=params,
qiime_config=qiime_config)
close_logger_on_success = True
else:
close_logger_on_success = False
if not suppress_md5:
log_input_md5s(logger, [input_fp, refseqs_fp, taxonomy_fp])
# Prep the OTU picking command
pick_otu_dir = '%s/%s_picked_otus' % (output_dir, otu_picking_method)
otu_fp = '%s/%s_otus.txt' % (pick_otu_dir, input_basename)
if parallel and (otu_picking_method == 'blast' or
otu_picking_method == 'uclust_ref' or
otu_picking_method == 'usearch61_ref' or
otu_picking_method == 'sortmerna'):
# Grab the parallel-specific parameters
try:
params_str = get_params_str(params['parallel'])
except KeyError:
params_str = ''
# Grab the OTU picker parameters
try:
# Want to find a cleaner strategy for this: the parallel script
# is method-specific, so doesn't take a --alignment_method
# option. This works for now though.
d = params['pick_otus'].copy()
if 'otu_picking_method' in d:
del d['otu_picking_method']
params_str += ' %s' % get_params_str(d)
except KeyError:
pass
otu_picking_script = 'parallel_pick_otus_%s.py' % otu_picking_method
# Build the OTU picking command
pick_otus_cmd = '%s -i %s -o %s -r %s -T %s' %\
(otu_picking_script,
input_fp,
pick_otu_dir,
refseqs_fp,
params_str)
else:
try:
params_str = get_params_str(params['pick_otus'])
except KeyError:
params_str = ''
# Since this is reference-based OTU picking we always want to
# suppress new clusters -- force it here.
params_str += ' --suppress_new_clusters'
logger.write(
"Forcing --suppress_new_clusters as this is "
"closed-reference OTU picking.\n\n")
# Build the OTU picking command
pick_otus_cmd = 'pick_otus.py -i %s -o %s -r %s -m %s %s' %\
(input_fp,
#.........这里部分代码省略.........