機械学習を生命科学に使う

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

夕方ポケモンしながら今年の抱負を考えていたのだが、とりあえず今年はchemoinformatics本を出版したいところ。あとはマネジメントに忙殺されないでコード書いたりできるような余裕を作れるようにしたい。そして今年もアジェンダのない会議には絶対に出ないという信念を継続させるw

ところで、元旦から実験医学増刊を読んでいた。仕事から離れて本を読めるなんて快適。在宅になって常に仕事をしている状態になっていたので、定期的に長期休暇を取って強制的に会社を切断しないといけないなと感じた。

深層学習の説明とか初心者にとってはいいのだろうけど、別冊なのでわかっている前提で組んでもよかったのではないだろうかと思うけど。個人的にはscRNA-seqの話は大変参考になった。それからレパトア解析と弱教師あり学習の章は面白かった。

それからこの本半分くらいしか読んでないけど、かなり面白いです。全部読んだらもう少し丁寧に感想を残すかもしれない。

ProductName 英文法の鬼100則 (アスカカルチャー)
明日香出版社 / ¥1,980 (2019-11-14)

Looking Back 2020

去年の振り返りはこちら。今年は色々あった気がする。特に後半は常にいいことと悪いことがセットでやってきて トータルちょっといい みたいな感じがデフォルトになってしまったので、まぁそういうもんかなと思うことにした。

仕事関連

組織とチームが大きく変わった。今まではcomputer chemistryのチームとして合成部門の中で適当に成果を追求していれば良かった、つまり、メディシナルケミストとしてプロジェクトにどう関わっていけばいいかを考えていれば良かったのだけど、上司も変わって、bioinformaticsのチームもマージされて幅広くマネジメントしなければいけなくなり苦労した。特に、Lead FindingとかLead Optimizationだけでなく5RでいうところのRight Target, Right Patientも担当範囲になったのでなかなか大変な一年であった。とはいえ、computer chemistryチームはプロアクティブに動けるメンバーばかりだったので相当助かった。新しく一緒に働くことになったbioinformaticsのチームはモチベーション高いし、薬理学の知識は十分あるので方向だけ揃えればとりあえずうまく成果がでそうなので良かったが、来年はもう少しBioinformaticsのコード書くスキルを上げていってなにか新しいことをやりたい。コンピューターサイエンティストはコードに自分の新しいアイデア込めてなんぼやしね。

それから、夏前にcomputer chemistryのチームに日本語をほとんど話せないインド人の方がジョインした関係でチームの共用語が英語に切り替わった。企業年金とかコンプライアンス教育とか賃金制度とかそういった日本語の文書を英語で説明しないといけなくて、どうすんのこれ?と思ったけど意外と慣れたw。それから彼はアカデミアからの転職なので色々刺激を受けているし彼のpaperworkにかける思いは非常に強くて「やっぱ論文書かないとなー」という気分にさせられる。

ちなみに、英語で表現できなくてもどかしい思いをするのはなぜかと考えた場合に、一番大きいのは使えるverbが少ないなーとかいうことかなと思ったので使えるverbを増やすようにしている。グラマーもっとちゃんと勉強しないとあかんなという気持ちになるのも良かったけどもSとOはなんとなく表現できるしな。以下の本は役に立った。

ProductName 外資系1年目のための英語の教科書
KADOKAWA / ¥2,079 (2020-03-14)

今年は低分子以外のモダリティに関してもSBDDで成果を出したし、X線結晶構造やクライオ電顕によらないSBDDにもチャレンジしたし、来年も引き続きSBDD力を高めていきたい。そしてcomputer chemistryとbioinformaticsのチームにもう少し人を増やしたいと思っている。

仕事以外

前述したようにうちのチームにジョインしたインド人の方が南インドの出身なので、そのあたりの食べ物に関してネホリンハホリンしたため南インド力(食)が向上した。それから色々本場のスパイスミックスを頂いたので新しい料理や調理法などを色々覚えた。コロナが落ち着いたらインドに舌の修行にでかけたいところ。

それから在宅勤務がデフォルトになったおかげで毎日ぬか床をかき混ぜる余裕を持てて、今年はぬか床と年を越せたのは嬉しい。来年はもう少しいい感じに漬けられるように精進したい。

他にはホームメードベーカリーのコネ機能を使えばラーメンの手打ちが簡単にできることに気づいて、パスタマシンを併用してラーメン作りが本格化したことか。加えてリパブリューの店長にラーメン指南を受けているし、静岡のエンジニアはカレーとラーメン作れてなんぼっていう風潮が出来上がっているっぽいのでこちらも精進必須ですな。というより、静岡のエンジニア界隈はいつも仲良くやれていて良いですね、素晴らしい。

悲しみとしてはmacのOSをアップグレードしたらTraktor Kontrol S4が動かんようになってしまったことでmk3買うかどうか本当に悩んでいる。

今年はコードを書く暇が殆どなかったのも振り返ってみると大変残念なことであったので、来年はもう少し書けるように工夫するというか書く。書かないといいアイデアも浮かばないし、ネタとして発表も出来なくて悲しい。

海外に遊びに行けなかったのは辛かった。かろうじてホーチミンに行けてラッキーだったがその後に予定していた台湾、バンコク、モントリオール、スペインは無理であった。

多分来年も似たような感じだろうから、沖縄にいってやちむん爆買したい。

生成モデルを使って何するの?

生成モデルを使ってより良い化合物提案を効率的に行うアプローチが今年もいくつも提案されています(新しいかどうかは別にして)。

最近だと、2017年に提案されたREINVENTのスコア関数を工夫し、ここにファーマコアを使うというものが出ています。

REINVENTは強化学習で方策をかえるやつだから、スコア関数だけ工夫をすれば色々出来て楽しいけど、実際のプロジェクトで成果を出そうと思うとセンスを問われますね。それから、せっかくファーマコフォアを使っているのだから多様なスキャフォールドを提案してきてほしいけど、REINVENTだとなかなか難しそうに感じるのだけどそのあたりどうなんでしょう?単に化合物ライブラリをファーマコフォアでヴァーチャルスクリーニングかけるほうが良い結果を得られるような気がします。

自分がこの手法に期待するとすれば、 市販化合物に存在せず、かつ合成可能であり、ファーマコフォアを満たす新規な化合物の提案 ということになるのかなと。

もう一つちょっと前にpublishされたのがVAEを使ったもので、ドッキングシミュレーションのスコア関数をたよりに潜在空間を探索するもの(多分、アブストしか読んでない)

ちなみにREINVENTのスコアにドッキングスコアを放り込む方法が既に提案されています。

ただ、ドッキングスコア自体がかなり荒い評価関数なのと、ドッキングポーズの推定がそもそもあまり精度が高くないのでまずはドッキングシミュレーションの精度を上げるほうが先に成すべきことなんではなかろうかと思ってしまいます。

個人的にはLead Optimizationのような骨格を決めてその周辺を探っていくようなフェーズではREINVENT使ってプロジェクトにあわせてスコア関数を工夫すればいいと思っているけど、それよりも前のフェーズで構造に多様性を求めたいフェーズでは潜在空間探索させるのがよいかなーと思っているのでVAE+SELFIESの組み合わせはかなり興味があります。こっちも工夫のしがいが沢山ありますしね。

最近読んだ本

PerlとHaskell使いにはおなじみのオードリー・タン

ProductName オードリー・タン デジタルとAIの未来を語る
プレジデント社 / ¥1,980 (2020-11-29)

Rebuildのこの回を聞くのも良いでしょう

以下は速読用

最初の本は結構読みづらかった(いいことはちょいちょい書いてあったが)

ProductName フェイスブック流 最強の上司
マガジンハウス / ¥1,760 (2020-09-17)

SDGsは難しいよね、、、

ProductName Q&A SDGs経営
日本経済新聞出版 / ¥1,650 (2019-10-18)

静岡東部ははラブライブサンシャインとKNIMEの聖地

この記事は創薬 (dry) Advent Calendar 2020の24日目の記事です。

ラブライブサンシャインとKNIMEに関してはみなさんご存知だと思うので詳しい説明は省きますが、 もしKNIMEについてよく知らない方はt_kahi’s blogをチェックして、ラブライブサンシャインを知らない人は、今すぐNetflixを購読して呪術廻戦魔女の旅々を見てください。

今回は、KNIMEのワークフローを一元管理して共有するWebアプリケーションを作ったときの経緯を書いておきます。

そもそも、Mishima.syk #14@t_kahiがKNIMEの話をしたときにうちの会社は共有システム作ったよっていう話をしていて、それを聞いた他社の人が「うちの会社にも欲しいわ」って言ったから「じゃぁ、OSSの作るわ」っていう流れで始まった気がします。

そんで、2週間後くらいにSpotfireのユーザー会に参加しなきゃいけなかったんで、行きの新幹線でコード大体書いてたみたい。GiteaのKNIME版を意識してたからknimeaとかいう仮の名前をつけていた気がします。

一応、UGM中につくり終えたみたいですね。

その後UGMは楽しく終わったんだけど、ちょうど超大型台風が接近していて帰りの新幹線が止まっていたので、東京駅のプラットフォームでみんなで二次会してましたw そういえば@iwatobipen先生はいたようないないような、、、記憶があやふやですw

色々と(飲みながら)雑談していたら、KNIMEの話になって@bonohuがKNIMEのアナグラムが金目鯛になることを発見して、その後すぐに@t_kahiがフリーの金目鯛アイコンを探し出してくれて、無事に公開することができたと。 これがKNIMEのシンボルが金目鯛、そして聖地が静岡東部になった瞬間です

というわけで皆さん使ってみてください。コロナが落ち着いたら、みんなで東伊豆に集まって金目鯛をつつきながらKNIMEハンズオンでもしましょう(聖地巡礼)。

最後にいつもキャッキャウフフできるような環境を維持していてくれるMishima.sykに参加してくれているみなさんに感謝です。

ついでにキャッキャウフフしたい人も探していますので是非私まで。

DeepInsightでちょっとよくわからないことのメモ

人工知能でゲノミクスをというプレスリリースでちょっとよくわからないことがあるのでメモ

最後の方の「図1 変数ベクトルxを変換Tで行列に変換する全体像と変換の具体的な手順」のところで1-aの具体的な手順としてtSNE/kPCAが提案されているが、これがよく理解できていない。

例えば化合物ライブラリの例だとそれぞれの化合物は2048次元の特徴ベクトル(フィンガープリント)を持つ。ただし二次元空間にマップされるのはそれぞれの化合物であって特徴(feature)ではない。

1-bで特徴がマップされるためには特徴自体が多次元ベクトルを持つ必要がある。同僚にN回測定のサンプルなんじゃないの?って言われたけど、それだったら平均とって終わりじゃない?ってことになった。

仮にGeneをマップしようとするばあいnサンプルを転置してベクトルにすればいいけどその場合は「訓練」「バリデーション」「テスト」にそれぞれtSNE画像ができてよくわからんことになる。

それから200x200の画像に変換するってあるんだけどデータの遺伝子が60483あるので、ピクセルに一つ一つに対応させても2万遺伝子くらいあふれるよなーと。黒く塗り潰されるか遺伝子の位置が重なって情報欠損すると思うんだけどそのあたりもよくわからん。

実装眺めるしかないなーとCode AvailabilityからURLたどって探したんだけど見つけることができなかった。

追記: コードがダウンロードできました 2019.08.09

http://www.alok-ai-lab.com/materials.php

のDeepInsight Package DeepInsight_Pkg.tar.gzだそうです。

実装はMatlabだったので手元で動かすことはできませんが、コードを読んでみました。

Cart2Pixel.mの3行目

% Q.data should be in no_of_genes x no_of_samples format

で、実際に50行目あたりで

Y=tsne(Q.data,'Algorithm','exact','Distance',Q.Dist);

となっているのでやっぱりtSNEのドットはサンプルか(転置した場合)遺伝子を表現していていて、「訓練」「バリデーション」「テスト」にそれぞれtSNE画像ができるような気がします。

2020.12.19 追記

videoとコードを読んで理解した。

まずfeature vectorを転置すれば確かに良かった。1-bのそれぞれのドットが特徴のデカルト座標を表すことになるということは理解した。ただし、その後のピクセル化はちょっと恣意的に選び過ぎな気がするというか精度がそのプロセスに依存するような気がする。

遺伝子発現の場合、似たような発現プロファイルの遺伝子(特徴)を集めるという教師なし学習を予めおこなっておいて、その結果にCNNをおこなうってことの意味がまだ良くわかっていない。これでいいんだったらNMFで得られたメタ遺伝子を使ったモデル学習でもよろしいような気がするが?

Enjoy Currying

この記事はCurry Advent Calendar 2020の13日目の記事です。しらんけど。

ルーを使わないスパイスのカレーつくるだけならそれほど手間がかからないのだけど、意外と知らない人が多いようなので今回は啓蒙も兼ねてエントリーを書いてみます。材料の入手方法からだけど大体アマゾンでOK。

スパイス

使うのは、クミンシード、コリアンダーパウダー、ターメリック、カイエンペッパー(チリパウダー)の4種類あれば良いです。

継続するかどうか不安な方はとりあえずセットのやつを手に入れればいいと思います。

ライス

ライスはバスマティライスです。インド人の同僚もこれを薦めていたので間違いないと思います。茹で方はショートパスタとほとんど同じで、日本の米を炊くより楽ちんです。10分茹でて湯切りして鍋に戻して放置と決めているので一度やったら忘れません。

その他用意するもの

後は鶏もも肉、玉ねぎ、トマト、ニンニク、生姜を用意すればよいです。

ニンニク、しょうがはめんどくさいときはチューブのやつをつかうので、チューブを買ってストックしてありますが、初めて作るときは感動が少し減るので、フレッシュなやつを愛情込めてみじん切りにするなりおろすなりするとよいでしょう。

トマトはフレッシュでも水煮でも良いですが、イタリアのトマトは味が濃すぎるというかすっぱすぎるのでそのあたり注意したほうが良いです。私はストックしておきたいのと、缶だと捨てるのがめんどいという理由で紙パックのトマト水煮を家に沢山ストックしてあります。

作り方

この通りにやりましょう。足りないスパイスは無視でよいです。

書籍としては渡辺玲先生のこれがよいです。

ジャガイモが入ってねーぞっていう人はアルゴビを一緒に作っておけば良いんじゃないでしょうか?

この素晴らしい創薬プロジェクトに祝福を!

この記事は創薬 (dry) Advent Calendar 2020の9日目の記事です。

まずは10年前に書いた駄文を見てください(p.12)。

というわけで、最近やっと、創薬用のイシュー管理システムを作って動かし始めました。redmineはタスクの管理色が強くて、イシューの議論にあまり向いてなかったので、GitHubのIssuesを参考に創薬の諸問題に関して十分に議論を積み重ねることができるように工夫したものをスクラッチから作っています。実物を見せられないのが残念ですが、ジャガーでいうところのニャンピョウみたいな感じなのでそこは想像で補ってください。

あとはメディシナルケミストの生産性の見える化のために、MMPをベースとした化合物構造の差分管理システムなどがあれば良いと思うのだけどそのあたりは誰か別の人が考えるでしょう。

が、興味があればQuantifying, Visualizing, and Monitoring Lead Optimizationなどを読むことをおすすめします。今どきだったら、このあたりのメトリクスと構造生成器をうまく組み合わせて創薬プロジェクトのスピードアップをはかるのがイケてるやり方なのかなと思います。

より良く働くためのワークマネージメント

Asanaというタスク管理ツールの紹介がメインの本

1,2章は一般論なので面白かった。

ワークマネージメントで誰が何をしないといけないか明確にする

  • ビジネスの目標を設定する
  • 目標達成のために必要な仕事を設定する
  • 誰が担当し、いつまでにやるのかを設定する
  • それぞれの権限と責任範囲を設定する

とあるが、このあたりはredmineでもできるはず。

  • Asanaを使うと自然に報連相ができてしまう
  • Toに二人以上いれると誰からも返信がこない

ダッシュボードとかが良くできているような気がした。

Mishima.syk #16やりました

Mishima.syk #16に参加された皆様お疲れさまでした。オンラインでも楽しくやれるということがわかってよかったです。またDiscordを使った懇親会も入れてみましたが、結局2200くらいまでの5時間近く雑談できていたので次回もこの方式でやろうと思いました。

14ヶ月ぶりの開催と言われて「あれ、そうだっけ?」となりましたが、調べたら正しかったので、コロナの影響が結構大きかったんだなと改めて気付かされましたね。

どの演題も興味深かったのですが、LTは全部面白かったです。音声認識とラベリングの話と社会人博士課程の話は特に良かったです。それから、Mishima.sykに昔から参加している面子にケモインフォの話をさせると、最初から異次元を目指すので、あまり馴染みのない方にもわかるように丁寧に説明する演題があったのもオンラインで幅広く参加できるようになったおかげかなと思いました。今後も期待しています。

今回の工夫

タイムキーピングをきちんとやった

これまでは、ざっくり時間を決めて会議室退出時間にぎりぎりまで喋り倒すという流れだったのをきちんと時間通りに終わるようにしてみたけど、これは良かったです。

Discordを併用した

ZoomのほかにDiscordを併用し、すべての発表者のチャンネルを作って質問などはそこに書き込むようにしたおかげで、情報の整理はスッキリできたように思います。ただ、反動としてTwitterの書き込みが極端に減ったので参加者以外には見えなくなったというのはどうなのかな?と。

投げ銭システム採用

Amazonのギフト券サービスを利用した投げ銭システムを採用してみました。これはうまくワークして、次回以降のZoomの利用料金がカバーできるようになったので、また近いうちにオンライン開催したいなと思っています。投げ銭してくれた皆様ありがとうございました。

ニーズの集約

Discordに「今後ききたい内容」を集めるチャンネルを用意してみたのですが、これはあまりうまくいかなかったです。テーマを決めるのは毎回苦労するので、これに関しては引き続き工夫していきたいところ

Discordのボイスチャンネルを使った懇親会

発表者それぞれにDiscordのボイスチャンネルを用意して好きなように集まって雑談できるようにしましたが、これは割とうまくいきました。ただ、特にチャンネル名に意味はなくて、いくつかチャンネルを用意しておくだけでよかったみたいです。