Skip to content

Commit b04394c

Browse files
author
Adam Robbins-Pianka
committed
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)
1 parent 7bb933c commit b04394c

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

qiita_ware/demux.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,10 @@ def to_ascii(demux, samples=None):
438438
for samp, idx, seq, qual, bc_ori, bc_cor, bc_err in fetch(demux, samples):
439439
seq_id = id_fmt % {'sample': samp, 'idx': idx, 'bc_ori': bc_ori,
440440
'bc_cor': bc_cor, 'bc_diff': bc_err}
441-
yield formatter(seq_id, seq, qual.astype(np.uint8))
441+
if qual is not None:
442+
qual = qual.astype(np.uint8)
443+
444+
yield formatter(seq_id, seq, qual)
442445

443446

444447
def to_per_sample_ascii(demux, samples=None):

qiita_ware/test/test_demux.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,12 +282,29 @@ def test_to_ascii(self):
282282
delete=False) as f:
283283
f.write(fqdata)
284284

285-
exp = [(b"@a_0 orig_bc=abc new_bc=abc bc_diffs=0\nxyz\n+\nABC\n"),
286-
(b"@b_0 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDFG\n"),
287-
(b"@b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDEF\n")]
288285
self.to_remove.append(f.name)
289286
to_hdf5(f.name, self.hdf5_file)
290287

288+
exp = [b"@a_0 orig_bc=abc new_bc=abc bc_diffs=0\nxyz\n+\nABC\n",
289+
b"@b_0 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDFG\n",
290+
b"@b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nqwe\n+\nDEF\n"]
291+
292+
obs = list(to_ascii(self.hdf5_file, samples=['a', 'b']))
293+
self.assertEqual(obs, exp)
294+
295+
def test_to_ascii_fasta(self):
296+
with tempfile.NamedTemporaryFile('r+', suffix='.fna',
297+
delete=False) as f:
298+
f.write(seqdata)
299+
300+
self.to_remove.append(f.name)
301+
to_hdf5(f.name, self.hdf5_file)
302+
303+
exp = [b">a_0 orig_bc=abc new_bc=abc bc_diffs=0\nx\n",
304+
b">a_1 orig_bc=aby new_bc=ybc bc_diffs=2\nxy\n",
305+
b">a_2 orig_bc=abz new_bc=zbc bc_diffs=3\nxyz\n",
306+
b">b_0 orig_bc=abx new_bc=xbc bc_diffs=1\nxyz\n",
307+
b">b_1 orig_bc=abw new_bc=wbc bc_diffs=4\nabcd\n"]
291308

292309
obs = list(to_ascii(self.hdf5_file, samples=['a', 'b']))
293310
self.assertEqual(obs, exp)

0 commit comments

Comments
 (0)