到底还是写了一篇推文,却着实想不到一个合适的题目。可能这是我写过最长的一篇推文,约莫万字。这篇推文的主要内容应该包括:
-
TBtools 开发为了什么?
-
TBtools 是怎么开发出来的?
-
TBtools 版本迭代历史?
-
JIGplot <- JJplot2 <- JJplot 的迭代过程?
-
我是如何接触生信的?
-
本硕博均是园艺果树专业,如何一步一步自学并入门生信。
-
一份生信编程入门书籍清单 和 社群与论坛推荐。
-
一些不堪回首的往事。
-
感谢陪伴我和帮助过我的人。
PS:推文在 TBtools 文稿 Online 前后,已经基本成型。原定在期刊官方公号推文后再行推出,但一周以来,身边和用户朋友一再催促。也罢,推文也是我硕博生活至今小结,就此推出,用互联网帮我记住这些经历。
写在前面
2020年06月22日,TBtools 终于还是发表在正式期刊(Molecular Plant)上。
这不仅仅是我一个人的开心,而是一小群人的快乐。这群人,或者对 TBtools 的开发极度支持,或者看着 TBtools 一步一步,一步又一步成长成现在模样。五年有余,说长不长,可以覆盖了一部分用户的硕士博士阶段。说短,其实也不短。软件开发不同于湿实验开展,前者周期往往足够短,甚至两三个月可以完成和测试。文稿的撰写到发表,从某个角度来说,是在用户朋友和生信小圈子一些朋友的催促下完成。总的来说,这应也算一个工作的阶段性成果,所以值得记录一下。华南农大园艺学院果树系,本科 --> 硕士 --> 博士,Emmm,是我常常不务正业的十年。而我折腾的与生信擦边的各项,正好也是TBtools 的开发过程。以下,用相对碎片化的方式,整理一下这些那些我还记得的片段。
遇到了第一个生信坑
2014年前后,在硕士导师何业华教授的建议下,我们做了一个转录组项目。那个项目算是学院里面较早开展。导致这一项目数据没有及时撰写并发表成文的原因有很多。其中一点或许是,我从结题报告中看到,植物的测序数据却可能含有真菌或其他微生物序列污染。那会年轻,过不了这道坎。于是还是决心,自己从原始数据开始,折腾这套污染了的数据。或许也是这个原因,接触生信至今,我始终保持警惕,确保避开可能的坑。
Emmm… 年代久远这套数据,后来就打水漂了。想想还是有点对不起硕导。不过一起签合同的其他项目,最后还是整理了并发了一个 PLOS One,似乎也还好。
我觉得我这些图表,其实还做得不错。这已经是2016年的事情了。
合伙买了二手服务器
折腾数据,必然是需要计算资源。正好那会浩哥(即 TBtools 论文二作)也计划开始搞分析,于是我们二人合伙从淘宝搞了一个二手服务器。如果我没记错,加上我们自己买的民用硬盘和其他,大概也就五六千。配置是相对奇葩的状态,似乎是1T还是3T,内存排满72G,线程16个。那会这个配置其实可以满足转录组数据分析的需求了,所以我们用得还是开心。
服务器的费用是两人各出一半,即每人3k左右。那会园艺学院硕士补助,多半是100~200。所以,或许很多人不知道 ,我出的这一半其实是我硕士三年的补助,或者说饭钱(估计浩哥也不知道 )。以至于,后来有那么大半个月,我其实是靠着我女朋友的饭卡吃饭的(没有更好的方式)。
学习了 Perl 语言
解读公司的结题报告,是一件麻烦的事情。2014年那会,其实做科研服务的公司很多,但都不太成熟 。公司返回的结果,往往是一些大文件或者大表格。整理起来比较麻烦。于是,多少学习编程语言成为必须。那会没有太多纠结,在浩哥的推荐下,我学起了perl。如果我没有记错,有那么一段时间,可能是个把月,我就只呆在宿舍,常常门也不出,等着其他人给我带饭。我只是刷编程书(其实后来我还看了不少perl相关电子书,不过大骆驼我是买的纸质书),试试运行代码,反反复复。用perl写了不少脚本,做了不少有趣的事情。我甚至只用 perl CGI 架了一个小网站,提供序列批量获取和BLAST的功能(命名为xxxblast,对标 wwwblast;我没有用框架,因为确实也不够机智)。
我印象深刻的,或许还是写出来的第一个我自认为有用的脚本。那个脚本的功能非常简单,批量提取Fasta序列。说起来还是有点搞笑(公众号也曾提及),那天晚上我写到凌晨三点,终于认为脚本稳定且正确,具体逻辑是:
-
用一个脚本把原始的Fasta序列整理成一行ID一行序列的格式
-
使用另一个脚本读取一个ID列表,然后遍历1. 中格式化好的序列,匹配的输出
这个功能的低能实现,让我兴奋了好一会。
现在想想还是有趣,因为 Perl脚 本我早已不写,而 Perl 只活在我的命令行里面。批量提起Fasta序列?我早已能够随手写一行 perl 命令搞定。不仅仅是批量提取序列,甚至包括更为复杂的分析。
Emmm,回想起来,我甚至已经忘了,到底那本 Perl入门经典小骆驼,是浩哥的,还是我的。多半应是他的,而我忘了也没打算还他了。
学习 Linux
那是一个寒假,我第一次没有回家里过年。借了浩哥的一本《鸟哥的Linux私房菜》,硬是啃了一个星期(还是两个星期?)。啃完就折腾服务器,边折腾边重新啃,来来回回,应是翻了不下三遍,书中也被我用铅笔写满的标注。也因此,我自认为现在的 Linux 基础起码比不少自称搞生信的要扎实一点。
当然,这还得益于另外一些 Linux 操作相关书籍的阅读。Linux的学习,似乎主要还是对文件系统的了解。其次才是一些shell下的 工具或命令。由于我先学了 perl,所以更多工作我会写 perl 单行来完成,而不会用 awk 或者 sed 等。说得自大一点,我认识的人里面,没有一个 perl 单行写得比我更好。一是我写得早,二是我写得久,三是我天天写。
学习 R 语言
Perl 学了,Linux 也基本掌握了,那么生信数据分析的文本处理,已经基本得到解决。可视化成为当务之急。事实上,那会我和小庭子有大体的分工,我搞Perl,他学R语言,后面合伙就可以更快地做点事情。当然,后来各自课题和生活上事情较多,我还是自己学了一下。提起R语言入门,我从来推荐《R语言初学者指南》。
Emmm,那么到底这本书是我的还是浩哥的,我还是忘记了。不过,可以认为这本书确实是简单。看完了,再看看 《ggplot2:数据分析与图形艺术》,那么似乎真的没什么统计图表是不能在短时间内完成的。后来我发现,R语言真正方便的应该是统计,而可视化是附加的事情。只能说生态赋予了R在统计可视化上的完美优势。
开发了密码子偏好性分析流程 R2CUB
很少