2012-01-02 73 views
2

我具有根據得分的顏色序列的AWK腳本分配顏色序列修改awk程序,它 顏色上RGB模式中的殘基,並且這些序列可以使用一些軟件。問題是可視化腳本顏色紅更高的分數範圍,綠色代表中,白色低range.I想改變它的方式,使其分配紅色小範圍,,藍色中間,,,或者換句話說,我希望腳本以另一種方式工作,從低到高從高到低......我如何處理這個問題。我是一名生物學家,我不知道awk是如何工作的。請幫助我解決這個問題。,基於它們的值

着色是基於此。 http://www.pymolwiki.org/index.php/Spectrum

/usr/bin/awk -v aa_shift=$2 ' 

BEGIN{ 
     r1=1; g1=1; b1=1; 
     r2=1; g2=1; b2=0; 
     r3=1; g3=0; b3=0; 

    maxfrq=-1*10000; 
    minfrq=1*10000; 
    aan=0; 

    } 

    { 
     if ($1!="" && $2!="") { 
      aan++; 
      aa_ind[aan]=1.0*$2; 
      aa_frq[aan]=1.0*$3; 

    } 

    } 

END{ 
for(i=1;i<=aan;i++) { 
    if(aa_frq[i]>maxfrq) { 
    maxfrq=aa_frq[i]; 

} 

    if(aa_frq[i]<minfrq) { 
     minfrq=aa_frq[i]; 
} 
} 
    half=(maxfrq-minfrq)/2 

    for(i=1;i<=aan;i++) { 
    aa_frq[i]=aa_frq[i]-minfrq 
     if (aa_frq[i]<half) { 
     fraction=aa_frq[i]/half 
     aa_r[i]=r1+fraction*(r2-r1) 
     aa_g[i]=g1+fraction*(g2-g1) 
     aa_b[i]=b1+fraction*(b2-b1) 
     }  else { 
      fraction=(aa_frq[i]-half)/half 
     aa_r[i]=r2+fraction*(r3-r2) 
      aa_g[i]=g2+fraction*(g3-g2) 
      aa_b[i]=b2+fraction*(b3-b2) 
     } 
    print "set_color c" i ", [" aa_r[i] "," aa_g[i] "," aa_b[i] "]" 
    print "color c" i ", resi " aa_ind[i]+aa_shift " and prot" 
     } 
     }' $1 

腳本使用序列及其分值,例如具有比分53.8第一序列A將被着色爲紅色和得分最低的序列L被着色爲白色或任何顏色較淺,但我想它們上色改爲紅色並更改順序。

sequence  no.   score 

A    394   53.8314 

E    395   12.7202 

L    396    4.5191 

L    397    22.1270 

Q    398    47.6526 

在此先感謝您的寶貴建議。

+0

我看不出這是怎麼回事綠色,至於分數小於它開始於平均[1,1,1](白色)的範圍爲[1,1,0](黃色),和上述從[1,1,0]到範圍的平均[1,0, 0](紅色);紅色組件永遠不會變化。 – cmbuckley 2012-01-02 17:54:48

回答

5

BEGIN塊控制您的色彩中的變量,所以你可以修改這些值,以滿足您的要求:

r1=1; g1=1; b1=1; 
    r2=1; g2=1; b2=0; 
    r3=1; g3=0; b3=0; 

如果得分低於平均分,顏色會在範圍內的某處在[r1, g1, b1][r2, g2, b2]之間。如果它高於平均分數,它將在[r2, g2, b2][r3, g3, b3]之間的範圍內。距離的上下範圍取決於得分距離平均得分有多遠。

因此,你可以改變這些初始變量,以滿足您的需求;如果你想紅色是低顏色,藍色是中間和綠色是高,嘗試改變數字爲這些:

r1=1; g1=0; b1=0; 
    r2=0; g2=0; b2=1; 
    r3=0; g3=1; b3=0; 
+0

非常感謝,節省了很多時間.. !!! – hari 2012-01-03 09:57:17

+0

我只是碰巧認識到這一點時,我寫了一篇關於你的問題我的意見...... :-) – cmbuckley 2012-01-03 12:57:55

+0

:)沒有後顧之憂,我不知道該解決方案是非常簡單.. !!! – hari 2012-01-03 13:53:32