2016年5月31日 星期二

在PyMOL中將分子移動到原點

用PyMOL開啟分子後,分子不一定會放在原點上。以下以crambin為例子,把一個結構放到原點上:
  1. fetch 1crn
  2. run mv2origin.py; mv2origin 1crn
  3. run axes.py; axes
第1步:抓crambin的分子
第2步:把分子放到原點
第3步:畫出XYZ的座標軸,驗證分子真的被放到原點上

2016年5月30日 星期一

MarkDown插入圖片的兩種方法


MarkDown是種輕量級標記式語言,易讀易寫,可簡單的轉成HTML或是PDF文件。在上面插入圖片只要輸入:
![圖片介紹](./yourLocation/yourFile.png)

如果希望調整插入圖片在版面上的大小,則可以用HTML的方式輸入:

2016年5月27日 星期五

GROMACS畫二級結構隨時間的變化

GROMACS可以分析一個trajectory,根據每個時間點的結構用DSSP畫出二級結構隨時間變化的圖,指令如下:
  • export DSSP=/yourlocation/bin/dsspcmbi:指定系統中DSSP程式
  • echo 1 | gmx do_dssp -ver 1 -s md.tpr -f md_noPBC.xtc -tu ns -dt 1 -o dssp.xpm
  • gmx xpm2ps -f dssp.xpm -o dssp.eps:把xpm(X PixMap compatible matrix file)轉成eps
  • pstopdf dssp.eps:把eps(postscript format)轉成PDF格式,pstopdf是Mac的指令



_EOF_

2016年5月26日 星期四

GROMACS直接給指令選項

用GROMACS的指令時,有些會是交談式的環境,也就是指令執行後還要手動輸入一些要求的選項:例如說將trajectory轉檔的指令trjconv需要決定要選哪些atom group、或是計算RMSD的指令rms則需要決定做least-squre fitting的atom group與拿來算RMSD的atom group。一開始如果已經知道要選哪個group的話,那直接下:
  • echo 1 | gmx trjconv -s md.tpr -f md.xtc -o md.xtc_noPBC.xtc -pbc mol -ur compact
  • printf "4\n4\n" | gmx rms -s md.tpr -f md_noPBC.xtc -tu ns -o rmsd.xvg
第一個指令選的atom group是 1 (Protein)
第二個指令選least-square fitting與算RMSD的atom group都是 4 (Backbone)

_EOF_

2016年5月25日 星期三

用Bash找某字串是否存在列表中

有時候只是要很快地知道某變數x是否存在列表list當中,直接在Bash裡面下:
  • list="str1 str2 str3"
  • x="str1"
  • [[ $list =~ $x ]] && echo 'yes' || echo 'no'
以上指令來自chemila在stack overflow上回答How do I check if a variable exists in a list in BASH。注意上面第三個指令是 =~ 而不是 ==,而且前後順序不可以更換。Bash的Double brackets的使用參考《What is the difference between test, [ and [[ ?》

2016年5月24日 星期二

GROMACS-5.1.2指令列表

首先要先告訴系統GROMACS安裝在哪邊
$ source /pkg/gromacs-5.1.2/bin/GMXRC

用gmx看安裝了哪些東西
$ gmx 後面按tab
Display all 101 possibilities? (y or n)
anadock            editconf           mk_angndx          sasa 
anaeig             eneconv            morph              saxs 
analyze            enemat             msd                select 
angle              energy             -nice              sham 
bar                filter             nmeig              sigeps 
bundle             freevolume         nmens              solvate 
check              gangle             nmtraj             sorient 
chi                genconf            -nobackup          spatial 
cluster            genion             -nocopyright       spol 
clustsize          genrestr           order              tcaf 
confrms            grompp             pairdist           traj 
convert-tpr        gyrate             pdb2gmx            trjcat 
covar              -h                 pme_error          trjconv 
current            h2order            polystat           trjorder 
density            hbond              potential          tune_pme 
densmap            helix              principal          vanhove 
densorder          helixorient        -quiet             velacc 
dielectric         help               rama               -version 
dipoles            hydorder           rdf                view 
disre              insert-molecules   rms                wham 
distance           lie                rmsdist            wheel 
do_dssp            make_edi           rmsf               x2top 
dos                make_ndx           rotacf             xpm2ps 
dump               mdmat              rotmat             
dyecoupl           mdrun              saltbr             
dyndom             mindist            sans

2016年5月23日 星期一

安裝GROMACS-5.1.2在Ubuntu Gnome

在Ubuntu Gnome14.04 自行編譯GROMACS-5.1.2。雖然用apt-get也可以安裝,但自行編譯可以依照某些環境客製化。過程根據Installaion Guide分成下面四大步驟:
  1. 設定環境
    1. apt-get install cmake
    2. apt-get install libboost-dev
    3. apt-get install libxml2-dev
  2. 下載原始碼
    1. wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-5.1.2.tar.gz
  3. 編譯程式
    1. tar zxvf gromacs-5.1.2.tar.gz && cd gromacs-5.1.2
    2. mkdir build && cd build
    3. cmake .. -DGMX_BUILD_OWN_FFTW=ON -DCMAKE_INSTALL_PREFIX=/pkg/gromacs-5.1.2
    4. make -j 2 >& make.log &
    5. make check
  4. 安裝與執行
    1. make install
    2. source /pkg/gromacs-5.1.2/bin/GMXRC
    3. gmx -version
GROMACS-5.1.2的Release Notes,說明文件(PDFHTML)、FAQTurtorials

2016年5月20日 星期五

讓Bash在if-else中無作為

用Bash寫程式化腳本(shell script),當用到if-else的判斷結構時有時候會在某個判斷裡面並不打算做任何事情,這種情況可以如下列的程式碼解決:
#!/bin/bash
if [ $a -ge 10 ]; then
    true
elif [ $a -le 5 ]; then
    :
else
    echo "ELSE!!"
fi
可以用true、也可以用冒號:來代表無作為。以上方法參考stack overflow上《What command means "do nothing" in a conditional in BASH?》BarmarFlimzy的回應

_EOF_

2016年5月19日 星期四

MarkDown插入換頁符號

MarkDown編輯出來的文件可以直接轉成PDF檔案。在排版的時候,有時候會希望某些內容放在同一頁裡面,這時候就必須要強制換頁。強制換頁只要加入:
<div style="page-break-after: always;"></div>
這樣在輸出PDF的時候,在上面這行之下的內容就會跳到下一頁。上面這行看起來像是HTML格式的寫法,是因為Markdown接受HTML與CSS語法,故可用div這個tag

參考資料

_EOF_

2016年5月18日 星期三

重新配置Mac的鍵盤佈局

鍵盤佈置(Keyboard layout)會隨著不同的國家、語言不同。像是英國、日本、西班牙語系過家用的鍵盤就會和其他地區的不太一樣。即使是同樣語系,也可能因為製造商的設定,讓相同位置的按鈕有著不一樣的功能,最明顯不同的差異可以比較Microsoft鍵盤與Apple鍵盤就可以看出來。在Mac上有個由Takayama Fumihiko開發的免費軟體叫做Karabiner(以前叫做KeyRemap4MacBook),提供使用者重新配置按鍵(Key remapping)。簡單說就三個步驟:
  1. 下載Karabiner,如果是OS 10.8以前的就要用KeyRemap4MacBook
  2. 新增鍵盤配置,參考操作手冊
  3. 設定鍵盤配置,參考已經有的設定組態

2016年5月17日 星期二

羅技Setpoint在Win10開機時自動啟動

羅技的設定鍵盤滑鼠的程式叫setpoint,所有個人化微調的設定都由這支程式所控制。安裝setpoint,在Windows 10以前的微軟視窗作業系統中都會設定成開機後自動開啟,但裝在Windows 10上面卻無法開機自動啟動。

程式裡面也沒有可以設定的地方,目前只能手動去修改登陸檔,以下參考Slamba在羅技論壇上的《Re: SetPoint Won't Startup At Logon in Windows 10 》,依序執行:
  1. 開啟regedit,到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run\
  2. 新增一個字串值(string),名稱是Setpoint
  3. 這個叫做Setpoint的字串,內容會是Setpoint啟動程式所在位置,"C:\Program Files\Logitech\SetPointP\SetPoint.exe",雙引號記得要加入
下次重新開機Setpoint就會直接啟動了

_EOF_

2016年5月13日 星期五

關閉Excel for Mac的自動注音切換

Mac Excel如果輸入法裡面有注音輸入,每次點選儲存格都會切換成注音,對於輸入相當不方便。參閱沒問題教學網的解法《解決MAC Excel點選儲存格,自動切換到注音輸入問題》,簡單說明如何解決:
  1. 到/Applications/Microsoft Excel.app/Contents/Resources/zh_TW.lproj/
  2. 修改InfoPlist.strings這個檔案,新增一個string key,內容如下
    <key>MicrosoftLocalizationLCID</key>
    <string>1033</string>
以上的做法是給Microsoft Excel for Mac Version 15.21.1 (160411)這個版本,另外注意除了zh_TW.lproj以外還有en.lproj等等不同語系的資料夾,因此要根據語系來決定修改哪一個InfoPlist.strings

2016年5月11日 星期三

製作硬碟開機的Clonezilla Live

通常要備份一整個系統,必須要把系統硬碟拆下來,裝到另外一台機器上面,然後用這台機器的把整個系統備份;另一種做法則是用光碟或是USB開機(像是在Macintosh上製作USB開機的Clonezilla Live所描述的USB stick),另外外掛一個硬碟,把整個系統備份到那個硬碟上面。第一種方式非常麻煩,,而第二種方式除了外接硬碟以外,還要一隻Clonezilla的USB stick

在此介紹Clonezilla安裝到外接硬碟上,只要把外接硬碟裝上去,用這個硬碟開機,再把系統整個備份到外接樣碟上面即可。這種方法只要外接一個硬碟就可以備份

做法很簡單,只要把外接硬碟分割成兩個區域:
  1. Clonezilla-live區(~200MB):這區用來開機與放置Clonezilla系統
  2. Clonezilla-backup區:這區用來放置備份映像檔
做好後,用Clonezilla live區開機,按照指示去做,把系統存到備份存放區

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組成。