def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose input_biom_fp = opts.input_biom_fp output_dir = opts.output_dir categories = opts.categories if categories is not None: categories = categories.split(',') tree_fp = opts.tree_fp mapping_fp = opts.mapping_fp verbose = opts.verbose parallel = opts.parallel sampling_depth = opts.sampling_depth nonphylogenetic_diversity = opts.nonphylogenetic_diversity print_only = opts.print_only suppress_taxa_summary = opts.suppress_taxa_summary suppress_beta_diversity = opts.suppress_beta_diversity suppress_alpha_diversity = opts.suppress_alpha_diversity suppress_group_significance = opts.suppress_group_significance if opts.parameter_fp is not None: params = parse_qiime_parameters(open(opts.parameter_fp, 'U')) else: params = parse_qiime_parameters([]) if nonphylogenetic_diversity: # if the user specified --nonphylogenetic_diversity and they # didn't define metrics in a parameters file, define them here if 'metrics' not in params['beta_diversity']: params['beta_diversity']['metrics'] = 'bray_curtis' if 'metrics' not in params['alpha_diversity']: params['alpha_diversity']['metrics'] = 'observed_otus,chao1' else: if tree_fp is None: option_parser.error( "--tree_fp is required unless --nonphylogenetic_diversity " "is passed.") jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) # Create the output directory. If it already exists and the user # isn't trying to recover from a failed run, raise an error. create_dir(output_dir, fail_on_exist=not opts.recover_from_failure) if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_core_diversity_analyses( biom_fp=input_biom_fp, mapping_fp=mapping_fp, sampling_depth=sampling_depth, output_dir=output_dir, qiime_config=load_qiime_config(), command_handler=command_handler, tree_fp=tree_fp, params=params, categories=categories, arare_min_rare_depth=10, arare_num_steps=10, parallel=parallel, suppress_taxa_summary=suppress_taxa_summary, suppress_beta_diversity=suppress_beta_diversity, suppress_alpha_diversity=suppress_alpha_diversity, suppress_group_significance=suppress_group_significance, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = \ parse_command_line_parameters(**script_info) verbose = opts.verbose otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir tree_fp = opts.tree_fp seqs_per_sample = opts.seqs_per_sample verbose = opts.verbose print_only = opts.print_only master_tree = opts.master_tree parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError("Can't open parameters file (%s). Does it exist? Do you have read access?" % opts.parameter_fp) params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error("Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_jackknifed_beta_diversity(otu_table_fp=otu_table_fp, tree_fp=tree_fp, seqs_per_sample=seqs_per_sample, output_dir=output_dir, command_handler=command_handler, params=params, qiime_config=qiime_config, mapping_fp=opts.mapping_fp, parallel=parallel, status_update_callback=status_update_callback, master_tree=master_tree)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose input_fps = opts.input_fps refseqs_fp = opts.reference_fp output_dir = opts.output_dir otu_picking_method = opts.otu_picking_method verbose = opts.verbose print_only = False percent_subsample = opts.percent_subsample new_ref_set_id = opts.new_ref_set_id prefilter_refseqs_fp = opts.prefilter_refseqs_fp prefilter_percent_id = opts.prefilter_percent_id if prefilter_percent_id == 0.0: prefilter_percent_id = None if otu_picking_method == 'uclust': denovo_otu_picking_method = 'uclust' reference_otu_picking_method = 'uclust_ref' elif otu_picking_method == 'usearch61': denovo_otu_picking_method = 'usearch61' reference_otu_picking_method = 'usearch61_ref' elif otu_picking_method == 'sortmerna_sumaclust': denovo_otu_picking_method = 'sumaclust' reference_otu_picking_method = 'sortmerna' # SortMeRNA uses the E-value to filter out erroneous # sequences, this option does not apply for this # tool if prefilter_percent_id > 0.0: prefilter_percent_id = None else: # it shouldn't be possible to get here option_parser.error('Unkown OTU picking method: %s' % otu_picking_method) parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError("Can't open parameters file (%s). Does it exist? " "Do you have read access?" % opts.parameter_fp) params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: option_parser.error("Output directory already exists. Please " "choose a different directory, or force overwrite with -f.") if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates if len(input_fps) == 1: pick_subsampled_open_reference_otus(input_fp=input_fps[0], refseqs_fp=refseqs_fp, output_dir=output_dir, percent_subsample=percent_subsample, new_ref_set_id=new_ref_set_id, command_handler=command_handler, params=params, min_otu_size=opts.min_otu_size, run_assign_tax=not opts.suppress_taxonomy_assignment, run_align_and_tree=not opts.suppress_align_and_tree, qiime_config=qiime_config, prefilter_refseqs_fp=prefilter_refseqs_fp, prefilter_percent_id=prefilter_percent_id, step1_otu_map_fp=opts.step1_otu_map_fp, step1_failures_fasta_fp=opts.step1_failures_fasta_fp, parallel=parallel, suppress_step4=opts.suppress_step4, logger=None, denovo_otu_picking_method=denovo_otu_picking_method, reference_otu_picking_method=reference_otu_picking_method, status_update_callback=status_update_callback) else: iterative_pick_subsampled_open_reference_otus(input_fps=input_fps, refseqs_fp=refseqs_fp, output_dir=output_dir, percent_subsample=percent_subsample, new_ref_set_id=new_ref_set_id, command_handler=command_handler, params=params, min_otu_size=opts.min_otu_size, run_assign_tax=not opts.suppress_taxonomy_assignment, run_align_and_tree=not opts.suppress_align_and_tree, qiime_config=qiime_config, prefilter_refseqs_fp=prefilter_refseqs_fp, prefilter_percent_id=prefilter_percent_id, step1_otu_map_fp=opts.step1_otu_map_fp, step1_failures_fasta_fp=opts.step1_failures_fasta_fp, parallel=parallel, suppress_step4=opts.suppress_step4, logger=None, denovo_otu_picking_method=denovo_otu_picking_method, reference_otu_picking_method=reference_otu_picking_method, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir mapping_fp = opts.mapping_fp tree_fp = opts.tree_fp verbose = opts.verbose print_only = opts.print_only seqs_per_sample = opts.seqs_per_sample parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError,\ "Can't open parameters file (%s). Does it exist? Do you have read access?"\ % opts.parameter_fp params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error("Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_beta_diversity_through_plots(otu_table_fp=otu_table_fp, mapping_fp=mapping_fp, output_dir=output_dir, command_handler=command_handler, params=params, qiime_config=qiime_config, color_by_interesting_fields_only=not opts.color_by_all_fields, sampling_depth=seqs_per_sample, tree_fp=tree_fp, parallel=parallel, suppress_emperor_plots=opts.suppress_emperor_plots, status_update_callback=status_update_callback)
def main(): option_parser, opts, args =\ parse_command_line_parameters(**script_info) verbose = opts.verbose input_fps = opts.input_fps refseqs_fp = opts.reference_fp output_dir = opts.output_dir verbose = opts.verbose print_only = False percent_subsample = opts.percent_subsample new_ref_set_id = opts.new_ref_set_id prefilter_refseqs_fp = opts.prefilter_refseqs_fp prefilter_percent_id = opts.prefilter_percent_id if prefilter_percent_id == 0.0: prefilter_percent_id = None parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError,\ "Can't open parameters file (%s). Does it exist? Do you have read access?"\ % opts.parameter_fp params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: option_parser.error("Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates if len(input_fps) == 1: pick_subsampled_open_reference_otus(input_fp=input_fps[0], refseqs_fp=refseqs_fp, output_dir=output_dir, percent_subsample=percent_subsample, new_ref_set_id=new_ref_set_id, command_handler=command_handler, params=params, min_otu_size=opts.min_otu_size, run_assign_tax=not opts.suppress_taxonomy_assignment, run_align_and_tree=not opts.suppress_align_and_tree, qiime_config=qiime_config, prefilter_refseqs_fp=prefilter_refseqs_fp, prefilter_percent_id=prefilter_percent_id, step1_otu_map_fp=opts.step1_otu_map_fp, step1_failures_fasta_fp=opts.step1_failures_fasta_fp, parallel=parallel, suppress_step4=opts.suppress_step4, logger=None, status_update_callback=status_update_callback) else: iterative_pick_subsampled_open_reference_otus(input_fps=input_fps, refseqs_fp=refseqs_fp, output_dir=output_dir, percent_subsample=percent_subsample, new_ref_set_id=new_ref_set_id, command_handler=command_handler, params=params, min_otu_size=opts.min_otu_size, run_assign_tax=not opts.suppress_taxonomy_assignment, run_align_and_tree=not opts.suppress_align_and_tree, qiime_config=qiime_config, prefilter_refseqs_fp=prefilter_refseqs_fp, prefilter_percent_id=prefilter_percent_id, step1_otu_map_fp=opts.step1_otu_map_fp, step1_failures_fasta_fp=opts.step1_failures_fasta_fp, parallel=parallel, suppress_step4=opts.suppress_step4, logger=None, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose input_biom_fp = opts.input_biom_fp output_dir = opts.output_dir categories = opts.categories if categories is not None: categories = categories.split(',') tree_fp = opts.tree_fp mapping_fp = opts.mapping_fp verbose = opts.verbose parallel = opts.parallel sampling_depth = opts.sampling_depth nonphylogenetic_diversity = opts.nonphylogenetic_diversity print_only = opts.print_only suppress_taxa_summary = opts.suppress_taxa_summary suppress_beta_diversity = opts.suppress_beta_diversity suppress_alpha_diversity = opts.suppress_alpha_diversity suppress_group_significance = opts.suppress_group_significance if opts.parameter_fp is not None: params = parse_qiime_parameters(open(opts.parameter_fp, 'U')) else: params = parse_qiime_parameters([]) if nonphylogenetic_diversity: # if the user specified --nonphylogenetic_diversity and they # didn't define metrics in a parameters file, define them here if 'metrics' not in params['beta_diversity']: params['beta_diversity']['metrics'] = 'bray_curtis' if 'metrics' not in params['alpha_diversity']: params['alpha_diversity']['metrics'] = 'observed_otus,chao1' jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) # Create the output directory. If it already exists and the user # isn't trying to recover from a failed run, raise an error. create_dir(output_dir, fail_on_exist=not opts.recover_from_failure) if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_core_diversity_analyses( biom_fp=input_biom_fp, mapping_fp=mapping_fp, sampling_depth=sampling_depth, output_dir=output_dir, qiime_config=load_qiime_config(), command_handler=command_handler, tree_fp=tree_fp, params=params, categories=categories, arare_min_rare_depth=10, arare_num_steps=10, parallel=parallel, suppress_taxa_summary=suppress_taxa_summary, suppress_beta_diversity=suppress_beta_diversity, suppress_alpha_diversity=suppress_alpha_diversity, suppress_group_significance=suppress_group_significance, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose input_fp = opts.input_fp reference_fp = opts.reference_fp taxonomy_fp = opts.taxonomy_fp output_dir = opts.output_dir verbose = opts.verbose print_only = opts.print_only parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError,\ "Can't open parameters file (%s). Does it exist? Do you have read access?"\ % opts.parameter_fp params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: option_parser.error("Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_pick_closed_reference_otus( input_fp, reference_fp, output_dir, taxonomy_fp, command_handler=command_handler, params=params, qiime_config=qiime_config, parallel=parallel, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir mapping_fp = opts.mapping_fp tree_fp = opts.tree_fp verbose = opts.verbose print_only = opts.print_only seqs_per_sample = opts.seqs_per_sample parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError( "Can't open parameters file (%s). Does it exist? Do you have read access?" % opts.parameter_fp) params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) create_dir(output_dir, fail_on_exist=not opts.force) if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_beta_diversity_through_plots( otu_table_fp=otu_table_fp, mapping_fp=mapping_fp, output_dir=output_dir, command_handler=command_handler, params=params, qiime_config=qiime_config, color_by_interesting_fields_only=not opts.color_by_all_fields, sampling_depth=seqs_per_sample, tree_fp=tree_fp, parallel=parallel, suppress_emperor_plots=opts.suppress_emperor_plots, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir mapping_fp = opts.mapping_fp tree_fp = opts.tree_fp num_steps = opts.num_steps verbose = opts.verbose print_only = opts.print_only parallel = opts.parallel min_rare_depth = opts.min_rare_depth max_rare_depth = opts.max_rare_depth retain_intermediate_files = opts.retain_intermediate_files if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError,\ "Can't open parameters file (%s). Does it exist? Do you have read access?"\ % opts.parameter_fp params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error("Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_alpha_rarefaction(otu_table_fp=otu_table_fp,\ mapping_fp=mapping_fp,\ output_dir=output_dir,\ command_handler=command_handler,\ params=params, qiime_config=qiime_config,\ tree_fp=tree_fp,\ num_steps=num_steps,\ parallel=parallel,\ min_rare_depth=min_rare_depth, max_rare_depth=max_rare_depth, status_update_callback=status_update_callback, retain_intermediate_files=retain_intermediate_files)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose input_fp = opts.input_fp reference_fp = opts.reference_fp taxonomy_fp = opts.taxonomy_fp output_dir = opts.output_dir verbose = opts.verbose print_only = opts.print_only assign_taxonomy = opts.assign_taxonomy parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. # if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError( "Can't open parameters file (%s). Does it exist? Do you have read access?" % opts.parameter_fp) params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) if print_only: command_handler = print_commands else: command_handler = call_commands_serially try: makedirs(output_dir) except OSError: if opts.force: pass else: option_parser.error( "Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_pick_closed_reference_otus( input_fp, reference_fp, output_dir, taxonomy_fp, assign_taxonomy=assign_taxonomy, command_handler=command_handler, params=params, qiime_config=qiime_config, parallel=parallel, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir mapping_fp = opts.mapping_fp tree_fp = opts.tree_fp verbose = opts.verbose print_only = opts.print_only seqs_per_sample = opts.seqs_per_sample parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. #if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: raise IOError("Can't open parameters file (%s). Does it exist? Do you have read access?" % opts.parameter_fp) params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) create_dir(output_dir, fail_on_exist=not opts.force) if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_beta_diversity_through_plots(otu_table_fp=otu_table_fp, mapping_fp=mapping_fp, output_dir=output_dir, command_handler=command_handler, params=params, qiime_config=qiime_config, color_by_interesting_fields_only=not opts.color_by_all_fields, sampling_depth=seqs_per_sample, tree_fp=tree_fp, parallel=parallel, suppress_emperor_plots=opts.suppress_emperor_plots, status_update_callback=status_update_callback)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) verbose = opts.verbose otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir mapping_fp = opts.mapping_fp tree_fp = opts.tree_fp verbose = opts.verbose print_only = opts.print_only seqs_per_sample = opts.seqs_per_sample histogram_categories = opts.histogram_categories if histogram_categories != None: histogram_categories = histogram_categories.split(",") parallel = opts.parallel # No longer checking that jobs_to_start > 2, but # commenting as we may change our minds about this. # if parallel: raise_error_on_parallel_unavailable() if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, "U") except IOError: raise IOError, "Can't open parameters file (%s). Does it exist? Do you have read access?" % opts.parameter_fp params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters([]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config["jobs_to_start"] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) try: makedirs(output_dir) except OSError: if opts.force: pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error( "Output directory already exists. Please choose" " a different directory, or force overwrite with -f." ) if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates run_beta_diversity_through_plots( otu_table_fp=otu_table_fp, mapping_fp=mapping_fp, output_dir=output_dir, command_handler=command_handler, params=params, qiime_config=qiime_config, color_by_interesting_fields_only=not opts.color_by_all_fields, sampling_depth=seqs_per_sample, histogram_categories=histogram_categories, tree_fp=tree_fp, parallel=parallel, suppress_3d_plots=opts.suppress_3d_plots, suppress_2d_plots=opts.suppress_2d_plots, status_update_callback=status_update_callback, )
def main(): option_parser, opts, args =\ parse_command_line_parameters(**script_info) otu_table_fp = opts.otu_table_fp output_dir = opts.output_dir mapping_fp = opts.mapping_fp tree_fp = opts.tree_fp verbose = opts.verbose print_only = opts.print_only seqs_per_sample = int(opts.seqs_per_sample) parallel = opts.parallel min_seqs_sample = opts.min_seqs_sample subject_category = opts.subject_name try: makedirs(output_dir) except OSError: if opts.force: pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error("Output directory already exists. Please choose" " a different directory, or force overwrite with -f.") ## ******************** make_evident_selectors ******************** ## The code for make_evident_selectors.py is here and has to go before the params ## validation as we need to know the main cats before creating the params file map_data, headers, comments = parse_mapping_file(open(mapping_fp, 'U')) biom_table = parse_biom_table(open(otu_table_fp, 'U')) # getting valid samples from biom file real_map_headers, real_map_data = filter_mapping_file(map_data, headers,\ biom_table.SampleIds, include_repeat_cols=False) if subject_category not in real_map_headers: option_parser.error('This column: %s is not in the mapping file, try %s'%\ (subject_category, real_map_headers)) sorted_counts_per_sample = get_sorted_counts_per_sample(biom_table) mapping_file_tuple = (real_map_data, real_map_headers) # calculate the available subjects at each rarefaction level results, main_map_cat = make_selectors(sorted_counts_per_sample, min_seqs_sample,\ mapping_file_tuple, subject_category, verbose=verbose) fout = open(join(output_dir,'selectors.txt'),'w') fout.write('#Sequences\tSubjects\tSamples\tMetadata\n') fout.write('\n'.join(results)) fout.close() fout = open(join(output_dir,'mapping_file.txt'),'w') fout.write(format_mapping_file(real_map_headers, real_map_data)) fout.close() ## ******************** make_evident_selectors ******************** fout = open(join(output_dir,'study_preferences.txt'),'w') fout.write('%d\n' % seqs_per_sample) fout.write('%s\n' % subject_category) fout.close() ## ******************** filter_samples_from_otu_table ******************** ## Filtering original biom file to only have samples above the max length to avoid ## ugly plots alpha_biom_file = join(output_dir,'filtered_otu_table_for_alpha.biom') fout = open(alpha_biom_file,'w') sample_ids_to_keep = biom_table.SampleIds filtered_otu_table = filter_samples_from_otu_table(biom_table, sample_ids_to_keep, min_count=seqs_per_sample, max_count=inf) fout.write(format_biom_table(filtered_otu_table)) fout.close() ## ******************** filter_samples_from_otu_table ******************** if opts.parameter_fp: try: parameter_f = open(opts.parameter_fp, 'U') except IOError: option_parser.error("Can't open parameters file (%s). Does it exist? " \ "Do you have read access?" % opts.parameter_fp) params = parse_qiime_parameters(parameter_f) parameter_f.close() else: params = parse_qiime_parameters( ['beta_diversity:metrics unweighted_unifrac',\ 'make_rarefaction_plots:prefs_path %s' % join(output_dir,'prefs.txt'), 'make_rarefaction_plots:colorby %s' % ','.join(main_map_cat), 'make_rarefaction_plots:output_type memory', 'multiple_rarefactions:min %d' % int(seqs_per_sample/4), 'multiple_rarefactions:max %d' % (seqs_per_sample+1), 'multiple_rarefactions:step %d' % int(seqs_per_sample/4), 'multiple_rarefactions:num-reps 4', ]) # empty list returns empty defaultdict for now jobs_to_start = opts.jobs_to_start default_jobs_to_start = qiime_config['jobs_to_start'] validate_and_set_jobs_to_start(params, jobs_to_start, default_jobs_to_start, parallel, option_parser) if print_only: command_handler = print_commands else: command_handler = call_commands_serially if verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates copyfile(otu_table_fp, join(output_dir,'raw.biom')) run_beta_diversity_through_plots(otu_table_fp=otu_table_fp, mapping_fp=mapping_fp, output_dir=output_dir, command_handler=command_handler, params=params, qiime_config=qiime_config, color_by_interesting_fields_only=False, sampling_depth=seqs_per_sample, histogram_categories=None, tree_fp=tree_fp, parallel=parallel, suppress_3d_plots=True, suppress_2d_plots=True, status_update_callback=status_update_callback) output_dir = join(output_dir,'alpha') run_alpha_rarefaction(otu_table_fp=alpha_biom_file,\ mapping_fp=mapping_fp,\ output_dir=output_dir,\ command_handler=command_handler,\ params=params, qiime_config=qiime_config,\ tree_fp=tree_fp,\ num_steps=4,\ parallel=parallel,\ min_rare_depth=10, max_rare_depth=20, status_update_callback=status_update_callback, plot_stderr_and_stddev=True)