numpy.loadtxt"无法将字符串转换为浮点数"

时间:2014-10-06 08:39:20

标签: python numpy alignment sequence

我正在检查来自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的第一行会产生同样的错误。

2 个答案:

答案 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