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ともなにが違うのかも気になるヨ

PharmGKBはWeb ServiceAPIつき

PharmGKBAPIつきでperlのサンプルもある。

というわけで早速ダウンロードして動かしてみたけど、こんなデータのdetailにアクセスできないので、イマイチ使えん。半減期とかVdとかProtein Binding Dataとかにさくっとアクセスできればいいんだけど。

あと、perlのサンプルwsdl読みに行くようになってないんだよね(あるにも関わらず)。

use Data::Dumper;

$wsdl = 'http://www.pharmgkb.org/services/PharmGKBItem?wsdl';
$serv = SOAP::Lite -> service($wsdl);

my $res = $serv->searchDrug("PA452624");
print Dumper($res);

こんなんで、いいような気がするんだけど。

いまのとこdrugのエントリーが400ちょいしかないけど、もっとデータが増えてきてAPIも充実してくると面白そう。

BiopythonはbioperlよりもPDBファイルの処理が速かった

みんなのpythonも読んだし、フレームワークでも試してみるかと、djangoとかTurbogearsに手をだしたら、火傷した。

djangoは一通りサンプル動作をさせることができたけど、Turbogearsはコントローラのあたりからさっぱりわからん。
いきなりフレームワークは無謀すぎたかなということで、Biopythonでも入れて、もう少しpython慣れすることに。

easy_install numpy

wget http://www.egenix.com/files/python/egenix-mx-base-2.0.6.tar.gz
python setup.py install

svn co http://www.reportlab.co.uk/svn/public/reportlab/trunk
python setup.py install

wget http://biopython.org/DIST/biopython-1.42.tar.gz
python setup.py install

easy_installはperlでいうところのcpanコマンドみたいで楽チンです(ちゃんと動けば)。動かないのは地味にダウンロード、展開、setup.pyを行なった。

さて、インストールも無事に終了したところで、bioperlと比べてみた。比較したのはpdbファイルの処理。というのは、FMO用のインプット作るときに使っているPDBパーザーつまりBio::Structure::IOがやたらと遅く、不満だったからというありがちな理由。

コードはこんな感じで、1fatっていうpdbファイル読み込んでCalphaを出力してみた。

python

from Bio.PDB.PDBParser import PDBParser

parser=PDBParser(PERMISSIVE=1)
structure=parser.get_structure("1fat", "1fat.pdb")
for model in structure.get_list():
    for chain in model.get_list():
        for residue in chain.get_list():
            if residue.has_id("CA"):
                ca_atom=residue["CA"]
                print ca_atom.get_coord()

perl

use strict;
use Bio::Structure::IO;

my $pdb_file = "1fat.pdb";
my $structio =  Bio::Structure::IO->new(-file => "$pdb_file",
                            -format => 'PDB');

my $struc = $structio->next_structure;
for my $chain ($struc->get_chains) {
    for my $res ($struc->get_residues($chain)) {
        for my $atom ($struc->get_atoms($res)) {
            print join " ",$atom->xyz,"\n" if $atom->pdb_atomname eq " CA ";        
        }
    }
}

で、ベンチマーク

$ time python test.py
real    0m1.161s
user    0m0.996s
sys     0m0.116s

$ time perl pdbtest.pl
real    0m3.183s
user    0m3.056s
sys     0m0.044s

平均とってないけど、何回か実行してみてもpythonのほうがbioperlよりも3倍くらい速かった。bioperlのコードってなんだかなと思うことがままある。pdb_atomnameなんかも4文字で前後にスペース入ってるし。というわけで、SBDD周りのプログラミングはbiopythonのほうが扱いやすい感じがしてる。

ProductName みんなのPython
柴田 淳
ソフトバンククリエイティブ / ?円 ( 2006-08-22 )


余談だが、Turbogears普通に触れる程度までpython覚えてやる(意地でも)とか思ったので、Dive Into Pythonも読み中。

RNews volume 6/3はオモシロげ

CRANでRNewsの最新版が読めるようになってた。今号はなかなか興味深い記事が多かった。全部読んでみたけど特に印象深かったのはこの3つ

Fitting dose-response curves from bioassays and toxicity testing

毒性試験との用量依存性曲線を描くためのコツというかそんな感じの内容。

酵素アッセイとかだと普通にシグモイド曲線のフィッティングをすればいいが、ED50なんかを求める系だと、hormesisがおきるので、特に低用量下でブランクよりも高い値がでる場合がある。そういう場合は linear-logistic modelを導入するとよいらしい。

The pls package

僕はよく使うので、multi-response modelsのとこと、varidation周りの話題が参考になった。

Generating, Using and Visualizing Molecular Information in R

RからCDKを使う話。SJavaをつかってRから記述子を抽出したりとか画像を表示したりとか。僕はRから他の言語を使おうとはあまり思わないほうなので参考になったという感じ。むしろ、jython+CDKRpyを組み合わせて色々できると面白いナァと思う。

REMUS

NARのWeb Server issueがでとったのでめぼしいものをピックアップ。

気になったのがREMUSというエピトープ探索サービス

蛋白質が発現ちゃんとしてるかとか調べるためにモノクロが欲しくなる場面は結構あって、効率的にゲットするためにホモロジーモデリングの過程で得られるループの情報を使うことは意外に多い。

溶媒に露出しているループである程度の長さのもの、特に膜を貫通する場合は細胞表面に露出しているもの

ってな感じで選択してペプチド合成すると成功率はなかなか。ただ、いつももうちょっと確度を高めたいナァとは思っていて、この論文参考に出来るかなと思って、アルゴリズムまで遡ってみた。

BioMed Central | Full text | A reinforced merging methodology for mapping unique peptide motifs in members of protein families

Members of a protein family often have highly conserved sequences; most of these sequences carry identical biological functions and possess similar three-dimensional (3-D) structures. However, enzymes with high sequence identity may acquire differential functions other than the common catalytic ability. It is probable that each of their variable regions consists of a unique peptide motif (UPM), which selectively interacts with other cellular proteins, rendering additional biological activities. The ability to identify and localize such UPMs is paramount in recognizing the characteristic role of each member of a protein family.

んー、どうもファミリー間で相同性ナイっぽいとこ探してるだけっぽいなぁ。先のモデリングの流れで考えるとSCR(構造と配列の保存された領域)でピン止めさせると残りはわりと多様性の生じやすいループの部分がわかるんだけど、それを単にファミリーのアライメントから求めているだけなのか?
それだと結果論的にループとかにnique peptide motif (UPM)が現れるのは納得できたり。

普通に二次構造予測でへリックスとかシートの領域求めてそれ以外の領域を抽出するのと比べていい結果でるんだろうか?と思ったヨ。

TってPerl派なのかな

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

募集職種と応募資格

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

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

Algorithm::Cluster

Algorithm::Clusterはちょっと面白そうかな。 まだちゃんといじってないからなんともいえんがexsample動かしてみた限りでは読みやすいし、出力もよさげな感じ。そして、Rを動かすよりも速い気がする。

マニュアルはココとかココ

発現プロファイルとかというよりは、文書中の単語の頻度プロファイルとか比べたりとか、タグを持っている文書群缶の距離を調べてそれを図にしたりとか。まぁそれってPCAでいいような気もするが。

SOMとかk-means clusteringが出来るのも嬉しいかも。あー試してみたい。

うーん。となると、データ収集のためのインフラが欲しいナァ。

マッシュアップって

やっぱ普通にマッシュアップて言われると、こういうのとかこれのA.2みたいなイメージを持つが、IT系だとちょっと定義が違うのね。

マッシュアップ--仮想空間と現実をつなぐ地図 - CNET Japan

テクノロジーの世界では、複数の情報源から提供されるコンテンツを組み合わせているにもかかわらず、ひとつのサービスのように利用することのできるウェブサイトまたはアプリケーションを指す。

こっちの定義だとよくわかる。NCBIのpubmedだってタイトルにアクセスすんのに、javascriptからだとへんな検索しないといけないし、LWPなんかでGETしてきたhtmlはXML::DOMで構文解析できないから正規表現使ってみたりとか、なんかと組み合わせたいと思っても色々やらなきゃいけない裏方仕事が多すぎ。eutil使うにしても、サービスとかとしてなんも考えんで使うには使用条件厳しいかなと思うし。

だから、既存のバイオインフォとかケモインフォのデータベースがもうちょい、AWS,del.icoi.us,bloglinesみたいな使いやすいAPIを用意してくれるだけでも、すごく研究の幅が広がるのにナァなんて思ったりはするんだよねぇ。

でも、マッシュアップて言われるとそういう泥臭いとこも含めて僕はマッシュアップなのかなぁって思ってしまうんだよね。だって、再利用されることを意識しながら曲書くひとっておらんだろうから。

と、ここまで書いていてちゃんと認識できたのでOK。つまり感じていた違和感ってここなのね。

Mash upというかresamplingじゃないか?

なる!とか思いつつも、これってサンプリングなだけでは?て思ったり。

[Bioinformatics]統合データベースでもなく、データのjoinでもなく、Mash upする - ichan::Weblog (2006-03-22)

そもそも統合データベースもデータのjoinも、複数のデータベースの情報を組み合せて、新しい生物学的な情報に辿りつきたいという話から生じているはず。それを表す言葉として、Web 2.0 で良く使われている用語 Mash up という単語を使うことを流行らせたい。マッシュアップとは、そもそも2つの音楽をDJが混ぜ合せて、新しいひとつの曲を作りだすというクリエイティブな行為のこと。

二つの曲を混ぜても、上モノちょこっといじったり、ベースライン微妙に付け替えたりとか、盛り上がり以外ミニマルっぽくしてみたりとかはどうかな?クリエィティブっていいうよりはむしろダサげ。

ロングミックスぶちかましてみたり、フミヤチックに原型をとどめぬほど混ぜてみてプレイ全体としてひとつの曲にしてみたりとか竹村延和みたいに紡ぐとかじゃないと面白くないような気がするのは、僕だけなのか?

だから、どっちかっていうとハイファナチックなイメージ

Remixも曲つなげんのもある曲の、(自分にとって)一番クル部分が強調されていればドップリドープに最強なわけで、結局提供者の意図を外れたところに本質があったりするんじゃないかナァと思ったりするわけですヨ。

あーそういえばWJってのもあったっけ。

Bioshell

BioShellはどっちかというとモデリング向けのワンライナー用プログラムですな。

rms,str_calcなどが便利そうだ。

あとgnuplotってpm3dをセットすると綺麗に表現できるのね。知らんかった。

16407320