【ChEMBL】化合物のIC50/ID50を調べる

備忘録

本記事では化合物のIC50およびID50をChEMBLから取得する手順を説明します。

IC50は化合物の標的タンパクの半分が活性を阻害される化合物の濃度です。

ID50は細胞や生物の半分が化合物の毒性によって死ぬ化合物の濃度です。

1. ChEMBLについて

ChEMBLは欧州分子生物学研究所(EMBL)のバイオインフォマティクス研究所(EBI)が運営する医薬品などの化合物に関する薬物動態や活性のデータベースであり、化合物の標的タンパクやIC50・ID50に関する情報もあります。

ブラウザから検索をしたり、APIからデータを取得したり、あるいはデータベース自体をPostgreSQLのDBとしてダウンロードして利用できます。全て無料です。

ブラウザ:https://www.ebi.ac.uk/chembl
API:https://chembl.gitbook.io/chembl-interface-documentation/web-services/chembl-data-web-services

2. データベースのダウンロード

下記のFTPサイトからダウンロードできます。

上記のサイトからPostgreSQLの最新のデータベースを選択してダウンロードします。本記事執筆時点(2025/1/10)では以下のURLが最新でした。環境にもよりますがダウンロードには約1時間かかりました。

3. 環境構築

ダウンロードしたDBを解凍した後、PostgreSQLが使える環境をDockerで用意します。

Docker内でダウンロードしたDBに対してSQLを用いてIC50とID50を調べます。

3.1. 解凍

作業ディレクトリへchembl_35_postgresql.tar.gzを移動させ、以下のようにして解凍します。

Shell

3.2. Docker のインストール

Dockerの公式サイトからDocker Desktopをダウンロードし、インストールします。

3.3. Dockerの起動

インストールしただけではコンソールからdockerなどのコマンドが使えないので、アプリケーションとして起動します。

3.4. docker-compose用のファイルを準備

続いてデータベースを解凍して作成されたディレクトリのうちchembl35/chembl_35_postgresqlに下記のdocker-compose.yamlを設置します。

YAML

3.5. docker-composeでコンテナ起動

chembl35/chembl_35_postgresqlに移動し、以下のコマンドでDockerのコンテナを起動します。

Shell

3.7. データベースのファイルを移動

データベースの本体であるdmpファイルを適切な場所へ移動させておきます。

Shell

3.8. コンテナに入る

上記でコンテナを起動した状態のまま、新しいコンソールのウィンドウを開きます。

まずは先ほど起動したコンテナIDを以下のように調べます。

Shell

得られたIDを用いて、以下のようにしてコンテナに入ります。

Shell

3.9. PostgreSQLサーバの起動

コンテナに入った後は、以下のようにしてPostgreSQLサーバを立ち上げます。これには30分〜の時間がかかりました。

Shell

3.10. データベースの確認

上手くサーバが立ち上がり、データベースが読み込まれていた場合、以下のコマンドでPostgreSQLを立ち上げてテーブル一覧を表示できます。

Shell

4. 化合物のIC50・ID50の取得

ChEMBLのテーブル定義は下記URLのchembl_35 Schema Documentationで確認できます。
https://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/latest/

例えば以下のようなテーブルがあります。

  • assays: 文献で報告されていた測定のリスト
  • activities: 活性値やエンドポイント値など測定の結果
  • compound_structures: SMILES等の化合物の構造情報
  • target_dictionary: 化合物の標的のリスト

ユースケースが下記のURLに掲載されているので、参考にします。
https://chembl.gitbook.io/chembl-interface-documentation/frequently-asked-questions/schema-questions-and-sql-examples

今回の場合、下記のSQLで一時的にIC50のリストをテーブルとして保存します。

SQL

続いて、下記のようにしてCSVファイルに結果を出力します。

SQL

次に下記のSQLで一時的にID50のリストをテーブルとして保存します。

SQL

続いて、下記のようにしてCSVファイルに結果を出力します。

SQL

5. Pythonから読み込む

上記で出力したファイルは、例えば下記のようにPythonで読み込めます。

Python
inchi_keystandard_valuetarget_name
XUHZZDAPCLYTNF-SECBINFHSA-N8.2Tyrosine-protein kinase JAK3
DFZSTXDSQFCUKA-UHFFFAOYSA-N3410Phosphodiesterase 5A
AYSKDUTXQCHQSE-UHFFFAOYSA-N22000A2780
FUQIUGJBENDTFK-UHFFFAOYSA-N18Kinesin-like protein KIF18A
SOEFILJAGJAINE-XEGUGMAKSA-N10140A704

6. まとめ

本記事ではChEMBLのデータベースをダウンロードし、DockerにてPostgreSQLの環境を構築してIC50・ID50をSQLで検索・保存し、Pythonで読み込める状態にしました。

以上になります。

コメント