0

私は現在、「やっている」プログラムをコーディングしており、DNAサンプルの位相解析をプロットしていますが、何かが間違っています:Output plot HERE!右側の画像はMATLABどのように見えるべきかの例です。私のプログラムからは左の画像が出力されます。あなたが見ることができるように青いグラフは右に見えますが、それは異なった角度の下にあります。私はコードをチェックしました。それは私のプログラムのMATLABバージョンと基本的に同じです。とにかく私はここにそれを置くでしょう、おそらく、私は知らない間違いがあります。しかし、そうでない場合は、グラフを正しい位置に '回転/下降'する方法がありますか?ここPythonで特定の角度でグラフを下げるにはどうすればいいですか

Pythonコード:

def listIni(size, const=0): 
    return [const] * size 

seq = SeqIO.read("C:/ec.fasta", "fasta") 
seqString = seq.format("fasta") 
seq = seqString[72:] 
seqLen = len(seq) 

phase = listIni(seqLen) 
A = complex(1, 1) 
T = complex(1, -1) 
C = complex(-1, -1) 
G = complex(-1, 1) 

RNL = range(0, seqLen) 
ntLoc = np.asarray(RNL) 


for i in RNL: 
    if seq[i] == "A": 
     phase[i] = np.angle(A) 
    elif seq[i] == "T": 
     phase[i] = np.angle(T) 
    elif seq[i] == "C": 
     phase[i] = np.angle(C) 
    else: 
     phase[i] = np.angle(G) 

arrPh = np.asarray(phase) 
unwrapedPh = np.unwrap(arrPh) 
cumulatedPh = np.cumsum(arrPh) 


plt.plot(ntLoc, unwrapedPh, label='uPhase', color='red') 
plt.plot(ntLoc, cumulatedPh, label='cPhase', color='blue') 
plt.xlabel("Relative nt location") 
plt.ylabel("Angle") 
plt.show() 

答えて

0

私はそれを理解しました。代わりに、私はこのコードの一部で行ったように「手動シーケンスの読み込み」を使用しての:

seq = SeqIO.read("C:/ec.fasta", "fasta") 
seqString = seq.format("fasta") 
seq = seqString[72:] 
seqLen = len(seq) 

私はちょうどこのようBiopythonに内蔵の「機能」を使用:

record = SeqIO.read("C:/ec.fasta", "fasta") 
sequence = record.seq 

そしてすべてはそれとして働いていましたすべきだ。なぜそれはまだ謎なのか? 別のアイデアをお寄せいただきありがとうございました。

0

は、私はこの問題はnp.angleの定義にあると思います。あなたのコードで

、我々はそう明らかに累積和が負の角度のために減少します

angle('A') -> pi/4 
angle('T') -> -pi/4 
angle('G') -> 3pi/4 
angle('C') -> -3pi/4 

を持っています。私はあなたではなく、次のマッピングをしたいと思います:

angle('A') -> pi/4 
angle('T') -> 7pi/4 
angle('G') -> 3pi/4 
angle('C') -> 5pi/4 

quick'n'dirtyのwalkaroundが

for i in RNL: 
    if seq[i] == "A": 
     phase[i] = np.angle(A) 
    elif seq[i] == "T": 
     phase[i] = np.pi-np.angle(T) 
    elif seq[i] == "C": 
     phase[i] = np.pi-np.angle(C) 
    else: 
     phase[i] = np.angle(G) 

しかし、これは本当にあなたが指すようにしたい拠点に対応するベクトルしたい場所に依存だろう。

関連する問題