Pythonを使った解析

Kromek K102 MCA

MCAについて

原子核散乱では、Kromek社のMCAを使用しています。

https://www.kromek.com/product/k102-multichannel-analyser/

この手のMCAとしては使い勝手が良くコンパクトで設定も簡単なので、簡単な放射線計測にはとても便利です。コントロールするソフトは同社のKSpectと言うソフトを使います。

https://www.kromek.com/product/free-gamma-spectroscopy-software/

Windows用の無料ソフトなので自分のパソコンにインストールして使うこともできます。ピークフィットもしてくれたりしますが、結果に誤差をつけてくれないので、測定したデータをレポートにそのまま使うのには不十分で、自分でプログラムを組んだり他のソフトを使って解析をする必要があります。

データ構造

Kspectで測定したヒストグラムはspeまたはtxt型式で保存できます。どちらでもテキストデータなので、適当なテキストエディタなどで読み込みことができます。Pythonで解析する場合は、spe形式を読み込んで使うことにします。

ファイルを見ればわかると思いますが、speファイルは始めの10行はヘッダーで、ここにファイルの取得時刻や測定時間などの情報が書かれています。ヒストグラムの情報は11行目から4106行目までの4096行 (=12bit) です。各行がヒストグラムの各binの高さ情報になっています。ちなみに、txtファイルは、この4096行のヒストグラムの情報のみが保存されています。スペクトルを作るだけならばtxtファイルのみでも良いのですが、せっかく色々な情報が入っているので、それらもPythonで読み込むことにします。

サンプルファイル

サンプルファイルを置いておきます。解析プログラムと、標準線源の137Csを使ってGe検出器で取得したヒストグラムを置いておきます。

サンプルファイル置き場

Pythonでのデータ読み込みと解析方法

解説は全てJupyter Notebookに直接書いたので、そちらを読みながら適宜自分のデータに使えるように改変してください。いくつか解析をする時の注意事項等だけここに書いておきます。

基本的なPythonの使い方

Pythonの使い方は、各自適当なテキストを見て勉強してください。また、数理・情報教育研究センターで開講している「Pythonプログラミング入門」の授業のページが参考になります。使い方の動画も公開されているので、受講していなくても動画で自習することができます(ECCのアカウントが必要です)。

https://sites.google.com/view/ut-python/

ここでもこの「Pythonプログラミング入門」に習い、Jupyter Notebookを使うことにします。

可視化ツールはいくつかありますが、よく使われているMatplotlibBokehを適宜使い分けることにします。

リストデータとヒストグラム

リストデータとヒストグラムについて簡単に書いておきます。一般的に、放射線計測では測定したガンマ線やアルファ線のエネルギー(実際はアンプや光電子増倍管などの出力信号の電圧や電荷量)を測定毎にAD (Analog-to-digital) 変換してそのデジタル情報を記録します。測定毎(イベントと呼びます)のデータをそのまま記録する形式を「リスト形式」と読びます。リスト形式では測定時間が長くなれば長くなるほどデータ量も増えますが、イベント毎の時刻や複数の検出器がある場合はそれらの相関の情報も含まれるため、高度な解析をする場合はリスト形式で保存します。リストデータはデータ量が多く、学生実験では一つの検出器しか使用しないこともあり、このリストデータをヒストグラムに変換した形で保存します。ヒストグラムならば(各binのメモリ量が十分にあれば)データサイズは固定で扱いやすいですが、例えば放射能の時間変化などの情報はなくなってしまいます。

Matplotlibには、matplotlib.pyplot.histというのがあるので混乱するかもしれませんが、これはリスト形式のデータをヒストグラムに変換してくれる関数です。Kspectで得られるデータはすでにこのヒストグラムへ変換した後のデータなので、matplotlib.pyplot.plotで表示するだけでスペクトルを得ることができます。