scRNA-seq | 吐血整理的单细胞入门教程(初步降维及可视化)(八)

1写在前面

上一期我们介绍了质控quality control, QC)的意义和方法。
本期我们介绍一下高表达基因的可视化,以及简单的主成分分析PCA)。🥰

2用到的包

rm(list = ls())
library(tidyverse)
library(SingleCellExperiment)
library(scater)

3示例数据

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

load("umi.Rdata")
umi
alt

4高表达基因的可视化

4.1 初步绘图

这里我们可以看到高表达的多是一些线粒体核糖体基因。
不过大多数的dataset都是这样的。😂

umi %>% 
plotHighestExprs(exprs_values = "counts",
feature_names_to_plot = "SYMBOL",
colour_cells_by="detected")
alt

4.2 过滤一下

这里我们过滤一下看看,过滤条件:

  • 2个或更多细胞中检测到的基因;
  • counts > 1。
keep_feature <- nexprs(umi, byrow = TRUE, detection_limit = 1) >= 2
rowData(umi)$discard <- ! keep_feature
table(rowData(umi)$discard)
alt

在这里我们过滤掉了4205个基因。


4.3 正式过滤

我们先取个log吧,并存在umi里,然后再用前面的过滤条件过滤一下。

assay(umi, "logcounts_raw") <- log2(counts(umi) + 1)

umi.qc <- umi[! rowData(umi)$discard,! colData(umi)$discard]

5降维与可视化-PCA

5.1 PCA

我们常用的降维方法包括PCAUMAPtSNE。🤒
Note! 👀 这里需要跟大家强调一下log-transformationnormalization的重要性。

5.2 质控前

举个栗子🌰
不进行log-transformationnormalization
聚成一团,根本没法看啊。🫠

umi <- runPCA(umi, exprs_values = "counts")
dim(reducedDim(umi, "PCA"))
plotPCA(umi, colour_by = "batch", size_by = "detected", shape_by = "individual")
alt

取个log 🥳
在这里我们用下之前做完log-transformation后的数据。
可以看到不同replicate, individual, sequencing depth,明显分开,形成一个个小的group。😘

umi <- runPCA(umi, exprs_values = "logcounts_raw")
dim(reducedDim(umi, "PCA"))
plotPCA(umi, colour_by = "batch", size_by = "detected", shape_by = "individual")
alt

Note! 这里我只做了log-transformation,大家在实际应用中还应纳入normalizationCPMTPM等方法,大家自行挑选吧。


5.3 质控后

我们来看一下过滤掉表达低的基因后有什么变化吧,当然也是要取log的。😂

umi.qc <- runPCA(umi.qc, exprs_values = "logcounts_raw")
dim(reducedDim(umi.qc, "PCA"))
plotPCA(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")
alt

这里可以看到NA19098.r2经过质控后,不再形成一组离群值了。
Note! 这里说明一下,scater包在计算PCA时,只用了top 500的基因,如果想改的话可以使用ntop


😉 嘿嘿,我们试一下用所有基因来做PCA试试。(^▽^)

umi.qc <- runPCA(umi.qc, exprs_values = "logcounts_raw", ntop = nrow(umi.qc))
dim(reducedDim(umi.qc, "PCA"))
plotPCA(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")
alt

6降维与可视化-tSNE

6.1 质控前

set.seed(123)
umi <- runTSNE(umi, exprs_values = "logcounts_raw", perplexity = 130)
plotTSNE(umi, colour_by = "batch", size_by = "detected", shape_by = "individual")
alt

Note! 这里补充一下perplexity一般取总细胞数/5后四舍五入取整。🤒

6.2 质控后

set.seed(123)
umi.qc <- runTSNE(umi.qc, exprs_values = "logcounts_raw", perplexity = 130)
plotTSNE(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")
alt

同样的,经过质控后,NA19098.r2也不再形成一组离群值了。


6.3 改下perplexity

我们在这里改一下perplexity,分别为10220,看看有什么变化。

umi.qc <- runTSNE(umi.qc, exprs_values = "logcounts_raw", perplexity = 10)
plotTSNE(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")

umi.qc <- runTSNE(umi.qc, exprs_values = "logcounts_raw", perplexity = 220)
plotTSNE(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")
10
10
220
220

最后祝大家早日不卷!~

需要示例数据的小伙伴,在公众号回复scRNAseq获取吧!

点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰

本文由 mdnice 多平台发布

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值