BigQuery Graph ile İlaç Etkileşimlerini Analiz Etme

1. Giriş

Bu codelab'de, BigQuery Graph'ı kullanarak ilaç-hedef etkileşimi ağını modellemeyi ve analiz etmeyi öğreneceksiniz. İlaçların biyolojik hedeflerle nasıl etkileşime girdiğini keşfetmek, potansiyel yan etkileri (ör. kalp krizi riski) belirlemek ve potansiyel kombinasyon tedavilerini ortaya çıkarmak için grafik sorgularının (GQL) gücünden yararlanacaksınız.

🧬 Kullanım alanı: İlaç-Hedef Etkileşimi Ağı

İş sorusu: Bir bileşiğin tam patlama yarıçapı nedir? Hangi hedeflere bağlanır, hangi biyolojik yollar etkilenir ve hangi hastalık alanları etkilenir?

Tablolar:

Tablo

Açıklama

compounds

Etki mekanizması ve geliştirme aşaması olan ilaç molekülleri

targets

Gen adları ve UniProt kimlikleri içeren protein hedefleri

interactions

Bileşik hedef bağlama yakınlığı (birincil hedefler + hedef dışı hedefler)

pathways

Hastalık alanlarıyla ilişkili biyolojik yollar

target_pathways

Hedefleri katıldıkları yollara bağlayan birleşim tablosu

Özellik grafiği modeli:

(Compound)-[BINDS_TO {affinity_nm, ic50_nm, interaction_type}]->(Target)
(Target)-[PARTICIPATES_IN {role, importance_score}]->(Pathway)

Grafik Şeması

🔍 Demo Sorguları

Sorgu

Gösterdiği bilgiler

S1: Hedef bağlama profili

1 atlamalı geçiş: Tüm birincil ve hedef dışı hedeflere yönelik bileşik

S2: hERG kalp riski algılama

2 adımlı geçiş: bileşik → hERG hedefi → kardiyak yol

3. Çeyrek: Ortak hedefli bileşik çiftler

Çift yönlü eşleşme: Aynı hedef düğümde birleşen iki bileşik

4. Çeyrek: Hastalık yayılma yolunun etki alanı

2 atlamalı toplama: Bileşik başına tam yol ve hastalık alanı kapsamı

5. soru: Güvenli bileşik seçimi

Yüksek onkoloji kapsamına sahip ancak hERG kardiyak sorumluluğu olmayan bileşikler

Yapacaklarınız

  • İlaç etkileşimi ağı için BigQuery veri kümesi ve şeması oluşturma
  • Örnek verileri yükleme (Bileşikler, Hedefler, Etkileşimler, Yollar, Hedef Yolları)
  • Bu öğeleri bağlayan bir BigQuery mülk grafiği oluşturun.
  • Grafik geçişlerini (GRAPH_TABLE ve MATCH) kullanarak bileşik etkileşimleri, biyolojik yolları ve hastalıkların etki alanını anlamak için grafiği sorgulama
  • Grafik söz diziminin basitliğini ve ifade gücünü anlamak için GQL ile standart SQL'i yan yana karşılaştırın.

İhtiyacınız olanlar

  • Chrome gibi bir web tarayıcısı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi

Bu codelab, yeni başlayanlar da dahil olmak üzere her seviyeden geliştiriciye yöneliktir.

2. Başlamadan önce

Google Cloud projesi oluşturma

  1. Google Cloud Console'da bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun.

Cloud Shell'i Başlatma

  1. Google Cloud Console'un üst kısmında Activate Cloud Shell'i (Cloud Shell'i Etkinleştir) tıklayın.
  2. Kimlik doğrulamayı doğrulayın:
gcloud auth list
  1. Projenizi onaylayın:
gcloud config get project
  1. Gerekirse ayarlayın:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

API'leri etkinleştir

Gerekli BigQuery API'yi etkinleştirmek için şu komutu çalıştırın:

gcloud services enable bigquery.googleapis.com

3. Şemayı tanımlama ve verileri yükleme

Öncelikle, grafikle ilgili tablolarınızı depolamak için bir veri kümesi oluşturmanız ve bu tabloları örnek verilerle doldurmanız gerekir.

  1. Google Cloud Console'da BigQuery Studio'ya gidin.
  2. Yeni bir sorgu sekmesi açmak için SQL Düzenleyici'yi tıklayın.
  3. drug_target_graph veri kümesini oluşturmak için aşağıdaki ifadeyi çalıştırın:
CREATE SCHEMA IF NOT EXISTS drug_target_graph
OPTIONS (location = 'US');

Şimdi BigQuery Studio'da aşağıdaki DDL sorgularını çalıştırarak 5 kaynak tabloyu oluşturun.

1. compounds Tablo Oluşturma

İlaç moleküllerini, etki mekanizmalarını, geliştirme aşamalarını ve tedavi alanlarını içerir.

CREATE OR REPLACE TABLE drug_target_graph.compounds AS
SELECT 'CPD001' AS compound_id, 'Imatinib'    AS compound_name, 'Kinase Inhibitor'       AS mechanism_of_action, 'Approved'    AS dev_stage, 'Oncology'           AS therapeutic_area, 479.6 AS molecular_weight UNION ALL
SELECT 'CPD002', 'Gefitinib',   'Kinase Inhibitor',        'Approved',    'Oncology',           446.9 UNION ALL
SELECT 'CPD003', 'Erlotinib',   'Kinase Inhibitor',        'Approved',    'Oncology',           393.4 UNION ALL
SELECT 'CPD004', 'Sorafenib',   'Multi-Kinase Inhibitor',  'Approved',    'Oncology',           464.8 UNION ALL
SELECT 'CPD005', 'Vemurafenib', 'BRAF Inhibitor',          'Approved',    'Oncology',           489.9 UNION ALL
SELECT 'CPD006', 'Crizotinib',  'ALK Inhibitor',           'Approved',    'Oncology',           450.3 UNION ALL
SELECT 'CPD007', 'Idelalisib',  'PI3K Inhibitor',          'Approved',    'Oncology',           415.4 UNION ALL
SELECT 'CPD008', 'Trametinib',  'MEK Inhibitor',           'Approved',    'Oncology',           615.4 UNION ALL
SELECT 'CPD009', 'Palbociclib', 'CDK Inhibitor',           'Approved',    'Oncology',           447.5 UNION ALL
SELECT 'CPD010', 'Compound-X1', 'Kinase Inhibitor',        'Phase II',    'Oncology',           412.3 UNION ALL
SELECT 'CPD011', 'Compound-X2', 'PI3K Inhibitor',          'Phase I',     'Oncology',           398.7 UNION ALL
SELECT 'CPD012', 'Saquinavir',  'Protease Inhibitor',      'Approved',    'Infectious Disease', 670.8 UNION ALL
SELECT 'CPD013', 'Metformin',   'AMPK Activator',          'Approved',    'Metabolic',          165.6 UNION ALL
SELECT 'CPD014', 'Rapamycin',   'mTOR Inhibitor',          'Approved',    'Immunology',         914.2 UNION ALL
SELECT 'CPD015', 'Compound-X3', 'Multi-Kinase Inhibitor',  'Preclinical', 'Oncology',           502.1;

2. targets Tablo Oluşturma

Protein hedefleri, gen adları, UniProt kimlikleri ve hedef sınıflarını içerir.

CREATE OR REPLACE TABLE drug_target_graph.targets AS
SELECT 'TGT001' AS target_id, 'BCR-ABL1'    AS target_name, 'ABL1'    AS gene_name, 'P00519' AS uniprot_id, 'Kinase'       AS target_class, TRUE  AS is_oncogene UNION ALL
SELECT 'TGT002', 'EGFR',      'EGFR',    'P00533', 'Kinase',       TRUE  UNION ALL
SELECT 'TGT003', 'VEGFR2',    'KDR',     'P35968', 'Kinase',       FALSE UNION ALL
SELECT 'TGT004', 'BRAF',      'BRAF',    'P15056', 'Kinase',       TRUE  UNION ALL
SELECT 'TGT005', 'ALK',       'ALK',     'Q9UM73', 'Kinase',       TRUE  UNION ALL
SELECT 'TGT006', 'PI3K-alpha','PIK3CA',  'P42336', 'Lipid Kinase', TRUE  UNION ALL
SELECT 'TGT007', 'MEK1',      'MAP2K1',  'Q02750', 'Kinase',       FALSE UNION ALL
SELECT 'TGT008', 'CDK4',      'CDK4',    'P11802', 'Kinase',       FALSE UNION ALL
SELECT 'TGT009', 'CDK6',      'CDK6',    'P30279', 'Kinase',       FALSE UNION ALL
SELECT 'TGT010', 'mTOR',      'MTOR',    'P42345', 'Kinase',       FALSE UNION ALL
SELECT 'TGT011', 'PDGFR-beta','PDGFRB',  'P09619', 'Kinase',       FALSE UNION ALL
SELECT 'TGT012', 'c-KIT',     'KIT',     'P10721', 'Kinase',       TRUE  UNION ALL
SELECT 'TGT013', 'hERG',      'KCNH2',   'Q12809', 'Ion Channel',  FALSE UNION ALL
SELECT 'TGT014', 'AMPK',      'PRKAA1',  'Q13131', 'Kinase',       FALSE UNION ALL
SELECT 'TGT015', 'RAF1',      'RAF1',    'P04049', 'Kinase',       FALSE UNION ALL
SELECT 'TGT016', 'RET',       'RET',     'P07949', 'Kinase',       TRUE  UNION ALL
SELECT 'TGT017', 'FLT3',      'FLT3',    'P36888', 'Kinase',       TRUE  UNION ALL
SELECT 'TGT018', 'AKT1',      'AKT1',    'P31749', 'Kinase',       FALSE UNION ALL
SELECT 'TGT019', 'ERK2',      'MAPK1',   'P28482', 'Kinase',       FALSE UNION ALL
SELECT 'TGT020', 'HIV-Protease','HIV1-PR','Q72547', 'Protease',     FALSE;

3. interactions Tablo Oluşturma

Bileşik hedef bağlama afinitesi verilerini (birincil hedefler ve hedef dışı hedefler) içerir.

CREATE OR REPLACE TABLE drug_target_graph.interactions AS
SELECT 'INT001' AS interaction_id, 'CPD001' AS compound_id, 'TGT001' AS target_id, 0.025  AS affinity_nm, 0.038  AS ic50_nm, 'primary'    AS interaction_type, 9.8  AS pchembl_value UNION ALL
SELECT 'INT002', 'CPD001', 'TGT011', 0.1,    0.15,   'primary',    8.8  UNION ALL
SELECT 'INT003', 'CPD001', 'TGT012', 0.068,  0.1,    'primary',    9.2  UNION ALL
SELECT 'INT004', 'CPD001', 'TGT016', 0.5,    0.8,    'off-target', 7.4  UNION ALL
SELECT 'INT005', 'CPD001', 'TGT013', 5.2,    8.1,    'off-target', 6.1  UNION ALL
SELECT 'INT006', 'CPD002', 'TGT002', 0.02,   0.033,  'primary',    9.7  UNION ALL
SELECT 'INT007', 'CPD002', 'TGT013', 3.1,    4.8,    'off-target', 6.5  UNION ALL
SELECT 'INT008', 'CPD003', 'TGT002', 0.058,  0.079,  'primary',    9.2  UNION ALL
SELECT 'INT009', 'CPD003', 'TGT013', 8.5,    12.0,   'off-target', 5.9  UNION ALL
SELECT 'INT010', 'CPD004', 'TGT003', 0.09,   0.12,   'primary',    9.1  UNION ALL
SELECT 'INT011', 'CPD004', 'TGT004', 0.038,  0.055,  'primary',    8.9  UNION ALL
SELECT 'INT012', 'CPD004', 'TGT015', 0.22,   0.31,   'primary',    8.5  UNION ALL
SELECT 'INT013', 'CPD004', 'TGT016', 0.58,   0.75,   'primary',    8.1  UNION ALL
SELECT 'INT014', 'CPD004', 'TGT017', 0.33,   0.48,   'primary',    8.4  UNION ALL
SELECT 'INT015', 'CPD004', 'TGT013', 2.8,    4.1,    'off-target', 6.6  UNION ALL
SELECT 'INT016', 'CPD005', 'TGT004', 0.031,  0.044,  'primary',    9.5  UNION ALL
SELECT 'INT017', 'CPD005', 'TGT015', 0.48,   0.65,   'off-target', 7.3  UNION ALL
SELECT 'INT018', 'CPD006', 'TGT005', 0.02,   0.028,  'primary',    9.8  UNION ALL
SELECT 'INT019', 'CPD006', 'TGT003', 0.41,   0.59,   'off-target', 7.4  UNION ALL
SELECT 'INT020', 'CPD007', 'TGT006', 0.019,  0.025,  'primary',    9.8  UNION ALL
SELECT 'INT021', 'CPD007', 'TGT018', 0.55,   0.78,   'off-target', 7.2  UNION ALL
SELECT 'INT022', 'CPD008', 'TGT007', 0.0092, 0.014,  'primary',    10.1 UNION ALL
SELECT 'INT023', 'CPD008', 'TGT019', 0.38,   0.51,   'off-target', 7.4  UNION ALL
SELECT 'INT024', 'CPD009', 'TGT008', 0.011,  0.017,  'primary',    9.9  UNION ALL
SELECT 'INT025', 'CPD009', 'TGT009', 0.015,  0.022,  'primary',    9.8  UNION ALL
SELECT 'INT026', 'CPD010', 'TGT002', 0.041,  0.058,  'primary',    9.4  UNION ALL
SELECT 'INT027', 'CPD010', 'TGT001', 0.38,   0.52,   'off-target', 7.3  UNION ALL
SELECT 'INT028', 'CPD010', 'TGT013', 1.2,    1.8,    'off-target', 7.1  UNION ALL
SELECT 'INT029', 'CPD011', 'TGT006', 0.029,  0.041,  'primary',    9.5  UNION ALL
SELECT 'INT030', 'CPD011', 'TGT010', 0.71,   0.95,   'off-target', 7.0  UNION ALL
SELECT 'INT031', 'CPD012', 'TGT020', 0.39,   0.55,   'primary',    7.3  UNION ALL
SELECT 'INT032', 'CPD013', 'TGT014', 12.0,   18.5,   'primary',    5.7  UNION ALL
SELECT 'INT033', 'CPD014', 'TGT010', 0.0018, 0.0025, 'primary',    11.8 UNION ALL
SELECT 'INT034', 'CPD015', 'TGT004', 0.055,  0.078,  'primary',    9.2  UNION ALL
SELECT 'INT035', 'CPD015', 'TGT003', 0.12,   0.17,   'primary',    8.9  UNION ALL
SELECT 'INT036', 'CPD015', 'TGT016', 0.29,   0.41,   'primary',    8.5  UNION ALL
SELECT 'INT037', 'CPD015', 'TGT013', 0.95,   1.35,   'off-target', 7.2;

4. pathways Tablo Oluşturma

Biyolojik yollar, ilişkili hastalık alanları ve kanserle ilgili bilgileri içerir.

CREATE OR REPLACE TABLE drug_target_graph.pathways AS
SELECT 'PWY001' AS pathway_id, 'MAPK Signaling'           AS pathway_name, 'hsa04010' AS kegg_id, 'Cell Proliferation'     AS biological_process, 'Oncology'           AS disease_area, 'high'   AS cancer_relevance UNION ALL
SELECT 'PWY002', 'PI3K-AKT Signaling',        'hsa04151', 'Cell Survival',         'Oncology',           'high'   UNION ALL
SELECT 'PWY003', 'VEGF Signaling',             'hsa04370', 'Angiogenesis',          'Oncology',           'high'   UNION ALL
SELECT 'PWY004', 'ErbB Signaling',             'hsa04012', 'Cell Growth',           'Oncology',           'high'   UNION ALL
SELECT 'PWY005', 'mTOR Signaling',             'hsa04150', 'Cell Growth',           'Oncology',           'medium' UNION ALL
SELECT 'PWY006', 'Cell Cycle',                 'hsa04110', 'Cell Division',         'Oncology',           'high'   UNION ALL
SELECT 'PWY007', 'Cardiac Muscle Contraction', 'hsa04260', 'Cardiac Function',      'Cardiovascular',     'low'    UNION ALL
SELECT 'PWY008', 'hERG Cardiac Channel',       'hsa04022', 'Cardiac Repolarisation','Cardiovascular',     'low'    UNION ALL
SELECT 'PWY009', 'AMPK Signaling',             'hsa04152', 'Energy Metabolism',     'Metabolic',          'low'    UNION ALL
SELECT 'PWY010', 'ALK Signaling',              'hsa04915', 'Cell Proliferation',    'Oncology',           'high'   UNION ALL
SELECT 'PWY011', 'RAS Signaling',              'hsa04014', 'Cell Proliferation',    'Oncology',           'high'   UNION ALL
SELECT 'PWY012', 'HIV Replication',            'hsa05170', 'Viral Replication',     'Infectious Disease', 'low';

5. target_pathways Tablo Oluşturma

Hedefleri, katıldıkları biyolojik yollara bağlayan bir bağlantı tablosu.

CREATE OR REPLACE TABLE drug_target_graph.target_pathways AS
SELECT 'TP001' AS tp_id, 'TGT001' AS target_id, 'PWY001' AS pathway_id, 'activator' AS role, 0.95 AS importance_score UNION ALL
SELECT 'TP002', 'TGT001', 'PWY011', 'activator', 0.88 UNION ALL
SELECT 'TP003', 'TGT002', 'PWY004', 'activator', 0.98 UNION ALL
SELECT 'TP004', 'TGT002', 'PWY001', 'activator', 0.82 UNION ALL
SELECT 'TP005', 'TGT002', 'PWY002', 'activator', 0.75 UNION ALL
SELECT 'TP006', 'TGT003', 'PWY003', 'activator', 0.96 UNION ALL
SELECT 'TP007', 'TGT003', 'PWY001', 'activator', 0.71 UNION ALL
SELECT 'TP008', 'TGT004', 'PWY001', 'activator', 0.97 UNION ALL
SELECT 'TP009', 'TGT004', 'PWY011', 'activator', 0.89 UNION ALL
SELECT 'TP010', 'TGT005', 'PWY010', 'activator', 0.99 UNION ALL
SELECT 'TP011', 'TGT005', 'PWY001', 'activator', 0.78 UNION ALL
SELECT 'TP012', 'TGT006', 'PWY002', 'activator', 0.98 UNION ALL
SELECT 'TP013', 'TGT006', 'PWY005', 'activator', 0.85 UNION ALL
SELECT 'TP014', 'TGT007', 'PWY001', 'activator', 0.94 UNION ALL
SELECT 'TP015', 'TGT007', 'PWY011', 'activator', 0.88 UNION ALL
SELECT 'TP016', 'TGT008', 'PWY006', 'activator', 0.95 UNION ALL
SELECT 'TP017', 'TGT009', 'PWY006', 'activator', 0.93 UNION ALL
SELECT 'TP018', 'TGT010', 'PWY005', 'activator', 0.99 UNION ALL
SELECT 'TP019', 'TGT010', 'PWY002', 'activator', 0.91 UNION ALL
SELECT 'TP020', 'TGT011', 'PWY003', 'activator', 0.87 UNION ALL
SELECT 'TP021', 'TGT011', 'PWY001', 'activator', 0.72 UNION ALL
SELECT 'TP022', 'TGT012', 'PWY001', 'activator', 0.83 UNION ALL
SELECT 'TP023', 'TGT012', 'PWY011', 'activator', 0.79 UNION ALL
SELECT 'TP024', 'TGT013', 'PWY008', 'substrate', 0.99 UNION ALL
SELECT 'TP025', 'TGT013', 'PWY007', 'substrate', 0.95 UNION ALL
SELECT 'TP026', 'TGT014', 'PWY009', 'activator', 0.97 UNION ALL
SELECT 'TP027', 'TGT015', 'PWY001', 'activator', 0.91 UNION ALL
SELECT 'TP028', 'TGT015', 'PWY011', 'activator', 0.86 UNION ALL
SELECT 'TP029', 'TGT016', 'PWY001', 'activator', 0.84 UNION ALL
SELECT 'TP030', 'TGT016', 'PWY003', 'activator', 0.77 UNION ALL
SELECT 'TP031', 'TGT017', 'PWY001', 'activator', 0.88 UNION ALL
SELECT 'TP032', 'TGT017', 'PWY011', 'activator', 0.82 UNION ALL
SELECT 'TP033', 'TGT018', 'PWY002', 'activator', 0.96 UNION ALL
SELECT 'TP034', 'TGT018', 'PWY005', 'activator', 0.88 UNION ALL
SELECT 'TP035', 'TGT019', 'PWY001', 'activator', 0.97 UNION ALL
SELECT 'TP036', 'TGT019', 'PWY011', 'activator', 0.91 UNION ALL
SELECT 'TP037', 'TGT020', 'PWY012', 'substrate', 0.99;

4. Mülk grafiğini oluşturma

Tablolar başarıyla oluşturulduktan sonra özellik grafiğini oluşturabilirsiniz. Bu grafik, kenar tablolarını (Interactions ve Target Pathways) kullanarak düğümleri (bileşikler, hedefler, yollar) bağlar.

BigQuery Studio SQL Düzenleyici'de aşağıdaki ifadeyi çalıştırın:

CREATE OR REPLACE PROPERTY GRAPH drug_target_graph.drug_target_interaction_graph
NODE TABLES (
  drug_target_graph.compounds
    AS compound_node
    KEY (compound_id)
    LABEL Compound
    PROPERTIES (compound_id, compound_name, mechanism_of_action, dev_stage, therapeutic_area, molecular_weight),

  drug_target_graph.targets
    AS target_node
    KEY (target_id)
    LABEL Target
    PROPERTIES (target_id, target_name, gene_name, uniprot_id, target_class, is_oncogene),

  drug_target_graph.pathways
    AS pathway_node
    KEY (pathway_id)
    LABEL Pathway
    PROPERTIES (pathway_id, pathway_name, kegg_id, biological_process, disease_area, cancer_relevance)
)
EDGE TABLES (
  drug_target_graph.interactions
    AS binds_to_edge
    KEY (interaction_id)
    SOURCE KEY (compound_id) REFERENCES compound_node (compound_id)
    DESTINATION KEY (target_id) REFERENCES target_node (target_id)
    LABEL BINDS_TO
    PROPERTIES (interaction_id, affinity_nm, ic50_nm, interaction_type, pchembl_value),

  drug_target_graph.target_pathways
    AS participates_in_edge
    KEY (tp_id)
    SOURCE KEY (target_id) REFERENCES target_node (target_id)
    DESTINATION KEY (pathway_id) REFERENCES pathway_node (pathway_id)
    LABEL PARTICIPATES_IN
    PROPERTIES (tp_id, role, importance_score)
);

Bu işlem, veri kümenizde drug_target_interaction_graph adlı bir grafik oluşturur.

Grafik Şeması

5. 1. Sorgu: Bileşik başına tam hedef bağlama profili

İlk grafik sorgumuzu çalıştıralım. Bu, 1 atlamalı geçiş olup şu soruyu yanıtlar: Hangi bileşikler hangi hedeflere bağlanır ve afiniteleri nedir?

GQL sorgusu

SQL Düzenleyici'de aşağıdaki sorguyu çalıştırın:

SELECT
  compound_name,
  dev_stage,
  target_name,
  gene_name,
  target_class,
  interaction_type,
  ROUND(affinity_nm, 3) AS affinity_nm,
  ROUND(ic50_nm, 3)     AS ic50_nm,
  pchembl_value
FROM GRAPH_TABLE(
  drug_target_graph.drug_target_interaction_graph
  MATCH (c:Compound)-[b:BINDS_TO]->(t:Target)
  COLUMNS (
    c.compound_name    AS compound_name,
    c.dev_stage        AS dev_stage,
    t.target_name      AS target_name,
    t.gene_name        AS gene_name,
    t.target_class     AS target_class,
    b.interaction_type AS interaction_type,
    b.affinity_nm      AS affinity_nm,
    b.ic50_nm          AS ic50_nm,
    b.pchembl_value    AS pchembl_value
  )
)
ORDER BY compound_name, interaction_type, affinity_nm;

Sonuçlarda görecekleriniz:

Grafik 1. Çeyrek Sonucu

6. 2. Sorgu: Kardiyak Risk Algılama

İşletmeyle İlgili Soru

İlaç keşfinde, umut vadeden bir bileşiğin klinik denemelerde başarısız olmasının en yaygın nedenlerinden biri kardiyotoksisitedir. Bu, özellikle kalp ritmini düzenleyen bir potasyum iyon kanalı olan hERG proteinine (gen: KCNH2) istenmeyen bağlanma durumudur. hERG'de hedef dışı bir isabet, ölümcül aritmilere neden olabilir ve birkaç yüksek profilli ilacın geri çekilmesinden sorumlu olmuştur.

Yanıtlamak istediğimiz soru:

"İşlem hattımızdaki hangi bileşikler hERG proteininde hedef dışı bağlanma etkinliğine sahip ve bu durum hangi kalp yollarını riske atıyor?"

Bu bir 2 atlamalı sorudur: Bir sorguda iki ilişki üzerinden üç öğe türünü birbirine bağlayarak bir Bileşik'ten bir Hedef (hERG) aracılığıyla bir Yola geçmemiz gerekir.

GQL sorgusunu yazma

BQ SQL Düzenleyici'de aşağıdaki sorguyu çalıştırın:

SELECT
  compound_name,
  dev_stage,
  therapeutic_area,
  target_name,
  ROUND(affinity_nm, 3) AS herg_affinity_nm,
  pathway_name,
  disease_area          AS pathway_disease_area
FROM GRAPH_TABLE(
  drug_target_graph.drug_target_interaction_graph
  MATCH (c:Compound)-[b:BINDS_TO]->(t:Target)-[p:PARTICIPATES_IN]->(pw:Pathway)
  WHERE t.gene_name        = 'KCNH2'
    AND b.interaction_type = 'off-target'
    AND pw.disease_area    = 'Cardiovascular'
  COLUMNS (
    c.compound_name    AS compound_name,
    c.dev_stage        AS dev_stage,
    c.therapeutic_area AS therapeutic_area,
    t.target_name      AS target_name,
    b.affinity_nm      AS affinity_nm,
    pw.pathway_name    AS pathway_name,
    pw.disease_area    AS disease_area
  )
)
ORDER BY herg_affinity_nm;

MATCH ifadesinin neredeyse bir cümle gibi okunduğunu fark edin: "Bir Pathway'e katılan bir Target'a bağlanan bir Compound bulun". Filtreler, yol boyunca her düğüme ve kenara uygulanır.

Sonuçlarda göreceğiniz veriler şunlardır:

2. Çeyrek tablosu sonucu grafiği

Risk ağını grafik olarak görselleştirme

Tablolar verileri gösterir ancak riskin yapısını göstermez. Aynı yolda birden fazla bileşik mi birleşiyor? Yüksek riskli bir bileşik mi var yoksa birden fazla mı?

Grafik görselleştirme, bunu anında görünür hale getirir. Aynı 2 atlamalı geçişi etkileşimli bir ağ olarak oluşturmak için aşağıdaki hücreyi çalıştırın:

GRAPH `drug_target_graph.drug_target_interaction_graph`
MATCH pt = (c:Compound)-[b:BINDS_TO]->(t:Target)-[p:PARTICIPATES_IN]->(pw:Pathway)
WHERE t.gene_name     = 'KCNH2'
  AND pw.disease_area = 'Cardiovascular'
RETURN
  TO_JSON(pt) AS path

Şuna benzer bir grafik görürsünüz:

Grafik Görselleştirme

Grafikteki her yol, tam bir sorumluluk zincirini izler: Bir bileşik (mavi düğümler), ortadaki hERG proteinine bağlanır ve bu protein bir veya daha fazla kalp yoluyla (yeşil düğümler) bağlantı kurar. Tablodaki düz satır listesi artık görünür bir risk ağıdır. Birden fazla yol maruziyeti olan bileşikler, güvenlik incelemesi için daha yüksek öncelikli olarak hemen öne çıkar.

Neden GQL, SQL'den Daha Zariftir?

Aynı 2 atlamalı sorguyu standart SQL'de yürütmek için 4 açık birleştirme yapmanız gerekir. Hangi ilişkiyi aradığınızı değil, tabloları nasıl birleştireceğinizi açıklamak için bilişsel çaba harcarsınız. GQL, soruya odaklanmanızı sağlar.

SELECT
  c.compound_name,
  c.dev_stage,
  c.therapeutic_area,
  t.target_name,
  ROUND(i.affinity_nm, 3) AS herg_affinity_nm,
  pw.pathway_name,
  pw.disease_area         AS pathway_disease_area
FROM drug_target_graph.compounds c
JOIN drug_target_graph.interactions i ON c.compound_id = i.compound_id
JOIN drug_target_graph.targets t ON i.target_id = t.target_id
JOIN drug_target_graph.target_pathways tp ON t.target_id = tp.target_id
JOIN drug_target_graph.pathways pw ON tp.pathway_id = pw.pathway_id
WHERE t.gene_name = 'KCNH2'
  AND i.interaction_type = 'off-target'
  AND pw.disease_area = 'Cardiovascular'
ORDER BY herg_affinity_nm;

Daha ayrıntılı analiz: Çok adımlı metabolit riski tespiti

Yukarıdaki sorgu, hERG proteinine doğrudan bağlanan bileşikleri tanımlar. Ancak gerçek ilaç güvenliği iş akışlarında risk bazen bir adım geride olabilir: Bir bileşik, vücutta metabolik olarak ikincil bir moleküle (metabolit) dönüştürülebilir ve bu molekül daha sonra hERG'ye bağlanır. Bu, doğrudan bağlanma tahlillerinin tamamen gözden kaçırabileceği bir sorumluluktur.

Mülk grafiğinizde bir Metabolit düğüm tablosu ve bir METABOLISES_INTO kenarı varsa aynı MATCH kalıbını 3 atlamalı bir geçişe genişletebilirsiniz:

(Compound)-[METABOLISES_INTO]->(Metabolite)-[BINDS_TO]->
(Target)-[PARTICIPATES_IN]->(Pathway)

GQL sorgu yapısı tam olarak bir düğüm ve bir kenar kadar değişir. Eşdeğer SQL için iki ek JOIN gerekir. Bu, grafik geçişini özellikle güvenlik kademesi analizi için güçlü kılan kalıptır. Sorgu karmaşıklığı doğrusal olarak artarken biyolojik içgörü katlanarak artar.

7. 3. sorgu: Ortak hedef bileşik çiftleri

Kombinasyon tedavisi için adayları bulmak amacıyla iki farklı bileşiğin aynı hedef düğüme bağlandığı zamanı belirleyebiliriz. Çift yönlü eşleşme kullanarak şu soruyu yanıtlarız: Hangi onkoloji bileşikleri tam olarak aynı hedefte birleşir?

SQL Düzenleyici'de aşağıdaki sorguyu çalıştırın:

SELECT
  compound_a,
  compound_b,
  shared_target,
  gene_name,
  ROUND(affinity_a_nm, 3) AS affinity_a_nm,
  ROUND(affinity_b_nm, 3) AS affinity_b_nm
FROM GRAPH_TABLE(
  drug_target_graph.drug_target_interaction_graph
  MATCH (c1:Compound)-[b1:BINDS_TO]->(t:Target)<-[b2:BINDS_TO]-(c2:Compound)
  WHERE c1.compound_id < c2.compound_id
    AND c1.therapeutic_area = 'Oncology'
    AND c2.therapeutic_area = 'Oncology'
  COLUMNS (
    c1.compound_name AS compound_a,
    c2.compound_name AS compound_b,
    t.target_name    AS shared_target,
    t.gene_name      AS gene_name,
    b1.affinity_nm   AS affinity_a_nm,
    b2.affinity_nm   AS affinity_b_nm
  )
)
ORDER BY compound_a, compound_b, affinity_a_nm;

Sonuçlarda göreceğiniz veriler şunlardır:

3. Çeyrek Sonuç Grafiği

Grafik Görselleştirme

SQL düzenleyicide aşağıdaki kodu çalıştırarak grafiği doğrudan BigQuery'de görselleştirebilirsiniz.

GRAPH `drug_target_graph.drug_target_interaction_graph`
MATCH p = (c1:Compound)-[b1:BINDS_TO]->(t:Target)<-[b2:BINDS_TO]-(c2:Compound)
WHERE c1.compound_id < c2.compound_id
  AND c1.therapeutic_area = 'Oncology'
RETURN
  TO_JSON(p) AS path

Bu çift yönlü geçiş, aynı protein hedefinde birleşen bileşik çiftleri ortaya çıkarır. Bu, düz bir etkileşim tablosunda fark edilmesi zor olan ancak grafik olarak hemen görülebilen bir modeldir. İlaç keşfinde, paylaşılan hedef çiftler kombinasyon tedavisi tasarımının başlangıç noktasıdır: Bir kanser yolundaki aynı düğüme isabet eden iki bileşik sinerjik bir etki yaratabilir veya alternatif olarak, ardışık düzende istenmeyen bir yedekliliğe işaret edebilir.

Grafik Görselleştirme

8. 4. Sorgu: Hastalık Yayılımı Etki Alanı

Her bileşiğin biyolojik etkisi ne kadar geniş? Şu soruyu yanıtlamak için toplama ile 2 atlamalı geçiş gerçekleştirelim: Her bileşik, hastalık alanına göre gruplandırılmış olarak kaç biyolojik yolu ve farklı hedefi etkiliyor?

SQL Düzenleyici'de aşağıdaki sorguyu çalıştırın:

SELECT
  compound_name,
  dev_stage,
  disease_area,
  COUNT(DISTINCT pathway_id) AS pathways_affected,
  COUNT(DISTINCT target_id)  AS targets_involved,
  STRING_AGG(DISTINCT pathway_name ORDER BY pathway_name) AS pathway_list
FROM GRAPH_TABLE(
  drug_target_graph.drug_target_interaction_graph
  MATCH (c:Compound)-[b:BINDS_TO]->(t:Target)-[p:PARTICIPATES_IN]->(pw:Pathway)
  COLUMNS (
    c.compound_name AS compound_name,
    c.dev_stage     AS dev_stage,
    t.target_id     AS target_id,
    pw.pathway_id   AS pathway_id,
    pw.pathway_name AS pathway_name,
    pw.disease_area AS disease_area
  )
)
GROUP BY compound_name, dev_stage, disease_area
ORDER BY compound_name, pathways_affected DESC;

Sonuçlarda görecekleriniz:

Graph q4 Result

9. 5. Sorgu: Güvenli Bileşik Seçimi

Son olarak, yüksek onkoloji kapsamına sahip ancak hERG (kalp) dışı hedef yükümlülüklerinden açıkça kaçınan bileşikler için sorgu oluşturalım. Bu, ilaç keşfi işlem hatlarındaki yaygın "önce güvenlik" seçim kalıplarıyla eşleşir.

SQL Düzenleyici'de aşağıdaki sorguyu çalıştırın:

WITH oncology_compounds AS (
  SELECT DISTINCT compound_id, compound_name, dev_stage
  FROM GRAPH_TABLE(
    drug_target_graph.drug_target_interaction_graph
    MATCH (c:Compound)-[b:BINDS_TO]->(t:Target)-[p:PARTICIPATES_IN]->(pw:Pathway)
    WHERE pw.disease_area     = 'Oncology'
      AND pw.cancer_relevance = 'high'
    COLUMNS (
      c.compound_id   AS compound_id,
      c.compound_name AS compound_name,
      c.dev_stage     AS dev_stage
    )
  )
),
herg_risk_compounds AS (
  SELECT DISTINCT compound_id
  FROM GRAPH_TABLE(
    drug_target_graph.drug_target_interaction_graph
    MATCH (c:Compound)-[b:BINDS_TO]->(t:Target)
    WHERE t.gene_name = 'KCNH2'
    COLUMNS (c.compound_id AS compound_id)
  )
)
SELECT
  o.compound_name,
  o.dev_stage,
  'Clean cardiac profile' AS cardiac_safety
FROM oncology_compounds o
LEFT JOIN herg_risk_compounds h ON o.compound_id = h.compound_id
WHERE h.compound_id IS NULL
ORDER BY o.dev_stage, o.compound_name;

Sonuçlarda göreceğiniz çıkış aşağıda verilmiştir:

5. Soru Grafiği Sonucu

Temel güvenlik ve etkinlik profillerini ayıklamak için BigQuery'de gelişmiş grafik geçişlerini başarıyla gerçekleştirdiniz.

10. Bonus bölüm: Grafiğinizle sohbet etme

BigQuery Etkileşimli Analytics artık bilgi kaynağı olarak grafiği destekliyor. Bu özellik, yeni oluşturduğunuz grafikle doğal dilde sohbet etmenize olanak tanır.

Başlangıç: Bilgi kaynağı olarak grafik ekleme

Başlamak için buradaki adımları uygulayarak etkileşimli bir ajan oluşturun. Arama çubuğundan oluşturduğunuz grafiği seçin.

Etkileşimli Analytics kurulumunu grafikleştirme

Grafiğinizle sohbet etmek için BigQuery Etkileşimli Analytics'i kullanma

Bilgi kaynağını grafik olarak ekledikten sonra etkileşimli analiz aracısı kurulumunun geri kalanını tamamlayın.

Ardından grafiğinizle doğal dilde sohbet etmeye başlayabilirsiniz.

Grafiğinizle sohbet edin

Ek sorular

  1. Şu anda 2. aşama denemelerinde olan bileşiklerin tüm hedefleri nelerdir?
  2. Kardiyovasküler ve onkoloji bileşikleri arasında hangi hedefler paylaşılıyor?

11. Temizleme

Google Cloud hesabınızın sürekli olarak ücretlendirilmesini önlemek için bu codelab sırasında oluşturulan kaynakları silin.

Şemayı ve tüm tabloları kademeli olarak silmek için aşağıdaki sorguyu çalıştırın:

DROP SCHEMA IF EXISTS drug_target_graph CASCADE;

12. Tebrikler

Tebrikler! BigQuery Graph'i kullanarak bir ilaç-hedef etkileşim ağını başarıyla modelleyip analiz ettiniz.

Öğrendikleriniz

  • Varlık ilişkilerini (bileşikler, hedefler, yollar) özellik grafiği olarak modelleme
  • BigQuery'de şemayı tanımlama ve özellik grafiği oluşturma
  • GQL kullanarak karmaşık grafik geçişleri yazma ve bunları geleneksel SQL ile karşılaştırma.
  • Yaşam bilimleri alanındaki sorunları çözmek için GRAPH_TABLE, MATCH ve çift yönlü eşleşmeden nasıl yararlanılır?

Referans belgeleri