def test_override(self): with open(self.get_data_path('expected/paired-override.tsv')) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-override.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] exp_md = qiime2.Metadata.load( self.get_data_path('expected/paired-override-stats.tsv')) # NOTE: the test data isn't interesting enough to be impacted by # chimera_method or min_fold_parent_over_abundance. table, rep_seqs, md = denoise_paired( self.demux_seqs, 150, 150, trim_left_f=10, trim_left_r=10, max_ee=20.5, trunc_q=0, n_threads=1, n_reads_learn=2, hashed_feature_ids=False, chimera_method='consensus', min_fold_parent_over_abundance=1.1) self.assertEqual(table, exp_table) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs)) self.assertEqual(md, exp_md)
def test_trim_left_bigger_than_trunc_len(self): with self.assertRaisesRegex(ValueError, 'trim_left_f'): denoise_paired(self.demux_seqs, 150, 150, trim_left_f=150) with self.assertRaisesRegex(ValueError, 'trim_left_r'): denoise_paired(self.demux_seqs, 150, 150, trim_left_r=150) # Shouldn't fail when `trunc_len_f=0` denoise_paired(self.demux_seqs, 0, 150, trim_left_f=10) # Shouldn't fail when `trunc_len_r=0` denoise_paired(self.demux_seqs, 150, 0, trim_left_r=10)
def test_defaults(self): with open(self.get_data_path('expected/paired-default.tsv')) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-default.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] table, rep_seqs = denoise_paired(self.demux_seqs, 150, 150) self.assertEqual(table, exp_table) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs))
def test_all_reads_filtered(self): with self.assertRaisesRegex(ValueError, 'filter'): denoise_paired(self.demux_seqs, 10000, 10000) with self.assertRaisesRegex(ValueError, 'filter'): denoise_paired(self.demux_seqs, 150, 10000) with self.assertRaisesRegex(ValueError, 'filter'): denoise_paired(self.demux_seqs, 10000, 150)
def test_defaults(self): with open(self.get_data_path('expected/paired-default.tsv')) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-default.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] # NOTE: changing the chimera_method parameter doesn't impact the # results for this dataset table, rep_seqs = denoise_paired(self.demux_seqs, 150, 150) self.assertEqual(table, exp_table) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs))
def test_override(self): with open(self.get_data_path('expected/paired-override.tsv')) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-override.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] table, rep_seqs = denoise_paired( self.demux_seqs, 150, 150, trim_left_f=10, trim_left_r=10, max_ee=20.5, trunc_q=0, n_threads=0, n_reads_learn=2, hashed_feature_ids=False) self.assertEqual(table, exp_table) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs))
def test_bad_values_fail(self): # Just confirm that the machinery works, anything more specific is just # restating the _valid_inputs dict which is more declarative than a # unit-test anyways. with self.assertRaisesRegex(ValueError, 'trunc_len_f'): denoise_paired(self.demux_seqs, -1, 150) with self.assertRaisesRegex(ValueError, 'trunc_len_r'): denoise_paired(self.demux_seqs, 150, -1) with self.assertRaisesRegex(ValueError, 'n_reads_learn'): denoise_paired(self.demux_seqs, 150, 150, n_reads_learn=0)
def test_no_chimera_method(self): with open(self.get_data_path('expected/paired-default.tsv')) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-default.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] exp_md = qiime2.Metadata.load( self.get_data_path('expected/paired-default-stats.tsv')) table, rep_seqs, md = denoise_paired(self.demux_seqs, 150, 150, chimera_method='none') self.assertEqual(table, exp_table) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs)) self.assertEqual(md, exp_md)
def test_remove_empty(self): with open(self.get_data_path('expected/paired-remove-empty-default.tsv' )) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-default.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] exp_md = qiime2.Metadata.load( self.get_data_path('expected/paired-default-stats.tsv')) # NOTE: changing the chimera_method parameter doesn't impact the # results for this dataset table, rep_seqs, md = denoise_paired(self.demux_seqs, 150, 150, retain_all_samples=False) self.assertEqual(_sort_table(table), _sort_table(exp_table)) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs)) self.assertEqual(md, exp_md)
def test_override(self): with open(self.get_data_path('expected/paired-override.tsv')) as fh: exp_table = biom.Table.from_tsv(fh, None, None, lambda x: x) exp_rep_seqs = list( skbio.io.read(self.get_data_path('expected/paired-override.fasta'), 'fasta', constructor=skbio.DNA)) for seq in exp_rep_seqs: del seq.metadata['description'] # NOTE: the test data isn't interesting enough to be impacted by # chimera_method or min_fold_parent_over_abundance. table, rep_seqs = denoise_paired( self.demux_seqs, 150, 150, trim_left_f=10, trim_left_r=10, max_ee=20.5, trunc_q=0, n_threads=0, n_reads_learn=2, hashed_feature_ids=False, chimera_method='consensus', min_fold_parent_over_abundance=1.1) self.assertEqual(table, exp_table) self.assertEqual(_sort_seqs(rep_seqs), _sort_seqs(exp_rep_seqs))
def test_bad_values_fail(self): # Just confirm that the machinery works, anything more specific is just # restating the _valid_inputs dict which is more declarative than a # unit-test anyways. with self.assertRaisesRegex(ValueError, 'trunc_len_f'): denoise_paired(self.demux_seqs, -1, 150) with self.assertRaisesRegex(ValueError, 'trunc_len_r'): denoise_paired(self.demux_seqs, 150, -1) with self.assertRaisesRegex(ValueError, 'n_reads_learn'): denoise_paired(self.demux_seqs, 150, 150, n_reads_learn=0) with self.assertRaisesRegex(ValueError, 'consensus'): denoise_single(self.demux_seqs, 150, 150, chimera_method='foo')
def test_trim_left_bigger_than_trunc_len(self): with self.assertRaisesRegex(ValueError, 'trim_left_f'): denoise_paired(self.demux_seqs, 150, 150, trim_left_f=150) with self.assertRaisesRegex(ValueError, 'trim_left_r'): denoise_paired(self.demux_seqs, 150, 150, trim_left_r=150)