首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python调用EMBOSS程序时出现问题

从python调用EMBOSS程序时出现问题
EN

Stack Overflow用户
提问于 2012-07-09 23:47:26
回答 1查看 683关注 0票数 2

我在通过Python调用一个名为sixpack的EMBOSS程序(通过命令行运行)时遇到问题。

我通过Windows7运行Python,Python版本3.23,Biopython版本1.59,EMBOSS版本6.4.0.4。Sixpack用于翻译所有六个阅读框架中的DNA序列,并创建两个文件作为输出:一个识别ORF的序列文件和一个包含蛋白质序列的文件。

我可以从命令行成功调用三个必需的参数:(-sequence [input file]-outseq [output sequence file]-outfile [protein sequence file])。我一直在使用子进程模块来代替os.system,因为我读到它更强大、更通用。

以下是我的python代码,它运行时没有错误,但没有生成所需的输出文件。

代码语言:javascript
复制
from Bio import SeqIO
import re
import os
import subprocess

infile = input('Full path to EXISTING .fasta file would you like to open: ')
outdir = input('NEW Directory to write outfiles to: ')
os.mkdir(outdir)
for record in SeqIO.parse(infile, "fasta"):

    print("Translating (6-Frame): " + record.id)

    ident=re.sub("\|", "-", record.id)

    print (infile)
    print ("Old record ID: " + record.id)
    print ("New record ID: " + ident)

    subprocess.call (['C:\memboss\sixpack.exe', '-sequence ' + infile, '-outseq ' + outdir + ident + '.sixpack', '-outfile ' + outdir + ident + '.format'])

    print ("Translation of: " + infile + "\nWritten to: " + outdir + ident)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-12 02:59:20

找到答案了..我使用了错误的语法来调用子进程。这是正确的语法:

代码语言:javascript
复制
subprocess.call (['C:\memboss\sixpack.exe', '-sequence', infile, '-outseq', outdir + ident + '.sixpack', '-outfile', outdir + ident + '.format'])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11398603

复制
相关文章

相似问题

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