Skip to content

Commit 9bbb277

Browse files
Merge pull request #12 from PennChopMicrobiomeProgram/write-totalreads-table
Add ability to write table of total read counts
2 parents 7adde87 + 59a4403 commit 9bbb277

4 files changed

Lines changed: 24 additions & 0 deletions

File tree

dnabclib/main.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ def main(argv=None):
6161
p.add_argument(
6262
"--manifest-file", type=argparse.FileType("w"), help=(
6363
"Write manifest file for QIIME2"))
64+
p.add_argument(
65+
"--total-reads-file", type=argparse.FileType("w"), help=(
66+
"Write TSV table of total read counts"))
6467
args = p.parse_args(argv)
6568

6669
samples = list(Sample.load(args.barcode_file))
@@ -78,3 +81,5 @@ def main(argv=None):
7881

7982
if args.manifest_file:
8083
writer.write_qiime2_manifest(args.manifest_file)
84+
if args.total_reads_file:
85+
writer.write_read_counts(args.total_reads_file, assigner.read_counts)

dnabclib/writer.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ def write_qiime2_manifest(self, f):
3030
fp1 = os.path.abspath(f1.name)
3131
f.write("{0},{1},forward\n".format(sample.name, fp1))
3232

33+
def write_read_counts(self, f, read_counts):
34+
f.write("SampleID\tNumReads\n")
35+
for sample_name, n in read_counts.items():
36+
f.write("{0}\t{1}\n".format(sample_name, n))
37+
3338
def _get_output_file(self, sample):
3439
f = self._open_files.get(sample)
3540
if f is None:

test/test_main.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def setUp(self):
4646
self.output_dir = os.path.join(self.temp_dir, "output")
4747
self.summary_fp = os.path.join(self.temp_dir, "summary.json")
4848
self.manifest_fp = os.path.join(self.temp_dir, "manifest.csv")
49+
self.total_reads_fp = os.path.join(self.temp_dir, "read_counts.tsv")
4950

5051
def tearDown(self):
5152
shutil.rmtree(self.temp_dir)
@@ -58,6 +59,7 @@ def test_regular(self):
5859
"--barcode-file", self.barcode_fp,
5960
"--output-dir", self.output_dir,
6061
"--manifest-file", self.manifest_fp,
62+
"--total-reads-file", self.total_reads_fp,
6163
"--revcomp",
6264
])
6365
self.assertEqual(
@@ -72,6 +74,12 @@ def test_regular(self):
7274
self.assertIn(direction, ["forward\n", "reverse\n"])
7375
self.assertIn(sample_id, ["SampleA", "SampleB"])
7476

77+
with open(self.total_reads_fp) as f:
78+
self.assertEqual(next(f), "SampleID\tNumReads\n")
79+
self.assertEqual(next(f), "SampleA\t1\n")
80+
self.assertEqual(next(f), "SampleB\t1\n")
81+
self.assertEqual(next(f), "unassigned\t1\n")
82+
7583

7684
class SampleNameTests(unittest.TestCase):
7785
def test_get_sample_names_main(self):

test/test_writer.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ def test_write(self):
6464
"h56,{0},forward\n".format(fp),
6565
])
6666

67+
f2 = MockFile()
68+
w.write_read_counts(f2, {"s1": 365})
69+
self.assertEqual(f2.contents, [
70+
"SampleID\tNumReads\n",
71+
"s1\t365\n"
72+
])
6773

6874
class MockFile:
6975
def __init__(self):

0 commit comments

Comments
 (0)