1. Giới thiệu
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng BigQuery Graph để mô hình hoá và phân tích mạng lưới tương tác giữa thuốc và mục tiêu. Bạn sẽ tận dụng sức mạnh của các truy vấn biểu đồ (GQL) để khám phá cách thuốc tương tác với các mục tiêu sinh học, xác định các tác dụng phụ tiềm ẩn (chẳng hạn như nguy cơ tim mạch) và khám phá các liệu pháp kết hợp tiềm ẩn.
🧬 Trường hợp sử dụng – Mạng lưới tương tác giữa thuốc và mục tiêu
Câu hỏi về doanh nghiệp: Bán kính ảnh hưởng đầy đủ của một hợp chất là gì – hợp chất đó liên kết với mục tiêu nào, đường dẫn sinh học nào bị ảnh hưởng và những lĩnh vực bệnh nào có liên quan?
Bảng:
Bảng | Mô tả |
| Các phân tử thuốc có cơ chế hoạt động và giai đoạn phát triển |
| Các mục tiêu protein có tên gen và mã nhận dạng UniProt |
| Ái lực liên kết giữa hợp chất và mục tiêu (mục tiêu chính + mục tiêu phụ) |
| Các đường dẫn sinh học có mối liên kết với lĩnh vực bệnh |
| Bảng giao nhau liên kết các mục tiêu với các đường dẫn mà chúng tham gia |
Mô hình biểu đồ thuộc tính:
(Compound)-[BINDS_TO {affinity_nm, ic50_nm, interaction_type}]->(Target)
(Target)-[PARTICIPATES_IN {role, importance_score}]->(Pathway)

🔍 Truy vấn minh hoạ
Truy vấn | Nội dung hiển thị |
Câu hỏi 1: Hồ sơ liên kết mục tiêu | Truyền tải 1 bước – hợp chất đến tất cả mục tiêu chính và mục tiêu phụ |
Câu hỏi 2: Phát hiện nguy cơ tim mạch hERG | Truyền tải 2 bước – hợp chất → mục tiêu hERG → đường dẫn tim mạch |
Câu hỏi 3: Các cặp hợp chất có mục tiêu chung | So khớp hai chiều – hai hợp chất hội tụ trên cùng một nút mục tiêu |
Câu hỏi 4: Bán kính ảnh hưởng của đường dẫn bệnh | Tổng hợp 2 bước – phạm vi bao phủ đầy đủ của đường dẫn và lĩnh vực bệnh cho mỗi hợp chất |
Câu hỏi 5: Lựa chọn hợp chất an toàn | Các hợp chất có phạm vi bao phủ cao về ung thư nhưng không có nguy cơ tim mạch hERG |
Bạn sẽ thực hiện
- Tạo tập dữ liệu và lược đồ BigQuery cho mạng lưới tương tác giữa thuốc
- Tải dữ liệu mẫu (Hợp chất, Mục tiêu, Tương tác, Đường dẫn, Đường dẫn mục tiêu)
- Tạo Biểu đồ thuộc tính trong BigQuery kết nối các thực thể này
- Truy vấn biểu đồ để hiểu các tương tác giữa hợp chất, đường dẫn sinh học và bán kính ảnh hưởng của bệnh bằng cách sử dụng tính năng truyền tải biểu đồ (
GRAPH_TABLEvàMATCH) - So sánh GQL và SQL tiêu chuẩn để hiểu tính đơn giản và sức mạnh biểu đạt của cú pháp biểu đồ
Bạn cần có
- Trình duyệt web như Chrome
- Dự án trên Google Cloud đã bật tính năng thanh toán
Lớp học lập trình này dành cho nhà phát triển ở mọi cấp độ, kể cả người mới bắt đầu.
2. Trước khi bắt đầu
Tạo một dự án trên Google Cloud
- Trong Bảng điều khiển Google Cloud, hãy chọn hoặc tạo một dự án trên Google Cloud.
- Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Cloud.
Bắt đầu Cloud Shell
- Nhấp vào Kích hoạt Cloud Shell ở đầu bảng điều khiển Cloud.
- Xác minh quy trình xác thực:
gcloud auth list
- Xác nhận dự án của bạn:
gcloud config get project
- Đặt dự án nếu cần:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
Bật API
Chạy lệnh này để bật API BigQuery bắt buộc:
gcloud services enable bigquery.googleapis.com
3. Xác định lược đồ và tải dữ liệu
Trước tiên, bạn cần tạo một tập dữ liệu để lưu trữ các bảng liên quan đến biểu đồ và điền dữ liệu mẫu vào các bảng đó.
- Chuyển đến BigQuery Studio trong Bảng điều khiển Google Cloud.
- Nhấp vào Trình chỉnh sửa SQL để mở thẻ truy vấn mới.
- Chạy câu lệnh sau để tạo tập dữ liệu
drug_target_graph:
CREATE SCHEMA IF NOT EXISTS drug_target_graph
OPTIONS (location = 'US');
Bây giờ, hãy tạo 5 bảng nguồn bằng cách chạy các truy vấn DDL sau trong BigQuery Studio.
1. Tạo bảng compounds
Chứa các phân tử thuốc, cơ chế hoạt động, giai đoạn phát triển và lĩnh vực điều trị.
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. Tạo bảng targets
Chứa các mục tiêu protein, tên gen, mã nhận dạng UniProt và các lớp mục tiêu.
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. Tạo bảng interactions
Chứa dữ liệu về ái lực liên kết giữa hợp chất và mục tiêu (mục tiêu chính so với mục tiêu phụ).
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. Tạo bảng pathways
Chứa các đường dẫn sinh học, các lĩnh vực bệnh liên quan và mức độ liên quan đến ung thư.
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. Tạo bảng target_pathways
Bảng giao nhau liên kết các mục tiêu với các đường dẫn sinh học mà chúng tham gia.
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. Tạo biểu đồ thuộc tính
Sau khi tạo thành công các bảng, bạn có thể tạo biểu đồ thuộc tính. Biểu đồ này liên kết các nút (Hợp chất, Mục tiêu, Đường dẫn) bằng cách sử dụng các bảng cạnh (Interactions và Target Pathways).
Chạy câu lệnh sau trong Trình chỉnh sửa SQL của BigQuery Studio:
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)
);
Thao tác này sẽ tạo một biểu đồ có tên là drug_target_interaction_graph trong tập dữ liệu của bạn.

5. Truy vấn 1: Hồ sơ liên kết mục tiêu đầy đủ cho mỗi hợp chất
Hãy chạy truy vấn biểu đồ đầu tiên. Đây là truyền tải 1 bước giúp trả lời câu hỏi: Hợp chất nào liên kết với mục tiêu nào và ái lực của chúng là gì?
Truy vấn GQL
Chạy truy vấn sau trong Trình chỉnh sửa SQL:
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;
Sau đây là nội dung bạn sẽ thấy trong kết quả:

6. Truy vấn 2: Phát hiện nguy cơ tim mạch
Câu hỏi về doanh nghiệp
Trong quá trình khám phá thuốc, một trong những lý do phổ biến nhất khiến một hợp chất đầy hứa hẹn thất bại trong các thử nghiệm lâm sàng là độc tính tim mạch – cụ thể là liên kết không chủ ý với protein hERG (gen: KCNH2), một kênh ion kali điều chỉnh nhịp tim. Tác động phụ trên hERG có thể gây ra chứng rối loạn nhịp tim gây tử vong và là nguyên nhân của một số trường hợp thu hồi thuốc nổi tiếng.
Câu hỏi chúng ta muốn trả lời là:
"Những hợp chất nào trong quy trình của chúng tôi có sự kiện liên kết phụ trên protein hERG và những đường dẫn tim mạch nào có nguy cơ?"
Đây là câu hỏi 2 bước: chúng ta cần truyền tải từ Hợp chất, thông qua Mục tiêu (hERG), đến Đường dẫn – kết nối 3 loại thực thể trên 2 mối quan hệ trong một truy vấn.
Viết truy vấn GQL
Chạy truy vấn sau trong Trình chỉnh sửa SQL BQ:
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;
Lưu ý cách mệnh đề MATCH đọc gần giống như một câu: "Tìm một Hợp chất liên kết với một Mục tiêu tham gia vào một Đường dẫn" – với các bộ lọc được áp dụng ở mỗi nút và cạnh dọc theo đường dẫn.
Sau đây là dữ liệu bạn sẽ thấy trong kết quả:

Trực quan hoá mạng lưới rủi ro dưới dạng biểu đồ
Một bảng cho chúng ta thấy dữ liệu – nhưng không cho chúng ta thấy cấu trúc của rủi ro. Có nhiều hợp chất hội tụ trên cùng một đường dẫn không? Có một hợp chất có rủi ro cao hay nhiều hợp chất?
Hình ảnh trực quan của biểu đồ sẽ cho thấy ngay điều này. Chạy ô bên dưới để hiển thị cùng một quá trình truyền tải 2 bước dưới dạng mạng lưới tương tác:
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
Bạn sẽ thấy một biểu đồ như sau:

Mỗi đường dẫn trong biểu đồ theo dõi một chuỗi trách nhiệm hoàn chỉnh: một hợp chất (nút màu xanh dương) liên kết với protein hERG ở trung tâm, liên kết với một hoặc nhiều đường dẫn tim mạch (nút màu xanh lá cây). Danh sách các hàng phẳng trong bảng giờ đây là một mạng lưới rủi ro có thể nhìn thấy – các hợp chất có nhiều đường dẫn tiếp xúc sẽ nổi bật ngay lập tức với mức độ ưu tiên cao hơn để xem xét về độ an toàn.
Xem lý do GQL thanh lịch hơn SQL
Để thực thi cùng một truy vấn 2 bước trong SQL tiêu chuẩn, bạn cần 4 phép kết hợp rõ ràng. Bạn đang tốn công sức nhận thức để mô tả cách kết hợp các bảng thay vì mối quan hệ bạn đang tìm kiếm. GQL giúp bạn tập trung vào câu hỏi.
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;
Tìm hiểu sâu hơn – phát hiện rủi ro chuyển hoá nhiều bước
Truy vấn ở trên xác định các hợp chất liên kết trực tiếp với protein hERG. Tuy nhiên, trong quy trình làm việc về độ an toàn của thuốc thực tế, rủi ro đôi khi bị loại bỏ một bước: một hợp chất có thể được chuyển hoá trong cơ thể thành một phân tử thứ cấp (chất chuyển hoá) sau đó liên kết với hERG – một trách nhiệm mà các xét nghiệm liên kết trực tiếp có thể bỏ sót hoàn toàn.
Nếu biểu đồ thuộc tính của bạn bao gồm bảng nút Chất chuyển hoá và cạnh METABOLISES_INTO, bạn có thể mở rộng cùng một mẫu MATCH thành quá trình truyền tải 3 bước:
(Compound)-[METABOLISES_INTO]->(Metabolite)-[BINDS_TO]->
(Target)-[PARTICIPATES_IN]->(Pathway)
Cấu trúc truy vấn GQL sẽ thay đổi chính xác một nút và một cạnh. SQL tương đương sẽ yêu cầu thêm 2 phép kết hợp JOIN. Đây là mẫu giúp quá trình truyền tải biểu đồ đặc biệt mạnh mẽ cho việc phân tích thác an toàn – độ phức tạp của truy vấn tăng tuyến tính trong khi thông tin chi tiết về sinh học tăng theo cấp số nhân.
7. Truy vấn 3: Các cặp hợp chất có mục tiêu chung
Để tìm các ứng viên cho liệu pháp kết hợp, chúng ta có thể xác định thời điểm 2 hợp chất khác nhau liên kết với cùng một nút mục tiêu. Chúng ta sử dụng so khớp hai chiều để trả lời câu hỏi: Những hợp chất ung thư nào hội tụ trên cùng một mục tiêu?
Chạy truy vấn sau trong Trình chỉnh sửa SQL:
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;
Sau đây là dữ liệu bạn sẽ thấy trong kết quả:

Trực quan hoá biểu đồ
Bạn có thể trực quan hoá Biểu đồ ngay trong BigQuery bằng cách chạy mã sau trong trình chỉnh sửa SQL.
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
Quá trình truyền tải hai chiều này cho thấy các cặp hợp chất hội tụ trên cùng một mục tiêu protein – một mẫu khó phát hiện trong bảng tương tác phẳng nhưng có thể nhìn thấy ngay dưới dạng biểu đồ. Trong quá trình khám phá thuốc, các cặp mục tiêu chung là điểm xuất phát cho việc thiết kế liệu pháp kết hợp: 2 hợp chất tác động vào cùng một nút trong đường dẫn ung thư có thể tạo ra hiệu ứng hiệp đồng hoặc báo hiệu sự dư thừa không chủ ý trong quy trình

8. Truy vấn 4: Bán kính ảnh hưởng của đường dẫn bệnh
Tác động sinh học của mỗi hợp chất rộng đến mức nào? Hãy thực hiện truyền tải 2 bước với tính năng tổng hợp để trả lời câu hỏi: Mỗi hợp chất ảnh hưởng đến bao nhiêu đường dẫn sinh học và mục tiêu riêng biệt, được nhóm theo lĩnh vực bệnh?
Chạy truy vấn sau trong Trình chỉnh sửa SQL:
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;
Sau đây là nội dung bạn sẽ thấy trong kết quả:

9. Truy vấn 5: Lựa chọn hợp chất an toàn
Cuối cùng, hãy truy vấn các hợp chất có phạm vi bao phủ cao về ung thư nhưng tránh rõ ràng các trách nhiệm phụ hERG (tim mạch). Điều này phù hợp với các mẫu lựa chọn ưu tiên độ an toàn phổ biến trong quy trình khám phá thuốc.
Chạy truy vấn sau trong Trình chỉnh sửa SQL:
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;
Sau đây là kết quả bạn sẽ thấy:

Bạn đã thực thi thành công các quá trình truyền tải biểu đồ nâng cao trong BigQuery để trích xuất các hồ sơ chính về độ an toàn và hiệu quả!
10. Phần thưởng: Trò chuyện với biểu đồ
Tính năng Phân tích đàm thoại của BigQuery hiện hỗ trợ biểu đồ làm nguồn tri thức. Điều này cho phép bạn trò chuyện với biểu đồ vừa tạo bằng ngôn ngữ tự nhiên.
Bắt đầu: Thêm biểu đồ làm nguồn tri thức
Để bắt đầu, hãy tạo tác nhân đàm thoại theo các bước tại đây. Chọn biểu đồ bạn đã tạo trong thanh tìm kiếm.

Sử dụng tính năng Phân tích đàm thoại của BigQuery để trò chuyện với biểu đồ
Sau khi bạn thêm nguồn tri thức dưới dạng biểu đồ, hãy hoàn tất phần còn lại của quá trình thiết lập tác nhân phân tích đàm thoại .
Sau đó, bạn có thể bắt đầu trò chuyện với biểu đồ bằng ngôn ngữ tự nhiên!

Câu hỏi khác
- Tất cả các mục tiêu cho các hợp chất hiện đang trong giai đoạn 2 của thử nghiệm là gì?
- Những mục tiêu nào được chia sẻ giữa các hợp chất tim mạch và ung thư?
11. Dọn dẹp
Để tránh các khoản phí liên tục cho tài khoản Google Cloud, hãy xoá các tài nguyên được tạo trong lớp học lập trình này.
Chạy truy vấn sau để loại bỏ lược đồ và tất cả các bảng theo tầng:
DROP SCHEMA IF EXISTS drug_target_graph CASCADE;
12. Xin chúc mừng
Xin chúc mừng! Bạn đã mô hình hoá và phân tích thành công mạng lưới tương tác giữa thuốc và mục tiêu bằng BigQuery Graph.
Kiến thức bạn học được
- Cách mô hình hoá mối quan hệ giữa các thực thể (hợp chất, mục tiêu, đường dẫn) dưới dạng biểu đồ thuộc tính.
- Cách xác định lược đồ và tạo Biểu đồ thuộc tính trong BigQuery.
- Cách viết các quá trình truyền tải biểu đồ phức tạp bằng GQL và so sánh chúng với SQL truyền thống.
- Cách tận dụng
GRAPH_TABLE,MATCHvà so khớp hai chiều để giải quyết các vấn đề trong lĩnh vực khoa học sự sống.