Part1:scRNA-seq质控+标准化

质控来源:

邓宏魁2022.4.13
质控步骤
scRNA-seq
1. 下载GSE152048基因表达矩阵(BC3)

导入后结果:

barcode:细胞编号,列名;feature:基因,行名;matrix:矩阵

路径:D:\keti _zaiyan_english\course3\BC3

2. 安装seurat包
3. 读取数据

Seurat function:Read10x——Load in data from 10X

data.dir    
Directory containing the matrix,mtx, genes.tsv (or features.tsv), and barcodes.tsv files provided by 10X. A vector or named vector can be given in order to load several data directories. If a named vector is given, the cell barcode names will be prefixed with the name.

gene.column 
Specify which column of genes.tsv or features.tsv to use for gene names; default is 2

cell.column 
Specify which column of barcodes.tsv to use for cell names; default is 1

unique.features 
Make feature names unique (default TRUE)

strip.suffix    
Remove trailing "-1" if present in all cell barcodes.
4. 查看seurat.count的数据结构
 class(scRNA.counts)
[1] "dgCMatrix"#稀疏矩阵
5. 创建seurat对象(S4对象)
#CreateSeuratObject是创建S4对象的function
scRNA = CreateSeuratObject(scRNA.counts,min.cells = 3, project="os", min.features = 300)
View(scRNA)
#第一种S4对象的提取方法:点击白框
#第二种S4对象的提取方法:@和$交替使用
count = scRNA@assays$RNA@counts
scRNA@meta.data

?CreateSeuratObject

counts  
Either a matrix-like object with unnormalized data with cells as columns and features as rowms or an Assay-derived object
#非标准化,基因为行名,细胞为列名的表达矩阵

min.cells   
Include features detected in at least this many cells.
#基因至少要在多少个细胞内被检测到,基因至少要在几个细胞中表达

min.features    
Include cells where at least this many features are detected.
#有多少个基因能被检测到的细胞,min.features = 300指每个细胞至少检测到300个gene
  • S3对象和S4对象
    s3对象包括 data.frame list character matirx
    s4为层级结构
    s4对象的索引
6. 查看sample的细胞数量
 table(scRNA@meta.data$orig.ident) 
  os 
8684
7. 计算质控指标

?PercentageFeatureSet
——Calculate the percentage of all counts that belong to a given set of features

#计算细胞中线粒体基因比例
scRNA[[]] #默认索引提取metadata!!!seurat的结构设计
scRNA[["percent.mt"]] <- PercentageFeatureSet(scRNA, pattern = "^MT-")#MT-是线粒体基因的开头;正则表达式;在metadata的dataframe里加一列线粒体的百分比
HB.genes <- c("HBA1","HBA2","HBB","HBD","HBE1","HBG1","HBG2","HBM","HBQ1","HBZ")
#红细胞基因包括...成熟红细胞没有细胞核,应去除此类基因
HB_m <- match(HB.genes, rownames(scRNA@assays$RNA)) 
#匹配rowname,即基因名
HB.genes <- rownames(scRNA@assays$RNA)[HB_m] 
HB.genes <- HB.genes[!is.na(HB.genes)] #!(删除)判断HB.gene为True的基因
scRNA[["percent.HB"]]<-PercentageFeatureSet(scRNA, features=HB.genes) 
#对这几个HBgene计算红细胞比例
#head(scRNA@meta.data)
col.num <- length(levels(scRNA@active.ident))

【R语言正则表达式】

正则表达式符号 含义
^ 匹配一个字符串的开始
$ 匹配一个字符串的结束
. 匹配除了换行符以外的任意字符
* 匹配所有含有*后的字符
? 匹配所有含有?后的字符
+ 匹配所有含有+后的字符
.* 匹配任意字符
原始metadata的dataframe,行名代表细胞;nCount_RNA:代表所有基因的表达量之和,即测序深度;nFeature_RNA:这个细胞中检测到了多少个基因,代表种类
8. 画图
#画图
violin <- VlnPlot(scRNA,
                  features = c("nFeature_RNA", "nCount_RNA", "percent.mt","percent.HB"), 
                  cols =rainbow(col.num), 
                  pt.size = 0.01, 
                  ncol = 4) + 
  theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank()) 

violin
  • 结果


    Feature、count、线粒体基因、红细胞基因占比可视化。
9. 质控

nature原文标准:当(1) total UMI counts of no more than 1,000; (2) gene numbers no higher than 500; (3) mitochondrial gene percentage of greater than 20.删除该细胞
线粒体含量高:细胞活性状态异常,凋亡状态;但比如肝脏细胞代谢活跃,阈值可以稍微提高

UMI用于标记转录本:UMI是一段12nt的核苷酸序列,每一个 mRNA,随机连上一个 UMI,因此可以计数不同的 UMI,最终计数 mRNA 的数量。
UMI的作用是绝对定量,因为每个mRNA的扩增效率是不一样的,即使两个初始的mRNA表达量一致,在多轮扩增之后,我们也会误认为他们差异表达。UMI通过初始的标记,让我们可以统计扩增后UMI的种类,就可以知道原始的表达量了】
10xBarcode是一段16nt的核苷酸序列,用来标记细胞:在Barcode与细胞融合形成水凝珠之后,可以保证一个细胞的所有基因序列都带着相同的Barcode序列,也就可以认定这些序列来自同一个细胞。】

10. 质控后和质控前图对比
ggsave("vlnplot_before_qc.pdf", plot = violin, width = 12, height = 6) 
ggsave("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") 
plot1
plot2
plot3

pearplot
  • 结果


    pearplot;随着测序数量的增加,单细胞所检测到的基因数量也在增加,其中,这两个是有一定关联性的,在作图之前需要对含有线粒体基因的细胞进行筛选,因为过高会干扰细胞分群;图1是对于线粒体比例于测序数据的关系的散点图即测序深度和线粒体基因含量的关系,图2是对基因于测序数据序列的关系的散点图,即测序深度于基因数量的关系
scRNA1 <- subset(scRNA, subset = nFeature_RNA > 300& nFeature_RNA < 7000 & percent.mt < 10 & percent.HB < 3 & nCount_RNA < 100000)
#!非;&和;|或;需同时满足条件
#注意:默认线粒体含量至少要小于20%,这是根据生物学知识得出的默认阈值。红细胞的数目要至少小于5%;至于nFeature_RNA和nCount_RNA的阈值怎么确定,这个要结合pearplot的图来判断、我们质控的目标就是删除离异值。而且注意阈值尽可能取的宽松一下,防止后面分析想要的细胞得不到→接下来从pearplot的图片来做质控---剔除离异值
11. 标准化
  • 基本概念:
  • 文库大小(library size):指的是每个细胞中所有基因的表达量之和。细胞的文库如果很小,说明在文库制备过程中存在RNA的损失要么是由于细胞裂解,要么是cDNA捕获不足导致后续的扩增量少。
  • 每个细胞中表达基因的数目(number of expressed features in each cell):指的是细胞中非0表达量的基因数量。如果细胞中基本没有基因表达,很可能是转录本捕获失败。
  • 比对到线粒体基因组的reads比例:比对到线粒体的reads增多,说明细胞质中的RNA减少,可能存在细胞穿孔的情况,而这个孔的大小,可能只是将细胞质中存在的mRNA流出去,但线粒体的体积超过了孔的大小,所以还留在了细胞中,造成一定程度的富集,导致线粒体RNA占比升高。
  • 过滤的目的:就是去除低质量的细胞,比如线粒体含量超过20%,还有基因种类低于两百的,依据具体情况来定。

nature原文:The expression level of each gene in each cell was normal-
ized using the function NormalizeData with the default parameters
to remove the influence of sequencing library size, which converted
expression values from UMI counts to ln[10,000 × UMI counts/total
UMI counts in cell + 1

  • Seuat的默认标准化方法: 每个细胞的某一count加1然后先除以该细胞的总count,然后乘以scale因子 -10000,再做个对数转换。

  • ?NormalizeData

object——An object

Method for normalization:
- LogNormalize: Feature counts for each cell are divided by the total counts for that cell and multiplied by the scale.factor. This is then natural-log transformed using log1p.
- CLR: Applies a centered log ratio transformation
- RC: Relative counts. Feature counts for each cell are divided by the total counts for that cell and multiplied by the scale.factor. No log-transformation is applied. For counts per million (CPM) set scale.factor = 1e6
  • normalize的方法
scRNA1 <- NormalizeData(scRNA1, normalization.method = "LogNormalize", scale.factor = 10000)

save(scRNA1,file='scRNA1.Rdata')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容