12.1.2. StreamPlot(3D) MDAnalysis.visualization.streamlines_3D

作者:

泰勒·雷迪和马修·查文特

:

2014

版权所有:

GNU公共许可证v3

这个 generate_streamlines_3d() 函数可以从MD轨迹生成3D流场,例如,病毒衣壳中的脂分子。它可以利用多个核心并行执行分析(使用 multiprocessing )。

[ᵇChavent2014] (1,2,3)

Matthieu Chavent, Tyler Reddy, Joseph Goose, Anna Caroline E. Dahl, John E. Stone, Bruno Jobard, and Mark S. P. Sansom. Methodologies for the analysis of instantaneous lipid diffusion in md simulations of large membrane systems. Faraday Discuss., 169:455–475, 2014. doi:10.1039/C3FD00145H.

参见

MDAnalysis.visualization.streamlines

二维流程图

MDAnalysis.visualization.streamlines_3D.generate_streamlines_3d(topology_file_path, trajectory_file_path, grid_spacing, MDA_selection, start_frame, end_frame, xmin, xmax, ymin, ymax, zmin, zmax, maximum_delta_magnitude=2.0, num_cores='maximum')[源代码]

生成3D流图数据集的x、y和z分量。

参数:
  • topology_file_path (str) -- 拓扑文件的绝对路径

  • trajectory_file_path (str) -- 轨迹文件的绝对路径。通常需要使用诸如GROMACS之类的工具来过滤轨迹 g_filter (见 [ᵇChavent2014] )

  • grid_spacing (float) -- 网格线之间的间距(埃)

  • MDA_selection (str) -- MDAnalysis选择字符串

  • start_frame (int) -- 要解析的第一个帧编号

  • end_frame (int) -- 要解析的最后一个帧编号

  • xmin (float) -- X轴的最小坐标边界(埃)

  • xmax (float) -- X轴的最大坐标边界(埃)

  • ymin (float) -- Y轴的最小坐标边界(埃)

  • ymax (float) -- Y轴的最大坐标边界(埃)

  • maximum_delta_magnitude (float) -- 一组粒子(埃)质心所允许的最大位移的绝对值。流程图中不会计入高于此位移的值(视为跨越周期边界的超大位移)

  • num_cores (int or 'maximum' (optional)) -- 要使用的核心数量。(默认的‘Maximum’使用所有可用核心)

返回:

  • dx_array ( 浮点数组 )--包含x方向位移的数组对象

  • dy_array ( 浮点数组 )--包含y方向位移的数组对象

  • dz_array ( 浮点数组 )--包含z方向位移的数组对象

示例

生成3D流线并在中可视化 mayavi ::

import numpy as np

import MDAnalysis
import MDAnalysis.visualization.streamlines_3D

import mayavi, mayavi.mlab

# assign coordinate system limits and grid spacing:
x_lower,x_upper = -8.73, 1225.96
y_lower,y_upper = -12.58, 1224.34
z_lower,z_upper = -300, 300
grid_spacing_value = 20

x1, y1, z1 = MDAnalysis.visualization.streamlines_3D.generate_streamlines_3d(
                'testing.gro', 'testing_filtered.xtc',
                 xmin=x_lower, xmax=x_upper,
                 ymin=y_lower, ymax=y_upper,
                 zmin=z_lower, zmax=z_upper,
                 grid_spacing=grid_spacing_value, MDA_selection = 'name PO4',
                 start_frame=2, end_frame=3, num_cores='maximum')

x, y, z = np.mgrid[x_lower:x_upper:x1.shape[0]*1j,
                  y_lower:y_upper:y1.shape[1]*1j,
                  z_lower:z_upper:z1.shape[2]*1j]

# plot with mayavi:
fig = mayavi.mlab.figure(bgcolor=(1.0, 1.0, 1.0), size=(800, 800), fgcolor=(0, 0, 0))
for z_value in np.arange(z_lower, z_upper, grid_spacing_value):
    st = mayavi.mlab.flow(x, y, z, x1, y1, z1, line_width=1,
                          seedtype='plane', integration_direction='both')
    st.streamline_type = 'tube'
    st.tube_filter.radius = 2
    st.seed.widget.origin = np.array([ x_lower,  y_upper,   z_value])
    st.seed.widget.point1 = np.array([ x_upper, y_upper,  z_value])
    st.seed.widget.point2 = np.array([ x_lower, y_lower,  z_value])
    st.seed.widget.resolution = int(x1.shape[0])
    st.seed.widget.enabled = False
mayavi.mlab.axes(extent = [0, 1200, 0, 1200, -300, 300])
fig.scene.z_plus_view()
mayavi.mlab.savefig('test_streamplot_3D.png')
# more compelling examples can be produced for vesicles and other spherical systems
../../_images/test_streamplot_3D.png