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