From 7bb933cfe9aa8be6e7be69345ed499c55c89f98a Mon Sep 17 00:00:00 2001 From: Adam Robbins-Pianka Date: Fri, 8 May 2015 15:15:37 -0600 Subject: [PATCH 1/2] Simplify use of contexts in tests --- qiita_ware/test/test_demux.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/qiita_ware/test/test_demux.py b/qiita_ware/test/test_demux.py index 453d637b2..d2f2826d1 100644 --- a/qiita_ware/test/test_demux.py +++ b/qiita_ware/test/test_demux.py @@ -246,11 +246,9 @@ def test_to_hdf5(self): with tempfile.NamedTemporaryFile('r+', suffix='.fna', delete=False) as f: f.write(seqdata) - f.flush() - f.close() - to_hdf5(f.name, self.hdf5_file) - self.to_remove.append(f.name) + self.to_remove.append(f.name) + to_hdf5(f.name, self.hdf5_file) npt.assert_equal(self.hdf5_file['a/sequence'][:], np.array(["x", "xy", "xyz"])) @@ -283,14 +281,13 @@ def test_to_ascii(self): with tempfile.NamedTemporaryFile('r+', suffix='.fq', delete=False) as f: f.write(fqdata) - f.flush() - f.close() - to_hdf5(f.name, self.hdf5_file) - self.to_remove.append(f.name) exp = [(b"@a_0 orig_bc=abc new_bc=abc bc_diffs=0\nxyz\n+\nABC\n"), (b"@b_0 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDFG\n"), (b"@b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDEF\n")] + self.to_remove.append(f.name) + to_hdf5(f.name, self.hdf5_file) + obs = list(to_ascii(self.hdf5_file, samples=['a', 'b'])) self.assertEqual(obs, exp) @@ -299,10 +296,9 @@ def test_to_per_sample_ascii(self): with tempfile.NamedTemporaryFile('r+', suffix='.fq', delete=False) as f: f.write(fqdata) - f.flush() - f.close() - to_hdf5(f.name, self.hdf5_file) - self.to_remove.append(f.name) + + self.to_remove.append(f.name) + to_hdf5(f.name, self.hdf5_file) exp = [('a', [(b"@a_0 orig_bc=abc new_bc=abc bc_diffs=0\nxyz\n+\n" "ABC\n")]), From b04394c0b820082f5d5e16b3287430db3c06f9cd Mon Sep 17 00:00:00 2001 From: Adam Robbins-Pianka Date: Fri, 8 May 2015 15:16:54 -0600 Subject: [PATCH 2/2] BUG: make to_ascii work with fasta files Also add regression test. Previously, this function would fail with fasta files because the call to qual.astype would fail (because qual is None when the file is fasta) --- qiita_ware/demux.py | 5 ++++- qiita_ware/test/test_demux.py | 23 ++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/qiita_ware/demux.py b/qiita_ware/demux.py index 1f32baca4..0938ba696 100644 --- a/qiita_ware/demux.py +++ b/qiita_ware/demux.py @@ -438,7 +438,10 @@ def to_ascii(demux, samples=None): for samp, idx, seq, qual, bc_ori, bc_cor, bc_err in fetch(demux, samples): seq_id = id_fmt % {'sample': samp, 'idx': idx, 'bc_ori': bc_ori, 'bc_cor': bc_cor, 'bc_diff': bc_err} - yield formatter(seq_id, seq, qual.astype(np.uint8)) + if qual is not None: + qual = qual.astype(np.uint8) + + yield formatter(seq_id, seq, qual) def to_per_sample_ascii(demux, samples=None): diff --git a/qiita_ware/test/test_demux.py b/qiita_ware/test/test_demux.py index d2f2826d1..2ded52874 100644 --- a/qiita_ware/test/test_demux.py +++ b/qiita_ware/test/test_demux.py @@ -282,12 +282,29 @@ def test_to_ascii(self): delete=False) as f: f.write(fqdata) - exp = [(b"@a_0 orig_bc=abc new_bc=abc bc_diffs=0\nxyz\n+\nABC\n"), - (b"@b_0 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDFG\n"), - (b"@b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDEF\n")] self.to_remove.append(f.name) to_hdf5(f.name, self.hdf5_file) + exp = [b"@a_0 orig_bc=abc new_bc=abc bc_diffs=0\nxyz\n+\nABC\n", + b"@b_0 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDFG\n", + b"@b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDEF\n"] + + obs = list(to_ascii(self.hdf5_file, samples=['a', 'b'])) + self.assertEqual(obs, exp) + + def test_to_ascii_fasta(self): + with tempfile.NamedTemporaryFile('r+', suffix='.fna', + delete=False) as f: + f.write(seqdata) + + self.to_remove.append(f.name) + to_hdf5(f.name, self.hdf5_file) + + exp = [b">a_0 orig_bc=abc new_bc=abc bc_diffs=0\nx\n", + b">a_1 orig_bc=aby new_bc=ybc bc_diffs=2\nxy\n", + b">a_2 orig_bc=abz new_bc=zbc bc_diffs=3\nxyz\n", + b">b_0 orig_bc=abx new_bc=xbc bc_diffs=1\nxyz\n", + b">b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nabcd\n"] obs = list(to_ascii(self.hdf5_file, samples=['a', 'b'])) self.assertEqual(obs, exp)