用途:scGPT 是面向单细胞生物学的基础模型,用于对单细胞表达数据生成细胞嵌入并进行注释。
主要能力:从本地检查点目录加载词表与模型,对 AnnData 数据生成每个细胞的嵌入,结果写入 .obsm["X_scGPT"],默认维度 512。下游可接 scanpy 的 pp.neighbors、tl.umap、tl.leiden 做聚类与注释,也可与 scvi-tools 的潜空间比较。
使用方式:环境要求 Python 3.10+(推荐 3.11)、CUDA 12.1+(推荐 12.4+)、GPU 显存 16 GB(推荐 24 GB+)。检查点是原始目录(args.json、best_model.pt、vocab.json),不是 Hugging Face 仓库,需指向目录路径。加载词表:from scgpt.tokenizer.gene_tokenizer import GeneVocab;gv = GeneVocab.from_file("/path/to/scgpt-human/vocab.json"),人类检查点词表大小为 60697。嵌入示例:import anndata as ad;from scgpt.tasks import embed_data;adata = ad.read_h5ad("dataset.h5ad");emb = embed_data(adata, model_dir="/path/to/scgpt-human", gene_col="feature_name", use_fast_transformer=False)。
远程计算:需要 ≥24 GB 显存与约 200 MB 的人类检查点。可先读取 compute_details({provider, mode:'read'}) 获取含 scgpt 与预缓存检查点的环境,再用 host.compute.create(provider) 创建句柄并 submit_job 提交任务,命令为 python3 embed.py,输出 embedded.h5ad,超时 1800 秒。提交后内核不阻塞,等待 compute_done 通知,再用 save_artifacts(payload["featured_files"]) 保存产物。要获取完整结果字典,需重新进入内核并单独绑定计算句柄:h = host.compute.create(provider);res = h.attach_job(job_id).result();h.close()。
限制与注意事项:use_fast_transformer 默认 True,但可能因 flash_attn 无法导入而失败,未确认时可传 False。基因名必须与词表匹配,不匹配的基因会被丢弃,需正确设置 gene_col。若出现 'Vocab' object has no attribute 报错,说明环境中的 torchtext 兼容层过旧,需更新环境。若几乎全部基因被丢弃,检查 adata.var.columns 中的基因列。环境检测若报 "scgpt not in manifest",需将清单键名规范化为 name.lower().replace('-', '_') 后再查找。其余细节暂未提供。