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 |
| Etki mekanizması ve geliştirme aşaması olan ilaç molekülleri |
| Gen adları ve UniProt kimlikleri içeren protein hedefleri |
| Bileşik hedef bağlama yakınlığı (birincil hedefler + hedef dışı hedefler) |
| Hastalık alanlarıyla ilişkili biyolojik yollar |
| 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)

🔍 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_TABLEveMATCH) 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
- Google Cloud Console'da bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun.
Cloud Shell'i Başlatma
- Google Cloud Console'un üst kısmında Activate Cloud Shell'i (Cloud Shell'i Etkinleştir) tıklayın.
- Kimlik doğrulamayı doğrulayın:
gcloud auth list
- Projenizi onaylayın:
gcloud config get project
- 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.
- Google Cloud Console'da BigQuery Studio'ya gidin.
- Yeni bir sorgu sekmesi açmak için SQL Düzenleyici'yi tıklayın.
drug_target_graphveri 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.

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:

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:

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:

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:

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.

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:

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:

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.

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.

Ek sorular
- Şu anda 2. aşama denemelerinde olan bileşiklerin tüm hedefleri nelerdir?
- 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,MATCHve çift yönlü eşleşmeden nasıl yararlanılır?