旧ページcrYOLO190418 crYOLO/200211
粒子pickツール
本家様https://cryolo.readthedocs.io/en/stable/index.html
crYOLOのバージョン履歴
https://pypi.org/project/cryolo/#history
convolutional neural networksを利用した粒子pickツール
提供されているモデルファイルを使って、あるいは自分自身でモデルファイルを作ってpickします.
そして結果を可視化するツールもそろっています
ここでは pyenv-anaconda 経由で crYOLO 実行環境を作って EnvironmentModules を経て利用するようにします.
*自分のホームディレクトリに anaconda を敷いて crYOLO 実行環境を作り「conda activate crYOLO」とかで利用されても構いません
まずは下準備 pyenv-anaconda 環境の整備
minicondaで作ると crYOLO/miniconda
pyenv-anaconda †
各自のホームディレクトリに各種pythonアプリの実行環境を用意するのではなく、rootで一元管理させるために「pyenv-anaconda」を使ってます.
pyenvでOS提供のpython,anaconda環境から離れ、そのpyenv上にanaconda環境を独自に敷いてます
ここでは「/apps/pyenv」を起点としています
git clone https://github.com/yyuu/pyenv.git /apps/pyenv
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init - --no-rehash)"
pyenv install --list <--これでanaconda,minicondaのバージョンが一覧されます.
pyenv install anaconda3-2021.11
その後にpyenvの既定を anaconda3-2021.11 にとします
pyenv global anaconda3-2021.11
移ったかを確認します
[root@centos7 ~]# pyenv versions
system
* anaconda3-2021.11 (set by /apps/pyenv/version)
[root@centos7 ~]#
これで「pyenv-anaconda」の環境敷設は完了です。
次にcrYOLO実行環境を作ります
crYOLO向けの仮想実行環境を作る †
crYOLOはnvidia製GPUカードを使ってより高速な処理が可能です. そのためにはCUDA環境の整備が必要です
使用可能なGPUカードですが、オリジナルサイトは GTX10x0 とか RTX20x0 とかを掲示してますが、今では入手が難しく現状では RTX30x0系でも動きます
*crYOLO-1.8.2から使えるようになりました
前段で定義済みかもしれませんが「pyenv-anaconda」の環境を用意します
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init - --no-rehash)"
export PATH=$PYENV_ROOT/versions/anaconda3-2021.11/bin/:$PATH
「conda」を最新版にします. 時間が掛かる処理なのでcondaを使てって「古いよ」って言われたら実行してください
その後にcrYOLOのpython実行環境を作成します.
cryoloはアップデートされるので、そのバージョン番号を含んでの環境名にします。「https://pypi.org/project/cryolo/
」に現在既定のバージョンが表示されるので、その値を使って環境を作ります
更新があったらcryoloの環境を削除して作り直せばいいのかもしれませんが、
[root@centos7 ~]# conda create -n cryolo-1.8.3 -c conda-forge -c anaconda pyqt=5 python=3 numpy==1.18.5 libtiff wxPython=4.1.1 adwaita-icon-theme
[root@centos7 ~]# source activate cryolo-1.8.3
(cryolo-1.8.3) [root@centos7 ~]# pip install nvidia-pyindex
(cryolo-1.8.3) [root@centos7 ~]# pip install 'cryolo[c11]'
cryoloのバージョン指定を行いたいなら 「pip install 'cryolo[c11]==1.8.3'」とします
(cryolo-1.8.3) [root@centos7 ~]# source deactivate
これで完成. お疲れさまでした.
Singularityで作ってみた Singularity/crYOLO
crYOLOのインストール CPU版 †
最近のCPUは多くのcoreを抱えている. もしCPUで処理を進めたいなら
#code(nonumber){{
[root@centos7 ~]# conda create -n cryolo-1.8.3-cpu -c conda-forge -c anaconda pyqt=5 python=3.7 numpy==1.18.5 libtiff wxPython=4.1.1 adwaita-icon-theme
[root@centos7 ~]# source activate cryolo-1.8.3-cpu
(cryolo-1.8.3-cpu) [root@centos7 ~]# pip install 'cryolo[cpu]==1.8.3'
728枚mrcファイル処理「real 21m21.117s, user 67m26.962s, sys 7m1.656s」(i7-10700K[8core],32GB) 32coreとかならCPUでも戦える?
EnvironmentModules †
ここではEnvironmentModulesを使って実行環境を整備してます。
作ったmoduleファイルは下記URLを参照して
http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo:integration_into_module_system
「cryolo-1.8.3」向けなら
「/apps/modulefiles/crYOLO/1.8.3」と用意して、中身は下記にします
#%Module1.0
set root /apps/pyenv/versions/anaconda3-2021.11/envs/cryolo-1.8.3
setenv CRYOLOPATH $root
prepend-path PATH $root/bin
「cryolo-1.8.3-cpu」向けなら
「/apps/modulefiles/crYOLO/1.8.3-cpu」と用意して、中身は下記にします
#%Module1.0
set root /apps/pyenv/versions/anaconda3-2021.11/envs/cryolo-1.8.3-cpu
setenv CRYOLOPATH $root
prepend-path PATH $root/bin
既定の場所(/etc/modulefilesら)以外にmodulefileを置いたので、.bashrcには下記を追記する必要があります
module use --append /apps/modulefiles
計算してみる †
まずはcrYOLOのmoduleファイルをロードしてcrYOLO実行環境を準備します
[illya@centos7 ~]$ module load crYOLO/1.8.3
[illya@centos7 ~]$ mkdir crYOLO
[illya@centos7 ~]$ cd crYOLO/
[illya@centos7 crYOLO]$
これでcrYOLOのアプリが使えます。
*「/apps/pyenv/versions/anaconda3-2021.11/envs/cryolo-1.8.3/bin」のアプリがあります
ここでは提供されているmodelファイル
General PhosaurusNet models
- For cryo images (low-pass filtered)
- For cryo images (neural network denoised with JANNI)
- For negative stain images
から「For cryo images (low-pass filtered)」のmodelを使ってpickしてみます。
modelファイルは、「http://sphire.mpg.de/wiki/doku.php?id=downloads:cryolo_1#general_phosaurusnet_models」から取得
このmodelファイルは「/apps/crYOLO」とかに置いておきます
次にconfigファイルを準備します。
チュートリアルにも記載されてますが、下記を実行してconfigファイルを作ります
[illya@centos7 crYOLO]$ cryolo_gui.py config config_cryolo_.json 220 --filter LOWPASS --low_pass_cutoff 0.1
中身は
[saber@c crYOLO]$ cat config_cryolo_.json
{
"model": {
"architecture": "PhosaurusNet",
"input_size": 1024,
"anchors": [
220,
220
],
"max_box_per_image": 700,
"filter": [
0.1,
"filtered_tmp/"
]
}
}
[saber@c crYOLO]$
となる。configファイルのたたき台を作るくらいでしょうか。別に手動で作成しても宜しいかと思う。
各項目の説明は下記URL参照
http://sphire.mpg.de/wiki/doku.php?id=cryolo_config
pick対象はrelion30のチュートリアルデータです。
っで実際にpickさせてみます。
[saber@c crYOLO]$ cryolo_predict.py -c config_cryolo_.json -w /apps/crYOLO/gmodel_phosnet_202005_N63_c17.h5 -i /apps/GCTF_Gautomatch_Cu10.1/ribosome/test[78].mrc -o ./
[saber@c crYOLO]$
6701個の粒子をpickしました。そのpickした座標データは形式に合わせてCBOX、EMAN、STARフォルダにそれぞれ書かれる。
EMANのbox形式を見てみると
[saber@c crYOLO]$ head EMAN/test7.box
2018.83203125 3801.8334350585938 220 220
2233.01513671875 3829.333282470703 220 220
2733.32958984375 3819.4593658447266 220 220
3041.906494140625 3818.371795654297 220 220
3439.947021484375 3848.0697479248047 220 220
281.3191833496094 3767.1163024902344 220 220
:
[saber@c crYOLO]$
な感じで書かれています。
GPU4枚マシンで4枚使って計算したいなら
[saber@c crYOLO]$ cryolo_predict.py -g 0 1 2 3 -c config_cryolo_.json -w /apps/crYOLO/gmodel_phosnet_201912_N63.h5 -i ./20170629_000*.mrc -o ./
と「-g 0 1 2 3」と指定する
cryolo_gui.pyを使ってみる †
[saber@c crYOLO]$ cryolo_gui.py
実行するとcrYOLOの画面が表示されます。その左側には「Actions」として「config」「train」「predict」「ecaluation」があります。

「config」を選ぶとその右側には複数のタブが並びます。

先ほどコマンドラインで作成した「config_cryolo_.json」をGUIで作っているだけなのですが、個々の項目の説明があるので
こちらで欄を埋めてconfigファイルを用意された方がいいのかと思う。
ただ「predict」の実行なら「General arguments」タグの「config_out_path」「boxsize」、「Model options」タグのすべて、
「Denoising option」を埋めて、「Start」ボタンを押下すればconfigファイルは得られる。
っで、次にpredictを選択

「Required arguments」タグでconf欄は前段で作ったconfigファイル。inputはmrcファイルを指定します。
weightsがmodelファイルを指定して、outputはそのばでいいなら「./」とします。

「Optional auguments」タグは説明を読み定義すれば宜しいかと。そのままで動きます。
「Filament」タグはパス
「Deprecated/Experimental/Special」タグもパス
そして「Start」ボタンを押下すればpickしてくれます。
pick結果を見たい †
pickの状態を可視化するツールも備わっているようで、「cryolo_boxmanager.py」コマンドがそれに該当します。
「cryolo_boxmanager.py」を起動すると下記のようなGUI画面が表示されます。
メニューの「File」から「Open image folder」を選択して

「Select Image Directory」画面が新たに表示され、そこでpick対象のmrcファイルのあるフォルダを指定します。
*「cryolo_boxmanager.py」の実行場所にmrcファイルがあるのなら、そのまま「Choose」を選びます
すると、別の画面が表れて、mrcファイルが表示されます。

そして初回に表示されGUI画面には読み込まれたmrcファイルらが表示されます
次に、BOXデータを読み込みます。再度Fileメニューから「Import Box files」を選びます

新に「Select Box Directory」画面が表示され、そこでpredictで得られたpickデータから「CBOX」を選択してパネル下部の「Choose」ボタンを押下します。

すると、mrcイメージにBOXが表示されます。

メモ †
下記メッセージが表示されるときがある。リモートアクセスの際はないのだが、計算機をモニターに繋げて操作している際はあるみたい
「Qt: Session management error: None of the authentication protocols specified are supported」
っで回避方法はそのcrYOLOを使うターミナルで
を行うと回避される
めも2 †
crYOLOを構築するとconda listでは下記のようになっている(2022.12.13)
:
cryolo 1.8.4 pypi_0 pypi
cryolobm 1.4.9 pypi_0 pypi
:
cryoloBM 1.4.10がリリースされているので差し替えてみた
(cryolo) [root@rockylinux ~]# pip install cryoloBM==1.4.10
ぁ、大本のcrYOLOが1.8.5b2に代わった...