diff --git a/lang/python/airr/interface.py b/lang/python/airr/interface.py index a8f60298..b58811dc 100644 --- a/lang/python/airr/interface.py +++ b/lang/python/airr/interface.py @@ -41,7 +41,7 @@ def read_rearrangement(filename, validate=False, debug=False): airr.io.RearrangementReader: iterable reader class. """ if filename.endswith(".gz"): - handle = gzip.open(filename, 'r') + handle = gzip.open(filename, 'rt') else: handle = open(filename, 'r') diff --git a/lang/python/tests/data/good_rearrangement.tsv.gz b/lang/python/tests/data/good_rearrangement.tsv.gz new file mode 100644 index 00000000..c838c584 Binary files /dev/null and b/lang/python/tests/data/good_rearrangement.tsv.gz differ diff --git a/lang/python/tests/test_interface.py b/lang/python/tests/test_interface.py index 5fc54060..0585cac0 100644 --- a/lang/python/tests/test_interface.py +++ b/lang/python/tests/test_interface.py @@ -23,6 +23,7 @@ def setUp(self): # Test data self.rearrangement_good = os.path.join(data_path, 'good_rearrangement.tsv') + self.rearrangement_good_gz = os.path.join(data_path, 'good_rearrangement.tsv.gz') self.rearrangement_bad = os.path.join(data_path, 'bad_rearrangement.tsv') self.rep_good = os.path.join(data_path, 'good_repertoire.yaml') self.rep_bad = os.path.join(data_path, 'bad_repertoire.yaml') @@ -59,6 +60,24 @@ def test_load_rearrangement(self): result = airr.load_rearrangement(self.rearrangement_bad) self.assertTupleEqual(result.shape, self.shape_bad, 'load(): bad data failed') + # @unittest.skip('-> read_rearrangement(): skipped\n') + def test_read_rearrangement(self): + # Good data + result = [] + reader = airr.read_rearrangement(self.rearrangement_good) + for row in reader: + result.append(row) + reader.close() + self.assertTrue(len(result) == self.shape_good[0], 'read_rearrangement(): good data failed') + + # Good data, gzip + result = [] + reader = airr.read_rearrangement(self.rearrangement_good_gz) + for row in reader: + result.append(row) + reader.close() + self.assertTrue(len(result) == self.shape_good[0], 'read_rearrangement(): good data (gzip) failed') + # @unittest.skip('-> repertoire_template(): skipped\n') def test_repertoire_template(self): try: