本家様 https://github.com/SBC-Utrecht/PyTom
PyTom is a toolbox developed for interpreting cryo electron tomography data. All steps from reconstruction, localization, alignment and classification are covered with standard and improved methods.
(DeepL先生訳)
PyTomは低温電子トモグラフィデータを解釈するために開発されたツールボックスです。再構成、ローカライズ、アライメント、分類の全てのステップを標準的な手法と改良された手法でカバーしています。
他、テンプレートマッチングに特化した pytom-match-pick (本家様 https://github.com/SBC-Utrecht/pytom-match-pick
) も扱います
実行環境はこんな感じです。nvidiaドライバのみ入っていてcudaライブラリは入ってないです.
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)
[root@rockylinux9 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 570.181 Release Build (dvs-builder@U22-I3-AF02-20-5) Wed Jul 30 18:41:07 UTC 2025
GCC version: gcc version 11.5.0 20240719 (Red Hat 11.5.0-5) (GCC)
[root@rockylinux9 ~]# ls /usr/local/cuda
ls: cannot access '/usr/local/cuda': No such file or directory
[root@rockylinux9 ~]#まず、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 --list <--これでanaconda,minicondaのバージョンが一覧されます.
pyenv install miniforge3-25.3.1-0
source /apps/pyenv/versions/miniforge3-25.3.1-0/etc/profile.d/conda.sh
conda update conda -yっで構築します。
[root@rockylinux9 ~]# dnf install fftw-devel
[root@rockylinux9 ~]# cd /apps/
[root@rockylinux9 apps]# git clone https://github.com/SBC-Utrecht/PyTom
[root@rockylinux9 apps]# cd PyTom/
[root@rockylinux9 PyTom]#python 3.7とかでないとコンパイルできないようなので「environments/pytom_full.yaml」を修正します.
|
その上で
[root@rockylinux9 PyTom]# conda env create -f environments/pytom_full.yaml --name pytom
[root@rockylinux9 PyTom]# conda activate pytom
(pytom) [root@rockylinux9 PyTom]#ここからpytomをコンパイルするのですが、なぜか「#include <crypt.h>」が読めないようで環境変数に「crypt.h」のありかを加えます
(pytom) [root@rockylinux9 PyTom]# export CFLAGS="$CFLAGS -I/usr/include"
(pytom) [root@rockylinux9 PyTom]# export CPPFLAGS="$CPPFLAGS -I/usr/include"
(pytom) [root@rockylinux9 PyTom]# export C_INCLUDE_PATH="/usr/include"そして「expytom_mpi_wrap.cpp」のコンパイル時も「crypt.h」がないと言われる.
こちらは「pytom/pytomc/Makefile」を下記のように修正しました
|
あとOS由来のPYTHONでコンパイルしてしまうようで、
(pytom) [root@rockylinux9 PyTom]# export PYTHON_VERSION=python3.7とします。
っで $CONDA_PREFIX の場所を確認して
(pytom) [root@rockylinux9 PyTom]# echo $CONDA_PREFIX
/apps/pyenv/versions/miniforge3-25.3.1-0/envs/pytom
(pytom) [root@rockylinux9 PyTom]# python setup.py install --prefix $CONDA_PREFIX
(pytom) [root@rockylinux9 PyTom]# conda list
:
cudatoolkit 11.8.0 h4ba93d1_13 conda-forge
cupy 11.2.0 py37h17e6d27_0 conda-forge
:
gcc 12.4.0 h236703b_2 conda-forge
gcc_impl_linux-64 12.4.0 h26ba24d_2 conda-forge
gcc_linux-64 12.4.0 h6b7512a_10 conda-forge
:
libgcrypt 1.11.1 ha770c72_0 conda-forge
libgcrypt-devel 1.11.1 hb9d3cd8_0 conda-forge
:
mpi 1.0 openmpi conda-forge
mpi4py 3.1.3 py37h910e6d8_2 conda-forge
:
numpy 1.21.6 py37h976b520_0 conda-forge
:
pyqt 5.15.7 py37hf30b843_1 conda-forge
pyqt5-sip 12.11.0 py37hd23a5d3_1 conda-forge
pyqtgraph 0.12.4 pyhd8ed1ab_0 conda-forge
python 3.7.12 hf930737_100_cpython conda-forge
python-dateutil 2.9.0 pyhd8ed1ab_0 conda-forge
python_abi 3.7 4_cp37m conda-forge
pytom 1.0 pypi_0 pypi
:
(pytom) [root@rockylinux9 PyTom]# conda deactivate
[root@rockylinux9 PyTom]#以上で完成です。
pytomGUI「/apps/PyTom/pytom/gui/pytomGUI.py」の最下行あたりに下記のような記載があります
[root@rockylinux9 ~]# tail /apps/PyTom/pytom/gui/pytomGUI.py
print(exctype, value, traceback)
sys._excepthook(exctype, value, traceback)
sys.exit(1)
sys.excepthook = exception_hook
for fname, module in [( 'motioncor2', 'motioncor2/1.2.1' ), ('header', 'imod/4.10.25')]:
if subprocess.run(['which', fname], capture_output=True, text=True).returncode != 0:
print('Please load the {} module'.format(module))
main()
[root@rockylinux9 ~]#と motioncor2/1.2.1 をロードさせて motioncor2 の存在確認、imod/4.10.25 をロードして header の存在確認を行うようになってます。
ですが事前にmoduleコマンドで正しくMotionCor2やimodをロードしていればよろしいかと。ただMotionCor2は「motioncor2」として打てること.
いつものEnvironmentModules
こちらは「/apps/modulefiles/PyTom」として中身は下記のようにします。PyTomから imod や MotionCor2 を使うので予めロードさせておきます。
#%Module1.0
module load IMOD
module load MotionCor2
set root /apps/pyenv/versions/miniforge3-25.3.1-0/envs/pytom
prepend-path PATH $root/bin
prepend-path LD_LIBRARY_PATH $root/bin起動は
[saber@rockylinux9 ~]$ module use /apps/modulefiles
[saber@rockylinux9 ~]$ module load PyTom
[saber@rockylinux9 ~]$ pytomGUI
Please load the motioncor2/1.2.1 module
Please load the imod/4.10.25 module
となって下記画面が表示される

本家様 https://github.com/SBC-Utrecht/pytom-match-pick
pipy https://pypi.org/project/pytom-match-pick/
[root@rockylinux9 ~]# source /apps/pyenv/versions/miniforge3-25.3.1-0/etc/profile.d/conda.sh
[root@rockylinux9 ~]# conda create -n pytom_tm -c conda-forge python=3.11 cupy cuda-version=11.8
[root@rockylinux9 ~]# conda activate pytom_tm
(pytom_tm) [root@rockylinux9 ~]# python -m pip install pytom-match-pick[plotting]
(pytom_tm) [root@rockylinux9 ~]# conda list
:
cuda-version 11.8 h70ddcb2_3 conda-forge
cudatoolkit 11.8.0 h4ba93d1_13 conda-forge
cupy 13.6.0 py311he6248c7_2 conda-forge
cupy-core 13.6.0 py311h7b40851_2 conda-forge
:
python 3.11.13 h9e4cc4f_0_cpython conda-forge
python-dateutil 2.9.0.post0 pypi_0 pypi
python_abi 3.11 8_cp311 conda-forge
pytom-match-pick 0.12.0 pypi_0 pypi
:
(pytom_tm) [root@rockylinux9 ~]#
(pytom_tm) [root@rockylinux9 ~]# python -c "import pytom_tm"
(pytom_tm) [root@rockylinux9 ~]# python -c "import cupy as cp; a = cp.zeros((100,100))"
->上記2つともエラーなしで動いたので cupy は問題ないかとEnvironmentModules
「/apps/modulefiles/pytom-match-pick」として
#%Module1.0
set root /apps/pyenv/versions/miniforge3-25.3.1-0/envs/pytom_tm
prepend-path PATH $root/binチュートリアルの実行 https://github.com/SBC-Utrecht/pytom-match-pick/wiki/Tutorial
まず https://doi.org/10.34894/TLGJCM
からデータセットを取得します。40枚のファイルです。
CentOS/repoで devtoolset-11 を組み込んでgcc-11を有効にさせます.
[root@centos7 ~]# yum install centos-release-scl-rh
[root@centos7 ~]# vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
(vault.centos.orgを参照させるように修正します)
[root@centos7 ~]# yum install devtoolset-11 -y
[root@centos7 ~]# source scl_source enable devtoolset-11
[root@centos7 ~]# gcc --version
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@centos7 ~]#
[root@centos7 ~]# source /apps/pyenv/versions/miniforge3-25.3.1-0/etc/profile.d/conda.sh
[root@centos7 ~]# conda create -n pytom_tm -c conda-forge python=3.11 cupy cuda-version=11.8
[root@centos7 ~]# conda activate pytom_tm
(pytom_tm) [root@centos7 ~]# conda install -c conda-forge pyarrow
(pytom_tm) [root@centos7 ~]# python -m pip install pytom-match-pick[plotting]
(pytom_tm) [root@centos7 ~]# conda list
:
cuda-version 11.8 h70ddcb2_3 conda-forge
cudatoolkit 11.8.0 h4ba93d1_13 conda-forge
cupy 13.6.0 py311he6248c7_2 conda-forge
cupy-core 13.6.0 py311h7b40851_2 conda-forge
:
pyarrow 21.0.0 py311h38be061_1 conda-forge
pyarrow-core 21.0.0 py311h342b5a4_1_cpu conda-forge
pyparsing 3.2.5 pypi_0 pypi
python 3.11.13 h9e4cc4f_0_cpython conda-forge
python-dateutil 2.9.0.post0 pypi_0 pypi
python_abi 3.11 8_cp311 conda-forge
pytom-match-pick 0.12.0 pypi_0 pypi
:
(pytom_tm) [root@centos7 ~]# conda deactivate
[root@centos7 ~]#
conda で pyarrow を入れる必要あり。その後に pip で pytom-match-pick を入れる流れで.
そうでないと pyarrow のビルドが始まるが、centos7ではそのコンパイル環境を作るだけで一苦労.
テスト.
git clone https://github.com/SBC-Utrecht/pytom-match-pick
cd pytom-match-pick/tests
python -m unittest discover計算系によってはGPUメモリーが足らないと言われる.
正しい方法かは不明だが、ユニファイドメモリーを使って回避できたけど...
下記のように追記します.
vi /apps/pyenv/versions/miniforge3-23.11.0-0/envs/pytom_tm/lib/python3.12/site-packages/pytom_tm/matching.py
:
pool = cp.cuda.MemoryPool(cp.cuda.malloc_managed)
cp.cuda.set_allocator(pool.malloc)
: