Beispiel #1
0
    def test_valid(self):
        # 0 Filename
        # 1 Label
        # 2 Strandedness (True/False)
        # 3 Score (Float)
        # 4 Reference
        # 5 Exclude redundant
        # 6 strip cds
        # 7 skip split

        with tempfile.NamedTemporaryFile(mode="wt") as out:
            for _, item in self.files.items():
                print(item["filename"],
                      item["label"],
                      item["stranded"],
                      item["score"],
                      item["reference"],
                      item["exclude_redundant"],
                      item["strip_cds"],
                      item["skip_split"],
                      sep="\t",
                      file=out)
            out.flush()
            configuration = parse_list_file(self.config, out.name)

        for arr in (configuration.prepare.files.source_score,
                    configuration.prepare.files.reference,
                    configuration.prepare.files.exclude_redundant,
                    configuration.prepare.files.reference,
                    configuration.prepare.files.strip_cds,
                    configuration.pick.chimera_split.skip):
            self.assertEqual(len(arr), 3)

        for _, item in self.files.items():
            label = item["label"]
            self.assertIn(item["filename"], configuration.prepare.files.gff)
            self.assertIn(item["label"], configuration.prepare.files.labels)
            pos = configuration.prepare.files.gff.index(item["filename"])
            self.assertEqual(
                pos, configuration.prepare.files.labels.index(item["label"]))
            if item["stranded"] is True:
                self.assertIn(
                    item["filename"],
                    configuration.prepare.files.strand_specific_assemblies)
            else:
                self.assertNotIn(
                    item["filename"],
                    configuration.prepare.files.strand_specific_assemblies)
            self.assertEqual(item["score"],
                             configuration.prepare.files.source_score[label])
            self.assertEqual(
                item["exclude_redundant"],
                configuration.prepare.files.exclude_redundant[pos])
            self.assertEqual(item["reference"],
                             configuration.prepare.files.reference[pos])
            self.assertEqual(item["strip_cds"],
                             configuration.prepare.files.strip_cds[pos])
            self.assertEqual(item["skip_split"],
                             configuration.pick.chimera_split.skip[pos])
Beispiel #2
0
    def test_default(self):
        with tempfile.NamedTemporaryFile(mode="wt") as out:
            # Test that header lines are skipped
            print("# Filename label stranded", file=out)
            print("", file=out)
            for _, item in self.files.items():
                print(item["filename"],
                      item["label"],
                      item["stranded"],
                      sep="\t",
                      file=out)
            out.flush()
            configuration = parse_list_file(self.config, out.name)

        for name, arr in zip(("source_score", "reference", "exclude_redundant",
                              "strip_cds", "skip_split"),
                             (configuration.prepare.files.source_score,
                              configuration.prepare.files.reference,
                              configuration.prepare.files.exclude_redundant,
                              configuration.prepare.files.strip_cds,
                              configuration.pick.chimera_split.skip)):
            self.assertEqual(len(arr), 3, name)

        for _, item in self.files.items():
            label = item["label"]
            self.assertIn(item["filename"], configuration.prepare.files.gff)
            self.assertIn(item["label"], configuration.prepare.files.labels)
            pos = configuration.prepare.files.gff.index(item["filename"])
            self.assertEqual(
                pos, configuration.prepare.files.labels.index(item["label"]))
            if item["stranded"] is True:
                self.assertIn(
                    item["filename"],
                    configuration.prepare.files.strand_specific_assemblies)
            else:
                self.assertNotIn(
                    item["filename"],
                    configuration.prepare.files.strand_specific_assemblies)

        # for arr, pos, default in [("reference", 4, False), ("exclude_redundant", 5, False),
        #                                   ("strip_cds", 6, False), ("skip_split", 7, False)]:

        self.assertEqual(
            configuration.prepare.files.source_score,
            dict((label, 0) for label in configuration.prepare.files.labels))
        self.assertEqual(configuration.prepare.files.reference, [False] * 3)
        self.assertEqual(configuration.prepare.files.exclude_redundant,
                         [False] * 3)
        self.assertEqual(configuration.prepare.files.strip_cds, [False] * 3)
        self.assertEqual(configuration.pick.chimera_split.skip, [False] * 3)
Beispiel #3
0
    def test_parse_failing_basic_list_file(self):
        # 0 Filename
        # 1 Label
        # 2 Strandedness (True/False)
        # 3 Score (Float)
        # 4 Reference
        # 5 Exclude redundant
        # 6 strip cds
        # 7 skip split

        with tempfile.NamedTemporaryFile(mode="wt") as fail:
            print(*[self.files[_]["filename"] for _ in self.files], sep="\n", file=fail)
            fail.flush()
            with self.assertRaises(IndexError):
                parse_list_file(self.config, fail.name)

        with tempfile.NamedTemporaryFile("wt") as fail:
            for key, item in self.files.items():
                print(item["filename"], item["label"], file=fail, sep="\t")
            fail.flush()
            with self.assertRaises(IndexError):
                parse_list_file(self.config, fail.name)

        with tempfile.NamedTemporaryFile("wt") as fail:
            for key, item in self.files.items():
                print(item["filename"], item["label"], "foo", file=fail, sep="\t")
            fail.flush()
            with self.assertRaises(ValueError):
                parse_list_file(self.config, fail.name)

        with tempfile.NamedTemporaryFile("wt") as fail:
            for key, item in self.files.items():
                # Double labels
                print(item["filename"], self.files["pacbio"]["label"], item["stranded"], file=fail, sep="\t")
            fail.flush()
            with self.assertRaises(ValueError):
                parse_list_file(self.config, fail.name)

        with tempfile.NamedTemporaryFile("wt") as fail, tempfile.TemporaryDirectory() as tmp:
            for key, item in self.files.items():
                fname = os.path.join(tmp, os.path.basename(item["filename"]))
                self.assertFalse(os.path.exists(fname))
                print(fname, item["label"], item["stranded"], file=fail, sep="\t")
            fail.flush()
            with self.assertRaises(ValueError):
                parse_list_file(self.config, fail.name)

        with tempfile.NamedTemporaryFile("wt") as fail:
            for key, item in self.files.items():
                print(item["filename"], item["label"], item["stranded"], "wrong", file=fail, sep="\t")
            fail.flush()
            with self.assertRaises(ValueError) as exc:
                parse_list_file(self.config, fail.name)
            self.assertIsNotNone(re.search(r"Invalid score specified for", str(exc.exception)))