示例#1
0
    def test_claim_vcfAnd6InvalidFilterFiles(self):
        #pylint: disable=too-many-locals
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = [self.entab("chrom|pos|ref|alt"), record1]
        content2 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("patientA.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        reader2 = MockFileReader("patientA.snp.vcf", content2)
        reader3 = MockFileReader("patientB.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        reader4 = MockFileReader("patientB.snp.vcf", content2)
        reader5 = MockFileReader("patientC.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        reader6 = MockFileReader("patientC.snp.vcf", content2)
        reader7 = MockFileReader("patientD.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        reader8 = MockFileReader("patientD.snp.vcf", content2)
        reader9 = MockFileReader("patientE.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        reader10 = MockFileReader("patientE.snp.vcf", content2)
        reader11 = MockFileReader("patientF.snp.Somatic.hc.fpfilter.pass",
                                  content1)
        reader12 = MockFileReader("patientF.snp.vcf", content2)
        file_readers = [
            reader1, reader2, reader3, reader4, reader5, reader6, reader7,
            reader8, reader9, reader10, reader11, reader12
        ]

        caller = varscan.Varscan()
        self.assertRaisesRegexp(
            utils.JQException,
            r"The \[6\] input files \[.*\(1 file\(s\) omitted\)\] match high-confidence file names, but the file header is invalid or missing. Review inputs and try again.",
            caller.claim, file_readers)
示例#2
0
    def test_claim_vcfAndFilterFileNameGiven(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = [self.entab("chrom|position|ref|var"), record1]
        content2 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("patientA.indel.Somatic.foo.bar", content1)
        reader2 = MockFileReader("patientA.indel.vcf", content2)
        reader3 = MockFileReader("patientA.snp.Somatic.foo.bar", content1)
        reader4 = MockFileReader("patientA.snp.vcf", content2)
        reader5 = MockFileReader("patientA.readme", ["foo"])
        file_readers = [reader1, reader2, reader3, reader4, reader5]

        caller = varscan.Varscan()
        caller.hc_file_pattern = re.compile("foo.bar$")
        unrecognized_readers, vcf_readers = caller.claim(file_readers)

        self.assertEquals(1, len(unrecognized_readers))
        self.assertEquals([reader5], unrecognized_readers)
        self.assertEquals(2, len(vcf_readers))
        self.assertIsInstance(vcf_readers[0], varscan._VarscanVcfReader)
        self.assertEquals(reader2.file_name,
                          vcf_readers[0]._vcf_reader.file_name)
        self.assertEquals(reader1.file_name,
                          vcf_readers[0]._som_hc_file_reader.file_name)
        self.assertIsInstance(vcf_readers[1], varscan._VarscanVcfReader)
        self.assertEquals(reader4.file_name,
                          vcf_readers[1]._vcf_reader.file_name)
        self.assertEquals(reader3.file_name,
                          vcf_readers[1]._som_hc_file_reader.file_name)
示例#3
0
    def test_claim_allSnpOrIndelOkay(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("fileA.indel.vcf", content1)
        reader2 = MockFileReader("fileB.indel.vcf", content1)
        file_readers = [reader1, reader2]

        caller = varscan.Varscan()
        unrecognized_readers, vcf_readers = caller.claim(file_readers)

        self.assertEquals(0, len(unrecognized_readers))
        self.assertEquals(2, len(vcf_readers))
示例#4
0
    def test_claim_ignoresUnpairedNonVcfFiles(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("fileA.txt", content1)
        file_readers = [reader1]

        caller = varscan.Varscan()
        unrecognized_readers, vcf_readers = caller.claim(file_readers)

        self.assertEquals(1, len(unrecognized_readers))
        self.assertEquals([reader1], unrecognized_readers)
        self.assertEquals(0, len(vcf_readers))
示例#5
0
    def test_claim_filterRegexDoesNotMatch(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("patientA.vcf", content1)
        file_readers = [reader1]

        caller = varscan.Varscan()
        caller.hc_file_pattern = re.compile("foo.bar$")
        self.assertRaisesRegexp(
            utils.UsageError,
            r"The VarScan high-confidence filename regex \[foo\.bar\$\] didn't match any files in the input directory. The beginning of the high-confidence filename must exactly match a VCF filename up to the .vcf extension. Review inputs/command options and try again.",
            caller.claim, file_readers)
示例#6
0
    def test_claim_VCFHasNoMatchingHc(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = [self.entab("chrom|position"), record1]
        content2 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("patientA.vcf", content2)
        reader2 = MockFileReader("patientB.vcf", content2)
        reader3 = MockFileReader("patientB.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        file_readers = [reader1, reader2, reader3]

        caller = varscan.Varscan()
        self.assertRaisesRegexp(
            utils.UsageError,
            r"The VarScan VCF file \[patientA.vcf\] has no matching high-confidence file.",
            caller.claim, file_readers)
示例#7
0
    def test_claim_mismatchingSnpIndelFiles(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("fileA.snp.vcf", content1)
        reader2 = MockFileReader("fileA.indel.vcf", content1)
        reader3 = MockFileReader("fileB.indel.vcf", content1)
        file_readers = [reader1, reader2, reader3]

        caller = varscan.Varscan()
        self.assertRaisesRegexp(
            utils.JQException,
            r"Some Varscan VCFs were missing either a snp or indel file. Review inputs/command options and try again.",
            caller.claim, file_readers)
        actual_log_errors = test.utils.mock_logger.messages["ERROR"]
        expected_log_errors = ["VarScan VCF [fileB.indel] has no snp file."]
        self.assertEquals(expected_log_errors, actual_log_errors)
示例#8
0
    def test_claim_varscanVcfOnly(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("fileA.snp.vcf", content1)
        reader2 = MockFileReader("fileB.snp.vcf", content1)
        file_readers = [reader1, reader2]

        caller = varscan.Varscan()
        unrecognized_readers, vcf_readers = caller.claim(file_readers)

        self.assertEquals(0, len(unrecognized_readers))
        self.assertEquals([], unrecognized_readers)
        self.assertEquals(2, len(vcf_readers))
        self.assertIsInstance(vcf_readers[0], varscan._VarscanVcfReader)

        self.assertEquals(reader1.file_name,
                          vcf_readers[0]._vcf_reader.file_name)
示例#9
0
    def test_claim_vcfAndInvalidFilterFile(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = [self.entab("chrom|pos|ref|alt"), record1]
        content2 = ["##foo", "##source=VarScan2", "#chrom", record1]
        reader1 = MockFileReader("patientA.indel.Somatic.hc.fpfilter.pass",
                                 content1)
        reader2 = MockFileReader("patientA.indel.vcf", content2)
        reader3 = MockFileReader("patientA.snp.Somatic.hc.fpfilter.pass",
                                 content1)
        reader4 = MockFileReader("patientA.snp.vcf", content2)
        reader5 = MockFileReader("patientA.readme", ["foo"])
        file_readers = [reader1, reader2, reader3, reader4, reader5]

        caller = varscan.Varscan()
        self.assertRaisesRegexp(
            utils.JQException,
            r"The \[2\] input files \[.*\] match high-confidence file names, but the file header is invalid or missing. Review inputs and try again.",
            caller.claim, file_readers)
示例#10
0
    def test_claim_multiplePatients(self):
        record1 = "chr1\t.\t.\t.\t.\t.\t.\t.\t."
        content1 = ["##foo", "##source=VarScan2", "#chrom", record1]
        content2 = ["chrom\tposition", "1\t23"]
        reader1 = MockFileReader("p2.fileA.vcf", content1)
        reader2 = MockFileReader("p2.fileA.Somatic.hc.fpfilter.pass", content2)
        reader3 = MockFileReader("p3.fileA.Somatic.hc.fpfilter.pass", content2)
        reader4 = MockFileReader("p3.fileA.vcf", content1)
        file_readers = [reader1, reader2, reader3, reader4]

        caller = varscan.Varscan()
        dummy, vcf_readers = caller.claim(file_readers)

        self.assertEquals(2, len(vcf_readers))
        self.assertIsInstance(vcf_readers[0], varscan._VarscanVcfReader)
        self.assertEquals("p2.fileA.vcf", vcf_readers[0]._vcf_reader.file_name)
        self.assertIn("_HCTag", self._get_tag_class_names(vcf_readers[0]))
        self.assertIn("_HCTag", self._get_tag_class_names(vcf_readers[1]))
        self.assertEquals(reader1.file_name,
                          vcf_readers[0]._vcf_reader.file_name)
示例#11
0
 def __init__(self, args=None):
     self._callers = [
         varscan.Varscan(args),
         strelka.Strelka(),
         mutect.Mutect()
     ]
示例#12
0
 def test_validate_filter_file_invalidFile(self):
     file_reader = MockFileReader("p1.hc.fpfilter.pass",
                                  ["chrom\tpos\tref"])
     caller = varscan.Varscan()
     valid_reader = caller._validate_filter_file(file_reader)
     self.assertEquals(None, valid_reader)
示例#13
0
 def test_validate_filter_file_validFile(self):
     file_reader = MockFileReader("p1.hc.fpfilter.pass",
                                  ["chrom\tposition"])
     caller = varscan.Varscan()
     valid_reader = caller._validate_filter_file(file_reader)
     self.assertEquals("p1.hc.fpfilter.pass", valid_reader.file_name)
示例#14
0
 def setUp(self):
     super(VarscanTestCase, self).setUp()
     self.caller = varscan.Varscan()
     varscan.logger = test.utils.mock_logger