Exemplo n.º 1
0
    def test_check_snp_in_primer(self):
        """
        Tests snp and no snp in primer sequence
        """
        target = get_data_from_csv(data_1)[0]
        target.get_target_sequence(target.range)
        snp = target.get_snp()
        primers_pair = target.design_primers(target.range, target.sequence)
        left_primer = Primer(primers_pair["PRIMER_LEFT_0_SEQUENCE"], "left",
                             primers_pair["PRIMER_LEFT_0"][0], target.range,
                             target)
        right_primer = Primer(primers_pair["PRIMER_RIGHT_0_SEQUENCE"], "right",
                              primers_pair["PRIMER_RIGHT_0"][0], target.range,
                              target)

        self.assertTrue(left_primer.check_snp_in_primer(snp) == 0)
        self.assertTrue(right_primer.check_snp_in_primer(snp) == 0)
Exemplo n.º 2
0
    def compute_optimal_primers_pairs(self):
        """
        Computes a list of primers pairs containing primersPair instance
        Use this function to get a list of primers pairs respecting all constraints
        with no post-treatment (no BLAST, no sort,...)

        :return: a list of primersPair instance.
        """
        all_primers_pairs = []
        result = self.compute_optimal_raw_primers_pairs()
        all_raw_primers_pairs = result[0]
        ranges_left = result[1]
        SNP = self.get_snp()
        for i in range(len(all_raw_primers_pairs)):

            left_primer = Primer(
                all_raw_primers_pairs[i]["PRIMER_LEFT_0_SEQUENCE"], "left",
                all_raw_primers_pairs[i]["PRIMER_LEFT_0"][0], ranges_left[i],
                self, all_raw_primers_pairs[i]["PRIMER_LEFT_0_PENALTY"])

            right_primer = Primer(
                all_raw_primers_pairs[i]["PRIMER_RIGHT_0_SEQUENCE"], "right",
                all_raw_primers_pairs[i]["PRIMER_RIGHT_0"][0], ranges_left[i],
                self, all_raw_primers_pairs[i]["PRIMER_RIGHT_0_PENALTY"])

            if not left_primer.dinucleotides_repeats(
            ) and not right_primer.dinucleotides_repeats():
                if math.fabs(right_primer.TFGP - left_primer.TFGP) <= 90:
                    if right_primer.check_snp_in_primer(SNP) == 0 and \
                            left_primer.check_snp_in_primer(SNP) == 0:

                        primers_pair = PrimersPair(left_primer, right_primer)
                        if primers_pair not in all_primers_pairs:
                            all_primers_pairs.append(primers_pair)

        self.all_primers_pairs = all_primers_pairs
        return all_primers_pairs