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)
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