Iterator ( デザパタPerl )

Perlの例だとインターフェースのクラスをdieしているので、最初これはどういう意味があるのかわかんなかったが、

naoyaのはてなダイアリー - prototype.js でデザインパターン - Iterator

デザパタ本のコードでは Java の interface をまず用意して、となるのですが例によって JavaScript は動的な言語かつ型がないのでサブクラスに実装を強制させるメカニズムがない。ということで、ここでは interface に相当するものは用意せずに Concrete クラスだけで実装します。

と書いてあったのを見てサブクラスで実装されてない場合によばれた場合のためのちょっとした仕組みなのだとわかった(あがきにちかいような気もするが)。で、試しにjavaで実際にインターフェースを実装してるクラスのメソッド名変えてみたらコンパイルできなかったし、をを~、javaのインターフェースって束縛としては便利だよなと思ったり。言語の違いってなかなかおもろいなぁと感じた瞬間だったり。

あと、こういうやり方もあるらしい。

オブジェクトをハッシュデータ構造と透過に扱う際に、tie ハッシュのインターフェースで NEXTKEY() というメソッドを実装しますが、これがまさに iterator なので、

って部分がイマイチ飲み込めなったので、実用PerlプログラミングのTieのとこと型グロブの章をよく読んでなんとなく理解した。(理解した気になった?)

ProductName 実用Perlプログラミング
スリラム スリニバサン
オライリー・ジャパン / ?円 ( 1998-11 )


で、CPANもいくらか調べてみたところ、Iterator::Utilというのがよさげなのかな?この場合はiappendを使えばいいのかな?

明日コードを書いてみよう。

このエントリは結城浩さんの本と、それに載っているサンプルをPerlで書いた例をみながら考えたことをメモってます。あとは、はてなの伊藤さんのjavascriptでの例も参考にしてます。 間違いの指摘とか、もっといいやり方教授してくれたらとても嬉しいゾ。

ProductName 増補改訂版Java言語で学ぶデザインパターン入門
結城 浩
ソフトバンククリエイティブ / 3990円 ( 2004-06-19 )


Chemrubyで構造描画 PNGに出力だ!

Chemruby web siteに初心者てのが出来てたので、初心者らしくRMagickを使ったテストをしてみたぞ。

をを~ pngで出力されるようになっとる !

早速、視覚化のサンプルもpngで落としてみることに

require 'RMagick' require 'chem' mol = Chem.open_mol("mol/C00019.mol") query = Chem.open_mol("mol/C00147.mol") m = mol.match_by_ullmann(query) matched_nodes = m.inject([]){|ret, i| ret.push(mol.nodes[i])} mol.edges.each do |bond, atom1, atom2| bond.color = [1, 0, 0] if matched_nodes.include?(atom1) and matched_nodes.include?(atom2) end mol.nodes.each{|node| node.visible = true unless node.element == :C} mol.save("chemrubytest.png") mol.save("chemrubytest.pdf")

でてきたpngはこれだ。

result

まだ、色はつかないのね。と、描画位置のバランスと、フォントの大きさとかちょっと気になる。結局そういうのは地道に綺麗にしていくだけなんで、個人的には大して気にならないが、最終的にはCDKよりは綺麗な絵が出力されるようになることを期待しますヨ。

あとsdf2png欲しい。まぁこれは自分で書けばいいのだが。よし、rubyの勉強も兼ねて書いてみよう。

支那そば家 毎度!で潮ラーメン

にんともかんとも駐車場がわかりにくいので、ちょっとはずれの有料駐車場に停めてしまうが、二度目なのに毎度な支那そば家にいってきたヨ。

毎度 毎度

塩な潮を注文。定休日が月火になったのと一部メニューの値段が変更で肩ロースのチャーシューが一枚100円に替わってた。

潮

麺は旨い。が、潮味よりも醤油のほうが好きかも。塩だとちょっとインパクト薄めになっちゃうかも。

あの麺を、せいろみたいに、醤油味のスープで蕎麦みたいにすすったらうまいかな

ささやかすぎる願望だヨ。

支那そば家

ChemDB

ChemDBはDBMSにポスグレつかってるらしい。他のDBとの比較があったので眺めたが、アノテーションの多さが売りのデータベースって感じかな。

ちなみに、マシンラーニング用のデータセット が遊ぶにはいい感じ。なんかいい記述子発生ソフトとかあればR使っていじってみたいところだが、オープンソースのdescriptorプロジェクトってあんのかな?ないのかな?サブストラクチャーベースのヤツだったらありそうな気もするけど。

あと、ChemDBで使われているOEChemのpythonライブラリが非常に気になったりしたヨ。そしてChEBIにはChemAxonの影が。

気になるといえば、第3回オープンバイオ研究会の「ビジュアライズの技法」というパネルセッションも気になる(さすがにいけないけど)。スライドとか公開されんのかな?

16174682 16381955 15608238 16381840

Rの基本パッケージ中の古典的検定関数一覧

RjpWikiにRの基本パッケージ中の古典的検定関数一覧ってのができてて、しかもそれぞれに簡単な説明とRのサンプルが超訳として書かれてるので便利。

あとで、全部トレースしておこう。

Catalystのデータの更新って

Catalyst+CDBIでinsertはcreateメソッド呼び出すから、更新はupdateメソッドだろって勘違いしててデータ更新だけがうまくうごかないプログラムができてしまい、

キャッシュか?キャッシュなのか?もしや。

なんつって、しばらく悩んだ。

で、Shibuya Perl Mongersの Wiki作りの資料見ててやっとぼけてたことに気づく。

sub save : Global { my ( $self, $c ) = @_; my $title = $c->req->params->{'title'}; my $contents = $c->req->params->{'contents'}; unless(my $wiki = MyWiki::M::CDBI::Wiki->retrieve(title => $title)){ MyWiki::M::CDBI::Wiki->create({title => $title, contents => $contents}); }else{ $wiki->contents($contents); } $c->res->redirect($c->config->{base} . '?' . $title); }

O/Rマッピングで、オブジェクトとして扱ってんだから更新はセットすればいいだけじゃん。

いま思うと、そりゃそうだろうって感じだが。CDBIちゃんと理解しておかないといけなさげだな。

GeneRank

GoogleのPageRankをモジッてGeneRank。もちろんアルゴリズムを参考にしてます。PageRankはここみるとなんとなくわかるかも。

多分5年くらい前だと思うが、アレイのブームあたりで、どっかのベンチャーがGoogleのアルゴリズムを取り入れたいとか言っていたことを思い出したヨ。

さて、大雑把なGeneRankの式は

ランク = (1-d) x 発現変動率 + d x 結合度

みたいな感じ。PageRankだと左の項は(飽きて)他のページにいっちゃう項で、右項がリンクをたどる項か。要するに右の項は束縛なんだろうと思う。というわけで、GeneRankは発現変動率を、GOとか他のネットワークの情報である程度補正するイメージになるかな。程度はdで決める。

ちなみにPageRankはd=0.85らしい。が、そんなに大きい確率でリンク辿るか?ブログが多くなってくるとあんまりリンクを辿るという行為をしなくなるよな。

GeneRankでは、これをGOのネットワークとかで補正をかけて評価してます。が、あんま改善されてないっぽい。転写の制御被制御をGOで補正しようというところに無理があるのかな?と思ってみたりする。

同じシスエレメント持っているとかのネットワークを使ったほうがうまくいくのかも知れない。がそれって作るの大変ダヨナァ。というか、ネットワークをどう表現するかで、ランキングが改良されるかどうか決まるっぽいんだが。文献からNLPで作った、ネットワークは使えないんだろうかね。

16176585

PSI-BLAST-ISS

ホモロジーモデリングをするとき、一番気を使うのはテンプレートとなる結晶構造の選択と、それへの配列のアライメントではないかと思う。

というわけで、テンプレートの選択と配列アライメントのためには、類縁の遺伝子の機能とかモチーフとか進化的な素因とかきちんと理解したり、さらには立体構造アライメントによる、類似構造の機能と構造の相関とか地道に押さえることがいいモデル作成の秘訣だったりするため、トライアンドエラーは当たり前。

PSI-BLASTとcd-hitを組み合わせたPSI-BLAST-ISSを使えばここら辺の作業の効率化と迅速化がはかれるっぽいので、これってイイかもなんて思ったりする

16033659 11294794 11836214

文献もこっちで管理しよう

読んだ論文は別のblosxomメモッとことか思ってたが、最近pubmed版のdel.icio.usみたいなほうが調子いいのかもなんて思ってる。

ブックマークレット+一行コメントでお手軽だしね

これはそのうち作ってみよう。

あとは、文献のエントリもタグくっつけておけば、すぐに検索できるし、こっちのblosxomで一緒に管理しても困らんかもとか思ったのでそうしよう。

Catalystのテストサーバをいちいち再起動しなくていいことを知る

Catalystでものづくりな日々が続いてますが、モジュールとかのファイルを更新するたびに、Catalystのテストサーバ再起動すんの

キャッタリーーース

と、面倒くさがっていたら、

-r オプションつけて起動しとけば、自動的に再起動されるということを知った。

Lost-Season: CatalystのTestServerが自動再起動の機能を実装

catalyst.pl Demo で、プロジェクト作成 cd Demo script/demo_server.pl -r

というように、-r オプションを付けると自動再起動モードになります。 一秒ごとにチェックして、編集されたファイルがあると テストサーバが再起動されます。

ナイス、Catalyst。 素敵デス。

© kzfm 2003-2021