-4

Python でのマッスル アラインメントからの出力の印刷に問題があります。私のコードは次のとおりです。

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 

何か助けはありますか?

4

1 に答える 1

0

受け取ったエラーを知っておくと便利ですが、次の方法で問題を解決できます。

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)

私の場合、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

これは、出力を保存し、AlignIO.read で再度開くことで回避できます。

また、マッスル exe ファイルの場所を指定することで回避できる FileNotFoundError も受け取りました。例えば:

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

この手順は help(MuscleCommandline) に示されていますが、これは現在 Biopython チュートリアル ページにはありません。

最後に、さまざまな入力シーケンスを使用してコマンドを実行することを想定しているため、関数を「function_name(input_file)」の形式に変更しました。</p>

私はpython 3.3を使用しました。うまくいけば、上記のコードは、元の投稿のように python 2.x 用です。Python 3.x の場合、「from StringIO import StringIO」を「from io import StringIO」に変更し、もちろん「print MultipleSeqAlignment」を「print(MultipleSeqAlignment)」に変更します。

于 2013-11-08T18:00:43.057 に答える