本家様 https://github.com/tbepler/topaz
Singularityで利用するならtopaz/Singularity
各自のホームディレクトリに各種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 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
っと準備を終わらせます
本家様では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
とします.
[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より小数点以下の桁数が増えた感じ
っでこれを使って実際にどこが拾われているかを調べた.
スコアは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
で回避される
[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 ~]#
これで動きました.
「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」が加わっている.