单细胞转录组基础分析二:数据质控与标准化

本文是参考学习单细胞转录组基础分析二:数据质控与标准化的学习笔记。可能根据学习情况有所改动。
本节及之后的三、四节主要介绍单细胞表达矩阵到细胞类型鉴定的分析步骤,流程图如下:

图片

10X官网下载数据

10X官网演示数据:

官方演示数据集的页面如下,Chromium Connect是自动化系统,官方介绍操作造成的批次效应较小。Chromium Next GEM最新版的芯片,由老版的双十字微流控芯片改成了单十字微流控芯片。目前国内的10X试剂基本都是V3版本的了,因此也不要下载V1和V2试剂的数据了。为了保证笔记本电脑能运行,我们下载细胞数比较少的数据,下图红色箭头所示:

图片

本教程的分析都是基于箭头标示的数据。点击之后需要提交个人信息,提交之后就进入数据下载界面 了。

图片

下载红框标示的数据,Seurat分析的输入文件在这里,解压后如下图所示:

图片

数据质控与标准化

上游分析软件Cell Ranger会对数据进行质控,但是在进行下游分析前,我们一般会对数据进行更严格的过滤。

library(Seurat)

运行上面的代码后会在"QC"文件夹下面得到4个文件

图片

打vlnplot_before_qc的文件

图片

上面的小提琴图依次是细胞的基因数量、mRNA分子数量、线粒体基因比例、红细胞基因比例。我们一般根据基因数量和线粒体比例来过滤细胞,细胞的最低基因数一般选择200-500,最大基因数和核糖体比例根据上图来选择,我的建议是minGene=500,maxGene=4000,pctMT=15。

##设置质控标准

运行上面的代码后会在"QC"文件夹下面得到vlnplot_after_qc的文件

图片

可以看到基因数和核糖体比例不正常的细胞都过滤了。以上代码的最后一行是对数据进行标准化,它的作用是让测序数据量不同的细胞的基因表达量具有可比性。计算公式如下:标准化后基因表达量 = log1p(10000基因counts/细胞总counts)*

> ##创建seurat对象
> scRNA.counts <- Read10X(data.dir = "filtered_feature_bc_matrix")
> try({scRNA = CreateSeuratObject(scRNA.counts[['Gene Expression']])},silent=T)
> if(exists('scRNA')){} else {scRNA = CreateSeuratObject(scRNA.counts)}
> table(scRNA@meta.data$orig.ident)         #查看样本的细胞数量

SeuratProject 
         1222 
> ##计算质控指标
> #计算细胞中核糖体基因比例
> scRNA[["percent.mt"]] <- PercentageFeatureSet(scRNA, pattern = "^MT-")
> #计算红细胞比例
> HB.genes <- c("HBA1","HBA2","HBB","HBD","HBE1","HBG1","HBG2","HBM","HBQ1","HBZ")
> HB_m <- match(HB.genes, rownames(scRNA@assays$RNA))
> HB.genes <- rownames(scRNA@assays$RNA)[HB_m]
> HB.genes <- HB.genes[!is.na(HB.genes)]
> scRNA[["percent.HB"]]<-PercentageFeatureSet(scRNA, features=HB.genes)
> head(scRNA@meta.data)
                      orig.ident nCount_RNA nFeature_RNA percent.mt percent.HB
AAACCCAAGGAGAGTA-1 SeuratProject       8288         2620  10.774614          0
AAACGCTTCAGCCCAG-1 SeuratProject       5512         1808   7.964441          0
AAAGAACAGACGACTG-1 SeuratProject       4283         1562   6.187252          0
AAAGAACCAATGGCAG-1 SeuratProject       2754         1225   5.991285          0
AAAGAACGTCTGCAAT-1 SeuratProject       6592         1831   6.614078          0
AAAGGATAGTAGACAT-1 SeuratProject       8845         2048   7.959299          0
> col.num <- length(levels(scRNA@active.ident))
> violin <- VlnPlot(scRNA,
+                   features = c("nFeature_RNA", "nCount_RNA", "percent.mt","percent.HB"), 
+                   cols =rainbow(col.num), 
+                   pt.size = 0.01, #不需要显示点,可以设置pt.size = 0
+                   ncol = 4) + 
+   theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
> ggsave("QC/vlnplot_before_qc.pdf", plot = violin, width = 12, height = 6)
> ggsave("QC/vlnplot_before_qc.png", plot = violin, width = 12, height = 6)
> plot1 <- FeatureScatter(scRNA, feature1 = "nCount_RNA", feature2 = "percent.mt")
> plot2 <- FeatureScatter(scRNA, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
> plot3 <- FeatureScatter(scRNA, feature1 = "nCount_RNA", feature2 = "percent.HB")
> pearplot <- CombinePlots(plots = list(plot1, plot2, plot3), nrow=1, legend="none")
Warning message:
CombinePlots is being deprecated. Plots should now be combined using the patchwork system. 
> ggsave("QC/pearplot_before_qc.pdf", plot = pearplot, width = 12, height = 5)
> ggsave("QC/pearplot_before_qc.png", plot = pearplot, width = 12, height = 5)
> # 运行上面的代码后会在"QC"文件夹下面得到4个文件
> # 图片
> # 
> # 打vlnplot_before_qc的文件
> # 图片
> # 
> # 上面的小提琴图依次是细胞的基因数量、mRNA分子数量、线粒体基因比例、红细胞基因比例。我们一般根据基因数量和线粒体比例来过滤细胞,细胞的最低基因数一般选择200-500,最大基因数和核糖体比例根据上图来选择,我的建议是minGene=500,maxGene=4000,pctMT=15。
> ##设置质控标准
> print(c("请输入允许基因数和核糖体比例,示例如下:", "minGene=500", "maxGene=4000", "pctMT=20"))
[1] "请输入允许基因数和核糖体比例,示例如下:" "minGene=500"                             
[3] "maxGene=4000"                             "pctMT=20"                                
> minGene=500
> maxGene=4000
> pctMT=15
> ##数据质控
> scRNA <- subset(scRNA, subset = nFeature_RNA > minGene & nFeature_RNA < maxGene & percent.mt < pctMT)
> col.num <- length(levels(scRNA@active.ident))
> violin <-VlnPlot(scRNA,
+                  features = c("nFeature_RNA", "nCount_RNA", "percent.mt","percent.HB"), 
+                  cols =rainbow(col.num), 
+                  pt.size = 0.1, 
+                  ncol = 4) + 
+   theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
> ggsave("QC/vlnplot_after_qc.pdf", plot = violin, width = 12, height = 6)
> ggsave("QC/vlnplot_after_qc.png", plot = violin, width = 12, height = 6)
> scRNA <- NormalizeData(scRNA, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
> ##保存中间结果
> saveRDS(scRNA, file="scRNA.rds")
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容