本家様 http://sphire.mpg.de/wiki/doku.php?id=auto_2d_class_selection
Automatic 2D class selection
まずはpyenv環境を構築するcrYOLO#w789c07e
その次に
Cinderella 向けの仮想実行環境を作る
[root@c ~]# conda create -n cinderella-gpu -c anaconda python=3.6 pyqt=5 cudnn=7.1.2 numpy==1.14.5 h5py=2.7
(h5pyのバージョンを固定しないと動かないみたい)
[root@c ~]# source activate cinderella-gpu
(cinderella-gpu) [root@c ~]# pip install cinderella[gpu]
(cinderella-gpu) [root@c ~]# which sp_cinderella_predict.py
/apps/pyenv/versions/anaconda3-2021.11/envs/cinderella-0.7.0-cpu/bin/sp_cinderella_predict.py
(cinderella-gpu) [root@c ~]#
(cinderella-gpu) [root@c ~]# conda deactivate
[root@c ~]#
EnvironmentModulesで実行環境を整備するならmodiilefileを下記のようにする
*普通は「/etc/modulefiles/cinderella」かな
[root@c ~]# vi /home/Common/modules/cinderella
#%Module -*- tcl -*-
proc ModulesHelp { } {
puts stderr "\tAdds anaconda to your environment variables,"
}
module-whatis "Adds anaconda to your environment variables"
set root /Appl/pyenv/versions/anaconda3-5.3.1/envs/cinderella
prepend-path PATH $root/bin
[root@c ~]#
ロード方法は「module load cinderella」
参照http://sphire.mpg.de/wiki/doku.php?id=auto2d_tutorial
Pretrained modelが提供されているので、それを取得します。
「relion40_tutorial_precalculated_results/Class2D/job008」を使ってみた
(cinderella) [saber@c cinderella]$ cp ../relion40_tutorial_precalculated_results/Class2D/job008/run_it025_classes.mrcs .
(cinderella) [saber@c cinderella]$ sp_cinderella_predict.py -i run_it025_classes.mrcs -w /apps/cinderella/gmodel_cinderella07_202008_N10163.h5 -o out/ -t 0.7
Using TensorFlow backend.
2019-09-13 00:40:33.505544: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-09-13 00:40:33.518586: E tensorflow/stream_executor/cuda/cuda_driver.cc:397] failed call to cuInit: CUDA_ERROR_NO_DEVICE
2019-09-13 00:40:33.519113: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:163] retrieving CUDA diagnostic information for host: c.sybyl.local
2019-09-13 00:40:33.519131: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:170] hostname: c.sybyl.local
2019-09-13 00:40:33.519178: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:194] libcuda reported version is: 418.39.0
2019-09-13 00:40:33.519230: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:198] kernel reported version is: 418.39.0
2019-09-13 00:40:33.519244: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:305] kernel version seems to match DSO: 418.39.0
Model: "model_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 75, 75, 1) 0
_________________________________________________________________
model_1 (Model) (None, 4, 4, 1024) 50646432
_________________________________________________________________
global_average_pooling2d_1 ( (None, 1024) 0
_________________________________________________________________
denseL1 (Dense) (None, 64) 65600
_________________________________________________________________
denseL2 (Dense) (None, 10) 650
_________________________________________________________________
denseL3 (Dense) (None, 1) 11
=================================================================
Total params: 50,712,693
Trainable params: 50,691,637
Non-trainable params: 21,056
_________________________________________________________________
2019-09-13 00:40:37.687003: W tensorflow/core/framework/allocator.cc:108] Allocation of 37748736 exceeds 10% of system memory.
2019-09-13 00:40:37.687099: W tensorflow/core/framework/allocator.cc:108] Allocation of 37748736 exceeds 10% of system memory.
2019-09-13 00:40:37.728333: W tensorflow/core/framework/allocator.cc:108] Allocation of 47185920 exceeds 10% of system memory.
2019-09-13 00:40:37.808678: W tensorflow/core/framework/allocator.cc:108] Allocation of 37748736 exceeds 10% of system memory.
2019-09-13 00:40:37.826402: W tensorflow/core/framework/allocator.cc:108] Allocation of 37748736 exceeds 10% of system memory.
Try to list images on run_it025_classes.mrcs
100%|????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????| 2/2 [00:01<00:00, 1.94it/s]
Good classes: 2 / 50 ( 4 % )
Bad classes: 48 / 50 ( 96 % )
(cinderella) [saber@c cinderella]$
「relion_display --gui」でoutputのファイルを開いてみる。
line 1224, in load_weights_from_hdf5_group_by_name
original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode'
とエラーが発生した場合は、pythonモジュールの「h5py」が新しいのが原因。古いのにダウングレードすれば回避可能
pip uninstall h5py
pip install h5py==2.10.0
あとRTX 30x0 でcinderellaを動かすには crYOLO と同じように cuda11対応tensorflow 1.xを用意する必要がある.