单细胞联合bulk转录组分析代码
时间: 2025-06-29 14:06:24 浏览: 10
### 单细胞和批量转录组联合分析代码
对于单细胞和批量转录组数据的集成分析,Seurat包提供了强大的工具来实现这一目标。下面是一个基于Seurat的工作流程示例,该工作流可以用来整合这两种类型的RNA测序数据。
#### 数据预处理
首先加载必要的库并读取数据集:
```r
library(Seurat)
library(ggplot2)
# 假设已经存在两个对象:sc_data 和 bulk_data
# sc_data 是 SingleCellExperiment 对象, 包含单细胞表达矩阵
# bulk_data 是 DESeqDataSet 或 SummarizedExperiment 对象, 表达量经过标准化处理
```
为了使两种不同平台的数据能够相互比较,通常需要对它们进行归一化操作[^1]。这里采用LogNormalize方法对单细胞数据做初步转换;而对于bulk RNA-seq,则可能已经完成了TPM/FPKM等形式的标准化,在这种情况下可以直接跳过这一步骤。
```r
# 归一化单细胞数据
sc.norm <- NormalizeData(sc_data, normalization.method = "LogNormalize", scale.factor = 10^4)
# 如果 Bulk 数据未被标准化则也需要对其进行 Log 变换或其他形式的归一化
if (!is.normalized(bulk_data)) {
bulk.norm <- normalizeCounts(bulk_data) # 自定义函数或使用其他软件完成此过程
} else {
bulk.norm <- assay(bulk_data)[,"normalized"]
}
```
#### 特征选择与降维
接下来挑选具有代表性的基因作为后续分析的基础,并通过PCA等方式降低维度以便可视化展示差异模式。
```r
# 找到高变基因(HVGs),这些将在后续步骤中用于构建模型
hvg.features.sc <- FindVariableFeatures(object = sc.norm, selection.method = 'vst', nfeatures = 2000)
# 使用相同的标准筛选Bulk样本中的HVGs
hvg.features.bulk <- GetTopHVGs(counts = as.matrix(bulk.norm), numgenes = 2000)
common.hvgs <- intersect(hvg.features.sc, hvg.features.bulk)
# 将共同存在的HVG应用于各自的数据集中
reduced_sc <- subset(x = sc.norm, features = common.hvgs)
reduced_bulk <- subset(x = bulk.norm[,], features = common.hvgs)
# 进行主成分分析(PCA)
pca_results_sc <- RunPCA(reduced_sc, npcs=30, verbose=F)
pca_results_bulk <- prcomp(t(as.matrix(reduced_bulk)), center=T, scale.=T)$x[,1:30]
combined_pca <- rbind(pca_results_sc@dr$pca, pca_results_bulk)
rownames(combined_pca) <- c(colnames(pca_results_sc@data), colnames(bulk.norm))
colnames(combined_pca) <- paste('PC', seq_len(ncol(combined_pca)))
```
#### 集成学习框架
最后利用CCA(典型相关分析)或者其他相似的技术如Harmony、Scanorama等算法来进行跨模态特征融合,从而获得统一表示下的细胞状态分布情况。
```r
# 创建一个新的 Seurat Object 来保存组合后的 PCA 结果
integrated_obj <- CreateDimReducObject(embeddings = combined_pca, reduction.type="cca")
# 应用 Harmony 方法去除批次效应
harmonized <- RunHarmony(integrated_obj, group.by.vars=c(rep("single_cell",ncell(sc.norm)), rep("bulk",ncell(bulk.norm))))
# 绘制 tSNE 图像查看效果
tsne.plot <- RunTSNE(harmonized, dims.use=seq_len(min(dim(harmonized)[2]-1L, 20L)))
DimPlot(tsne.plot, label=T, pt.size=0.5)+theme_bw()
```
上述脚本展示了如何将单细胞和批量转录组学资料结合起来进行综合研究的一个基本思路。当然实际应用过程中还需要考虑更多细节问题,比如质量控制标准的确立、批间变异校正策略的选择等等。
阅读全文
相关推荐
















