本家様 https://github.com/tbepler/topaz

Singularityで利用するならtopaz/Singularity

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

pyenv-anacondaの設置

git clone https://github.com/yyuu/pyenv.git /apps/pyenv
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
pyenv install anaconda3-2024.10-1
pyenv global anaconda3-2024.10-1
source /apps/pyenv/versions/anaconda3-2024.10-1/etc/profile.d/conda.sh
conda update conda
 
(既に環境があるなら)
 
source /apps/pyenv/versions/anaconda3-2024.10-1/etc/profile.d/conda.sh

っと準備を終わらせます

topazのインストール

本家様ではanaconda/conda、pipでのインストールを紹介していますが、condaではうまく行かなかったのでpipで淹れてます.

[root@rockylinux9 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  565.57.01  Thu Oct 10 12:29:05 UTC 2024
GCC version:  gcc version 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC)
 
[root@rockylinux9 ~]# conda create -n topaz python=3.8 -c conda-forge
 
[root@rockylinux9 ~]# conda activate topaz
 
(topaz) [root@rockylinux9 ~]# pip install topaz-em
 
(topaz) [root@rockylinux9 ~]# topaz --version
0.3.6
 
(topaz) [root@rockylinux9 ~]# conda list
 :
nvidia-cublas-cu12        12.1.3.1                 pypi_0    pypi
nvidia-cuda-cupti-cu12    12.1.105                 pypi_0    pypi
nvidia-cuda-nvrtc-cu12    12.1.105                 pypi_0    pypi
nvidia-cuda-runtime-cu12  12.1.105                 pypi_0    pypi
nvidia-cudnn-cu12         8.9.2.26                 pypi_0    pypi
nvidia-cufft-cu12         11.0.2.54                pypi_0    pypi
nvidia-curand-cu12        10.3.2.106               pypi_0    pypi
nvidia-cusolver-cu12      11.4.5.107               pypi_0    pypi
nvidia-cusparse-cu12      12.1.0.106               pypi_0    pypi
nvidia-nccl-cu12          2.20.5                   pypi_0    pypi
nvidia-nvjitlink-cu12     12.6.85                  pypi_0    pypi
nvidia-nvtx-cu12          12.1.105                 pypi_0    pypi
 :
python                    3.8.20          h4a871b0_2_cpython    conda-forge
python-dateutil           2.9.0.post0              pypi_0    pypi
pytz                      2024.2                   pypi_0    pypi
 :
topaz-em                  0.3.6                    pypi_0    pypi
torch                     2.3.1                    pypi_0    pypi
torchvision               0.18.1                   pypi_0    pypi
tqdm                      4.67.1                   pypi_0    pypi
 :
(topaz) [root@rockylinux9 ~]#

torchの動作検証

(topaz) [root@rockylinux9 ~]# python
Python 3.8.20 (default, Oct  3 2024, 15:24:27)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> print(torch.cuda.get_device_name())
NVIDIA GeForce GTX 1070
>>> quit();
(topaz) [root@rockylinux9 ~]# conda deactivate
[root@rockylinux9 ~]#

大丈夫みたい.

環境を削除するには

[root@rockylinux9 ~]# conda env remove --name topaz

とします.

Environment Modules

[root@rockylinux9 ~]# vi /apps/modulefiles/topaz
#%Module
set          root /apps/pyenv/versions/anaconda3-2024.10-1/envs/topaz
prepend-path PATH $root/bin
 
[root@rockylinux9 ~]#

使ってみる

公式の使い方はこちらhttps://github.com/tbepler/topazに記載されてます。
チュートリアルもきちんと用意されてますhttps://github.com/tbepler/topaz#tutorial

ここではごくごく簡単な使い方をしてみます。本来ならトレーニングを行うのでしょうが、既存のモデルをそのまま使っています。
対象はGautomatchのサンプルで。

実行は単に「module load topaz」でtopaz実行環境をロードして

[saber@rockylinux9 ~]$ module use /apps/modulefiles/
[saber@rockylinux9 ~]$ module load topaz
 
[saber@rockylinux9 ~]$ which topaz
/apps/pyenv/versions/anaconda3-2024.10-1/envs/topaz/bin/topaz
[saber@rockylinux9 ~]$

対象ファイルを確認して、topaz実行場所を作る.

[saber@rockylinux9 ~]$ ls -l /apps/GCTF_Gautomatch_Cu10.1/ribosome/test[87].mrc
-rw-rw-r--. 1 root root 67109888 Feb  7  2016 /apps/GCTF_Gautomatch_Cu10.1/ribosome/test7.mrc
-rw-rw-r--. 1 root root 67109888 Feb  7  2016 /apps/GCTF_Gautomatch_Cu10.1/ribosome/test8.mrc
[saber@rockylinux9 ~]$
 
[saber@rockylinux9 ~]$ mkdir -p test/topaz
[saber@rockylinux9 ~]$ cd test/topaz/
[saber@rockylinux9 topaz]$

まずは 対象のmrcファイルに topaz の preprocess を掛ける

[saber@rockylinux9 topaz]$ topaz preprocess -v -s 8 -o ./  /apps/GCTF_Gautomatch_Cu10.1/ribosome/test[78].mrc
# processed: test7
# processed: test8
[saber@rockylinux9 topaz]$ 
[saber@rockylinux9 topaz]$ ls -lh
total 2.1M
-rw-r--r--. 1 saber saber 1.1M Jan  8 01:07 test7.mrc
-rw-r--r--. 1 saber saber 1.1M Jan  8 01:07 test8.mrc
[saber@rockylinux9 topaz]$

preprocess が終わったmrcファイルでpickを試みる

[saber@rockylinux9 topaz]$ topaz extract -r 14  -o predicted_particles.txt *.mrc
 
[saber@rockylinux9 topaz]$ ls -lh
total 2.1M
-rw-r--r--. 1 saber saber  57K Jan  8 01:26 predicted_particles.txt
-rw-r--r--. 1 saber saber 1.1M Jan  8 01:07 test7.mrc
-rw-r--r--. 1 saber saber 1.1M Jan  8 01:07 test8.mrc
[saber@rockylinux9 topaz]$

「UserWarning」が発生しましたが予測結果の「predicted_particles.txt」は得られました

得られた「predicted_particles.txt」の中身は下記になります

[saber@rockylinux9 topaz]$ less predicted_particles.txt
image_name      x_coord y_coord score
test7   186     148     6.538029193878174
test7   257     13      6.200371742248535
test7   96      181     6.096801280975342
test7   12      419     5.8089165687561035
test7   344     432     5.687950611114502
test7   444     495     5.635932445526123
 :
 :
[saber@rockylinux9 topaz]$

「ファイル名 X Y スコア」って感じですね. スコアはマイナスもあります.
v0.2.5より小数点以下の桁数が増えた感じ

っでこれを使って実際にどこが拾われているかを調べた.
2020y07m09d_171059951.png
スコアは2以上です

本来なら、自分でpickした座標データでトレーニングさせて、得られたモデルで「topaz extract」する感じかな.
ここでは標準装備のモデルを使ってます。「topaz extract -h」でモデルの指定方法が明記されてます.
*「-r」のサイズを小さくするとオーバーラップした粒子がpickされるみたい

メモ

「conda create -n topaz python=3.6 -y」なら問題ないが、「conda create -n topaz python=3.9 -y」とかpythonを3.6より大きくすると
UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors.」とか言われます.

topazのサイトで言及されています
https://github.com/tbepler/topaz/issues/68
無視して問題ないみたいです

miniforge3で作ってると
ImportError: /apps/pyenv/versions/miniforge3-23.11.0-0/envs/topaz/lib/python3.6/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
と表示される。どうも原因はMKLみたいで

source /apps/pyenv/versions/miniforge3-23.11.0-0/etc/profile.d/conda.sh
conda activate topaz
conda install mkl==2024.0

で回避される

miniforge3-24.11.2-1 では

[root@rockylinux9 ~]# source /apps/pyenv/versions/miniforge3-24.11.2-1/etc/profile.d/conda.sh
 
[root@rockylinux9 ~]# conda create -n topaz python=3.8 -c conda-forge
[root@rockylinux9 ~]# conda activate topaz
 
(topaz) [root@rockylinux9 ~]# pip install topaz-em
 
(topaz) [root@rockylinux9 ~]# conda list
 :
nvidia-cublas-cu12        12.1.3.1                 pypi_0    pypi
nvidia-cuda-cupti-cu12    12.1.105                 pypi_0    pypi
nvidia-cuda-nvrtc-cu12    12.1.105                 pypi_0    pypi
nvidia-cuda-runtime-cu12  12.1.105                 pypi_0    pypi
nvidia-cudnn-cu12         8.9.2.26                 pypi_0    pypi
nvidia-cufft-cu12         11.0.2.54                pypi_0    pypi
nvidia-curand-cu12        10.3.2.106               pypi_0    pypi
nvidia-cusolver-cu12      11.4.5.107               pypi_0    pypi
nvidia-cusparse-cu12      12.1.0.106               pypi_0    pypi
nvidia-nccl-cu12          2.20.5                   pypi_0    pypi
nvidia-nvjitlink-cu12     12.6.85                  pypi_0    pypi
nvidia-nvtx-cu12          12.1.105                 pypi_0    pypi
 :
python                    3.8.20          h4a871b0_2_cpython    conda-forge
python-dateutil           2.9.0.post0              pypi_0    pypi
 :
setuptools                75.3.0             pyhd8ed1ab_0    conda-forge
 :
topaz-em                  0.3.6                    pypi_0    pypi
torch                     2.3.1                    pypi_0    pypi
torchvision               0.18.1                   pypi_0    pypi
 :
(topaz) [root@rockylinux9 ~]#

これで動きました.

dev-topaz3d

「3D particle-picking is in development on the dev-topaz3d branch」とある.
ちょいと作ってみた.

[root@rockylinux9 ~]# source /apps/pyenv/versions/anaconda3-2024.10-1/etc/profile.d/conda.sh
 
[root@rockylinux9 ~]# conda create -n topaz3d python=3.8 pytorch  torchvision tqdm  h5py  pillow  numpy  pandas  scipy  scikit-learn -c conda-forge
 
[root@rockylinux9 ~]# conda activate topaz3d
 
(topaz3d) [root@rockylinux9 ~]# conda list
 :
cuda-cudart               12.6.77              h5888daf_0    conda-forge
cuda-cudart_linux-64      12.6.77              h3f2d84a_0    conda-forge
cuda-nvrtc                12.6.85              hbd13f7d_0    conda-forge
cuda-nvtx                 12.6.77              hbd13f7d_0    conda-forge
cuda-version              12.6                 h7480c83_3    conda-forge
cudnn                     8.9.7.29             h092f7fd_3    conda-forge
 :
h5py                      3.11.0          nompi_py38h55b5aab_102    conda-forge
 :
mkl                       2023.2.0         h84fe81f_50496    conda-forge
 :
numpy                     1.24.4           py38h59b608b_0    conda-forge
 :
pandas                    2.0.3            py38h01efb38_1    conda-forge
pillow                    10.4.0           py38h2bc05a7_0    conda-forge
 :
python                    3.8.20          h4a871b0_2_cpython    conda-forge
python-dateutil           2.9.0              pyhd8ed1ab_0    conda-forge
python-tzdata             2024.2             pyhd8ed1ab_0    conda-forge
python_abi                3.8                      5_cp38    conda-forge
pytorch                   2.4.0           cuda120_py38hc4689d7_301    conda-forge
pytz                      2024.2             pyhd8ed1ab_0    conda-forge
 :
scikit-learn              1.3.2            py38ha25d942_2    conda-forge
scipy                     1.10.1           py38h59b608b_3    conda-forge
setuptools                75.3.0             pyhd8ed1ab_0    conda-forge
 :
torchvision               0.19.0          cuda120py38h0f49aeb_0    conda-forge
tqdm                      4.67.1             pyhd8ed1ab_0    conda-forg
 :
(topaz3d) [root@rockylinux9 ~]#
(topaz3d) [root@rockylinux9 ~]# cd /apps/
(topaz3d) [root@rockylinux9 apps]# git clone https://github.com/tbepler/topaz
(topaz3d) [root@rockylinux9 apps]# cd topaz/
(topaz3d) [root@rockylinux9 topaz]# 
(topaz3d) [root@rockylinux9 topaz]# git branch --all
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/alphamax
  remotes/origin/auto-masking
  remotes/origin/dev
  remotes/origin/dev-topaz3d
  remotes/origin/master
  remotes/origin/recomb-2018
(topaz3d) [root@rockylinux9 topaz]# 
(topaz3d) [root@rockylinux9 topaz]# git checkout dev-topaz3d
(topaz3d) [root@rockylinux9 topaz]# git branch
* dev-topaz3d
  master
(topaz3d) [root@rockylinux9 topaz]# pip install .
 
(topaz3d) [root@rockylinux9 topaz]# conda deactivate
[root@rockylinux9 topaz]#
[root@rockylinux9 ~]# vi /apps/modulefiles/topaz3d
#%Module
set          root /apps/pyenv/versions/anaconda3-2024.10-1/envs/topaz3d
prepend-path PATH $root/bin
 
[root@rockylinux9 ~]#

通常のtopazのhelpと比べると

[topazのtopaz -h]
commands:
  Particle picking:
    train                      train 2D region classifier from images with labeled
                               coordinates
    segment                    segment images using a trained region classifier
 
[topaz3dのtopaz -h]
commands:
  Particle picking:
    train                      train 2D region classifier from images with labeled
                               coordinates
    train3d                    train 3D region classifier from volumes with labeled
                               coordinates
    segment                    segment images using a trained region classifier

と「train3d」が加わっている.

めも

最新のnvidiaドライバーだと0.2.5が上手く機能しないみたい

conda create -n topaz-0.2.5 python=3.6 -c conda-forge -y
conda activate topaz-0.2.5
pip install topaz-em==0.2.5
 
conda list
 :
python                     3.6.15           hb7a2778_0_cpython  conda-forge
 :
topaz-em                   0.2.5            pypi_0              pypi
torch                      1.10.1           pypi_0              pypi
torchvision                0.11.2           pypi_0              pypi
 :

としてテスト計算を行うと

RuntimeError: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

と「no kernel image」と出るので恐らく nvidia ドライバーかなぁ...

一応GPU対応でない場合は上手く行く。cryoSPARCのドキュメントにはCPU版で記載されているので、この0.2.5のCPU版と最新版でGPU対応の2つを入れることにする

conda env remove --name topaz-0.2.5 -y
 
conda create -n topaz-0.2.5 python=3.6
conda activate topaz-0.2.5
conda install topaz=0.2.5 mkl=2020.2 -c tbepler -c pytorch

GPU版

conda create -n topaz-0.3.11 python=3.11 -y
conda activate topaz-0.3.11
pip install topaz-em==0.3.11
conda install 'setuptools<80'
最新の60件
2025-11-05 2025-11-03 2025-11-02 2025-10-31 2025-10-30 2025-10-29 2025-10-28 2025-10-26 2025-10-25 2025-10-24 2025-10-22 2025-10-21 2025-10-17 2025-10-13 2025-10-12 2025-10-11 2025-10-06 2025-10-05 2025-10-01 2025-09-30 2025-09-29 2025-09-28 2025-09-25 2025-09-24 2025-09-23 2025-09-21 2025-09-20 2025-09-17 2025-09-14 2025-09-13 2025-09-12 2025-09-11 2025-09-01 2025-08-28 2025-08-22 2025-08-18 2025-08-17 2025-08-16

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-07-25 (金) 19:21:10