Virtual Scratch

koyachiの日記 - Table,Caching,Memoize,Closure,Profilerのクロージャの話をフムフムと読んでたら、

いやなブログ: JavaScript とクロージャ

このプログラムでは各セルの色の濃さをクロージャを使って保持しています。makeHandler という関数の depth という変数がそれです。クロージャを使うと、個々のイベントハンドラごとに独立した状態を簡単に持たせされるのがポイントです。

お、そういえば一昨日、ミスドでお出かけレジャーシート当たったよな

スクラッチで

というわけで、こんなん作ってみました。

こすると絵がでます。javascriptはいやなブログのcanvas.jsをちょっと改変して、マウスが乗るとopacity下げるようにした。あとMozOpacity使ってるのでMozillaでないと動かないと思う。

ランダムで10回に一回くらい当たりの画像が出るようにしたりすれば、擦りがいが出るかも。

リッジ回帰

Practical Regression and Anova in Rの9章がprincipal component regression (PCR)とかPartial Least Squares(PLS)に割かれている。

その中でRidge Regressionってのがいまいちわからないので、リッジ回帰で探してみると、サポートベクターマシン入門が。

昔、購入してめくったけど、ちゃんと読んでないやってことで、これまた読むことにした。

ProductName サポートベクターマシン入門
ネロ クリスティアニーニ
共立出版 / 4200円 ( 2005-03 )


色々統計関連の書籍を読みながら、わからないとこはまずRjpWikiで探すと理解が深まっていいと思うようになった。少しは進歩したのかな?

Lightboxを使ってみた

Lightbox JSを触ってみた。やっぱいい感じ。でも右下にcloseのアイコンとか出るはずなのに出なかったりするのは、cssの設定が悪いのかな。

yuki hana

lightbox用に小さい画像と、大きい画像(クリックしたときに表示される画像)の二つを用意しないといけないが、この作業を、いちち手でやるのは面倒だということで、windowsでperlスクリプトを ドラッグドロップ化したのでお手軽になった。でもユッキー様をあやしながら書いたのでスクリプトはやっつけ。名前考えるのが面倒というありがちな理由で、とりあえずプロセス番号がファイル名で且つCドライブに吐き出すようにしておいた。

use strict;
use Image::Magick;

### image size
my $width = 480;
my $height = 360;
my $width_small = 160;
my $height_small = 120;

my $imgfile = shift or die "couldn't read ImageFile\n"; 
$imgfile =~ /\\(\w+).(jpg|JPG)$/;
my $filename = $1;

### output
#my $output = "C:/" . $filename .".jpg";
#my $output_small = "C:/" . $filename ."_small.jpg";
my $output = "C:/".$$.".jpg";
my $output_small = "C:/".$$."_small.jpg";

my $image = Image::Magick->new;
$image->Read($imgfile);
$image->Resize(width=>$width, height=>$height, blur=>0.8);
$image->Set(quality=>60);
$image->Write($output);

$image->Resize(width=>$width_small, height=>$height_small);
$image->Write($output_small);

undef $image;
exit;

ちなみに、Image::Magickモジュールのインストールは楽だった。imagemagickをインストールする際に「perlでモジュールとして使う」にチェックを入れるだけ。

実際は、もうちょっとちゃんと書いて、サーバーにftpしつつ、アップロードした画像をlightboxで扱うためのhtmlを吐き出すコードまで書いておけば申し分ないな。

いつも使っている画像アップロード用CGIをいじるという選択肢もあったんだけど、ドロップレット風味で実用っぽいものをひとつくらい作ってみたかったので今回はWindowsプログラミング。

他には実際にやってみて思ったのは、縮小画像を載せるんじゃなくて画像を切り取りつつ、小さくしたものをアイコン的に表示させておくほうがいいなと思った。単なる拡大縮小じゃつまらん。とか考えると、gimp使ったほうがいいのか?

いやいや、これを敢えてCGI+javascriptでやるべきでしょう

みたいな禅問答のはじまりだ。手段が目的化しつつあることにはうすうす気付いているけどネ。

TってPerl派なのかな

Natureからの求人メールでおもろいもん見つけた。

募集職種と応募資格

分子設計、ケモインフォマティクス、バイオインフォマティクスに関する高度な専門知識・技術を有し、創薬研究に活用できる能力を有する方。プログラミング(Perl、JAVAなど)の経験があり

JAVAってのはありがちなんだけど、Perlまで入れてるのは現場の意向かな?

HaskellでBioinformatics

本日普通のHaskellプログラミングの7章まで読み終えた。そろそろ、具体的な例題解いてみたいなぁと思ったが、3部13章のWIkiをつくってみようの章まではあと5つもある。今のとこ、ここまで読んで、実用Perlプログラミングみたいに他の言語との違いみたいなページを割いてくれるとよかったりと思った。それ以外は、unixのコマンドをtailとかheadとかをhaskellで書こうみたいな感じにすすむので理解はしやすいヨ。

ProductName ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
青木 峰郎
ソフトバンククリエイティブ / ?円 ( 2006-06-01 )


実際に、どんな感じの問題に適用すんのがいいのかなぁとか、考えたときに、ゲノムみたいな大きい配列操作すんのに適してるも。もしかしてbioinformaticsでなんかあるかなと探したらあった。

論文あったのでアブスト眺めたけど、DPってhaskell向きなのかな?まだ、いまいちわかってなさげ。

Rによる統計的プログラミング でRと比較しているのだから統計的な(というより数学的な)記述にむいているのは感覚的にわかるんだけどなぁ。

ということはchemoinformaticsでの利用例あるだろ、とか思うんだが見当たらない。

WWW::Search::DrugBank

ココ一週間の間に、Win32::PowerPointとかClass::Pluggableとか気になるモジュールが出てるのに、忙しくて触る暇がない。

WWW::Search::DrugBankもその中のひとつ。DrugBank へのアクセスを提供するモジュールらしい。メソッドっていうかRESULT FIELDSが一杯あるのはバイオインフォ系ありがちな。

僕このカラムの多さがいやなので、最近はすっかりClass::DBI::OracleとかClass::DBI::mysqlにはしるヨなぁ、、、、って、ダウンロードして、データベースに突っ込んでClass::DBIから触ればいいってことに気付いた。

Drug Quiltはフラッシュの動的な変化が楽しい

Drug Quiltが面白い。Ajaxでも同じような表現はできるかな?静的なのはRでも出来るような、、、、

pharmaceutical data landscape - data visualization

a dynamic data visualization of the brand name & generic drugs the US Food & Drugs Administration has approved to. published weekly as a series of data files, this data represents an accurate description of the american pharmaceutical landscape.

FDAのデータだからちょっとデータが少ないけど、PatentQuiltとかにするとかなり凄いかも。あとaから順番に並んでるみたいだけど、ポジショニングの軸入れたり、化合物の類似性の軸入れたりするとかなりヤバげ。

ドラッグ&ドロップできるperlスクリプト(Windows)

lightbox用に画像を手軽にリサイズするツールは作れないかと思ったところ、ドロップレットというものがあることを知った。

確かに、画像のサイズ変換とかちょっとした作業をドロップレットみたいにドラッグ&ドロップでできるツールで行なうと便利だ、そして、さらにperlスクリプトをドロップレットに出来たらもっとよい。MacだとできるっぽいんだけどWinだとあまり情報がなかった。

http://del.icio.us/kzfm/gui

PerlTkでいけるかなと思ってたんだけど引数の渡し方とかちょっとわからん。他にもWin32::GUIとかThe GUI Loftとかもあったんだけど、、、、

色々調べて、ドラッグで引数渡したいだけならbat書けばいいということを知って、それで対応することにした。

結局、ドラッグできるperlスクリプトではないが(細かいことは気にしない)

batは単純に引数を渡すためだけの必要最低限、、というか書き方よくわかってない。アイコン変えたりとかDOSプロンプト出さないといったこともできるのかな?

@ECHO OFF

c:\test.pl %1

perlはこんな感じでサンプルを。流れでWin32GUIを入れたので、テストに使ってみた。

use Win32;

my $mess = shift; 
MsgBox("Test", $mess, 48);

sub MsgBox {
    my ($caption, $message, $icon_buttons) = @_;
    my @return = qw/- Ok Cancel Abort Retry Ignore Yes No/;
    my $result = Win32::MsgBox($message, $icon_buttons, $caption);
    return $return[$result];
}

test.batにドラッグドロップすると、windowが開いてドラッグしたファイルのパスが表示される。あとはこれをperlmagickで画像のリサイズするスクリプトを書けばOK。リサイズしてftpでblosxom用の画像ディレクトリに送るとこまでをドロップレットにすれば使いやすくなるかな。

sewってのもあった。あとunix magazineにもまんまな記事があったらしいんだけどバックナンバーがない。

Practical Regression and Anova in R

Rで描画させるの楽しいけど、モデルつくんのにRをちゃんと覚えねばってことで、Practical Regression and Anova in Rもちょっとづつ読み進めてます。

Practical Regression and Anova in R

This a masters level course covering the following topics:Linear Models: Definition, fitting, inference, interpretation of results, meaning of regression coefficients, identifiablity, lack of fit, multicollinearity, ridge regression, principal components regression, partial least squares, regression splines, Gauss-Markov theorem, variable selection, diagnostics, transformations, influential observations, robust procedures, ANOVA and analysis of covariance, randomised block, factorial designs.

書籍にもなってるようだ。

ProductName Linear Models with R (Chapman & Hall/CRC Texts in Statistical Science)
Julian J. Faraway
Chapman and Hall/CRC / 6462円 ( 2004-08-12 )


SAR,SPRは、よくわかんないパラメータをたくさん(1000以上とか)出してみて、activity,propertyをうまく説明できるパラメータを絞り込んでいき、絞り込まれたパラメータとactivity,propertyとの関連性を類推していくプロセスがおもろい。

perlで高階関数とカリー化

先週は電車通勤+歩きで仕事場を行き来したので、電車の中で、英語漬けで英語のトレーニングしてみたり、普通のHaskellプログラミング読んだりと、電車通勤はなかなか有意義なことに気付かされた。特に普通のHaskellプログラミングは第一部を読み終えたことで、高階関数と変数の束縛というものがわかったような気がした?

、、、、したのかどうかまだよくわからんので、自分の理解力を認識するために少し書いてみた。

まず、言葉の定義を。

  • 変数の束縛
  • (例えば)関数という値があり、それが変数名を束縛している
  • 高階関数
  • 関数を返したり引数にとったりする関数
  • 変数が関数に束縛されているから、関数を変数として扱うことが出来る?
  • それとも関数を変数として扱うことことが出来れば高階関数はつくれるのか?

perlでも変数を束縛することが出来れば高階関数など扱えるのかなと。クロージャ使えってことか?と思って調べて見ると面白そうなのが。

(って全部一度は見たことあるじゃん。でもワカンネとか言って放り出した気が、、、、)

ぱるも日記ではカリー関数を作る例が示されていたが、関数を返す高階関数の例ですな。カリー化に関しては、これなど面白かった。

torus solutions!は僕がblosxomをいじくるときにかなり参考にさせてもらったサイトです。

XML を Perl の高階関数で。 : torus solutions!

XML::LibXML で XML を作るときに、 いちいち createElement とか appendChild とか書くのに飽きてきたので、 高階関数版を作ってみた。
これも、関数を返すといってよいのでしょう。

関数を引数にとる高階関数をperlで書けるのだろうか?というのが気になるところだが、関数のリファレンスを引数にとる関数を書けばいいのかなと思ってこれまた調べてみた。

ここまでの関数を返す関数とか関数を引数にとる関数を考えると、perlでの(関数による)変数の束縛ってのは、関数のリファレンスを変数として扱うことでなされると考えてよいのかな。

ProductName Higher-Order Perl: Transforming Programs with Programs
Mark Jason Dominus
Morgan Kaufmann / 5692円 ( 2005-03-28 )


Higher-order Perlも気になる