나는 fasta 형식의 DNA 서열 데이터로 작업 중이며 생물체의 이름과 서열을 포함하는 2 개의 목록을 작성해야합니다. 다음 게시물 Add multiple sequences from a FASTA file to a list in python에 걸쳐 왔지만 솔루션이 제대로 작동하지 않습니다 (아직 댓글을 달 수 없습니다).여러 개의 fasta 파일에서 생물체 및 DNA 서열 데이터 목록 만들기
fasta 파일은 다음 형식을 사용하는 txt 파일입니다. 유기체 이름을 표시하는 ">"로 시작하는 한 줄. 그 다음에 시퀀스 데이터가있는 여러 줄이옵니다.
> Organism1
ACTGATGACTGATCGTACGT
ATCGATCGTAGCTACGATCG
ATCATGCTATTGTG
> Organism2
TACTGTAGCTAGTCGTAGCT
ATGACGATCGTACGTCGTAC
TAGCTGACTG
...
: FASTA시 파일은 여러 생물 각각의 블록 구성을 포함 할 수 있습니다 위 링크의 도움으로 작성한 코드는 다음과 같습니다.
data_file = open("multitest.fas","r")
data_tmp = []
a=[] #list for organisms name
b=[] #list for sequence data
for line in data_file:
line = line.rstrip()
line = line.strip("\n").strip("\r")
for i in line:
if line[0] == ">":
a.append(line[1:])
if data_tmp:
b.append("".join(data_tmp))
data_tmp=[]
break
else:
line=line.upper()
if all([k==k.upper() for k in line]):
data_tmp.append(line)
print a
print b
마지막 생물의 서열이 목록 b에 추가되지 않는 것을 제외하고 코드는 정상적으로 작동합니다. 이것은 ">"가 발생할 때만 순서 데이터가 추가되기 때문에 명백합니다. 마지막 순서가 추가되었는지 어떻게 확인할 수 있습니까? 그리고 왜 다른 사람도 위의 링크 코드에서 동일한 문제를 겪지 않았습니까? 어떤 조언을 주셔서 감사합니다!
if data_tmp : b.append ("". join (data_tmp))'* 외부 * 'for' 루프를 반복해야합니다. – jonrsharpe
@jonrsharpe 그건, 사실, 논리이고 그것은 지금 작동합니다. 감사! – mahada