Cell2Sentence大语言模型注释scRNA细胞类型门槛有点高

耶鲁大学和Google的团队推出的大语言模型C2S-Scale (Cell2Sentence),模型参数规模扩展至 270 亿个,能够显著提升其预测和生成能力,并为需要在多细胞环境背景下综合信息的高级下游任务提供支持。预训练模型可用于生物学领域,特别是单细胞转录组学。模型的基本原理是通过将基因表达数据表示为文本来实现,简单点来说,就是将每个细胞的基因表达谱转换为按表达水平排序的基因名称序列,即每个细胞由一个基因名组成的句子表示。想要详细了解可以阅读文章: [Scaling Large Language Models for Next-Generation Single-Cell Analysis]。

从文章的Benchmark结果来看,Cell2Sentence功能丰富,并且在很多方面都优于其他模型。细胞类型注释作为单细胞分析中基础又很重要的步骤,大多时候还是需要人工操作。如果能使用软件完成很好的自动注释岂不美哉。下面使用模型来体验一下细胞类型注释。

首先,注释前需要准备一个预训练模型,可以从网上直接下载,https://huggingface.co网站有很多训练的可用模型。由于该网站需要翻墙,可替换为国内可用的镜像网站https://hf-mirror.com。可以通过网页直接下载需要的模型到本地,或者使用下面的命令获取:

import cell2sentence as cs

csmodel = cs.CSModel(model_name_or_path='EleutherAI/pythia-410m', save_dir='c2s_api_testing/pythia_410m', save_name='cell_type_pred_pythia_410m')

首次执行上面的命令会在线获取EleutherAI/pythia-410m模型,并下载到本地,以后可以直接使用模型。如果觉得网站的模型差点意思,可以用合适的参考数据对模型进行微调,使其更适合自己的数据。

import scanpy as sc
import cell2sentence as cs
from cell2sentence.tasks import predict_cell_types_of_data

adata = sc.read_h5ad('sample.h5ad')
sc.pp.filter_genes(adata, min_cells=3)
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.leiden(adata)
adata.obs['cell_type'] = adata.obs['leiden']
adata_obs_cols_to_keep = ["cell_type", "organism"]
adata.obs['organism'] = 'Homo sapiens'

数据经过预处理,接下来就可以用模型来预测细胞类型了:

arrow_ds, vocabulary = cs.CSData.adata_to_arrow(adata=adata, random_state=1234, sentence_delimiter=' ', label_col_names=adata_obs_cols_to_keep)
csdata = cs.CSData.csdata_from_arrow(arrow_dataset=arrow_ds, vocabulary=vocabulary, save_dir='c2s_api_testing/csdata', save_name='sample', dataset_backend="arrow")

predicted_cell_types = predict_cell_types_of_data(csdata=csdata, csmodel=csmodel, n_genes=200)
Reloading model from path on disk: c2s_api_testing/csmodel/sample_inference
Predicting cell types for 4121 cells using CSModel...
0%|▊                        | 18/4121 [23:53:44<5446:52:20, 4779.12s/it]

用模型预测细胞类型的整个流程不复杂,但是使用起来有点门槛,需要gpu加速,否则cpu的速度真要等到天荒地老了。如通过上面在cpu环境下执行的命令可知,总共有4121细胞需要预测类型,程序运行了23:53:44,即23个小时53分钟预测了18个细胞,这速度真得等到花都谢了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容