本家様 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

っで構築します。

PyTom

[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」を修正します.
cupyはv13.4以上でblackwell対応です. pytomのコードの仕様なのか最新のgcc(v14とかv15)ではコンパイルエラーになるみたい.

@@ -2,7 +2,7 @@ name: pytom_env
 channels:
 - conda-forge
 dependencies:
-- python=3
+- python=3.12
 - ipython
 - numpy<2
 - lxml
@@ -19,10 +19,10 @@ dependencies:
 - tqdm
 - mpi4py
 - joblib
-- cupy
+- cupy>=13.4
 - matplotlib
 - scikit-image
 - swig
 - fftw[build=*openmpi*]
 - make
-- gcc
+- gcc<12

その上で

[root@rockylinux9 PyTom]# conda env create -f environments/pytom_full.yaml --name pytom
 
[root@rockylinux9 PyTom]# conda activate pytom
 
(pytom) [root@rockylinux9 PyTom]# conda list
 :
cuda-cccl_linux-64             13.1.78          ha770c72_0               conda-forge
cuda-cudart-dev_linux-64       13.1.80          h376f20c_0               conda-forge
cuda-cudart-static_linux-64    13.1.80          h376f20c_0               conda-forge
cuda-cudart_linux-64           13.1.80          h376f20c_0               conda-forge
cuda-nvrtc                     13.1.80          hecca717_0               conda-forge
cuda-version                   13.1             h2ff5cdb_3               conda-forge
cupy                           13.6.0           py310hcc3e0c5_2          conda-forge
cupy-core                      13.6.0           py310h1d24f8f_2          conda-forge
 :
gcc                            11.4.0           h602e360_13              conda-forge
gcc_impl_linux-64              11.4.0           h00c12a0_13              conda-forge
gcc_linux-64                   11.4.0           ha077dfb_4               conda-forge
gfortran_impl_linux-64         11.4.0           hd465bd8_13              conda-forge
gfortran_linux-64              11.4.0           hddf7001_4               conda-forge
 :
mpi                            1.0              openmpi                  conda-forge
mpi4py                         4.1.1            py310h42af892_102        conda-forge
 :
numpy                          1.26.4           py312heda63a1_0          conda-forge
 :
openmpi                        5.0.5            h6ae21d5_103             conda-forge
openmpi-mpicc                  5.0.5            hc43e4ee_103             conda-forge
openmpi-mpicxx                 5.0.5            hc10b7d8_103             conda-forge
openmpi-mpifort                5.0.5            hede194e_103             conda-forge
 :
python                         3.12.12          hd63d673_1_cpython       conda-forge
 :

っで $CONDA_PREFIX の場所を確認して pytom を作ります

(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
 :
Searching :  mpicc               Found :  True
Searching :  mpic++              Found :  True
Searching :  libmpi.so           Found :  True
Searching :  mpi.h               Found :  True
Searching :  Python.h            Found :  True
Searching :  libpython3.12.so            Found :  True
Searching :  fftw3.h             Found :  True
Searching :  libfftw3.so                 Found :  True
Searching :  type_traits.hpp             Found :  True
Searching :  ndarrayobject.h             Found :  False
Searching :  ndarrayobject.h             Found :  True
Check compiling prerequisites:
 :
(pytom) [root@rockylinux9 PyTom]# conda list
 :
cuda-version                   13.1             h2ff5cdb_3               conda-forge
cupy                           13.6.0           py312h045ee1a_2          conda-forge
 :
gcc                            11.4.0           h602e360_13              conda-forge
 :
mpi                            1.0              openmpi                  conda-forge
mpi4py                         4.1.1            py312hd140a38_102        conda-forge
 :
numpy                          1.26.4           py312heda63a1_0          conda-forge
 :
pyqt                           5.15.11          py312h82c0db2_2          conda-forge
pyqt5-sip                      12.17.0          py312h1289d80_2          conda-forge
pyqtgraph                      0.14.0           pyhd8ed1ab_0             conda-forge
pyside6                        6.9.2            py312h5654102_1          conda-forge
python                         3.12.12          hd63d673_1_cpython       conda-forge
python-dateutil                2.9.0.post0      pyhe01879c_2             conda-forge
python_abi                     3.12             8_cp312                  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/lib

起動は

[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

となって下記画面が表示される
2024y07m11d_192818881.png

pytom-match-pick

本家様 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.12 "cupy<14" cuda-version=12.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-cccl_linux-64             12.8.90          ha770c72_1            conda-forge
cuda-cudart-dev_linux-64       12.8.90          h3f2d84a_1            conda-forge
cuda-cudart-static_linux-64    12.8.90          h3f2d84a_1            conda-forge
cuda-cudart_linux-64           12.8.90          h3f2d84a_1            conda-forge
cuda-nvrtc                     12.8.93          h5888daf_1            conda-forge
cuda-version                   12.8             h5d125a7_3            conda-forge
cupy                           13.6.0           py312h0317cef_2       conda-forge
cupy-core                      13.6.0           py312h16a6543_2       conda-forge
 :
numpy                          2.4.2            py312h33ff503_1       conda-forge
 :
python                         3.12.12          hd63d673_2_cpython    conda-forge
python-dateutil                2.9.0.post0      pypi_0                pypi
python_abi                     3.12             8_cp312               conda-forge
pytom-match-pick               0.12.1           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枚のファイルです。

pytom-match-pick (CentOS7で)

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)
 :
最新の60件
2026-04-22 2026-04-21 2026-04-20 2026-04-17 2026-04-16 2026-04-12 2026-04-08 2026-04-06 2026-04-05 2026-04-04 2026-04-02 2026-03-26 2026-03-23 2026-03-21 2026-03-19 2026-03-15 2026-03-14 2026-03-13 2026-03-07 2026-03-06 2026-03-04 2026-03-02 2026-02-26 2026-02-24 2026-02-21
  • PyTom
2026-02-18 2026-02-17 2026-02-16 2026-02-11 2026-02-09 2026-02-07 2026-02-06 2026-02-03 2026-02-02 2026-01-31 2026-01-26 2026-01-24

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-02-21 (土) 23:42:37