我想,很多写过代码的人,都可能会遇到类似的情况。而我也是,TBtools写了也有几年了。可以说,几乎每一个功能释放出来,都经过我个人的测试,甚至一些可以找到类似功能实现的情况下,我会做结果对比。
整体上,如果从 TBtools 跑出来的结果,如果和其他软件有不同,那么目前为止,几乎只有两种结果:
- 用户用错了,而且常常是用错其他软件而不是TBtools,因为 TBtools 充分考虑了用户的多元化输入
- 其他软件、流程、平台错了
前前后后,一上来就说是“你的TBtools有 bug ”的状态,后面又啪啪打脸的大体包括但不仅限于下述几个功能:
- KEGG 富集分析结果跟其他平台出来不同,结果是其他平台有问题,TBtools是对的
- dn/ds 计算有问题,和dnasp结果不同,结果用户输入文件有问题,导致dnasp计算结果有误,TBtools又是对的
- 串联重复分析结果有问题,跟他自己命令行跑的有区别,结果是 MCScanX 的串联重复输出结果本来就不太全面,TBtools有自己的计算逻辑补全了不少假阴性,结果更全更准更好,TBtools还是对的
- 你的代表性转录本提取跟某公司给的脚本运行结果不一样,文件更大,结果是某公司按照mRNA直接跨度而不是CDS最大长度给你拿代表性转录本,于是TBtools仍是对的
- 热图的legend显示是1,2,4,8,16,32,64,明显大大超过输入的最高数字49?你的程序有bug!早期的 TBtools 所有热图出图,都是默认取log2(x+1)。从 Legend 就可以看出来,如果不需要,完全可以直接调整参数,去掉该选项
事实上,两年前的TBtools版本已经强制更新,默认不再取log,因为这个更符合用户认知(牺牲了默认的log可以更好映射到高度离散的基因表达量的模式)。所以TBtools总是对的。
为了让一些朋友不要有太多的意见,我甚至放弃了最适合参数而采用最通用的参数。比如层次聚类
很多软件用的是最长距离法(complete),但是平均聚类法(average)更适合绝大多数数据。早期用 average,聚类出来的结果自然和常见的热图工具默认聚类模式不同(如pheatmap)。但是就有人不乐意了,“你的程序有问题,跟别人的都不一样”。
我也不能说什么,后来累了。不管了,那就随大流,默认“complete”,反正只要跟其他软件都一样,就不会有人问。于是再也没人提起。
永远不要对别人说“你的代码有bug”......
网友评论