旧ページcrYOLO190418

粒子pickツール
本家様 http://sphire.mpg.de/

ユーザ環境で使ってみるcrYOLO/user

構築方針

nvidiaのカードがあれば、それを使ってpick可能です。なければないでcpuで計算してくれます。

アプリはpythonで作られており、充実したPython実行環境が必須.
OSのリポジトリで初め構築しようかと思ったが、yumで提供されていないパッケージがあった.
なので pyenv で python実行環境 を切り替えて、pythonパッケージ管理anaconda で crYOLO向けの仮想環境 を作ることにした。

まず、
pyenvの基点を /Appl/pyenv として、その配下に pythonパッケージ管理anaconda を敷く。

pyenv

pyenvをインストール

[root@c ~]# git clone https://github.com/yyuu/pyenv.git /Appl/pyenv

次にこのpyenvを使ってyumから離れた独自のpython実行環境を用意する。
pyenvを使えるようにして

[root@c ~]# export PYENV_ROOT=/Appl/pyenv
[root@c ~]# export PATH=$PYENV_ROOT/bin:$PATH
[root@c ~]# eval "$(pyenv init -)"

yumから離れた独自の環境にanacondaをインストールします。

[root@c ~]# pyenv install anaconda3-5.3.1
[root@c ~]# pyenv version
system (set by /Appl/pyenv/version)
[root@c ~]# pyenv versions
* system (set by /Appl/pyenv/version)
  anaconda3-5.3.1
[root@c ~]#
[root@c ~]# pyenv global anaconda3-5.3.1
[root@c ~]# pyenv version
anaconda3-5.3.1 (set by /Appl/pyenv/version)
[root@c ~]# pyenv versions
  system
* anaconda3-5.3.1 (set by /Appl/pyenv/version)
[root@c ~]#

crYOLO向けの仮想実行環境を作る

複数の仮想実行環境が作れる。例えばcrYOLO向けにpython関連パッケージを詰め込んだ環境、
spliceAI向けにパッケージを詰め込んだ環境とか、別々に環境を用意することで互いに独立して相互の影響をなくせる。

[root@c ~]# export PATH=$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH
[root@c ~]# conda update conda
 
[root@c ~]# conda create -n cryolo -c anaconda python=3.6 pyqt=5 cudnn=7.1.2

これで、python=3.6 pyqt=5 cudnn=7.1.2を満たす crYOLO の実行環境を用意できた。
ちなみに現在あるほかの実行環境は下記コマンドで調べられる

[root@c ~]# conda env list
# conda environments:
#
base                  *  /Appl/pyenv/versions/anaconda3-5.3.1
cryolo                   /Appl/pyenv/versions/anaconda3-5.3.1/envs/cryolo
 
[root@c ~]#
 
(環境を削除するには)
[root@c ~]# conda env remove --name cryolo

crYOLOのインストール

crYOLOのソースをダウンロードします。
cuda版とcpu版があるようで、ここではcuda版を入手します。

[root@c ~]# cd /Appl/src/
[root@c src]# curl -O ftp://ftp.gwdg.de/pub/misc/sphire/crYOLO_V1_3_3/cryolo-1.3.3.tar.gz
[root@c src]# curl -O ftp://ftp.gwdg.de/pub/misc/sphire/crYOLO_BM_V1_2_1/cryoloBM-1.2.1.tar.gz

作ったcrYOLO環境をアクティベートして、その環境下でcrYOLOのパッケージをインストールします
事前にpyenvを読み込んで(既に定義済みなら下記は不要)

[root@c ~]# export PYENV_ROOT=/Appl/pyenv
[root@c ~]# export PATH=$PYENV_ROOT/bin:$PATH
[root@c ~]# eval "$(pyenv init -)"
[root@c ~]# export PATH=$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH

crYOLO環境をアクティベートします。

[root@c ~]# source activate cryolo
(cryolo) [root@c ~]# cd /Appl/src
 
(cryolo) [root@c src]# conda install numpy==1.14.5
(cryolo) [root@c src]# pip install cryolo-1.3.3.tar.gz
(cryolo) [root@c src]# pip install cryoloBM-1.2.1.tar.gz

これで crYOLO実行環境 は完成となる。
っで、これまでで /Appl/pyenv のサイズは

[root@c ~]# du -hs /Appl/pyenv/
8.7G    /Appl/pyenv/
[root@c ~]#

8.7GB必要になる。これがユーザ一人ひとり用意されると...

計算してみる

一般ユーザで計算を実施したいと思う。

[saber@c ~]$ export PYENV_ROOT=/Appl/pyenv
[saber@c ~]$ export PATH=$PYENV_ROOT/bin:$PATH
[saber@c ~]$ eval "$(pyenv init -)"
pyenv: cannot rehash: /Appl/pyenv/shims isn't writable

「eval "$(pyenv init -)"」のところでエラーが発生した。rootが用意したものは一般ユーザでは使えないの?
一応下記コマンドで回避でしたけど、、

[root@c ~]# chmod a+w /Appl/pyenv/shims

続き

[saber@c ~]$ eval "$(pyenv init -)"
[saber@c ~]$ export PATH=$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH

ちょいと確認

[saber@c ~]$ conda env list
# conda environments:
#
base                  *  /Appl/pyenv/versions/anaconda3-5.3.1
cryolo                   /Appl/pyenv/versions/anaconda3-5.3.1/envs/cryolo
 
[saber@c ~]$

と一応見えているみたい。
っで、crYOLO環境をアクティベートします。

アクティベートしたら crYOLO の cryolo_predict.py を走らせてみると

[saber@c ~]$ source activate cryolo
(cryolo) [saber@c ~]$
(cryolo) [saber@c ~]$ cryolo_predict.py --help
usage: cryolo_predict.py [-h] -c CONF -w WEIGHTS -i INPUT [INPUT ...]
                         [-t THRESHOLD] [-p PATCH] -o OUTPUT
                         [-g GPU [GPU ...]] [-d DISTANCE] [--write_empty]
                         [-pbs PREDICTION_BATCH_SIZE] [--filament] [--nosplit]
                         [--nomerging] [-fw FILAMENT_WIDTH] [-bd BOX_DISTANCE]
                         [-mn MINIMUM_NUMBER_BOXES]
                         [--gpu_fraction GPU_FRACTION] [-nc NUM_CPU] [--otf]
 
Train and validate crYOLO on any dataset
 
optional arguments:
  -h, --help            show this help message and exit
  -c CONF, --conf CONF  Path to configuration file. (default: None)
  -w WEIGHTS, --weights WEIGHTS
                        Path to pretrained weights. (default: None)
  -i INPUT [INPUT ...], --input INPUT [INPUT ...]
                        Path to one or multiple image folders / images.
                        (default: None)
 :
 :
 :
(cryolo) [saber@c ~]$

と行けるみたい。
crYOLO環境から出るときは(デアクティベート)下記のようにする

(cryolo) [saber@c ~]$ conda deactivate
[saber@c ~]$

cshユーザでは?

csh/tcshユーザの場合、上記方法で進むとエラーになる。っで、回避方法はたくさんあるが、ここでは
https://gist.github.com/mikecharles/f09486e884a0b41e1e8fの「activate.csh」「deactivate.csh」を使用します。
ただ、「activate.csh」の「set script_name」が上手く動かないので、その部分は下記のように修正した

--- /Appl/local/bin/activate.csh.orig   2019-04-18 17:34:20.160094556 +0900
+++ /Appl/local/bin/activate.csh        2019-04-18 17:35:11.265354534 +0900
@@ -2,15 +2,16 @@
 
 # Get the name of this script
 
-if ( $?_ ) then
+#if ( $?_ ) then
        # With tcsh the name of the file being sourced is available in
        # $_.
-       set script_name = `basename $_`
-else
+#      set script_name = `basename $_`
+#else
        # Fall back to $0 which, sometimes, will be the name of the
        # shell instead of the file being sourced.
-       set script_name = `basename $0`
-endif
+#      set script_name = `basename $0`
+#endif
+set script_name=activate.csh
 
 # Get arguments
 if ( $#argv < 1 ) then

その上で使い方は、まず環境変数CONDA_ENVS_PATHの定義が必要で

[archer@c ~]$ setenv CONDA_ENVS_PATH /Appl/pyenv/versions/anaconda3-5.3.1/envs

とした後に、activateします。

[archer@c ~]$ source /Appl/local/bin/activate.csh cryolo
Your Python environment has been changed to the 'cryolo' conda environment. Here's the active version of Python:
/Appl/pyenv/versions/anaconda3-5.3.1/envs/cryolo/bin/python
Python 3.6.8 :: Anaconda, Inc.
To switch back to your default Python environment, type 'source deactivate.csh'
 
(cryolo)[archer@c ~]$

bashと同じくこの状態でcryoloが実行できます。

(cryolo)[archer@c ~]$ cryolo_predict.py --help
usage: cryolo_predict.py [-h] -c CONF -w WEIGHTS -i INPUT [INPUT ...]
                         [-t THRESHOLD] [-p PATCH] -o OUTPUT
                         [-g GPU [GPU ...]] [-d DISTANCE] [--write_empty]
                         [-pbs PREDICTION_BATCH_SIZE] [--filament] [--nosplit]
                         [--nomerging] [-fw FILAMENT_WIDTH] [-bd BOX_DISTANCE]
                         [-mn MINIMUM_NUMBER_BOXES]
                         [--gpu_fraction GPU_FRACTION] [-nc NUM_CPU] [--otf]
 
Train and validate crYOLO on any dataset
 
optional arguments:
  -h, --help            show this help message and exit
  -c CONF, --conf CONF  Path to configuration file. (default: None)
  -w WEIGHTS, --weights WEIGHTS
 :
 :
(cryolo)[archer@c ~]$

途中でこの実行環境から抜けたいときは

(cryolo)[archer@c ~]$ source /Appl/local/bin/deactivate.csh
Your Python environment has been reset. Here's the active version of Python:
/bin/python
Python 2.7.5
[archer@c ~]$

とします。

計算してみる(その2)

ここでは、http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo
Picking particles - Without training using a general model」を試します。

必要なのはトレーニング済みモデルと設定ファイル(config.json)。
トレーニング済みモデルと設定ファイルは「cryo images向け」と「負染色向け」が用意されている。

  • cryo images向け
    モデルファイル
    curl -O ftp://ftp.gwdg.de/pub/misc/sphire/crYOLO-GENERAL-MODELS/gmodel_phosnet_20190314.h5
    設定ファイル
        {
        "model" : {
            "architecture":         "PhosaurusNet",
            "input_size":           1024,
            "anchors":              [205,205],
            "max_box_per_image":    700,
            "num_patches":          1,
            "filter":               [0.1,"tmp_filtered"]
          }
        }
  • 負染色向け
    curl -O ftp://ftp.gwdg.de/pub/misc/sphire/crYOLO-GENERAL-MODELS/gmodel_phosnet_negstain_20190226.h5
    設定ファイル
        {
        "model" : {
            "architecture":         "PhosaurusNet",
            "input_size":           1024,
            "anchors":              [205,205],
            "max_box_per_image":    700,
            "num_patches":          1
          }
        }

これらを取得して、実際にpickしてみます。
題材は、Gautomatchに入っているmrcファイル。

(cryolo)[archer@c ~]$ mkdir crYOLO && cd crYOLO
(cryolo)[archer@c ~/crYOLO]$ vi config.json
    {
    "model" : {
        "architecture":         "PhosaurusNet",
        "input_size":           1024,
        "anchors":              [205,205],
        "max_box_per_image":    700,
        "num_patches":          1,
        "filter":               [0.1,"tmp_filtered"]
      }
    }
 
(cryolo)[archer@c ~/crYOLO]$ 
(cryolo)[archer@c ~/crYOLO]$ cryolo_predict.py -c config.json -w /Appl/crYOLO/gmodel_phosnet_20190314.h5 \
    -i /Appl/Gautomatch/examples/ribosome/test7.mrc -o ./
 
Read Anchor from model [3.203125, 3.203125]
Using TensorFlow backend.
2019-04-18 18:01:16.030485: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions (略
2019-04-18 18:01:16.138145: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Found device 0 with properties:
name: GeForce GTX 1050 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.392
pciBusID: 0000:04:00.0
totalMemory: 3.95GiB freeMemory: 3.89GiB
2019-04-18 18:01:16.138199: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible gpu devices: 0
2019-04-18 18:01:16.398047: I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] Device interconnect (略
2019-04-18 18:01:16.398092: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971]      0
2019-04-18 18:01:16.398103: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] 0:   N
2019-04-18 18:01:16.398267: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1097] Created TensorFlow device (略
2019-04-18 18:01:23.069814: W tensorflow/core/common_runtime/bfc_allocator.cc:219] Allocator (GPU_0_bfc) ran out(略
165 particles are found in /Appl/Gautomatch/examples/ribosome/test7.mrc  ( 100 % )
165 particles in total are found ( 2 seconds)
Deleted 8 particles as they were not fully immersed in the micrograph
 
(cryolo)[archer@c ~/crYOLO]$ ls -l
合計 4
drwxr-xr-x 2 archer em  31  4月 18 18:04 CBOX
drwxr-xr-x 2 archer em  30  4月 18 18:04 EMAN
drwxr-xr-x 2 archer em  31  4月 18 18:04 STAR
-rw-r--r-- 1 archer em 290  4月 18 17:58 config.json
drwxr-xr-x 2 archer em  10  4月 18 18:04 tmp_filtered
(cryolo)[archer@c ~/crYOLO]$

EMANのbox形式を見てみると

(cryolo)[archer@c ~/crYOLO]$ head EMAN/test7.box
2234.5  3823.5  205     205
2746.5  3821.5  205     205
3048.5  3822.0  205     205
3439.5  3862.5  205     205
291.5   3777.0  205     205
1447.5  3776.0  205     205
1639.5  3781.0  205     205
2031.0  3790.0  205     205
609.5   3726.0  205     205
2364.0  3721.5  205     205
(cryolo)[archer@c ~/crYOLO]$

となる。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-04-18 (木) 19:15:05 (7d)