このサイトの情報がすんばらしいので、Octaveをインストールして試してみることにしました。
http://terpconnect.umd.edu/~toh/spectrum/TOC.html
このページに大事なまとめがある。素晴らしい!
http://terpconnect.umd.edu/~toh/spectrum/functions.html
これが、このサイトのコピーで、全ての必要なファイルが入っているので、絶対必要。
ダウンロードして、解凍して、Octaveのパスの中に入れるか、どこかに入れて、
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つ程出るが、無視しても良いらしい。
- Octave のGUIがありました。Javaで出来ているので、WinでもMacでもUnixでも動く。これがあった方がOctaveの操作、学習が楽。Octave純正のGUIもWin用のものがそのうち出来てくるらしいですが、それまでは、これで良いでしょう。
解凍したら、その中のDomainmath.batというのを実行する。
- Octaveで peakfit.m などを利用したときに、このバグが出たときの対処法。というか、2013年6月時点では、ほぼ絶対出る筈なので、さっさと下のファイルをダウンロードして、Octaveのパスの上位の場所に入れておく。
これをダウンロードして、解凍してパスの中に入れておけば全部入っている!
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
このスペクトラム関連の関数やデモなどを使うには、とにかくこれを解凍して入れておかないと困る。
Cygwin のXwindowsで使うのなら
- Cygwin がまだインストールされていない場合、 http://cygwin.com/install.html のページにある
http://cygwin.com/setup.exe をダウンロードして実行し、適当に答えて、Octave、Xwindow、Gnuplot、などをインストール。 結構時間がかかるかも。
- Cygwin コンソール 立ち上げて、startx とタイプして実行する。
- 出てきたXウィンドウのコンソールで、octave とタイプして実行すればよい。
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
- Some links
コンプトン散乱などなど。図解豊富。
http://www.science.mcmaster.ca/medphys/images/files/courses/4R06/4R6Notes5_Photon_Spectrometry.pdf
どなたかの修士論文。色々な場合のスペクトルの出かたとか、図説とデータが豊富。
http://www.iup.uni-bremen.de/PEP_master_thesis/thesis_2007/thesis_chehade.pdf
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
Wave Metrics’ Igor Pro v6.02A というソフト用のソースコードあり。
http://www.cvmbs.colostate.edu/erhs/Health%20Physics/Monte_Carlo_Spectral_Simulations.pdf
どうも Cernで作ったGeantというのが、よく使われているらしい。
そして、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