CBIハンズオン(chemoinformatics)のリハをおこないました

CBI年会の初日のチュートリアルセッション(TS03 ケモインフォマティクスハンズオン)のリハをおこないました。

今回は去年のように最終調整を兼ねたリハ兼ビールでも飲んで楽しむというゆるいものではなく、課題の洗い出し兼あと二週間で潰すべきタスクのリストアップに近いような作業でした。なので結構疲れたけど、このタイミングでやっておいて本当に良かったと思いました(やらんかったら、相当グダグダなセッションになっているはず)。

わたしもmac担当として、REINVENT4きちんとインストールできるように試行錯誤したり、maizeがmacでも動くようにプルリク出したりと久々に働きました。

ハンズオンの流れとしては

  1. REINVENT4の転移学習を使ってEGFR阻害剤を生成するような生成モデルを作成
  2. 生成モデルに仮想化合物群を生成させ、Gypsum-DLでSBVSの前処理をおこなう
  3. AutoDock VinaEGFRのキナーゼドメインに対しSBVSを実行し、結果をpymolで確認する
  4. (前処理とSBVSはmaizeというflow based programmingツールを使ってワークフロー化します)

という中級以上向けの攻めた内容になっていると思います。ちなみに、チュートリアルセッションは定員に達したそうで参加したい方はキャンセル待ちになるのではないでしょうか?

終了後にビールを飲みました(お約束)が、やはり来年以降はRDKitUGMJPの資金を調達しながら、ボランティアでやっているモデレーターにとってもwin-winになるような仕組みを考えたいなーと思いました。

Running REINVENT4 on the M3 chip

As it could not be installed with the original requirements, I modified it and uploaded it to the Mishima-syk repository.

$ git clone https://github.com/Mishima-syk/REINVENT4.git
$ cd REINVENT4
$ conda create --name reinvent4 python=3.11
$ conda activate reinvent4
$ pip install -r requirements-macOS.lock
$ pip install --no-deps .

Now, you can set mps (Metal Performance Shaders) in the device parameter

# mps_sampling.toml
# REINVENT4 TOML input example for sampling
run_type = "sampling"
device = "mps"  # M3 GPU
json_out_config = "_sampling.json"  # write this TOML to JSON

[parameters]

## Reinvent: de novo sampling
model_file = "priors/reinvent.prior"
output_file = 'sampling.csv'  # sampled SMILES and NLL in CSV format
num_smiles = 157  # number of SMILES to be sampled, 1 per input SMILES
unique_molecules = true  # if true remove all duplicatesd canonicalize smiles
randomize_smiles = true # if true shuffle atoms in SMILES randomly

Running the reinvent4 program

$ reinvent -l sampling.log mps_sampling.toml

Mishima.syk #21やります

ちょっと間が空いてしまいましたが、MIshima.syk #21をやります。

発表したい方は早めに時間を取っておいてください(いつも駆け込みでぶっこんでくるので、、、) それからオンラインで参加したい場合には私に連絡をください。zoomのアドレスを送ります。

今回はLLMの話とか、ケモインフォマティクスの深い話とかになりそうですが、今回もディープな話で盛り上がれることを期待しています。

余談ですが、今JCUP XIIに出ているのですが、知り合いからラボの先輩がYouTuberになって量子化学に関して熱く語っていという話を聞いて驚きました。

そして私の講演は難しくてわからんとも。わかりやすいように周辺知識も追加したのに、、、 ちなみにトークでの私の主張は以下です。

  • Our aim is to describe the ligand association/dissociation process as a chemical reaction, where reactants and products remain unchanged.
  • LBDD can be regarded as SBDD in ligand-protein complex is unknown.

共感してくれる人がいると嬉しいのですが。

MacにChEMBLを入れる

ちょっとChEMBLを使う必要ができたので、久しぶりに手元のMacbookにインストールしました。最新のバージョンは34です。

Postgresqlのインストール

バージョンが14と古かったので最新の16を入れた。

brew install postgresql@16
echo 'export PATH="/usr/local/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc #psqlがない場合
source ~/.zshrc
brew services start postgresql@16
brew services list #動いているか確認

動いていたらChEMBLのデータを入れる

createdb chembl_34
pg_restore --no-owner -d chembl_34 chembl_34_postgresql.dmp #30分くらいかかる

これでOK

DBにアクセスするには

psql chembl_34

「機械学習による分子最適化」を読んだ

京都に行く新幹線の中で機械学習による分子最適化を読みました。

しっかりと数式で説明されていて簡単に概要を理解するというよりは、ある程度このあたりわかっている人が現場を制するための書籍のように思いました。大体PRMLは必須で、ECFPのアルゴリズムも知っていることが前提、分子生成系の論文をある程度読んでいる方が好ましいといった感じ。あとは強化学習も読んでおきましょう。

SELFIESを丁寧に解説していて個人的には参考になりました。CFGとかlisp処理系作って遊んでたときに勉強したけど、ここでも使われてんのかーとか。ただ、実践的にはSMILESで十分な気もする。

ニューラルグラフフィンガープリントは改めてハッシュ関数をニューラルネットワークで置き換えることで学習可能なパラメタを与えつつ微分可能っていう記述を目にして、ちょっと面白いパラメタの与え方を思いついたので今度ためしてみる。

それからオンライン強化学習とオフライン強化学習に関しても改めて自分の中で整理された。製薬企業のケモインフォマティクス研究のガチの人が読むと面白いかと思います。というか、このあたりサラサラ読まんとガチとは言えんよね的な本ですかねぇ。

ただ、自分の中ではこっちで頑張るって決めてるんで、なんか精度が明らかに上がるようなコンセプトを提案できると嬉しいなぁと思っています。

フロンティア分子軌道論(FMO)とフラグメント分子軌道法(FMO)

11月に発表したときに、本書をお薦めされたので買って読んでました(訳者に知り合いがちょいちょい入っている)。

役に立ったのは6章の密度汎関数法と16章の定性的理論です。この2つの賞を読むだけでも20K円の価値はあると思いました。

分子の量子力学的視点は負電荷を持つ電子雲によって囲まれた正電荷を持つ原子核という視点に基づいているが、化学における分子は、いまだに 「結合」によってまとまった「原子」群として定式化されている。

古典力学の枠組みでは説明できない現象を説明するモデルとして量子力学が発展したのに、AI的視点で分子をグラフとして扱いGNNで伝播させるとうまくいくのでは的なアプローチに立つのはどうなんでしょうねぇと思っているので、私的には量子化学的な視点からDL/MLを利用したほうが筋が良いんじゃないかなぁと感じています。まぁきちんと証明しろよってことなのですが、、、

ProductName 計算化学(第3版)
森北出版 / ¥19,800 (2023-03-24)

  • 電子数に対するエネルギーの2階微分はハードネス
  • 局所的な求電子性は、ωと対応するFukui関数を掛けることによって得られる。これらの概念は、HSAB原理における重要な役割を担っている
  • hard-hard相互作用は主に電荷支配で、soft-soft相互作用は軌道支配

FMOで考えてみると

Fragment Molecular Orbitalを活用してSBDDをやっていると、リガンドとタンパク質の結合乖離過程は始状態と終状態の変わらない化学反応と捉えることができることが直感的に理解できるかと思います(実際反応する場合はCovalent inhibitorと呼ばれる特殊な状態かと思います)。

となると、「リガンドとタンパク質の化学反応はHSAB原理においてはなんなのだろう?」という疑問が湧いてきます。FMOではタンパク質をアミノ酸というフラグメントに分解できるから、「各アミノ酸の側鎖はhard-hard相互作用, soft-soft相互作用のどちらを担うのだろうか?」とか、そうなるとHSABルールって大域的ではなくて局所的な概念なのかなぁ?と悩み始めます。

そもそもPIEDAがKitaura-Morokuma AnalysisのFMOへの拡張だからなんかそうなんだろうなぁとは思うんだけど、今度偉い人たちにあったら聞いてみようと思いました。

最近参加した学会など

Mishima.syk #20, 第51回構造活性相関シンポジウム, 8th Autumn School of Chemoinformatics in Naraに参加しました。

Mishima.syk #20

  • LLM, ChatGPTの話が面白かった。
  • tweetできる内容を選んでいるつもりだったが、「それ黒に近いグレーじゃないの」という総ツッコミを食らったのでちょっと悔改めた。懇親会は大変楽しかった。

第51回構造活性相関シンポジウム

  • H先生に久しぶりに会えて色々と情報交換できた。
  • 凪でラーメンを食べるだけであった
  • 渋谷は3,4年ぶりだった

8th Autumn School of Chemoinformatics in Nara

  • よりワークショップに近い感じになっていてよかった
  • 奈良の夜は早く、朝もは早いということを実感した。ホテルの清掃準備早すぎ
  • @iwatobipenに倣って朝走ってみた(続ける)
  • 懇親会の日本酒と二次会の日本酒を堪能した。美味しい料理は重要
  • 色々と重要な情報をゲットできたので満足

Visualizing Fukui Function with RDKit

The Utility of the HSAB Principle via the Fukui Function in Biological Systems was interesting stuff, so I tried to visualize the Fukui function.

from fffp import *
from rdkit.Chem import AllChem, Draw
from IPython.display import Image, display
from rdkit.Chem.Draw import SimilarityMaps
Rivaroxaban = "C1COCC(=O)N1C2=CC=C(C=C2)N3CC(OC3=O)CNC(=O)C4=CC=C(S4)Cl"
m = rdkit_optimize(Rivaroxaban)
fp = f_plus(m, basis_sets="6-31G")
fg_fp = SimilarityMaps.GetSimilarityMapFromWeights(m, fp, colorMap='RdBu')
fm = f_minus(m, basis_sets="6-31G")
fg_fm = SimilarityMaps.GetSimilarityMapFromWeights(m, fm, colorMap='RdBu')

fffp is a library that handles Fukui functions in GAMESS, but it is not yet publicly available.

The area around the S1 pocket of Rivaroxaban(Fig. 1) is more susceptible to nucleophilic reactions/binding, while the area around the S4 pocket with the morpholine group(Fig. 2) seems to be more compatible with electrophilic reactions.

Fplus Fig. 1 : F+(r) of Rivaroxaban

Fminus Fig. 2: F-(r) of Rivaroxaban

「合成化学者のメディシナルケミスト像と計算化学者のメディシナルケミスト像は微妙に異なる」という話

趣旨としては「メディシナルケミストは尊い」となります。

詳細省きますが、最近違いを理解していない人が多すぎてげんなりすることが起こったのと、今週末のCBI講演会でこのあたりの話題が話されるので宣伝がてら書いてみます。

下の図は10年くらい前の某BIソフトウェアのユーザー会で発表したときの資料を少し改変したもので、私がメディシナルケミストをどう定義しているかというものです。

WhatMedicinalChemist

創薬プロジェクトで合成化学者の果たす役割はいわゆる創薬プロジェクトのPDCAサイクル(DMTA)において

  • What's to make (何を合成するか)
  • How to make (どうやって合成するか)

の2つに大別されるかと思います。典型的な合成化学者とか合成CROは与えられた化合物をどうやって合成するのかを考えることに100%コミットします。一方で計算化学者/Chemoinformatist/SBDDerは分析結果から次に何を作るべきかに全振りします。

メディシナルケミストはWhat's to make:How to makeの割合が7:3-6:4くらいではないかと思われますが、海外最大手のPは10:0に全振りしていると聞いたことがありますというか、前職の上司がそれが「なんか違うわー」ってことで辞めたと聞きました。

10年前の私は上のスライドに書いてあるように「何を作るべきかを考えられるのがメディシナルケミスト」というポジションだったので、将来的には分析できるChemoinformatist/SBDDerが合成CROをうまく使いこなせば十分にメディシナルケミストとなりうるだろうと考えていました。実際REINVENTが出たりDeepLearningによる逆合成が急速に発展したしね。

ただ、実際ケミストをマネージメントする立場になってみると合成化学知らないとかなり困るなぁと(一応合成化学専攻出てるけどw)能力不足を感じたり、やっぱり機械学習は所詮機械学習で、既存の反応の組み合わせしか辿れないというか未知の反応を提案することができないというか、それはAIが将棋で「銅」っていう新しい駒を作り出せないのと一緒なのかなぁと最近は考えを改めています。

というわけで、きちんと合成化学のバックグラウンドを持った人がWhat's to makeのための技術を獲得するというのが真なるメディシナルケミストなのかなぁと思うようになりました。

とはいえ、What's to makeに全振りしてDruglikenessだけきっちり押さえればSynthetic Feasibilityは別に無視して誰かに任せてもいいというような道もあるよなぁとは思います。

Fukui Functionについて理解を深めた

昨日S先生とディスカッションしていて、Fukui関数ってそういうことなのねと理解を深めました。

ちょっとやりたかったことがあったのだけど、軌道の係数いじったりするコード書くのめんどくさいなーとか思って後回しにしていたので単にmulliken population analysisの結果いじればいいだけだと理解してさっさと実装するかという気分になりました。

FMO計算を通して色々と得たノウハウとか知識をやっとインフォマティクスのほうに応用できるなぁ。これで予測精度上がるかどうかちょっと楽しみ。