Muskelausrichtung in Python

Ich habe ein Problem mit dem Drucken meiner Ausgabe von Muskelausrichtung in Python. Mein Code ist:

from Bio.Align.Applications import MuscleCommandline from StringIO import StringIO from Bio import AlignIO def align_v1 (Fasta): muscle_cline = MuscleCommandline(input="hiv_protease_sequences_w_wt.fasta") stdout, stderr = muscle_cline() MultipleSeqAlignment = AlignIO.read(StringIO(stdout), "fasta") print MultipleSeqAlignment 

Irgendeine Hilfe?

One Solution collect form web for “Muskelausrichtung in Python”

Es wäre schön zu wissen, welche Fehler Sie erhalten haben, aber das folgende sollte Ihr Problem lösen:

 from Bio.Align.Applications import MuscleCommandline from StringIO import StringIO from Bio import AlignIO muscle_exe = r"C:\muscle3.8.31_i86win32.exe" #specify the location of your muscle exe file input_sequences = "hiv_protease_sequences_w_wt.fasta" output_alignment = "output_alignment.fasta" def align_v1 (Fasta): muscle_cline = MuscleCommandline(muscle_exe, input=Fasta, out=output_alignment) stdout, stderr = muscle_cline() MultipleSeqAlignment = AlignIO.read(output_alignment, "fasta") print MultipleSeqAlignment align_v1(input_sequences) 

In meinem Fall erhielt ich einen ValueError:

 >>> AlignIO.read(StringIO(stdout), "fasta") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\WinPython-64bit-3.3.2.3\python-3.3.2.amd64\lib\site-packages\Bio\AlignIO\__init__.py", line 427, in read raise ValueError("No records found in handle") ValueError: No records found in handle 

Dies könnte durch das Speichern der Ausgabe und Wiedereröffnung mit AlignIO.read vermieden werden.

Ich habe auch einen FileNotFoundError erhalten, der durch die Angabe der Position der Muskel-Exe-Datei vermieden werden könnte. z.B:

 muscle_exe = r"C:\muscle3.8.31_i86win32.exe" 

Die Anleitung dazu finden Sie in Hilfe (MuscleCommandline), aber dies ist derzeit nicht auf der Biopython Tutorialseite.

Schließlich gehe ich davon aus, dass du den Befehl mit verschiedenen Eingabesequenzen ausführen möchtest, also habe ich die Funktion auf das Format "function_name (input_file)" umgestellt.

Ich habe Python verwendet 3.3. Hoffentlich ist der Code oben für python 2.x wie in deinem ursprünglichen Post. Für python 3.x ändern Sie "von StringIO importieren StringIO" auf "from io import StringIO" und natürlich "print MultipleSeqAlignment" auf "print (MultipleSeqAlignment)".

Python ist die beste Programmiersprache der Welt.