InSilicoSpectro

プロテオミクス関係のモジュールCPANに登場しました。

  • Mass list file format conversions.
  • Protein modifications.
  • Protein sequences digestion with a large choice of possible enzyme types.
  • Peptide mass computations with fixed and variable modifications. Match with experimental PMF data.
  • Fragment mass computations for modified peptides and with neutral losses. Match with experimental MS/MS data. Possibility to define new types of fragments.
  • Text/graphical output in many formats of MS/MS spectra and match with experimental data.
  • Peptide HPLC elution time prediction.
  • Protein pI estimation.

pIは別にEMBOSSでも予測できるんだけどHPLC周りとかMS/MSなんかちょっと気になりますな。あとphenyxともなにが違うのかも気になるヨ

Mixinとpackage

Class::DBI::Loader::Relationshipが便利そうなので、ドキュメント眺めてたら、

Class::DBI::Loader::Relationship - Easier relationship specification in CDBI::L - search.cpan.org

This module acts as a mix-in, adding the relationship method to Class::DBI::Loader.

とかいう記述があったので、何してるんだろかとソース眺め。

結局Class::DBI::Loader::Relationship自体は何もしてナイっぽくて、Class::DBI::Loader::Genericの名前空間でrelationshipメソッドが記述されてた。

うーんpackageって同じ名前空間を複数回宣言していいのか?と不思議だったので、試したのが以下のコード。

package A;

sub a1_test { print "a_1\n";}
sub a2_test { print "a_2\n";}

1;
package B;

sub b1_test { print "b_1\n";}
sub b2_test { print "b_2\n";}

1;
package C;

sub c1_test { print "c_1\n";}
sub c2_test { print "c_2\n";}

1;
package A;

sub a3_test { print "a_3\n";}

1;

package Main;

A::a1_test();
B::b1_test();
C::c2_test();
A::a3_test();

で、実行。果たしてa3_testは呼び出されるんだろうか?

$ perl packtest.pl
a_1
b_1
c_2
a_3

うーん、これでもいいのね。

ただmix-inに関してはどっかから借りてくるのをmix-inって呼ぶのかナァと漠然と感じていたので、こういうやり方をmix-inと呼ぶのが, アイスクリームにアイスクリームを混ぜ込んでるみたいで、ちょっと不思議な感じがするんだよなぁ。

THE VOYAGE

メタモでやられたSLEEP WALKERよいです。

ProductName THE VOYAGE
Sleep Walker
ヴィレッジアゲイン / ?円 ( 2006-07-19 )


踊れるjazz、そして渋め。

  • AFLOAT feat.Yukimi Nagano
  • KAZE

が好き。

月とくるりと富士山のシルエット

朝霧jamに行ってきた。

2,3,4,6と四回目の朝霧だけど、一昨年よりも早く行ったにもかかわらず、キャンプサイトMがほぼ一杯。奥のほうにスペースみっけてテント張った。思い起こせば2003なんて(これまた同じくらいの時間帯だったけど)Mサイトなんてヒトもまばらで好きな場所取れたのに。富士ロックっぽくなってくるのはしょうがないのかもしれんにゃぁと。

さて1日目はクラムボン-INDIVIDUAL ORCHESTRA-くるり-JUSTICE-EROL ALKAN-MIRROR SYSTEM(触りだけ)という流れで。

BBQしているうちに、クラムボンが始まってしまい、聴けたのは終わりのほうだけ。まぁ、サラウンド聴けたからよかった。

一回テント戻って、更にBBQってから、INDIVIDUAL ORCHESTRA。やっぱ田中フミヤ最高。最後にhoodrumの曲かっこよすぎ。続いてRYUKYUDISKOは、ちょっとテクノすぎて、、、最近テクノあかんです。というわけで、くるりのほうへ。

くるりは最初の3曲凄かった。月がちょうど顔出して、富士山のシルエットが浮かびあがるというシチュエーションでくるりこれが一番感動した。

月

途中、けだるい曲が続いたので、くるりはそこで打ち切って、justice始まるまでちょっと寝た。

JUSTICE-EROL ALKANの流れが今回僕的にベスト。ケミカルブラザーズ聴けるなんて。盛り上がった。ってか、盛り上がりすぎてあんまちゃんと覚えてないナァ、

MIRROR SYSTEMはちょっと聴いててまったりしてきたのでテントに戻ってその日は終了。

結構防寒してたけど、夜がやたらと寒かった。登山用の寝袋必要だったかも。

二日目は、Chris Pierce-COOL WISE MEN-SOIL & "PIMP"SESSIONS-NIGHT JUNGLE-1945 a.k.a. KURANAKA

という、まったりめの構成で。soilがなかなかよかった。NIGHT JUNGLEの途中で帰ることにしたけど、どうしても、1945聴きたかったので、連れを待たせてムーンにちょっとだけ。低音最高。行っといてよかった。

赤富士

赤富士ってホントに赤いのね。今回はよく晴れてとても楽しかった。

抽選当たれば、来年も行きたいナァと思うが、マウントフジ・コーリング・イン・山中湖も気になる。

1 while てなんだヨ

どっかで、

1 while (unlink $file)

っていう記述を見つけたので、何これ?と調べてみたら定番だった。

数字に「,」をいれるには?

つまり、「~が失敗するまで~を続ける」という定番の 書き方ですね。

openbabelって簡易DBっぽくつかえるのね

知らんかった。Zincの drug-likeのsmiを使ってみた。200万件くらいあるので、結構でかめ。

babel druglike.smi -ofs

でインデックス作成する(結構かかる、athron3000+mem512Mで2時間くらい)。 インデックスが作成できたら、SMARTSで検索してみる。

$ babel druglike.fs -osmi -s 'N#Cc1cccc(F)c1C#N'
2 candidates from fingerprint search phase
C(#N)c1c(c(c(c(c1C#N)F)F)F)F    ZINC00155214
C(#N)c1c(c(c(c(c1C#N)F)F)N)F    ZINC01507036
2 molecules converted

おお、7秒くらいで結果を返すので結構速い。
っていうか、babelのwikiみたら書いてあった。

babelはIDで検索はできないようだが、これはsmilesをsqliteにでも突っ込んでおけばいいので、Catalyst使えばお家いじり用のcompounds_dbが出来上がるな。

plaggerでChangeLog(3)

少し色々やってみた。
CustomFeed::ChangeLog
Filter::ChangeLog

  • markdownのフィルターは教えてもらったplaggerのplugin使うように変更
  • clmemoのタグでフィルタリングするようなプラグインも用意した(とりあえずtodoだけGMailに送ればよいので)
  • Filter::BreakEntriesToFeedsでエントリ毎に送信
  • Filter::Ruleで重複チェックをしたいために、偽のpermalinkを生成するようにした。

というわけで、今はこんな設定で動かしてます。

plugins:
  - module: CustomFeed::ChangeLog
    config:
      changelog_file: /home/kzfm/clmemo.txt

  - module: Filter::ChangeLog
    config:
      tag: TODO

  - module: Filter::Rule
    rule:
      module: Deduped
      path: /tmp/dedupe-changelog.db

  - module: Filter::Markdown
    config:
      empty_element_suffix:  />
      tab_width: 4

  - module: Filter::BreakEntriesToFeeds

  - module: Publish::Gmail
    config:
      mailto:   kppppq@gmail.com
      mailfrom: kppppq@gmail.com
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: kppppq@gmail.com
        password: ppppppppppp

これで、TODOのタグつけたアイテムのみGmailに送られるようになる。

2006-10-04 kzfm  <kzfm@teketou.com>
    * TODO: perl
    まるパーのcatalystの章激読み返す
    ====
    Jiftycheck

publishのプラグインを変えれば、blosxomもOK(下書き書いておくのに便利そう)。

さて、気になってるのは、重複チェックの為に用意した嘘っこパーマリンクは駄目だよなと。そもそもパーマリンクのないようなものを扱うのはどうしたらいいんだろうか?と。この際、wikiとかchalowみたいなのにpublishするようにしたほうがよいのか。

かなりやっつけなFilter::ChangeLogなんて作ったけど、ホントは既存のフィルタで対応できるんだろうなと。あとでちゃんとプラグイン調べないといけない。

変更検知して自動でplagger動くようにしたいが、POE使えばよいんだろか?またはmeadowだったらキーバインド指定しておくのが使いやすいんだろうか。

過去のエントリ

WWW::Searchのプロキシー設定

プロキシーサーバーの設定は

$search->http_proxy(['http','ftp'] => 'http://proxy:port');

で。$search->env_proxyはなぜかだめ。

ここらへんのモジュールを使って、P450 Tableから、CYPの基質とか阻害剤の情報取ってきて、DrugBankの構造情報とつなげてみた。

いきなり、P450 TableはDOMれず、躓く。しょうがないので、正規表現使って化合物名とinhibitorとかのクラス分類を抽出した。あとは、WWW::Search::DrugBank 使って、ほしいデータ(mol)をサーチしてつなげれば完了とか思ったんだけど、WWW::Search::DrugBankってIDでしか検索できない。うーん。

結局、webからサーチかます(これも色々ヒットしてきて精度悪くないか?)サブルーチン用意して、IDゲットしてからWWW::Search::DrugBank使って欲しいデータ取ってきた。

URI::Fetchがプロキシーサーバーを通らん

お盆前にインストールにトライしたことがあるんだけど、表題の通り、職場のマシンにplaggerがインストールできない。まぁ、面倒だったのと、どうせ職場からだとGMail通らんし、家で遊んでたほうが楽しいし生産的だしとかいった理由で、ずっと放置してた。

でも最近、イントラのRSSをまとめるためにイントラにplanetが欲しくなったので、URI::Fetchのtestが豪快にこける理由を追ってみた(ってどうせプロキシの設定なんだろうけど)

71     $ua->agent(join '/', $class, $class->VERSION)
72         if $ua->agent =~ /^libwww-perl/;
73     $ua->env_proxy;

やっぱ原因はプロキシで、lwpのuaちょっといじるだけで対応できた。 あとはplaggerのインストールも無事完了。