APIで取得したChEMBLのデータを整える

皆さんは標的の情報ってまず何で調べますか?
私は大体UniProtから入ることが多いです。
そして例えばUniProtのEntryをキーワードにTarget ChEMBL IDを探すこともできます。 前回みたいにChEMBLから入ることって実はあんまりありませんでした。

ChEMBLのデータを整える - おじさんちのクソゲ

こちらからパクったコードにUniProt IDを入力して

# import the libraries
# https://github.com/chembl/notebooks/blob/main/ChEMBL_webresource_client_examples.ipynb
from chembl_webresource_client.new_client import new_client
import requests
import pandas as pd
import platform

uniprot_id = input('UniProt ID?') # P29597
target = new_client.target.get(
    target_components__accession=uniprot_id
    ).only(
        'target_chembl_id', 
        'organism', 
        'pref_name', 
        'target_type'
        )
pd.DataFrame.from_records(target)

Target ChEMBL IDを指定するとあら不思議、最新版のDataをダウンロードできます。

ID = input('Target ChEMBL ID?') # CHEMBL3553
activities = new_client.activity.filter(
    target_chembl_id__in=[ID],
    pchembl_value__gte=5,
    assay_type='B',
).only([
    'molecule_chembl_id',
    'molecule_pref_name',
    'target_chembl_id',
    'target_pref_name',
    'parent_molecule_chembl_id',
    'pchembl_value',
    'canonical_smiles',
    'assay_description',
    'document_chembl_id',
    'document_journal',
    'document_year',
]) 


df = pd.DataFrame(activities)

df[df['molecule_pref_name'].notna()].filter(items=[
    'molecule_pref_name',
    'Molecule', 
    'pchembl_value'
]
).head(3)

標的を複数調べる時にローカルにいちいちダウンロードするのがめんどい時はこちらの方が楽です。 KNIMEと同じルーチン化が良ければオススメです。 ただ、ダウンロード版より計算値のカラムが少ないので、同じ解析をしようと思うと自分でいくらか計算しないといけません。
あとダウンロードの時間はやっぱりかかります。一長一短ですね。