两个序列中相同对象的计数

时间:2017-10-07 12:24:53

标签: python dna-sequence

我正在努力学习Python 3,现在我正在努力学习这一项。

我必须编写一个带有两个参数的函数:

1)作为DNA序列的字符串。

2)与参数1(也是DNA序列)长度相同的字符串

该函数必须返回一个float(两个DNA序列中碱基的比例相同)。

所以,我知道我必须写一个会返回这样的函数:

seq_similarity("ATGC","AGTT")

应该返回

0.75

我只走到这一步,现在我甚至在开始之前就被卡住了:

def sequence_similarity(seq1,seq2):
    seq1="AGTC"
    seq2="AGTT"

你能帮助我开始吗?

2 个答案:

答案 0 :(得分:2)

您可以使用sum(x==y for (x,y) in zip(seq1, seq2)) 并为其指定条件:

sum(x==y for (x,y) in zip(seq1, seq2))/len(seq1)

这表示你的两个字符串为3。

然后除以长度:

sum(x==y for (x,y) in zip(seq1, seq2))/float(len(seq1))

如果使用2.x:

,请注意整数
import _ from 'lodash';

答案 1 :(得分:0)

有一个内置的

  from difflib import SequenceMatcher

def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()