在 VMD 中可视化轨迹

计算科学 可视化
2021-12-05 15:58:42

因此,我编写了一个简短的 Python 程序来模拟 2D 中的扩散;本质上,每个粒子都表现得像一个随机游走者。输出是一个 3D 张量,对于 4 个粒子和 10 个时间步长,如下所示:

[[[ 0.          0.        ]
  [-0.16043999 -0.9870456 ]
  [-1.09597489 -1.34027986]
  [-2.08225903 -1.17522353]
  [-1.76925893 -0.22547044]
  [-2.01800797 -1.19403841]
  [-2.15515569 -2.18458902]
  [-1.32309938 -1.62989786]
  [-2.27406193 -1.9392039 ]
  [-1.90350731 -1.01039322]]

 [[ 0.          0.        ]
  [-0.6938323  -0.72013662]
  [-0.36299996 -1.66382617]
  [ 0.5186036  -1.19183553]
  [ 0.34714146 -0.20664482]
  [ 1.31071192 -0.47409941]
  [ 2.25711798 -0.1511202 ]
  [ 1.58434992 -0.89097365]
  [ 1.3892911   0.0898179 ]
  [ 0.94147109 -0.80430583]]

 [[ 0.          0.        ]
  [ 0.99886494  0.04763229]
  [ 1.5346788   0.89196842]
  [ 0.81263989  1.58382086]
  [-0.18631285  1.62957497]
  [ 0.75609885  1.96403003]
  [-0.06263107  1.38985122]
  [-0.1323122   0.3922819 ]
  [ 0.8338982   0.13452725]
  [ 1.05742482  1.10922508]]

 [[ 0.          0.        ]
  [ 0.04440308  0.9990137 ]
  [ 0.86574242  0.42857379]
  [ 1.16274132 -0.52630403]
  [ 1.43873896  0.43485428]
  [ 2.10741306 -0.30870133]
  [ 1.74826957  0.62458103]
  [ 1.44620452  1.57786834]
  [ 1.31735411  2.56953238]
  [ 0.73397918  1.75732939]]]

因此,每个块是 1 个粒子,列是 x 和 y 坐标,行​​显示连续的时间步长。现在,我想将其插入 VMD 以可视化粒子轨迹。VMD 电影格式应该如何看?

我感谢大家的帮助!

1个回答

我建议您使用XYZ 文件格式一旦你有一个 XYZ 轨迹文件,进入 VMD,通过单击文件 > 新分子加载分子,并通过单击图形 > 表示 > 绘图方法显示粒子,然后选择点或 VDW,例如。

这是一个生成所需输出的快速脚本:

def write_xyz(xyz: np.array, filename: str) -> None:
    with open(filename, 'w') as f:
        for j in range(xyz.shape[1]):
            print(f'{xyz.shape[0]}\n', file=f)
            for i in range(xyz.shape[0]):
                print(f'p{i} {xyz[i, j, 0]} {xyz[i, j, 1]} 0', file=f)