相比于网页工具,使用编程语言处理科研数据的一大优势,在于高度的定制化,以及批量处理数据的快捷性和高效性
目录
批量处理——for循环批量计算组间差异
批量处理——apply批量计算组间差异
批量处理——for循环画图
批量处理——for循环迁移文件
批量处理——基因之间的相关性
批量处理——基因与免疫细胞的相关性
批量处理——基因与免疫细胞的相关性
批量处理——两基因不同组别中的相关性
对于批量处理数据的方法,之前使用for循环和apply语句进行处理过,但是不够系统,学习果子生信课程后有一个清晰的认识,写下来,一是可以调用方便,二是自己写过之后,才能算是完全掌握。当然一切以解决问题为主,不陷于技术深究。
批量计算基因和基因之间的相关性,也是一项很好的应用。
场景
之前在批量处理——两基因不同组别中的相关性,得到了两组基因在不同组别中的相关性。具体数据样式如下:
最重要的两列数据,一个是相关性系数,一个是p值
绘图
利用ggplot2画图,将别人的代码拆解开
data$group = ifelse(data$p.value <= 0.05,ifelse(data$cor>=0,"1","2"),"3")
data$group = factor(data$group,levels = c("1","2","3"),labels = c("pos","neg","none"))
先根据p值进行分组
确定一些基本的参数
label=c("all","none","BRCA");
shape = 21;size=5;alpha=0.6;
colour="black";stroke = 1.5;
labelcolor = "black";
box.padding = 0.6; max.overlaps = Inf;
legend.position="top"
这个时候就可以画图了
p=ggplot(data,aes(-log10(p.value),cor ,fill = group))+
geom_point(size=size,alpha=alpha,shape =shape,colour=colour,stroke =stroke)+
scale_y_continuous(expand = c(0,0),limits = c(-1.1,1.1),breaks = seq(-1,1,0.2))+
scale_x_log10(limits = c(0.01, 1000),breaks = c(0.01,0.1,10,1000))+
geom_hline(yintercept = 0,size=1.2)+
geom_vline(xintercept = -log10(0.05),size=1.2)+
labs(x=bquote(-log[10]~italic("P")),y=paste0(data$method[1]," correlation (r)"))+
theme(legend.position=legend.position)+
theme_gpsa()
p
这一部分主要就使用了相关性系数和p值,得到这样的结果
然后加上自己需要标注的数据,这也是ggplot2的一些操作
p + geom_text_repel(data=subset(data, data$type %in% 'BRCA'),
aes(label= 'BRCA'),col=labelcolor,box.padding = box.padding, max.overlaps = max.overlaps)
后记:因为这一部分其实更多的是画图的功底,前面得到的数据,可以使用ggplot2函数进行绘制,这个其实是个硬功夫,需要长期的实践。了解一些基本绘图语法(例如ggplot2),大部分时候,有需求,直接搜索相关代码,轮子拿来用就好。
批量处理,再加上把代码封装成函数,这个操作将会使代码变得更简洁,可读性更强。