我正在检查来自here的代码。
运行代码时,我得到:
[root@mycomp]$ python Needleman-Wunsch.py
Traceback (most recent call last):
File "Needleman-Wunsch.py", line 92, in <module>
(alignedSeq1, alignedSeq2) = computeFMatrix(seq1, seq2, -6)
File "Needleman-Wunsch.py", line 34, in computeFMatrix
similarityMatrixMap = readBLOSUM50("BLOSUM50.txt")
File "Needleman-Wunsch.py", line 16, in readBLOSUM50
similarityMatrix = np.loadtxt(fileName, delimiter='\t')
File "/usr/local/lib/python2.7/site-packages/numpy/lib/npyio.py", line 827, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: A R N D C Q E G H I L K M F P S T W Y V
重现这一点的最小例子是:
import numpy
numpy.loadtxt("data.txt", delimiter='\t')
data.txt
:
A R N D C Q
A 5 -2 -1 -2 -1 -1
R -2 7 -1 -2 -4 1
N -1 -1 7 2 -2 0
您还可以拥有the original BLOSUM50.txt
file,完整代码来自the link above。
删除BLOSUM50.txt
的第一行会产生同样的错误。
答案 0 :(得分:6)
您只需将loadtxt
替换为
numpy.genfromtxt("data.txt", delimiter='\t', skip_header=True)[:, 1:]
这会跳过标题,将列名转换为nan
,然后将其删除。
答案 1 :(得分:1)
问题是您正在从文件中读取非数字值。 您需要指定要使用的列和要跳过的行:
similarityMatrix = np.loadtxt('blosum50.txt', skiprows=1, delimiter='\t', usecols=range(1,num_cols+1))
这对我以前发布的代码起作用了。 :d