主题017粗粒化分子动力学1. 理论基础1.1 粗粒化的动机全原子模拟的局限时间尺度受限~μs空间尺度受限~100 nm计算成本高粗粒化的优势更大的时间步长10-50 fs更长的模拟时间~ms更大的系统尺寸~μm更快的采样1.2 粗粒化映射映射策略几个原子 → 一个珠子bead保留关键化学特征消除快自由度常见映射united-atomCH₂, CH₃ 作为单个珠子Martini~4个重原子一个珠子介观模型更大尺度的粗粒化1.3 有效势能势能形式通常保留与全原子类似的形式但参数不同UCGUbondUangleUnon−bondedU_{CG} U_{bond} U_{angle} U_{non-bonded}UCGUbondUangleUnon−bonded参数化方法结构匹配匹配径向分布函数力匹配匹配平均力相对熵匹配概率分布2. Martini力场2.1 珠子类型四种主要类型P极性N非极性C带电Q四极亚型通过字母和数字组合表示如Na 非极性接受氢键2.2 相互作用参数Lennard-Jones参数根据珠子类型查表获得。相互作用矩阵PNCQPε₁ε₂ε₃ε₄Nε₂ε₅ε₆ε₇Cε₃ε₆ε₈ε₉Qε₄ε₇ε₉ε₁₀3. 粗粒化算法3.1 从全原子轨迹粗粒化classCoarseGrainer:粗粒化映射类def__init__(self,mapping_scheme): 初始化粗粒化方案 Parameters ---------- mapping_scheme : dict 映射方案 {cg_bead: [atom_indices]} self.mappingmapping_scheme self.n_cglen(mapping_scheme)defmap_positions(self,atom_positions,massesNone): 将原子位置映射到粗粒化位置 Parameters ---------- atom_positions : ndarray (n_atoms, 3) 原子位置 masses : ndarray (n_atoms,), optional 原子质量用于质量加权 Returns ------- ndarray (n_cg, 3) 粗粒化位置 cg_positionsnp.zeros((self.n_cg,3))fori,(bead_name,atom_indices)inenumerate(self.mapping.items()):ifmassesisnotNone:# 质心bead_massesmasses[atom_indices]cg_positions[i]np.average(atom_positions[atom_indices],axis0,weightsbead_masses)else:# 几何中心cg_positions[i]np.mean(atom_positions[atom_indices],axis0)returncg_positionsdefmap_forces(self,atom_forces,mapping_scheme): 将原子力映射到粗粒化力 Parameters ---------- atom_forces : ndarray (n_atoms, 3) 原子力 Returns ------- ndarray (n_cg, 3) 粗粒化力 cg_forcesnp.zeros((self.n_cg,3))fori,atom_indicesinenumerate(self.mapping.values()):cg_forces[i]np.sum(atom_forces[atom_indices],axis0)returncg_forces3.2 粗粒化MD模拟classCGMDSimulation:粗粒化分子动力学模拟def__init__(self,cg_positions,cg_masses,force_field): 初始化CGMD模拟 Parameters ---------- cg_positions : ndarray 粗粒化位置 cg_masses : ndarray 粗粒化珠子质量 force_field : object 粗粒化力场 self.positionscg_positions self.massescg_masses self.ffforce_field self.velocitiesnp.zeros_like(cg_positions)defstep(self,dt): 积分一步速度Verlet Parameters ---------- dt : float 时间步长可以比全原子大10-20倍 # 计算力forcesself.ff.compute_forces(self.positions)# 速度Verletself.velocities0.5*dt*forces/self.masses[:,np.newaxis]self.positionsdt*self.velocities# 应用PBCself.positions%self.ff.box_length# 新力forcesself.ff.compute_forces(self.positions)self.velocities0.5*dt*forces/self.masses[:,np.newaxis]4. 反向映射4.1 从粗粒化到全原子目的恢复原子细节进行后续分析与实验对比方法几何重建能量最小化短平衡模拟5. 总结粗粒化分子动力学是扩展模拟时空尺度的有效方法粗粒化映射减少了自由度提高了计算效率Martini力场是生物分子粗粒化的标准参数化是粗粒化成功的关键反向映射可以恢复原子细节用于分析