LoopStructural.visualisation.lavavu.LavaVuModelViewer#

class LoopStructural.visualisation.lavavu.LavaVuModelViewer(model=None, bounding_box=None, nsteps=None, **kwargs)#

Bases: BaseModelPlotter

Parameters:

model

__init__(model=None, bounding_box=None, nsteps=None, **kwargs)#
Parameters:

model

Methods

__init__([model, bounding_box, nsteps])

param model:

add_box(bounding_box, name[, colour])

Adds a box to the viewer defined by a bounding box

add_data(feature[, disks, vectors])

Plot the data linked to the feature, can choose whether to plot all data types using value and grad kwargs

add_dtm([name, colour, paint_with])

add_fault(fault[, step])

add_fault_displacements([cmap])

Add a block model painted by the fault displacement magnitude

add_fold(fold, **kwargs)

Draw the vector components of the fold at the locations

add_isosurface(geological_feature[, value, ...])

Plot the surface of a geological feature

add_model([cmap])

Add a block model painted by stratigraphic id to the viewer

add_model_surfaces([strati, faults, cmap, ...])

Add surfaces for all of the interfaces in the model

add_points(points, name, **kwargs)

Plot points location in the lavavu viewer

add_scalar_field(geological_feature[, name, ...])

Add a block the size of the model area painted with the scalar field value

add_section([geological_feature, axis, ...])

Plot a section/map thru the model and paint with a geological feature

add_structural_frame(frame[, step, data])

add_support_box(geological_feature[, paint])

add_value_data(position, value, name, **kwargs)

Plot points data with a value component

add_vector_data(location, vector, name[, ...])

Plot point data with a vector component into the lavavu viewer

add_vector_field(geological_feature, **kwargs)

Plot the gradient of a geological feature at given locations

clear()

Remove all objects from the viewer

display([fname])

Calls the lv object display function.

export_to_webgl(fname, **kwargs)

image(name, **kwargs)

Calls the lv object image function to save the display state

image_array(**kwargs)

Return the current viewer image image data as a numpy array

interactive([popout])

Runs the lavavu viewer as either a jupyter notebook inline interactive viewer or as a separate window

rotate(r)

Rotate by a vector of rotation angles

rotatex(r)

Rotate the viewer in the x plane

rotatey(r)

Rotate the viewer in the Y plane

rotatez(r)

Rotate the viewer in the z plane

save(fname, **kwargs)

Calls lavavu.Viewer.image to save the viewer current state as an image

set_viewer_rotation(rotation)

Set the viewer rotation given a list of rotations x,y,z

set_zscale(zscale)

Set the vertical scale for lavavu

unfault_grid(feature[, grid])

Attributes

border

The width of the border around the model area

camera

model

nelements

The number of elements to use for evaluating the isosurface

nsteps

rotation

Accessor for the viewer rotation :returns: list -- x,y,z rotations

xmax

xmin

ymax

ymin

zmax

zmin

add_box(bounding_box, name, colour='red', **kwargs)#

Adds a box to the viewer defined by a bounding box

Parameters:
  • bounding_box (np.array) – [[xmin,ymin,zmin], [xmax,ymax,zmax]]

  • name (string) – name of object in viewer

  • colour (mpl readable colour format) – [description], by default ‘red’

add_data(feature, disks=False, vectors=False, **kwargs)#

Plot the data linked to the feature, can choose whether to plot all data types using value and grad kwargs

Parameters:
  • feature

  • kwargs

add_fault_displacements(cmap='rainbow', **kwargs)#

Add a block model painted by the fault displacement magnitude

Calls fault.displacementfeature.evaluate_value(points) for all faults

Parameters:

cmap (matplotlib cmap, optional) – colourmap name or object from mpl

Notes

It is sensible to increase the viewer step sizes before running this function to increase the resolution of the model as its not possible to interpolate a discrete colourmap and this causes the model to look like a lego block. You can update the model resolution by changing the attribute nsteps >>> viewer.nsteps = np.array([100,100,100])

add_fold(fold, **kwargs)#

Draw the vector components of the fold at the locations

Parameters:
  • object (fold - fold) –

  • xyz (locations - numpy array of) –

add_isosurface(geological_feature, value=None, isovalue=None, paint_with=None, slices=None, colour='red', nslices=None, cmap=None, filename=None, names=None, colours=None, opacity=None, function=None, **kwargs)#

Plot the surface of a geological feature

Parameters:
  • geological_feature (GeologicalFeature) – [description]

  • value (float, optional) – value of the scalar field to isosurface

  • isovalue (float, optional) – value of the scalar field to isosurface, by default None

  • paint_with (GeologicalFeature, optional) – a geological feature to paint the surface with its evaluate_value results, by default None

  • slices (list, optional) – values to isosurface, by default None

  • colour (string, optional) – matplotlib color, by default None

  • nslices (int, optional) – number of slices to evenly distribute in the model, by default None

  • cmap (string, optional) – matplotlib colormap, by default None

  • names (list, optional) – list of names same length as slices

  • colours (list, optional) – list of colours same length as slices

  • opacity (double, optional) – change the opacity of the surface(s)

  • callback_function – called with verts, tri and surface name - e.g. callback_function(verts,tri,name)

Returns:

[type] – [description]

add_model(cmap=None, **kwargs)#

Add a block model painted by stratigraphic id to the viewer

Calls self.model.evaluate_model() for a cube surrounding the model.

Parameters:

cmap (matplotlib cmap, optional) – colourmap name or object from mpl

Notes

It is sensible to increase the viewer step sizes before running this function to increase the resolution of the model as its not possible to interpolate a discrete colourmap and this causes the model to look like a lego block. You can update the model resolution by changing the attribute nsteps >>> viewer.nsteps = np.array([100,100,100])

add_model_surfaces(strati=True, faults=True, cmap=None, fault_colour='black', displacement_cmap=None, **kwargs)#

Add surfaces for all of the interfaces in the model

Parameters:
  • strati (bool, optional) – whether to draw stratigraphy

  • faults (bool, optional) – whether to draw faults, by default True

  • cmap (string) – matplotlib cmap

  • fault_colour (string) – colour string for faults

  • displacement_cmap (string/None) – if string is specified uses this cmap to colour faults by displacement

Notes

Other parameters are passed to self.add_isosurface()

add_points(points, name, **kwargs)#

Plot points location in the lavavu viewer

Parameters:
  • points (numpy array of the points locations) –

  • name (string name of the object for lavavu) –

  • **kwargs (lavavu points kwargs) –

add_scalar_field(geological_feature, name=None, cmap='rainbow', vmin=None, vmax=None, opacity=None, paint_with=None, **kwargs)#

Add a block the size of the model area painted with the scalar field value

Parameters:
  • geological_feature (GeologicalFeature) – the geological feature to colour the scalar field by

  • name (string, optional) – Name of the object for lavavu, needs to be unique for the viewer object, by default uses feature name

  • cmap (str, optional) – mpl colourmap reference, by default ‘rainbow’

  • vmin (double, optional) – minimum value of the colourmap, by default None

  • vmax (double, optional) – maximum value of the colourmap, by default None

  • opacity (double, optional) – change the opacity of the block

add_section(geological_feature=None, axis='x', value=None, paint_with=None, name=None, **kwargs)#

Plot a section/map thru the model and paint with a geological feature

Parameters:
  • geological_feature (Geological feature) – The feature to paint the section with

  • axis (string) – which axis, x,y,z

  • value (float) – Where to make the section

  • kwargs – additional kwargs passes to lavavu for colourmaps etc

add_value_data(position, value, name, **kwargs)#

Plot points data with a value component

Parameters:
  • position (numpy array N,3 for xyz locations) –

  • value (N array of values) –

  • name (string name of the object for lavavu) –

  • kwargs (kwargs to pass to lavavu) –

add_vector_data(location, vector, name, normalise=True, symbol_type='arrow', **kwargs)#

Plot point data with a vector component into the lavavu viewer

Parameters:
  • position (numpy array N,3 for xyz locations) –

  • vector (numpy array of vector N,3) –

  • name (string name for the object in lavavu) –

  • lavavu (kwargs to pass to) –

add_vector_field(geological_feature, **kwargs)#

Plot the gradient of a geological feature at given locations

Parameters:
  • geological_feature (Geological Feature to evaluate gradient) –

  • locations (((N,3)) array of evaluation locations) –

  • kwargs (kwargs for lavavu vector) –

property border#

The width of the border around the model area

Returns:

border (double) – [description]

clear()#

Remove all objects from the viewer

display(fname=None, **kwargs)#

Calls the lv object display function. Shows a static image of the viewer inline.

image(name, **kwargs)#

Calls the lv object image function to save the display state

Parameters:
  • name (string) – name of the image file to save

  • kwargs

image_array(**kwargs)#

Return the current viewer image image data as a numpy array

Returns:

image (np.array) – image as a numpy array

interactive(popout=False)#

Runs the lavavu viewer as either a jupyter notebook inline interactive viewer or as a separate window

property nelements: int#

The number of elements to use for evaluating the isosurface

Returns:

nelements (int) – number of elements to use for isosurfacing

rotate(r)#

Rotate by a vector of rotation angles

Parameters:

r (list/numpy array) – a vector of rotations

rotatex(r)#

Rotate the viewer in the x plane

Parameters:

r (double) – degrees to rotate, can be +ve or -ve

rotatey(r)#

Rotate the viewer in the Y plane

Parameters:

r (double) – degrees to rotate, can be +ve or -ve

rotatez(r)#

Rotate the viewer in the z plane

Parameters:

r (double) – degrees to rotate, can be +ve or -ve

property rotation#

Accessor for the viewer rotation :returns: list – x,y,z rotations

save(fname, **kwargs)#

Calls lavavu.Viewer.image to save the viewer current state as an image

Parameters:
  • path (fname - file name string including relative) –

  • transparent (kwargs - optional kwargs to give to lavavu e.g.) –

  • resolution

set_viewer_rotation(rotation)#

Set the viewer rotation given a list of rotations x,y,z

Parameters:

rotation (rotation numpy array of 3) –

set_zscale(zscale)#

Set the vertical scale for lavavu

just a simple wrapper for lavavu modelscale([xscale,yscale,zscale])

Parameters:

zscale (float) – vertical scale