我正在尝试读取FASTA文件,然后找到特定的motif(string)并打印出它发生的顺序和次数。 FASTA file只是一系列以标题行开头的序列(字符串),并且标题或新序列开头的签名为“>”。 header 后面紧跟着一个新行,是字母序列。我还没有完成代码,但到目前为止我有这个,它给了我这个错误:



我不确定这是怎么回事。

import re

header=""
counts=0
newline=""

f1=open('fpprotein_fasta(2).txt','r')
f2=open('motifs.xls','w')
for line in f1:
    if line.startswith('>'):
        header=line
        #print header
        nextline=line.next()
        for i in nextline:
            motif="ML[A-Z][A-Z][IV]R"
            if re.findall(motif,nextline):
                counts+=1
                #print (header+'\t'+counts+'\t'+motif+'\n')
        fout.write(header+'\t'+counts+'\t'+motif+'\n')

f1.close()
f2.close()

最佳答案

该错误很可能来自以下行:

nextline=line.next()
line是您已经阅读的字符串,上面没有next()方法。

问题的一部分是,您试图混合使用两种不同的读取文件的方式-您正在使用for line in f1<handle>.next()在各行之间进行迭代。

另外,如果您正在使用FASTA文件,我建议使用Biopython:它使处理序列集合变得更加容易。特别是,主题上的Chapter 14将特别引起您的兴趣。这可能需要您更多地了解Python才能实现所需的功能,但是如果您要做的生物信息学要比您的示例所显示的要多得多,那么绝对值得花费时间。

关于python - 如何在python中读取fasta文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20580657/

10-12 22:17