最近也没闲着,上一篇文章中,说到了sva虽然可以计算替代变量,但是有了替代变量后只能用limma进行差异分析,并没有输出矫正后的表达量矩阵,这点还是很苦恼的。所以上次更新中只加入了能够矫正已知批次的combat_fix。

但是最近又看到新的R包snm,这个R包更牛了,可以矫正多个批次效应,同时还可以矫正数字型批次,并且最重要的是可以返回表达量矩阵。

一下子就打通了最后一公里。svn+snm组合拳简直不要太完美!

至此,基本上我已经写完整个R包的功能和框架,至少我自己是觉得暂时没啥可以大修大改了。所以补充了说明文章,整理了整个R包的矫正思路。

fixbatch矫正思路

整个R包的开发历程还算顺利,其间也锻炼自己的代码水平,顺带更新了自己另外的两个R包。整个开发过程收获颇丰。

今天主要说的是,fixbatch有自己的logo了。感谢Y叔的hexSticker包,方便100分!

最开始我其实想用PPT画logo的,毕竟PPT简单又实用,但是后面想到Y叔之前好像发过一个专门做hex sticker的R包,就去谷歌了下。果然搜索结果排名第一。果然是Y叔做的R包,牛逼,让人羡慕。

最开始我的构思是这样的,严格上讲,批次效应存在任意一个实验中,这是无法彻底避免,更何况生物供试个体的差异效应也算一种批次效应。所以无关变量与关注变量是共存的,彼此无法彻底分离。有点像太极黑白双鱼图。

所以最开始我想搞个太极图,额,这个脑洞一开,我就有点顶不住了,这也那个啥了吧,怪怪的。

所以我又想,批次效应是实验的第一步要处理的拦路虎,只有解决了这个问题,才能真正去关注感兴趣的生物问题。有点像推开门进入大观园的感觉。

所以思路就是太极+门 = 太极门,想法就是两扇黑门,中间是门缝,两遍是白色的门环。

额,构思完后发现,这个黑门也太丧气了,像曹操的脸谱。丑!

那我就改个颜色吧,改什么颜色了,就用中国风!说干就干,用上我的xbox的中国风配色,估计效果不错!

#记得更新下xbox
#devtools::update_packages("xbox")
library(xbox)
library(ggplot2)
library(hexSticker)
#构建绘图数据
dat <- tibble::tribble(
             ~id, ~value,  ~x, ~y,
         "right", "grey",   1, 1L,
         "right", "grey",   1, 8L,
         "right", "grey",   3, 7L,
         "right", "grey",   3, 2L,
          "left", "grey", 3.5, 7L,
          "left", "grey", 3.5, 2L,
          "left", "grey", 5.5, 1L,
          "left", "grey", 5.5, 8L
         )

好了,门的绘图数据做好了,给门上什么颜色呢,中国风肯定少不了红色,但是为了体现太极风,还要选择个对比色。

用看看xbox中都有什么颜色,我选中了“two5”的橙红色和青绿色,以及“three2”的淡粉色适合做空白背景,边框就用“two4”的亮橙色。

#中国风配色
back_color = xbox::need_colors("three2")[1]
bord_color = xbox::need_colors("two4")[1]
#绘图
ggplot(dat, aes(x = x, y = y)) +
  geom_polygon(aes(fill = id, group = id)) +
  geom_point(aes(x = 3.25-0.5,y = 4.5),color =back_color,size = 6) +
  geom_point(aes(x = 3.25+0.5,y = 4.5),color =back_color,size = 6) +
  scale_fill_manual(values = xbox::need_colors("two5")) ->p
p <- p + theme_void() + theme_transparent() + theme(legend.position="none")
#生成hex sticker
sticker(p, package="fixbatch", p_color = bord_color ,p_size=20, p_y = 0.4,s_x=1, s_y=1, s_width=1.5, s_height=1.5/1.3,
        h_fill=back_color, h_color = bord_color, filename="ggplot21.png")

logo

效果我个人非常满意,开心!