コード例 #1
0
ファイル: new_diversity_places.py プロジェクト: smirarab/emp
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'))
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)