Pico Tech - Peak Fit With Octave

Radiation Detection / Software Projects .... Peak Fit With R ... Peak Fit With Python ... Peak Fit With Gnuplot

このサイトの情報がすんばらしいので、Octaveをインストールして試してみることにしました。
http://terpconnect.umd.edu/~toh/spectrum/TOC.html

このページに大事なまとめがある。素晴らしい!
http://terpconnect.umd.edu/~toh/spectrum/functions.html

これが、このサイトのコピーで、全ての必要なファイルが入っているので、絶対必要。
ダウンロードして、解凍して、Octaveのパスの中に入れるか、どこかに入れて、addpath("c:\\Octave\\SPECTRUM") とかやって、パスを通しておくと、後は、やりたい放題!
http://terpconnect.umd.edu/~toh/spectrum/SPECTRUM.zip

http://terpconnect.umd.edu/~toh/spectrum/SignalProcessingTools.html


やりたいこと、理想

このサイトに、Web上でガンマスペクトルの生成するソフトがあるんですが、これは、検出器やその他のパラメーターを入れてやると、計算上のスペクトルが出てくる、というものです。

http://www.nucleonica.com/wiki/index.php?title=Help%3AGamma_Spectrum_Generator%2B%2B

これに対して、理想的には、分かっているパラメーターと、実際のスペクトルを入れてやると、不明のパラメーターを推測する、というソフトが欲しいわけです。虫食い版nucleonica、とでも言える物です。

Identify Exe などは、機器の特性パラーメーターを入れれば、核種の判別、定量推定はしますが、自作検出器では、その特性パラメーターが一々はっきりしない、変動する、などの問題があります。

バックグラウンドのスペクトルを毎回しっかり調べるのなら、その上にのっかて居る部分だけ、を考えれば良いので、問題が単純化されますが、野外などの測定では、バックグラウンドそのものを調べたい場合がありますし、機器の製作や調整の過程で、機器の特性を知りたい場合もありますし、多少大雑把なもので構わないので、もっと柔軟で利用者の学習効果の高いソフトがあるとよいと思われます。

やりたいことと、その理由については、新たにまとめページを作りました。  Theremino Mca To Do Ja

こっちにも、ちょっと書いてあります。 Peak Fit With R

Octaveでは、ピークの検出とそのフィット、そして、定量推定は、既にコードがあるので、これに、コンプトン散乱や、検出器などの推定特性曲線を混ぜれば、なんとかならないか?というのを知りたいわけです。

こういった、さらに詳しいことは、GeantやらROOTとか、更に他のツールでやっている人が多いらしい。全体像と可能性を見て、ツールの切り分けやどこまでやるか、とか考えた方が良さそうだ。

Root と Gammaware は、 Ubuntu Virtual Machine にインストール。Ubuntuのバグ?のせいでコンパイルに時間がかかった。

Root は、Cint に乗っかっている様だ。コマンドは面倒くさいが、省略形がある。例えば、終了するのは「.q」といった感じ。

更に、EGSnrc などを発見。これらは、モンテカルロシュミレーションを行って、色々な線源や実験装置の組み合わせから、スペクトルを予測するもの。各種論文の要約を読むと、Penelope とかEGSnrcがGeant4よりも精度が良いらしい。EGSnrc は、カナダのNRC(National Research Council)国家研究評議会?ってな役所で製作、配布されていて研究用などは無料のオープンソース。ウインドウズ用の素晴らしいインストーラー付き。日本のKEK(東海村でこの間事故を起こした機関です)もEGS5を作って配布している。

この関連のリンクや情報は Monte Carlo Simulation にまとめておく。


Octaveのインストール

http://www.gnu.org/software/octave/

http://wiki.octave.org/Octave_for_Windows

Octaveforgeから、最新版のWindows用7Zipファイル(本体とパッケージ)をダウンロードして解凍する。

octave を起動して、以下のコマンドを実行。

   pkg rebuild -auto
   pkg rebuild -noauto ad % may crash octave when loaded and 'clear all' is executed
   pkg rebuild -noauto nan % shadows many statistics functions
   pkg rebuild -noauto gsl % shadows some core functions
   pkg rebuild -auto java 

次回にOctaveを起動するとWarningが3つ程出るが、無視しても良いらしい。

解凍したら、その中のDomainmath.batというのを実行する。


error: operator =: no conversion for assignment of 'scalar struct' to indexed 'm
atrix'
error: assignment failed, or no method for 'matrix = scalar struct'
error: called from:
error:   C:\Octave\Octave3.6.4_gcc4.6.2\share\octave\packages\optim-1.2.2\fmins.
m at line 62, column 37
error:   C:\Octave\Octave3.6.4_gcc4.6.2\share\octave\packages\optim-1.2.2\fminse
arch.m at line 33, column 5
error:   C:\Users\Username\peakfit.m at line 377, column 24

Windows の(あるいは、どのOctaveでも) fminsearch.m が、Matlabのものとちょっと違うので、そのせいでpeakfit.m やそれを使ったスクリプトが動かないことがあります。そこで、以下のファイルをダウンロードして、addpath(”スクリプトのパス”) で追加したパスとかに入れておくと、この問題が解決されます。

http://ab-initio.mit.edu/octave-Faddeeva/scripts/optimization/fminsearch.m

これも必要。OctaveForge の gaussian.m が Matlabのとは、違っているのかもしらん。

http://www.cs.sfu.ca/~mori/research/superpixels/code/yu_imncut/gaussian.m

http://terpconnect.umd.edu/~toh/spectrum/lorentzian.m

http://terpconnect.umd.edu/~toh/spectrum/lognormal.m

http://terpconnect.umd.edu/~toh/spectrum/pearson.m

http://terpconnect.umd.edu/~toh/spectrum/expgaussian.m

http://terpconnect.umd.edu/~toh/spectrum/exppulse.m

http://terpconnect.umd.edu/~toh/spectrum/sigmoid.m

http://terpconnect.umd.edu/~toh/spectrum/GL.m

http://terpconnect.umd.edu/~toh/spectrum/BiGaussian.m

http://terpconnect.umd.edu/~toh/spectrum/BiLorentzian.m

http://terpconnect.umd.edu/~toh/spectrum/modelpeaks.m

このスペクトラム関連の関数やデモなどを使うには、とにかくこれを解凍して入れておかないと困る。

http://terpconnect.umd.edu/~toh/spectrum/SPECTRUM.zip


Cygwin のXwindowsで使うのなら


Octaveの中で、edit oct (Octaveの中の関数とかと名前が一緒で無いなら、別にどんな名前でも良い)とやると、登録した外部エディターが開くので、このoctを作業場所に使い、ここに色々実験したいことをコピペして、保存し、Octaveの中でoctとタイプすれば、これが実行される。
だけど、Pythonや他の言語の実行環境と比べてWindowsの実行環境がじぇんじぇん整備されていない。Octaveサーバーを走らせておいて、そこにテキストを食わす、とか、出来るんだろうに。何故やらんのか?
後で検索して調べてみよう。


インストールが終わったら、簡単なコマンドで確認。
y=exp(-(x).^2);
trapz(x,y);
plot(x, y);

これで、グラフィックの別ウインドウが開いて、簡単なグラフが表示される。

ピークフィットに関しては、かなり複雑なピークフィットが既に実装されてるみたいなので、
データを読んで、それでテストをして、コンプトン錯乱のフィットとか、そういう点をやると、とっても面白そう。

 


Memo

Matlab/Octave script to python code compiler ...
http://ompc.juricap.com/

Octave で実験して、これでPythonに落として、WxPythonとか使ってアプリにする、というやり方もありそう。


XRF lib
https://github.com/tschoonj/xraylib/wiki/Installation-instructions

https://pypi.python.org/pypi/oct2py


Matlab (Octave?) fitting scripts

http://labs.physics.berkeley.edu/mediawiki/index.php/MatLab_Fitting_Scripts

Example of fitting poison distribution

http://dinyarblog.wordpress.com/2010/01/24/fitting-and-plotting-with-gnuoctave/

http://mathhelpforum.com/math-software/153533-plotting-continuous-histograms-octave-matlab.html

Matlab codes of Dr. David Chin

http://users.wfu.edu/chindw/Work/Sandbox/Matlab/

Wave Metrics’ Igor Pro v6.02A というソフト用のソースコードあり。

http://www.cvmbs.colostate.edu/erhs/Health%20Physics/Monte_Carlo_Spectral_Simulations.pdf

http://cdn.intechopen.com/pdfs/14010/InTech-Monte_carlo_simulation_of_pile_up_effect_in_gamma_spectroscopy.pdf

どうも Cernで作ったGeantというのが、よく使われているらしい。

http://geant4.web.cern.ch/geant4/support/download.shtml

そして、ROOTの上で動くGammaWare。ROOTは、Cのインタープリター、Cintが入っている。Fit用のパネルも既に入っている。

http://root.cern.ch/drupal/content/production-version-534

http://www.ipnl.in2p3.fr/gammaware/doc/html/

http://root.cern.ch/download/doc/primer/ROOTPrimer.html

Cygwin でROOT + Geant

http://physics.uj.ac.za/wiki/psi/Computing/ROOTAndGEANT4InCYGWINOnWindowsXP

http://www.nikiglass.co.jp/products/radiation/Code-Fukushima.html

http://www.nikiglass.co.jp/products/radiation/paper-yamada2012-niki.pdf

http://www.crl.nitech.ac.jp/~ida/research/memo/MaximumLikelihood/maximum_likelihood.pdf


Last modified : Sat Mar 28 17:12:03 2015 Maintained by nkom AT pico.dreamhosters.com