写在开头
小洁的课程真是常听常新!最近又在回顾小洁老师的数据挖掘课程,又学到了很多小知识!
之前基于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文件夹,来管理用到脚本
通过不同的脚本,将分析流程中用到的代码分开进行管理:
-
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,后续还要再花时间整理!