如何比较python中的子串? (DNA测序)

时间:2014-10-30 02:33:39

标签: python

我在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()的

1 个答案:

答案 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)
[]

缺点是它只是在寻找三连一的序列。