我想找到两个字符串之间的匹配数,以便可以计算相似性百分比。我不想下载任何东西就这样做,因为这给我带来了麻烦。我尝试下载biopython zip文件,但无法弄清楚如何进行设置。我希望我可以将其转变为易于用于不同序列的函数。不需要处理任何内容,例如每个字符串50个字符。
我要比较的序列是:
virX = 'TTTTCTTATTGT'
virZ = 'GTGGCAGACGGT'
virY = 'CTTCCTCACCGA'
virU = 'ATTACCAAAAGA'
我正在寻找的输出是: 1)每个序列之间的相似度百分比 2)两个相似度最高的序列
这是可行的,但要调整为其他顺序很费时间:
dnaA = 'ATATGCC'
dnaB = 'AAAGCGC'
count = 0
if dnaA[0] == dnaB[0]:
count +=1
if dnaA[1] == dnaB[1]:
count +=1
if dnaA[2] == dnaB[2]:
count +=1
if dnaA[3] == dnaB[3]:
count +=1
if dnaA[4] == dnaB[4]:
count +=1
if dnaA[5] == dnaB[5]:
count +=1
if dnaA[6] == dnaB[6]:
count +=1
print(count, (count / len(dnaA) * 100), '%')
我尝试了一下,但是没用:
count = 0
for i in dnaA:
if i == dnaB[i]:
count += 1
我尝试过:
from itertools import izip
def hamming_distance(str1, str2):
assert len(str1) == len(str2)
return sum(chr1 != chr2 for chr1, chr2 in izip(str1, str2))
print(hamming_distance(dnaA, dnaB))
返回错误:
“跟踪(最近一次通话最近):文件 “ C:/Users/mac03/AppData/Local/Programs/Python/Python37/Wk5FriLab.py”, 第79行,在 从itertools导入izip ImportError:无法从“ itertools”(未知位置)导入名称“ izip””
我试图将izip
更改为zip
,但这没有用。我也在jupyter笔记本中尝试了此功能,并收到错误消息:
“ ImportError跟踪(最近的调用 最后) 5 6 ---->从itertools 7导入zip 8 def hamming_distance(str1,str2): 9断言len(str1)== len(str2)
ImportError:无法从“ itertools”导入名称“ zip”(未知) 位置)”
我尝试了这些输入并收到了错误:
python -m ensurepip
“文件”“,第6行 python -m surepip我是^ SyntaxError:语法无效”
pip install pip --upgrade
“文件”“,第7行 pip安装pip --upgrade ^ SyntaxError:语法无效”
pip install biopython
“文件”“,第7行 pip安装biopython ^ SyntaxError:语法无效”
答案 0 :(得分:0)
尝试使用此方法计算“计数”(我假设字符串长度相等):
dnaA = 'ATATGCC'
dnaB = 'AAAGCGC'
count = 0
indexB = 0
for i in dnaA:
if i == dnaB[indexB]:
count +=1
indexB +=1
答案 1 :(得分:0)
import
结果:dnaA = 'ATATGCC'
dnaB = 'AAAGCGC'
matches = [
nucl_A == nucl_B
for nucl_A, nucl_B in zip(dnaA, dnaB)
]
similarity = sum(matches)/len(matches)
similarity
功能:
0.42857142857142855