def test_load_unaligned_seqs_from_json(self): """test loading an unaligned object from json file""" with TemporaryDirectory(dir=".") as dirname: json_path = os.path.join(dirname, "unaligned.json") path = os.path.join(data_path, "brca1_5.paml") unaligned = load_unaligned_seqs(path) unaligned.write(json_path) got = load_unaligned_seqs(json_path) self.assertIsInstance(got, SequenceCollection) self.assertEqual(got.to_dict(), unaligned.to_dict()) self.assertEqual(got.info["source"], path) # tests json generated by make_record_for_json uncompleted_record = make_record_for_json("delme", got, False) uncompleted_record_path = os.path.join(dirname, "uncompleted_record.json") completed_record = make_record_for_json("delme", got, True) completed_record_path = os.path.join(dirname, "completed_record.json") with open(uncompleted_record_path, "w") as out: out.write(json.dumps(uncompleted_record)) with open(completed_record_path, "w") as out: out.write(json.dumps(completed_record)) # tests when provided record json file is uncompleted with self.assertRaises(TypeError): load_unaligned_seqs(uncompleted_record_path) # tests when provided record json is completed got = load_unaligned_seqs(completed_record_path) self.assertIsInstance(got, SequenceCollection) self.assertEqual(got.to_dict(), unaligned.to_dict()) self.assertEqual(got.info["source"], path)
def test_load_aligned_seqs_from_json(self): """tests loading an aligned object from json file""" with TemporaryDirectory(dir=".") as dirname: path = os.path.join(data_path, "brca1_5.paml") alignment = load_aligned_seqs(path, array_align=False, moltype="dna") alignment_json_path = os.path.join(dirname, "alignment.json") alignment.write(alignment_json_path) array_alignment = load_aligned_seqs(path, moltype="dna") array_alignment_json_path = os.path.join(dirname, "array_alignment.json") array_alignment.write(array_alignment_json_path) # tests case Alignment got = load_aligned_seqs(alignment_json_path) self.assertIsInstance(got, Alignment) self.assertEqual(got.moltype.label, "dna") self.assertEqual(got.to_dict(), alignment.to_dict()) self.assertEqual(got.info["source"], path) # tests case ArrayAlignment got = load_aligned_seqs(array_alignment_json_path) self.assertIsInstance(got, ArrayAlignment) self.assertEqual(got.moltype.label, "dna") self.assertEqual(got.to_dict(), array_alignment.to_dict()) self.assertEqual(got.info["source"], path) # tests json generated by make_record_for_json uncompleted_record = make_record_for_json("delme", got, False) completed_record = make_record_for_json("delme", got, True) uncompleted_record_path = os.path.join(dirname, "uncompleted_record.json") completed_record_path = os.path.join(dirname, "completed_record.json") with open(uncompleted_record_path, "w") as out: out.write(json.dumps(uncompleted_record)) with open(completed_record_path, "w") as out: out.write(json.dumps(completed_record)) # tests when provided record json file is uncompleted with self.assertRaises(TypeError): load_unaligned_seqs(uncompleted_record_path) # tests when provided record json is completed got = load_aligned_seqs(completed_record_path) self.assertIsInstance(got, ArrayAlignment) self.assertEqual(got.to_dict(), array_alignment.to_dict()) self.assertEqual(got.info["source"], path) # tests wrong input json file json_path = os.path.join(dirname, "unaligned.json") path = os.path.join(data_path, "brca1_5.paml") unaligned = load_unaligned_seqs(path) unaligned.write(json_path) with self.assertRaises(TypeError): load_aligned_seqs(json_path)
def test_load_json(self): """correctly loads an object from json""" from cogent3.app.data_store import make_record_for_json data = make_record_for_json("delme", DNA, True) data = json.dumps(data) # straight directory with TemporaryDirectory(dir=".") as dirname: outpath = join(dirname, "delme.json") with open(outpath, "w") as outfile: outfile.write(data) reader = io_app.load_json() got = reader(outpath) self.assertIsInstance(got, DNA.__class__) self.assertEqual(got, DNA) # zipped directory with TemporaryDirectory(dir=".") as dirname: zip_path = join(dirname, "delme.zip") outpath = "delme/delme.json" with zipfile.ZipFile(zip_path, "a") as out: out.writestr(outpath, data) dstore = io_app.get_data_store(zip_path, suffix="json") member = dstore.get_member("delme.json") reader = io_app.load_json() got = reader(member) self.assertIsInstance(got, DNA.__class__) self.assertEqual(got, DNA)