ページ

2011年5月31日火曜日

京都に行ってきた

締切りがいつもよりも1ヶ月遅いのですが、今年も学振の季節がやって来ました。

やっぱり申請書書きは苦しいですね...
勉強になるので書き上げると、それなりの達成感があるのですが...
やっぱり苦しいです。

特に今年は違う分野で新しい研究を始めようと提案するのでなおさらです。

ということで、今日は学振の受け入れ先に挨拶に伺うために京都にやってきました!!
昼前に京大について、打ち合わせは2時間ぐらいでした。
いろいろと話しを伺っていると、異分野出身ですが自分の研究提案が受け入れられるような、それなりに新規性もあるような気がしてきてきました。


研究室訪問の後は、久しぶりに京都の散策へ!!
まずは京大から近いこともあって、以前から興味のあった晴明神社へ学振の祈願もかねて行ってきました



安倍晴明公の銅像。願いを込めて!!
どうかきれいな文章が書けますように☆

もっと厳かな雰囲気かと思っていたら、以外にも境内の中はポップ(ファンシー)な雰囲気!!

式神像もかわいいですね〜



晴明神社の後は、ゴボウを探しに神社の前を流れる堀川へ!!
さすがにゴボウはなさそうな雰囲気。
きれいな護岸がされて親水公園になっていました!

久しぶりにゆったりした時間を過ごせました!!

2011年5月14日土曜日

増穂に行ってきた

今年もセンセーやります。
今日は学生実習のために山梨のとある山の中へ!!

今年は例年より少し気温が低い日が続いているように思いますが、増穂はもう山菜は盛りを過ぎた頃でした。

ちょうどツクバネウツギがきれいな花を咲かせていました!!
ツクバネウツギ Abelia spathulata Siebold et Zucc.
2011年5月14日山梨県富士川町平林

2011年5月5日木曜日

三頭山へ行ってきた

先週に引き続き今日も三頭山へ行ってきました。
先週から林床植物の植生調査をしているのですが、今年はちょっとサイズが小さいとのこと。

小さいとよく分からないですね...
精進しなければ

ミツバコンロンソウ Cardamine anemonoides O.E.Schulz
2011年5月5日三頭山

ミヤマエンレイソウ Trillium tschonoskii Maxim.
2011年5月5日三頭山

2011年4月29日金曜日

三頭山に行ってきた

今日から最大10連休の大型ゴールデンウィークがスタートしますが、今日は三頭山に行ってきました!!
下働きをさせていただいている研究者のお手伝い(!?冷やかしかな!?)のため

しかし、いい季節になりましたね〜
スミレが見頃を迎えています

また植物のお勉強が始まります

エイザンスミレ Viola eizanensis (Makino) Makino
2011年4月29日三頭山


ナガバノスミレサイシン Viola bissetii Maxim.
2011年4月29日三頭山

ハリモミ Picea torano (Siebold ex K.Koch) Koehne.
2011年4月29日三頭山

2011年4月12日火曜日

BAM

しばらく自粛していましたが,投稿を再開します。

今日はBAMについて

Rで一般化加法モデル(Generalized Additive Model)を使うにはmgcvを使うことが多いと思う。
mgcvでGAMを行うには,関数gam()を使うが,これとは別に関数bam()もある。


ヘルプページによると
Generalized additive models for very large datasets
とある。


詳しく説明を読むと
Description:

Fits a generalized additive model (GAM) to a very large data set,the term `GAM' being taken to include any quadratically penalized GLM. The degree of smoothness of model terms is estimated as part of fitting. In use the function is much like ‘gam’, except that the numerical methods are designed for datasets containing upwards of several tens of thousands of data. The advantage of ‘bam’ is much lower memory footprint than ‘gam’, but it can also be much faster, for large datasets.
gamとは推定方法が異なるが,どうも計算が速いらしい。


実際に使ってみると確かに速い。
(もう少し確認が必要だが...)結果はほとんど変わらないように見える。
自分のデータ(約7000件)では,これまで80秒ぐらいかかっていたが,約半分ぐらいまで短くなる。


もし大規模なデータを使っていて,さらにMuMInでモデル選択をしたい方はお試しあれ。
ただバージョンによってcontrolの指定方法が異なるので要注意。

1ヵ月

原発事故と余震でまだまだ余談を許さない状況ですが,震災からようやく1ヵ月が経ちました。
被災された方に心からお見舞い申し上げるとともに,一日も早い復興を心より祈っています。

2011年3月3日木曜日

GRASSのr.univarの出力をラスター演算(r.mapcalc)で使うには

今回もマニアックな内容です。

やりたいこと

GRASSのr.univarが出力する,あるラスターデータの最大値や最小値を使ってラスター演算(r.mapcalc)をする

方法
ターミナルユーザーであれば,awkを使うことで,問題なく処理をすることができる

あるラスターデータを "dummy" とする。
r.univarを実行すると,以下のように出力される。

$r.univar map=dummy
total null and non-null cells: 5157441
total null cells: 0
Of the non-null cells:
----------------------
n: 5157441
minimum: 0
maximum: 1
range: 1
mean: 0.0155387
mean of absolute values: 0.0155387
standard deviation: 0.123682
variance: 0.0152973
variation coefficient: 795.961 %
sum: 80140

出力結果を見てみると,最小値は7行目,最大値は8行目のそれぞれ2列目に出力される。

ということで,最大値のみを取り出すには次のようにする。
NRで取り出す行数を,\$で列数を指定している。
r.univar map=dummy | awk '{if(NR==8){printf(\$2); printf(RS)}}'

最小値の場合にはNRの部分を7にすればよい。
r.univar map=dummy | awk '{if(NR==7){printf(\$2); printf(RS)}}'

さて,値自体は取り出すことができたので,次はラスター演算(r.mapcalc)で使えるようにしたい。
単純に,取り出した値をシェル変数に代入する。
試しに,割合(%)を示すデータdummy2を作成してみる。
i=`r.univar map=dummy | awk '{if(NR==8){printf(\$2); printf(RS)}}'`
r.mapcalc "dummy2=(dummy/$i)*100"


これ以外にも方法はあると思う。単純にr.mapcalcの構文内に`r.univar map=dummy | awk '{if(NR==8){printf(\$2); printf(RS)}}'`を入れるだけでも良いかもしれない。

応用
次のようにすることで,r.univarの出力結果をテキストファイルに1行で書き出すことができる。
r.univar map=dummy | awk '{
if(NR==6){printf(\$2); printf(FS);}
else if(NR==7){printf(\$2); printf(FS);}
else if(NR==8){printf(\$2); printf(FS);}
else if(NR==9){printf(\$2); printf(FS);}
else if(NR==10){printf(\$2); printf(FS);}
else if(NR==11){printf(\$5); printf(FS);}
else if(NR==12){printf(\$3); printf(FS);}
else if(NR==13){printf(\$2); printf(FS);}
else if(NR==14){printf(\$3); printf(FS);}
else if(NR==15){printf(\$2); printf(FS);}}
END{printf(RS)}' > dummy2

これは非常に使える方法で,例えば沢山のラスターデータの統計量をひとつのテキストファイルにまとめることができる。
結果を書き込むファイルを "result.txt" とする
#結果を書き込むファイルを作成し,ヘッダを書き込む
echo "n minimum maximum range mean MeanOfAbsoluteValues
StandardDeviation  Variance VariationCcoefficient Sum" > result.txt
#マップセット内のラスターデータすべてのr.univarの出力をresult.txtに書きこむ
for i in `g.mlist rast`
do
r.univar map=\$i | awk \'{if(NR==6){printf(\$2); printf(FS);}
else if(NR==7){printf(\$2); printf(FS);}
else if(NR==8){printf(\$2); printf(FS);}
else if(NR==9){printf(\$2); printf(FS);}
else if(NR==10){printf(\$2); printf(FS);}
else if(NR==11){printf(\$5); printf(FS);}
else if(NR==12){printf(\$3); printf(FS);}
else if(NR==13){printf(\$2); printf(FS);}
else if(NR==14){printf(\$3); printf(FS);}
else if(NR==15){printf(\$2); printf(FS);}}
END{printf(RS)}' >> result.txt
done

GRASSでもこの辺りを充実してくれると嬉しいのですが...