2014-10-06 5 views
2

코드를 검사 중이므로 here입니다. 코드를 실행하면numpy.loadtxt "문자열을 부동으로 변환 할 수 없습니다."

내가 얻을 :

[[email protected]]$ 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 

이 재현 최소한의 예는 다음과 같습니다

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을 가지고 있습니다 :

import numpy 
numpy.loadtxt("data.txt", delimiter='\t') 

data.txt 존재로 전체 코드는 the link above입니다.

BLOSUM50.txt의 첫 번째 줄을 지우면 같은 오류가 발생합니다.

+0

나는 근본적으로 질문을 단순화했다. 내가 틀린 일을했다면, 나에게 소리 지르는 것이 자유 롭다. (최악의 경우 최악의 경우 "되돌리기"버튼이 있습니다.) 이렇게하면 문제가 * 많이 * 간단하게 표현됩니다. 따라서 변경 사항을 그대로 유지하는 것이 가장 좋습니다. – Veedrac

+0

원래 'BLOSUM50' 파일은 어디에서 받았습니까? 그것은 코드가 기대하는 것이 아닙니다. – Veedrac

답변

6

당신이이 헤더를 건너 뜁니다 nan에 열 이름을 변환 loadtxt

numpy.genfromtxt("data.txt", delimiter='\t', skip_header=True)[:, 1:] 

으로 만 교체 한 후 그들을 갈비 할 수 있습니다.

1

문제는 파일에서 숫자가 아닌 값을 읽는 것입니다. 당신이 사용하고자하는 열 및 생략 할 행을 지정해야합니다

이 이전 게시 된 코드와 나를 위해 일한
similarityMatrix = np.loadtxt('blosum50.txt', skiprows=1, delimiter='\t', usecols=range(1,num_cols+1)) 

. : D

+0

주석 주셔서 감사합니다. 그러나 'num_cols'변수는 정의되지 않았습니다. 데이터 파일의 열 수 (20)입니까? 그러나 20으로 변경하면 IndexError가 발생합니다. – Karyo

+0

두 번째 매개 변수가 배타적이므로 21이어야합니다. –

+0

실제로 이전 코드의 경우 대체 된 행은 similarityMatrix = np.loadtxt (fileName, delimiter = '\ t', skiprows = 1, usecols = range (1, len (t) +1))와 같이 나타납니다. –

관련 문제