空间转录组 多样本整合分析—stlearn

文摘   科学   2024-10-03 17:00   江苏  

大家好,今天介绍一款空间转录组整合分析的python软件——stlearn。

如果你还不会安装,可以看下之前的推文,windows系统本地安装stlearn:本地安装jupyterlab,并创建conda小环境——以空间转录组细胞互作之stlearn安装为例如果大家感兴趣,后期再写Linux服务器安装stlearn的教程。下面从三个方面进行stlearn的空间转录组整合分析。

  • 1. 为什么空间转录数据需要整合分析?

  • 2. stlearn整合空间转录组样本的思路

  • 3. stlearn整合空转数据代码实战

提出问题

1.为什么空转数据需要整合分析?

  • 提高数据分析的准确性和可靠性:空转数据通常具有较高的噪声和异质性,整合分析可以通过融合来自不同来源的数据来提高数据的准确性和可靠性。

  • 发现新的生物学信息:空转数据整合分析可以帮助发现新的生物学信息,例如细胞类型之间的相互作用、基因表达的空间模式等。

通常10x的空转测序数据都是4张slide为一组,因此我们大概率会用到多个空转样本的整合分析。那么如何进行多个样本的空转数据的整合分析呢?

注意:这里的整合不是单细胞和空间转录组整合,而是多个空间转录组测序样本的整合


解决问题思路

  1. 先把多个样本merge到一起之后;

  2. 然后使用harmony去除批次效应,降维聚类分群;

  3. 进而得到每个细胞(barcode)的亚群;

  4. 最后把每个细胞的亚群信息放回单个样本中。

代码实战

https://stlearn.readthedocs.io/en/latest/tutorials/Integration_multiple_datasets.html

import stlearn as stimport scanpy as scimport numpy as np
st.settings.set_figure_params(dpi=150) # 设置图形输出分辨率

1 #数据处理# 连接两个样品adata_concat = block1.concatenate(block2)
# 预处理# 过滤基因:过滤表达细胞少于 3 个的基因sc.pp.filter_genes(adata_concat, min_cells=3)# 归一化数据sc.pp.normalize_total(adata_concat, target_sum=1e4)# 对数转换sc.pp.log1p(adata_concat)# 保存原始数据adata_concat.raw = adata_concat.copy()# 提取高变异基因sc.pp.highly_variable_genes(adata_concat, min_mean=0.0125, max_mean=3, min_disp=0.5)adata_concat = adata_concat[:, adata_concat.var.highly_variable]# 缩放数据sc.pp.scale(adata_concat, max_value=10)
# 降维:主成分分析(PCA)sc.pp.pca(adata_concat, n_comps=30, svd_solver='arpack')



2 #整合分析:Harmony# 准备元数据和 PCA 结果meta_data = adata_concat.obs  # 获取观察表(cell metadata)data_mat = adata_concat.obsm["X_pca"]  # 获取 PCA 降维后数据
# 导入并运行 Harmonyimport harmonypy as hmho = hm.run_harmony(data_mat, meta_data, "batch") # 运行 Harmony,根据 "batch" 列进行批次校正
3 # 将结果映射回 AnnData 对象adata_concat.obsm["X_pca"] = ho.Z_corr.T # 将校正后的数据替换原 PCA 数据Use code with caution. Learn more4 #聚类和可视化# 建立 KNN 图并运行 UMAPsc.pp.neighbors(adata_concat, n_pcs =30)sc.tl.umap(adata_concat)
# Leiden 聚类sc.tl.leiden(adata_concat, resolution=0.4)
# UMAP 可视化sc.pl.umap(adata_concat, color=["batch","leiden"]) # 同时以批次和聚类结果着色Use code with caution. Learn more


5 映射结果回原始样本
st.settings.set_figure_params(dpi=150)
# 将 Leiden 聚类结果映射回分块 A 第 1 个样品block1.obs["leiden"] = adata_concat.obs[adata_concat.obs.batch=="0"].leiden.values # 根据 "batch" 列选择对应样品的数据
# 绘制聚类结果st.pl.cluster_plot(block1,use_label="leiden")
# 将 Leiden 聚类结果映射回分块 A 第 2 个样品block2.obs["leiden"] = adata_concat.obs[adata_concat.obs.batch=="1"].leiden.values
# 绘制聚类结果st.pl.cluster_plot(block2,use_label="leiden")
# 手动合并图像并调整坐标# 这是将两个样品放在同一个 AnnData 对象中的方法
# 初始化空间信息adata_concat.uns["spatial"] = block1.uns["spatial"]
# 水平拼接两个样品的高分辨率图像combined = np.hstack([block1.uns["spatial"]["V1_Breast_Cancer_Block_A_Section_1"]["images"]["hires"], block2.uns["spatial"]["V1_Breast_Cancer_Block_A_Section_2"]["images"]["hires"]])
# 将拼接后的图像映射到合并的 AnnData 对象









生信小博士
【生物信息学】R语言开始,学习生信。Seurat,单细胞测序,空间转录组。 Python,scanpy,cell2location。资料分享
 最新文章