本家様 https://www3.mrc-lmb.cam.ac.uk/relion//index.php?title=Main_Page
ここではこの relion-3.1.Xを CentOS 8 にインストールしてみます
GPU-acceleration版 Relion/GPU
CPU-acceleration版 Relion/icc
ジョブキューイングシステムを使う
Relion/qsub/original カスタマイズ版
Relion/OpenPBS
on the fly処理
Relion/relion_it.py
Relion/macOS, Relion/ubuntu, Relion/Dockerfile
過去ページ Relion2.180803
Gautomarchの結果をRelionで利用するにはRelion/Gautomatch
日本語訳チュートリアル
九州工業大学 生命情報工学科 情報工学部 安永研究室様にて公開されております。
http://www.yasunaga-lab.bio.kyutech.ac.jp/ja/
RELION3.1チュートリアル
RELION3チュートリアル
relionのソースコードを入手する †
gitで提供されている. 提供先はこちら https://github.com/3dem/relion
まずはソースコードを入手します
mkdir -p /apps/src
cd /apps/src/
git clone https://github.com/3dem/relion
*開発環境をインストールする(yum groupinstall "Development Tools")とgitもインストールされます
gitの操作 †
「https://github.com/3dem/relion」のサイトを見ていると
Branchの最新版は常に更新されている.
Branchの最新版で問題ないのがmasterにアップされ、
「リリース」と定義されたのが「git tag」で出されている. そんな感じでしょうか. 間違っているかもしれないけど
ここではリリース版を使うようにします。
リリース品は「git tag」で確認できます.
[root@c relion]# git tag
2.0.3
2.1
2.1.b1
3.0
3.0.1
:
3.0.8
3.1.0
3.1.1
[root@c relion]#
ここでは「3.1.1」と使いたいと思います
[root@c relion]# git checkout -b 3.1.1 refs/tags/3.1.1
Switched to a new branch '3.1.1'
[root@c relion]#
(確認)
[root@c relion]# git branch
* 3.1.1
master
[root@c relion]#
とgitで取ってきたソースの内容は3.1.1に変更されました.
コンパイル環境の準備 †
https://github.com/3dem/relion
を拝読すると
ubuntuなら
sudo apt install cmake build-essential mpi-default-bin mpi-default-dev libfftw3-dev
として追加パッケージをインストールせよとなっているが、ここではCentOS 8でコンパイルするので
関連アプリも合わせて下記をインストールします。
[root@c ~]# dnf groupinstall "Development Tools"
[root@c ~]# dnf install \
cmake \
openmpi-devel \
libX11-devel \
fftw-devel \
libtiff-devel \
texlive-latex-bin \
texlive-cm \
texlive-dvips \
ghostscript \
evince \
qpdfview
(CentOS7では追加で「fltk-fluid」パッケージも追加します)
[root@c ~]# yum install fltk-fluid
(CentOS8では「fltk-fluid」が標準から外れたためサードパーティの「OKey」リポジトリから入手します
[root@c ~]# curl -O http://repo.okay.com.mx/centos/8/x86_64/release/fltk-fluid-1.3.4-5.el8.x86_64.rpm
[root@c ~]# dnf localinstall ./fltk-fluid-1.3.4-5.el8.x86_64.rpm
*細目
cmake : ビルド自動化に必須。昔の「configure」っぽいもの
openmpi-devel : 並列計算向け
libX11-devel : GUIを利用するなら
fftw-devel : fftライブラリ
libtiff-devel : tiffライブラリ
evince : pdf ビューア
qpdfview : pdf ビューア(evinceが使えないなら)
texlive-latex-bin : 出力にlatexを使っているから
texlive-cm : latex向けフォント
texlive-dvips : latexをpsへ
ghostscript : pdfに変換するために
fltk-fluid : GUIインターフェースを利用するなら
コンパイル †
GPUを使ったacceleration版とCPUに含まれている拡張命令を使ったacceleration版が用意できる
EnvironmentModules †
EnvironmentModulesを使用するなら下記のような「/etc/modulefiles/relion/3.1」を作成します.
参照 EnvironmentModules/sample
そして各自の.bashrc/.cshrcの末尾に
「module load relion/3.1」
を追記します。
これで新しいターミナルで「relion」と打てばrelion-3.1の場面が表示されます。
あるいは共通のスクリプトとして「/apps/em.sh」ファイルを作って中身を下記のように記載して
module load relion/3.1
module load chimera
module load pymol
module load coot
:
:
各自の.bashrc/.cshrcの末尾に「/apps/em.sh」ファイルを読ませるようにする
(.bashrcなら)
if [ -f /apps/em.sh ]; then
. /apps/em.sh
fi
(.cshrc/.tcshrcなら)
if ( -f /apps/em.sh ) then
source /apps/em.sh
endif
利点としては「/apps/em.sh」ファイルを修正すれば、一括で既定でロードされるアプリが出意義出来るようになります.
事前に/etc/skel/(.bashrc|.cshrc)に上記を記載いしておけば、新たなユーザを作成すると即座にその
アプリが使えるようになります。
「/etc/bashrc」とか「/etc/csh.cshrc」に記載するのもありかな.
Relion起動 †
ターミナルを立ち上げて、「relion」と入力します

メモ1 †
(削除)
メモ2 †
2D classificationで「-K」の値を大きく取るとmpi当たりのメモリー要求が高くなります。
っで落ちることがあります。
メモ3 †
relionを起動して、何も操作しないと1時間後に自動的に落ちる。
それを避けるには起動時に下記引数を付ける
relion --idle 36000 (10時間)
既定は3600(1時間)。
*「0」が使えないみたい
メモ4 †
粒子データをより高速なストーレジ(scratch)に移して計算することが出来ます。
(計算が速くなる可能性があります)
方法は、Relionの「Copy particles to scratch directory:」欄をその高速なストレージに割り当てます。
例: 「/scratch/<ユーザ名>」 とか
計算が始まると、この指定した場所に粒子データが書き込まれます。(/scratch/<ユーザ名>/relion_volatile/particles.mrcs)
正常終了すれば自動的にこのファイルは削除されます。
ですが、計算が途中でこけると残ったまま。
っで、それを「systemd-tmpfiles-clean」で自動削除するには下記のようにします。
[root@c ~]# cat /etc/tmpfiles.d/scratch.conf
v /scratch 1777 root root 1d
[root@c ~]# reboot
これで再起動後には /scratch が 1777 で用意され、その中のファイル/ディレクトリは
atime(アクセス時間)/mtime(修正時間)/ctime(作成時間)共に 1day 以上空きがあるものが削除されます。
なので途中で止まったrelionで作られた「particles.mrcs」を一日以内に削除されるようになります。
当然計算中のファイルは、atime(アクセス時間)が1dayより短いので削除対象にはなりません。
実際には1day(1d)でなく、30min(30m)でもいいような気がするけど。そうなると
「systemd-tmpfiles-clean.timer」の「OnUnitActiveSec=1d」の値を修正する必要がある。
注意
/scratchのファイルシステムが noatime だとatime(アクセス時間)の更新がされないので注意
メモ5 †
普段既定のopenmpi(/usr/lib64/openmpi/bin/)を使うが、珠にintel ccでコンパイルされた
openmpi(/Appl/local/openmpi-1.10.7_intel-18.0.2/bin/)とかを使う場合、「mpirun」は
絶対指定で行うこと。そうしないと「ORTE_ERROR_LOG」が発生する。
メモ6 †
関連アプリ
品目 | 入手先 | 2008時点の最新 | 備考 |
ctffind-4 | http://grigoriefflab.janelia.org/ctffind4 | ctffind-4.1.13 | |
MotionCor2 | http://msg.ucsf.edu/em/software/motioncor2.html | MotionCor2 v1.3.2 | cuda-8.0, 9.2, 10.0, 10.1, 10.2に対応 |
Gctf | https://www.mrc-lmb.cam.ac.uk/kzhang/ | Gctf_v1.18 | cuda-8.0, 9.0, 9.1, 9.2 に対応 |
ResMap | http://resmap.sourceforge.net/ | ResMap-1.1.4 | |
Gautomatch | https://www.mrc-lmb.cam.ac.uk/kzhang/ | Gautomatch_v0.56 | cuda-7.0, 7.5, 8.0, 9.1, 10.1に対応 |
メモ7 †
メモリー使用量(見当違いがあるかも)
topコマンドでにて下記のように表示されている。この計算機はメモリー128GBで、4GPUマシンである。
VIRTは「仮想イメージ」と言われ、当該プロセスの全ての仮想メモリを意図する。relion関係で4プロセスで合計216GBなのだが、「仮想メモリ」に展開されている量なので実メモリーには関係ない。
RESは当該プロセスで使用している物理メモリーの量を示す。下記でrelion関係で消費している物理メモリーは5.9G+6G+6G+6G+2.7G -> 26.6GB.
%MEMは当該プロセスのメモリ使用率を示す。 RESが6GBなので、6G/128G =0.046 なので %MEMは 4.7% と表記される。
top - 15:05:50 up 33 days, 9:58, 1 user, load average: 10.75, 10.55, 10.55
Tasks: 290 total, 2 running, 288 sleeping, 0 stopped, 0 zombie
%Cpu(s): 65.3 us, 6.6 sy, 0.0 ni, 25.7 id, 2.5 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 13190914+total, 403248 free, 29392836 used, 10211305+buff/cache
KiB Swap: 8388604 total, 8107772 free, 280832 used. 10180489+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27207 xxxxxx 20 0 54.0g 5.9g 133772 S 266.8 4.7 2826:48 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Class3D/job129/r+
27208 xxxxxx 20 0 54.2g 6.0g 133612 S 263.1 4.7 2805:38 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Class3D/job129/r+
27206 xxxxxx 20 0 54.0g 6.0g 133928 S 259.5 4.7 2821:33 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Class3D/job129/r+
27205 xxxxxx 20 0 54.1g 6.0g 133920 S 259.1 4.8 2728:13 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Class3D/job129/r+
27204 xxxxxx 20 0 3409684 2.7g 7040 R 100.7 2.1 1160:40 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Class3D/job129/r+
109 root 20 0 0 0 0 S 1.3 0.0 211:30.75 [kswapd0]
110 root 20 0 0 0 0 S 1.0 0.0 228:31.07 [kswapd1]
10459 root 20 0 172476 2508 1632 R 0.7 0.0 0:00.16 top
「free -hw」コマンド
total used free shared buffers cache available
Mem: 125G 28G 392M 82M 0B 97G 97G
Swap: 8.0G 274M 7.7G
これなら128GB搭載でなく半分でも行けるのでは?って思うのだが、
「vmstat -a」コマンドから
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
10 1 280832 397320 53030724 74966256 0 0 1687 103 0 0 45 10 43 2 0
cacheで97Gが使われているが、使われていない解放可能な領域もあるそうで、それが「vmstat -a」で見れるそうな.
この「inact」が該当して、53030724 kB(53GB)となる。「active」は削れない部分なそうな.
128GBのメモリー搭載マシンで 75GB はこの系の計算には必要のようで、メモリー搭載量 64GB では難しいようである。
ちなみに scratch は 393GB
$ ls -lh /scratch/pbs.24681.ad/relion_volatile/particles.mrcs
-rwxrwxrwx 1 xxxxx yyyyy 393G 1月 2 21:23 /scratch/pbs.24681.ad/relion_volatile/particles.mrcs
もう一つの系
top - 15:54:02 up 33 days, 22:26, 1 user, load average: 9.61, 9.50, 9.57
Tasks: 298 total, 3 running, 295 sleeping, 0 stopped, 0 zombie
%Cpu(s): 44.3 us, 10.9 sy, 0.0 ni, 44.8 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 13190440+total, 33397488 free, 5559992 used, 92946928 buff/cache
KiB Swap: 8388604 total, 8073980 free, 314624 used. 12562812+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7640 ssssssss 20 0 28.6g 1.0g 113580 S 215.7 0.8 612:39.52 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Refine3D/job060/+
7639 ssssssss 20 0 27.9g 771184 113520 S 200.8 0.6 612:27.43 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Refine3D/job060/+
7642 ssssssss 20 0 28.2g 982776 112728 S 195.9 0.7 619:23.06 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Refine3D/job060/+
7641 ssssssss 20 0 28.1g 937880 112844 S 168.6 0.7 605:21.67 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Refine3D/job060/+
7638 ssssssss 20 0 799548 219584 13308 R 100.0 0.2 235:15.85 /Appl/relion-3.0.8/bin/relion_refine_mpi --o Refine3D/job060/+
11200 root 20 0 172476 2512 1628 R 1.7 0.0 0:00.12 top
各プロセスの物理メモリー使用量は小さく5GB未満
「free -hw」コマンドからも
total used free shared buffers cache available
Mem: 125G 5.4G 31G 88M 0B 88G 119G
Swap: 8.0G 307M 7.7G
となる。「vmstat -a」からは
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
7 0 314624 33302988 39823968 55826104 1 1 908 107 0 0 36 6 58 0 0
でfreeは 33,302,988 kB(33GB)、inactは 39,823,968 kB(39GB), 55,826,104 kB(55GB)。この系なら64GBでも行けるのでは?っと思う
scratchは 5.6GB
-rwxrwxrwx 1 ssssssss yyyyyyyy 5.6G 1月 3 11:59 /scratch/pbs.24695.ad/relion_volatile/particles.mrcs
当然計算系に寄るのだろうが、
メモ8 †
relionを起動する際に下記のようなメッセージが表示されることがある
これはrelionを立ち上げたディレクトリに「.gui_motioncorrjob.star」にその定義がなかったためみたい.
無視して構わないみたい.
WARNING: cannot find save_noDW in the defined joboptions. Ignoring it ...
WARNING: cannot find save_ps in the defined joboptions. Ignoring it ...