前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤩 scRNA-seq | 吐血整理的单细胞入门教程(初步Normalization)(十)

🤩 scRNA-seq | 吐血整理的单细胞入门教程(初步Normalization)(十)

作者头像
生信漫卷
发布2022-10-31 17:23:20
4050
发布2022-10-31 17:23:20
举报
文章被收录于专栏:R语言及实用科研软件

1写在前面

之前我们在质控QC)篇介绍了Normalization的重要性。😘 scRNAseq是一个高维度的数据,相对比较复杂,不同细胞,不同平台,相差较多,所以library大小差异较大,我们需要做一个Normalization,常用方法包括:👇 UQ, SF, CPM, RPKM, FPKM, TPM。🤒

Note! 如果你使用的是Cufflinks或者RSEM进行定量。 恭喜你, 不需要normalization,因为这类方法已经考虑到的library大小不同的问题了。

2用到的包

代码语言:javascript
复制
rm(list = ls())
library(tidyverse)
library(SingleCellExperiment)
library(scater)
library(scran)
library(scRNA.seq.funcs)

3示例数据

这里我们用一下之前介绍的counts文件和annotation文件,然后通过SingleCellExperiment创建SingleCellExperiment格式的文件,并且经过初步过滤ID转换等。

代码语言:javascript
复制
load("umi_umiqc.Rdata")
umi.qc

4PCA-rawdata

这里我们用取过log后的raw_counts进行PCA绘图。

代码语言:javascript
复制
umi.qc <- runPCA(umi.qc, exprs_values = "logcounts_raw")
plotPCA(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")

5PCA-CPM

这里我们先做一个CPM,然后取log,再做一下PCA。聚类明显要好一些了!😂

代码语言:javascript
复制
logcounts(umi.qc) <- log2(calculateCPM(umi.qc) + 1)
umi.qc <- runPCA(umi.qc)
plotPCA(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")

6RLE-rawdata

这里我们引入一个新的可视化方式,叫relative log expression (RLE) plots。 先对raw_counts做一个RLE plots吧, 这里可以看出有明显批次效应

代码语言:javascript
复制
plotRLE(umi.qc, exprs_values = "logcounts_raw",colour_by = "batch") + ggtitle("RLE plot for logcounts_raw")

7RLE-CPM

再看一下CPM后的结果吧,非常明显!🥳

代码语言:javascript
复制
plotRLE(umi.qc, exprs_values = "logcounts",colour_by = "batch") + ggtitle("RLE plot for log2(CPM) counts")

8其他方法

基于CPMNormalization方法,或者其他类似的方法,有一个前提,就是假设所有细胞含有相似数量RNA,但这有时候是不对的。🤒 这里我们介绍一下scran包,通过反卷积的方法进行Normalization。🤗

8.1 聚类

代码语言:javascript
复制
qclust <- quickCluster(umi.qc, min.size = 30)
table(qclust)

8.2 计算sizefactor

接着我们来计算一下sizeFactor,用于后面的Normalization。🧐

代码语言:javascript
复制
umi.qc <- computeSumFactors(umi.qc, clusters = qclust)

8.3 正式Normalization

开始logNormalization。🤩

代码语言:javascript
复制
umi.qc <- logNormCounts(umi.qc)

8.4 可视化-PCA

代码语言:javascript
复制
umi.qc <- runPCA(umi.qc)
plotPCA(umi.qc, colour_by = "batch",size_by = "detected", shape_by = "individual")

8.5 RLE plot

代码语言:javascript
复制
plotRLE(umi.qc, exprs_values = "logcounts",colour_by = "batch")

8.6 补充一下

如果你已经做过Normalization,再做一次的话,这个size factors会是负数,严重影响你的结果。🫠 我们可以check一下。✌️

代码语言:javascript
复制
summary(sizeFactors(umi.qc))

9downsampled data

这里再介绍一个scRNA.seq.funcs包的Down_Sample_Matrix函数。 采用了downsample降采样的方法,具体概念不介绍了,大家自行google

9.1 PCA

代码语言:javascript
复制
logcounts(umi.qc) <- log2(Down_Sample_Matrix(counts(umi.qc)) + 1)
umi.qc <- runPCA(umi.qc)
plotPCA(umi.qc,colour_by = "batch",size_by = "detected", shape_by = "individual")

9.2 RLE plot

代码语言:javascript
复制
plotRLE(umi.qc, exprs_values = "logcounts",colour_by = "batch")

最后祝大家早日不卷!~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3示例数据
  • 4PCA-rawdata
  • 5PCA-CPM
  • 6RLE-rawdata
  • 7RLE-CPM
  • 8其他方法
    • 8.1 聚类
      • 8.2 计算sizefactor
        • 8.3 正式Normalization
          • 8.4 可视化-PCA
            • 8.5 RLE plot
              • 8.6 补充一下
              • 9downsampled data
                • 9.1 PCA
                  • 9.2 RLE plot
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档