2017-04-08 32 views
0

以下のスクリプトを実行すると、出力は1つの文字に分割されます。どんな考え? 2番目の引数が1つの文字に分割されるようです。biopythonを使用して単語リストを整列する方法pairwise2

私は単語シーケンスを整列しようとしています。

私は多くの言葉を持っているので、それらを文字にのみマップすることはできません。

from Bio.Seq import Seq 
from Bio.pairwise2 import format_alignment 


fruits = ["orange","pear", "apple","pear","orange"] 
fruits1 = ["pear","apple"] 


from Bio import pairwise2 
alignments = pairwise2.align.localms(fruits,fruits1,2,-1,-0.5,-0.1, gap_char=["-"]) 

for a in alignments: 
    print(format_alignment(*a)) 

出力:あなたはstringまたはSeqオブジェクトを期待localmsにリストを渡してい

['orange', 'r', 'a', 'e', 'p', 'e', 'l', 'p', 'p', 'a', 'pear', 'orange'] 
||||||||| 
['-', 'r', 'a', 'e', 'p', 'e', 'l', 'p', 'p', 'a', '-', '-'] 
    Score=4 
+0

申し訳ありませんが、原則的にはあなたの例では、動作するはずです。 '' pairwise2'''はリストを入力として受け入れます。明らかに、私は '' pairwise2'''の最後の更新中に何かを壊しました。 Biopython 1.67にアクセスできない場合は、そこにお試しいただけますか? – Markus

答えて

0

、またgap_charが文字列でないリストでなければなりません。

は、次のコードを試してみてください。

import Bio.pairwise2 as pairwise2 
fruits = ["orange", "pear", "apple", "pear", "orange"] 
fruits1 = ["pear", "apple"] 
for f0 in fruits: 
    for f1 in fruits1: 
     print('Aligning {0} and {1}'.format(f0, f1)) 
     alignments = pairwise2.align.localms(f0, f1, 2, -1, -0.5, -0.1, gap_char="-") 
     for a in alignments: 
      print(pairwise2.format_alignment(*a)) 

出力

Aligning orange and pear 
orange 
    | 
pear-- 
    Score=2 

Aligning orange and apple 
orange 
    | 
-apple 
    Score=2 

orange- 
    | 
--apple 
    Score=2 

Aligning pear and pear 
pear 
|||| 
pear 
    Score=8 

[...]

+0

いいえ、 '' '' pairwise2'''もリストを受け入れるべきです。その理由は、複数の文字を含むシンボルを含むシーケンスを使用できるからです。これは、SOの質問のように塩基やアミノ酸を変更した場合に役立ちます(http://stackoverflow.com/questions/36142371/nucleotides-separator-in-the-pairwise-sequence-alignment-bio-python/36158674 #36158674)。残念ながら、この機能はBiopython 1.68と1.69では壊れています。 – Markus

+0

@マークス:説明をありがとう!あなたが言及しているBioPythonのバージョンを使用していたようです。 –

関連する問題