首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python错误: OSError:打开文件`all_fprau.fasta`时出错。Fasta文件太大了吗?

Python错误: OSError:打开文件`all_fprau.fasta`时出错。Fasta文件太大了吗?
EN

Stack Overflow用户
提问于 2018-06-27 17:48:06
回答 1查看 228关注 0票数 1

我有一个脚本,通过csv文件和fasta文件搜索,在这两个文件中的任何ID都将用于从fasta文件中提取fasta序列。它看起来是这样的:

代码语言:javascript
复制
import os
import shlex
import subprocess
import argparse
import glob
import pysam

from pysam import FastaFile

#setup options for this program
parser = argparse.ArgumentParser()
group = parser.add_argument_group('Options for annotation.py')
group.add_argument(
    '-f', '--fasta', help='FASTA file (RAST). all_fprau.fasta', required=True)
group.add_argument(
    '-c', '--csv', help='CSV file (parsed orthomcl groups). parsed_groups.csv',
required=True)
args = parser.parse_args()


fasta = FastaFile(args.fasta)

with open(args.csv) as infile:
    infile.readline()  ## skip header

    for index, line in enumerate(infile):
        strain, matches = line.strip().split("\t")
        if not len(matches):
            print('Warning: Skipping strain {}. No     matches'.format(strain))
        continue
    matches = set(matches.split(','))  # remove duplicates

    key = '{}.faa'.format(strain)
    with open(key, 'w') as out_file:
        for match in matches:
            name = 'fig|{}'.format(match)
            try:
                sequence = fasta[name]
            except KeyError:
                print('Sequence absent in FASTA file {0}: {1}'.format(args.fasta, name))
                continue
            out_file.write(">{0}\n{1}\n".format(name, sequence))

然而,我在运行这个脚本时遇到了问题。我得到了这个错误:

代码语言:javascript
复制
File "pysam/libcfaidx.pyx", line 123, in pysam.libcfaidx.FastaFile.__cinit__
File "pysam/libcfaidx.pyx", line 183, in pysam.libcfaidx.FastaFile._open
OSError: error when opening file `all_fprau.fasta`

fasta文件all_fprau.fasta包含大量序列,我认为这可能是问题所在?当我减少文件的大小,脚本工作,但是我需要所有的序列是可用的,在这个管道中的下一步工作。我试着使用:

代码语言:javascript
复制
fasta = glob.glob("/home/brian/my_orthomcl_dir/annotations/*.fasta") 

代替

代码语言:javascript
复制
fasta = FastaFile(args.fasta)

在尝试逐个搜索fasta文件时,我得到了错误:TypeError: list indices must be integers or slices, not str,与上面脚本中的第38行相关:

代码语言:javascript
复制
sequence = fasta[name]

如有任何帮助或建议,我们将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2018-06-27 22:43:14

尝试制作自己的解决方案来格式化和提取生物信息数据,以应对挑战,这很好,但通常以前就已经做过了,所以可以省去麻烦。您可以使用Jim Kent的faSomeRecords (找到here)或一些令人困惑的一行代码,如:cut -c 2- EXAMPLE.TXT | xargs -n 1 samtools faidx EXAMPLE.FA,但它仍然需要samtools。另外,如果您还不知道还有一种SO for bioinformatics,但也有SO bioinformatics

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51059608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档