def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) if exists(opts.output_dir): # don't overwrite existing output directory - make the user provide a # different name or move/delete the existing directory since it may # have taken a while to create. option_parser.error("Output directory (%s) already exists. " "Won't overwrite." % opts.output_dir) personal_ids = opts.personal_ids if personal_ids is not None: personal_ids = opts.personal_ids.split(',') individual_titles = opts.individual_titles.split(',') if opts.print_only: command_handler = print_commands else: command_handler = call_commands_serially if opts.verbose: status_update_callback = print_to_stdout else: status_update_callback = no_status_updates create_personal_results(opts.output_dir, opts.mapping_fp, opts.coord_fname, opts.collated_dir, opts.otu_table_fp, opts.prefs_fp, opts.personal_id_column, personal_ids, opts.column_title, individual_titles, opts.category_to_split, opts.time_series_category, rarefaction_depth=opts.rarefaction_depth, alpha=opts.alpha, rep_set_fp=opts.rep_set_fp, parameter_fp=opts.parameter_fp, body_site_rarefied_otu_table_dir=opts.body_site_rarefied_otu_table_dir, retain_raw_data=opts.retain_raw_data, suppress_alpha_rarefaction=opts.suppress_alpha_rarefaction, suppress_beta_diversity=opts.suppress_beta_diversity, suppress_taxa_summary_plots=opts.suppress_taxa_summary_plots, suppress_alpha_diversity_boxplots=opts.suppress_alpha_diversity_boxplots, suppress_otu_category_significance=opts.suppress_otu_category_significance, command_handler=command_handler, status_update_callback=status_update_callback)
def test_create_personal_results_print_only(self): """Test running workflow, but only printing the commands.""" # Save stdout and replace it with something that will capture the print # statement. Note: this code was taken from here: # http://stackoverflow.com/questions/4219717/how-to-assert-output- # with-nosetest-unittest-in-python/4220278#4220278 saved_stdout = sys.stdout try: out = StringIO() sys.stdout = out obs = create_personal_results(self.output_dir, self.mapping_fp, self.coord_fp, self.rarefaction_dir, self.otu_table_fp, self.prefs_fp, 'PersonalID', rarefaction_depth=10, command_handler=print_commands) obs_output = out.getvalue().strip() finally: sys.stdout = saved_stdout exp = set(['NAU123/time_series', 'NAU123/beta_diversity', 'NAU789/beta_diversity', 'NAU789/otu_category_significance', 'NAU789/alpha_rarefaction', 'NAU456/time_series', 'NAU123/alpha_rarefaction', 'NAU456/adiv_boxplots', 'NAU456/otu_category_significance', 'NAU123/adiv_boxplots', 'NAU123/otu_category_significance', 'NAU789/adiv_boxplots', 'NAU789/time_series', 'NAU456/alpha_rarefaction', 'NAU456/beta_diversity']) fps = [] for fp in obs: fps.append(join(basename(dirname(fp)), basename(fp))) # Order is not guaranteed. fps = set(fps) self.assertEqual(fps, exp)
def test_create_personal_results_suppress_all(self): """Test running workflow with all output types suppressed.""" # No output directories should be created under each personal ID # directory. We should only end up with a log file, support_files # directory, directories for each personal ID, and an index.html file # in each. exp_personal_ids = ['NAU123', 'NAU456', 'NAU789'] obs = create_personal_results(self.output_dir, self.mapping_fp, self.coord_fp, self.rarefaction_dir, self.otu_table_fp, self.prefs_fp, 'PersonalID', suppress_alpha_rarefaction=True, suppress_beta_diversity=True, suppress_taxa_summary_plots=True, suppress_alpha_diversity_boxplots=True, suppress_otu_category_significance=True) self.assertEqual(obs, []) num_logs = len(glob(join(self.output_dir, 'log_*.txt'))) self.assertEqual(num_logs, 1) support_files_exist = isdir(join(self.output_dir, 'support_files')) self.assertTrue(support_files_exist) for personal_id in exp_personal_ids: personal_dir_exists = isdir(join(self.output_dir, personal_id)) self.assertTrue(personal_dir_exists) personal_files = map(basename, glob(join(self.output_dir, personal_id, '*'))) self.assertEqual(personal_files, ['index.html'])