scGPT 完整教學
Repository: https://github.com/bowang-lab/scGPT Stars: 1577 | Tags: single-cell, foundation-model License: MIT | Language: Python (Jupyter Notebook) | Version: 0.2.5 Documentation: https://scgpt.readthedocs.io/en/latest/ Paper: scGPT: Towards Building a Foundation Model for Single-Cell Multi-omics Using Generative AI (Nature Methods, 2024)
2. 核心架構
2.1 整體架構圖
flowchart TB
subgraph INPUT["輸入層 Input Layer"]
RAW["scRNA-seq / scATAC-seq
Raw Count Matrix"]
PREP["Preprocessor
normalize + log1p + binning"]
RAW --> PREP
end
subgraph TOKENIZE["Token 化 Tokenization"]
GV["GeneVocab
基因詞彙表
gene name → token ID"]
GE["GeneEncoder
Gene Embedding"]
VE["ValueEncoder
Expression Value Embedding"]
BE["BatchEncoder
Batch Label Embedding
(optional)"]
GV --> GE
PREP --> VE
PREP --> GV
end
subgraph TRANSFORMER["Transformer Backbone"]
EMB["Gene Emb + Value Emb + Batch Emb
→ Combined Embedding"]
CLS["[CLS] Token
Cell-level Representation"]
LAYERS["N × Transformer Encoder Layer
(Flash Attention optional)"]
DSBN["DSBN
Domain-Specific
Batch Normalization"]
GE --> EMB
VE --> EMB
BE --> EMB
CLS --> LAYERS
EMB --> LAYERS
DSBN -.-> LAYERS
end
subgraph HEADS["下游任務頭 Task Heads"]
MVC["MVC Head
Masked Value
Prediction"]
DAB["DAB Head
Domain Adaptation
via Batch Discriminator"]
CLF["Classification Head
Cell Type Annotation"]
GRN_H["GRN Head
Attention-based
Gene Regulation"]
PERT["Perturbation Head
Gene Perturbation
Prediction"]
end
LAYERS --> MVC
LAYERS --> DAB
LAYERS --> CLF
LAYERS --> GRN_H
LAYERS --> PERT
style INPUT fill:#e8f4f8,stroke:#2196F3
style TOKENIZE fill:#fff3e0,stroke:#FF9800
style TRANSFORMER fill:#f3e5f5,stroke:#9C27B0
style HEADS fill:#e8f5e9,stroke:#4CAF50
2.2 關鍵設計決策
基因作為 Token (Gene-as-Token):與 NLP 中的 word token 類似,scGPT 將每個基因視為一個 token。每個細胞的基因表達譜就是一條「句子」,其中 token 順序由非零基因的排列決定。
雙重編碼 (Dual Encoding):
- GeneEncoder:將基因 ID 映射為 d_model 維向量(透過
nn.Embedding) - ValueEncoder:將基因表達值映射為同維度向量(支援 continuous / category / scaling 三種模式)
- 兩者相加後輸入 Transformer
CLS Token:插入於序列開頭的特殊 token,其最終表徵即為整個細胞的嵌入向量 (Cell Embedding)。
訓練目標 (Training Objectives):
| 目標 | 縮寫 | 說明 |
|---|---|---|
| Masked Value Prediction | MVC | 遮蔽部分基因的表達值並預測,類似 BERT 的 MLM |
| Elastic Cell Similarity | ECS | 鼓勵同類型細胞的嵌入彼此靠近 |
| Domain Adaptation by Batch | DAB | 對抗式訓練消除批次效應 |
| Generative Training | GEN | 自回歸方式逐基因生成表達值 |
2.3 檔案結構
1scGPT/
2├── scgpt/
3│ ├── __init__.py # v0.2.5, 匯出核心模組
4│ ├── model/
5│ │ ├── model.py # TransformerModel 主模型
6│ │ ├── generation_model.py # TransformerGenerator 擾動預測
7│ │ ├── multiomic_model.py # MultiOmicTransformerModel 多體學
8│ │ ├── flash_attn_compat.py # Flash Attention 相容層
9│ │ ├── dsbn.py # Domain-Specific BatchNorm
10│ │ └── grad_reverse.py # Gradient Reversal Layer
11│ ├── tokenizer/
12│ │ ├── gene_tokenizer.py # GeneVocab 基因詞彙表
13│ │ ├── default_gene_vocab.json
14│ │ └── default_census_vocab.json
15│ ├── tasks/
16│ │ ├── cell_emb.py # Cell Embedding 推論
17│ │ └── grn.py # GRN 推斷 (GeneEmbedding)
18│ ├── scbank/ # 資料管理模組
19│ ├── preprocess.py # Preprocessor 資料前處理
20│ ├── loss.py # masked_mse_loss 等損失函數
21│ ├── trainer.py # 訓練迴圈
22│ ├── data_collator.py # DataCollator
23│ └── data_sampler.py # SubsetsBatchSampler
24├── tutorials/ # 7 個 Jupyter Notebook 教學
25│ ├── Tutorial_Integration.ipynb
26│ ├── Tutorial_Annotation.ipynb
27│ ├── Tutorial_Perturbation.ipynb
28│ ├── Tutorial_GRN.ipynb
29│ ├── Tutorial_Attention_GRN.ipynb
30│ ├── Tutorial_Reference_Mapping.ipynb
31│ ├── Tutorial_Multiomics.ipynb
32│ └── zero-shot/ # Zero-shot 應用教學
33├── examples/
34│ └── finetune_integration.py # 批次整合微調範例
35├── data/
36│ └── cellxgene/ # CellXGene 資料下載腳本
37└── docs/ # ReadTheDocs 文件
3. 安裝與設定
3.1 環境需求
| 需求 | 最低版本 | 建議版本 |
|---|---|---|
| Python | >= 3.7.13 | 3.10+ |
| PyTorch | >= 1.13.0 | 2.2+ |
| CUDA | 11.7+ | 12.x(若使用 Flash Attention) |
| R | >= 3.6.1 | 4.x(部分評估指標需要) |
| GPU 記憶體 | 8 GB | 16+ GB(全模型微調) |
3.2 使用 uv 安裝(推薦)
1# 建立隔離環境
2uv venv scgpt-env --python 3.10
3source scgpt-env/bin/activate
4
5# 安裝 scGPT
6uv pip install scgpt
7
8# [可選] 安裝 Flash Attention 2(需 CUDA 12.x + Ampere 以上 GPU)
9uv pip install "flash-attn>=2.8.0" einops
10
11# [可選] 安裝 wandb 用於訓練監控
12uv pip install wandb
13
14# [可選] 安裝 FAISS 用於 Reference Mapping
15uv pip install faiss-gpu # 或 faiss-cpu
3.3 從原始碼安裝(開發用)
1git clone https://github.com/bowang-lab/scGPT.git
2cd scGPT
3uv venv .venv --python 3.10
4source .venv/bin/activate
5uv pip install -e ".[dev]"
3.4 下載預訓練模型
1# 建議下載 whole-human 模型(最通用)
2mkdir -p save/scGPT_human
3# 從 Google Drive 下載 checkpoint 資料夾:
4# https://drive.google.com/drive/folders/1oWh_-ZRdhtoGQ2Fw24HP41FgLoomVo-y
5
6# 下載後應有以下檔案:
7ls save/scGPT_human/
8# best_model.pt args.json vocab.json
注意:每個 checkpoint 資料夾內含
vocab.json(基因名稱到 ID 的映射)。若需要 ENSEMBL ID 轉換,可使用官方提供的gene_info.csv。
3.5 驗證安裝
1import scgpt
2print(f"scGPT version: {scgpt.__version__}")
3
4import torch
5print(f"PyTorch: {torch.__version__}, CUDA: {torch.cuda.is_available()}")
6
7from scgpt.model import TransformerModel
8from scgpt.tokenizer import GeneVocab
9print("Core modules imported successfully.")
4. 使用方式與程式碼範例
4.1 範例一:Zero-shot Cell Embedding (零樣本細胞嵌入)
此範例展示如何使用預訓練模型直接取得細胞嵌入向量,無需微調。適用於快速探索新資料集。
1import numpy as np
2import scanpy as sc
3import torch
4from scgpt.tasks.cell_emb import get_batch_cell_embeddings
5from scgpt.model import TransformerModel
6from scgpt.tokenizer import GeneVocab
7from scgpt.utils import load_pretrained
8
9# === 1. 載入資料 ===
10adata = sc.datasets.pbmc3k_processed()
11sc.pp.filter_genes(adata, min_cells=3)
12
13# === 2. 載入預訓練模型與詞彙表 ===
14model_dir = "save/scGPT_human"
15vocab = GeneVocab.from_file(f"{model_dir}/vocab.json")
16vocab.set_default_index(vocab["<pad>"])
17
18# 比對基因名稱與詞彙表
19gene_ids_in_vocab = np.array([
20 vocab[gene] if gene in vocab else vocab["<pad>"]
21 for gene in adata.var_names
22])
23adata.var["id_in_vocab"] = gene_ids_in_vocab
24
25# 篩選詞彙表中存在的基因
26valid_genes = adata.var["id_in_vocab"] >= 0
27adata = adata[:, valid_genes].copy()
28
29# === 3. 模型設定 ===
30model_configs = {
31 "embsize": 512,
32 "nhead": 8,
33 "d_hid": 512,
34 "nlayers": 12,
35 "nlayers_cls": 3,
36 "n_cls": 1,
37 "pad_value": -2,
38}
39
40model = TransformerModel(
41 ntoken=len(vocab),
42 d_model=model_configs["embsize"],
43 nhead=model_configs["nhead"],
44 d_hid=model_configs["d_hid"],
45 nlayers=model_configs["nlayers"],
46 nlayers_cls=model_configs["nlayers_cls"],
47 n_cls=model_configs["n_cls"],
48 vocab=vocab,
49 pad_value=model_configs["pad_value"],
50 cell_emb_style="cls",
51)
52
53# 載入預訓練權重
54load_pretrained(model, torch.load(f"{model_dir}/best_model.pt"))
55model.eval()
56device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
57model.to(device)
58
59# === 4. 取得細胞嵌入 ===
60cell_embeddings = get_batch_cell_embeddings(
61 adata,
62 cell_embedding_mode="cls",
63 model=model,
64 vocab=vocab,
65 max_length=1200,
66 batch_size=64,
67 model_configs=model_configs,
68 gene_ids=np.array(adata.var["id_in_vocab"]),
69)
70
71# === 5. 視覺化 ===
72adata.obsm["X_scGPT"] = cell_embeddings
73sc.pp.neighbors(adata, use_rep="X_scGPT")
74sc.tl.umap(adata)
75sc.pl.umap(adata, color="louvain", title="scGPT Zero-shot Embedding")
4.2 範例二:Fine-tuning for Batch Integration (批次整合微調)
此範例展示 scGPT 最核心的使用情境——微調模型以整合來自不同實驗批次的 scRNA-seq 資料。
1import scanpy as sc
2import scvi
3import torch
4import numpy as np
5from scgpt.preprocess import Preprocessor
6from scgpt.model import TransformerModel, AdversarialDiscriminator
7from scgpt.tokenizer import GeneVocab
8from scgpt.tokenizer import tokenize_and_pad_batch, random_mask_value
9from scgpt.loss import masked_mse_loss, criterion_neg_log_bernoulli
10from scgpt.utils import set_seed, eval_scib_metrics
11
12set_seed(42)
13
14# === 1. 載入多批次資料 ===
15adata = scvi.data.pbmc_dataset() # 含多個批次的 PBMC 資料
16adata.obs["celltype"] = adata.obs["str_labels"].astype("category")
17adata.var = adata.var.set_index("gene_symbols")
18
19# === 2. 前處理 ===
20preprocessor = Preprocessor(
21 use_key="X",
22 filter_gene_by_counts=3,
23 filter_cell_by_counts=False,
24 normalize_total=1e4,
25 log1p=True,
26 subset_hvg=1200, # 選取 1200 個高變異基因
27 hvg_flavor="seurat_v3",
28 binning=51, # 離散化為 51 個 bin
29)
30preprocessor(adata, batch_key="batch")
31
32# === 3. 載入詞彙表並建立模型 ===
33model_dir = "save/scGPT_human"
34vocab = GeneVocab.from_file(f"{model_dir}/vocab.json")
35vocab.set_default_index(vocab["<pad>"])
36
37special_tokens = ["<pad>", "<cls>", "<eoc>"]
38for token in special_tokens:
39 if token not in vocab:
40 vocab.append_token(token)
41
42# 比對基因
43gene2idx = {gene: vocab[gene] for gene in adata.var_names if gene in vocab}
44adata = adata[:, list(gene2idx.keys())].copy()
45gene_ids = np.array([gene2idx[g] for g in adata.var_names])
46
47# 建立模型(參數從 checkpoint 的 args.json 讀取)
48model = TransformerModel(
49 ntoken=len(vocab),
50 d_model=512,
51 nhead=8,
52 d_hid=512,
53 nlayers=12,
54 nlayers_cls=3,
55 n_cls=len(adata.obs["batch"].unique()),
56 vocab=vocab,
57 dropout=0.2,
58 pad_value=-2,
59 do_mvc=True, # 啟用 Masked Value Prediction
60 do_dab=True, # 啟用 Domain Adaptation
61 use_batch_labels=True,
62 num_batch_labels=len(adata.obs["batch"].unique()),
63 domain_spec_batchnorm="dsbn",
64 input_emb_style="continuous",
65 n_input_bins=51,
66 cell_emb_style="cls",
67 explicit_zero_prob=True,
68 use_fast_transformer=True,
69 fast_transformer_backend="flash",
70 pre_norm=False,
71)
72
73# === 4. 微調訓練(簡化版) ===
74optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)
75scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=2, gamma=0.9)
76
77# 訓練迴圈(此處為概念示意,完整版請見 examples/finetune_integration.py)
78device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
79model.to(device)
80
81for epoch in range(30):
82 model.train()
83 # ... DataLoader, tokenize_and_pad_batch, random_mask_value ...
84 # loss = masked_mse_loss(...) + dab_weight * dab_loss + ecs_loss
85 # loss.backward(); optimizer.step()
86 pass
87
88# === 5. scIB 指標評估 ===
89# results = eval_scib_metrics(adata, embed_key="X_scGPT", ...)
4.3 範例三:Gene Regulatory Network Inference (基因調控網路推斷)
此範例展示如何從 scGPT 的 Attention 權重中萃取 GRN (Gene Regulatory Network; 基因調控網路)。
1import numpy as np
2import scanpy as sc
3from scgpt.tasks.grn import GeneEmbedding
4
5# === 1. 假設已完成微調,取得基因嵌入 ===
6# gene_embeddings_dict 是 {gene_name: embedding_vector} 的字典
7# 可從微調後模型的 GeneEncoder 權重取得:
8# gene_embeddings = model.encoder.embedding.weight.detach().cpu().numpy()
9# gene_names = vocab.get_itos()
10# gene_embeddings_dict = {
11# gene_names[i]: gene_embeddings[i]
12# for i in range(len(gene_names))
13# if gene_names[i] not in special_tokens
14# }
15
16# 模擬範例資料
17np.random.seed(42)
18gene_names = ["TP53", "BRCA1", "MYC", "CDK4", "RB1", "MDM2", "CDKN2A", "E2F1"]
19gene_embeddings_dict = {
20 gene: np.random.randn(512).astype(np.float32)
21 for gene in gene_names
22}
23
24# === 2. 建立 GeneEmbedding 物件 ===
25ge = GeneEmbedding(gene_embeddings_dict)
26
27# === 3. 計算基因相似度(推斷調控關係) ===
28# 找出與 TP53 最相似的基因
29sim_df = ge.compute_similarities("TP53")
30print(sim_df.head(10))
31
32# === 4. 建立基因嵌入的 AnnData 並聚類 ===
33gdata = ge.get_adata(resolution=5)
34sc.pl.umap(gdata, color="leiden", title="Gene Embedding Clusters (Metagenes)")
35
36# === 5. 視覺化特定 Metagene ===
37ge.plot_metagene(gdata, mg="0", title="Metagene 0: Cell Cycle Regulators")
38
39# === 6. 匯出為 NetworkX 圖(進階) ===
40import networkx as nx
41from sklearn.metrics.pairwise import cosine_similarity
42
43embeddings_matrix = np.array([gene_embeddings_dict[g] for g in gene_names])
44sim_matrix = cosine_similarity(embeddings_matrix)
45
46G = nx.Graph()
47threshold = 0.3 # 相似度閾值
48for i in range(len(gene_names)):
49 for j in range(i + 1, len(gene_names)):
50 if sim_matrix[i, j] > threshold:
51 G.add_edge(gene_names[i], gene_names[j], weight=float(sim_matrix[i, j]))
52
53print(f"GRN edges: {G.number_of_edges()}, nodes: {G.number_of_nodes()}")
5. 在蛋白質設計/基因組模擬生態系中的定位
5.1 Bio-SDG Domain 5 定位
在 Bio-SDG 生態系的 Domain 5「蛋白質設計與基因組模擬」中,scGPT 屬於 B. Genomics & Single-cell Simulation (基因組與單細胞模擬) 子領域的核心工具:
1Domain 5: 蛋白質設計與基因組模擬
2├── A. Protein Design & Generation (14 repos)
3│ ├── Language Models: ESM, ProstT5, AbLang, ProGen2
4│ ├── Diffusion: RFdiffusion, Chroma, EvoDiff, SE3-diffusion, ...
5│ └── Antibody: DiffAb, AbLang
6│
7└── B. Genomics & Single-cell Simulation (8 repos)
8 ├── 【scGPT】 ← 單細胞基礎模型(本教學)
9 ├── scvi-tools — 機率式單細胞分析框架
10 ├── scgen — 單細胞擾動建模
11 ├── splatter — scRNA-seq 模擬
12 ├── HyenaDNA — 長序列基因組模型
13 ├── wgsim — 全基因組序列模擬
14 ├── biomed-multi-alignment — 多體學對齊
15 └── PyFeat — 基因組特徵生成
5.2 在藥物開發管線中的角色
| 管線階段 | scGPT 貢獻 | 具體應用 |
|---|---|---|
| WP1 標的識別 (Target ID) | 從患者 scRNA-seq 中識別疾病特異性細胞亞群 | Cell Embedding + Annotation 找出腫瘤微環境中的關鍵免疫細胞 |
| WP2 標的驗證 (Target Validation) | GRN 推斷揭示標的基因的調控網路 | Attention-based GRN 顯示 drug target 的上下游訊號 |
| WP3 先導化合物優化 (Lead Optimization) | 擾動預測評估 drug target 敲除效果 | Perturbation Prediction 預測 KO/KD 後的轉錄組變化 |
| WP7 生物製劑設計 (Biologics) | 與蛋白質設計工具互補 | scGPT 識別的 surface marker → AbLang/DiffAb 設計抗體 |
5.3 Blue Ocean 機會
合成單細胞資料生成 (Synthetic scRNA-seq Generation):scGPT 的生成式能力(TransformerGenerator)可產生合成的單細胞表達譜,用於增強訓練資料不足的罕見細胞類型,這在 pre-IND 階段的 patient stratification (患者分層) 特別有價值。
跨物種遷移學習 (Cross-species Transfer):目前 scGPT 主要在人類資料上預訓練,但其架構可直接擴展至動物實驗資料。這為 pre-IND 的動物試驗到人體試驗的轉譯 (Translation) 提供了計算橋樑。
多體學藥物反應預測:結合 MultiOmicTransformerModel 與蛋白質語言模型(如 ESM),可建立從基因組到蛋白質組的端到端藥物反應預測管線。
6. 與其他工具的整合
6.1 與 Domain 5 生態系工具的整合
| 整合對象 | 整合方式 | 用途 |
|---|---|---|
| scvi-tools | scGPT 依賴 scvi-tools 做為資料載入後端 | scvi.data.pbmc_dataset() 等標準資料集載入 |
| scgen | scGPT Perturbation → scgen 驗證 | 交叉驗證擾動預測結果 |
| splatter | splatter 模擬資料 → scGPT 測試 | 在已知 ground truth 的模擬資料上評估 scGPT 準確性 |
| HyenaDNA | HyenaDNA 序列特徵 → scGPT 整合 | 基因組序列層級特徵 + 表達量層級特徵的多模態融合 |
| ESM / ProstT5 | scGPT 標的基因 → 蛋白質結構預測 | 從 GRN 中識別的標的蛋白質進行結構分析 |
| RFdiffusion / DiffAb | scGPT 識別 surface marker → 抗體設計 | 表面標記蛋白識別後,設計針對性抗體 |
6.2 與 scanpy 生態系的整合
scGPT 原生建立在 scanpy/AnnData 之上,所有輸入輸出均使用 AnnData 物件:
1import scanpy as sc
2
3# scGPT 的 cell embedding 存入 adata.obsm
4adata.obsm["X_scGPT"] = cell_embeddings
5
6# 可直接使用 scanpy 的下游分析
7sc.pp.neighbors(adata, use_rep="X_scGPT")
8sc.tl.leiden(adata, resolution=0.5)
9sc.tl.umap(adata)
10sc.tl.rank_genes_groups(adata, "leiden", method="wilcoxon")
6.3 與 AIKT Pipeline 的整合
1AIKT Pipeline 整合路徑:
2
3paper-search (Layer 9)
4 → 找到相關 scRNA-seq 資料集的 paper
5 → paper-tutorial (Layer 15) 精讀方法論
6
7scGPT 分析
8 → Cell Embedding / Annotation / GRN
9 → 結果存為 AnnData (.h5ad)
10
11paper-qa-lite (Layer 10)
12 → 對 scGPT 結果 + paper 做 RAG 問答
13
14graphify (Layer 4)
15 → 從分析程式碼建立知識圖
16
17quarkdown (Layer 7) / kami (Layer 11)
18 → 將分析報告轉為 HTML/PDF 交付物
6.4 與 FAISS 的整合(Reference Mapping)
1import faiss
2
3# 建立 3,300 萬細胞的 FAISS 索引
4# (官方教學:tutorials/build_atlas_index_faiss.py)
5index = faiss.read_index("cellxgene_atlas.index") # < 1GB 記憶體
6
7# 查詢 10,000 個細胞,GPU 上 < 1 秒
8query_embeddings = cell_embeddings # shape: (10000, 512)
9distances, indices = index.search(query_embeddings, k=50)
7. 優缺點分析
7.1 優點
| 面向 | 說明 |
|---|---|
| 大規模預訓練 | 3,300 萬細胞的預訓練賦予強大的遷移學習能力,少量樣本即可微調 |
| 多任務統一架構 | 同一個 Transformer backbone 支援 embedding / annotation / GRN / perturbation 多種任務 |
| Zero-shot 能力 | 無需微調即可取得有意義的細胞嵌入,適合快速探索 |
| Nature Methods 驗證 | 頂級期刊發表,有充分的 benchmark 數據支撐 |
| 豐富的 Model Zoo | 器官特異性模型(brain / blood / lung / kidney / heart)+ pan-cancer 模型 |
| FAISS Reference Mapping | 可將查詢細胞映射至 3,300 萬細胞 atlas,效率極高 |
| Flash Attention 支援 | 可選 Flash Attention 加速,大幅降低記憶體消耗 |
| MIT 授權 | 商業友善授權,適合企業內部研發 |
7.2 缺點與限制
| 面向 | 說明 |
|---|---|
| 預訓練程式碼未公開 | To-do list 中「Provide the pretraining code with generative attention masking」尚未完成 |
| Flash Attention 安裝困難 | 對 CUDA 版本與 GPU 架構有嚴格要求,安裝常失敗 |
| 基因組大小限制 | 序列長度受限於 ~1,200 基因(HVG),無法涵蓋全基因組 |
| 人類中心 | 預訓練資料以人類為主,跨物種泛化能力未經充分驗證 |
| Poetry 安裝損壞 | 官方文件指出 poetry 安裝已不同步,僅能用 pip |
| 依賴版本衝突 | orbax<0.1.8 等特定版本限制可能與其他套件衝突 |
| HuggingFace 整合未完成 | integrate-huggingface-model 分支仍為 preliminary |
| 文件與程式碼不一致 | 部分 tutorial notebook 可能需要手動調整路徑與參數 |
7.3 與同類工具的比較
| 特性 | scGPT | scvi-tools (scVI/scANVI) | scgen | Geneformer |
|---|---|---|---|---|
| 架構 | Transformer (GPT-like) | VAE | VAE + GAN | Transformer (BERT-like) |
| 預訓練規模 | 3,300 萬細胞 | 無大規模預訓練 | 無 | 3,000 萬細胞 |
| 主要優勢 | 多任務統一 | 機率建模嚴謹 | 擾動建模 | 基因排序創新 |
| GRN 推斷 | 有(Attention-based) | 無 | 無 | 有 |
| 擾動預測 | 有 | 間接支援 | 核心功能 | 有 |
| Reference Mapping | 有(FAISS) | 有(scArches) | 無 | 無 |
| 商業授權 | MIT | BSD-3 | MIT | Apache-2.0 |
7.4 建議使用策略
- 快速探索:使用
whole-human模型 + zero-shot embedding,無需微調即可分析新資料集 - 批次整合:啟用 DSBN + DAB 進行微調,配合 scIB metrics 評估整合品質
- 標的識別:結合 cell annotation + GRN inference,從 Attention 權重中萃取潛在 drug target
- 癌症研究:使用
pan-cancer模型作為微調起點,可更快收斂 - 生產管線:建議固定 checkpoint 版本、使用 FAISS 建立離線索引,降低推論延遲
一句話總結:scGPT 是首個登上 Nature Methods 的單細胞基礎模型,以 GPT 式 Transformer 在 3,300 萬細胞上預訓練,統一支援 cell embedding、annotation、batch integration、GRN inference 與 perturbation prediction 五大任務,為藥物開發管線的標的識別(WP1-WP2)提供了強大的計算基礎設施。
Comments