专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物探索  ·  Nat Biomed Eng | ... ·  2 天前  
生物学霸  ·  博士生 4 ... ·  4 天前  
BioArt  ·  Nat ... ·  6 天前  
51好读  ›  专栏  ›  生信菜鸟团

TOSICA:一站式细胞类型的迁移注释

生信菜鸟团  · 公众号  · 生物  · 2024-10-23 12:30

正文

TOSICA是基于 Transformer 的多头自关注深度学习模型 ,它能利用生物学上可理解的实体(如通路或调控子)实现可解释的细胞类型注释。TOSICA 能够实现快速、准确的一站式注释和对批量不敏感的整合,同时为理解发育和疾病进展过程中的细胞行为提供了可解释的生物学见解,揭示了与疾病进展和严重程度相关的罕见细胞类型、异质性和动态轨迹。

⇲Transformer for one stop interpretable cell type annotation | Nature Communications

#框架

该模型根据单细胞 RNA 测序数据和每个细胞的细胞类型标签进行训练。根据数据库或专家知识,使用掩码可学习嵌入将参考输入数据(n 个基因)转换为代表每个基因组(GS)的 k 个输入标记,并在其中添加类标记(CLS)。

相当于你给ta一个已经注释好的单细胞数据,ta会根据这份数据来训练一个模型用于我们这份输入数据的细胞注释。

在注意力函数中,查询(Q)、关键(K)和值(V)矩阵从这些基因组和 CLS 组合标记进行线性投影,权重(注意力,A)通过 Q 与相应 K 的兼容函数计算得出,然后分配给每个 V 以计算输出(O)。

在每个多头自注意层中,并行执行 H 次注意函数。O 的 CLS 被视为每个单元的潜空间,用作整个联合神经网络单元类型分类器的输入。同时,类(CLS)标记对基因组(GS)标记的关注度被称为关注度得分,用于细胞嵌入。

单细胞图谱网站很多,可以根据自己的样本类型去选择比较权威的图谱数据作为训练模型,类似的有:

  • [Azimuth ⇲https://azimuth.hubmapconsortium.org/)

  • [HCL Human Cell Landscape ⇲https://db.cngb.org/HCL/index.html)

  • [MCA | Mouse Cell Atlas ⇲https://bis.zju.edu.cn/MCA/index.html)

  • [Cell BLAST ⇲https://cblast.gao-lab.org/download)

  • ……

#安装

Software is available at “TOSICA [⇲https://github.com/JackieHanLab/ TOSICA]

这个工具是基于python构建的,可以与omicverse整合起来用~

我们今天先基于linux和jupyter来装一下——

#创建小环境

conda create -n TOSICA python=3.8 scanpy
conda activate TOSICA
conda install pytorch=1.7.1 torchvision=0.8.2 torchaudio=0.7.2 cudatoolkit=10.1 -c pytorch

#安装TOSICA

因为网络的问题,所以我选择保守的本地安装

wget --no-check-certificate https://github.com/JackieHanLab/TOSICA/archive/refs/heads/main.zip
unzip main.zip
cd TOSICA-main
python setup.py install

#Jupyter 中使用 TOSICA 环境

pip install ipykernel
python -m ipykernel install --user --name TOSICA --display-name "Python (TOSICA)"

#运行

⇲https://github.com/JackieHanLab/TOSICA/blob/main/test/tutorial.ipynb)

#一个小贴士

如果习惯了用seurat来跑单细胞,转到python的第一关首先就是seurat对象和h5ad格式的转换。

library(readr)
library(Seurat)
library(SeuratDisk)

file  read_rds("./bmcite_demo_form_Azimuth.rds")

SaveH5Seurat(file,filename = "bmcite_demo_form_Azimuth.h5Seurat")
Convert("bmcite_demo_form_Azimuth.h5Seurat",dest = "h5ad")