/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not foundのエラーがでた場合の対処
コンパイルができたのに上のエラーが出る場合は、LD_LIBRARY_PATHが正しく設定されていない可能性が高い。つまりは、コンパイル時のgcc,g++の環境と異なるために起きている。
gcc,g++をインストール際に出た以下の文を参考に
export LD_LIBRARY_PATH="/home/usr/bin/lib/../lib64:$LD_LIBRARY_PATH"
のように毎回設定する必要がある。
ibraries have been installed in:
/home/usr/bin/lib/../lib64
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
おまけ:gccのインストール
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.5.0/gcc-7.5.0.tar.gz
tar xzf gcc-7.5.0.tar.gz
cd gcc-7.5.0
./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-language=c,c++ --prefix=${HOME}/bin --disable-bootstrap --disable-multilib
make -j4
make install
ファイル圧縮まとめ(Linux, tar, )
tarコマンドでのディレクトリの圧縮(tar.gzを基本に記述)
圧縮: tar zcvf xxx.tar.gz xxx/ ※tar.bz2の場合、zcvf→jcvf, tar.xzの場合、zcvf→Jcvf
展開: tar zxvf xxx.tar.gz ※tar.bz2の場合、zxvf→jxvf, tar.xzの場合、zxvf→Jxvf
内容を見る:tar ztf xxx.tar.gz
一部展開:tar xvzf xxx.tar.gz (展開したいもの)
コマンドオプションの意味
c (create):新しくtarファイルを作る。
f (filename):圧縮ファイル名指定
v (varbose):状況を表示する。
x (extract):解凍する
z: gz
j: bz2
J:xz
LigParGenのバージョンエラーの解決
LigParGenのバージョンエラーの解決のまとめ
[エラー1]
LBCC converter is activated
1 molecule converted
89 audit log messages
Traceback (most recent call last):
File "lLigParGen", line 11, in <module>
load_entry_point('LigParGen==2.1', 'console_scripts', 'LigParGen')()
File "LigParGen/Converter.py", line 90, in main
convert(**vars(args))
File "LigParGen/Converter.py", line 143, in convert
GenMolRep('%s.smi' % resname, optim, resname, charge)
File "LigParGen/CreatZmat.py", line 51, in GenMolRep
AsitIsZmat(ifile,optim,resid)
File "LigParGen/CreatZmat.py", line 32, in AsitIsZmat
print_ZMAT(ATYPES, G_mol, mol_icords, COOS, '%s.z' % resid, resid)
File "LigParGen/CreatZmat.py", line 183, in print_ZMAT
Z_NO[i + 2] = G_mol.node[i]['atno']
AttributeError: 'DiGraph' object has no attribute 'node'
[エラ−1の解決]
File "LigParGen/CreatZmat.py"の
nodeをnodesに書き換える。
これを治すをまた同じエラーがでるので、同様に修正
[エラー2]
LBCC converter is activated
1 molecule converted
89 audit log messages
MOLECULE HAS A CHARGE of 0
Traceback (most recent call last):
File "LigParGen", line 11, in <module>
load_entry_point('LigParGen==2.1', 'console_scripts', 'LigParGen')()
File "/home/users/caj/.local/lib/python3.6/site-packages/LigParGen/Converter.py", line 90, in main
convert(**vars(args))
File "/home/users/caj/.local/lib/python3.6/site-packages/LigParGen/Converter.py", line 162, in convert
mainBOSS2OPM(resname, clu)
File "LigParGen/BOSS2OPENMM.py", line 259, in mainBOSS2OPM
boss2opm(resid, mol, pdb_file)
File "/home/users/caj/.local/lib/python3.6/site-packages/LigParGen/BOSS2OPENMM.py", line 234, in boss2opm
bnd_df, connects = boss2opmBond(num2opls, molecule_data, st_no, xmlf)
File "LigParGen/BOSS2OPENMM.py", line 129, in boss2opmBond
(bnd_df.ix[i]['T1'], bnd_df.ix[i]['T2'], bnd_df.ix[i]['RIJ'], bnd_df.ix[i]['KIJ']))
File "python3.6/site-packages/pandas/core/generic.py", line 5141, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'ix'
[エラ−2の解決]
File "python3.6/site-packages/pandas/core/generic.py"の
ixをlocに書き換える。
[エラー3]
TypeError: concat() got an unexpected keyword argument 'join_axes'
[エラー3の解決]
/LigParGen/BOSS2OPENMM.pyの一部書き換え。
#final_df = pd.concat([dhd_df, at_df], axis=1, join_axes=[at_df.index])を
at_df.index = dhd_df.index #by user 2022/6/16
final_df = pd.concat([dhd_df, at_df], axis=1) #by user 2022/6/16
にする。
これを治すをまた同じエラーがでるので、同様に修正
結構量はあるが全部修正すれば動くはず。
また、ファイルの出力は/tmpディレクトリに行われる。
カレントディレクトリには何もファイルが出力されないが正常。
異なる複数のシェルスクリプトを並列化(バックグラウンド実行せず)
バックグラウンド並列が使えない状態で、異なる複数のシェルを実行する方法を紹介する。
以下の内容をシェルに記述して実行。
JOB_N=5
#############################
cat <<'EOF' > branch.sh
#!/bin/bash
if [ $1 -eq 1 ]; then
sh job1.sh
elif [ $1 -eq 2 ]; then
sh job2.sh
elif [ $1 -eq 3 ]; then
sh job3.sh
elif [ $1 -eq 4 ]; then
sh job4.sh
elif [ $1 -eq 5 ]; then
sh job5.sh
fi
EOF
#############################
seq $JOB_N| xargs -P $JOB_N -I{} sh ./branch.sh {}
rm branch.sh
複数ファイルが必要でごちゃごちゃするが、これで2つのシェルを並列化できる。
追記
gromacsのインストール
メモ
tar zxvf fftw-3.3.8.tar.gz
cd fftw-3.3.8
./configure --prefix=/home/local --enable-float --enable-sse --enable-shared
make
make -j8 install
cd ..
rm -r gromacs-2019.4
tar zxvf gromacs-2019.4.tar.gz
cd gromacs-2019.4
mkdir build
cd build
cmake .. -DGMX_FFT_LIBRARY=FFTW3 -DCMAKE_INSTALL_PREFIX='/home/local/gromacs/2019.4' -DFFTWF_LIBRARY='/home/local/lib/libfftw3f.so' -DFFTWF_INCLUDE_DIR='/home/local/include'
make -j16 install
logout
ガウスの(発散)定理
前回出てきた数学記号divに関係する定理として「ガウスの(発散)定理」がある。
ガウスの定理を言葉でいうと「ある体積からの湧き出し量とその体積表面から出ていく量は等しい」というもの。この定理は言っていることは当たり前なことだが、この定理は、体積積分を面積分にする際に役立つ(逆も然り)。
式で表すと次のようになる。
∫v div(A) dV=∮s An dS
ここで、nは、法線方向を示している。
当たり前なことだが、なぜある体積中の微小体積からの湧き出し総量とその体積表面から出ていく量は等しいかを説明すると、周りが微小体積に囲まれている微小体積からの湧き出しは、周りの微小体積の湧き出しとキャンセルされ、ある体積の表面になっている微小体積表面からの湧き出しのみが、ある体積からの湧き出し量となるためである。中にあるスプリンクラーが見えようが見えまいが、つまり、体積内からどんな形で湧き出しているのことは、ある体積からの湧き出し量を考える時にはどうでもよいということ。
具体的にどんな時役立つかであるが、以下のようになった時に
∮s An dS + ∫v B dV=0
次のようにまとめることができる。
∫v div(A) dV + ∫v B dV=0
∫v (div(A) dV + B) dV=0
div(A) dV + B=0