dcd文件中的水分子时间序列数据

2024-05-28 22:33:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图制作一个包含dcd文件中水分子时间序列数据的文件。是否可以使用任何MDAnalysis模块或函数生成此数据?或者是否有任何python脚本生成此文件

我需要通过使用DCD文件作为输入来生成包含两列的文件(一列带有水分子的z坐标,第二列带有相应的时间步长)


Tags: 模块文件数据函数脚本时间序列步长
1条回答
网友
1楼 · 发布于 2024-05-28 22:33:36

你可以通过多种方式得到(z,t)时间序列,但我在这里展示的是最基本的一种。我假设除了DCD轨迹文件之外,您还有一个PSF拓扑文件(但实际上,任何拓扑和轨迹文件格式都可以在MDAnalysis中使用)。我还假设水的氧原子被命名为“OW”

我实际上不清楚您希望“z,t”数据结构是什么样子。如果你有N个水分子,那么每个时间步都有N个z坐标,所以我不知道这作为“两列”有什么意义,假设你希望每一行都是不同的时间步。相反,我将使用以下数据结构:最终输出将是一个具有形状(T, N+1)的数组,其中T是轨迹中的时间步数N是水域数。数组的每一行包含[t, z1, z2, ..., zN],即水i的时间和z坐标

import numpy as np
import MDAnalysis as mda

u = mda.Universe(PSF, DCD)
water_oxygens = u.select_atoms("name OW")

# pre-allocate the array for the data
data = np.zeros((u.trajectory.n_frames, water_oxygens.n_atoms + 1))

for i, ts in enumerate(u.trajectory):
   data[i, 0] = ts.time                          # store current time
   data[i, 1:] = water_oxygens.positions[:, 2]   # extract all z-coordinates

# now data contains your timeseries and you can work with it
# (or export it using np.savetxt()

有关MDAnalysis的介绍,请参见User Guide,它还有一个quickstart guide,用于解释选择和轨迹迭代

如需更多问题,请在MDAnalysis Google group上提问,通常在那里您会得到最快的答案

相关问题 更多 >

    热门问题