正在处理文件linebylin

2024-10-01 15:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我希望在BLAST的第二个循环(line)中,它将从最后一个处理的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)

FASTA具有典型的格式:

^{pr2}$

我需要下一个爆炸序列的每一行的每一个序列。在


Tags: 文件foraswithline序列openfasta
2条回答

一个替代自己解析FASTA文件的方法是使用预先存在的解析器,比如Biopython的^{}。在

您还可以使用zip()并排迭代两个iterable。在

使用Biopython,您的代码如下所示:

from Bio import SeqIO

with open(fastaname, 'r') as fastafile, open(blastname, 'r') as blastfile:
    for record, line in zip(SeqIO.parse(fastafile, 'fasta'), blastfile):
        somefunction(line, record.seq)

在完成blast文件中的一行之后,我没有看到任何东西可以清除添加到fastaseq的行。试试这个:

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)

因为这是你的第一个爆破线会得到第一组fasta线,第二个爆破线会得到第一组和第二组等等

相关问题 更多 >

    热门问题