8.1.2. 3D Streamplot

8.1.2. Multicore 3D streamplot Python library for MDAnalysis — MDAnalysis.visualization.streamlines_3D

Authors:Tyler Reddy and Matthieu Chavent
Year:2014
Copyright:GNU Public License v3
Citation:[Chavent2014]
MDAnalysis.visualization.streamlines_3D.generate_streamlines_3d(coordinate_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')[source]

Produce the x, y and z components of a 3D streamplot data set.

Parameters:
  • **coordinate_file_path** – str Absolute path to the coordinate file
  • **trajectory_file_path** – str Absolute path to the trajectory file. It will normally be desirable to filter the trajectory with a tool such as GROMACS g_filter (see [Chavent2014])
  • **grid_spacing** – float The spacing between grid lines (angstroms)
  • **MDA_selection** – str MDAnalysis selection string
  • **start_frame** – int First frame number to parse
  • **end_frame** – int Last frame number to parse
  • **xmin** – float Minimum coordinate boundary for x-axis (angstroms)
  • **xmax** – float Maximum coordinate boundary for x-axis (angstroms)
  • **ymin** – float Minimum coordinate boundary for y-axis (angstroms)
  • **ymax** – float Maximum coordinate boundary for y-axis (angstroms)
  • **zmin** – float Minimum coordinate boundary for z-axis (angstroms)
  • **zmax** – float Maximum coordinate boundary for z-axis (angstroms)
  • **maximum_delta_magnitude** – float Absolute value of the largest displacement (in dx,dy, or dz) tolerated for the centroid of a group of particles (angstroms; default: 2.0). Values above this displacement will not count in the streamplot ( treated as excessively large displacements crossing the periodic boundary)
  • **num_cores** – int, optional The number of cores to use. (Default ‘maximum’ uses all available cores)
Returns:

array of floats

An array object containing the displacements in the x direction

dy_array : array of floats

An array object containing the displacements in the y direction

dz_array : array of floats

An array object containing the displacements in the z direction

Return type:

dx_array

Examples:
import np 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