逐行处理文件

Kam*_*ron 0 python fasta blast

我正在处理一个大型BLAST文件和一个大型FASTA文件,我需要为一个BLAST块加载几行FASTA(假设它是一行).

我希望在BLAST的第二个循环(行)中,它将继续在最后处理的FASTA行的下一行,但它正在加载所有相同的FASTA行.为什么?我怎样才能加载下一行?是否真的有必要添加一些索引?

with open(fastaname,'r') as fastafile:
  with open(blastfilename,'r') as blastfile:
    for line in blastfile:
      while True:  
        fastaline = fastafile.readline()[:-1]  
            if fastaline[0]=='>':  
                break  
            fastaseq += fastaline
      somefunction(line,fastaseq)
Run Code Online (Sandbox Code Playgroud)

FASTA有典型的格式:

>name_of_seqence\n  
ACGATCATCGTAGCTGCATGACTGCA\n  
GATCGATCTGATCGATGCAGTCAGTA\n
>name_of_seqence\n  
GCACGCGACCACGATCATTGACTGCA\n  
CAAAAGATCTGATCGATGCAGTCAGT\n
CAGTCGATGCTAGTCGATGCTCGATA\n
etc.
Run Code Online (Sandbox Code Playgroud)

我需要每个序列用于下一个BLAST序列的每一行.

Pet*_*per 5

fastaseq从blast文件中完成一行后,我没有看到任何可以清除你附加的行的东西.试试这个:

with open(fastaname,'r') as fastafile:
    with open(blastfilename,'r') as blastfile:
        for line in blastfile:
            fastaseq = '' # or whatever data type this is 
            while True:  
                fastaline = fastafile.readline()[:-1]  
                if fastaline[0]=='>':  
                    break  
            fastaseq += fastaline
        somefunction(line,fastaseq)
Run Code Online (Sandbox Code Playgroud)

因为它是你的第一个爆炸线将获得第一组fasta线,第二个爆炸线将获得第一和第二组等等.