ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
121 stars 30 forks source link

不同单细胞群相关性分析:提示亚群之间具有相关性 #5541

Closed ixxmu closed 1 month ago

ixxmu commented 1 month ago

https://mp.weixin.qq.com/s/pvbac1nczqN08-HCZbgqNA

ixxmu commented 1 month ago

不同单细胞群相关性分析:提示亚群之间具有相关性 by 生信小博士

文献里常遇到这种相关性热图:

Immunophenotyping of COVID-19 and influenza highlights the role of type I interferons in development of severe COVID-19


Single-Cell Reconstruction of Progression Trajectory Reveals Intervention Principles in Pathological Cardiac Hypertrophy



相关性热图是一种在单细胞数据分析中常用的可视化工具,用于展示不同细胞群之间的相似性或差异性。在单细胞RNA测序(scRNA-seq)数据中,相关性热图可以帮助研究者识别具有相似表达模式的细胞群体,从而揭示细胞亚群的功能和发育轨迹。


在构建相关性热图时,通常会使用皮尔森相关系数(Pearson correlation coefficient)或斯皮尔曼等级相关系数(Spearman's rank correlation coefficient)来量化细胞群之间的相关性。皮尔森相关系数用于测量两个连续变量之间的线性关系,其值介于-1和1之间,值越接近1或-1表示相关性越强,值为0表示没有线性相关性。斯皮尔曼等级相关系数是一种非参数方法,用于评估两个变量的等级顺序之间的相关性,适用于不满足正态分布的数据或有序分类变量。
在实际操作中,可以使用生物信息学工具和编程语言(如R语言)来生成相关性热图。例如,Seurat包中的相关性分析和热图绘制功能可以帮助研究者从单细胞数据中提取有意义的生物学信息。使用Seurat进行相关性分析时,可以选择标准差最大的基因来计算相关性,然后使用pheatmap包来绘制热图。此外,Scanpy也是一个流行的Python库,用于单细胞数据分析,它提供了简单易用的相关性热图绘制方法。
在解释相关性热图时,需要注意颜色的深浅代表了相关性的强度,而聚类树形图可以显示不同样本或细胞群的聚类关系。通过这种方式,研究者可以识别出具有相似基因表达模式的细胞群体,进而推断它们的生物学功能和相互作用。

R语言实现
使用R从Seurat对象中提取标准差最大的top基因计算相关性,用pheatmap画图。
#2在seurat_v5文件夹下安装v5---.libPaths(  c(    # '/home/rootyll/seurat_v5/',    "/usr/local/lib/R/site-library",    "/usr/lib/R/site-library",    "/usr/lib/R/library"  ))library(Seurat)library(dplyr)

path="~/zxxxx/sepsis_celltype_correlation"dir.create(path ,recursive = TRUE)setwd(path)

load('../sepsis_cluster_merge.rds')pbmc=All.mergeDimPlot(pbmc,label = TRUE,split.by = "stim")head(pbmc@meta.data)


#all----library(Seurat)
av <-AverageExpression(pbmc, group.by = "cell.type", assays = "RNA")av=av[[1]]head(av)
#选出标准差最大的1000个基因cg=names(tail(sort(apply(av, 1, sd)),1000))# #查看这1000个基因在各细胞群中的表达矩阵# View(av[cg,])# #查看细胞群的相关性矩阵# View(cor(av[cg,],method = 'spearman'))#pheatmap绘制热图pheatmap::pheatmap(cor(av[cg,],method = 'spearman')) #默认是Pearson

可以选择想要的组别

#cont----pbmc=All.merge[,grepl("Con",All.merge$stim)]
av <-AverageExpression(pbmc, group.by = "cell.type", assays = "RNA")av=av[[1]]head(av)
#选出标准差最大的1000个基因cg=names(tail(sort(apply(av, 1, sd)),1000))# #查看这1000个基因在各细胞群中的表达矩阵# View(av[cg,])# #查看细胞群的相关性矩阵# View(cor(av[cg,],method = 'spearman'))# #pheatmap绘制热图pheatmap::pheatmap(cor(av[cg,],method = 'spearman')) #默认是Pearson

使用scanpy更简单

import scanpy as scadata = sc.datasets.pbmc68k_reduced()sc.tl.dendrogram(adata, 'bulk_labels')#sc.pl.dendrogram(adata, 'bulk_labels')sc.pl.correlation_matrix(adata, 'bulk_labels', figsize=(5,3.5))


相关性分析方法

多种相关性分析方法都可以探究变量之间的关系。这些方法各有特点,适用于不同的数据类型和研究场景。

  1. 皮尔逊相关系数(Pearson Correlation)

  • 这是一种衡量两个连续变量线性相关程度的参数检验方法。

  • 其值域在-1到1之间,值越接近±1表示变量间的线性关系越强,而接近0则意味着线性关系较弱。

  • 适用于两个变量均为正态分布的情况,可以直观地显示变量之间的正相关或负相关关系。

  • 斯皮尔曼等级相关系数(Spearman's Rank Correlation)

    • 这是一种非参数方法,通过比较变量的等级(或秩次)而不是实际值来评估它们之间的相关性。

    • 适用于不满足正态分布假设的数据,或者当变量是有序分类而非连续数据时。

    • 这种方法对异常值具有较强的鲁棒性,因为它不依赖于数据的具体数值。

  • 肯德尔等级相关系数(Kendall's Tau Correlation)

    • 另一种非参数相关性检验,用于衡量两个变量的等级顺序之间的关联。

    • 它考虑了成对观测值之间的一致性和不一致性,适用于样本量较小或数据含有异质性的情况。

  • 其他相关性分析方法

    • 除了上述方法,还有诸如卡方检验(Chi-squared Test)和费舍尔精确检验(Fisher's Exact Test)等,这些方法主要用于分类变量之间的相关性分析。

    • 卡方检验可以评估两个分类变量是否独立,而费舍尔精确检验则用于小样本数据的相关性分析。

    在实际应用中,选择哪种相关性分析方法取决于数据的特性、分布情况以及研究目的。正确选择和应用这些方法,可以帮助研究者更准确地理解和解释变量之间的关系。

    参考:https://www.jianshu.com/p/d3786239f60e