2

Pythonを介してsixpackというEMBOSSプログラム(コマンドライン経由で実行)を呼び出すのに問題があります。

私はWindows7、Pythonバージョン3.23、Biopythonバージョン1.59、EMBOSSバージョン6.4.0.4を介してPythonを実行しています。Sixpackは、6つのリーディングフレームすべてのDNA配列を翻訳するために使用され、出力として2つのファイルを作成します。ORFを識別する配列ファイル、およびタンパク質配列を含むファイル。

コマンドラインから正常に呼び出すことができる必須の引数が3つあります:(-sequence [input file]、、-outseq [output sequence file]-outfile [protein sequence file]。私はos.systemの代わりにサブプロセスモジュールを使用してきました。これは、より強力で用途が広いことを読んだためです。

以下は私のPythonコードです。これはエラーなしで実行されますが、目的の出力ファイルを生成しません。

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)
4

1 に答える 1

2

答えが見つかりました..サブプロセスを呼び出すために間違った構文を使用していました。これは正しい構文です:

subprocess.call (['C:\memboss\sixpack.exe', '-sequence', infile, '-outseq', outdir + ident + '.sixpack', '-outfile', outdir + ident + '.format'])
于 2012-07-11T18:59:19.750 に答える