#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 でも動いた