かいていちゅう

本家様 https://www3.mrc-lmb.cam.ac.uk/relion//index.php?title=Main_Page

191015に relion-3.1-beta がリリースされました
同じくrelion-3.0.8もリリースされました. 重大なバグ以外は今後3.0.x系のリリースはない模様
190215に relion-3.0 stable release がでました

ここではこの relion-3.1-betaを CentOS 7 にインストールしてみます

GPU-acceleration版 Relion/GPU
CPU-acceleration版 Relion/icc
Relion/qsub, Relion/relion_it.py
Relion/macOS, Relion/ubuntu

過去ページ Relion2.180803

Gautomarchの結果をRelionで利用するにはRelion/Gautomatch

日本語訳チュートリアル
九州工業大学 生命情報工学科 情報工学部 安永研究室にて公開されております。
http://www.yasunaga-lab.bio.kyutech.ac.jp/ja/
RELION3チュートリアル

入手方法

gitでソースコードは提供されていて、下記から入手可能
https://github.com/3dem/relion

mkdir -p /Appl/src
cd /Appl/src/
git clone https://github.com/3dem/relion

*gitがインストールされていないなら「yum install git」を事前に実行します

gitの操作

少々難しいかな..
gitで取得してその内容は vers3.0.8 です。

[root@c src]# grep RELION_VERSION relion/src/macros.h
#define RELION_VERSION "3.0.8"
        std::cout << "RELION version: " << RELION_VERSION << " "
[root@c src]#

このままbuildフォルダを作って、コンパイルしても version 3.0.8 のバイナリが用意されます。
これはこれで必要ですが、version 3.1-beta をコンパイルするにはひと手間必要.

[root@em00 relion]# git branch
* master
[root@em00 relion]# git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/gh-pages
  remotes/origin/master
  remotes/origin/ver2.1
  remotes/origin/ver3.0
  remotes/origin/ver3.1
[root@em00 relion]#

なのでver3.1に移るために

  1
  2
  3
[root@em00 relion]# git checkout ver3.1
もしくは
[root@em00 relion]# git checkout -b ver3.1-c remotes/origin/ver3.1

として「ver3.1」のbranchに移動する
移動すると「*」のマークも移る

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

この移った先でコンパイルします。

コンパイル環境の準備

https://github.com/3dem/relionを拝読すると
ubuntuなら

sudo apt install cmake build-essential mpi-default-bin mpi-default-dev libfftw3-dev

として追加パッケージをインストールせよとなっているが、ここではCentOS 7でコンパイルするので
関連アプリも合わせて下記をインストールします。

[root@c ~]# yum groupinstall "Development Tools"
 
[root@c ~]# yum  install \
              cmake \
              openmpi-devel \
              libX11-devel \
              fltk-fluid \
              fftw-devel \
              libtiff-devel \
              texlive-latex-bin \
              texlive-cm \
              texlive-dvips \
              ghostscript \
              evince \
              qpdfview
[root@c ~]#
*細目
cmake           : ビルド自動化に必須。昔の「configure」っぽいもの
openmpi-devel   : 並列計算向け
libX11-devel    : GUIを利用するなら
fltk-fluid      : relion 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に変換するために

*CentOS 8.0.1905なら「dnf --enablerepo=PowerTools install cmake openmpi-devel libX11-devel fltk-devel fftw-devel libtiff-devel texlive-latex-bin texlive-dvips evince 」だけど、fluidがないので「cmake -DCUDA=OFF -DFORCE_OWN_FLTK=ON -DCMAKE_INSTALL_PREFIX=/apps/relion-3.0.7 ..」と -DFORCE_OWN_FLTK=ON が必要みたい

コンパイル

nvidiaカードを使ったGPU-acceleration版(速くなるのは relion_refine と relion_autopick)

CPU-acceleration版(速くなるのは relion_refine のみ)
あとこれらのaccelerationが有効になっていない版が用意可能です。

どちらも全てのコマンドが実行できるが、GPU-acceleration版はnvidiaのカードを利用して
relion_refine と relion_autopick が高速にななる。
一方、CPU-acceleration版はcpuのベクトル演算ユニットを利用して relion_refine をより高速にします。

ここでは単純に「acceleration機能なし版」を用意してみた。
*それぞれのacceleration版はリンク先を参照してください

インストール先は「/Appl/relion-3.0」とします

[root@c ~]# cd /Appl/src/relion
 
[root@c relion]# mkdir b-190226
[root@c relion]# cd b-190226
 
[root@c b-190226]# module load mpi        <-- openmpi関係の環境変数を読み込みます
 
[root@c b-190226]# cmake -DCUDA=OFF -DCMAKE_INSTALL_PREFIX=/Appl/relion-3.0 ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
 :
-- Setting cpu precision to double
-- Setting accelerated code precision to single
-- Using non-cuda compilation....
 :
-- MPI_C_COMPILER : /usr/lib64/openmpi/bin/mpicc
-- MPI_CXX_COMPILER : /usr/lib64/openmpi/bin/mpicxx
-- CMAKE_CXX_COMPILER_ID : GNU
 :
-- Found X11: /usr/lib64/libX11.so
-- Found FLTK: /usr/lib64/libfltk_images.so;/usr/lib64/libfltk_forms.so;/usr/lib64/libfltk.so
-- X11 and FLTK were found
 :
-- Found FFTW
-- FFTW_PATH: /usr/include
-- FFTW_INCLUDES: /usr/include
-- FFTW_LIBRARIES: /usr/lib64/libfftw3f.so;/usr/lib64/libfftw3.so
 :
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.0.3")
 :
[root@c b-190226]# make && make install

起動

各自の.bashrc/.cshrcにPATH環境変数とLD_LIBRARY_PATH環境変数を加えておきます
またrelionから外部アプリをコールするときがあり、そのパスを登録します

(bash)
export PATH=/Appl/relion-3.0/bin:/usr/lib64/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib64/openmpi/bin
export RELION_MOTIONCOR2_EXECUTABLE=/Appl/MotionCor2/MotionCor2_1.2.1-Cuda92
export RELION_CTFFIND_EXECUTABLE=/Appl/ctffind-4.1.13-linux64-compat/ctffind
export RELION_GCTF_EXECUTABLE=/Appl/Gctf/Gctf-v1.06_sm_30_cu8.0_x86_64
export RELION_RESMAP_EXECUTABLE=/Appl/ResMap/ResMap-1.1.4-linux64
export RELION_PDFVIEWER_EXECUTABLE=evince
 
(csh/tcsh)
setenv PATH /Appl/relion-3.0/bin:/usr/lib64/openmpi/bin:$PATH
setenv LD_LIBRARY_PATH /usr/lib64/openmpi/bin
setenv RELION_MOTIONCOR2_EXECUTABLE /Appl/MotionCor2/MotionCor2_1.2.1-Cuda92
setenv RELION_CTFFIND_EXECUTABLE /Appl/ctffind-4.1.13-linux64-compat/ctffind
setenv RELION_GCTF_EXECUTABLE /Appl/Gctf/Gctf-v1.06_sm_30_cu8.0_x86_64
setenv RELION_RESMAP_EXECUTABLE /Appl/ResMap/ResMap-1.1.4-linux64
setenv RELION_PDFVIEWER_EXECUTABLE evince

そうした上で relion とターミナルに入力させて起動する

relion

2019y02m26d_225929756.png
外見的には従来と同じですが、計算項目が増えましたね。

もしEnvironment ModulesでPATH環境変数を管理するなら

[root@c b-190226]# cat /etc/modulefiles/relion/3.0.0
#%Module 1.0
set RELION /Appl/relion-3.0
 
conflict                     relion
prepend-path PATH            $RELION/bin
 
setenv RELION_QSUB_TEMPLATE  $RELION/bin/qsub.sh
setenv RELION_QUEUE_NAME     s3
setenv RELION_QUEUE_USE      false
setenv RELION_QSUB_COMMAND   "qsub -W umask=0022"
 
setenv RELION_MOTIONCOR2_EXECUTABLE     /Appl/MotionCor2/MotionCor2_1.2.1-Cuda92
setenv RELION_CTFFIND_EXECUTABLE        /Appl/ctffind-4.1.13-linux64-compat/ctffind
setenv RELION_GCTF_EXECUTABLE           /Appl/Gctf/Gctf-v1.06_sm_30_cu8.0_x86_64
setenv RELION_RESMAP_EXECUTABLE         /Appl/ResMap/ResMap-1.1.4-linux64
setenv RELION_PDFVIEWER_EXECUTABLE      evince

を用意して、.bashrc/.cshrc/.tcshrcに

module load relion/3.0.0
module load mpi

を記載します。

メモ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

関連アプリ

品目入手先1903時点の最新備考
ctffind-4http://grigoriefflab.janelia.org/ctffind4ctffind-4.1.13
MotionCor2http://msg.ucsf.edu/em/software/motioncor2.htmlMotionCor2 v1.2.2cuda-8.0, 9.1, 10.0に対応
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に対応

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-10-15 (火) 21:50:08 (1h)