不缺好文章idea的不要进

福建白癜风医院 http://m.39.net/pf/a_7160655.html
SinglcllRNA-sqanalysisworkshop1QualityControl大家好,我是晨曦,本次将开启一个全新的系列,依旧是单细胞,依旧是熟悉的晨曦解读,只不过这一次我们选择的课程是SinglcllRNA-sqanalysisworkshop

这个课程是由瑞典国家生物信息学基础设施(NBIS)负责制作的,课程的链接在下方

SinglcllRNA-sqanalysiscours(nbiswdn.github.io)

当然了,通过这门课程我们要把我们前段时间学习的单细胞再度复习以及巩固一遍,以迎接我们下一阶段的文献解读和文献复现环节。

很可惜的是,这门课程我发现的时候已经过了申请时间,但是NBIS还是十分友好的提供了全套脚本来供我们学习,这种分享知识的精神一直是晨曦颇为敬佩且极力践行的。

晨曦单细胞笔记系列传送门

1.首次揭秘!不做实验也能发10+SCI,CNS级别空间转录组套路全解析(附超详细代码!)

2.过关神助!99%审稿人必问,多数据集联合分析,你注意到这点了吗?

3.太猛了!万字长文单细胞分析全流程讲解,看完就能发文章!建议收藏!(附代码)

4.秀儿!10+生信分析最大的难点在这里!30多种方法怎么选?今天帮你解决!

5.图好看易上手!没有比它更适合小白入手的单细胞分析了!老实讲,这操作很sao!

6.毕业救星!这个R包在高分文章常见,实用!好学!

7.我就不信了,生信分析你能绕开这个问题!今天一次性帮你解决!

首先介绍一下课程大纲

晨曦解读

本课程架构

1.当前scRNA-sq技术介绍(在线)

2.原始测序数据转换为基因表达矩阵的介绍(在线)

3.scRNA-sq数据的质量控制

4.数据降维和聚类分析

5.数据归一化处理

6.scRNA-sq数据的差异基因表达

7.细胞类型鉴定

8.细胞轨迹分析

9.对比Surat、Scran和Scanpy分析流程

了解完课程结构,那我们就开始进行今天的内容吧,今天的内容为——数据质控(QC)

#本教程使用的数据是3位COVID-19患者和3位健康正常人,总共6个PBMC的10×数据,且每个样本均被二次采样,所以每个样本为个细胞#示例数据已经放在百度云,评论区留言获取即可#准备工作#R包加载的提示信息如果觉得乱,以后可以使用这个函数来加载R包supprssMssags(rquir(Surat))supprssMssags(rquir(Matrix))supprssMssags(rquir(DoubltFindr))

晨曦解读

其实有时候有些R包安装提示也很有用,所以不要盲目使用

supprssMssags函数

#准备输入文件cov.15-Surat::Rad10X_h5(filnam="raw/nCoV_PBMC_15.h5",us.nams=T)cov.1-Surat::Rad10X_h5(filnam="raw/nCoV_PBMC_1.h5",us.nams=T)cov.17-Surat::Rad10X_h5(filnam="raw/nCoV_PBMC_17.h5",us.nams=T)ctrl.5-Surat::Rad10X_h5(filnam="raw/Normal_PBMC_5.h5",us.nams=T)ctrl.13-Surat::Rad10X_h5(filnam="raw/Normal_PBMC_13.h5",us.nams=T)ctrl.14-Surat::Rad10X_h5(filnam="raw/Normal_PBMC_14.h5",us.nams=T)

晨曦解读

导入数据成功,然后我们可以通过dim函数简单看一下数据

#很遗憾我们这样还只是把h5数据导入进入R中,还得需要我们创建Surat对象sdata.cov15-CratSuratObjct(cov.15,projct="covid_15")sdata.cov1-CratSuratObjct(cov.1,projct="covid_1")sdata.cov17-CratSuratObjct(cov.17,projct="covid_17")sdata.ctrl5-CratSuratObjct(ctrl.5,projct="ctrl_5")sdata.ctrl13-CratSuratObjct(ctrl.13,projct="ctrl_13")sdata.ctrl14-CratSuratObjct(ctrl.14,projct="ctrl_14")#创建速度很快~#然后我们需要添加分组信息来让我们合并数据集的时候知道数据集类型sdata.cov1typ="Covid"sdata.cov15typ="Covid"sdata.cov17typ="Covid"sdata.ctrl5typ="Ctrl"sdata.ctrl13typ="Ctrl"sdata.ctrl14typ="Ctrl"

晨曦解读

还记得我们的分组信息添加到哪里了吗?

如果忘了,就赶快去复习吧

#合并6个样本alldata-mrg(x=sdata.cov15,y=c(sdata.cov1,sdata.cov17,sdata.ctrl5,sdata.ctrl13,sdata.ctrl14),add.cll.ids=c("covid_15","covid_1","covid_17","ctrl_5","ctrl_13","ctrl_14"))#整理一下分析环境rm(cov.15,cov.1,cov.17,ctrl.5,ctrl.13,ctrl.14,sdata.cov15,sdata.cov1,sdata.cov17,sdata.ctrl5,sdata.ctrl13,sdata.ctrl14)

晨曦解读

然后我们来探究一下add.cll.ids参数

我分别运行下面两句代码

#代码一alldata-mrg(x=sdata.cov15,y=c(sdata.cov1,sdata.cov17,sdata.ctrl5,sdata.ctrl13,sdata.ctrl14),add.cll.ids=c("covid_15","covid_1","covid_17","ctrl_5","ctrl_13","ctrl_14"))#代码二shiyan-mrg(sdata.cov15,c(sdata.cov1,sdata.cov17,sdata.ctrl5,sdata.ctrl13,sdata.ctrl14))

发现得到的数据集大小是一样的,说明数据集本身数量并没有改变,可能是数据集内部有一些微调,所以我探究数据集发现

代码一

代码二

晨曦解读

所以这个参数的作用是在细胞ID前添加分组信息,但是要注意,信息的顺序需要和合并的顺序保持一致

#清空一下内存gc()#简单探索一下表达矩阵和细胞信息as.data.fram(alldata

assaysRNA

counts[1:10,1:2])had(alldata

mta.data,10)

#质控#计算线粒体基因百分比#这里提供两种方法#方法一(自动)alldata-PrcntagFaturSt(alldata,"^MT-",col.nam="prcnt_mito")#方法二(手动)total_counts_pr_cll-colSums(alldata

assaysRNA

counts)had(total_counts_pr_cll)#查询线粒体相关基因mito_gns-rownams(alldata)[grp("^MT-",rownams(alldata))]had(mito_gns,10)#计算线粒体基因含量alldataprcnt_mito-colSums(alldata

assaysRNA

counts[mito_gns,])/total_counts_pr_cll

晨曦解读

两种方法均可,方法一是Surat的内置算法,方法二则是纯纯的数学计算

#同样的方法计算核糖体基因百分比#Way1:DoingitusingSuratfunction(自动)alldata-PrcntagFaturSt(alldata,"^RP[SL]",col.nam="prcnt_ribo")#Way2:Doingitmanually(手动)ribo_gns-rownams(alldata)[grp("^RP[SL]",rownams(alldata))]had(ribo_gns,10)alldataprcnt_ribo-colSums(alldata

assaysRNA

counts[ribo_gns,])/total_counts_pr_cll

晨曦解读

常规scRNA-sq计算线粒体基因比例即可,但是也可以计算核糖体基因含量,然后因为这个是PBMC,所以我们下面计算血红蛋白相关基因含量

QC这一步骤,如果想要做细会有很多方面,但是常规的就这些,按照常规处理数据即可

#计算血红蛋白基因含量#Prcntaghmoglobingns-includsallgnsstartingwithHBxcptHBP.alldata-PrcntagFaturSt(alldata,"^HB[^(P)]",col.nam="prcnt_hb")alldata-PrcntagFaturSt(alldata,"PECAM1

PF4",col.nam="prcnt_plat")

晨曦解读

最后我们Surat对象中多出这些数据

#下面把我们的QC指标进行可视化fats-c("nFatur_RNA","nCount_RNA","prcnt_mito","prcnt_ribo","prcnt_hb")VlnPlot(alldata,group.by="orig.idnt",faturs=fats,pt.siz=0.1,ncol=3)+NoLgnd()

晨曦解读

从第一个可视化可以很清楚的看到,有四个数据集的表达是有很明显的不同的,而且随着检测到核糖体表达增高,那么构成我们最后的转录景观,核糖体基因的表达比例就会增大

这里面单纯从数值上来看就不是很准确了(基因-左右;RNA-2万到4万左右,线粒体比例最大在25%以下哎)

#绘制点图FaturScattr(alldata,"nCount_RNA","nFatur_RNA",group.by="orig.idnt",pt.siz=0.5)

#标准过滤#保留至少检测到个基因的细胞且需要在至少3个细胞中表达这些基因#这个过滤条件需要结合scRNA文库制备的方法#过滤至少检测到个基因的细胞slctd_c-WhichClls(alldata,xprssion=nFatur_RNA)#过滤至少在3个细胞中表达的基因slctd_f-rownams(alldata)[Matrix::rowSums(alldata)3]#提取data.filt-subst(alldata,faturs=slctd_f,clls=slctd_c)dim(data.filt)#[1]

晨曦解读

这里我们还需要注释,检测到极高基因表达的细胞,还有可能是双重细胞即一个微珠内有两个或两个以上的细胞,所以我们要进行doublt预测

但是在这个教程中跳过了这一步骤,一般来说成熟的技术是很少会出现这种情况的,同时结合前面的QC可视化也没有这种情况,但是代码放在下面

#skipfornowandrunDoubltFindrfirst!#high.dt.v3-WhichClls(data.filt,xprssion=nFatur_RNA)#high.dt.v2-WhichClls(data.filt,xprssion=nFatur_RNA#orig.idnt==v2.1k)#rmovthscllsdata.filt-subst(data.filt,#clls=stdiff(WhichClls(data.filt),c(high.dt.v2,high.dt.v3)))#chcknumbrofcllsncol(data.filt)

晨曦解读

然后我们还可以查看哪些基因对表达贡献大,绘制每个基因的表达百分比

#ComputthrlativxprssionofachgnprcllUssparsmatrix#oprations,ifyourdatastislarg,doingmatrixdvisionsthrgularway#willtakavrylongtim.par(mar=c(4,8,2,1))C-data.filt

assaysRNA

countsC-Matrix::t(Matrix::t(C)/Matrix::colSums(C))*most_xprssd-ordr(apply(C,1,mdian),dcrasing=T)[20:1]boxplot(as.matrix(t(C[most_xprssd,])),cx=0.1,las=1,xlab="%totalcountprcll",col=(scals::hu_pal())(20)[20:1],horizontal=TRUE)

晨曦解读

根据上图的可视化,我们可以很清楚的看到,MALAT1基因占比很高,其它占比高的基因包括线粒体基因和核糖体基因,但是线粒体和核糖体基因含量高是普遍现象,所以MALAT1基因含量高可能是技术问题或者是生物学问题,所以需要我们明确该Gn的信息,以此来帮助我们进行下游的分析。

基于我们本身的生物学知识以及前面的QC可视化,我们选择线粒体或核糖体含量作为我们后续筛选的阈值,我们选择过滤掉线粒体读数低于20%(因为大部分细胞小于这个数值),核糖体读数小于5%的细胞来作为我们后续分析的对象。

slctd_mito-WhichClls(data.filt,xprssion=prcnt_mito0.2)slctd_ribo-WhichClls(data.filt,xprssion=prcnt_ribo0.05)#andsubstthobjcttoonlykpthoscllsdata.filt-subst(data.filt,clls=slctd_mito)data.filt-subst(data.filt,clls=slctd_ribo)dim(data.filt)tabl(data.filtorig.idnt)#[1]

晨曦解读

这里需要说一个平时不容易让人注意的点

自己计算的线粒体基因以及核糖体基因的比例与Surat包内置算法计算的比例相差比较大。

下面是我用Surat内置算法计算的比例,也是走到这一步发现一共就剩下34个细胞,差距比较大,所以这也给我们自己日后分析有个提示。

如果后期在质控后细胞过少,不如尝试一下这一种可能

#回到主题tabl(data.filtorig.idnt)#covid_1covid_15covid_17ctrl_13ctrl_14ctrl_5##接下来绘制质控后的QC可视化fats-c("nFatur_RNA","nCount_RNA","prcnt_mito","prcnt_ribo","prcnt_hb")VlnPlot(data.filt,group.by="orig.idnt",faturs=fats,pt.siz=0.1,ncol=3)+NoLgnd()

晨曦解读

接下来,根据



转载请注明地址:http://www.gongjingmilanagjml.com/glyy/7992.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章