单细胞测序分析之小技巧之for循环批量处理数据和出图
harmony整合不同平台的单细胞数据之旅生物信息学习的正确姿势
NGS系列文章包括NGS基础、转录组分析(Nature重磅综述关于RNAseq你想知道的全在这)、ChIPseq分析(ChIPseq基本分析流程)、单细胞测序分析(重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程(原理、代码和评述))、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析(stepbystep)Limma差异分析、火山图、功能富集)等内容。
在进行单细胞转录组测序分析中,我们发现比如样本较多或者需要大量出图的时候,我一开始就是大量手动一个一个的出图,但回头想想,这样的操作模式不都是一样的嘛,直接用for循环不就搞定啦!基础
首先我们讲点for循环的基础知识及举个小栗子!
for循环基本结构如下:for(变量in值){}
也就是说当变量在值的范围内将执行中括号内的操作。是不是非常简单?
我们举个栗子:
比如我们想要计算一个向量中偶数的个数:xc(2,5,3,9,8,11,6)count0for(valinx){if(val20)countcount1}print(count)〔1〕3
在上面的示例中,由于向量x具有7个元素,因此循环迭代了7次。
在每次迭代中,val取x的对应元素的值。
我们使用了一个计数器来计算x中的偶数。我们可以看到x包含3个偶数。进阶
比如我们现在有两个患者的鼻腔样本,然后我们进行单细胞测序后,cellranger后我们在filtered中分别生成了3个文件:barcodes,features和matrix。我懒呀,我想万一我有好多个样本怎么办,不如用一个for循环来搞定!
于是我的文件就成了这个样子:batchlistlist(P2,P3)batchdatalistlist(P21,P31)for(iin1:length(batchlist)){print(batchlist〔〔i〕〕)sobjectRead10X(paste(Inputfiles,batchlist〔〔i〕〕,sep))sobjectCreateSeuratObject(countssobject,min。cells0,min。features400,projectP23)sobject〔〔percent。mt〕〕PercentageFeatureSet(sobject,patternMT)sobjectsubset(sobject,subsetnFeatureRNA100nFeatureRNA8000percent。mt10)sobjectmeta。data〔,run〕batchlist〔i〕sobjectNormalizeData(sobject)batchdatalist〔〔i〕〕FindVariableFeatures(sobject,selection。methodvst,nfeatures5000)}
那么我们仔细看一下刚才发生了什么,我们首先把我们的P2和P3设置为list,然后在for循环中我们分别进行了读取数据,提取线粒体基因比例,QC筛选,在metadata中添加新的一列,进行归一化并计算高变基因。最后将P2和P3合并在一个list中。
这时候一定会有好同志问这样一个问题,为什么在batchdatalistlist(P21,P31)中将P2和P3都赋值为1,这时候我们不妨不对其进行设置,使batchdatalistlist(P2,P3),我们会看见下图中的P2会消失哦!
在我们使用seurat中的FindAllMarkers()得到每个cluster的高变基因后,我也同时得到了一个csv表,可是我觉得太不直观了,于是我现在要循环出一些不同clusters的vlnplot,我应该怎么办呢?嗨,循环起来呀!clusterssslist(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)for(iinclustersss){for(min1:nrow(run。combined。markers)){if(run。combined。markers〔cluster〕〔m,〕i){filenamepaste(run。combined。markersgene〔m〕,VlnPlot。pdf,sep)pVlnPlot(objectrun。combined,featuresc(run。combined。markersgene〔m〕))print(p)ggsave(p,filenamepaste(i,run。combined。markersgene〔m〕,VlnPlot。pdf,sep))dev。off()}}}
我给解释一下上面的内容,首先我们把我们的cluster设为list,i代表cluster,m代表run。combined。marker的排序,使用两个for循环进行嵌套,最后在保存文件时将cluster基因名vlnplot结合进行保存。
每次看见这样出图我都特别有成就感,,,,哈哈哈哈,快haveatry!
其实也可以写一个apply版的,获得所有plotList,再用patchwork或cowplot进行拼图。plotMarkerfunction(cluster,run。combined){for(min1:nrow(run。combined。markers)){if(run。combined。markers〔cluster〕〔m,〕cluster){filenamepaste(run。combined。markersgene〔m〕,VlnPlot。pdf,sep)pVlnPlot(objectrun。combined,featuresc(run。combined。markersgene〔m〕))ggsave(p,filenamepaste(i,run。combined。markersgene〔m〕,VlnPlot。pdf,sep))return(p)}}}plotListlapply(clustersss,plotMarker,run。combinedrun。combined)这个Nature推荐的代码海洋竟然有文章作者上传的所有可重现性脚本,涉及单细胞、微生物组、转录组分析、机器学习等相关10X单细胞测序分析软件:Cellranger,从拆库到定量NBT45种单细胞轨迹推断方法比较,110个实际数据集和229个合成数据集重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程(原理、代码和评述)harmony整合不同平台的单细胞数据之旅
小学生斯蒂芬库里,今年三分命中率能突破450个吗?库里当今顶级三分射手,他的三分记录太多太多,成为NBA历史三分榜第一只剩时间的问题,450个三分对于库里来说挑战不发大,一个赛季82场常规赛场均出手15次三分,场均命中5个三分……
古代郡县治理的故事01藏富于民民不敢欺的西门豹按语:郡县制,是中国古代实行的中央集权体制下,郡、县二级政权的地方行政制度的总称,是分封制之后出现的地方管理行政制度。郡县制起于春秋战国时期,再经秦始皇改革,正式成为秦汉以后的……
生活知识科普鹅蛋能和猪肉一起吃吗在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于鹅蛋能和猪肉一起吃吗的这些知识点,这就说明了现在人们也开开渐渐关注起了鹅蛋能……
生活知识科普鹅蛋能和豆浆一起吃吗在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于鹅蛋能和豆浆一起吃吗的这些知识点,这就说明了现在人们也开开渐渐关注起了鹅蛋能……
人到50岁后,要抓紧做的事有哪些?50岁并不算年龄大,还正是需要干的时候,但大江后浪推前浪,很多企事业单位讲求班子年轻化,50岁失业问题很严重,就业形势也非常严峻。人到50后,做到衣食无忧是很重要的,那么怎样才……
羊水少是什么原因引起的?羊水少是什么原因引起的?羊水少的原因主要是胎儿畸形、胎盘功能异常、羊膜病变等。当羊水量300ml时称为羊水过少,羊水是羊膜腔内的液体,在孕早期主要来源于母体血清通过……
生活知识科普豆浆能和玉米一起吃吗在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于豆浆能和玉米一起吃吗的这些知识点,这就说明了现在人们也开开渐渐关注起了豆浆能……
生活知识科普猪肝能和豆腐一起吃吗在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于猪肝能和豆腐一起吃吗的这些知识点,这就说明了现在人们也开开渐渐关注起了猪肝能……
无意中接触了个兼职,坚持一段时间后收入比现在的工作收入还高,我是一位从教23年的小学语文老师,对于这个问题,我的看法如下:一、用事实说话:事例1:十几年前,我也遇到了你这样的情况。一个兼职,一个月能挣1万多,我那时的工资才一……
生活知识科普樱桃和羊肉能一起吃吗在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于樱桃和羊肉能一起吃吗的这些知识点,这就说明了现在人们也开开渐渐关注起了樱桃和……
生活知识科普樱桃和杏子能一起吃吗在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于樱桃和杏子能一起吃吗的这些知识点,这就说明了现在人们也开开渐渐关注起了樱桃和……
领导来去自如,而员工却要认真遵守纪律,员工是一种什么心情?其实领导并不是来去自如。我自己就是领导的秘书,我只能说,领导的努力配得上他的付出。当然可能不同的公司的状况不尽相同。第一,实际案例我们领导,我估计他也就只是偶尔睡觉……