構造解析関係
COOTでショートカットキーを使う
- coot wikiからスクリプトを入手(bernhards_key_bindings_for_coot.pyを検索)
- ~/.coot-preference/ に置く
- Ctrl+W→水を置く、Ctrl+R→Real space Refinementなど。キーの詳細は Extensions > Settings > Key Bindings を参照
CUIでphenix.refine
- input card(~~~.eff)を作る
$phenix.refine "input pdb" "input_mtz" --dry_run - ~~~.effの編集
strategyで*の項目が精密化計算される。 - 実行
$phenix.refine ~~~.eff --overwrite
<phenix.refineのオプション>
nproc: | 並列計算の使用コア数 |
cdl: | Conformation Dependent Libraryの使用有無 |
truncate_to_polyala: | ポリアラニンモデル作成 |
phenix.refineでHETATMなどrestrainの設定
- input card(restraints_edits.params)を作り、編集
refinement.geometry_restraints.edits { zn_selection = chain X and resname ZN and resid 200 and name ZN his117_selection = chain X and resname HIS and resid 117 and name NE2 asp130_selection = chain X and resname ASP and resid 130 and name OD1 bond { action = *add atom_selection_1 = $zn_selection atom_selection_2 = $his117_selection symmetry_operation = None distance_ideal = 2.1 sigma = 0.02 slack = None } bond { action = *add atom_selection_1 = $zn_selection atom_selection_2 = $asp130_selection symmetry_operation = None distance_ideal = 2.1 sigma = 0.02 slack = None } angle { action = *add atom_selection_1 = $his117_selection atom_selection_2 = $zn_selection atom_selection_3 = $asp130_selection angle_ideal = 109.47 sigma = 5 } }
- 実行
$phenix.refine model.pdb data.hkl restraints_edits.paramse
CDProの使い方
CDProはwindowsが必要
- CDPro.zipのダウンロード
- 解凍してC:にCDProを置く(ファイルは全てCDProの下へ)
- 波長(間隔:1.0 or 0.5 or 0.2 nm)とCDデータがタブ区切りになったファイルを準備(ファイル名は12文字まで)
- ブラウザでRunCDPro.htmlを開いて、CRDATAをクリックしてinputファイルを作成
- 出来上がったinputを使ってSELCON3、CDSSTR、CONTINを実行
MD(Gromacs)
計算が途中で止まった場合
- mdrun -deffnm [junk] -cpi [junk].cpt -append
計算する時間を増やす
- tpbconv -s previous.tpr -extend timetoextendby -o next.tpr
- mdrun -s next.tpr -cpi previous.cpt
- -e などのオプションでedrファイルを指定する場合も…
trrをpdbへ
- trjconv -app -f [junk].trr -o [output].pdb -s [junk].tpr
MD(NAMD)
restarting simulation
~tutorial file/common/sample.conf を編集。
- if {0} を if {1} に変更
- velocity restart fileを使用する際はtemperatureをコメントアウト
- $temperatureに注意
- Firsttimesteps を合わせる
pymolでdcdファイルを読み込む
- pdbの読み込み
- load_traj filename [,object [,state [,format [,interval [,average ] [,start [,stop [,max [,selection [,image [,shift]]]]]]]]]
スクリプト
タンパク質のX線結晶構造解析をちょっとだけ楽にしてくれるシェルスクリプト集
DIALSスクリプト
DIALSでの回折データ処理時に、index > integrate > scale(aimless)の間でlogを確認しながら進める対話スクリプト [ファイル]
CNS_setup
CNSのinputファイル(make_cv.inp, generate_easy, rigid.inp, refine.inp, water_pick.inp)をpwdにコピーして、空間群、格子定数、分解能、反射ファイル名を同時に編集する対話型シェルスクリプト [ファイル]
LATEST_COOT
COOTをディレクトリ内の最新PDBとMTZファイルを読みこんでたち上げるまでのシェルスクリプト [ファイル]
- #!/bin/sh
- LATEST_pdb="`pwd`/`ls -lt *.pdb | head -n 1 | gawk '{print $10}'`"
- LATEST_mtz="`pwd`/`ls -lt *.mtz | head -n 1 | gawk '{print $10}'`"
- coot --pdb $LATEST_pdb --auto $LATEST_mtz
(注意) gawk '{print $10}は"ls -l"での10番目にファイル名がある場合
CNS_COOT
CNSの"refine.inp"を書きかえ、COOTを立ち上げるまでのシェルスクリプト [ファイル]
- #!/bin/sh
- #update
- sed -e "s/ref_input/$1/g" refine.inp > refine2.inp
- sed -e "s/ref_output/$2/g" refine2.inp > refine3.inp
- #run cns
- cns < refine3.inp |tee refine.log
- #remove files
- rm -f refine2.inp
- rm -f refine3.inp
- #run coot
- coot --pdb $2.pdb --map $2_2fofc.map --map_fofc.map
(準備) refine.inpのcellパラメータなどを編集する。この時inputファイル名を"ref_input"、outputファイル名を"ref_output"にしておく
(使い方) CNS_COOT [input] [output]
CNS_COOT_2
CNSとCOOTを使ったルーチン作業用シェルスクリプト [ファイル] [CNSmap.scm]
ディレクトリ内の最新のref[N]-coot-*.pdbを使ってrefine.inp、ref[N+1].pdbとmapでcootを立ち上げる。
(110531)simulated annealingのオプション追加。defaultは”false”、--enable-sa で”true”。
- #!/bin/sh
- /* #新しいファイルを探す */
- LATEST_pdb="`ls -lt *-coot-*.pdb | head -n 1 | gawk '{print $10}'`"
- /* #ファイル名の数字だけ書き出す */
- inp=`echo $LATEST_pdb | sed -e "s/ref//" | sed -e "s/-coot-..pdb//"`
- out=`expr $inp + 1`
- /* #anneaelをfalse */
- sed -e "s/{===>} anneal=true/{===>} anneal=false/g" refine.inp > refine1.inp
- sed -e "s/ref_input.pdb/$LATEST_pdb/g" refine1.inp > refine2.inp
- sed -e "s/ref_output/ref$out/g" refine2.inp > refine3.inp
- /* #simulated annealing option */
- for sa in $@
- do
- case $sa in
- -enable-sa | --enable-sa )
- sed -e "s/{===>} anneal=false/{===>} anneal=true/g" refine3.inp > refine4.inp
- mv refine4.inp refine3.inp
- ;;
- esac
- done
- cns < refine3.inp |tee refine.log
- rm -f refine1.inp
- rm -f refine2.inp
- rm -f refine3.inp
- rm -f refine4.inp
- coot --pdb ref$out.pdb --map ref${out}_2fofc.map --map ref${out}_fofc.map --no-state-script --script CNSmap.scm
(準備) refine.inpのcellパラメータなどを編集する。この時inputファイル名を"ref_input"、outputファイル名を"ref_output"にしておく。CNSmap.scmのPATHを確認。
分子毎に平均B-factor(原子数)を計算する
Thanks to Hirotsugu!
pdbファイルから、タンパク質、DNA、金属、水、低分子それぞれの平均B-factorの計算と原子数を数えるシェルスクリプト [ファイル]
(使い方)./STATISTIC_B "ファイルの名前"
- #!/bin/sh
- #PROTEIN
- awk '$1 ~ /^ATOM/ && (substr($0,18,3) == "ALA" || substr($0,18,3) == "ASP" || substr($0,18,3) == "CYS" || substr($0,18,3) == "GLU" || substr($0,18,3) == "PHE" || substr($0,18,3) == "GLY" || substr($0,18,3) == "HIS" || substr($0,18,3) == "ILE" || substr($0,18,3) == "LEU" || substr($0,18,3) == "MET" || substr($0,18,3) == "ASN" || substr($0,18,3) == "PRO" || substr($0,18,3) == "GLN" || substr($0,18,3) == "ARG" || substr($0,18,3) == "SER" || substr($0,18,3) == "THR" || substr($0,18,3) == "VAL" || substr($0,18,3) == "TYR" || substr($0,18,3) == "TRP" || substr($0,18,3) == "LYS") { print }' $1 > PROTEIN.txt
- PROTEIN="`awk '{sum =sum + substr($0, 61, 6); count++} END{printf ("%3.4f (%5d)", sum / count, count)}' PROTEIN.txt`"
- #DNA
- awk '$1 ~ /^ATOM/ && (substr($0,19,2) == "DT" || substr($0,19,2) == "DA" || substr($0,19,2) == "DC" || substr($0,19,2) == "DG") { print }' $1 > DNA.txt
- CNT_DNA="`wc -l DNA.txt| sed -e 's/[^0-9]//g'`"
- DNA="`awk '{sum =sum + substr($0, 61, 6); count++} END{printf ("%3.4f (%5d)", sum / count, count)}' ./B_DNA.txt`"
- #Metal
- awk '($1 ~ /^ATOM/ || $1 ~ /^HETATM/) && substr($0,13,1) != " " && substr($0,13,2) == substr($0,19,2) { print }' $1 > METAL.txt
- METAL="`awk '{sum =sum + substr($0, 61, 6); count++} END{printf ("%3.4f (%5d)", sum / count, count)}' ./B_METAL.txt`"
- #water
- awk '$1 !~ /^ANISOU/ && substr($0,18,3) == "HOH" { print }' $1 > WATER.txt
- WATER="`awk '{sum =sum + substr($0, 61, 6); count++} END{printf ("%3.4f (%5d)", sum / count, count)}' ./B_WATER.txt`"
- #small molecule
- awk '($1 ~ /^ATOM/ || $1 ~ /^HETATM/) && (substr($0,18,3) != "ALA" && substr($0,18,3) != "ASP" && substr($0,18,3) != "CYS" && substr($0,18,3) != "GLU" && substr($0,18,3) != "PHE" && substr($0,18,3) != "GLY" && substr($0,18,3) != "HIS" && substr($0,18,3) != "ILE" && substr($0,18,3) != "LEU" && substr($0,18,3) != "MET" && substr($0,18,3) != "ASN" && substr($0,18,3) != "PRO" && substr($0,18,3) != "GLN" && substr($0,18,3) != "ARG" && substr($0,18,3) != "SER" && substr($0,18,3) != "THR" && substr($0,18,3) != "VAL" && substr($0,18,3) != "TYR" && substr($0,18,3) != "TRP" && substr($0,18,3) != "LYS" && substr($0,18,3) != "HOH" && substr($0,19,2) != "DT" && substr($0,19,2) != "DA" && substr($0,19,2) != "DC" && substr($0,19,2) != "DG" && substr($0,13,2) != substr($0,19,2) ) { print }' $1 > SMALL.txt
- SMALL="`awk '{sum =sum + substr($0, 61, 6); count++} END{printf ("%3.4f (%5d)", sum / count, count)}' ./B_SMALL.txt`"
- #Summary
- echo ""
- echo "Molecules = ave. B (No. atom)"
- echo "Protein = $PROTEIN "
- echo "DNA = $DNA "
- echo "METAL = $METAL "
- echo "Water = $WATER "
- echo "Small = $SMALL "
- #clean
- rm *.txt