def _get_melting_temp(query, subject): '''Gets melting temp.''' dna1 = '' dna2 = '' for nucs in zip(query, subject): if nucs[0] == '-': dna1 = dna1 + sequence_utils.get_comp(nucs[1]) else: dna1 = dna1 + nucs[0] if nucs[1] == '-': dna2 = dna2 + sequence_utils.get_comp(nucs[0]) else: dna2 = dna2 + nucs[1] return sequence_utils.get_melting_temp(dna1, dna2, strict=False)
def _unacceptable(seq, rand_rnge, max_melt_temp=20): '''Checks whether seq is acceptable.''' id_seqs = {'For': seq, 'Rev': sequence_utils.get_rev_comp(seq)} results = sequence_utils.do_blast(id_seqs, id_seqs, evalue=10, word_size=4) for result in results: for alignment in result.alignments: for hsp in alignment.hsps: qu_rnge = range(hsp.query_start, hsp.query_end) sb_rnge = range(hsp.sbjct_start, hsp.sbjct_end) if hsp.align_length != len(seq) and \ len(set(rand_rnge).intersection(qu_rnge)) > 0 and \ len(set(rand_rnge).intersection(sb_rnge)) > 0: melt_temp = _get_melting_temp( hsp.query, sequence_utils.get_comp(hsp.sbjct)) if melt_temp > max_melt_temp: print hsp print melt_temp return True return False