以下の例はx86-32bit、Redhat 8上のマシンで構築・動作を試されたものです。 インストールするPCの環境に従いアレンジしてください。
CNSsolveのウェブサイトよりCNSプログラムを入手します。
(注)近年のLinuxでは、CNS v1.2のほうがインストールし易いようですが、
当方ではv1.2による計算の挙動や結果を確認していません。
もし、v1.2を利用するときは各自の責任でお願いします。
CNSプログラムをインストールしたいディレクトリに移動します。
(注)CNSをインストールする場所によっては管理者権限が必要となります。
また、CNSをビルドするためのコマンドがない場合はPCの管理者と相談してください。
以下の例では、自分のアカウントのホームディレクトリにCNSプログラムのディレクトリを作成します。
$ mv cns_solve_1.1_basic_inputs.tar.gz $HOME/
$ mv cns_solve_1.1_data.tar.gz $HOME/
$ mv cns_solve_1.1_test.tar.gz $HOME/
これらの圧縮アーカイブを解凍・展開します。
$ cd $HOME/
$ gzip -d cns_solve_1.1_*
$ tar -xvf cns_solve_1.1_basic_inputs.tar
$ tar -xvf cns_solve_1.1_data.tar
$ tar -xvf cns_solve_1.1_test.tar
SAS_CNSプログラムの圧縮アーカイブをダウンロードして、CNSのホームディレクトリに置きます。
SAS_CNSのダウンロード
$ mv sas_cns.tar.gz $HOME/cns_solve_1.1/
CNSのホームディレクトリに移り、圧縮アーカイブを解凍・展開します。
$ cd $HOME/cns_solve_1.1/
$ gzip -d sas_cns.tar.gz
$ tar -xvf sas_cns.tar
CNSの“source”ディレクトリのバックアップをとり、以下のコマンドを実行します。
$ cp -a ./source/ ./source.org/
$ cp -i ./sas_cns/sas_cns_source/* ./source/
“vi”かテキストエディタで以下のファイルを次のように編集します。
./source/cns.f の中で、
"command parsing"セクション(227行目より)の一番下に以下の行を追加する。
ELSE IF (WD(1:4).EQ.'SMIN' ) THEN
CALL SMINREAD
ELSE IF (WD(1:4).EQ.'WMIN' ) THEN
CALL WTMIN
./source/energy.f の中で、
1. サブルーチン“ENERGY”の中のエネルギー項呼び出しセクションで、
“bond angle database energy”項目(157行目より)の後方に以下の行を追加する。
2. スロットを定義するサブルーチン "ENEINI"の中で(241行目より)、
“if defined(CNS_SOLVE_COMPILE)”項目の最後尾(303行目の後ろ)に以下の行を追加する。
./source/ener.incにおいて、以下の行を追加する。
INTEGER SSCSFIT, SSCSMIN
PARAMETER (SSCSFIT=38)
PARAMETER (SSCSMIN=39)
./instlib/machine/supported/linux/Makefile.headerの18行目、
CFLAGS = -O -ffast-math -DCNS_ARCH_TYPE_$(CNS_ARCH_TYPE) $(EXT_CCFLAGS)
の次に以下の行を追加する。
INCLUDES =
LIBS = -lm
./instlib/source/Makefile.protoにおいて、
1. 17行目“dependencies”セクションの記述を以下のように修正。
(修正前)
DEPENDS = $(OBJS) dmemory.o machine_c.o
(修正後)
SHTX = Dshiftx.o Nn.o Ssbond.o Residue.o Hetatm.o Vector.o Torison.o \
Cs.o Phipsi.o Cspline.o Hydrogens.o Rings.o Es.o Proline.o Hbond.o \
Optimize.o Display.o Dss.o
DEPENDS = $(OBJS) $(SHTX) dmemory.o machine_c.o
2. 45行目あたりの“rule for the executable itself”セクションの直前に、
“./sas_cns/rule_shiftx.txt”に書かれている記述文すべてを挿入します。
3. “rule for the executable itself”セクションの中の以下の行を修正します。
(修正前)
$(LD) -o cns_solve-$$cns_string.exe $(OBJS) dmemory.o machine_c.o \
(修正後)
$(LD) -o cns_solve-$$cns_string.exe $(OBJS) $(SHTX) dmemory.o machine_c.o \
CNSsolveの場所を定義するために、“./cns_solve_env”を編集します。
18行目、setenv CNS_SOLVE '_CNSsolve_location_' の部分を、インストールするCNSプログラムの場所に置き換えます。
setenv CNS_SOLVE '~/cns_solve_1.1/'
CNSをコンパイルします。
自分のPCにインストールされているFortranコンパイラを確認して、以下のコマンドを使い分けてください。
make install
または、
make g77install
(注)CNSのインストール詳細と利用方法については CNSsolveのウェブサイトを参照してください。
無事にコンパイルが終了したらシェルの環境変数を設定します。 自分が利用するシェルの設定ファイルに以下の行を追加します。
・Cシェルの場合
vi $HOME/.cshrc
source $HOME/cns_solve_1.1/cns_solve_env
・Bシェルの場合
$ vi $HOME/.bashrc
. $HOME/cns_solve_1.1/.cns_solve_env_sh (注:先頭の“.”(ドット)は必要です)
そして、上記のファイル(“.cns_solve_env_sh”)を編集します。
$ vi $HOME/cns_solve_1.1/.cns_solve_env_sh
18行目を、以下のように記入します。
CNS_SOLVE=$HOME/cns_solve_1.1/
保存したら、シェル窓を閉じてもう一度立ち上げます。
すべての数値パラメータは、倍精度数として処理されるように変更されます。
“main.c”はCNSのサブルーチンとなるように変更しました。 ファイル名は“Dshiftx.c”です。
“Dss.c”
1. 二次構造エレメントの帰属は 導関数計算ループ中にスタティックとなります。
“Hbond.c”
1. 水素結合は導関数計算ループ中にスタティックとなります。
2. HBパートナーはここで特定され、後の使用のためRz構造中に保存されます。
“Es.c”
1. あまりに近傍にコンタクトした2原子間に対するES効果の計算は避けました。
“Optimize.c”
1. ファクターテーブルにおいて、
パラメータchi, chi+1, chi-1, ss, ssp1, ssm1, ha1bond, ha2bond, hnbond, obondは、
三次スプライン補間によって平滑化しました。
2. ハイパーサーフェスの参照は新しいMDステップ毎に実行されます。
同じMDステップでの導関数計算ループの間、 その参照値は対象となる原子を含む残基、
さらに2つ前後の残基に対してのみ更新されます。
水素結合パートナーを含んだ残基に対しても更新がなされます。
同じMDステップにおいて導関数計算ループ直前に参照された値は、他の残基に使用されます。
3. サブルーチン“twoSplineLookup2”において, 補間したいポイント周辺で局所的に補間が実行されます。
“minerca1.h”
“minercb1.h”
“minerco1.h”
“miner15n1.h”