2016年5月5日 星期四

簡單的Python函式

用Python寫個簡單的小程式叫做"aa1to3.py",此程式可將one-letter-code表示的氨基酸序列轉成three-letter-code的序列,程式碼如下:

#!/usr/bin/python

def one2three(a):
    """
    Convert one letter code to three letter code
    """
    aa1to3 = {'A':"Ala", 'R':"Arg", 'N':"Asn", 'D':"Asp", 'C':"Cys",
              'E':"Glu", 'Q':"Gln", 'G':"Gly", 'H':"His", 'I':"Ile",
              'L':"Leu", 'K':"Lys", 'M':"Met", 'F':"Phe", 'P':"Pro",
              'S':"Ser", 'T':"Thr", 'W':"Trp", 'Y':"Tyr", 'V':"Val"}
    aa3to1 = {three: one for one, three in aa1to3.iteritems()}        
    if (a in aa1to3.iterkeys()):
        aaa = aa1to3[a]
    else:
        aaa = 'X'
    return aaa

if __name__ == "__main__":
    s = str(raw_input("Please enter a protein sequence: "))
    seq = list()
    for a in s.upper():
        seq.append(one2three(a))
    print('-'.join(seq))


執行方式如下:
$ python aa1to3.py 
Please enter a protein sequence: TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYANZ
Thr-Thr-Cys-Cys-Pro-Ser-Ile-Val-Ala-Arg-Ser-Asn-Phe-Asn-Val-Cys-Arg-Leu-Pro-Gly-Thr-Pro-Glu-Ala-Ile-Cys-Ala-Thr-Tyr-Thr-Gly-Cys-Ile-Ile-Ile-Pro-Gly-Ala-Thr-Cys-Pro-Gly-Asp-Tyr-Ala-Asn-X
上面粗體是輸入的內容,細的是輸出的結果

本文中程式碼的顏色是先用MacDown編輯文章,將內容匯出成為html的格式。從這個html檔案裡面挖出來由Lea Verou寫出來的prim.js default theme for JavaScrpt, CSS and HTML Based on dabblet (http://dabblet.com)。html檔案裡面code上下的<style>那些東西都要放進來。


2016-May-10 補充YSPTSPS repeats

RNA polymerase II的carboxy terminal domain (CTD)上面最多會有52個重複的YSPTSPS,用上面的程式可以直接寫成three letter code,以下說明怎樣用Python做到
$ python
>>> 52 * "YSPTSPS"
'YSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPS'
>>> execfile("/yourPath/aa1to3.py")
Please enter a protein sequence: YSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPSYSPTSPS
Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser-Tyr-Ser-Pro-Thr-Ser-Pro-Ser
上面的Trebuchet字型代表是輸入,Courier字型代表的電腦輸出的結果。

_EOF_

沒有留言:

張貼留言