eming 发表于 2013-1-17 02:09:29

写给那些不得不做计算的同学

本帖最后由 eming 于 2015-5-11 21:59 编辑

前言
    不久以前在MDBBS上看到Bay_gulf大牛写的一句话,让我感慨不已:“...并不是每个人都是心甘情愿地去做模拟的...”. 这句话仅仅是回复中的一句话,但是写出了那些刚刚入门模拟,或者还没有入门正在学着装软件的同学的状态。总的来说是这样的背景:
1.没有计算机基础,不会编程,不懂算法,不会linux;
2.不是生物信息学或者化学信息学专业,有很多知识都不懂,觉得神神叨叨的;
3.也不是物理化学专业出身的,动力学,热力学,系综等等概念一塌糊涂;
4.不是生物化学专业,却做着生物相关的课题,拿来一个蛋白就开始模拟,相关的生物背景的文献也不读。
5.课题需要一点模拟,1%或者30%或者50%需要计算的结果,认为就是个补充,预测而已,会用软件即可,尤其是想点点鼠标就出来结果了。
不管是哪种背景,模拟不是个一蹴而就的东西,它有着基本的理论,需要懂得,需要懂得你用的方法,这样才可以做得好。这跟实际的wet实验是一样的,你需要的不仅仅是一个protocol,你要是想做好这个实验,你也得知道实验步骤的基本原理。

模拟是不是你的工作?
如果你的实验室没有人做这个,导师也不懂这个,但是你自己非得要做模拟,那么,你就得准备好一定的煎熬,因为你接触的是另外的领域。如果又不想一个一个单词地去啃tutorial,那你就把这个部分交给专门做计算模拟的课题组,课题需要合作;专门做浸淫于计算的人,更容易地能够完成你的工作。我个人觉得,现在每个大学,或者研究单位都会有这么一个组是专门做模拟的了,通过合作,也就是发文章的时候挂名,或者共一作,共通讯作者,这些情况很多。当然这是在不得已没有时间的情况下,你得需要考虑的一个渠道。
另外的,也就是你自己非得要做模拟,你非得要学习这块内容。如果有兴趣,这样最好,这种人往往是废寝忘食地去钻研。每一个参数都有着一定的意义,要穷追猛打地弄清原理,就得一个字一个字地啃tutorial,啃user guide,啃mannual!一个单词一个单词地问谷哥,问度娘,查课本。
    如果没有兴趣,而不得不做,这种情况下,不要一下子着急了,就开始上手,要慢慢爬起来,慢慢走。你一样需要像第一种人那样钻研。有的人一上来就开始问问题:“Autodock的手册也有,教程也有,有没有人能从开始到最后分析,详详细细地写个步骤啊?” 这样问问题不合适,是一种懒惰。也有人上来就问:“怎么分析配体和受体的相互作用啊?”,你让回答的人怎么回答?也有人问:“谁有DS啊,谁有Sybyl啊?谁有薛定谔啊?”说实话,大部分真的做模拟的人,不用这些,免费的或者半免费的就够用的了。事实上,大家也看出来了,就算是免费的软件,人家的user guide或者mannual写得很详细了,人家都一个字一个字地敲出来了,你又有什么理由不一目好几个单词地读下去呢?这对于学习英文也是一个极好的帮助吧。其实,做模拟,真的懒不起,否则,一知半解,只能是浪费时间。

如何入门模拟?
    在做模拟之前,你一定要知道你为什么要做这个?前期的准备工作一定要做好,譬如做药物虚拟筛选,首先一定要对你的target非常了解,很多人一上来就去找PDB里的结构,我个人觉得,在找结构之前你先读一下相关target的功能综述,甚至读一下实验相关内容。明确了target的作用后,(这个作用一般是要了解这个target的功能区域,甚至涉及到点), 然后再去查PDB结构,先别下载结构文件,先读一下解析结构的文章,里面会对这个结构有个详细的介绍,尤其是功能。任何一个结构解析的文章,如果没有功能相关的介绍,我觉得你也慎重考虑是否应该用这个结构;如果是你自己模建的结构,我觉得你也应该参考一下实验的文章,看其描述的功能是否与你的结构一致,大多数情况下,功能的研究已经先于结构的出现了。尤其做生物的,太多了!在北美,什么专业的都往生物领域跑,学文学的也做生物,学艺术的也可以做生物,更别说做数学物理化学专业的了,甚至有人嘲讽,猪都可以做生物,这都是题外话。所以做结构的一定要记住,它是跟功能联系在一起的。当你明确了你的结构和功能的关系后,再做模拟一点都不迟。
    分子模拟分了好多块,生物分子模拟大致分为药物设计和蛋白(包括酶了)功能机制研究。这时候很多导师就给学生出难题了:虚拟筛选吧,动力学模拟吧等等,学生一头雾水无从下手,问导师,导师不懂,问师兄师姐,要不就是没有师兄师姐做这个,要么就是师兄师姐说:自己看教程去吧。
    其实根本不用慌张,分子模拟不是个纸老虎,真的很猛。如果导师就是安排了你要做的,你第一时间肯定是去看看他给你安排的内容是怎么回事,这些内容都在《计算机辅助药物分子设计》(徐筱杰)或者分《子模拟的理论与实践》(陈正隆)基本上都有基本的介绍。然后是你自己具体的工作,可能就要开始下软件,装软件等等,照着教程一步一步来。我推荐一本更基本的教材,Gasteiger的《化学信息学简明教程》,里面的内容比较浅显易懂。
   在计算机领域里,基本上所有的结构文件都含有这样的信息:原子的名称,原子的坐标,甚至原子的类型等。计算机的任务就是根据原子的类型和坐标来计算你要的东西。说个简单的例子:给你两个氢原子的坐标,以及这俩氢原子的电荷,我想就算不用计算机,你在纸上自己写写也能算出来二者的作用力吧,你需要的仅仅是一个公式而已,你甚至联想到了高中学的库伦定律,静电势能的基础知识。分子力学中的基本内容就是高中经常接触的那点点知识,往深里拓展一下,就是大学里的内容,考试的时候你都是用笔来计算,计算机就是把复杂的体系给计算了。所以,清楚地了解一下你的结构文件是什么样子的吧,不论是mol2还是pdb格式,人家都有说明的,用记事本就可以打开的。
   心中有公式,软件就是个工具而已,只要这个工具能够完成你心中的公式即可。心中没有一个公式,软件就是一个黑盒子。然后你就会到处找软件
   “听说gromacs可以算啊,vmd根本算不了。”
   诚然,GMX可能会有很多现成的东西让你计算。这些东西就像点点鼠标一样简单,也像个黑盒子。可以满足课题中1%或者30%需要计算的同学。可是专门做计算的就有点吃亏了,专门做计算的同学将来的出路,如果还想从事计算,那还是得需要自己去实现一些自己想要的功能。自己写代码是不可避免的了。    也许,就是从你自己开始写代码,编脚本来实现你要的数据的时候,你才发现,模拟有点入门了。
    就像如果是你自己来写个Autodock一样的程序,你需要自己选择一个优秀的算法,自己来制定一套打分方程,自己来定义原子类型,自己来拟合原子类型的参数,自己来写结果分析。当然,如果了解了这一套东西,Autodock也不会像个黑盒子一样让你感到无所适从。你甚至不需要ADT的界面,仅仅需要它里面的那些脚本就能处理所有的准备文件,当然,其实本来也就这么回事,XU Dong的lab主页上有很多这样的教程。
    对于MD或者QM的入门就比较难一点了,尤其不是物理或者物化专业的,里面牵扯比较多的统计物理知识,当然QM更是比较深的量子力学知识以及比较多的数学知识,这一块没有办法,只能恶补基础。有时候有的人怪自己实验室没有人做,导师也不懂,师兄师姐也不教等等原因,可是,当你面对着这些基础知识的时候,你敢保证你都学好了吗?相信学生物的同学在本科时候也都有这些课程,有时候真的得反思一下,当初是为了学习,还是为了考试。现在需要这些知识了,才发现以前学的根本都忘记了。其实挺悲哀的,我自己就是这样的,本科的基础课程,没有一个学好的,最后为了考研,突击了一年的专业课,可是那些基础课,想补得需要时间,需要精力。

出了问题问谁?
    当然第一时间就是google,是google.com, English的。最好也使用English来问,你遇到的问题,这个世界上总会有那么一两个或者一堆人遇到跟你一样的问题。但是在这之前,你得明白问题的所在。譬如在linux终端遇到一个最简单的问题,你随便输入一个命令:
duijie
然后出现
duijie: command not found
这种纯粹是机器基本使用的问题,你安装了qq,你点击qq图标就可以运行,这是因为这个图标所指向的命令,都已经写好了,所以你能点开。终端下运行一个命令,并不像鼠标点击图标那样方便,它不明白duijie这个命令在哪里,甚至知道在哪里,但是duijie并不是一个可以执行的文件,也是运行不了的。很多人问,我下载了autodock,autodock vina,可是点击装不上,运行不了。请问,在使用windows dos的那个年代,你哪有那么多漂亮的图标可以点击?你那时候怎么装的软件?那个时候是怎么运行的软件? 再次建议,当你踏上了计算化学,计算生物学的时候,忘记原来你学的那点电脑知识吧(针对入门级别的人来说的啊,不针对有使用计算机经验的人)。而且,我建议不妨体验一下linux的终端,尝试一下linux下终端的各个命令。从某个角度来看,会在linux下安装软件,在linux下工作就可以入门了。
计算机是你做研究的基本工具,得会使用;
软件是你做研究的常用工具,也得会使用;
如果你觉得什么时候有些工具用的不是很顺手,有两个办法,一是你好好学习工具的使用手册,二是鄙视这个软件,自己设计改装一个工具。
   出现了问题,一般软件都会有输出,这时候,会有错误提示,这些提示可以帮助你google到解决办法。
   有一个重要的问题是,如何提问?这是一个会不会学习的问题。我是一个脑子很笨很笨的人,譬如,本科上课的时候,很多都听不懂,到了考研的时候,把书看了个7-8遍才能理解;在研究生阶段也是自学计算的一些东西,很多东西看得糊里糊涂,也不理解,到了博士才开始知道怎么去好好用google。会google了,就有一种豁然开朗的感觉。在提问之前,你得知道你为什么要那么做,然后那么做出了问题。譬如,你做autodock,需要加电荷,你得明白为什么要加电荷,加上的电荷的信息都在哪里,储存在哪里了?也就是说,你每一步的参数设置,你都明白,你为什么要设置这个参数,如果你放过去了,只管按照流程来的话,你最终还是不明白出了问题是什么原因,应该怎么去解决。
    有一种想法你可以有,那就是,如果让你来写一个软件,你需要解决哪些问题。如果你能够这样去考虑了,那么软件也就没有什么神秘的了,更不是黑盒子了。千万不要 不敢想,我是菜鸟,我肯定不会。不要这样搞,就像你用excel处理数据一样,只要你知道你怎么处理,你就可以用很多你喜欢的公式,最后结果输出到一个格子里。这些东西都是有共性的。有时候使用商业软件可能会给人养成一些惰性,因为操作比较简单,很多东西都在背后自动运行了。有个不好的地方就是,如果真的出了一些不能理解的问题,提问都不知道怎么提问,所以,尽量考虑使用一些大家都能够用的开源,免费的软件。这样大家都有机会使用,提问的也多,你能找到答案的机会也就多一点。
    我们做实验的同学,一般没有很多的精力去跟这些东西纠缠,这也是个不争的事实。譬如做蛋白结构的,为了拿到一个质量上乘的晶体,要没日没夜地优化条件,各种条件,光做实验的时间都很紧张,甚至连解析蛋白结构的技术都没有时间去学习;搞有机合成的同学可能一直得过柱子,天天过柱子,测样,也没有时间。可是,往往这样更不能操之过急,因为你做实验很不容易,总不能在最后,输在了学习使用计算机,软件上面吧。这个同样也是要花精力去学习的。要不然这个世界上就不会分为实验科学和理论科学了。
除了上面的google,你甚至直接问软件的作者,一般他们都很乐意回答你的问题。你也可以在这个论坛里提问,只要你能问,一定有人回应。生物分子模拟论坛缺的就是你要发的帖子。还有就是在群里问,很多高手都会回应。很多时候,这些问题都是你不能问导师的,导师会觉得你不好好学,基础不好,甚至这些问题你是不能问师兄师姐的,他们会鄙视你,或者嫉妒你学得太快赶上了他们的进度,这些问题你是不能问院里其他老师的,因为他们跟你不是一个实验室,甚至有着千丝万缕的说不清的是个什么样隔阂的关系。
    天在看,人在做。把自己的智能手机里尽量安装一些linux, python, bash, C/C++的使用手册,闲着没事的时候不要玩愤怒的小鸟,看看如何编程,自己学学;平时电脑里尽量少看《爸爸去哪里》《咱们结婚吧》《非诚勿扰》这样的节目,多用来看看视频教程,你会有很多收获的。

hongyibaixue 发表于 2015-4-9 20:54:30

写出了很多初学模拟的同学的心声,也写出了很多事实,赞一个

fanc232 发表于 2014-9-10 14:33:52

当年如果能看到这篇帖子,就能节省一两年的时间呢!

罗青 发表于 2020-9-7 20:27:18

写的太好了,看到也算不晚

xufund 发表于 2013-1-17 06:32:26

有道理啊

gaowenmei 发表于 2013-1-17 07:58:44

估计说到大部分人的心坎上了,受益匪浅啊!肯定会对很多刚接触分子模拟的同学启示很大,赞一个!

北京-构效 发表于 2013-1-17 08:43:21

刚刚开始学分子模拟,分子模拟也是一门科学得好好研究才行,分子模拟是手段而不是目的,不要太纠缠于会多少软件。

墨竹晓风 发表于 2013-1-17 08:44:27

受益很大,谢谢

北京-构效 发表于 2013-1-17 08:51:13

原文链接有吗?

jerrysky2011 发表于 2013-1-18 10:52:17

{:soso_e142:}说的很对,受益匪浅!~!~!一起努力

飞毛腿 发表于 2013-1-18 10:55:43

写的很好,初学模拟的一定要看一看

SYPHU_me 发表于 2013-1-24 17:43:06

写的好棒哦!
不会的人觉得它很悬乎,会的人呢,觉得它怎么样?有的人觉得好,有的人觉得也就那么回事嘛!
总之了,能对自己的课题研究有帮助就有用,能为自己的论文增添一道亮丽的彩虹就有用:lol
这东西不是神儿,也不是万能的O(∩_∩)O哈哈~

永在追赶 发表于 2013-2-7 12:26:42

刚入门,感同身受呀。
页: [1] 2 3
查看完整版本: 写给那些不得不做计算的同学