2016-11-26 4 views
0

私は、同一性スコアとしてkを、閾値をtとして2つのdna配列のドットプロット行列を作成することに興味があります。私はPythonを学んでいますが、私はデータでうまくいっていますが、私はテーブルやドットプロットと闘っています。単純な単位行列を生成するために上記のコードを作成しました。今私はそれを変更するか、新しいものを作り出す必要があります。Pythonで2つのDNA配列のドットプロットを作成するには

必要な定義については、this paperを参照してください。

+0

。私はアスタリスクが特定の閾値にしか存在しないように何かを変えることができるかどうかを知りたいと思う。 – Ana

+0

私はちょうど追加しましたが、投稿の問題はすべてがコードの形になるわけではありません。私は数回試しました。お待ち頂きまして、ありがとうございます。 – Ana

+0

.pyスクリプト私はうまくいけばコピーと貼り付けがそれを損なわなければならないとうまくいきました。そのスクリプトは、アスタリスクが一致するアミノ酸を示しているプロットを作り出しました。私がしたいのは、seq1、seq2、k、t(しきい値として)の同様のコードまたは同様のプロットを生成することです。スライド4と同様のものhttp://www.cs.unibo.it/~dilena/LabBII/LabBI-I.pdf。私は何をしたいのかをより良く説明してくれることを願っています。あなたの助けに感謝します。 – Ana

答えて

1

マトリックスを生成するロジックを、キャラクタプロットを作成する比較的簡単なロジックから分離する必要があります。

まずデルタ関数を定義します。

M[i,j]
def delta(x,y): 
    return 0 if x == y else 1 

def M(seq1,seq2,i,j,k): 
    return sum(delta(x,y) for x,y in zip(seq1[i:i+k],seq2[j:j+k])) 

は、この行列を作る:

def makeMatrix(seq1,seq2,k): 
    n = len(seq1) 
    m = len(seq2) 
    return [[M(seq1,seq2,i,j,k) for j in xrange(m-k+1)] for i in xrange(n-k+1)] 

プロット行列を。あなたは別の文字を試すことができます。

def plotMatrix(M,t, seq1, seq2, nonblank = unichr(0x25A0), blank = ' '): 
    print(' |' + seq2) 
    print('-'*(2 + len(seq2))) 
    for label,row in zip(seq1,M): 
     line = ''.join(nonblank if s < t else blank for s in row) 
     print(label + '|' + line) 

ラッパー関数:

def dotplot(seq1,seq2,k = 1,t = 1): 
    M = makeMatrix(seq1,seq2,k) 
    plotMatrix(M, t, seq1,seq2) #experiment with character choice 

そして:

#for testing purposes (drawn from paper): 

seqx = "ACCTGAGCTCACCTGAGTTA" 
seqy = "ACCTGAGCTCACCTGAGTTA" 
dotplot(seqx,seqy) 

出力:

|ACCTGAGCTCACCTGAGTTA 
---------------------- 
A|■ ■ ■ ■ ■ 
C| ■■ ■ ■ ■■  
C| ■■ ■ ■ ■■  
T| ■ ■ ■ ■■ 
G| ■ ■  ■ ■ 
A|■ ■ ■ ■ ■ 
G| ■ ■  ■ ■ 
C| ■■ ■ ■ ■■  
T| ■ ■ ■ ■■ 
C| ■■ ■ ■ ■■  
A|■ ■ ■ ■ ■ 
C| ■■ ■ ■ ■■  
C| ■■ ■ ■ ■■  
T| ■ ■ ■ ■■ 
G| ■ ■  ■ ■ 
A|■ ■ ■ ■ ■ 
G| ■ ■  ■ ■ 
T| ■ ■ ■ ■■ 
T| ■ ■ ■ ■■ 
A|■ ■ ■ ■ ■ 

からの図と一致します紙(それはroが欠けているがワットと列のラベル - あなたはアドインができ、必要に応じて):私は、私はシンプルなドットプロットの行列を作成する前に使用されるコードを追加した

enter image description here

+0

うわー!私はコードをチェックし、テストし、何が起こるかを知るためにいくつかのパラメータを変更することに感銘を受けました。また、私はPythonの件名グラフでいくつかの読書をお勧めできますが、matlabplotではありません。ありがとうございました。私はヘッダーも含めようとします。 – Ana

+1

Mitchell Modelの「Pythonを使ったバイオインフォマティクスプログラミング」には、グラフィックスライブラリTkinterを使ってドットプロットを作成する章があります。これはPython 3に含まれていますが、いくつかの変更を加えてPython 2で動作させるべきです。matlabplotのようなものはraw Tkinterでできるものよりも豊富なので、なぜ避けたいのか分かりません。 "Pythonのデータビジュアライゼーション"のようなタイトルを持つ書籍がいくつかあります。 –

+0

こんにちは、見出しを挿入する方法を試しています。助けてください。 – Ana

関連する問題