Ich habe Probleme, ein EMBOSS-Programm (das über die Kommandozeile läuft) namens sixpack über Python aufzurufen.
Ich verwende Python unter Windows 7, Python Version 3.23, Biopython Version 1.59, EMBOSS Version 6.4.0.4. Sixpack wird verwendet, um eine DNA-Sequenz in allen sechs Leserahmen zu übersetzen, und erzeugt zwei Dateien als Ausgabe: eine Sequenzdatei, die ORFs identifiziert, und eine Datei mit den Proteinsequenzen.
Es gibt drei erforderliche Argumente, die ich erfolgreich über die Befehlszeile aufrufen kann: ( -sequence [input file]
, -outseq [output sequence file]
, -outfile [protein sequence file]
). Ich habe das Modul subprocess anstelle von os.system verwendet, da ich gelesen habe, dass es leistungsfähiger und vielseitiger ist.
Es folgt mein Python-Code, der ohne Fehler läuft, aber nicht die gewünschten Ausgabedateien erzeugt.
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)