本家様 https://github.com/tbepler/topaz
Scipionにも含まれてますが、単体で利用したいなら.
Anacondaを使ってtopaz向けの環境環境を作るのがいいみたい.
ここではcrYOLOのときにpyenv経由でAnacondaを敷いたのでそれをそのまま使うことにする
(crYOLOでのおさらい)
[root@c ~]# git clone https://github.com/yyuu/pyenv.git /apps/pyenv
[root@c ~]# export PYENV_ROOT=/apps/pyenv
[root@c ~]# export PATH=$PYENV_ROOT/bin:$PATH
[root@c ~]# eval "$(pyenv init - --no-rehash)"
[root@c ~]# pyenv install anaconda3-5.3.1
[root@c ~]# pyenv global anaconda3-5.3.1
[root@c ~]# export PATH=$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH
[root@c ~]# conda update conda
(ここからtopaz)
[root@c ~]# conda env list
# conda environments:
#
/apps/eman2.3
/apps/eman2.31
base * /apps/pyenv/versions/anaconda3-5.3.1
cinderella /apps/pyenv/versions/anaconda3-5.3.1/envs/cinderella
cryolo /apps/pyenv/versions/anaconda3-5.3.1/envs/cryolo
cryolo-1.5.4 /apps/pyenv/versions/anaconda3-5.3.1/envs/cryolo-1.5.4
janni /apps/pyenv/versions/anaconda3-5.3.1/envs/janni
pyem /apps/pyenv/versions/anaconda3-5.3.1/envs/pyem
topaz /apps/pyenv/versions/anaconda3-5.3.1/envs/topaz
transphire /apps/pyenv/versions/anaconda3-5.3.1/envs/transphire
/apps/scipion/software/em/eman-2.3
/home/cryosparc/software/cryosparc/cryosparc2_master/deps/anaconda
/home/cryosparc/software/cryosparc/cryosparc2_worker/deps/anaconda
[root@c ~]#
topaz環境を作ります
環境構築には「conda create -n topaz python=3.6」でつくり、その環境をactivateします
[root@c ~]# conda create -n topaz python=3.6
[root@c ~]# source activate topaz
(topaz) [root@c ~]#
環境を削除するには
[root@c ~]# conda env remove --name topaz
とします.
その後topazをインストールします
(topaz) [root@c ~]# conda install topaz pytorch cudatoolkit=11.3 -c pytorch -c tbepler
(topaz) [root@c ~]#
:
:
(topaz) [root@c ~]# source deactivate
[root@c ~]#
pytorch-1.10.2が必要みたい. 以前「conda install topaz -c tbepler -c pytorch」 minicondaで作ったらpytorch-1.4が導入された..
Environment Modules †
[root@c ~]# vi /etc/modulefiles/topaz
#%Module -*- tcl -*-
set root /apps/pyenv/versions/anaconda3-5.3.1/envs/topaz
prepend-path PATH $root/bin
[root@c ~]#
使ってみる †
公式の使い方はこちらhttps://github.com/tbepler/topaz
に記載されてます。
チュートリアルもきちんと用意されてますhttps://github.com/tbepler/topaz#tutorial
ここではごくごく簡単な使い方をしてみます。本来ならトレーニングを行うのでしょうが、既存のモデルをそのまま使っています。
対象はGautomatchのサンプルで。
実行は単に「module load topaz」でtopaz実行環境をロードして
[illya@c ~]$ module load topaz
[illya@c ~]$ which topaz
/appl/pyenv/versions/anaconda3-5.3.1/envs/topaz/bin/topaz
[illya@c ~]$
対象ファイルを確認して、topaz実行場所を作る.
[illya@c ~]$ ls -lh gautomatch/examples/ribosome/*.mrc
-rw-r--r-- 1 illya em 65M Apr 15 2016 gautomatch/examples/ribosome/test7.mrc
-rw-r--r-- 1 illya em 65M Apr 15 2016 gautomatch/examples/ribosome/test8.mrc
[illya@c ~]$ mkdir topaz && cd topaz
[illya@c topaz]$
まずは 対象のmrcファイルに topaz の preprocess を掛ける
[illya@c topaz]$ topaz preprocess -v -s 8 -o ./ ../gautomatch/examples/ribosome/*.mrc
# processed: test7
# processed: test8
[illya@c topaz]$ ls -lh
total 2.1M
-rw-r--r-- 1 illya em 1.1M Jul 9 16:12 test7.mrc
-rw-r--r-- 1 illya em 1.1M Jul 9 16:12 test8.mrc
[illya@c topaz]$
preprocess が終わったmrcファイルでpickを試みる
[illya@c topaz]$ topaz extract -r 14 -o predicted_particles.txt *.mrc
[illya@c topaz]$ ls -lh
total 2.1M
-rw-r--r-- 1 illya em 42K Jul 9 16:20 predicted_particles.txt
-rw-r--r-- 1 illya em 1.1M Jul 9 16:12 test7.mrc
-rw-r--r-- 1 illya em 1.1M Jul 9 16:12 test8.mrc
[illya@c topaz]$
得られた「predicted_particles.txt」の中身は下記になります
[illya@c topaz]$ less predicted_particles.txt
image_name x_coord y_coord score
test7 2216 1768 1.86423e+36
test7 2192 1344 2.5884942e+35
test7 3432 664 3.147465e+34
test7 3376 888 1.3698722e+32
test7 3744 1880 1014.0857
test7 3712 232 1011.4868
test7 3712 1680 631.3565
test7 3600 3928 510.96475
test7 3712 1088 485.2298
:
:
[illya@c topaz]$
「ファイル名 X Y スコア」って感じですね. スコアはマイナスもあります.
っでこれを使って実際にどこが拾われているかを調べた.

スコアは2以上です
本来なら、自分でpickした座標データでトレーニングさせて、得られたモデルで「topaz extract」する感じかな.
ここでは標準装備のモデルを使ってます。「topaz extract -h」でモデルの指定方法が明記されてます.
*「-r」のサイズを小さくするとオーバーラップした粒子がpickされるみたい
pipを使ってインストールする †
conda経由でインストールされるtopazが 0.2.5a(2022.03.16)となったみたい https://anaconda.org/tbepler/topaz
なので下記は不要かなと.
一方でpipでインストールする方も 0.2.5 になった模様 [[https://pypi.org/project/topaz-em/>+https://pypi.org/project/topaz-em/
]
[root@c ~]# conda create -n topaz python=3.6
[root@c ~]# source activate topaz
(topaz) [root@c ~]# cd /apps
(topaz) [root@c apps]# git clone https://github.com/tbepler/topaz
(topaz) [root@c apps]# cd topaz
(必要ならここでgit操作)
(topaz) [root@c topaz]# pip install .
(ここで終了なのだが、pytorchが入っていない場合もあって、その際はエラーになる。解消としては再度下記を実行する)
(topaz) [root@c topaz]# conda install pytorch cudatoolkit=11.3 -c pytorch -c nvidia -y
(topaz) [root@c topaz]# source deactivate
[root@c src]#
Environment Modulesは下記のようにする
#%Module -*- tcl -*-
set root /apps/pyenv/versions/anaconda3-5.3.1/envs/topaz
prepend-path PATH $root/bin
これを読み込み動作を確認します
[saber@c ~]$ module load topaz
[saber@c ~]$ which topaz
/apps/pyenv/versions/anaconda3-5.3.1/envs/topaz/bin/topaz
[saber@c ~]$ topaz --version
TOPAZ 0.2.5a
[saber@c ~]$
まちがい
以前に「ソースからインストール」と銘打っていましたが、間違いでした。実際には「pipでインストール」でした。
そして、その時は上手く行ったが、現在は無理みたいで、最後に
(pytorchが入っていない場合があって解消としては再度下記を実行する)
conda install pytorch cudatoolkit=11.3 -c pytorch -c nvidia -y
の実行が必要
Relionからtopazを実行する †
topaz-v0.2.5からRelionの「External」項目で利用可能なスクリプトが提供されている
まずはそれを取得します
cd /apps
git clone https://github.com/tbepler/topaz
取得したtopazフォルダの中に「relion_run_topaz」フォルダがあってそこに利用可能なスクリプトがある
まず事前にtopaz実行環境をロードする
そして、「module load topaz」を実行したターミナル内でプロジェクトのディレクトリに移り、relionを起動させます。
topazの実行環境変数をrelion側で利用できるようにするため
その後、「External」項目を選択して、Inputタグの
「External executable」には「python /apps/topaz/relion_run_topaz/run_topaz_pick.py」run_topaz_pick.pyファイルをrelion実行場所にコピーするなら「python run_topaz_pick.py」
「Input micrographs」には求めたいmrcファイル/starファイルを指定

次に「Params」タグにて
Param1 labelには「topaz_path」、値は「which topaz」の値を入れます。ここでは「/apps/pyenv/versions/anaconda3-5.3.1/envs/topaz/bin/topaz」でしたのでこの値を入れてます

他、topazのパラメーターらを必要に応じて入れる。例えば
Param2 labelに「model」として値を「resnet16_u64」と使用するモデルを替えたりとか.
そしてRunを押下します。
計算が終わると「topaz_picks.txt」が作られる。中身は
image_name x_coord y_coord score
20170629_00021_frameImage 550 139 5.9176884
20170629_00021_frameImage 89 491 5.0386343
20170629_00021_frameImage 885 382 4.742715
20170629_00021_frameImage 530 774 4.625095
20170629_00021_frameImage 534 922 4.617046
:
:
こんな感じ. 他にも「*_topazpicks.star」ファイルも作られる。
# version 30001
data_
loop_
_rlnCoordinateX #1
_rlnCoordinateY #2
_rlnAutopickFigureOfMerit #3
2200 556 5.9176884
356 1964 5.0386343
3540 1528 4.7427150000000005
2120 3096 4.625095
:
:
メモ †
「UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors.」とか言われますが、
topazのサイトで言及されています
https://github.com/tbepler/topaz/issues/68
無視して問題ないみたいです