2 Stimmen

Probleme beim Aufruf des EMBOSS-Programms aus Python

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)

2voto

user1426421 Punkte 81

Ich habe die Antwort gefunden Ich habe die falsche Syntax für den Aufruf von subprocess verwendet. Dies ist die richtige Syntax:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X