空间转录组 STAGATE

最近在阅读和复现各个大佬的空转论文,记录、交流学习下,如有错误,欢迎指出。

前言

首先是STAGATE,是中科院提出来的方法,具体发表在NC上,主要思路与空转普遍的思路类似,提取基因表达、空间信息和图像特征,然后进行聚类,以识别每个spot的类型。当然,STAGATE,没有用图像信息,就已经是是目前已发表论文中最好的结果了。

总体架构

总体架构如下。

总体来说模型就是一个四层的AutoEncode,两层编码器两层解码器,只是每一层都换成了GAT。将基因表达数据X输入进去再重构出来X’,损失函数自然而然的就是X和X’的MSE。值得注意的是第二层和第三层,第一层和第四层分别共用一组权重W,为转置关系,这点在图上已经表明。如果是spot级别的数据,模型就已经全部讲完了,如果是细胞级别的数据,还会构建SNN,即重新构建一个新的GAT的邻接矩阵,然后每一层的结果是新的邻接矩阵和旧邻接矩阵构成的GAT加权求和为下一层的输入。

代码

作者最初发布的是tensorflow1的代码,今年三月份又公布了torch的代码,但是torch版本没有构建SNN,在细节上与tensorflow也略有不同,比如损失函数,tensorflow中除了MSE,又加入了权重损失防止过拟合,具体的在代码中我发现的都会提到。下面我试着根据torch版本的代码来说下我对这篇论文的理解。(最好在linux系统上运行,在windows上总是会出现各种奇怪错误)

首先是数据预处理。包括数据读取,在根据论文下载数据就好。然后是Normalization,选择高表达基因,正则化,取对数。再然后是读取真实标签用于最后测评并做了可视化。

    input_dir = os.path.join('Data', section_id)
    adata = sc.read_visium(path=input_dir, count_file=section_id+'_filtered_feature_bc_matrix.h5')
    adata.var_names_make_unique()

    #Normalization
    sc.pp.highly_variable_genes(adata, flavor="seurat_v3", n_top_genes=3000)
    sc.pp.normalize_total(adata, target_sum=1e4)
    sc.pp.log1p(adata)

    Ann_df = pd.read_csv(os.path.join('Data',
                                      section_id, "cluster_labels_"+section_id+'.csv'), sep=',', header=0, index_col=0)
    adata.obs['ground_truth'] = Ann_df.loc[adata.obs_names, 'ground_truth']

    plt.rcParams["figure.figsize"] = (3, 3)
    sc.pl.spatial(adata, img_key="hires", color=["ground_truth"])

然后是spot和spot之间的距离。距离大于0小于150的spot构建邻接矩阵,在这个范围内认为有连接,邻接矩阵为1,否则是0。以下是计算符合距离范围的spot的距离,并保存adata.uns['Spatial_Net']中。

def Cal_Spatial_Net(adata, rad_cutoff=None, k_cutoff=None, model='Radius', verbose=True):
    """\
    Construct the spatial neighbor networks.

    Parameters
    ----------
    adata
        AnnData object of scanpy package.
    rad_cutoff
        radius cutoff when model='Radius'
    k_cutoff
        The number of nearest neighbors when model='KNN'
    model
        The network constructio
### 空间转录组的技术原理 空间转录组技术的核心在于通过保留样本的空间信息的同时获取其基因表达谱。例如,华大基因开发了一种基于DNA纳米球(DNB)技术的方法,该方法可以实现超高分辨率的空间转录组测序[^1]。这种技术能够在保持细胞原始物理位置的情况下检测基因表达水平。 另一种常见的技术是由10X Genomics提供的Visium平台,它采用固定网格的方式捕获组织切片上的mRNA分子,并记录它们的位置信息。这种方法允许研究人员不仅知道哪些基因在何处表达,还能够理解这些表达模式如何随空间变化而改变[^4]。 ### 应用领域 #### 肿瘤微环境研究 空间转录组学的一个重要应用是在肿瘤微环境中解析复杂的相互作用关系。通过对肿瘤及其周围基质成分的综合分析,科学家们能更好地理解肿瘤生长、侵袭及转移过程中涉及的关键机制。 #### 单细胞与空间维度结合的研究 随着“单细胞多组学技术”成为2019年的年度技术,“空间转录组技术”也在次年受到关注。两者相结合提供了前所未有的能力去探索个体细胞间的差异以及它们在整个组织内的分布情况[^3]。这使得我们可以深入探讨健康状态下的正常生理过程以及疾病状态下异常现象的发生机理。 ### 生物信息学分析流程概述 对于像SEDR这样的无监督嵌入表示学习框架来说,目标是从空间转录组数据中提取有意义的信息并将其转化为易于解释的形式。具体而言,此方法尝试构建一个低维特征空间,在其中相似样品会被映射得靠近彼此;同时还要考虑地理位置因素的影响以便于后续可视化操作[^2]。 一般情况下,完整的生物信息学处理链路包括以下几个环节: 1. **质量控制**:去除低质量spot或者过滤掉不符合标准的数据点。 2. **标准化和归一化**:调整批次效应和其他潜在干扰变量带来的偏差。 3. **降维**:使用PCA(主成分分析)或其他高级算法减少复杂度高的矩阵规模。 4. **聚类划分**:依据特定距离度量把spots分成若干类别代表不同的组织区域。 5. **标记基因鉴定**:找出每一群体特有的高度活跃基因作为标志物用于进一步验证实验假设。 6. **功能富集测试**:评估已知通路上述显著上调/下调趋势是否符合预期理论模型预测结果。 7. **交互网络建模**:描绘出各节点之间可能存在的调控联系形成全局视图供最终决策参考。 ```python import scanpy as sc adata = sc.read_visium('path_to_data') sc.pp.filter_genes(adata, min_counts=1) sc.pp.normalize_total(adata, target_sum=1e4) sc.pp.log1p(adata) sc.tl.pca(adata, svd_solver='arpack') sc.pl.spatial(adata, color=['gene_of_interest']) ``` 上述代码片段展示了如何加载visium格式文件并对数据执行基本预处理步骤之后绘制指定感兴趣基因的空间表达图案图像。
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值