はっぴ〜☆Scripting!!  

ということで、ここではちょっとの工夫で便利な機能、そんな簡単なスクリプトを紹介していきたいと思います。ルーチンなコマンドはスクリプトでハッピーになりましょう!
メインに使用するスクリプト言語はシェルスクリプトのつもりですが、ちょっと複雑なものになるとPerlをつかうと思います。
なお、単純なスクリプトの場合、エラー処理は省略しているのでその辺りは適当にヨロシク [huh]

ちょっと本気なスクリプト  

企画から使用までちょっと時間がかかる本気のスクリプト。

特定のプログラム用のスクリプト  

CROSSECでF', F"を求める -- 2009-05-07  

核種と波長から  

異常分散項(F',F")はCCP4CROSSECで簡単に求められますが、いちいち入力するのも面倒なものです。そこで簡単なシェルスクリプトを作ってみます。

核種と波長を入力すればCROSSECの出力からF'とF"を読み取って出力します。

イメージから値を読み取り求める  

calcafは核種と波長を指定しましたが、これを応用して、カレントディレクトリ以下から001.imgで終わるファイルを探し、ファイルヘッダ中のWAVELENGTHから波長を取得、異常分散項を求めてみます。WAVELENGTHパラメータのないイメージ、例えばR-AXISのファイルではヘッダがバイナリで読み取りが面倒なので対応していません。ADSCのイメージなら問題ないと思います。

PDBコードでPDBサイトからファイルを取得する  

getpdb
PDBファイルが必要なとき、Webブラウザをわざわざ開いて取得する手間を省きます。wgetをあらかじめインストールしておきます。
# apt-get install wget

PDBファイルから特定のChainのみ取得する -- 2009-06-23  

getchain
PDBファイル中からCRYST1と指定したChain IDを切り出します。この時、水分子は無視するようにします。

PDBファイル中の特定の値以上の原子を得る  

テキスト処理言語のawkを使ってPDBファイル中で温度因子が60を超える原子を出力してみます。

% awk '/^ATOM  / {if($11>60){print}}' target.pdb

こんな感じで。システムによってはgawkを使うのかもしれません(Vine 4.2ではawkはgawkへのシンボリックリンクでした)。
awkのスクリプト部分は/^ATOM / {if($11>60){print}}の部分になります。先頭部分の正規表現/^ATOM /で原子レコードのみを処理することを指定します。HETATMも入れるなら/^(ATOM |HETATM)/にすれば全ての原子を対象にすることが可能です。続きの{if($11>60){print}}でアイテム11が60を超えるなら出力、という処理をしています。アイテムの11とはスペースで区切った値の11番目のものということで、PDBの温度因子が相当します。
応用例としてCNSのComposite omit mapの結果の確認でもawkを使って処理しています。

MAPMANを使って電子密度を変換する  

cnsmap2ccp4
電子密度を変換するのにいちいちMAPMANを起動するのもめんどくさい。そんなわけでシェルスクリプトにしてみました。
もうちょっと親切にするなら引数のチェックぐらい入れたらいいかもしれませんね。

SEGIDを付加する  

addsegid
CNSではSEGIDというPDB ver.2.3以降廃止されたフィールドを使用しますが、CCP4ではSEGIDは基本的には使わないので付加されません。それをスクリプトで付加します。

ワンライナーで書いてみた  

せっかくなのでワンライナー(コマンドライン上でスクリプトを書くことだよ)で書いてみた。

perl -lane 'substr($_,72,1,substr($_,21,1)) if(/^(ATOM|HETATM)/); print' < hogehoge.pdb

これで上記と同じ結果が得られる。すごいなぁ。
ワンライナーってめちゃ便利かも。SedとかAwkとか使えない私にとっては勉強の価値ありと思いました。

MSEをMETに変換する  

mse2met
PDBファイル中のSe-Met残基をMetに変換します。

PDBをアミノ酸シークエンスに変換する  

2011-12-15 : 公開

プログラムに依存せずにPDBファイルをアミノ酸シークエンスに変換するスクリプトです。過去にざっくり作ったのでどの程度正確かは保証できませんが・・・ [huh]
インサーションなどある場合は怪しいかも知れません。また、ギャップは無視されるかも・・・
改良提案お待ちしています(^^)。

添付ファイル: filepdb2seq 1330件 [詳細] filegetafs 2010件 [詳細] filecalcaf 2064件 [詳細]