ProteinDFの実習
東京⼤大学  ⽣生産技術研究所
平野  敏⾏行行

Agendal FOCUSスパコンの利利⽤用準備l ProteinDFの演習– ProteinDFのインストール– ProteinDFの実⾏行行– 計算結果の可視化

l QCLO法の演習– QCLObotの概略略– QCLObotの実⾏行行
2

FOCUSスパコンへのログイン

3

FOCUSスパコン接続の概要
l SSL-VPN接続– 要: account / passwordl sshでssh.j-focus.jpに接続– 要: account / password

⽣生研

ssh.j-focus.jp

Eシステム

SSL-VPN
ssh

batch処理理4

SSL-VPN接続l マニュアル: http://www.j-focus.jp/sslvpn/– Cisco AnyConnect Secure Mobility Client
により接続

l 概要
1.

https://vpn.j-focus.jp/ を開く

2.

GROUPは”Focus”,  配布の  USERNAME/PASSWORDを⼊入⼒力力してLogin

3.

Cisco AnyConnect Secure Mobility Clientを
ダウンロード・インストール

4.

Cisco AnyConnect Secure Mobility Clientを起動

5.

“vpn.j-­‐focus.jp”に配布の  USERNAME/PASSWORDを⼊入⼒力力して接続•

緑⾊色のチェックマークが点けば接続完了了
5ssh 接続l Tera Term (Windows), terminal (MacOSX)などのsshクライアントソフトで
ff01.j-­‐focus.jp
または  ff02.j-­‐focus.jpに接続l 配布の  USERNAME/PASSWORD  で接続
l 正しく接続されていることを確認
6

ファイルの転送⽅方法l GUI– Windows• WinSCP• FileZilla Client– MacOSX• Cyberduck• ForkLiftl CUI
scp または  sftp  コマンドを利利⽤用
7

プログラミング環境の選択(1)l module コマンド

– 現在のmodule環境の表⽰示
module	  list	  – module の読み込み
module	  load	  モジュール名	  – 利利⽤用可能なmoduleの表⽰示
module	  avail	  – moduleの解除
module	  unloadモジュール名	  8

プログラミング環境の選択(2)l Intel コンパイラ・Intel MPIの利利⽤用
module	  load	  PrgEnv-­‐intel	
  module	  load	  impi411	
  l GNU gcc, OpenMPIの利利⽤用
module	  load	  PrgEnv-­‐gnu482	  module	  load	  gnu/openmpi165	
  9

Eシステム概要
ハードウェア

Cray GreenBlade GB824X(HPC 専⽤用  ブレード型サーバ)

CPUIntel Xeon E5-2670 v2 (2.5GHz)
×2CPU(計20コア)/ノード

コプロセッサIntel Xeon Phi 5110P ×4基(計240コア)/ノード

メモリ

128 GB/ノード

インターフェースInfiniband-FDR(56Gbps)×1/ノード

10

バッチシステムl ff01, ff02からバッチシステムによりEシステムを利利⽤用
l 演習で利利⽤用できるキュー– pdfseminar

本演習で使⽤用できるのは全体で16ノードです。
利利⽤用はお⼀一⼈人様1ノード(20コア)でお願いします。
11

バッチシステムのコマンドl キュー情報の確認
sinfo	  –s	  l 利利⽤用可能なノード数の確認
freenodes	  l ジョブの投⼊入
sbatch	  ジョブスクリプト	  l ジョブ状態の表⽰示
squeue	  l ジョブのキャンセル
scancel  ジョブID	
  12

ジョブスクリプトの例例#!/bin/bash	  キューの指定#SBATCH	  -­‐p	  pdfseminar	
  ジョブ全体でのプロセス数#SBATCH	  -­‐n	
  20	
  
ノード数
#SBATCH	  -­‐N	
  1	
  ジョブの名前(任意)#SBATCH	  -­‐J	  ALA1	  #SBATCH	  -­‐o	  stdout.%J	
   標準出⼒力力の保存先#SBATCH	  -­‐e	  stderr.%J	  標準エラー出⼒力力の保存先	  module	  load	  PrgEnv-­‐intel	
  module	  load	  impi411	
  	
  export	  OMP_NUM_THREADS=20	
  export	  PDF_HOME=/home1/glej/share/ProteinDF.intel	
  	
  ${PDF_HOME}/bin/PDF.x	
  2>&1	
  >	
  PDF.log	
  
	
  
13

インストール

14

ProteinDFビルドの流流れ
1. ソースの⼊入⼿手
2. ProteinDF_bridgeのインストール
3. ProteinDF_pytoolsのインストール
4. ProteinDFのインストール
1. configureスクリプトの実⾏行行
2. ビルド15

ProteinDFソースコードの⼊入⼿手l githubから⼊入⼿手– https://proteindf.github.io/

16

ProteinDF_bridgel ProteinDFやその他アプリケーション間のデータ連携を図る
データコンテナとアルゴリズム集l 機能– 各種ファイル形式(pdb, xyz, ...)の読み書き– プログラミング⾔言語間のデータ授受– 2次構造・イオン対・SS結合等の探索索– モデリング– 可視化基本インターフェース
17

ProteinDF_bridgeのインストールl python版bridgeのインストール$	
  python	
  setup.py	
  build	  $	
  python	
  setup.py	
  install	
  -­‐-­‐prefix=${PDF_HOME}	
  l 環境変数PYTHONPATHの設定– PYTHONPATH: pythonモジュールの探索索パス
export	  PYTHONPATH=${PDF_HOME}/lib[64]/python2.7/site-­‐packages	  18

ProteinDF bridge クラスの紹介l

Atomクラス– 原⼦子情報l

AtomGroupクラス– 原⼦子団を表現– 複数のAtomを包含– 複数のAtomGroupを包含(⼊入れ⼦子)lSelecterクラス– AtomGroupに対する原⼦子選択・集合演算l

Modelingクラス– AtomGroupに対して分⼦子モデリング操作

lSuperimposeクラス– 重ねあわせ処理理 (RMSD)
19

ProteinDF_pytoolsl ProteinDFのデータ解析等を扱う
pythonモジュール＋スクリプト– 膨⼤大なデータを処理理するプログラムを簡単に作成するために⽤用意されたモジュールl 機能– ⾏行行列列・ベクトルファイルの読み書き– 軌道データの処理理– 計算データの可搬化・アーカイブ化– 計算結果の可視化
20

ProteinDF_pytoolsのインストールl bridgeと同じ⽅方法$	  python	
  setup.py	
  build	  $	
  python	
  setup.py	
  install	
  -­‐-­‐prefix=${PDF_HOME}	
  l 環境変数PYTHONPATHの設定– PYTHONPATH: pythonモジュールの探索索パス
export	  PYTHONPATH=${PDF_HOME}/lib[64]/python2.7/site-­‐packages	  21

ProteinDFインストールの準備l 環境変数PDF_HOMEの設定– ProteinDFはPDF_HOME以下にインストール

22

ProteinDFのビルドに必要なもの (1)l シリアル(逐次)実⾏行行に必要なもの– C++コンパイラ• GNU G++, Intel C++, PGI C++, etc.

– LAPACKライブラリ• Netlib LAPACK, Intel MKL, AMD ACML, etc.

l パラレル(並列列)実⾏行行に必要なもの– MPIライブラリ• OpenMPI, MPICH2, Intel MPI, etc.

– ScaLAPACKライブラリ23

ProteinDFのビルドに必要なもの (2)l configureスクリプトの作成に必要なもの– autoconf– automake– libtool24

configureスクリプトの作成
l configureスクリプトが⽤用意されていない場合、⾃自分で作成する必要ありl ソース内にあるbootstrap.shを実⾏行行

25configureスクリプトの実⾏行行
l configureオプションの表⽰示$	
  ./configure	
  -­‐-­‐help	  l 重要な変数
CXX

C++コンパイラの指定

MPICXX

MPIC++コンパイラの指定

CXXFLAGS

C++コンパイラへのオプショ(OpenMP等の指⽰示)l 重要なオプション--prefix=[dir]インストール先(cf. ${PDF_HOME})--with-blas=[lib]BLASライブラリの場所--with-lapack=[lib]

LAPACKライブラリの場所--with-scalapack=[lib]ScaLAPACKライブラリの場所
26

configureでのトラブル(1)l configureの出⼒力力を保存する$	  configure	
  2>&1	
  |	
  tee	
  out.configure	
  l configureがエラーで⽌止まった場合– config.logにエラーの原因が記載

l ライブラリの認識識を確認
checking	
  for	
  sgemm_	
  in	  -­‐mkl=cluster...	
  yes	
  checking	
  for	
  cheev_	
  in	  -­‐mkl=cluster...	
  yes	  BLAS
LAPACK

checking	
  for	
  mpic++...	
  mpiicpc	
  checking	
  for	
  MPI_Init...	
  yes	  MPIchecking	
  for	
  mpi.h...	
  yes	
  checking	
  for	
  sl_init_	
  in	
  -­‐mkl=cluster...	
  yes	
  ScaLAPACK

27

configureでのトラブル(2)l Intel MKLライブラリのリンク⽅方法– https://software.intel.com/en-us/articles/intelmkl-link-line-advisor

28

ProteinDFのビルドl makeの実⾏行行– トラブル対策のために出⼒力力保存を推奨$	
  make	  2>&1	
  |	
  tee	
  out.make	  – FOCUSでは約8分程度度• -j オプションで並⾏行行コンパイルも可$	
  make	  -­‐j	
  4	
  2>&1	
  |	
  tee	
  out.make	  l インストール	
  $	
  make	  install	
  2>&1	
  |	
  tee	
  out.make_install29

[補⾜足] tarballの作成
l bootstrap.shが実⾏行行できない(configureスクリプトが作成できない)
環境には、
予めconfigureスクリプトを⽤用意した
tarball(tar形式の圧縮ファイル)を作成$	
  make	  dist30

【演習】ProteinDF環境の構築l 演習に必要な環境変数を設定してください。
source	  /home1/glej/share/setup_PDF.sh	
  
– 備考	
  
• 環境変数PDF_HOMEに	  /home1/glej/share/ProteinDF.intelを指定しています。
• Intelコンパイラ+Intel MPIでビルドした環境です。	
  • /home1/glej/share/Python27	
  に	  Python 2.7.8を構築済みです。
31

ProteinDFの実⾏行行

32ProteinDF実⾏行行への準備l 計算ディレクトリの作成
l ⼊入⼒力力ファイル(fl_Userinput)の作成
l 作業⽤用ディレクトリ(fl_Work)の作成
l 環境変数の確認– OMP_NUM_THREADS:
1プロセスあたりのOpenMPスレッド数– OMP_SCHEDULE:
OpenMPスレッドの並列列処理理⽅方法33ProteinDFの実⾏行行⽅方法l 逐次(シリアル)版の実⾏行行– 実⾏行行ファイル: ${PDF_HOME}/bin/PDF.x	  – OpenMPを有効にしている場合、OpenMPによるスレッド並列列が有効l MPI並列列(パラレル)版の実⾏行行– 実⾏行行ファイル: ${PDF_HOME}/bin/PPDF.x	  – OpenMPを有効にしている場合、
hybrid並列列が有効– 実⾏行行⽅方法はMPI環境に依存
34⼊入⼒力力ファイルの概要(1)l step_control	  計算内容を指⽰示– create: ⼊入⼒力力ファイル解析(obsolete)– integral: pre-SCF処理理– guess: 初期電⼦子密度度の作成– scf: SCF計算– force: ⼒力力計算

35

⼊入⼒力力ファイルの概要(2)l method	  – rks:

閉殻計算– uks:

開殻計算– roks: 制限付き開殻計算

l method/rks/electron-­‐number: 電⼦子数l method/rks/occlevel: 占有軌道
– [1-­‐5,	
  8-­‐10]	
  のような記述も可能
36

⼊入⼒力力ファイルの概要(3)l scf_start_guess:– harris:

初期値の指定Harris汎関数法– density_matrix: user指定密度度⾏行行列列(guess.density.rks.mat)– lcao:user指定LCAO⾏行行列列(guess.lcao.rks.mat,	
  guess.occ.rks.vtr)

37

⼊入⼒力力ファイルの概要(4)l xc_functional:

交換相関汎関数– HF, SVWN, BLYP, B3LYPl J_engine:l K_engine:

クーロン項計算法
Fock交換項計算法– conventional
– RI
– CD

l XC_engine:

pureDFT XC項計算法– grid, gridfree, gridfree_CD38⼊入⼒力力ファイルの概要(5)l geometry/cartesian/input– 座標をカーテシアンで⼊入⼒力力– ダミー原⼦子(電荷)の⼊入⼒力力⽅方法:X	
  [x座標]	
  [y座標]	
  [z座標]	
  [電荷]	
  – ラベル機能[原⼦子]	
  @[ラベル]	
  [x座標]	
  [y座標]	
  [z座標]	
  39

⼊入⼒力力ファイルの概要(6)l 基底関数の⼊入⼒力力– basis-set/orbital:
基底関数– basis-set/density-auxiliary:
RI補助基底関数(クーロン項)– basis-set/exchange-auxiliary:
RI補助基底関数(交換相関項)– basis-set/gridfree:gridfree法補助基底関数(交換相関項)

l 基底関数セットは${PDF_HOME}/data/basis2に記載
40

[演習] ProteinDFの計算l shareディレクトリ(/home1/glej/share)に演習で使⽤用するファイルが置いてあります。
l ProteinDF_samplesディレクトリ以下にサンプルがありますので、⾃自分のディレクトリにコピーして使⽤用してください。
l サンプル内のバッチスクリプト(run_serial.sh)をバッチシステムに投⼊入(sbatch)して動作を確認してください。
sbatch	  run_serial.sh41

計算結果の可視化

42収束結果の表⽰示l 計算結果のアーカイブ$PDF_HOME/bin/pdf	
  	
  archive	  – pdfresults.db  が出⼒力力l 計算レポートの作成$PDF_HOME/bin/pdf	
  	
  report	  – reportディレクトリ中にグラフが出⼒力力	
  43

分⼦子軌道(MO)の描画l MOボリュームデータの作成– 計算ディレクトリにて実⾏行行$PDF_HOME/bin/pdf-­‐mkfld-­‐mo	
  -­‐c	  cubeファイル	
  	
  MO番号	
  …	
  l AVSフィールドデータ等が作成可能
l cubeファイルはChimera 等で表⽰示可能44

電⼦子密度度・静電ポテンシャルの描画l 電⼦子密度度ボリュームデータの作成$PDF_HOME/bin/pdf-­‐mkfld-­‐dens	
  -­‐c	  cubeファイル	  l ESPボリュームデータの作成$PDF_HOME/bin/pdf-­‐mkfld-­‐esp	
  -­‐c	  cubeファイル	  l AVSフィールドデータ等が作成可能
l cubeファイルはChimera  等で表⽰示可能45

タンパク質可視化ソフトウェアl UCSF Chimera– https://www.cgl.ucsf.edu/chimera/– Windows, MacOSX, Linuxで動作– Volume Dataの表⽰示⽅方法
1. [Tools] -> [Volume Data] -> [Volume Viewer]– Volume Viewerダイアログが表⽰示

2. [File] -> [Open Map…]– cubeファイルを開く46

[演習] ProteinDF計算結果の可視化l ProteinDFを計算したディレクトリ上で作業します。
1. ${PDF_HOME}/bin/pdf-­‐archive.py	
  で計算結果DBを作成します。
2. ${PDF_HOME}/bin/pdf-­‐report.py	
  で収束グラフを作成します。
–

作成されたグラフをローカルにコピーして表⽰示します。

3. 分⼦子軌道、電⼦子密度度、静電ポテンシャルのvolume data (cubeファイル)を作成します。
–

Chimera  がインストールされていればPDBファイルとcubeファイルをローカルにコピーして可視化できます。
47

注意事項

48

ProteinDFの動作様式
シリアル(逐次)版

パラレル(並列列)版

l 単⼀一プロセス実⾏行行l 複数プロセス実⾏行行– OpenMPスレッド並列列– MPI+OpenMP hybrid 並列列– ノード内並列列のみ– ノード間通信可能

MPI

OpenMP

49

ProteinDFの⾏行行列列保持⽅方法
replical 各ノードに⾏行行列列を保持– LAPACKで演算

distributedl 全ノードに⾏行行列列を分散– ScaLAPACKで演算

50

ProteinDFの並列列処理理⽅方法
divide-and-conquer法

master-slave法l タスク全体を処理理単位が分担して⾏行行う
並列列処理理⽅方法l 1つのmaster(プロセス)が多数のslave(プロセス)を制御する並列列処理理⽅方法l すべての処理理単位が処理理に参加l masterプロセスが必要l タスクが均等化しやすいl タスクの均等化が難しいl ProteinDFキーワード
parallel_processing_type	
  =	
  DC

l ProteinDF キーワード
parallel_processing_type	
  =	
  MS
51

線形従属性の排除l 巨⼤大な分⼦子を扱う場合、また広がりの⼤大きな基底関数を使う場合、線形従属の問題が発⽣生するl →  重なり積分S の固有値が⼩小さいものを排除l ProteinDFではorbital_independence_threshold
がその閾値
52

QCLO法による初期値の作成
QCLObotの概要

53

QCLO法l

QCLOを徐々に伸展させながら⼤大規模分⼦子の⾼高精度度な初期値を求める⽅方法l

⽤用語– Quasi-Canonical Localize Orbital (QCLO):• 擬カノニカル局在化軌道• カノニカル軌道と局在化軌道の両⽅方の性質をあわせ持つ– フレーム分⼦子:• 量量⼦子化学計算の計算単位– フラグメント:• フレーム分⼦子は1つ以上のフラグメントから構成• QCLOを作成する単位– 計算シナリオ:• QCLO法における計算⼿手順 (伸展⽅方法)• 重なり部分を持たせながら伸⻑⾧長する独特な⽅方法
54

電⼦子密度度⾏行行列列による初期値作成
a
a

b

a
a
b

b

0

0

b
55

QCLO法による初期値作成
a

b

c

a
a

b

b

a

c

c

d

0

0

b
b
b

c

d

c
d

0

0

c
d
密度度⾏行行列列だと

0

0

0

0

0

0

0

0

56

QCLObotの概要
l QCLO法に基づく(全)⾃自動量量⼦子化学計算プログラム– QCLO + bot, QC + robotl 特徴– 煩雑なQCLO計算を隠蔽– 任意のフラグメントに分割可能• タンパク質以外の巨⼤大分⼦子に適⽤用可– Pythonで記述• Python 2.x と 3.x サポート

– オープンソース: GPL v3

57

QCLObot のインストールl ソースコード– https://github.com/ProteinDF/QCLObotl ⼀一般的なPythonモジュールと同じ⽅方法でインストール$	
  python	
  setup.py	
  build	  $	
  python	
  setup.py	
  install	
  -­‐-­‐prefix=${PDF_HOME}	
  – 環境変数PYTHONPATHの設定をお忘れなく58

QCLObot モジュールl QcFrameクラス– 複数のQcFragmentを包含

l QcFragmentクラス– 複数のQcAtomを包含– 複数のQcFragmentを包含(⼊入れ⼦子)– 分⼦子構造はProteinDF_bridgeのAtomGroupから構築可能l QcAtomクラス– 原⼦子1つの位置・基底関数等の情報を保持
59

PDBファイルからのAtomGroup作成
l QCLObotのために、PDBからAtomGroupオブジェクトを作成
l pdb2brd.py でPDBファイルを変換
pdb2brd.py ⼊入⼒力力PDBファイル  出⼒力力brdファイル

l AtomGroupツリー構造
modelsmodel
chain
residue
atom

60

QCLObot  の計算 [演習]l モデリング済み1UAO_1H.mod.pdb中3残基を計算GLY TYR ASPl N末, C末にはACE基, NME基を付加– ペプチド結合を計算に取り込むためl step 1では1残基ごとに計算l step 2では2通りの初期値をテスト– 電⼦子密度度⾏行行列列による初期値– QCLO法による初期値
61

QCLO法計算スクリプトの例例  (1)import	  pdfbridge	
  as	
  bridge	
  import	  pdfpytools	
  as	
  pdf	
  import	  qclobot	
  as	
  qclo	  	  brdファイルのdef	
  main():	
  
読み込み
	
  	
  	
  	
  brdfile	  =	
  open("1UAO_1H.mod.brd",	
  'rb')	
  
	
  	
  	
  	
  brddata	
  =	
  msgpack.unpackb(brdfile.read())	
  
	
  	
  	
  	
  brdfile.close()	
  
	
  
	
  	
  	
  	
  models	
  =	
  bridge.AtomGroup(brddata)	
  AtomGroupツリー構造から
	
  	
  	
  	
  model	  =	
  models["model_1"]	
  chainの読み込み
	
  	
  	
  	
  chain	
  =	
  model["A"]	
  
	
  
	
  	
  	
  	
  frames	
  =	
  {}	
  
計算済みフレーム分⼦子記憶⽤用
	
  	
  	
  	
  	
  
	
  	
  	
  	
  step1(frames,	
  chain)	
  
	
  	
  	
  	
  step2_density(frames,	
  chain)	
  計算シナリオ
	
  	
  	
  	
  step2_QCLO(frames,	
  chain)62

QCLO法計算スクリプトの例例  (2)def	  step1(frames,	
  chain):	
  
	
  	
  	
  	
  modeling	
  =	
  bridge.Modeling()	
  
	
  	
  	
  	
  max_resid	
  =	
  chain.get_number_of_groups()	
  	
  1残基ごとのループ
	
  	
  	
  	
  for	  resid	
  in	
  range(1,	  max_resid	  +1):	
  
	
  	
  	
  	
  	
  	
  	
  	
  frg_res	
  =	
  qclo.QcFragment(chain[resid])	
  	
  空のQcFragment
	
  	
  	
  	
  	
  	
  	
  	
  ACE	  =	
  qclo.QcFragment()	
  
	
  	
  	
  	
  	
  	
  	
  	
  if	
  resid	
  >	
  1:	
  
N末側にACE基を付加
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  prev	
  =	
  chain[resid	
  -­‐1]	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ACE_atmgrp	
  =	
  modeling.get_ACE_simple(prev)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ACE	  =	
  qclo.QcFragment(ACE_atmgrp)	
  bridge.AtomGroupを返す
QcFragmentを作成
	
  
	
  	
  	
  	
  	
  	
  	
  	
  NME	  =	
  qclo.QcFragment()	
  C末側にNME基を付加
	
  	
  	
  	
  	
  	
  	
  	
  if	
  resid	
  <	
  max_resid:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ahead	  =	
  chain[resid	
  +1]	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  NME_atmgrp	
  =	
  modeling.get_NME_simple(ahead)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  NME	  =	
  qclo.QcFragment(NME_atmgrp)	
  
(続く)	
  
63

QCLO法計算スクリプトの例例  (3)
(続き)	
  
	
  	
  	
  	
  	
  	
  	
  	
  name	  =	
  'res_{}-­‐{}'.format(resid,	
  resid)	
  
	
  	
  	
  	
  	
  	
  	
  	
  frame	
  =	
  qclo.QcFrame(name	
  =	
  name)	
  
	
  	
  	
  	
  	
  	
  	
  	
  frame[name]	
  =	
  frg_res	  3つのフラグメントからなる
	
  	
  	
  	
  	
  	
  	
  	
  frame['ACE']	
  =	
  ACE	
  フレーム分⼦子を作成
	
  	
  	
  	
  	
  	
  	
  	
  frame['NME']	
  =	
  NME	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  frames[name]	
  =	
  frame	  フレーム分⼦子トポロジーの記憶
	
  	
  	
  	
  	
  	
  	
  	
  setup_calc_conf(frame.pdfparam)	
  計算条件の設定
	
  
	
  	
  	
  	
  	
  	
  	
  	
  frame.calc_sp(dry_run	
  =	
  False)	
  フレーム分⼦子の	
  single point計算
	
  	
  	
  	
  	
  	
  	
  	
  #	
  for	
  guess_density	
  
	
  	
  	
  	
  	
  	
  	
  	
  frame.pickup_density_matrix()	
  次step⽤用の準備
	
  
	
  	
  	
  	
  	
  	
  	
  	
  #	
  for	
  guess_QCLO	  (密度度⾏行行列列⽤用)
	
  	
  	
  	
  	
  	
  	
  	
  frame.calc_lo()	
  
	
  	
  	
  	
  	
  	
  	
  	
  frame.pickup_lo()	
  次step⽤用の準備(QCLO⽤用)64

QCLO法計算スクリプトの例例  (4)	  
#	  密度度⾏行行列列を初期値とした3残基の計算	
  フレーム分⼦子フラグメントdef	
  step2_density(frames,	
  chain):	
  
	
  	
  	
  	
  frame	
  =	
  qclo.QcFrame(name	
  =	
  'res_1-­‐3.density')	
  
	
  	
  	
  	
  frame['res_1-­‐1']	
  =	
  frames['res_1-­‐1']['res_1-­‐1']	
  
	
  	
  	
  	
  frame['res_2-­‐2']	
  =	
  frames['res_2-­‐2']['res_2-­‐2']	
  
	
  	
  	
  	
  frame['res_3-­‐3']	
  =	
  frames['res_3-­‐3']['res_3-­‐3']	
  
	
  	
  	
  	
  frame['ACE']	
  =	
  frames['res_1-­‐1']['ACE']	
  3残基フレーム分⼦子
	
  	
  	
  	
  frame['NME']	
  =	
  frames['res_3-­‐3']['NME']	
  
の構築
	
  
	
  	
  	
  	
  setup_calc_conf(frame.pdfparam)	
  
	
  	
  	
  	
  frame.guess_density()	
  密度度⾏行行列列による初期値を作成
	
  
	
  	
  	
  	
  frame.calc_sp(dry_run	
  =	
  False)	
  65

QCLO法計算スクリプトの例例  (5)	  この名前のディレクトリが作成される#	
  QCLOを初期値とした3残基の計算	
  def	
  step2_QCLO(frames,	
  chain):	
  
	
  	
  	
  	
  frame	
  =	
  qclo.QcFrame(name	
  =	
  'res_1-­‐3.QCLO')	
  
	
  	
  	
  	
  frame['res_1-­‐1']	
  =	
  frames['res_1-­‐1']['res_1-­‐1']	
  
	
  	
  	
  	
  frame['res_2-­‐2']	
  =	
  frames['res_2-­‐2']['res_2-­‐2']	
  
	
  	
  	
  	
  frame['res_3-­‐3']	
  =	
  frames['res_3-­‐3']['res_3-­‐3']	
  
	
  	
  	
  	
  frame['ACE']	
  =	
  frames['res_1-­‐1']['ACE']	
  
	
  	
  	
  	
  frame['NME']	
  =	
  frames['res_3-­‐3']['NME']	
  
	
  
	
  	
  	
  	
  setup_calc_conf(frame.pdfparam)	
  QCLO作成には	
  重なり積分が必要
	
  	
  	
  	
  frame.calc_preSCF(dry_run	
  =	
  False)	
  
	
  	
  	
  	
  
	
  	
  	
  	
  frame.guess_QCLO()	
  QCLOによる初期値を作成
	
  
	
  	
  	
  	
  frame.calc_sp(dry_run	
  =	
  False)66

なぜStep2でQCLO法が使えるのかl ACEとNMEを
隣隣接残基を基に付加しているため-C-C=O, N(H)-C- が重なり部分として認識識
元のペプチド鎖

ACE/NME末端処理理

67

QCLO法計算のコツl 相互作⽤用の強いものほど先に計算– SS結合・イオン対– タンパク質⼆二次構造(⽔水素結合ネットワーク)– ⾦金金属錯体l 対称性の良良いフラグメントを作成しない– LO計算・軌道のpickupに失敗• 振り分けに困る分⼦子軌道が存在

68

QCLObot 今後の開発計画
l 使いやすさの向上– スクリプトベースからテキストベースに– 計算シナリオの⾃自動化• 分⼦子構造・相互作⽤用ダイアグラムに基づく計算シナリオの提案l ⾼高速化・並列列化– LO・QCLO作成処理理の⾼高速化・並列列化– フレーム分⼦子計算の並⾏行行処理理・計算機マネジメントl 構造最適化・遷移状態計算・DFT-MDの実装
69

【演習】3残基QCLOの計算

l /home1/glej/share/QCLO_samples/
1UAO	
  を
⾃自分の任意のディレクトリにコピーします。
l run_serial.sh をバッチシステムに投⼊入します。
l 密度度⾏行行列列による初期値とQCLO法による初期値の違いを
収束カーブ・軌道準位などから確認してください。
70

初期値の精度度⽐比較
密度度⾏行行列列による初期値

QCLO法による初期値

71

さいごに

72

ご⽀支援・ご協⼒力力のお願いl 質問・バグ・要望などがありましたら、
是⾮非お寄せください。
GitHubのIssuesが便便利利です。
– ⽇日本語使⽤用可です。

73