MLFにおける利用例#

MLFモジュール#

万葉ライブラリには、J-PARCの物質・生命科学実験施設(MLF)で利用できる汎用のツールや関数、物理定数などを収めたモジュールが同梱されている。これをMLFモジュールと呼ぶ。

役割と目的#

万葉ライブラリ自身はMLFでの基盤解析環境として整備が進められているが、万葉ライブラリのコア部分は非常に汎用的なデータコンテナやツールのみで構成されている。そこで万葉ライブラリのコア部分を利用し、MLFでビームラインに寄らず使用できるツールや関数、物理定数などを含めたモジュールが必要である。それがMLFモジュールである。

万葉ライブラリを利用した開発では、すでに派生パッケージ(後述)がいくつか存在し、MLF内のビームラインごとにコードが作成されている。それらのコードのうち汎用で使えるものをこのMLFモジュールに移植することで、広く他のビームラインにて使用できるようにすることがMLFモジュール作成の目的である。

何ができるか#

MLFモジュールには、下記のようなツールや関数が収められている。

  • MLF標準イベントデータ処理に使用される基礎関数やツール

  • XML用ツール

  • MLFの線源情報の取得ツール(J-PARCサイト内でのみ有効)

  • 幾つかの物理定数の定義

  • 中性子散乱に関する補正を計算するための基礎的関数

使用方法#

万葉ライブラリがインストールされていれば

1import Manyo.MLF

でMLFモジュールを扱えるようになる。 例えば、中性子の質量を得る場合は以下のような定数を呼び出す。

>>> import Manyo.MLF as mm

>>> print("Neutron Mass = %g [%s]"%(mm.MLF_MASS_NEUTRON, mm.MLF_MASS_NEUTRON_UNIT))
Neutron Mass=1.67493e-27 [kg]

MLFモジュールに含まれる定数やツールのいくつかはサンプルコードの章で具体的な使い方を示す。またAppendix B「万葉ライブラリ関数リファレンス」も参照のこと。

データコンテナとデータ処理の利用#

ElementContainerを中心とした万葉ライブラリであるが、MLFにおける具体的な利用のコンセプトや例をいくつか挙げておく。

ElemetContainer#

MLFにおいて万葉ライブラリのElementContainerは、装置のデータ収集システムが生み出すデータを収めるのに広く使用されている。ここに収めるべきデータは装置に設置された検出器と密接に結びつけられている。装置の検出器は、通常一つの検出器内に複数の検出部もしくは広い検出域があり、それらを適当な単位で区切ることで、中性子を検知した場所を識別する。得られたデータはこの検出単位ごとにヒストグラムデータとして扱われる必要がある。

そこで個々のElementContainerは、「中性子検出器のうちの一つの検出単位(Pixel)に来た中性子の情報」を収めるのに使用される。

もう少し詳しく見ると、データ処理に必要な中性子の情報は

  1. 検出中性子の状態と頻度

  • いくらのエネルギーもしくは波長の中性子がどれくらい検知されたか

  • 実際には中性子の検知時間と頻度(検知した中性子の個数)から計算

  1. その他の情報

  • 検出単位の位置情報(検知時間から中性子のエネルギーや波長の情報を計算するのに使う)

  • 測定の情報(Run Number、試料情報、試料環境など)

である。これらをElementContainerに収めるときには

  1. 検出中性子の状態と頻度:ヒストグラム部

  2. その他の情報:ヘッダ部

に分けて、それぞれ収められる。

ヒストグラム部では単位変換などで、様々な横軸のヒストグラムデータを持たせている。例えば弾性散乱では、横軸が時間、波長(λ)、エネルギー、運動量遷移(Q)、d値といった単位のヒストグラムを持ち、非弾性散乱実験では時間やエネルギー遷移(hw)などを横軸の単位とするヒストグラムを持つ。 一方ヘッダ部では、その他の情報(メタ情報)を納めており、例えば測定番号(Run Number)、検出器および検出単位のID、検出単位の位置情報(X,Y,Z)、散乱角度(θ,φ)、立体角の大きさ、マスク情報(このデータを使用する・しない)など、検出単位ごとの補正や解析に必要となる情報を納めている。その例をTable 25にまとめた。

Table 25 「空蝉」パッケージにおけるElementContainerヘッダ情報(例)#

KEY

内容

PIXELID

Int4

検出単位(Pixel)のID

PSDID

Int4

検出器(Detector)のID

MASKED

Int4

マスク情報(1ならMasked, 0はなし)

PixelPosition

vector<double>

検出器の位置情報(試料位置を原点とする)単位[mm]

PixelSolidAngle

vector<double>

検出単位の立体角 単位[str]

TotalCounts

double

ヒストグラムの強度の和

PixelPolarAngle

vector<double>

検出単位のPolar角度(2θ)

PixelAzimAngle

vector<double>

検出単位のAzimath角度

ここでInt4はsigned longを表す。

ElementContainerArray#

ElementContainerをまとめて扱うためのコンテナである。複数のElementContainerを一度に扱うことができるので、主に検出単位(Pixel)を多く含んだ検出器1つ分の情報を収めるのに使用している。 複数のElementContainreを保持し、ヘッダ部には主に、検出器のID、スク情報、検出器の種類や位置情報(実位置情報やバンク情報)、検出器固有情報(位置敏感型検出器のPulse Height情報など)を管理している。その情報はTable 26にまとめている。

Table 26「空蝉」パッケージにおけるElementContainerArrayヘッダ情報(例)#

KEY

内容

DETID

Int4

検出器(Detector)のID

MASKED

Int4

マスク情報(1ならMasked, 0はなし)

TYPE

string

検出器の種別("PSD","N2MON"など)

ElementContainerMatrix#

ElementContainerArrayをまとめて扱うためのコンテナである。複数のElementContainerArrayを一度に扱うことできるので、検出器の集合体(バンク)や、装置全体のデータおよび情報などを収めるのに使用している。 複数のElementContainerArrayを保持し、ヘッダ部には主に、測定装置の識別文字、測定番号(Run Number)、試料情報(試料名や結晶、パウダーの区別など)、測定時間、ビームモニター強度などが含まれている。Table 27を参照のこと。

Table 27「空蝉」パッケージにおけるElementContainerMatrixヘッダ情報(例)#

KEY

内容

RUNNUMBER

string

Run Number

MONITORCOUNT

Int4

ビームモニターのカウント数

INSTRUMENT

string

装置のコード("SIK", "SAS"など)

SAMPLETYPE

string

試料の状態("Powder", "SingleCrystal"など)

MEASPERIOD

vector<double>

測定の時刻情報(YYYY,MM,DD,hh,mm,ss,sub-sec)

DATAPROCESSED

vector<string>

データ処理のステップ(任意)

L1

double

L1 [mm]

Ei

double

非弾性散乱データ用入射中性子エネルギー [meV]

データ処理について#

前の章で触れたように、万葉ライブラリとその派生パッケージ(「空蝉」「絵巻」など、詳細は後述)は多くのツールやデータ処理関数を持っている。特にデータ処理については、その処理機能ごとに関数が準備されており、処理のステップごとに処理関数の入力 -> 出力 ->次の処理関数の入力 -> 出力 -> ...を繰り返す形である。 検出単位ごとにヒストグラム化されたデータは、同じく万葉ライブラリを利用して作成された関数で処理される。基本的に万葉ライブラリの関数は、「ElementContainer, -Array, -Matrixを入力」し、幾つかの「パラメータやヘッダ情報を利用した処理」を行い、再び「ElementContainer, -Array, -Matrixとして出力」するという形である。 しかし、MLFでは装置や測定手法、ユーザーのサイエンスに応じてデータ処理が千差万別となる。そのため独自の関数を実装する必要に迫られることも多いであろう。これらの準備された関数だけで対応できない場合、まずは次項に示す万葉ライブラリの派生パッケージである「空蝉」や「絵巻」の関数を用いてPythonでコードを書いてみることをお勧めする。

派生パッケージ「空蝉」#

万葉ライブラリを利用し、J-PARC MLFで使用されているデータ収集システムのDAQミドルウェアのMLFコンポーネントが出力するイベントデータに対し、ヒストグラム化や補正といったデータリダクション、および可視化を行うためのコード群である。特に柔軟なヒストグラム化やTrigNETを使用した高度な解析を目指す。

何ができるか#

  • MLFのイベントデータのヒストグラム化

    • DAQミドルウェアが出力するイベントデータをヒストグラム化

    • 変換単位(TOF, λ, Q(momentum transfer), Energy, EnergyTransfer, d値)

    • PSDのパルス波高の取り出し

    • フィルタリングの使用:時間分解、TrigNETを使用したイベント分別

    • 解析可能な検出器

  • 位置敏感型検出器(PSD) + NEUNET

  • 窒素ビームモニター検出器 + GATENET

  • ガンマ線検出器 + APV8008

  • 二次元検出器各種( WLSF, MWPC, RPMT )

  • 簡単な補正

    • 線源強度による規格化

    • 立体角補正

    • 非弾性用補正(ki/kfなど)

  • 可視化

    • 1Dプロッタ、2Dプロッタ、3Dプロッタ(作成中)

    • 単結晶非弾性散乱測定の可視化

    • 多次元測定の可視化

空蝉のMLFビームラインへの対応#

空蝉はMLFのデータ処理の基盤環境、特に「ヒストグラム化部分の共通化」を目指している。 万葉ライブラリ+空蝉に対し、さらに各装置用の拡張パッケージを組み合わせることで装置固有の機能の実現が図られている(Table 28)。

Table 28 空蝉のMLFビームラインへの導入状況#

ビームライン

導入状況

BL01 (4SEASONS)

空蝉で全対応

BL02 (DNA)

空蝉+DNA用拡張で対応

BL11 (Planet)

空蝉で全対応

BL14 (AMATERAS)

空蝉で全対応

BL15 (SAS)

空蝉+SAS用拡張+絵巻で対応

BL18 (Senju)

空蝉+StarGazerで対応

BL19 (Takumi)

空蝉+絵巻で対応

BL21 (NOVA)

空蝉+NOVA用拡張で対応