耶魯大學(xué)和Google的團隊推出的大語言模型C2S-Scale (Cell2Sentence),模型參數(shù)規(guī)模擴展至 270 億個,能夠顯著提升其預(yù)測和生成能力,并為需要在多細(xì)胞環(huán)境背景下綜合信息的高級下游任務(wù)提供支持。預(yù)訓(xùn)練模型可用于生物學(xué)領(lǐng)域,特別是單細(xì)胞轉(zhuǎn)錄組學(xué)。模型的基本原理是通過將基因表達數(shù)據(jù)表示為文本來實現(xiàn),簡單點來說,就是將每個細(xì)胞的基因表達譜轉(zhuǎn)換為按表達水平排序的基因名稱序列,即每個細(xì)胞由一個基因名組成的句子表示。想要詳細(xì)了解可以閱讀文章: [Scaling Large Language Models for Next-Generation Single-Cell Analysis]。

從文章的Benchmark結(jié)果來看,Cell2Sentence功能豐富,并且在很多方面都優(yōu)于其他模型。細(xì)胞類型注釋作為單細(xì)胞分析中基礎(chǔ)又很重要的步驟,大多時候還是需要人工操作。如果能使用軟件完成很好的自動注釋豈不美哉。下面使用模型來體驗一下細(xì)胞類型注釋。

首先,注釋前需要準(zhǔn)備一個預(yù)訓(xùn)練模型,可以從網(wǎng)上直接下載,https://huggingface.co網(wǎng)站有很多訓(xùn)練的可用模型。由于該網(wǎng)站需要翻墻,可替換為國內(nèi)可用的鏡像網(wǎng)站https://hf-mirror.com??梢酝ㄟ^網(wǎng)頁直接下載需要的模型到本地,或者使用下面的命令獲取:
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')
首次執(zhí)行上面的命令會在線獲取EleutherAI/pythia-410m模型,并下載到本地,以后可以直接使用模型。如果覺得網(wǎng)站的模型差點意思,可以用合適的參考數(shù)據(jù)對模型進行微調(diào),使其更適合自己的數(shù)據(jù)。
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'
數(shù)據(jù)經(jīng)過預(yù)處理,接下來就可以用模型來預(yù)測細(xì)胞類型了:
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]
用模型預(yù)測細(xì)胞類型的整個流程不復(fù)雜,但是使用起來有點門檻,需要gpu加速,否則cpu的速度真要等到天荒地老了。如通過上面在cpu環(huán)境下執(zhí)行的命令可知,總共有4121細(xì)胞需要預(yù)測類型,程序運行了23:53:44,即23個小時53分鐘預(yù)測了18個細(xì)胞,這速度真得等到花都謝了。