#author("2026-01-30T17:19:32+00:00","default:sysosa","sysosa") #author("2026-01-30T17:19:44+00:00;2026-01-30T17:19:32+00:00","default:sysosa","sysosa") 本家様 [[https://github.com/tbepler/topaz>+https://github.com/tbepler/topaz]] pipy [[https://pypi.org/project/topaz-em/>+https://pypi.org/project/topaz-em/]] Singularityで利用するなら[[topaz/Singularity]] 各自のホームディレクトリに各種pythonアプリの実行環境を用意するのではなく、rootで一元管理させるために「pyenv-anaconda」を使ってます. pyenvでOS提供のpython,anaconda環境から離れ、そのpyenv上にanaconda環境を独自に敷いてます ここでは「/apps/pyenv」を起点としています ***pyenv-anacondaの設置 [#l80daff1] #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 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のインストール [#i845db28] 本家様ではanaconda/conda、pipでのインストールを紹介していますが、condaではうまく行かなかったのでpipで淹れてます. #code(nonumber){{ [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の動作検証 #code(nonumber){{ (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 ~]# }} 大丈夫みたい. 環境を削除するには #code(nonumber){{ [root@rockylinux9 ~]# conda env remove --name topaz }} とします. ***Environment Modules [#tfdd23e0] #code(nonumber){{ [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 ~]# }} ***使ってみる [#pf1f5d93] 公式の使い方はこちら[[https://github.com/tbepler/topaz>+https://github.com/tbepler/topaz]]に記載されてます。 チュートリアルもきちんと用意されてます[[https://github.com/tbepler/topaz#tutorial>+https://github.com/tbepler/topaz#tutorial]] ここではごくごく簡単な使い方をしてみます。本来ならトレーニングを行うのでしょうが、既存のモデルをそのまま使っています。 対象は[[Gautomatch]]のサンプルで。 実行は単に「module load topaz」でtopaz実行環境をロードして #code(nonumber){{ [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実行場所を作る. #code(nonumber){{ [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 を掛ける #code(nonumber){{ [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を試みる #code(nonumber){{ [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」の中身は下記になります #code(nonumber){{ [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 スコア」って感じですね. スコアはマイナスもあります. &size(10){v0.2.5より小数点以下の桁数が増えた感じ}; っでこれを使って実際にどこが拾われているかを調べた. &ref(2020y07m09d_171059951.png,nolink); スコアは2以上です 本来なら、自分でpickした座標データでトレーニングさせて、得られたモデルで「topaz extract」する感じかな. ここでは標準装備のモデルを使ってます。「topaz extract -h」でモデルの指定方法が明記されてます. &color(red){*};&size(10){「-r」のサイズを小さくするとオーバーラップした粒子がpickされるみたい}; ***メモ [#ge9bfd5b] 「conda create -n topaz python=3.6 -y」なら問題ないが、「conda create -n topaz python=3.9 -y」とかpythonを3.6より大きくすると 「&color(red){UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors.};」とか言われます. topazのサイトで言及されています [[https://github.com/tbepler/topaz/issues/68>+https://github.com/tbepler/topaz/issues/68]] 無視して問題ないみたいです miniforge3で作ってると &color(red){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みたいで #code(nonumber){{ 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 では [#x9671fde] #code(nonumber){{ [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 [#m804dbd0] 「3D particle-picking is in development on the dev-topaz3d branch」とある. ちょいと作ってみた. #code(nonumber){{ [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]# }} #code(nonumber){{ [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と比べると #code(nonumber){{ [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」が加わっている. ***めも [#c06c7fb5] 最新のnvidiaドライバーだと0.2.5が上手く機能しないみたい #code(nonumber){{ 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 : }} としてテスト計算を行うと #code(nonumber){{ 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つを入れることにする #code(nonumber){{ 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版 #code(nonumber){{ 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' }} ***blackwell GPUで topaz-0.2.5 [#ab670943] #code(nonumber){{ conda create -n topaz-0.2.5 python=3.10 -y conda activate topaz-0.2.5 conda install topaz=0.2.5 mkl=2024 "pandas<2" pytorch=2.*=cuda* "setuptools<80" -c tbepler -c pytorch -c conda-forge -y topaz --version conda deactivate }}