单细胞分析(七)——fastMNN数据去批次整合

构建seurat 对象

seurat官网给出的数据是 SeuratData 内置数据,但是使用 SeuratData 下载会提示相应的问题,也有通过数据连接直接下载。这里我使用个人数据,特点是:已经通过 cellranger 处理了 FASTQ 文件,得到了 feature, barcode, matrix 文件, 如下

上一级文件如下,

层级显示关系如下

然后需要将这些文件统一读入到一个列表中,操作如下

# 读入数据
# 创建一个空列表来存储数据块
seu.list <- list()

# 指定文件夹路径
folder_path <- "./HRA000212_raw_feature_bc_matrix"

# 获取文件夹中的文件列表
file_list <- list.files(path = folder_path, full.names = TRUE)

# file_names <- substr(basename(file_list), 1, 9)

# 遍历文件列表并读入数据
library(future)
# check the current active plan
plan()
# change the current plan to access parallelization
plan("multiprocess", workers = 15)
options(future.globals.maxSize = 10000 * 1024^2)

system.time({
  for (file_path in file_list) {
    # 提取文件名(不包括路径和扩展名)
    file_name <- tools::file_path_sans_ext(basename(file_path))
    file_name <- substr(basename(file_name), 1, 9)
    
    # 读入文件数据(这里假设文件是文本文件)
    data <- Read10X(file_path)
    
    scobj <- CreateSeuratObject(data, project = file_name, min.cells = 3, min.features = 200)
    
    # 将数据添加到列表中,以文件名作为标识
    seu.list[[file_name]] <- scobj
    
    # return(seu.list)
  }
  
})

# 打印列表中的数据
print(seu.list)

使用fastMNN去批次

### Merge 合并数据
system.time({
  scobj <- merge(x=seu.list[[1]], y = seu.list[-1])
})
# user  system elapsed 
# 117.717  76.181 195.091 


### 使用 fastMNN 去除批次
scobj <- NormalizeData(scobj)
scobj <- FindVariableFeatures(scobj)

scobj <- RunFastMNN(object.list = SplitObject(scobj, split.by = "orig.ident"))
scobj <- RunUMAP(scobj, reduction = "mnn", dims = 1:30)
scobj <- FindNeighbors(scobj, reduction = "mnn", dims = 1:30)
scobj <- FindClusters(scobj, resolution = 0.5)
p1 <- DimPlot(scobj, reduction = "umap")
p2 <- DimPlot(scobj, reduction = 'umap', group.by = 'orig.ident') + ggsci::scale_color_d3("category20")
p2 + p1

没有去除批次的效果

# 如果不进行批次矫正

scobj <- NormalizeData(scobj)
scobj <- FindVariableFeatures(scobj, selection.method = "vst", nfeatures = 2000)
scobj <- ScaleData(scobj, features = rownames(scobj))
scobj <- RunPCA(scobj, features = VariableFeatures(object = scobj), reduction.name = "pca")
ElbowPlot(scobj)
DimPlot(scobj, reduction = "pca")

# 不进行批次矫正
scobj <- RunUMAP(scobj,reduction = "pca", dims = 1:10, reduction.name = "umap_naive")
p2 <- DimPlot(scobj, reduction = "umap_naive",group.by = "orig.ident")


可以看出矫正之后的作用也是比较明显

参考文章

Batch Effect Correction
Running fastMNN on Seurat Objects
Multi-Sample Single-Cell Analyses with Bioconductor
Single-Cell Batch Correction Methods

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
单细胞数据分析质控是在单细胞测序数据分析中的一个重要步骤,用于评估数据的质量和准确性。以下是一些常见的单细胞数据分析质控代码的介绍: 1. 数据预处理: - 数据加载:使用相应的数据加载库(如`Seurat`、`Scanpy`等)加载单细胞数据。 - 数据清洗:去除低质量细胞和低表达基因,可以根据细胞的总表达量、基因数、基因表达水平等指标进行筛选。 2. 细胞质量评估: - 细胞质量指标计算:计算每个细胞的质量指标,如总表达量、基因数、基因表达水平的均值和方差等。 - 细胞质量过滤:根据设定的阈值,过滤掉质量较差的细胞。 3. 基因质量评估: - 基因表达过滤:去除低表达基因和低变异基因,可以根据基因的表达量和变异系数进行筛选。 - 基因批次效应校正:对于多个批次数据,可以使用批次效应校正方法(如`ComBat`)进行校正,减少批次间的技术差异。 4. 数据规范化: - 基因表达量规范化:对细胞的基因表达量进行规范化,常见的方法有TPM、CPM、FPKM等。 - 批次效应校正:对于存在批次效应的数据,可以使用一些批次校正方法(如`Scran`、`MNN`等)进行校正。 5. 数据可视化: - 细胞质量可视化:绘制细胞质量指标的分布图,如细胞总表达量、基因数的分布图。 - 基因表达可视化:绘制基因表达热图、散点图等,用于展示基因在不同细胞中的表达模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信小鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值