单细胞测序数据整合

本文介绍了单细胞测序数据整合的原理和一般步骤,包括Normalization、Feature selection及Identification of anchor correspondences。详细阐述了Seurat v3和harmony两种方法的实现过程,通过数据处理和分析去除批次效应,实现不同实验数据的融合。
摘要由CSDN通过智能技术生成

一、单细胞测序数据整合的原理

单细胞测序数据的整合,有点类似于基因组的拼接和比对过程。整合过程需要找到两个dataset之间的相似的部分,在单细胞测序数据则意味着两个两次不同实验的dataset中有一部分细胞具有相似的生物学状态(虽然这簇细胞的基因表达绝对值不一定相同,但是这簇细胞整体具有一致性或相似性)。

A 两个来自不同实验的单细胞数据,有相似生物学状态的细胞群,但是query dataset具有特有的细胞群

B 进行常规的相关性分析,并进行Log2标准化处理。

C 在同一个共享空间下,鉴定两个dataset之间相互最近的邻居(MNN),这些cells就可以作为两个dataset之间的anchors细胞,从而帮助进行dataset 整合。

D 对于每一个anchor对,会给予一致性给出打分值

E 基于这些anchors细胞以及打分值,计算矫正向量,从而进行数据集的整合

来源:单细胞测序数据整合 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/158974557?ivk_sa=1024320u

 二、一般步骤

来源:单细胞数据整合 Comprehensive Integration - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/465227964

(1)Normalization

在所有的分析中,我们都要对 single-cell RNA-seq数据集采用标准的预处理。除非特别声明,我们首先对所有的数据集进行 log-normalization, lognormalization 的目的 是防止数据差异完全被高度表达的基因控制,在log-normalization 后, 它就会与基因表达水平独立, 使得表达水平较低的基因不易被忽视

 之后,我们再做 z-score transformation, 它是进行降维操作如PCA之前 的一个标准步骤。z-scroe transformation 的目的见下图,由于技术的原因,不同细胞检测到的转录水平是不一样的,即数据有noise, 进过 transfrom之后,不同细胞之间的数据才有可比性。

### R 中单细胞测序数据的细胞注释方法 在单细胞测序数据分析中,细胞类型的注释是一个关键环节。以下是基于 Seurat 工具包实现细胞类型注释的具体流程: #### 1. 准备工作 为了进行细胞注释,通常需要先完成数据的质量控制 (QC),降维以及聚类操作。这些步骤可以参考之前的教程[^3]。 #### 2. 使用标记基因进行注释 通过比较不同 Cluster 的差异表达基因与已知的生物标志物列表,可推断每个 Cluster 对应的细胞类型。以下是一段用于获取差异表达基因并匹配到特定细胞类型的代码示例: ```r # 计算差异表达基因 de_genes <- FindAllMarkers(object = scRNA1, only.pos = TRUE, min.pct = 0.25) # 将差异表达基因导出为表格形式 write.csv(de_genes, file = "differential_expression_genes.csv") # 加载预先定义好的标记基因数据库 marker_db <- read.csv("known_marker_genes.csv", row.names = 1) # 进行注释 cellpred <- CellTypeAnnotation::CellTypeAnnotation( markers = marker_db, exprs_mat = GetAssayData(scRNA1, slot = "data"), threshold = log(2), verbose = FALSE ) ``` 上述代码中的 `FindAllMarkers` 是用来寻找每组之间的显著变化特征[^2];而 `CellTypeAnnotation` 则是从外部引入的一个专门针对此目的设计的功能函数集合。 #### 3. 更新元数据以保存新的注释信息 一旦完成了自动化的初步预测之后,就可以把这些标签加入到原始数据集中去以便后续可视化或者进一步验证: ```r # 创建一个新的DataFrame来存储Cluster ID 和对应的细胞类型名称 celltype <- data.frame(ClusterID=rownames(cellpred), celltype=cellpred$labels, stringsAsFactors = FALSE) # 初始化一个新列 'celltype' scRNA1@meta.data$celltype <- "NA"[^2] for(i in 1:nrow(celltype)){ scRNA1@meta.data[ which(scRNA1@meta.data$seurat_clusters == celltype$ClusterID[i]), 'celltype'] <<- celltype$celltype[i] } ``` 这段脚本实现了把计算所得的结果整合回原生对象的过程,从而方便以后调用查看结果。 #### 4. 可视化确认注释效果 最后一步是对标注后的数据集绘制图表来进行直观检验: ```r DimPlot(scRNA1, reduction = "umap", label = TRUE, pt.size = 0.5, group.by = "celltype") + NoLegend() VlnPlot(scRNA1, features = c("Hba-a1","Cd8a"), combine = FALSE) FeaturePlot(scRNA1, features = c("Hbb-bs","Itgam")) ``` 以上命令分别展示了 UMAP 图形上按类别着色的效果、小提琴图展示某些重要指标分布情况以及散点图突出显示个别因子表现状况。 --- ### 注意事项 - **质量控制的重要性**: 在执行任何复杂的下游分析之前,请务必确保已经剔除了那些不符合标准条件的数据点。 - **依赖于领域知识的选择**: 虽然自动化工具可以帮助快速生成假设,但是最终决定仍需依靠实验人员的专业判断力和支持材料佐证。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值