专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
51好读  ›  专栏  ›  生信菜鸟团

R语言中长脚本及实战项目管理方式

生信菜鸟团  · 公众号  · 生物  · 2025-03-29 10:36

正文

请到「今天看啥」查看全文


写在开头

小洁的课程真是常听常新!最近又在回顾小洁老师的数据挖掘课程,又学到了很多小知识!

之前基于24年5月份课程,学习整理的小知识已经剪辑好上传到B站和视频号

【R语言数据挖掘小知识点】 https://b23.tv/s5PLLVf

最新一期的课程也开始啦,需要系统学习的朋友可以了解一下—— 生信入门&数据挖掘线上直播课3月班

这期想要分享的是:R语言中长脚本及实战项目管理方式,会使用单细胞数据分析项目作为实例

长脚本管理方式


1. 使用if条件语句

可以 使用if条件语句,将不需要重复运行的代码或者运行时间较长的代码包裹起来,运行一次即可

比如在单细胞多样品数据分析过程中,降维聚类分群步骤因为需要运行harmony以及多样品的降维等时间都较长,属于限速步骤,所以可以写在if语句里面,不需要重复运行

###### step3: harmony整合多个单细胞样品 ######
if(T){
  dir.create("2-harmony")
  getwd()
  setwd("2-harmony")
  source('../scRNA_scripts/harmony.R')
  # 默认 ScaleData 没有添加"nCount_RNA", "nFeature_RNA"
  # 默认的
  sce.all.int = run_harmony(sce.all.filt)
  setwd('../')
}

需要运行的时候更改if()中的参数,选择F就是跳过这段代码,选择T就是运行这段代码

或者一些下载数据的代码,需要保留下来,但是只需要下载一次就可以不用重新运行了,也可以放在if语句里面

2. 将运行步骤分成多个脚本,避免脚本过于冗长

在单细胞多样品分析实战中,我们会使用到一个scRNA_scripts文件夹,来管理用到脚本

通过不同的脚本,将分析流程中用到的代码分开进行管理:

  • lib.R :整理汇总了需要加载的R包
  • qc.R ;质控用到的脚本——计算并可视化线粒体、核糖体等基因百分比,可视化之后设置合理的阈值进行过滤
  • harmony.R :降维聚类分群系列代码脚本,会将降维聚类结果保存为rds文件存储起来
  • check-all-markers.R ;收集整理的系列marker基因,基于不同分辨率可视化之后可以辅助判断亚群

分成多个脚本之后,可以在运行时候直接 source('../scRNA_scripts/qc.R') 加载脚本中的函数,然后使用即可。这样可以大大缩短脚本的长度,也可有效避免运行时候由于代码太长看不仔细而出错!

小tips:将数据保存为Rdata或者Rds格式,方便读取使用以及衔接

实战项目管理方式


1. 使用Rproject管理工作目录

一般我们都会 在文件夹里创建一个Rproj文件,管理对应的工作目录。每次双击Rproj文件即可

2. 使用对应的文件夹管理输入或者输出文件

在单细胞实战分析中, 输入数据会放在单独的文件夹里面,方便批量读取

library(data.table)
dir='GSE171145_RAW/'
samples=list.files( dir ,pattern = '.counts.tsv.gz')
samples 

test "GSE171145_RAW/GSM5219674_LJQ-T.cellname.list.txt.gz",data.table = F)
library(data.table)
sceList = lapply(samples,function(pro){ 
# pro=samples[1] 
print(pro)
  ct=fread(file.path( dir ,pro),data.table = F)
  ct[1:4,1:4]
  rownames(ct)=ct[,1]
  ct=ct[,-1]
  sce=CreateSeuratObject(counts =  ct , 
                         min.cells = 5,
                         min.features = 300 )

return(sce)
})

其余在进行质控或者降维聚类分群时候,因为会有些结果文件需要保存,所以在每一步会创建一个文件夹用来存储结果文件

###### step2: QC质控 ######
dir.create("./1-QC")
setwd("./1-QC")
# 如果过滤的太狠,就需要去修改这个过滤代码
source('../scRNA_scripts/qc.R')
sce.all.filt = basic_qc(sce.all)
print(dim(sce.all))
print(dim(sce.all.filt))
setwd('../')
getwd()

3. 代码整理为R脚本或者Rmd格式文件

结合将长脚本分开为多个脚本的方式,可以在step1里面调用整理好的脚本进行分析

写在结尾

要养成整理代码和工作目录的好习惯,最好命名的时候按照一定的规律命名,方便后续查找使用

给个行走的反面教材小谢的反例:单细胞常见图表可视化系列推文对应的代码,全部在一个文件夹hhh,后续还要再花时间整理!








请到「今天看啥」查看全文