旧ページ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を使てって「古いよ」って言われたら実行してください

conda update 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」があります。
2020y02m13d_022916652.png
「config」を選ぶとその右側には複数のタブが並びます。
2020y02m13d_023250324.png
先ほどコマンドラインで作成した「config_cryolo_.json」をGUIで作っているだけなのですが、個々の項目の説明があるので
こちらで欄を埋めてconfigファイルを用意された方がいいのかと思う。
ただ「predict」の実行なら「General arguments」タグの「config_out_path」「boxsize」、「Model options」タグのすべて、
「Denoising option」を埋めて、「Start」ボタンを押下すればconfigファイルは得られる。

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

「Optional auguments」タグは説明を読み定義すれば宜しいかと。そのままで動きます。
「Filament」タグはパス
「Deprecated/Experimental/Special」タグもパス
そして「Start」ボタンを押下すればpickしてくれます。

pick結果を見たい

pickの状態を可視化するツールも備わっているようで、「cryolo_boxmanager.py」コマンドがそれに該当します。
「cryolo_boxmanager.py」を起動すると下記のようなGUI画面が表示されます。
メニューの「File」から「Open image folder」を選択して
2020y02m13d_030750841.png
「Select Image Directory」画面が新たに表示され、そこでpick対象のmrcファイルのあるフォルダを指定します。
*「cryolo_boxmanager.py」の実行場所にmrcファイルがあるのなら、そのまま「Choose」を選びます
すると、別の画面が表れて、mrcファイルが表示されます。
2020y02m13d_031146529.png

そして初回に表示されGUI画面には読み込まれたmrcファイルらが表示されます
次に、BOXデータを読み込みます。再度Fileメニューから「Import Box files」を選びます
2020y02m13d_031521865.png
新に「Select Box Directory」画面が表示され、そこでpredictで得られたpickデータから「CBOX」を選択してパネル下部の「Choose」ボタンを押下します。
2020y02m13d_031707281.png

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

メモ

下記メッセージが表示されるときがある。リモートアクセスの際はないのだが、計算機をモニターに繋げて操作している際はあるみたい
「Qt: Session management error: None of the authentication protocols specified are supported」
っで回避方法はそのcrYOLOを使うターミナルで

unset SESSION_MANAGER

を行うと回避される

めも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に代わった...


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-12-13 (火) 04:01:51 (52d)