2016年5月10日 星期二

操作Python的字串

前面《內建的Python字串處理功能》說名是單一字串自帶的操作,這邊則是介紹將多個字串合併與子字串(substrings)等等基礎使用
  • str = '':空字串
  • str = "I'm Lovin' It":字串內有單引號之類的符號時使用
  • str = """...""":文字區塊
  • str = r'raw strings'
  • str = u'unicode strings'
  • len(str):字串長度
  • for l in str:一次拿一個字母出來,存在變數l裡面
  • pattern in str:測試pattern是否在這個字串裡面
  • str1 + str2:連結兩個字串
  • str * 7:重複出現字串七次
  • str[i:j]:子字串,見後面的說明


2016年5月9日 星期一

Python內建的字串處理功能

Python這個程式語言和其他直譯語言不一樣的地方在於,字串自己本身就能夠處理自己。

例如說,下面有字串存在str這個變數裡面
>>> str = 'There is no coincidence. Only the illusion of coincidence.'
str.capitalize  str.isalnum     str.lstrip      str.splitlines
str.center      str.isalpha     str.partition   str.startswith
str.count       str.isdigit     str.replace     str.strip
str.decode      str.islower     str.rfind       str.swapcase
str.encode      str.isspace     str.rindex      str.title
str.endswith    str.istitle     str.rjust       str.translate
str.expandtabs  str.isupper     str.rpartition  str.upper
str.find        str.join        str.rsplit      str.zfill
str.format      str.ljust       str.rstrip      
str.index       str.lower       str.split  


2016年5月6日 星期五

讓PyMOL顯示XYZ軸

想要讓PyMOL顯示像VMD一樣有從原點出來的XYZ軸,參考PyMOLWiki上的文章《Axes》,修改程式碼儲存成axes.py。打開PyMOL以後執行下面的指令
  • run axes.py
  • axes
  • axes(2)
  • axes(3)
上面的三個指令都會畫出軸來,大小正比於小括號裡面的數字,結果如附的圖所示
Envelope proteins of Zika virus (PDB code: 5IRE)
axes.py的程式碼如下:

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))


2016年5月2日 星期一

Multienzymes

Multienzyme指的是一個蛋白質,但擁有多個活性中心可以催化數個不同的化學反應(參閱G. P. Moss建議的名詞定義。跟著這個定義出現下面三個名詞:
  • Catalytic domain:multienzyme上可以執行催化反應的部分,可以由一個或是多個structural domain組成。
  • Multienzyme complex:multienzyme的catalytic domains在多個polypeptide chains上面。
  • Multienzyme polypeptide:此條polypeptide chain上面包含數個catalytic domains。

根據這個定義,一個protein complex只有一個catalytic domain,但此catalytic domain是由數個subunits的部分所組成的例子不可稱做為multienzyme。對於某一個enzyme上面的一個catalytic domain可以催化多種反映,也不可稱為multienzyme。此外,Multienzyme complex有可能由multienzyme polypeptide組成。