/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つのシェルを並列化できる。

 

追記

#!/bin/bash
 
function test_t(){
echo $1 > $1.txt
}
 
export -f test_t
seq 3| xargs -t -P 3 -I{} bash -c 'test_t {}'

 

 

 

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

シェルスクリプトでのpythonの実行

ファイルを新たに作らず、pythonシェルスクリプトで実行するためのメモ。

#!/bin/bash

pscr=`cat << EOS

for i in range(0,10):

 print("hello")

EOS`

python3 -c "$pscr"

メモ2:最後の""が重要忘れずに。

ガウスの(発散)定理

前回出てきた数学記号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