def find_primers(target_dna, user_parameters, search_range): primers = [] if target_dna.len < 500: ideal_len = (16, 18) elif target_dna.len > 2500: ideal_len = (20, 24) else: ideal_len = (17, 22) search_start = max(0, target_dna.start-search_range) for i in range(search_start, target_dna.start+1): for j in range(ideal_len[0], ideal_len[1]+1): primer = Primer(target_dna, i, i+j) parameters = primer.parameters() if user_parameters[0][0] <= parameters[0] <= user_parameters[0][1] and\ user_parameters[1][0] <= parameters[1] <= user_parameters[1][1] and\ not parameters[3] and not parameters[4] and parameters[5]: if user_parameters[2] == None: primers.append(primer) else: if user_parameters[2] == parameters[2]: primers.append(primer) return primers