我在python中有一个任务,我必须检查一对DNA序列。 (在这种情况下3对)
对1(GAAGGTCGAA, CCTCGGGA) 第2对(ATGATGGAC, GTGATAAGGACCC) 第3对(AAATTT, GGGCCC)
检查每一对以查看它们是否具有共同序列。
最长的通用序列
对1:TCG
对2:TGAT GGAC
对3:未找到共同序列
我能够获得子串,我只是难以比较它们,然后在找到常见序列时实际打印。
提前致谢。
我的代码到目前为止,txt文件中有我提到的对
导入字符串 def main():
# open file for reading
in_file = open ("./dna.txt", "r")
# read number of pairs
num_pairs = in_file.readline()
num_pairs = num_pairs.strip()
num_pairs = int(num_pairs)
# read pairs of dna strands
for i in range (num_pairs):
st1 = in_file.readline()
st2 = in_file.readline()
st1 = st1.strip()
st2 = st2.strip()
print(st2, st1)
# order strands by size
if ( len(st1) > len(st2) ):
dna1 = st1
dna2 = st2
else:
dna1 = st2
dna2 = st1
main()的
答案 0 :(得分:1)
一个不完美的答案:
pair1 = ('GAAGGTCGAA', 'CCTCGGGA')
pair2 = ('ATGATGGAC', 'GTGATAAGGACCC')
pair3 = ('AAATTT', 'GGGCCC')
def findSequences(pair):
seq1, seq2 = pair
seqFragments = [seq1[i:i+3] for i in xrange(len(seq1)-2)]
return [seqFragment for seqFragment in seqFragments if seqFragment in seq2]
>>> findSequences(pair1)
['TCG']
>>> findSequences(pair2)
['TGA', 'GAT', 'GGA', 'GAC']
>>> findSequences(pair3)
[]
缺点是它只是在寻找三连一的序列。