#author("2019-11-26T17:37:08+00:00","default:sysosa","sysosa")
#author("2020-02-15T15:24:13+00:00","default:sysosa","sysosa")
EnvironmentModulesを実際に使用するに当たって、PATH環境変数らの遷移を確認してみる


ログイン直後のbash/tcsh(csh)のパスは下記となっている(CentOS7.6)
#code(nonumber){{
bash
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/$USER/.local/bin:/home/$USER/bin

tcsh(csh)
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
}}


仮に Relion-3.0-beta-2 の&color(magenta){modulefile};  が下記として
#code(nonumber){{
#%Module1.0

prepend-path PATH            /Appl/relion-3.0-beta-2/bin
prepend-path PATH            /usr/lib64/openmpi/bin
prepend-path LD_LIBRARY_PATH /usr/lib64/openmpi/lib
}}
そして、eman2.22 の&color(magenta){modulefile};  が下記とした場合、
#code(nonumber){{
#%Module1.0

prepend-path PATH            /Appl/eman2.22/bin
}}

先に Relion をmoduleコマンドでloadして、それからEMAN2をloadすると mpirun はEMAN2由来に限定されてしまう。
#code(nonumber){{
[saber@c ~]$ module load relion/3.0-beta-2
[saber@c ~]$ module load eman2/2.22
[saber@c ~]$ which mpirun
/Appl/eman2.22/bin/mpirun
[saber@c ~]$
}}

全体のPATHから見ると下記になる。
#code(nonumber){{
[saber@c  ~]$ echo $PATH
/Appl/eman2.22/bin:/usr/lib64/openmpi/bin:/Appl/relion-3.0-beta-2/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[saber@c ~]$
}}
「prepend-path」を使用しているから仕方ないのだが、逆にappend-pathで環境変数の末尾につけるとOS提供のpythonが使われる。
この辺は難しい。
単に、アプリ毎にmoduleをloadさせればいいのかな?って思っている。

なら再度relionをロードすれば..と思えるが、既にあるのでloadしてくれないです。
結局は eman2/2.22 をunload させればOKとなる。



***modulefile サンプル [#ya00d424]
relion-3.0-beta-2
#code(nonumber){{
#%Module1.0
set RELION /Appl/relion-3.0-beta-2
set mpi    /usr/lib64/openmpi
 
prepend-path PATH            $RELION/bin:$mpi/bin
prepend-path LD_LIBRARY_PATH $RELION/lib:$mpi/lib

setenv RELION_QSUB_TEMPLATE  $RELION/bin/qsub.sh
setenv RELION_QUEUE_NAME     s3
setenv RELION_QUEUE_USE      false
 
setenv RELION_CTFFIND_EXECUTABLE     /Appl/ctf/ctffind4.exe
setenv RELION_MOTIONCOR2_EXECUTABLE  /Appl/local/bin/MotionCor2
setenv RELION_GCTF_EXECUTABLE        /Appl/Gctf/bin/gctf
setenv RELION_RESMAP_EXECUTABLE      /Appl/local/bin/ResMap
}}

relion-2.1
#code(nonumber){{
#%Module1.0
set RELION /Appl/relion-2.1
set mpi    /usr/lib64/openmpi
 
prepend-path PATH            $RELION/bin:$mpi/bin
prepend-path LD_LIBRARY_PATH $RELION/lib:$mpi/lib
 
setenv RELION_QSUB_TEMPLATE  $RELION/bin/qsub.sh
setenv RELION_QUEUE_NAME     s3
setenv RELION_QUEUE_USE      false
 
setenv RELION_CTFFIND_EXECUTABLE     /Appl/ctf/ctffind4.exe
setenv RELION_MOTIONCOR2_EXECUTABLE  /Appl/local/bin/MotionCor2
setenv RELION_GCTF_EXECUTABLE        /Appl/Gctf/bin/gctf
setenv RELION_RESMAP_EXECUTABLE      /Appl/local/bin/ResMap
}}

eman2.12
#code(nonumber){{
#%Module1.0
set EMAN2DIR /Appl/eman2.12
setenv EMAN2DIR $EMAN2DIR 
prepend-path PATH $EMAN2DIR/bin:$EMAN2DIR/extlib/bin
prepend-path PYTHONPATH $EMAN2DIR/lib:$EMAN2DIR/bin
}}

eman2.22
#code(nonumber){{
#%Module1.0
set EMAN2DIR /Appl/eman2.22
setenv EMAN2DIR $EMAN2DIR 
append-path PATH /Appl/eman2.22/bin
}}
eman2.3
#code(nonumber){{
#%Module1.0
set EMAN2DIR /Appl/eman2.3
setenv EMAN2DIR $EMAN2DIR
append-path PATH $EMAN2DIR/bin

}}
このmodulefileをロードする前に relion 関係をunloadする必要がある。mpirunが被るため。

-phenix
#code(nonumber){{
#%Module1.0
#
set phenix /Appl/phenix-1.17.1-3660
#
setenv PHENIX $phenix
setenv PHENIX_VERSION  1.17.1-3660
prepend-path PATH $phenix/build/bin
}}

-coot
PATHで定義するとpythonが使えなくなる
#code(nonumber){{
#%Module1.0
#
set-alias coot /Appl/coot-Linux-x86_64-rhel-6-pre-release-gtk2-python/bin/coot
}}
-pymol
#code(nonumber){{
#%Module1.0
prepend-path PATH /Appl/pymol/bin
}}

***使っているshellで分ける [#c855fe50]
bashとcshで「RELION_QSUB_TEMPLATE」を分けるとかできそう
#code(nonumber){{
#%Module1.0


if { $env(SHELL) == "/bin/bash" } {
  setenv RELION_QSUB_TEMPLATE $RELION/bin/qsub.sh
} elseif { $env(SHELL) == "/bin/csh" } {
  setenv RELION_QSUB_TEMPLATE $RELION/bin/qsub.csh
} elseif { $env(SHELL) == "/bin/tcsh" } {
  setenv RELION_QSUB_TEMPLATE $RELION/bin/qsub.csh
}
}}
そうすると、qsub.sh/qsub.cshを用意する必要があるけど、特にqsub.csh内でmodule loadが使えるようになる


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS