def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) output_dir = opts.output_dir mapping_category = opts.mapping_category try: makedirs(output_dir) except OSError: pass percent_failures_data, percent_failures_plot, num_new_otus_data, \ num_new_otus_plot = generate_new_diversity_plots( [open(otu_table_fp, 'U') for otu_table_fp in opts.otu_table_fps], open(opts.gg_fasta_fp, 'U'), open(opts.mapping_fp, 'U'), mapping_category, opts.min_num_samples, opts.category_values_to_exclude.split(','), opts.verbose) # Save plots as PDFs. percent_failures_plot.savefig(join(output_dir, 'percent_novel_seqs_by_%s.pdf' % mapping_category)) num_new_otus_plot.savefig(join(output_dir, 'num_novel_otus_by_%s.pdf' % mapping_category)) # Pickle plot raw data in case we need to load up the data again into new # plots and interactively tweak them (it'll take too long to rerun the # whole script for these tweaks). dump(percent_failures_data, open(join(output_dir, 'percent_novel_seqs_by_%s.p' % mapping_category), 'wb')) dump(num_new_otus_data, open(join(output_dir, 'num_novel_otus_by_%s.p' % mapping_category), 'wb'))
def test_generate_new_diversity_plots(self): exp = ([(28.846153846153843, 'Env1 (n=2)', [0.0, 57.692307692307686]), (57.142857142857139, 'Env2 (n=1)', [57.142857142857139])], [(2.0, 'Env1 (n=2)', [0, 4]), (3.0, 'Env2 (n=1)', [3])]) obs = generate_new_diversity_plots( [self.otu_table1_f, self.otu_table2_f], self.ref_seqs_f, self.mapping_f, self.mapping_category, 1) self.assertEqual(len(obs[0]), len(exp[0])) self.assertFloatEqual(obs[0][0][:2], exp[0][0][:2]) self.assertFloatEqual(sorted(obs[0][0][2]), sorted(exp[0][0][2])) self.assertFloatEqual(obs[0][1][:2], exp[0][1][:2]) self.assertFloatEqual(sorted(obs[0][1][2]), sorted(exp[0][1][2])) self.assertEqual(len(obs[2]), len(exp[1])) self.assertFloatEqual(obs[2][0][:2], exp[1][0][:2]) self.assertFloatEqual(sorted(obs[2][0][2]), sorted(exp[1][0][2])) self.assertFloatEqual(obs[2][1][:2], exp[1][1][:2]) self.assertFloatEqual(sorted(obs[2][1][2]), sorted(exp[1][1][2])) ax = obs[1].get_axes()[0] self.assertEqual(ax.get_title(), "% Novel Seqs by Environment") self.assertEqual(ax.get_xlabel(), "Environment") self.assertEqual(ax.get_ylabel(), "% Novel Seqs") self.assertEqual(len(ax.get_xticklabels()), 2) ax = obs[3].get_axes()[0] self.assertEqual(ax.get_title(), "Number of Novel OTUs by Environment") self.assertEqual(ax.get_xlabel(), "Environment") self.assertEqual(ax.get_ylabel(), "Number of Novel OTUs") self.assertEqual(len(ax.get_xticklabels()), 2)
def test_generate_new_diversity_plots_excluded_category_value(self): exp = ([(57.142857142857139, 'Env2 (n=1)', [57.142857142857139])], [(3.0, 'Env2 (n=1)', [3])]) obs = generate_new_diversity_plots( [self.otu_table1_f, self.otu_table2_f], self.ref_seqs_f, self.mapping_f, self.mapping_category, 1, ['Env1']) self.assertFloatEqual(obs[0], exp[0]) self.assertFloatEqual(obs[2], exp[1]) ax = obs[1].get_axes()[0] self.assertEqual(ax.get_title(), "% Novel Seqs by Environment") self.assertEqual(ax.get_xlabel(), "Environment") self.assertEqual(ax.get_ylabel(), "% Novel Seqs") self.assertEqual(len(ax.get_xticklabels()), 1) ax = obs[3].get_axes()[0] self.assertEqual(ax.get_title(), "Number of Novel OTUs by Environment") self.assertEqual(ax.get_xlabel(), "Environment") self.assertEqual(ax.get_ylabel(), "Number of Novel OTUs") self.assertEqual(len(ax.get_xticklabels()), 1)