单细胞转录组数据的空间对齐。
项目描述
Tangram 是一个 Python 包,用PyTorch编写,基于scanpy,用于将单细胞(或单核)基因表达数据映射到空间基因表达数据。单细胞数据集和空间数据集应该从相同的解剖区域/组织类型中收集,最好是从生物复制中收集,并且需要共享一组基因。Tangram 通过在共享基因上拟合基因表达来对齐空间中的单细胞数据。熟悉 Tangram 的最佳方式是查看我们的教程和文档。
如果您还没有使用 squidpy,请查看我们之前的教程。
如何安装七巧板
要安装 Tangram,请确保已安装PyTorch和scanpy。如果您需要有关依赖关系的更多详细信息,请查看该environment.yml文件。
- 为 Tangram 设置 conda 环境
conda env create -f environment.yml
- 从 shell 安装 tangram-sc:
conda activate tangram-env
pip install tangram-sc
- 要开始使用 Tangram,请在您的 jupyter 笔记本或/和脚本中导入 tangram
import tangram as tg
运行七巧板的两种方法
如何在单元级别运行七巧板
加载您的空间数据和单个单元格数据(应为AnnData格式),并使用以下方法对其进行预处理tg.pp_adatas:
ad_sp = sc.read_h5ad(path)
ad_sc = sc.read_h5ad(path)
tg.pp_adatas(ad_sc, ad_sp, genes=None)
该函数pp_adatas找到adata_sc、adata_sp之间的共同基因,并将它们保存为两个adatas.uns,以供以后映射和分析。此外,它将相交的基因子集为一组通过的训练基因genes。如果genes=None,则七巧板使用两个数据集共享的所有基因进行映射。一旦数据集被预处理,我们就可以映射:
ad_map = tg.map_cells_to_space(ad_sc, ad_sp)
返回的 AnnDataad_map是一个逐个体素的结构,其中ad_map.X[i, j]给出了单元i在体素中的概率j。这种结构可用于将基因表达从单细胞数据投射到空间,这是通过tg.project_genes.
ad_ge = tg.project_genes(ad_map, ad_sc)
返回ad_ge的是一个逐基因体素的 AnnData,类似于空间数据ad_sp,但其中的基因表达是从单个细胞中投射出来的。如果单细胞具有比单细胞数据更高的质量(或更多基因),这允许扩展基因通量或纠正丢失。它还可用于将细胞类型转移到太空。
如何在集群级别运行 Tangram
为了实现更快的训练并消耗更少的内存,Tangram 映射可以在单元集群级别完成。这种修改是由Sten Linnarsson 提出的。
准备输入数据,就像为单元级七巧板映射所做的一样。然后使用以下代码映射:
ad_map = tg.map_cells_to_space(
ad_sc,
ad_sp,
mode='clusters',
cluster_label='subclass_label')
提供 cluster_label 必须属于 ad_sc.obs。上面的示例代码是在“subclass_label”级别进行映射,而“subclass_label”在 ad_sc.obs 中。
要将基因表达投射到空间,请使用tg.project_genes并确保cluster_label在映射中将参数设置为相同的集群标签。
ad_ge = tg.project_genes(
ad_map,
ad_sc,
cluster_label='subclass_label')
Tangram 如何在引擎盖下工作
Tangram 实例化一个Mapper传递以下参数的对象:
- S:具有逐个基因形状的单细胞矩阵。请注意,基因是训练基因的数量。
- G:空间数据矩阵,形状体素逐个基因。体素可以包含多个细胞。
然后,Tangram 搜索一个映射矩阵M,其形状为逐个单元的体素,其中元素M_ij表示单元i在点j中的概率。Tangram通过最小化以下损失来计算矩阵M :
其中 cos_sim 是余弦相似度。损失函数的含义是,在余弦相似度下,映射的单个细胞的基因表达应该与空间数据G尽可能相似。
以上说明了七巧板的基本用法。在我们的手稿中,我们以多种方式修改了损失函数,以添加各种先验知识,例如每个体素中包含的细胞数量。
经常问的问题
我需要 GPU 来运行 Tangram 吗?
在标准笔记本电脑上使用集群模式进行映射很好。对于单个单元级别的映射,GPU 不是必需的,但建议使用。我们在单个 P100 上运行大部分映射,该 P100 可在几分钟内映射约 50k 个细胞。
如何选择训练基因列表?
一个好的开始方法是使用跨细胞类型分层的前 1k 个独特标记基因作为训练基因。或者,您可以使用整个转录组进行映射。理想情况下,训练基因应该包含高质量的信号:如果大多数训练基因都含有大量丢失或使用不良 RNA 探针获得,那么您的映射将不准确。
我需要细胞分割来映射 Visium 数据吗?
您不需要分割组织学中的细胞来映射空间转录组学数据(包括 Visium 和 Slide-seq)。但是,如果您希望对数据进行反卷积,则需要进行细胞分割(即确定性地将单个细胞轮廓分配给空间体素内的每个细胞)。
映射时内存不足:我该怎么办?
减少各个部分的空间数据并映射每个部分。如果这还不够,您还需要对单个单元格数据进行下采样。
如何引用七巧板
Tangram 已在以下出版物中发布
Biancalani* T.、Scalia* G. 等人。-使用 Tangram Nature Methods 18 , 1352–1362 (2021)对小鼠大脑中单个细胞的空间分辨全转录组进行深度学习和对齐
如果您有任何疑问,请联系该方法的作者:
- 托马索·比安卡拉尼 - biancalt@gene.com
- 加布里埃尔·斯卡利亚 - gabriele.scalia@roche.com
PyPI 维护者:
- Shreya Gaddam - gaddams@gene.com
- 托马索·比安卡拉尼 - biancalt@gene.com
- 卢子清- luz21@gene.com
该艺术品由以下机构策划:
- Anna Hupalowska ahupalow@broadinstitute.org
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
tangram_sc -1.0.3-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 15e0dd3fb966f5b812d24a8a7a0e6bafc5a34392ca13c67d222edcdb97331681 |
|
| MD5 | f403f5c19a910a67720e08d316d4b7ad |
|
| 布莱克2-256 | 74568dcb577969a5805f65f098d3b2599dcf1337802f2cd1887c019124a48803 |