本家様 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 カスタマイズ版

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の操作

「ver3.1」branchがmasterにマージされたのでもはやgitの操作は不要かな.
ただ「ver3.1」branchが残っているので最新版を使うなら「ver3.1」branchを使い続ける方がいいのかも知れない.
その場合は

git checkout ver3.1

として「ver3.1」branch路線に切り替えておく.

もしver3.0のバイナリーが欲しい場合にはgit操作が必要で

git checkout ver3.0

としてください。
そして今現在どの路線に載っているかは「git branch」コマンドで分かります(アスタリスク(*)がついている場所が今の路線)

[root@c relion]# git branch
  master
  ver3.0
* ver3.1
[root@c relion]#

路線の移動は「git checkout master」とか「git checkout ver3.0」とかで行います

コンパイル環境の準備

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」と入力します

2019y12m07d_045436403.png

メモ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-4http://grigoriefflab.janelia.org/ctffind4ctffind-4.1.13
MotionCor2http://msg.ucsf.edu/em/software/motioncor2.htmlMotionCor2 v1.3.2cuda-8.0, 9.2, 10.0, 10.1, 10.2に対応
Gctfhttps://www.mrc-lmb.cam.ac.uk/kzhang/Gctf_v1.18cuda-8.0, 9.0, 9.1, 9.2 に対応
ResMaphttp://resmap.sourceforge.net/ResMap-1.1.4
Gautomatchhttps://www.mrc-lmb.cam.ac.uk/kzhang/Gautomatch_v0.56cuda-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 ...

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2020-11-09 (月) 02:27:26 (22d)