本教程的主要内容是如何使用Python程序,对聚合物线环混合体系的分子动力学模拟结果进行分析处理,以统计线环穿插。
一、准备工作
在经过MD模拟后,准备-pbc nojump处理过后的轨迹文件(.xtc)、线性链和环形链的拓扑文件(.itp)、MD模拟完成后的结构文件(.gro);安装Python工具包(numpy、MDAnalysis)
二、实现原理
通过读取itp文件,自动识别完整主链;用环主链构造离散跨环曲面;先按“到环曲面的最近距离”筛选附近线链;再对通过筛选的线链主链做精确穿面统计。
三、详细解析
首先通过修改输入文件的绝对路径和参数,读取itp文件,识别主链原子;再将被周期边界切开的有序主链点序列恢复成连续坐标;为了把环主链闭边界稳定地长成曲面,这里采用:SVD拟合参考平面、把环点投影到2D、在2D上做耳切法三角剖分、再映射回3D、与简单的 triangle-fan 相比,这种做法对扭曲环更稳。
如上图所示,先进行初步筛选,只对环曲面包围盒内的主链进行统计计算,判定线环穿插现象。
四、数学原理
将线性链的主链变为一个有序的点列:[p0, p1, p2, p3, ...],根据拓扑文件,把相邻点连成线段集{(p0,p1), (p1,p2), ..., (p(n-1),pn)};通过把环主链闭边界变成很多三角片,把环变成离散曲面,将环曲面变成一个个三角片[(a1,b1,c1), (a2,b2,c2), (a3,b3,c3), ...],最后对所有组合计算(pi, p(i+1)) 是否与 (aj, bj, cj) 相交。因此,本次工作的判定线环穿插的方式为:在环形PS主链构成的离散曲面的包围盒内,将PS链是否与离散曲面有交点作为判据。
五、数据分析
vis_mainchain.gro/vis_mainchain.pdb:主链可视化检查文件
pair_results.csv:某一帧线环穿插的判定结果
pair_intersections.csv:某一帧、某个线环交叉的一个交点
frame_summary.csv:某一帧整体上有多少个pair属于各个类别
ring_summary.csv:某一个环,在所有抽样帧、所有线链中累计的统计结果
chain_summary.csv:某一条链,在所有抽样帧、所有环中累计的统计结果
metadata.json:参数和方法记录文件
summary.txt:总览摘要(参数日志);线环穿插总数统计