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,說明文件(PDF、HTML)、FAQ與Turtorials。

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?》中Barmar與Flimzy的回應

_EOF_