9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BRICSによる化合物のフラグメント化とバーチャルライブラリ構築

Last updated at Posted at 2024-04-14

はじめに

こんにちは、@sasshi_iです。
本日はバーチャルライブラリの構築方法について紹介します。

化合物のバーチャルライブラリとは、実際に合成する前にコンピュータ上で設計された多くの化学構造から成るデータベースです。

バーチャルライブラリ構築の目的は、理論上可能な化合物の構造を列挙し、それらの中から実験的に合成してテストする価値のある候補を選択することです。(実際に合成するとお金かかるので、計算機上で有力候補を絞り込む)

バーチャルライブラリは下記の流れで作成できます。

  • 生理活性や化合物の合成容易性を考慮して化合物の部分構造(フラグメント)を列挙
  • フラグメントを組み合わせる

化合物を生理活性および合成可能性の観点からフラグメントに分解する手法の1つにBRICSがあります。

それでは、BRICSについて説明していきましょう。

BRICSとは

BRICS(breaking of retrosynthetically interesting chemical substructures) は、既知の化合物を特定の化学結合で区切り、特定の化学構造断片を生成するアルゴリズムの1つです。

化学構造断片を組み合わせることで新たな化合物ライブラリーを構築することを目的としています。

BRICSは医薬品様化合物のフラグメント化手法であるRECAP(Retrosynthetic Combinatorial Analysis Procedure) を改善した手法になります。

RECAPでは11種類のルールを基に化合物を切断していましたが、BRICSでは16種類のルールを基に切断します。

これにより、化合物を切断する際の性能がRECAPと比較して

  • 切断されない分子数の減少
  • フラグメントの総数の増加

となっています。

BRICSを用いた化合物の操作

ここからは、実際に化合物をフラグメント化し、フラグメントを用いて化合物のバーチャルライブラリーを作成してみます。

フラグメント化する化合物は、金子研HPから取得した水溶解度データを使用します。

また、実行環境はGoogle Colaboratoryを使用しています。

化合物のフラグメント化

はじめにrdkitをインストールします。

!pip install rdkit
# データ読み込み
suppl  = Chem.SDMolSupplier("logSdataset1290_2d.sdf")
mols = [mol for mol in suppl if mol is not None]

# 読み込めた分子をBRICSでフラグメント化
fragment_set = set()
for mol in mols:
    fragment = BRICS.BRICSDecompose(mol)
    fragment_set = fragment_set | fragment

fragments = list(fragment_set)
fragments = np.array([Chem.MolFromSmiles(smi) for smi in fragments])

descriptor_calc = MoleculeDescriptors.MolecularDescriptorCalculator(['MolWt'])
MolWt_list = np.array([descriptor_calc.CalcDescriptors(mol)[0] for mol in fragments])

# 分子量の大きい複雑なフラグメントは除く
fragment_list = np.array(fragments)[np.where(MolWt_list<=200)]

Draw.MolsToGridImage(fragment_list[:15], molsPerRow=5)

化合物のフラグメントのリストを構築できました。

スクリーンショット 2024-04-05 001529.png

バーチャルライブラリーの構築

ここからはフラグメントを組み合わせて化合物ライブラリーを作成します。

builder = BRICS.BRICSBuild(fragments)
# フラグメントから1000個の分子を作成
generated_mols = [next(builder) for x in range(1000)]

# 生成された分子は価数が間違っている可能性があるため、価数を更新
for mol in generated_mols:
    mol.UpdatePropertyCache(strict=True)

Draw.MolsToGridImage(generated_mols[:25], molsPerRow=5)

スクリーンショット 2024-04-05 001807.png

部分構造の異なる化合物のリスト(バーチャルライブラリ)を作成することができました。

終わりに

BRICSを用いた化合物のフラグメント化とフラグメントを組み合わせることで化合物のバーチャルライブラリーを作成しました。

BRICSについて詳しく知りたい方は論文があるので、そちらを参考にしてみてください。
https://chemistry-europe.onlinelibrary.wiley.com/doi/10.1002/cmdc.200800178

参考

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?