データ解析講習会 2017年春
このページは現在編集中です。参考にしないでください。
2017年春に気象学研究室で実施した、 B4向けデータ解析基礎講習会の補助資料。 文責は納多にあります。 質問、コメントなどはいつでもどうぞ。
電脳Rubyプロジェクト
データ解析、可視化、モデル計算・開発、などなど… 地球流体研究必須ツールたち!
日本発のプログラミング言語である、 オブジェクト指向スクリプト言語 Ruby を使っています。
主な製品
描画ライブラリDCL *1 のruby用ラッパー
RubyDCLよりも、さらに直感的にプログラミングができる!(西本比)
RubyDCLを下で呼んでます。
インストール
地球流体電脳倶楽部謹製品 Debian パッケージ集に沿ってすすめてね。
チュートリアル
すてきなチュートリアルが本家ページにあるのでそれを使って勉強しよー!
RubyDCL/GGraphでお絵描きの基本概念
RubyDCLを使うと…
まっさらな作図用紙に手書きでグラフを描くつもりになってみると…
- 用紙を持ってくる ---
DCL.gropn(1)
: 1はX-window, 2はPDF-file, 4はGtk - 用紙を取り出す ---
DCL.grfrm
:図を書く領域を初期化 またはDCL.grfig
:同じ領域に次の図を書く - 用紙のどこに書くか決める ---
DCL.grsvpt(領域左位置,右,下,上)
- 縦軸と横軸の値の範囲を決める ---
DCL.grswnd(横軸最小値,最大値,縦軸最小値,最大値)
- どんな図にするか決める ---
DCL.grstrn(地図番号)
: 1:直交一様座標、2:縦軸対数座標、、、10:円筒地図座標系、、などなど - よっしゃ、ここに書くぞ! ---
DCL.grstrf
:領域および変換の決定をする。 - あ、軸書かなきゃ ---
DCL.uxaxdv(..)
とか。 - ほんならこの値を書くで! --- トーンとか。。
- 描けた!図を仕舞う ---
DCL.grcls
GPhys/GGraphを使うと…
- まずは、
require "numru/ggraph"; include NumRu
- 1と9は書く必要がある。
- 2~7のステップは省略可。もちろん、自分で好きに設定してもよい(特に3や5は決めたくなってくる)。
- 2の設定は、
GGraph.set_fig "new_frame"=>..,"no_new_fig"=>..
で書ける - 3、4、5の設定は、
GGraph.set_fig "viewport"=>[..],"window"=>[..],"itr"=>1
とそれぞれ書ける。 - 7の軸の設定は、
GGraph.set_axes ...
を使うと簡単にできる。
- 2の設定は、
- 詳しい設定方法は、NumRu::GGraphを見よう!
- 自分好みの図を書く場合には、RubyDCLで明示しないといけないこともあります。
おまけ
このような自分好みの設定を、適当な名前(SampleGGraph.rb
とか)で保存しておくと便利。
#-- colormap = 13 # カラーマップの選択 psname = "Fig/"+$0.split('.')[0] # PSファイル保存名(rbファイルのベース部分) p psname ### <=== GGraph DCL.sgscmn(colormap) # カラーマップを指定 DCL.swcset 'fname',psname # 保存するファイル名を指定 iws = (ARGV[0]||(puts 'Workstation ID(I)?'; DCL.sgpwsn; gets)).to_i DCL.gropn iws DCLExt.sg_set_params 'lcntl'=>false,'lfull'=>true DCLExt.uz_set_params 'indext1'=>3,'indext2'=>5\ ,'indexl1'=>5,'indexl2'=>5,'inner'=>-1 DCL.uzfact 0.6 #DCL.sldiv 'y',2,1 ### ===> GGraph
Library References
お役立ちLinks
- RubyDCLマニュアル
- DCL早見表 : 印刷して手元に持っておくと便利です。
- GPhysレシピ
- Gphysライブラリマニュアル日本語版(非公式)
- GPhys/GGraph チートシート
- 電脳Ruby小物置き場 : 素敵なプログラムやツールを作ったら、ここでみんなに見せびらかします。
- DCLカラーマップ一覧 : カラーマップ13番を使うときは
DCL.sgscmn( 13 )
- DCLで使える地図座標系一覧
解析に便利なRubyパッケージ
線形計算数値ライブラリ
- Ruby-LAPACK
- 線形計算のための数値ライブラリLAPACKのRubyラッパー
関数ライブラリ
- Ruby/GSL
- GNU Scientific Library (GSL)のRubyラッパー
- GSL reference manual Japanese translationも参考に。
- 使用例
有意性の検定
#<<< student t test >>> # t検定を行なう require "gsl" def student_test(rcor,n,p=0.05) nu=n-2 t0 = (rcor * Math::sqrt( nu /( 1.0 - rcor*rcor ))).abs st = GSL::Cdf.tdist_Qinv( p/2.0, nu ) if t0>=st state = true else state = false end return t0,st,state end #<<< significance level >>> # 標本数nに対して有意水準pを満す相関係数を求める def significance_level(n,p=0.05) nu=n-2 st = GSL::Cdf.tdist_Qinv(p/2.0,nu) r = st/Math::sqrt(nu+st**2) return r end
スプライン補間
spline = Spline.alloc("cspline", xa, ya) xi = xa[0] for i in 0..n2-1 ya2[i]=spline.eval(xa2[i]) end
高速フーリエ変換(FFT)
- ruby-fftw3
- Ruby/NArrayでフーリエ計算。
- gphys_fft
- GPhysでフーリエ計算
EOF解析
- GAnalysis::EOF
- GPhysインストールしたら入っているパッケージ
長期再解析データについて
提供している主な機関とそのデータ
- JMA(気象庁)
- JRA-25
- JRA-55 -- 現在試用段階
- ECMWF(ヨーロッパ中期予報センター)
<本家データサーバ>
- ERA-15
- ERA-40 <RISHデータサーバ>
- ERA-interim
- NCEP/NCAR
- NCEP1, NCEP2 <RISHデータサーバ>
- CFSR
- NASA
- MERRA
その他
xorg.confの設定(backing storeをonにする)
/etc/X11/xorg.confを開いて(なければ新規作成)、以下の内容を書き込む。 ほんで再起動。
Section "Device" Identifier "Configured Video Device" EndSection Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" Option "Backingstore" "on" EndSection
Footnotes
*1 地球流体電脳倶楽部ライブラリ(Dennou Club Library): 地球流体関係者が長年にわたり蓄積してきたFORTRAN版、データ解析・可視化などのライブラリ。研究お役立ちツールもあるよ。