def test_simple_case(self):
        reference_coverage = ProbeCoverage(min_depth=100,
                                           percent_coverage=100,
                                           median_depth=100)
        alt1 = ProbeCoverage(min_depth=80,
                             percent_coverage=100,
                             median_depth=100)
        alternate_coverages = [alt1]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        call = self.vt_no_contaim.type(v1)
        assert call['genotype'] == [0, 1]

        alt1 = ProbeCoverage(min_depth=1,
                             percent_coverage=100,
                             median_depth=100)
        alternate_coverages = [alt1]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        call = self.vt_no_contaim.type(v1)
        assert call['genotype'] == [0, 0]
Example #2
0
    def _parse_variant_panel(self, row):
        allele, median_depth, min_depth, percent_coverage, k_count = self._parse_summary_covgs_row(
            row)
        params = get_params(allele)
        if 'var_name' in params:
            var_name = params.get('var_name')
        else:
            var_name = allele.split('?')[0].split('-')[1]

        num_alts = int(params.get("num_alts", 0))
        reference_coverages = [
            ProbeCoverage(percent_coverage=percent_coverage,
                          median_depth=median_depth,
                          min_depth=min_depth,
                          k_count=k_count)
        ]
        alt_or_ref = 'ref'
        alternate_coverages = []
        for i in range(num_alts - 1):
            row = next(self.reader)
            ref_allele, median_depth, min_depth, percent_coverage, k_count = self._parse_summary_covgs_row(
                row)
            if ref_allele.split('-')[0] != 'ref':
                logger.warning("Fewer ref alleles than alt alleles for %s" %
                               ref_allele)
                alternate_coverages.append(
                    ProbeCoverage(min_depth=min_depth,
                                  k_count=k_count,
                                  percent_coverage=percent_coverage,
                                  median_depth=median_depth))
                num_alts -= 1
                break

            assert ref_allele.split('-')[0] == 'ref'
            reference_coverages.append(
                ProbeCoverage(percent_coverage=percent_coverage,
                              median_depth=median_depth,
                              min_depth=min_depth,
                              k_count=k_count))
        for i in range(num_alts):
            row = next(self.reader)
            alt_allele, median_depth, min_depth, percent_coverage, k_count = self._parse_summary_covgs_row(
                row)
            assert alt_allele.split('-')[0] == 'alt'
            alternate_coverages.append(
                ProbeCoverage(min_depth=min_depth,
                              k_count=k_count,
                              percent_coverage=percent_coverage,
                              median_depth=median_depth))
        variant_probe_coverage = VariantProbeCoverage(
            reference_coverages=reference_coverages,
            alternate_coverages=alternate_coverages,
            var_name=var_name,
            params=params)
        try:
            self.variant_covgs[allele].append(variant_probe_coverage)
        except KeyError:
            self.variant_covgs[allele] = [variant_probe_coverage]
 def test_mixed_vars2(self):
     reference_coverage = ProbeCoverage(min_depth=11,
                                        percent_coverage=100,
                                        median_depth=42)
     alternate_coverages = [
         ProbeCoverage(min_depth=94, percent_coverage=100, median_depth=102)
     ]
     v1 = VariantProbeCoverage(var_name="A123T",
                               reference_coverage=reference_coverage,
                               alternate_coverages=alternate_coverages)
     call = self.vt.type(v1)
     assert call['genotype'] == [0, 1]
    def test_2(self):
        reference_coverage = ProbeCoverage(min_depth=131,
                                           percent_coverage=95.2381,
                                           median_depth=155)
        alt1 = ProbeCoverage(min_depth=1, percent_coverage=100, median_depth=1)
        alternate_coverages = [alt1]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        call = self.vt_no_contaim.type(v1)
        assert call['genotype'] == [0, 0]
        assert call["info"]["filter"] != "PASS"
 def test_wt_vars(self):
     reference_coverage = ProbeCoverage(min_depth=100,
                                        percent_coverage=100,
                                        median_depth=100)
     alternate_coverages = [
         ProbeCoverage(min_depth=100, percent_coverage=3, median_depth=100)
     ]
     v1 = VariantProbeCoverage(var_name="A123T",
                               reference_coverage=reference_coverage,
                               alternate_coverages=alternate_coverages)
     call = self.vt.type([v1])
     assert call['genotype'] == [0, 0]
     assert call["info"].get('expected_depths') == [100]
 def test_alt_vars(self):
     reference_coverage = ProbeCoverage(min_depth=100,
                                        percent_coverage=3,
                                        median_depth=100)
     alternate_coverages = [
         ProbeCoverage(min_depth=100,
                       percent_coverage=100,
                       median_depth=100)
     ]
     v1 = VariantProbeCoverage(var_name="A123T",
                               reference_coverage=reference_coverage,
                               alternate_coverages=alternate_coverages)
     call = self.vt.type([v1])
     assert call['genotype'] == [1, 1]
    def test_3(self):
        reference_coverage = ProbeCoverage(min_depth=2,
                                           percent_coverage=59.52,
                                           median_depth=2)
        alt1 = ProbeCoverage(min_depth=1,
                             percent_coverage=83.33,
                             median_depth=1)
        alternate_coverages = [alt1]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        call = self.vt2_no_contaim.type(v1)
        assert call['genotype'] == [1, 1]
        assert call["info"]["filter"] != "PASS"
    def test_4(self):
        vt = VariantTyper(expected_depths=[6],
                          contamination_depths=[],
                          confidence_threshold=3)
        reference_coverage = ProbeCoverage(min_depth=1,
                                           percent_coverage=100,
                                           median_depth=2)
        alt1 = ProbeCoverage(min_depth=1, percent_coverage=100, median_depth=1)
        alternate_coverages = [alt1]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        call = vt.type(v1)
        assert call['genotype'] == [0, 1]
        assert call["info"]["filter"] == "LOW_GT_CONF"
    def test_genotyping_gene_11(self):
        pt_no_contaim = PresenceTyper(expected_depths=[20])
        pt_contaim = PresenceTyper(
            expected_depths=[20],
            contamination_depths=[10])

        pc = ProbeCoverage(min_depth=10,
                           percent_coverage=100,
                           median_depth=10)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = pt_no_contaim.type(s)
        assert call.genotype == [1, 1]

        call = pt_contaim.type(s)
        assert call.genotype == [0, 0]

        pc = ProbeCoverage(min_depth=10,
                           percent_coverage=100,
                           median_depth=30)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = pt_no_contaim.type(s)
        assert call.genotype == [1, 1]

        call = pt_contaim.type(s)
        assert call.genotype == [1, 1]

        pc = ProbeCoverage(min_depth=10,
                           percent_coverage=100,
                           median_depth=20)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = pt_no_contaim.type(s)
        assert call.genotype == [1, 1]

        call = pt_contaim.type(s)
        assert call.genotype == [1, 1]
 def test_base_case_no_coverage(self):
     pc = ProbeCoverage(min_depth=0,
                        percent_coverage=0,
                        median_depth=0)
     s1 = SequenceProbeCoverage(name="A123T",
                                probe_coverage=pc
                                )
     call = self.pt.type(s1)
     assert call.genotype == [0, 0]
    def test_simple_case(self):
        reference_coverage = ProbeCoverage(min_depth=100,
                                           percent_coverage=70,
                                           median_depth=80)
        alt1 = ProbeCoverage(min_depth=100,
                             percent_coverage=70,
                             median_depth=20)
        alt2 = ProbeCoverage(min_depth=100,
                             percent_coverage=100,
                             median_depth=80)
        alternate_coverages = [alt1, alt2]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)
        assert v1._choose_best_alternate_coverage() == alt2

        call = self.vt_no_contaim.type(v1)
        assert call['genotype'] == [1, 1]
    def test_resistotype_gene_at_high_CN(self):

        pc = ProbeCoverage(min_depth=100,
                           percent_coverage=100,
                           median_depth=1000)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = self.pt.type(s)
        assert call.genotype == [1, 1]
    def test_genotyping_gene_01(self):

        pc = ProbeCoverage(min_depth=100,
                           percent_coverage=82,
                           median_depth=2)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = self.pt.type(s)
        assert call.genotype == [0, 1]
    def test_simple_case(self):
        reference_coverage = ProbeCoverage(min_depth=100,
                                           percent_coverage=100,
                                           median_depth=80)
        alt1 = ProbeCoverage(min_depth=100,
                             percent_coverage=50,
                             median_depth=20)
        alt2 = ProbeCoverage(min_depth=100,
                             percent_coverage=40,
                             median_depth=80)
        alternate_coverages = [alt1, alt2]
        v1 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        reference_coverage = ProbeCoverage(min_depth=100,
                                           percent_coverage=80,
                                           median_depth=80)
        alt1 = ProbeCoverage(min_depth=100,
                             percent_coverage=50,
                             median_depth=20)
        alt2 = ProbeCoverage(min_depth=100,
                             percent_coverage=100,
                             median_depth=80)

        alternate_coverages = [alt1, alt2]

        v2 = VariantProbeCoverage(var_name="A123T",
                                  reference_coverage=reference_coverage,
                                  alternate_coverages=alternate_coverages)

        call = self.vt_no_contaim.type([v1, v2])
        assert call['genotype'] == [1, 1]
Example #15
0
    def _parse_seq_panel(self, row):
        allele, median_depth, min_depth, percent_coverage, k_count = self._parse_summary_covgs_row(
            row)
        probe_coverage = ProbeCoverage(percent_coverage=percent_coverage,
                                       median_depth=median_depth,
                                       min_depth=min_depth,
                                       k_count=k_count)

        allele_name = allele.split('?')[0]
        params = get_params(allele)
        panel_type = params.get("panel_type", "presence")
        name = params.get('name')
        version = params.get('version', '1')
        if panel_type in ["variant", "presence"]:
            sequence_probe_coverage = SequenceProbeCoverage(
                name=name,
                probe_coverage=probe_coverage,
                version=version,
                length=params.get("length"))
            try:
                self.covgs[panel_type][name][version] = sequence_probe_coverage
            except KeyError:
                self.covgs[panel_type][name] = {}
                self.covgs[panel_type][name][version] = sequence_probe_coverage

        else:
            # Species panels are treated differently
            l = int(params.get("length", -1))
            try:
                self.covgs[panel_type][name]["total_bases"] += l
                if percent_coverage > 75 and median_depth > 0:
                    self.covgs[panel_type][name]["percent_coverage"].append(
                        percent_coverage)
                    self.covgs[panel_type][name]["length"].append(l)
                    self.covgs[panel_type][name]["median"].append(median_depth)
            except KeyError:
                if panel_type not in self.covgs:
                    self.covgs[panel_type] = {}
                self.covgs[panel_type][name] = {}
                self.covgs[panel_type][name]["total_bases"] = l
                if percent_coverage > 75 and median_depth > 0:
                    self.covgs[panel_type][name]["percent_coverage"] = [
                        percent_coverage
                    ]
                    self.covgs[panel_type][name]["length"] = [l]
                    self.covgs[panel_type][name]["median"] = [median_depth]
                else:
                    self.covgs[panel_type][name]["percent_coverage"] = []
                    self.covgs[panel_type][name]["length"] = []
                    self.covgs[panel_type][name]["median"] = []
    def test_low_coverage(self):

        pc = ProbeCoverage(min_depth=100,
                           percent_coverage=16,
                           median_depth=16)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = self.pt_10.type(s)
        assert call.genotype == [0, 0]

        pc = ProbeCoverage(min_depth=100,
                           percent_coverage=80,
                           median_depth=16)
        s = SequenceProbeCoverage(name="A123T",
                                  probe_coverage=pc,
                                  percent_coverage_threshold=80

                                  )
        call = self.pt_10.type(s)
        assert call.genotype == [1, 1]