旧ページ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_201912_N63.h5 -i ./20170629_000*.mrc -o ./
 
[saber@c crYOLO]$

6701個の粒子をpickしました。そのpickした座標データは形式に合わせてCBOX、EMAN、STARフォルダにそれぞれ書かれる。
EMANのbox形式を見てみると

[saber@c crYOLO]$ less EMAN/20170629_00021_frameImage.box
723.0   3568.5  220     220
2002.5  3583.5  220     220
2128.0  3587.5  220     220
2391.5  3574.0  220     220
2929.0  3565.0  220     220
3358.0  3596.0  220     220
1268.5  3517.5  220     220
1557.0  3526.0  220     220
2575.0  3522.0  220     220
3114.0  3520.5  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


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-04-10 (日) 14:49:11 (167d)