Exemplo n.º 1
0
 def test_dinucleotides_repeats(self):
     """
     Tests if the function detects di-nucleotides repeats
     """
     target = get_data_from_csv(data_1)[0]
     target.get_target_sequence(target.range)
     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)
     self.assertFalse(left_primer.dinucleotides_repeats())
     left_primer.sequence = "GTTCAGTT" + "GCGCGCGCGC" + "CACAGTGCAGCG"
     self.assertTrue(left_primer.dinucleotides_repeats())
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