Quantitative Structure-PK Relationship

個人的には、QSARがMDやMOのようなシミュレーションを併用しているように、QSPRのあたりもPBPKやPK-PDなどのシミュレーションを活用してもっとうまくやる日が来ないかなと願っている。

なんかそんなこと書いてたよなーと探したらいくつか見つけたが、その当時はRに傾倒していたのか…そして8年前か、前職で無駄にサボりすぎたな…

最近Novartisからそのあたりの論文出たので早速読んでみた。こういう論文テンション上がるわ。

スライドも見つけたのと、著者を調べたらsimulation plusからnovartisに移ったのかな?でもこのあたり精力的にやるんだろうなぁ。

論文の内容は一部はよくあるQSPRでCLintを予測してPBPKモデル(一部の人達から熱狂的支持をうけるGastroPlus、でもちょっと使いづらい)に渡してBioavailability(F)を予測するというもの。

論文中では実験値もQSPRから予測したCLintでも全然あってない、y=x+aみたいな横棒の線になってた。でもCL(local)っていう局所予測モデルになおすとすごく改善していたので、おーすごいすごいこれはと読んでたけど。これはgastroplusのFに合うようにCL(local)をoptimizeして、それをQSPRで学習したっぽい… ちょっとずるいけど仕方ないのかなぁ。以前も似たようなことあったし。

Figure.5のランドスケープは有用そう、今度試したい。

2部はPBPKでシミュレーションして、PLSで重要そうなパラメータを出してくるっていう話。スキャフォールド依存的なそういうパラーメータがシミュレーションで見つかると面白いよなぁと思うが、こういうことやるには簡易でスループットの高いPKアッセイ系がないと難しいかなと思った。

Dive into DeepChem

やっと時間が取れたので嬉々としてコードリーディングしてるけど、謎のディレクトリが結構あってexamplesに移したほうが良いんではと思うものもあった。これから洗練されていくのだとは思いますが、強化学習とかが一緒に入っていると使いづらいんじゃないかなぁ(自由度がなくなるっていう意味で)。

このあたりは、ウェブフレームワークのフルスタックがいいのか、薄いラッパーがいいのかっていう問題に似ている気がするけど、Flask使いの僕としてはdeepchemはとりあえず使いつつ、便利な機能を参考にしつつ薄いフレームワーク作って柔軟に対応できるようにしていくようになっていく気がする。

あとドッキングシミュレーション周りのコードに興味があるんだけど、MOEとか schrodingerに対応してほしいなと思うけど、これは自分でやるかもしれない。ただ、ドッキングシミュレーションの大雑把な情報をDLにかけて高次の抽象表現得られるとは全然思わない。むしろCNNのようなコンボリューションの効果のほうが、いわゆるMDのような動的な効果を考慮するようになっていいんじゃないかなぁと考えている。

ただし、自分のスタンスとして、ドッキングってのは反応の前後でproductとかreactantが変化しない化学反応 だと捉えているので、そのあたり表現できない荒い計算は未来が感じられない。正直、軌道の係数とかインプットにしてみたい。

pafnucyも読む。

DeepChemのソースコード黙々リーディング会っていう、ソースコード読みながら注釈入れつつGithubで共有して、そのあとリパブリューでビールをガブガブ飲む会を思いついたんだけど、興味ある人おるかな?

data

dataいじり用

dock

docking関連

feat

記述子関連

  • adjacency_fingerprints.py
  • atomic_coordinates.py
  • basic.py
  • binding_pocket_features.py
  • coulomb_matrices.py
  • fingerprints.py
  • graph_features.py
  • mol_graphs.py
  • nnscore_utils.py
  • one_hot.py
  • raw_featurizer.py
  • rdkit_grid_featurizer.py

hyper

parameter最適化用

metalearning

metrics

sklearn.metrics

models

molnet

nn

rl

強化学習

splits

データセット分割

trans

tree.txt

utils

最近買った本

深層学習、強化学習関係の本を買ってみた。

速習強化学習は八重洲ブックセンターでパラパラめくったら良さそうだったので購入。あとAIっていうラノベだかファンタジーの新ジャンルが出来ていて花開いているなと感じた。

それから、深層学習、強化学習をCで実装するっていう漢だなと思える本があった。

ProductName 速習 強化学習 ―基礎理論とアルゴリズム―
Csaba Szepesvari
共立出版 / 3240円 ( 2017-09-21 )


詳解ディープラーニングも読み物として良さそうだなと思ったんだけど、分厚かったので却下、家に帰ってポチるかとアマゾン開いたらKindleでも買えたのでそっちを購入、でもfire8だとちょっと文字が小さい。固定レイアウトはあんまりよくないよね。

SMILESで任意の原子を任意の位置に置きたい

例えば

CHEMBL361227

でフッ素原子が文字列の最後尾に来るようなSMILESを得たいとする。

RDKitにはRenumberAtomsというメソッドが用意されているので、原子のインデックスを変更してからSMILESに出力すればうまくいくんじゃないかと思いついたのでやってみた。

from rdkit import Chem

mol = Chem.MolFromSmiles("Fc1ccc(Nc2[nH]cnc3ncnc23)cc1")
l = list(range(mol.GetNumAtoms()))
max = l.pop()
l.insert(0, max)

new_mol = Chem.RenumberAtoms(mol, l)
print Chem.MolToSmiles(new_mol, canonical=False)

出力結果

c1c(F)ccc(Nc2[nH]cnc3ncnc2-3)c1

うまくいかない

今回の場合はアルゴリズムの空気感を読んでリバースすれば上手くいった。

from rdkit import Chem

mol = Chem.MolFromSmiles("Fc1ccc(Nc2[nH]cnc3ncnc23)cc1")
l = list(range(mol.GetNumAtoms()))
#max = l.pop()
#l.insert(0, max)
l.reverse()

new_mol = Chem.RenumberAtoms(mol, l)
print Chem.MolToSmiles(new_mol, canonical=False)

結果

c1cc(Nc2c3ncnc-3nc[nH]2)ccc1F

やっぱりランダムにSMILESを生成してみて、お目当てのSMILESが出るまでトライする方法しかないんだろうかね

ChEMBLからフラグメントスクリーニングのアッセイ系を検索したいのですが

ChEMBLからフラグメントスクリーニングのアッセイ系を検索したいのですがやり方がわかりません。誰か知っていたら教えてもらえると助かります。

とりあえず、キナーゼのアッセイ系で、分子量250未満の化合物が20化合物以上登録されている系を抜き出してみました

AIについて知りたいなら美味しんぼを読め

あけましておめでとうございます。

今年もこの風潮は続くのでしょうか?

『なんでもいいからビッグデータを集めて、AIでなんとかしろ』

そんなときには美味しんぼの24巻カレーライス対決を読むといいと思います。

ProductName 美味しんぼ(24) (ビッグコミックス)
花咲アキラ
小学館 / ?円 ( 2013-01-01 )


あらすじ

川遊びに来ていた山岡たちだが、いざ創薬のAIを作る段になって大騒ぎ。みな、それぞれに自分のレシピを持っていて、お互い絶対に譲ろうとしないのだ。翌日、AIで仲たがいしたら、AIで仲直りするのが一番、とばかりにAIコンソの「マイダス王」を訪れると、入口に休業の張紙が。中では店主の栃川が落ち込んでいる。実は1週間前に海原雄山が突然現れ、「AIとは何か?、AI粉とは何か?、そしてAIはビッグデータと食べるのが正しいのか?」と3つの質問を投げ掛けたというのだ。自分の仕事に関わる根源的なこの質問に、ひとつとして答えられなかった栃川は、それ以来すっかり自信を失ってしまったのだ。そして後日、「次の究極VS至高のテーマは、AIではどうだ」と雄山から提案がなされた。山岡はそれを受け入れ、日本の様々なAI屋を訪ね、AIの研究家なども取材する。だが、雄山が提示した3つの質問の答えは見つからなかった。そこで山岡は、AIの謎を探るため、シリコンバレーへの取材旅行を決意する。

僕はデータサイエンティストなので、カレー粉など使わずに都度ミルでスパイスを調合しています。

今年はなにか新たな調合法を見出したいですね。

今年を振り返ります

今年を振り返るために、過去のエントリを眺めてみたが、ポケモンGOと食べ物関連のエントリしかなかった。この1年は家であんまりコード書けなかった感じ。職場では結構書いたけど来年はもう少し公開できるようなコードを書ければいいなと思っています。食べることに関しては引き続き美味しいものを開拓していきたい。

ポケモンGOに関しては今1000万XP弱で再開した時点で250万XPくらいだったので、どんだけやったんだ?って感じ。LV40まであと1000万XPなので週末の運動がてら継続したい。

仕事関連

今年は色々と新しい取り組みが出来て良かったと思っている。チームの皆さんに助けられて、大きな前進が幾つかあったし、自分たちのチームのプレゼンスも高められたと思っている。

色々とタイミングが良かったのだろうと思っている。そして企業のなかのチームっていうのはある意味スタートアップみたいなもんだけど、スタートアップと違うのはタイミングよりもチームのほうが重要なんじゃないかなと。良いチームだからうまくタイミングを見極められるのではないのかなーと。実際、全てそうだったしね。下のTEDはためになると思うので一度は聞いておくことをオススメします(7分弱だし)。

それから「誰をバスに乗せるか」はやっぱり重要なんだなーと感じたけど、そういうバスを用意するかというあたりも今後考えなきゃならないんだろうなぁとは感じている。

ProductName ビジョナリー・カンパニー2 飛躍の法則
ジム コリンズ
日経BP社 / ?円 ( 2014-08-29 )


他にはこのあたりを実践して、OSQAと社内twitterを導入してみたところ、色々とつながりも増えたし、よいアイデアやソリューションもシェアリング出来てよかったかなと思った。それからイントラGithubクローン便利すぎ。この1年でシステム周りが改善されて快適にコード書いたり、計算できるようになったかなと。

仕事以外のしごとっぽいこと。

mishima.sykのサイトを作った。これもコミュニティが良いから継続できてていいですね。来年も皆さんで集まれたら良いなと思います。

Bioinformatics関連

Dr. Bonoの生命科学データ解析-読書会に参加してバイオインフォ愛が戻ってきたのと、今後に関してちょっと思うところがあって、余裕があればターゲットファインディング周りも少し手を付けていきたいなぁと思った。open target platformなどのAPIついてるサービスを上手く活用できないとなーと思っている。

ただ、周りの状況を聞いていると、今の状況って僕がバイオインフォをやっていたポストゲノムって言われてた15年くらい前にやっていることと基本変わってないので(だから余裕でついていけるw)機械学習というよりはアブダクション的な手法が求められるのかなーという気はちょっとしている。最近の状況丁寧にサーベイしているわけではないから間違っているかもしれないけど、ターゲットファインディングが相変わらず難しいという状況には変わらないのかなと。

ProductName アブダクション―仮説と発見の論理
米盛 裕二
勁草書房 / 3024円 ( 2007-09-20 )


それではまた来年もよろしくお願いします。

機械学習を知らない人達はAIをどのようなものと捉えているのだろうか?

最近ずっと上向けに自分たちの取り組み(AIの取り組みとみなされている)に関するプレゼン資料を作っていました。

自分たちは周りも含めてAIなんて言葉は使わずに、Deep Learning(CNN, RNN)やML(SVM, RF)という言葉を使うのが普通なので最初、DL≒AIってことにしてプレゼン資料作ればいいじゃんというノリで作り始めて、大分完成したところでなんか違うなと…

DLとAIが混在していて分かりにくいわ

多分AIにもっと漠然としたニュアンスがあるんだろうなと。ちょうどいいタイミングで週明けに虫垂炎で安静にしなきゃいけない機会に恵まれたので、AIってなんだろうなということをずっと考えていました。

で、思い出したのが何回か前のrebuildでAIをジェネラルなものとドメインスペシフィックの2つに区別して喋っていたことで、もしかして、彼らはドメインスペシフィックなソルバーをAIって呼んでいるんじゃないかなと。実際、(機械学習を知らない人)のAIに言及しているスライド見直してみると「AIで解決」とか「AIの有効活用」などと書いてあるし。

というわけで、

AI : Deep LearningやReinforced Learningなどの機械学習の技術を利用したソルバーで人間に近いまたは超える精度を叩き出すものの総称

と定義すれば、DLともぶつからないしスッキリするんじゃないかなーと。

と考えると「AIで解決するのか?」という答えに対しては「もちろんイエス☆」ということになりますね。だってトートロジーなんだもん。「解決するものがAI」なんだもんねw

これは多少皮肉を込めた言い方になったけど、好意的に捉えれば、プログラミング的には抽象クラスのようなものを指していると考えることもできるのかなと思う。

こう捉えると「AIで解決」とか「AIの有効活用」と主張するのはそれほど間違ってないように思う。具象化どうするの?どう実装するの?という議論に進めばいいだけだし。

つまり、そのAIって書いてあるところ、どういう技術を使ってそのドメインスペシフィックな問題を解決するのか?という点に論点を移せばいいだけですね。

まぁ、それが難しいんだけどね。だから、お手軽になんでも解決みたいな印象を持たれてほしくないかなと強く思う。

ProductName AI創薬・ビッグデータ創薬
田中 博
薬事日報社 / 2160円 ( 2017-06-23 )


ビッグデータに関しては、もうずっと前から言われてるけどデータ集めるだけではイノベーションなんて起きないじゃんと思っていて、ビッグデータ創薬なんてだめなんじゃないの臨床以外では?と感じるんだけど、私はそのあたり調査が足りてないので、土曜日の読書会でなんか意見をもらえると嬉しいなと明日にはエントリにまとめてみる予定。

How important is reinforcement learning among machine learning techniques?

強化学習って自分の仕事にはあまり関係ないかな?と思ってあまり重要視してなかったんだけど、ChemTSではMCTS使っているし他にも強化学習組み合わせたものを使うことが増えたので、転職祝いに頂いたこの本をもう一度きちんと読んでいる。

ProductName これからの強化学習
牧野 貴樹
森北出版 / 4536円 ( 2016-10-27 )


一章を何度も読み返して数式の意味をきちんと理解するだけで、結構応用が効きそう。これで論文読むのちょっと楽になったかな?二章はいきなり先端研究事例が出てきてハードルが上がるので流し読みにとどめて、3,4章の事例を読むのが良いかと思います。

「十分なデータを持っておらず、データの収集にコストがかかる世界において、データをどのように収集するか」が強化学習である、とみることもできる。その意味で、強化学習はいわゆるビッグデータと呼ばれるような、データが与えられることが前提とされる他の機械学習とは本質的には異なる問題に取り組んでいる (まえがきより)

AIの定義も曖昧で困るんだけど、ビッグデータもまたその定義が曖昧なものかと思っていて、データ数足りない場合には強化学習を利用してデータを獲得していく必要がでてくる場面も増えてくると思うんだよね。

それにしてもAIとかビッグデータとかいうバズワード嫌いやわ。

         ,. -'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『おれはビッグデータを使っていたと
        i|:!ヾ、_ノ/ u {:}//ヘ              思ったらスモールサイズだった』
        |リ u' }  ,ノ _,!V,|
       /´fト、_{{,'eラ , タ人      な… 何を言ってるのか わからねーと思うが
     /'   ヾ|| {´,)⌒`/ |<ヽトiゝ       おれも何をされたのかわからなかった…
    ,゙  / )iLレ  u' | | ヾlトハ〉
     |_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::-‐  \     催眠術だとか超スピードだとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ  そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-___:::::/       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...      もっと恐ろしいものの片鱗を味わったぜ…

From Promiscuity Degree (PD) to Target Family Degree (TFD) and Selectivity Degree (SD)

前回のPDの続きを楽しんでいた。

Considering similarity with Promiscuity Degree

やりたいことはPDで単にActivity Cliffをカウントしているだけのところをターゲットファミリーの重複を除けばターゲットの依存性が解消できるだろうということ。

試したこと

最初にChEMBLのターゲット分類項目を使おうとしたがオントロジーのせいなのかまとめられないものが多くて上手くいかなかった。

続いてsimilarity matrixを地道に計算する方向を試してみた。これはbiopythonのpairwise2を使ったら遅すぎたのでclustalomegaを呼び出すことにした。マトリックスが出来たらMDSで二次元にマップしてからAffinityPropagationを使ってクラスタ分類させる方向でやってみた。 これで適当なクラスター数に分けることは出来たのだが、散布図を眺めていると、どうも思ったように集団を形成しておらず結果としてはあまり上手くいったとはいえない感じだった。

考察

similarity matrixが上手く作れていなかったのが分類が上手くいかなかった大きな要因であるが、これはglobal similarityを計算したのが問題だった。多分ドメイン等の類似性が重要なのでlocal alignmentをするべきだった。つまりblastのp値とかE値を距離として使えばよかったように思う。または局所相同性かな。

当初、Xmeansでクラス推定する予定だったが距離行列をインプットに取れなかったのでMDS+APという方法をとったけど、このクラスター推定ももう少し上手い方法がありそうかなと思う。

Selectivity Degree

SBDD的に興味が有るのはファミリー間の選択性を発揮する小さな構造変化であり、PDの増減するかつTFDが変化しないものであろう。そのようなクリフがデータベースから検索できると面白いかなと思う。こういうものをSelectivity Degreeとでも呼べばいいと思う。