在对分子构象进了充分的抽样之后,就可以在其中随机抽取若干构象进行高精度量子化学计算。sander程序得到的轨迹文件后缀名是.nc,使用MDAnalysis这个工具包,就可以在Python中读取对应的坐标文件。例如,使用下面的脚本就可以将nc文件中的坐标转换为numpy数组:
代码如下:
import numpy as np
import MDAnalysis as mda
parmfile = 'cba.prmtop'
nfile = 4
xyz = []
for idx in range(nfile):
ncfile = 'cba_metad_mw' + str(idx)+'.nc'
print(ncfile)
u = mda.Universe(parmfile,ncfile)
print(u.trajectory)
for ts in u.trajectory:
r = ts.positions
xyz.append(r.copy())
xyz = np.array(xyz)
np.savez('cba_metad.npz',R=xyz)
之后我们需要随机抽取一定数量的构象,我们用Python脚本随机选取一定的数量的构象并保存为xyz格式:
代码如下:
import os
import numpy as np
dataname = 'cba_metad.npz'
data = np.load(dataname)
R = data['R']