#author("2025-08-07T15:04:52+00:00","default:sysosa","sysosa")
#author("2025-08-07T15:13:40+00:00","default:sysosa","sysosa")
粒子pickツール
本家様[[https://cryolo.readthedocs.io/en/stable/index.html>+https://cryolo.readthedocs.io/en/stable/index.html]]

crYOLOのバージョン履歴
[[https://pypi.org/project/cryolo/#history>+https://pypi.org/project/cryolo/#history]]

convolutional neural networksを利用した粒子pickツール
提供されているモデルファイルを使って、あるいは自分自身でモデルファイルを作ってpickします.
そして結果を可視化するツールもそろっています


ここでは pyenv-anaconda 経由で crYOLO 実行環境を作って EnvironmentModules を経て利用するようにします.
&color(red){*};&size(10){自分のホームディレクトリに anaconda を敷いて crYOLO 実行環境を作り「conda activate crYOLO」とかで利用されても構いません};

まずは下準備 pyenv-anaconda 環境の整備

Singularityで作ってみた [[Singularity/crYOLO]]

***pyenv-anaconda [#w789c07e]
各自のホームディレクトリに各種pythonアプリの実行環境を用意するのではなく、rootで一元管理させるために「pyenv-anaconda」を使ってます.
pyenvでOS提供のpython,anaconda環境から離れ、そのpyenv上にanaconda環境を独自に敷いてます
ここでは「/apps/pyenv」を起点としています. 

#code(nonumber){{
git clone https://github.com/yyuu/pyenv.git /apps/pyenv
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
pyenv install --list              <--これでanaconda,minicondaのバージョンが一覧されます.
pyenv install anaconda3-2025.06-1
pyenv global anaconda3-2025.06-1
source /apps/pyenv/versions/anaconda3-2025.06-1/etc/profile.d/conda.sh
conda update conda

(既に環境があるなら)
source /apps/pyenv/versions/anaconda3-2025.06-1/etc/profile.d/conda.sh
}}

これで「pyenv-anaconda」の環境敷設は完了です。

次にcrYOLO実行環境を作ります

***crYOLO向けの仮想実行環境を作る [#qf2f4402]
crYOLOはnvidia製GPUカードを使ってより高速な処理が可能です. &size(10){そのためには[[NVIDIA]]ドライバーのインストールが必要です. cudaライブラリは不要です.};

crYOLOのpython実行環境の名称ですが、単純に「cryolo」でもいいし、「cryolo-1.9.9」とバージョン番号を設けてもいいです。
現行のcrYOLOのバージョンは一応ここで確認できます. 「[[https://pypi.org/project/cryolo/>+https://pypi.org/project/cryolo/]]」
ここでは最新版は常に「crYOLO」で更新があったらその環境を削除して作り直す方針とします

#code(nonumber){{
[root@rockylinux10 ~]# conda create -n cryolo -c conda-forge -c anaconda pyqt=5 python=3 numpy==1.18.5 libtiff wxPython=4.1.1 adwaita-icon-theme 'setuptools<66'

[root@rockylinux10 ~]# conda activate cryolo
(cryolo) [root@rockylinux10 ~]# 
(cryolo) [root@rockylinux10 ~]# pip install nvidia-pyindex
(cryolo) [root@rockylinux10 ~]# pip install 'cryolo[c11]'
}}
以上で「crYOLO」自体のインストールは完了です.

引き続き1.9.0から提供された「napari-boxmanager」向けの構築を行います
#code(nonumber){{
(cryolo) [root@rockylinux10 ~]# cryolo_dir=$(realpath $(dirname $(which cryolo_predict.py)))
(cryolo) [root@rockylinux10 ~]# napari_link_file=${cryolo_dir}/napari_boxmanager

(cryolo) [root@rockylinux10 ~]# conda install libtiff=4.4.0  <--- 「libtiff-4.5.0」はlibtiff.so.6 でダメ。必要なのはlibtiff-4.4.0の libtiff.so.5

(cryolo) [root@rockylinux10 ~]# conda deactivate
[root@rockylinux10 ~]#

[root@rockylinux10 ~]# conda create -y -n napari-cryolo -c conda-forge python=3.10 napari=0.4.17 'distributed<2024' 'zarr<2.18' pyqt pip

[root@rockylinux10 ~]# conda activate napari-cryolo
(napari-cryolo) [root@rockylinux10 ~]# pip install napari-boxmanager
(napari-cryolo) [root@rockylinux10 ~]# echo -e "#\!/usr/bin/bash\nexport NAPARI_EXE=$(which napari)\nnapari_exe='$(which napari_boxmanager)'\n\${napari_exe} \"\${@}\""> ${napari_link_file}
(napari-cryolo) [root@rockylinux10 ~]# chmod +x ${napari_link_file}
(napari-cryolo) [root@rockylinux10 ~]# conda deactivate
[root@rockylinux10 ~]#
}}

これで完成. お疲れさまでした.


***modelファイルの準備 [#p3377eb2]
modelファイルは本家様から頂いて、ここでは単純に「/apps/crYOLO」に配置してます
取得先はこちら[[https://cryolo.readthedocs.io/en/stable/installation.html#download-the-general-models>+https://cryolo.readthedocs.io/en/stable/installation.html#download-the-general-models]]

#code(nonumber){{
[root@rockylinux10 ~]# ls -lh /apps/crYOLO/
total 194M
-rw-r--r--. 1 root 2001 194M Apr 15  2021 gmodel_phosnet_202005_N63_c17.h5
[root@rockylinux10 ~]#
}}


***EnvironmentModules [#ae646b5b]
ここでは[[EnvironmentModules]]を使って実行環境を整備してます。
作ったmoduleファイルは下記URLを参照して
[[http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo:integration_into_module_system>+http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo:integration_into_module_system]]

「/apps/modulefiles/crYOLO」と用意して、中身は下記にします
#code(nonumber){{
#%Module1.0
set          root       /apps/pyenv/versions/anaconda3-2025.06-1/envs/cryolo
setenv       CRYOLOPATH $root
prepend-path PATH       $root/bin
}}

***計算してみる [#rbcf5ca6]
まずはcrYOLOのmoduleファイルをロードしてcrYOLO実行環境を準備します
#code(nonumber){{
[saber@rockylinux10 ~]$ module use  /apps/modulefiles/

[saber@rockylinux10 ~]$ mkdir -p test/crYOLO
[saber@rockylinux10 ~]$ cd test/crYOLO

[saber@rockylinux10 crYOLO]$ 
[saber@rockylinux10 crYOLO]$ module load crYOLO
}}
これでcrYOLOのアプリが使えます。
&color(red){*};&size(10){「/apps/pyenv/versions/anaconda3-2025.06-1/envs/cryolo/bin」にcrYOLO関連のアプリがあります};

本家様で提供されているmodelファイルは下記ですが、ここでは「For cryo images (low-pass filtered)」のmodelを使って粒子pickを試してみます
General PhosaurusNet models
-For cryo images (low-pass filtered)
-For cryo images (neural network denoised with JANNI)
-For negative stain images

手始めにコマンドラインでテスト的に.

初めに「configファイル」を準備します
チュートリアルにも記載されてますが、下記を実行してconfigファイルを作ります
#code(nonumber){{
[saber@rockylinux9 crYOLO]$ cryolo_gui.py config config_cryolo_.json 220 --filter LOWPASS --low_pass_cutoff 0.1
#####################################################
Important debugging information.
In case of any problems, please provide this information.
#####################################################
/apps/pyenv/versions/anaconda3-2024.02-1/envs/cryolo/bin/cryolo_gui.py config config_cryolo_.json 220
--filter LOWPASS
--low_pass_cutoff 0.1
#####################################################

 Wrote config to config_cryolo_.json
[saber@rockylinux9 crYOLO]$
[saber@rockylinux9 crYOLO]$ ls -l
total 4
-rw-r--r--. 1 saber saber 344 Mar 20 19:26 config_cryolo_.json
[saber@rockylinux9 crYOLO]$
}}
「config_cryolo_.json」の中身はこんな感じ
#code(nonumber){{
[saber@rockylinux9 crYOLO]$ cat config_cryolo_.json
{
    "model": {
        "architecture": "PhosaurusNet",
        "input_size": 1024,
        "anchors": [
            220,
            220
        ],
        "max_box_per_image": 700,
        "norm": "STANDARD",
        "filter": [
            0.1,
            "filtered_tmp/"
        ]
    },
    "other": {
        "log_path": "logs/"
    }
}
[saber@rockylinux9 crYOLO]$
}}
configファイルのたたき台を作るくらいでしょうか。別に手動で作成しても宜しいかと思う。
各項目の説明は下記URL参照
[[https://cryolo.readthedocs.io/en/stable/other/other.html#cryolo-configuration-file>+https://cryolo.readthedocs.io/en/stable/other/other.html#cryolo-configuration-file]]

pick対象は[[Gautomatch]]に付属のribosomeのmrcファイルです. 
っで実際にpickさせてみます。

#code(nonumber){{
[saber@rockylinux9 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@rockylinux9 crYOLO]$
}}
そのpickした座標データは形式に合わせてCBOX、EMAN、STAあと1.9.xになってからCRYOSPARC向けも用意されたみたい
EMANのbox形式を見てみると
#code(nonumber){{
[saber@rockylinux9 crYOLO]$ less EMAN/test7.box
2018.828857421875       3801.8345489501953      220     220
2233.00439453125        3829.3297119140625      220     220
2733.330078125  3819.460433959961       220     220
 :
[saber@rockylinux9 crYOLO]$
}}

CRYOSPARC向けのは
#code(nonumber){{
[saber@rockylinux9 crYOLO]$ less CRYOSPARC/cryosparc.star

data_

loop_
_rlnMicrographName #1
_rlnCoordinateX #2
_rlnCoordinateY #3
_rlnAutopickFigureOfMerit #4
test7.mrc 2128.828857421875 3911.8345489501953 0.8078545928001404
test7.mrc 2343.00439453125 3939.3297119140625 0.7854877710342407
test7.mrc 2843.330078125 3929.460433959961 0.728760838508606
 :
[saber@rockylinux9 crYOLO]$
}}
な感じで書かれています。


***cryolo_gui.pyを使ってみる [#i0a5483e]
#code(nonumber){{
[saber@c crYOLO]$ cryolo_gui.py
}}
実行するとcrYOLOの画面が表示されます。その左側には「Actions」として「config」「train」「predict」「ecaluation」があります。
&ref(2020y02m13d_022916652.png,nolink);
「config」を選ぶとその右側には複数のタブが並びます。
&ref(2020y02m13d_023250324.png,nolink);
先ほどコマンドラインで作成した「config_cryolo_.json」をGUIで作っているだけなのですが、個々の項目の説明があるので
こちらで欄を埋めてconfigファイルを用意された方がいいのかと思う。
ただ「predict」の実行なら「General arguments」タグの「config_out_path」「boxsize」、「Model options」タグのすべて、
「Denoising option」を埋めて、「Start」ボタンを押下すればconfigファイルは得られる。

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

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

***pick結果を見たい [#he1c8cb9]
crYOLO-1.9.xになってから「cryolo_boxmanager」は従来版の「cryolo_boxmanager_legacy.py」と新型の「napari_boxmanager」に分かれたみたい.


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

***めも2 [#ta3ff521]
(削除)

***めも3 [#u4588876]
2023.03時点で rockylinux 8.7 は対応しているが、rockylinux9.1 ではエラーが発生します. 原因はよく分からんが
「Number of processes must be at least 1」とメッセージが表示される. pyenv/anaconda環境なのでOS側の影響は少ないと思うのだが...
2023.04. anacondaを2023.03に変更したらrockylinux9.1 でも動いた
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS