做生物信息的一定要会利用常识的力量
1. 对自己分析结果的把握
普通生物信息最大的弊端就是太依赖工具算法这些东西, 大部分的人平时其实都不知道自己用的工具到底是干嘛的, 它能产生什么结果, 更别说评价不同工具的优劣了(主要也是工具太多了, 有些也比较复杂)(建议有空还是看看工具的原理, 大致了解就行, 这能非常有效的提升分析的手感)
既然大部分生信工作者都是工具使用者, 那我们如何掌控工具产生的结果呢? 最有效的就是利用我们已有的常识来反推工具到底在做什么
比如我在用 RNA-seq 数据来组装转录本, 300 个样品, 通过标准的 hisat2 和 stringTie 流程我得到所有的转录本, 这时我计数了一下 699638 个转录本有点惊喜, 这么多啊
但是, 这个数量合理吗? 俺暂时不知道
接着就是 blast,499764 条都能比对到, 打开结果一看很多转录本都比到一个蛋白上了, 而且比对位置也一样, 这里我就知道了 699638 条转录本里大部分应该就是 duplication 了
再接着, 除去能比对到多个数据库的转录本, 我还剩下 10w 条, 自然就去用 CPC 等预测 lncRNA, 发现大部分都被鉴定为 non-coding 这不科学吧, CPC 和 CPAT 都是灵敏度特异性很高的预测工具, 别人文章最多也就鉴定几千个, 我这随便就鉴定出来了 10w 条, 嘛呀, 是不是可以发 nature 了
后来反复思考, 觉得这个数字肯定异常, CPC 等工具其实是不靠谱的, 它们统计的灵敏度特异性时使用的数据集就是有问题的, 他们用的已经注释好的 mRNA 和 ncRNA, 那他们就只能局限于预测这两个了
但是, 但是, 我们大部分时候用 CPC 的时候是直接来跑 stringTie 等预测的 transcript, 由于是二代数据, 我们组装出来的是转录组碎片, stringtie 等出来的大部分都是一些没有意义的 exon 的随机组合而已(我同时用了 ref 和 denovo 模式), 也都被 CPC 预测为 non-coding 了
自此, 通过一些常识, 我发现 strinTie 的结果的特征, 同时也明白了 CPC 等工具的局限性
所以, 在生信分析时, 多用常识质问自己我的结果合理吗? 是很实用的, 能防止重大惨剧的发生
2. 正确写代码的姿势
生信肯定离不开写代码, 我觉得写代码的时候似乎也在利用常识
写代码比点击 GUI 更灵活高效, 也更容易出错
我有轻微强迫症, 所以在写任何代码的时候会输出一些关键的变量, 看是否符合自己的预期
后来想想, 其实这是非常有用的, 它能有效杜绝 99% 的 error
就像建大楼, 从底下开始稳稳的往上堆, 大楼就会很稳固
在写大型脚本 (>1000 行) 时, 再结合模块化思维(函数封装, 类), 普通人都可以写出非常健壮和正确的脚本
小结: 诸位想让生信事业一帆风顺的话, 还是得多思考, 多利用一下常识的力量
一些常识:
How many proteins in the human proteome?
来源: http://www.bubuko.com/infodetail-2537480.html