使用biopython从fasta文件中检索序列时出现IOError

时间:2015-12-01 07:44:26

标签: biopython fasta ioerror

我有一个包含PapillomaViruses序列的fasta文件(整个基因组,部分CDS,......),我正在使用biopython从这些文件中检索整个基因组(大约7kb),所以这是我的代码:

rec_dict = SeqIO.index("hpv_id_name_all.fasta","fasta")

for k in rec_dict.keys():

    c=c+1

    if len(rec_dict[k].seq)>7000:

        handle=open(rec_dict[k].description+"_"+str(len(rec_dict[k].seq))+".fasta","w")

        handle.write(">"+rec_dict[k].description+"\n"+str(rec_dict[k].seq)+"\n")

        handle.close()

我正在使用字典来避免在内存中加载所有内容。变量“c”用于知道在弹出THIS错误之前进行了多少次迭代:

Traceback (most recent call last):

File "<stdin>", line 4, in <module>

IOError: [Errno 2] No such file or directory: 'EU410347.1|Human papillomavirus FA75/KI88-03_7401.fasta'

当我打印“c”的值时,我得到9013而文件包含10447个序列,这意味着for循环没有经过所有序列(计数在“if”条件之前完成,所以我计算所有迭代次数,而不仅仅是那些符合条件的迭代次数)。我不明白INPUT / OUTPUT错误,它应该创建'EU410347.1 |人乳头瘤病毒FA75 / KI88-03_7401.fasta'文件而不是验证它的存在,不应该吗?

1 个答案:

答案 0 :(得分:0)

您尝试创建的文件 - &#39; EU410347.1 |人乳头瘤病毒FA75 / KI88-03_7401.fasta&#39; - 包含斜杠(&#39; /&#39;),由Python解释为目录&#39; EU410347.1 |人乳头瘤病毒FA75&#39;接着是文件名&#39; KI88-03_7401.fasta&#39;,所以Python抱怨该目录不存在。

您可能希望将斜杠替换为其他内容,例如

handle=open(rec_dict[k].description.replace('/', '_')+"_"+str(len(rec_dict[k].seq))+".fasta","w")