空蟬の環境#
ここでは、インストールされた空蟬の環境について述べる。環境変数や使用するディレクトリなどは、空蟬のインストール時に作成されるが、それらの役割を理解してもらうのがこの項の趣旨である。
空蟬の構成#
空蟬は、コードの種類としては、主に二つのパートに分けられる。
万葉ライブラリパート(C++)
Pythonコードパート
万葉ライブラリとはC++で作成されたMLFでの標準データ処理環境である。データの入れ物(コンテナ)の定義やコンテナに対する各種機能、新しい機能を実現するための関数作成のテンプレートなどが用意された開発用フレームワークでもある。そのコンテナや機能はPythonから呼び出すことができる。 (詳細は MLFデータ解析フレームワーク”万葉ライブラリ”利用マニュアル )
空蟬における万葉ライブラリパートは、空蟬環境で使用できる大部分の機能が含まれている根幹部分であり、万葉ライブラリと同様にC++コードで書かれている。 よって空蟬の機能は、万葉ライブラリ同様にPythonから簡単に呼び出し使用することが可能である。
一方Pythonコードパートは、Pythonで書かれたコード群である。主にユーザーから見て空蟬の機能をより使いやすくすることを目的に作成されている。万葉ライブラリパートの機能関数の呼び出しをより簡単にするための補助的な機能を持ち、同時にデータの可視化やグラフィカルインターフェースを持つアプリケーションも含んでいる。
万葉ライブラリパートの機能呼び出し(ファサード関数)
可視化(データプロット)
グラフィカルインターフェース(アプリケーション)
構造の概念図
コードなどの配置#
上記のように、空蟬は主に二つの部分がある。
万葉ライブラリパート
Pythonコードパート
万葉ライブラリパートの置き場所は、万葉ライブラリのインストール先 MANYO_PATH の下となっている。
${MANYO_PATH}/Manyo/Utsusemi
(/opt/mlfsoft/manyo/Manyo/Utsusemi)
一方Pythonコードは、すべて utsusemi ディレクトリ(空蟬ベースディレクトリ UTSUSEMI_BASE_DIR )に格納されている。 また、空蟬を用いるビームライン固有のコード群は、その直下のディレクトリ
${UTSUSEMI_BASE_DIR}/XXX
(/opt/mlfsoft/python-utsusemi/utsusemi/XXX)
に配置される。
その関連図を示す。
基本的な配置構造として、 utsusemi 以下にあるディレクトリは
ana , vis , facade
の3つである。また装置固有のコードなどを含める XXX は、空蟬ディレクトリ配下にあり、XXX 以下のディレクトリも空蟬ベースディレクトリ同様に ana , vis , facade を含めることにしている。
utsusemi(空蟬ベースディレクトリ) 以下のディレクトリ |
||
---|---|---|
ana |
SequenceEditorQ.py |
データリダクション用グラフィカルインターフェースソフトウェア |
Reduction |
データリダクションモジュールを収める |
|
vis |
可視化用コードを収める |
|
facade |
SequenceEditorで扱うコマンドファサードを収める |
|
XXX |
facade, ana など |
装置固有のコードやパラメータを収める。 |
特に、 XXX 以下の XXX/ana/xml にはヒストグラム化に必要となる装置固有パラメータである、
WiringInfo
DetectorInfo
などがあるので、留意しておく必要がある。
必要な環境変数#
空蟬をパッケージとしてみた場合、必要な環境変数は空蟬ベースディレクトリ( utsusemi )へのパスを、Pythonの環境変数 PYTHONPATH に登録するだけである。しかし MLFソフトウェアとして動作させる(MLFのデータの場所など)ために、他にも幾つかの環境変数の設定が必要である。
その環境変数を以下に示した。
空蟬用環境変数 |
役割 |
---|---|
MANYO_PATH |
万葉ライブラリの実行に必要なパスを与える。 “/opt/mlfsoft/manyo”など。 |
UTSUSEMI_BASE_DIR |
空蟬のPythonコード(python-utsusemi)の場所を与える “/opt/mlfsoft/python-utsusemi”など。 |
UTSUSEMI_INST_CODE |
実行する環境の装置のコードを与える。 “SIK”, “AMR”, “HPN”など。 |
UTSUSEMI_DATA_DIR |
RAWデータの場所を与える。”/data”など。 |
UTSUSEMI_USR_DIR |
ユーザーのホームフォルダを与える。 この中にana/xmlやana/tmpが存在することが期待される。 facade/があればSequenceEditorからの検索パスが通る。 デフォルトは${HOME}でよい。 “/home/hoge”など。 |
UTSUSEMI_WORK_DIR |
ユーザーのワークフォルダを与える。 ${UTSUSEMI_USR_DIR}と同じでよい。 |
UTSUSEMI_LOG_QUIET |
これに”y”を与えると空蟬コードが出力するテキストを 抑制する |
UTSUSEMI_MULTH |
マルチスレッド数を指定する。 処理によっては使用メモリが非常に増大するので注意。 |
UTSUSEMI_DEBUGMODE |
空蟬をデバッグモードで走らせる。 通常より大量のコメントが表示され、 テンポラリファイルも作成される。 |
システム環境変数 |
役割 |
---|---|
PYTHONPATH |
空蟬のPythonコード実行に必要なパスを全て与える。 通常は、PYTHONPATH = ${MANYO_PATH}: ${UTSUSEMI_BASE_DIR}:${UTSUSEMI_BASE_DIR}/facade: ${UTSUSEMI_BASE_DIR}/${UTSUSEMI_INST_CODE}/facade: ${UTSUSEMI_USR_DIR}/facade |
LD_LIBRARY_PATH |
空蟬のC++コード実行に必要なパスを全て与える。 通常はLD_LIBRARY_PATH=${MANYO_PATH}/lib |
PATH |
実行ファイルの置き場所。 通常はPAHT=${MANYO_PATH}/bin:${PATH} |
参考のために、これらの環境変数を設定するために使用しているシェルスクリプト(Linux用)を載せる。 Linuxでは、このスクリプトを起動時(ログイン時)に走らせることで、空蟬環境として起動させることが可能である。
# Utsusemi Environment
export UTSUSEMI_INST_CODE=SIK
export UTSUSEMI_DATA_DIR=/data
export UTSUSEMI_USR_DIR=${UTSUSEMI_USR_DIR-${HOME}}
export UTSUSEMI_WORK_DIR=${UTSUSEMI_USR_DIR}
export UTSUSEMI_LOG_QUIET=n
export UTSUSEMI_MULTH=8
export UTSUSEMI_DEBUGMODE=n
# Path to MLF Software
MLFSOFT_PATH=/opt/mlfsoft
# Path to Manyo-lib
export MANYO_PATH=${MLFSOFT_PATH}/manyo
# PythonPath to utsusemi
PYUTSUSEMI_PATH=${MLFSOFT_PATH}/python-utsusemi
# PythonPath to uGao
PYUGAO_PATH=${MLFSOFT_PATH}/python-ugao
# External Library path
UTSUSEMI_EXT_LIBRARY_PATH=/usr/local/lib
# Utsusemi Environment
export UTSUSEMI_BASE_DIR=${PYUTSUSEMI_PATH}/utsusemi
# Python Path
PYTHONPATH=${MANYO_PATH}:${PYUTSUSEMI_PATH}:${UTSUSEMI_BASE_DIR}/facade
PYTHONPATH=${UTSUSEMI_BASE_DIR}/${UTSUSEMI_INST_CODE}/facade:${UTSUSEMI_USR_DIR}/facade:${PYTHONPATH}
PYTHONPATH=${PYTHONPATH}:${PYUGAO_PATH}
export PYTHONPATH
# Shared Library Path
export LD_LIBRARY_PATH=${MANYO_PATH}/lib:${UTSUSEMI_EXT_LIBRARY_PATH}:${LD_LIBRARY_PATH}
# Executable path
export PATH=${MANYO_PATH}/bin:${PATH}
考慮すべきディレクトリ#
また空蟬を動作させる場合に必要なディレクトリを以下に示す。 動作時にはこれらのディレクトリが存在している必要がある。 特にデータは確実にRun Numberごとのフォルダとして、置いておく。
ディレクトリ(環境変数) |
具体例 |
内容 |
---|---|---|
${UTSUSEMI_DATA_DIR}/${UTSUSEMI_INST_CODE} |
“/data/SIK” |
対象となる装置のRAWデータの場所。 ここにSIK001234_20150809といったRun Numberごとのフォルダが配される。 |
${UTSUSEMI_USR_DIR}/ana |
“/home/hoge/ana” |
空蟬環境で動作するいくつかのコードが利用する。 実際にはこのフォルダ内のxmlフォルダやtmpフォルダが使用される。 |
データフォルダの配置の概要#
データフォルダ(例えば SIK001234_20210412 )を配置する場合、必ずビームラインのコード( SIK や DNA など)のフォルダを作成し、その下に配置する。
また、空蟬はデータフォルダが複数のフォルダに分散していても機能する。ただ、その場合、
/data/SIK
/data/SIK00
/data/SIK01
...
/data/SIK99
というふうに装置コード+二桁数字(0埋め)のフォルダである必要がある。