その昔ゲノム創薬バブルというものがありまして…

ググってもあんま出てこないのでメモっておきます。蛋白質核酸酵素のバックナンバーの2000年あたりの総説を眺めればその当時の状況が少しわかるかもしれません。

私が前の会社に入社したころ、ちょうどヒトゲノムが解読終了するってあたりで、バイオインフォ等のIT技術に対する期待感の高まりというのが凄かったわけです。バイオインフォの部署もポコポコ出来たし、そのあたりへの投資も凄かったように思う。だってセレラ・ジェノミクスのヒトゲノムデータアクセス費用ってビビる額だったのに中小企業のファーマでもアクセスするための投資をすべきかって本気で考えてたくらい。

冷静に考えるとみんな頭湧いてたな…w

あとゲノムデータとか使うからストレージサーバーの増強とか普通にやってたよね。クラスタくんだり、グリッド・コンピューティングもあったな。

その当時にゲノム創薬に期待されていたのは

  • 新薬開発期間の短縮(ITとかも駆使して)
  • 創薬ターゲットの増大(ITとかも駆使して)

あたりが、すっごい言われてたと思うんだけど(たんぱく3000プロジェクトもあったし)、

  • なんで現在、創薬ターゲットの枯渇とか言われてんの?
  • 新薬開発期間が短縮しましたっていうレポート出てないのはなんで?
  • 企業のバイオインフォ部署が縮小されたり消滅した会社も結構あると思うんだけど

各社あの頃の投資に対してどういう評価をしたんだろう?そのうえでどういうスタンス、期待感で今の機械学習ブームに乗っかっていくのか非常に興味があるんですよねー。

深層生成モデルを創薬に適用できるかどうか?

深層生成モデルとかでSMILESをいじってそれっぽい構造を発生させるのが流行っているようですが。

そもそも構造を自動生成しようとする試みは、かなり昔からあって、SBDD的なアプローチ(レイチェルだっけ?開発者が娘の名前を付けたって言ってたのは覚えているが)したり、生物学的等価性やSMARTSを使った方法とか、ちょっと前だとMMPを使った置換ルールを自動アプライする方法とかまぁ普通にあるわけです。特にMMPを使った方法は自社のデータベースから置換ルールを抽出してくるのでメドケム知識の再利用としても意味があると思う。

しかし、これらの方法論は

  • 明らかに合成できない構造を提示してくる
  • ドラッグライクでない構造が多すぎて、マニュアルフィルタリングが大変すぎる

という問題があることが知られている。深層生成モデルとかでSMILESをいじる方法もおそらく一緒で、じゃぁ何が優れているんだ?という疑問から今までスルーしていた。画像生成は夢があるけど、SMILES生成は「ふーん、で?」っていう気持ち。あとはSMILESいじりはケミストリー的な文脈を読まないのでマジックメチル等の構造変化要因みたいな部分を全く考慮できないから、メディシナルケミストの代わりになんかなれないなと思っている。

それから、そもそも提案した化合物をどうやって作るんだ?という大きな問題がある。分子設計やっていて一番めんどくさいのがこの部分だからね。逆に言うとこの部分なんとかなるなら生成モデルはちょっと魅力はあると思っている。

というわけで、次回のMishima.sykでは「SMILES生成モデルを使ってみた」的な発表をしてみようかなと思っているけど、MBAでトレーニングしたら唸りをあげる割には全然学習が進まないので凹んでいる。

ChEMBL23導入備忘録

ChEMBL 23がリリースされたのでMBAに入れておこうかなとしたら、psqlがreadline絡みのエラーで壊れていたのでpostgresを再インストールした。それからchemblのダンプファイルのrestoreのやり方がちょっと変更になっていたので備忘録

postgresqlをbrewで入れ直す

最後の三行は適当。--forceで警告が出たから打ってみた。

brew uninstall postgres
brew install postgres
brew link postgres --force
brew unlink postgresql
brew link --overwrite postgresql

ChEMBL23をpostgresに入れる

ダンプファイルをダウンロードしたら解凍して

createdb chembl_23
psql -l
pg_restore -d chembl_23 chembl_23_postgresql.dmp

こんな感じで更新できた。

ProductName We Are Virtual
Xilent
Audioporn Records / ?円 ( 2015-10-16 )


Machine Learnig Aided Drug Design (MLADD)

Mishima.sykに参加された皆様お疲れ様でした。深層学習のフレームワークのハンズオン如何でしたでしょうか?次回に何をやるかは未定ですが、反省会という名の(新年会?忘年会?)でテーマに関して話し合う予定なので興味ある内容があれば私まで伝えてもらえるとありがたいです。

僕はkerasを触ったことがなかったので、一通り学べて助かりました。tf.contribe.learnはできるだけ何も考えなくていいように作っているのに対してkerasはもうちょっと構築の仕組みを楽にする感じのフレームワークかなぁと。tflearn](https://github.com/tflearn/tflearn)と似たものを感じた。

尚、当日の資料とデータはGitHubにあるので必要に応じてダウンロードするなり好きに使ってください。尚slideshareを使わないのは今の職場が何故かブロックしているからですw

ここからは、最近ちょっと考えていることをだらっと書いておきます。

その昔(というか今も)CADD(Computer Aided Drug Design)という言葉はあるのだが、あれはコンピューターを利用して解析をするオペレーター(モデラーともいう)のヒトと、実際に合成するケミストがいるので、主観のぶつかり合いというか、お互いの経験による解釈の違いというのが起こりやすい。あとは精度がそんなに良くないので確度を考慮しながら結果を解釈する必要があったりして色々面倒事が多い。

最近、DeepLearningのようなそこそこ精度の高い手法を淡々と自動的に構造最適化プロジェクトに適用するような環境を作ったらどういうことが起こるのだろうか?というあたりに興味が湧いている。機械学習はヒトの解釈の余地が入らないので淡々と受け止めるしかなく、それをどう使うかというのはどちらかというとケミストに委ねられるようになるし、モデラーにとってもそれ以上の何かを出さないと存在価値がないという状況になるのかなーとか思ったり。

将棋ウォーズで常に棋神がガイドしてくれる感じに近いのかなぁ。

pychembldbでアッセイ数の多いJ.M.C由来のデータを抜き出す

土曜のテスト用データになんかないかなーと探してたのだけど、ChEMBLのサイトではアッセイ数とかでフィルタリングができなかったので。

from pychembldb import *
for assay in chembldb.query(Assay).all():
    if assay.doc.journal == "J. Med. Chem.":
        act_num = len(assay.activities)
        if act_num > 100:
            print act_num, assay.chembl_id, assay.description

これだと効率が悪いのでものすごい時間かかるけど、一回流すだけだからまぁいいやと。

pychembldbで活性値付きのSDFをつくる

次回のMishima.sykまで2週間を切りました。そろそろハンズオンの準備を開始しています。

尚、ハンズオンでは作業環境を揃えるために事前準備が必要なのでよろしくお願いします。一応cloud9でもいけるように用意しているそうなのでネットに繋げさえすればOKみたいですが。

さて、ハンズオンのためにサンプルデータを選ばなきゃいけないんだけど、ChEMBLからアッセイ系選んで含まれている全ての化合物情報をsdfでダウンロードしたけど属性に活性値が付いてなかった。

アレレのレですよ。

なんかやり方あると思うんだけど、とりあえずはpychembldbで活性値付きのsdfを出力するようなものを作った。しかも自分の中で最近ブームが来まくり100%中の100%なclickを使ってコマンドにしてみた。

from rdkit import Chem
from pychembldb import *
import click

@click.command()
@click.argument("chembl_id")
def chemblid2sdf(chembl_id):
    assay = chembldb.query(Assay).filter_by(chembl_id=chembl_id).first()
    w = Chem.SDWriter("{}.sdf".format(chembl_id))
    for activity in assay.activities:
        m = Chem.MolFromMolBlock(activity.compound.molecule.structure.molfile)
        act = activity.standard_value
        m.SetProp("ACTIVITY", str(act))
        w.write(m)

if __name__ == '__main__':
    chemblid2sdf()

尚、幽遊白書コラボでモンストに戻ってみたけど、持てる(無料)オーブの全てをつぎ込んだけど、ガチャは飛影しか出ないし戸愚呂100%中の100%は3ステージくらいまでしか進めないしで心が折れた。

心が折れたといえば、ポケモンGoも寒すぎて歩く気力も削がれた上にレベル31で飽きが来た。メタモンは取ったけど…

次回のMishima.sykは1210@沼津(前回と同じ場所)です

次回の日程と内容が大体決まりました。

今回はみんな大好きディープラーニングライブラリのTensorflowとkerasのハンズオンをすることにしました。

尚、お昼ガイドに載っている店ですが、朝早くこれるなら山正がおすすめです。一度くらいは並んでも食べに行く価値はあるかと思う。

僕は会場予約のついでに、リストの中で行ったことのない千楽北口に行ってみた。

1476092766

カレーは洋食のカレーって感じで甘酸っぱ目のドロッとしたカレーです。でもカツが恐ろしい量なのであった。カレーが650円でカツカレーが1350円なのが納得というか、トンカツ厚すぎ… 満腹になるので気をつけたほうがいいかも。

あと、カレーの味から判断するに、カツハヤシのほうが満足感が高いかもしれない。

京都で研究室出身者の講演会

土曜日は研究室出身者の集いみたいなのがあって参加してきた。下っ端なので気疲れはするけど楽しいし非常に勉強になった。皆さん活躍されているようで、スゲーって言うような仕事をしている方が何人もいて話していて刺激を受けた。僕も頑張らないとなーと思った。

Kさんのディープラーニング系の話で「ニューラルネットワークは結局脳の模倣だから、脳の理解つまり人間のシミュレーションの方向に進んでるとも言える。だから精度の良し悪しだけじゃなくそういった点も踏み込んでいくべき」みたいなことをおっしゃっていて、なるほどと思った。

機械学習ばかりやっている身だと精度のほうに気持ちが行っちゃうけど、もっと本質を追いかける必要はあるよなぁと改めて感じた。そして画像認識なんかは確かに人間の視覚情報処理の模倣とシステムの理解ということになるんだけど、僕が取り組んでいる創薬系でのDLは分子認識というタンパク質が低分子化合物を認識するというシステムの理解だからやっぱり、CNNとはまた違ったアーキテクチャを考え出すのと同時に、入力をどうするか(化合物の正しい入力表現)を考え出す必要はあるよなぁと感じたわけです。

あとは相変わらずN先生は頭良すぎて、さっぱり理解できんかったが、曰く「MO法は行き過ぎた理論」は名言だと思った。あんなに遠くまでデローカライズするようなMOというモデルは化学に沿っていないみたいなことを言っていて、ほうほうと思いながら聞いていた。隣の先輩に「僕もFMOを製薬業界に根付かせたいんですよねー」みたいなことをぼそっと言ったら「お前、そんな危険なチャレンジするのか!怒られるかもよ!!!」と返されたw N先生、何故かFMO大嫌いなんだよねー。FMOなんてMOがデローカライズそんなにしないからっていう経験則で分子を細切れにする方法論だから、「MO法は行き過ぎた理論」っていう考え方を取り入れて実務的に上手くやっている方法だと思うんだけどなぁ。今度どこが問題なのか聞いてみたい。

行きの新幹線の中で読んだ瀬尾まいこ

1475480217

お昼は、高倉二条で蕎麦っぽいラーメンを食べてきた。酸味強め。つけ麺のほうが正解だったのか? わからん。

1475480219 1475480221

同窓会の懇親会。色々出てきて軽食をイメージしてたから面食らった。量も多くて途中でギブしたw

1475480224 1475480226

尚、楽友会館は学生時代住んでいたとこの近所だったので、懐かしさ倍増w

1475480228

帰りに三条をぶらっと歩いてたら立ち飲みっぽいところがあったので入った。

1475480233

ねぎ焼きってほんとにネギしか入ってなくてつまみにちょうどいい。生ビールも自分で入れる方式で外人の旅行者には受けるらしい。二階が民泊になっているらしく外人率が高かったが、フレンドリーな雰囲気の店で楽しかった。

それから、店員さんが高速バスの運転手もやっているらしく、御殿場の方まで行くことがあったらしく。地元ネタとかバスネタが聞けて楽しかった。

1475480231

二日目は京都産ポケモンが少し欲しくて(今のバージョンはどこで取ったかが記録されるので、京都産10Kたまごが欲しかったw)祇園に鯖寿司を調達しに行くついでにイワークの巣となっているらしい丸山公園で一狩りしてきた。

が、暑すぎてとっとと退散w ハガネールに進化できるようになってから改めてイワーク狩りすればいいやw

疲れたので、おかるであんかけうどん。

とろみが葛かな? うまい、最高。

1475480235 1475480238

なんとなくよさげなラベルの日本酒を抱えて帰宅。

1475480240

楽しかったのもあるけど、やはりすごく勉強になったなぁと思う。

Bag of Fragments(BoF)を超えろ

先日Deep Learning創薬の駄文をのせてみたが、

深いニューラルネットワークで特徴抽出っていうのが、chemoinformaticsの文脈だと「フラグメントからファーマコフフォア構築」というのはその通りだと思うんだけど、それがBoW的なECFP4みたいなフィンガープリントでいいのだろうか?pharmacophoreとかCoMFA,CoMSIAみたいな表現に向かうような記述子で出発しないといけないんじゃないかなーと思う

以前@iwatobipenが触れていたNeuralFingerPrintもECFPの特徴抽出プロセスと類似の方法で距離を考慮してないからファーマコフォアにはいたらないと思う。精度がいいのは分散表現のところではないかなぁと思っている(つまり以下の説明)。

Standard fingerprints encode each possible fragment completely distinctly, with no notion of similarity between fragments. In contrast, each feature of a neural graph fingerprint can be activated by similar but distinct molecular fragments, making the feature representation more meaningful.

実際溶解性みたいな分子全体の特徴が重要な場合の予測は非常に改善されているが、薬理活性みたいな分子認識が重要なファクターになっているものはあんまり改善してないように思う。GitHubに実装があるし、精度もいいから予測モデル作る場合にはこれを使うけどね。

ここらへんも似た感じだと思う。如何にもトキシコフォアとかファーマコフォアが学習されるようなFigureが載ってるけど、Catalystとか使ってファーマコフォアモデルを組み立てたり、ドッキングシミュレーションをやりまくった経験からはこれは誤解されそうな説明だなぁと思った。

で本題。最近Molecular Graph Convolutions: Moving Beyond Fingerprintsという意欲作を読んで感動した。

ここまで書いたら中身の説明を書くのに疲れちゃったので興味のある方は是非読みましょう。著者もGoogleとStanfordの人だし、pubmedで出てこなかったらノーマークだったわ。

化合物(グラフとしての)の不変性を獲得するようなCNNのやり方参考になったがプーリングがsumっていうのがそれでいいのかなぁと思った。

f is a learned linear operator with a rectified linear activation function and g is a sum.

ファーマコフォアが記述できるようなDNNの方法ができれば、精度上がるだろうから、測定データさえ増やせるのなら有望じゃないかと思う。

さらにその結果からドッキングシミュレーションの評価関数を作れるだろうから、それを使ってリードホッピングにトライしてもいいから夢が広がる。

ドッキングの精度が高ければモデルでFMO実行してもそれなりに正しそうな結果が出るだろうから、結晶に頼らなくてもモデリングでいけそうだしな。

PyData2016で Deep Learning for QSARという発表があった

slideもあったけど肝心な部分が抜けているので動画を見たほうが面白いです。

10分ぐらい

部分構造の高次表現としてpharmacophoreとして記述されるみたいな感じのスライドがあったけどpharmacophoreは特徴間の距離が非常に重要なのでBoW的な特徴ベクトルでは表現出来ないと思う。n-gram的な考え方を取り入れないと難しいと思っている。でもそれって5-10word離れている単語の関係を評価していくってことだからコスト高なんだよね

22分くらい

chemoinformaticsで目玉焼き


深いニューラルネットワークで特徴抽出っていうのが、chemoinformaticsの文脈だと「フラグメントからファーマコフフォア構築」というのはその通りだと思うんだけど、それがBoW的なECFP4みたいなフィンガープリントでいいのだろうか?pharmacophoreとかCoMFA,CoMSIAみたいな表現に向かうような記述子で出発しないといけないんじゃないかなーと思う。

あとタンパク質とリガンドの相互作用、特に電荷の移動という特徴を持たせられないのも今の記述子の問題ではあると思う。

画像認識と分子認識は色々違うからね。