Folding@Home项目计算原理分析
蛋白质折叠计算分为热力学和动力学两大部分,这里的动力学是指分子动力学(也包括反应动力学),热力学是指反应热力学,其中,反应热力学描述反应趋势和方向,反应动力学描述反应过程。
Folding@home项目属于一般的蛋白质折叠模拟,它仅涉及分子动力学,通常都是把原子视为刚体,然后计算这些刚体之间的力学关系。
而Folding@home项目忽略的热力学部分,可以被模拟的通常都是热量、能量以及混乱度。为什么该项目会忽略这部分计算?因为热力学计算本身简单,计算量也不大,难点在于模型选择和热力学参数的确定。
热力学参数的确定,也就是各种边界条件,是Folding@home项目常用的区分各种任务包的方式。如果温度在某个任务包中存在变化,而且是线性变化或者是在设定区间内出现非设定的随机变化,那就要上各种热力学相关的计算了。
Folding@home项目的热力学参数通常只有温度,会影响反应进程,但这些过程在folding里通常会被直接转化成力学关系的变化。归根结底,Folding@home项目基于GROMACS计算引擎的,是一个力学主导的分子动力学模拟,它的特点就在于支持大规模分布式计算。
Folding@home所研究的是人类最基本的特定致病过程中蛋白质分子的折叠运动。项目的核心原理,在于求解任务目标分子中每一个原子在边界条件限制下由肽键和长程力等作用所导致的运动方程,进而达到实现模拟任务目标分子折叠运动的目的。
每一个原子背后都附庸这若干个方程,每一个方程都可以转换成一组简单的向量指令。同时由于长程力的影响,条件分支也随处可见,对GPU Shader灵活度的要求很高,Folding@home在GPU使用量上也要大于图形编程。
目前每一个Folding@home项目任务仅仅只对应一个恒温过程,那么温度的影响通常就已经在计算开始之前,被人为转化成力学反应固化进算法了,这种情况下自然也就不涉及独立的热力学计算过程。我们知道,恒温过程在现实是中不可能的,但是在计算中很普遍,Folding@home项目过去的任务包都是恒温过程。
之所以会这样,是因为模拟过程的变化参量越多,项目编程者就越要付出更大的努力维持体系的稳定和准确,这对编程者的要求会增加过于明显。所以这是该项目的一个现实缺陷,或者说由于条件所限尚未完善的部分。
今天大家应该获得了一个基本的认知,我们将自己热爱的Folding@home项目,映射到分子动力学领域。