12.1.1. 流图(2D) MDAnalysis.visualization.streamlines

作者:

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

:

2014

版权所有:

GNU公共许可证v3

这个 generate_streamlines() 函数可以从MD轨迹生成2D流场,例如,扁平膜中的脂分子。它可以利用多个核心并行执行分析(使用 multiprocessing )。

参见

MDAnalysis.visualization.streamlines_3D

3D中的流程图

MDAnalysis.visualization.streamlines.generate_streamlines(topology_file_path, trajectory_file_path, grid_spacing, MDA_selection, start_frame, end_frame, xmin, xmax, ymin, ymax, maximum_delta_magnitude, num_cores='maximum')[源代码]

生成2D流图数据集的x和y分量。

参数:
  • 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方向位移的数组对象

  • average_displacement ( 浮动 )- \(\frac{{\sum\sqrt[]{{dx^2 + dy^2}}}}{{N}}\)

  • standard_deviation_of_displacement ( 浮动 )--标准差 \(\sqrt[]{{dx^2 + dy^2}}\)

示例

生成2D流线并绘制:

import matplotlib, matplotlib.pyplot, np
import MDAnalysis, MDAnalysis.visualization.streamlines

u1, v1, average_displacement, standard_deviation_of_displacement =
    MDAnalysis.visualization.streamlines.generate_streamlines('testing.gro', 'testing_filtered.xtc',
            grid_spacing=20, MDA_selection='name PO4', start_frame=2, end_frame=3,
            xmin=-8.73000049591, xmax= 1225.96008301,
            ymin= -12.5799999237, ymax=1224.34008789,
            maximum_delta_magnitude=1.0, num_cores=16)
x = np.linspace(0, 1200, 61)
y = np.linspace(0, 1200, 61)
speed = np.sqrt(u1*u1 + v1*v1)
fig = matplotlib.pyplot.figure()
ax = fig.add_subplot(111, aspect='equal')
ax.set_xlabel('x ($\AA$)')
ax.set_ylabel('y ($\AA$)')
ax.streamplot(x, y, u1, v1, density=(10,10), color=speed, linewidth=3*speed/speed.max())
fig.savefig('testing_streamline.png',dpi=300)
../../_images/testing_streamline.png

引用

[ᵃ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.