粒子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 環境の整備

Singularityで作ってみた Singularity/crYOLO

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
pyenv install --list              <--これでanaconda,minicondaのバージョンが一覧されます.
pyenv install anaconda3-2024.02-1

anaconda3もいいが、miniforge3でもいい. anacondaは商用利用なら有償. 高性能なパッケージが使えるらしい. miniforgeはmambaが使えるのがいい

その後にpyenvの既定を anaconda3-2024.02-1 にとします

pyenv global anaconda3-2024.02-1

移ったかを確認します

[root@rockylinux9 ~]# pyenv versions
  system
* anaconda3-2024.02-1 (set by /apps/pyenv/version)
[root@rockylinux9 ~]# source /apps/pyenv/versions/anaconda3-2024.02-1/etc/profile.d/conda.sh

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

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

crYOLO向けの仮想実行環境を作る

crYOLOはnvidia製GPUカードを使ってより高速な処理が可能です. そのためにはNVIDIAドライバーのインストールが必要です. cudaライブラリは不要です.

前段で定義済みかもしれませんが「pyenv-anaconda」の環境を用意します

export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
source /apps/pyenv/versions/anaconda3-2024.02-1/etc/profile.d/conda.sh

「conda」を最新版にします. 時間が掛かる処理なのでcondaを使てって「古いよ」って言われたら実行してください

conda update conda

その後にcrYOLO向けのpython実行環境を作成します.

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

[root@rockylinux9 ~]# 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@rockylinux9 ~]# conda activate cryolo
(cryolo) [root@rockylinux9 ~]# 
(cryolo) [root@rockylinux9 ~]# pip install nvidia-pyindex
(cryolo) [root@rockylinux9 ~]# pip install 'cryolo[c11]'

以上で「crYOLO」自体のインストールは完了です.

引き続き1.9.0から提供された「napari-boxmanager」向けの設定を行います

(cryolo) [root@rockylinux9 ~]# cryolo_dir=$(realpath $(dirname $(which cryolo_predict.py)))
(cryolo) [root@rockylinux9 ~]# napari_link_file=${cryolo_dir}/napari_boxmanager
(cryolo) [root@rockylinux9 ~]# conda deactivate
[root@rockylinux9 ~]#
 
[root@rockylinux9 ~]# conda create -y -n napari-cryolo -c conda-forge python=3.10 napari=0.4.17 pyqt pip
 
[root@rockylinux9 ~]# conda activate napari-cryolo
(napari-cryolo) [root@rockylinux9 ~]# pip install napari-boxmanager
(napari-cryolo) [root@rockylinux9 ~]# echo -e "#\!/usr/bin/bash\nexport NAPARI_EXE=$(which napari)\nnapari_exe='$(which napari_boxmanager)'\n\${napari_exe} \"\${@}\""> ${napari_link_file}
(napari-cryolo) [root@rockylinux9 ~]# chmod +x ${napari_link_file}
(napari-cryolo) [root@rockylinux9 ~]# conda deactivate
[root@rockylinux9 ~]#

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

cryoloのバージョン指定を行いたいなら 「pip install 'cryolo[c11]==1.8.3'」とします

modelファイルの準備

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

[root@rockylinux9 ~]# ls -lh /apps/crYOLO/
total 194M
-rw-r--r--. 1 root 2001 194M Apr 15  2021 gmodel_phosnet_202005_N63_c17.h5
[root@rockylinux9 ~]#

EnvironmentModules

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

「/apps/modulefiles/crYOLO」と用意して、中身は下記にします

#%Module1.0
set          root       /apps/pyenv/versions/anaconda3-2024.02-1/envs/cryolo
setenv       CRYOLOPATH $root
prepend-path PATH       $root/bin

計算してみる

まずはcrYOLOのmoduleファイルをロードしてcrYOLO実行環境を準備します

[saber@rockylinux9 ~]$ module use  /apps/modulefiles/
 
[saber@rockylinux9 ~]$ mkdir -p test/crYOLO
[saber@rockylinux9 ~]$ cd test/crYOLO
 
[saber@rockylinux9 crYOLO]$ 
[saber@rockylinux9 crYOLO]$ module load crYOLO

これでcrYOLOのアプリが使えます。
*「/apps/pyenv/versions/anaconda3-2024.02-1/envs/cryolo/bin」にcrYOLO関連のアプリがあります

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

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

初めに「configファイル」を準備します
チュートリアルにも記載されてますが、下記を実行してconfigファイルを作ります

[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」の中身はこんな感じ

[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

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

[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形式を見てみると

[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向けのは

[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を使ってみる

[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結果を見たい

crYOLO-1.9.xになってから「cryolo_boxmanager」は従来版の「cryolo_boxmanager_legacy.py」と新型の「napari_boxmanager」に分かれたみたい.

メモ

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

unset SESSION_MANAGER

を行うと回避される

めも2

(削除)

めも3

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

最新の60件
2024-10-11 2024-10-10 2024-10-09 2024-10-08 2024-10-06 2024-10-05 2024-10-04 2024-10-03 2024-10-02 2024-10-01 2024-09-30 2024-09-29 2024-09-28 2024-09-27 2024-09-22 2024-09-20 2024-09-17 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-02 2024-09-01 2024-08-31 2024-08-28 2024-08-18 2024-08-17 2024-08-16 2024-08-15 2024-08-14 2024-08-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-06-01 (土) 12:45:36