常识的力量 - 防止错得太远
做生物信息的一定要会利用常识的力量。
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行)时,再结合模块化思维(函数封装,类),普通人都可以写出非常健壮和正确的脚本。
小结:诸位想让生信事业一帆风顺的话,还是得多思考,多利用一下常识的力量。
一些常识: