
=================================
空蝉環境構築
=================================

- 万葉ライブラリのインストール（コア、空蟬用）
- 空蟬実行に必要なPythonパッケージ
- 空蟬Pythonコードの配置
- 環境設定

概要
===========
空蝉は、MLFデータ解析基盤ソフトウェアである「万葉ライブラリ」をベースにして構築されれている。よって空蝉環境（開発環境も）を構築する場合は、構築環境は万葉ライブラリの環境に加えて、空蝉内のPythonによる実装（可視化やGUI）に必要な環境も必要となる。それらの構築方法を示す。


万葉ライブラリのインストール
==================================

.. toctree::
   :maxdepth: 2
   :caption: Contents:

   build_manyo

必要なPythonパッケージ
==================================
空蟬を動作させるのに必要なパッケージは以下の通りである。

.. table:: Python packages required for Utsusemi environment
    :align: center

    +-----------------------+-------------------------------+--------------------+
    |                       |パッケージ                     |必要なバージョン    |
    +=======================+===============================+====================+
    |Python関連             | Numpy                         | 1.6.x以降          |
    |                       +-------------------------------+--------------------+
    |（GUI関連）            | Scipy                         | 0.10.x以降         |
    |                       +-------------------------------+--------------------+
    |                       | matplotlib                    | 1.2.x以降          |
    |                       +-------------------------------+--------------------+
    |                       | PySide2 / PySide6             | 5.x以降            |
    +-----------------------+-------------------------------+--------------------+


上記のPython関連パッケージは全てdnfにてパッケージによるインストールも可能であるが、一部挙動がおかしい部分があるのでpipを用いて最新のパッケージをインストールする。

下記の例ではユーザー領域にインストールしているが、やり方は自由である。必要に応じて **venv** などで仮想化しても良いだろう。


::

   $ sudo apt install python3-pip # Ubuntu
   $ sudo dnf install python3-pip # AlmaLinux9
   $ sudo dnf install python3.11-pip # AlmaLinux8
   $ sudo python3 -m pip install -U pip
   $ python3 -m pip install --user numpy scipy matplotlib PySide6

-----------------------------------------------------------------------------
PySide, numpy, scipy, matplotlibの動作確認
-----------------------------------------------------------------------------

::

    $ python3
    >>> import numpy
    >>> import scipy
    >>> import PySide


空蟬Pythonコードの配置
==================================

.. table:: Installation path for Utsusemi environment
    :align: center

    +-+-------------------------------+------------------------------------------------------------+
    | |Path                           |                                                            |
    +=+===============================+============================================================+
    |1|${MLFSOFT_PATH}/manyo          |万葉ライブラリに関連するライブラリやモジュールが配置される  |
    +-+-------------------------------+------------------------------------------------------------+
    |2|${MLFSOFT_PATH}/python-utsusemi|空蝉に関連するモジュールが配置される（utsusemi, uGaoなど）。|
    | |                               |PYTHONPATHにはこのパスを通す。                              |
    +-+-------------------------------+------------------------------------------------------------+


1は先に述べた「万葉ライブラリのインストール」によって作成・構築されている。
2には空蝉に関するPythonコードやモジュールが配置される。空蝉のPythonコードの配置はこのフォルダを構築することである。

::

    utsusemi/
    ├─ ana <- 空蝉におけるデータ処理・解析関連のモジュール
    ├─ bin <- 空蝉環境でのバイナリコード
    ├─ facade
    ├─ __init__.py
    ├─ vis
    ├─ SIK
    │   ├─ ana
    │   │   ├─ Reduction
    │   │   └─ xml
    │   ├── facade
    │   │   ├── Cmm.py
    │   │   ├── DR.py
    │   │   ├── __init__.py
    │   │   ├── Sequencer_facades.py
    │   │   └── VisualModule.py
    │   └── __init__.py
    └─ XXX


実際には所定のフォルダをコピーするだけである。

::

    $ mkdir -p ${MLFSOFT_PATH}/python-utsusemi/utsusemi
    $ cp -r Utsusemi/python-utsusemi/* ${MLFSOFT_PATH}/python-utsusemi/utsusemi/
    $ ls -F ${MLFSOFT_PATH}
    manyo/ python-utsusemi/
    $ ls -F ${MLFSOFT_PATH}/python-utsusemi
    utsusemi/
    $ ls -F ${MLFSOFT_PATH}/python-utsusemi/utsusemi
    __init__.py ana/ bin/ facade/ scripts/ vis/


次に、それぞれの装置における固有の関数が必要となる。それぞれの装置に対して、その装置コードのフォルダが準備されている。このフォルダを `utsusemi` フォルダ（ `${MLFSOFT_PATH}/python-utsusemi/utsusemi` ）の直下にコピーする。

::

    $ cp -r Utsusemi/python-utsusemi/SIK ${MLFSOFT_PATH}/python-utsusemi/utsusemi/


この準備されている装置コードのフォルダは以下の場所にあるので、必要に応じてコピーする。


.. table:: Installation paths of python codes specialized to beam lines
    :align: center

    +---------+--------------------------------+----------------------------+
    |BL(CODE) |Pythonコード                    |Pythonコードのコピー先      |
    +=========+================================+============================+
    |BL01(SIK)|Utsusemi/python-utsusemi-SIK    |python-utsusemi/utsusemi/SIK|
    +---------+--------------------------------+----------------------------+
    |BL02(DNA)|Utsusemi-DNA/python-utsusemi-DNA|python-utsusemi/utsusemi/DNA|
    +---------+--------------------------------+----------------------------+
    |BL11(HPN)|Utsusemi/python-utsusemi-HPN    |python-utsusemi/utsusemi/HPN|
    +---------+--------------------------------+----------------------------+
    |BL14(AMR)|Utsusemi/python-utsusemi-AMR    |python-utsusemi/utsusemi/AMR|
    +---------+--------------------------------+----------------------------+
    |BL15(SAS)|Utsusemi-SAS/python-utsusemi-SAS|python-utsusemi/utsusemi/SAS|
    +---------+--------------------------------+----------------------------+
    |BL17(VNR)|Utsusemi/python-utsusemi-VNR    |python-utsusemi/utsusemi/VNR|
    +---------+--------------------------------+----------------------------+
    |BL19(ENG)|Utsusemi-ENG/python-utsusemi-ENG|python-utsusemi/utsusemi/ENG|
    +---------+--------------------------------+----------------------------+

