def test_findall(self): """find all files recursively""" found = list(io_app.findall(self.basedir, suffix=".fasta")) self.assertTrue(len(found) > 1) found = list(io_app.findall(self.basedir, suffix=".fasta", limit=2)) self.assertTrue(len(found) == 2) # and with a suffix found = list(io_app.findall(self.basedir, suffix=".fasta*")) self.assertTrue(len(found) > 2)
def test_write_seqs(self): """correctly writes sequences out""" fasta_paths = list(io_app.findall(self.basedir, suffix=".fasta", limit=2)) fasta_loader = io_app.load_aligned(format="fasta") alns = list(map(fasta_loader, fasta_paths)) with TemporaryDirectory(dir=".") as dirname: writer = io_app.write_seqs(dirname, if_exists="ignore") wrote = list(map(writer, alns)) written = list(io_app.findall(dirname, suffix="fasta")) for i, wrote in enumerate(written): self.assertEqual(alns[i].info.stored, join(dirname, wrote))
def test_findall_zip(self): """find all files recursively in a zip archive""" with TemporaryDirectory(dir=".") as dirname: zip_path = join(dirname, "new") shutil.make_archive(zip_path, "zip", self.basedir) zip_path = zip_path + ".zip" # because shutil adds the suffix found = list(io_app.findall(zip_path, suffix="fasta")) self.assertTrue(len(found) > 1) found = list(io_app.findall(zip_path, suffix="fasta", limit=2)) self.assertTrue(len(found) == 2) # and with a suffix found = list(io_app.findall(zip_path, suffix=".fasta*")) self.assertTrue(len(found) > 2)
def test_load_aligned_from_zip(self): """correctly loads aligned seqs from a zip archive""" def validate(paths, loader): loaded = list(map(loader, paths)) for i, aln in enumerate(loaded): self.assertTrue(len(aln) > 10) self.assertIsInstance(aln, ArrayAlignment) # paths is only the basename when workjing with zip archives # whereas the inpath will have full path of zip archive self.assertEqual(aln.info.source, paths[i]) self.assertEqual(aln.info.source, paths[i]) with TemporaryDirectory(dir=".") as dirname: zip_path = join(dirname, self.basedir.replace(".zip", "")) shutil.make_archive( base_name=zip_path, root_dir=".", format="zip", base_dir=self.basedir ) zip_path = zip_path + ".zip" # because shutil adds the suffix fasta_paths = list(io_app.findall(zip_path, suffix=".fasta", limit=2)) fasta_loader = io_app.load_aligned(format="fasta") validate(fasta_paths, fasta_loader)