Skip to main content

Python interface to LavaVu OpenGL 3D scientific visualisation utilities

Project description

# logo

Build Status Deploy Status DOI Binder

A scientific visualisation tool with a python interface for fast and flexible visual analysis.

Documentation available here LavaVu Documentation

examplevis

LavaVu development is supported by ACCESS-NRI. Prior development was funded by the Monash Immersive Visualisation Plaform at Monash eResearch and the Simulation, Analysis & Modelling component of the NCRIS AuScope capability.

The acronym stands for: lightweight, automatable visualisation and analysis viewing utility, but "lava" is also a reference to its primary application as a viewer for geophysical simulations. It was also chosen to be unique enough to find the repository with google.

The project started as a replacement rendering library for the gLucifer1 framework, visualising geodynamics simulations. The new OpenGL visualisation code was re-implemented as a more general purpose visualisation tool. gLucifer continues as a set of sampling tools for Underworld simulations as part of the Underworld2 code. LavaVu provides the rendering library for creating 2d and 3d visualisations to view this sampled data, inline within interactive Jupyter notebooks and offline through saved visualisation databases and images/movies.

As a standalone tool it is a scriptable 3D visualisation tool capable of producing publication quality high res images and video output from time varying data sets along with HTML5 3D visualisations in WebGL. Rendering features include correctly and efficiently rendering large numbers of opaque and transparent points and surfaces and volume rendering by GPU ray-marching. There are also features for drawing vector fields and tracers (streamlines).

Control is via python and a set of simple verbose scripting commands along with mouse/keyboard interaction. GUI components can be generated for use from a web browser via the python "control" module and a built in web server.

Widgets for interactive use in the Jupyter notebook environment allow use for remote visualisation, eg: on supercomputing environments.

A native data format called GLDB is used to store and visualisations in a compact single file, using SQLite for storage and fast loading. A small number of other data formats are supported for import (OBJ surfaces, TIFF stacks etc). Further data import formats are supported with python scripts, with the numpy interface allowing rapid loading and manipulation of data.

This repository

This is the public source code repository for all development on the project. Development happens in the "master" branch with stable releases tagged, so if you just check out master, be aware that things can be unstable or broken from time to time.

How do I get set up?

It's now in the python package index, so you can install with pip:

python -m pip install lavavu

Currently binary wheels are provided for Linux x86_64, MacOS x86_64 and ARM64 and Windows x86_64.

To try it out:

python
> import lavavu
> lv = lavavu.Viewer() #Create a viewer
> lv.test()            #Plot some sample data
> lv.interactive()     #Open an interactive viewer window

Alternatively, clone this repository with git and build from source:

  git clone https://github.com/lavavu/LavaVu
  cd LavaVu
  python -m pip install .

or

  make -j4

If all goes well the viewer will be built, try running with: ./lavavu/LavaVu

Dependencies

  • OpenGL and Zlib, present on most systems, headers may need to be installed
  • To use with python requires python 3.6+ and NumPy
  • For video output, requires: PyAV or for built in encoding, libavcodec, libavformat, libavutil, libswscale (from FFmpeg / libav)
  • To build the python interface from source requires swig (http://www.swig.org/)

Who do I talk to?

For further documentation / examples, see the online documentation

Included libraries

In order to avoid as many external dependencies as possible, the LavaVu sources include files from the following public domain or open source libraries, many thanks to the authors for making their code available!


1 Stegman, D.R., Moresi, L., Turnbull, R., Giordani, J., Sunter, P., Lo, A. and S. Quenette, gLucifer: Next Generation Visualization Framework for High performance computational geodynamics, 2008, Visual Geosciences
2 Ruijters, Daniel & ter Haar Romeny, Bart & Suetens, Paul. (2008). Efficient GPU-Based Texture Interpolation using Uniform B-Splines. J. Graphics Tools. 13. 61-69.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lavavu_osmesa-1.9.10-cp313-cp313-manylinux_2_28_x86_64.whl (84.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

lavavu_osmesa-1.9.10-cp312-cp312-manylinux_2_28_x86_64.whl (84.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

lavavu_osmesa-1.9.10-cp311-cp311-manylinux_2_28_x86_64.whl (84.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

File details

Details for the file lavavu_osmesa-1.9.10-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lavavu_osmesa-1.9.10-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4afd653bd294f5cb11cba0f49db9053940337ee342e496ccb18185fd232c30e4
MD5 0d1708d30714bfba1f7eb2e6dbc6b6a2
BLAKE2b-256 9db0cadfefed82a20a294ff7d04c98c3cc35006dbd7b9118afd212953f47a8be

See more details on using hashes here.

Provenance

The following attestation bundles were made for lavavu_osmesa-1.9.10-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: osmesa_deploy.yaml on lavavu/LavaVu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lavavu_osmesa-1.9.10-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lavavu_osmesa-1.9.10-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9c39696ae876dbbcaf2bfce52533a8bd59dd891d3f97925944e1a5c9ff82bf37
MD5 4dd3cb666b4df9a7cdd5486d5efd6b74
BLAKE2b-256 4baab73950d210c4ed3ef97ba282513c5d39502b2dd34de8ec5b9abd8564ddf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lavavu_osmesa-1.9.10-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: osmesa_deploy.yaml on lavavu/LavaVu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lavavu_osmesa-1.9.10-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lavavu_osmesa-1.9.10-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c980e1f9cf37ed77a5e51588b67a687cfae6176d763b0f85d771caf851cde3f8
MD5 19d884ae919c6ab2c39149e04e1a77c8
BLAKE2b-256 60c2c45a2d75b7e8e68947e7269281c26ba5189200cf688f8cce40313f6b0f65

See more details on using hashes here.

Provenance

The following attestation bundles were made for lavavu_osmesa-1.9.10-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: osmesa_deploy.yaml on lavavu/LavaVu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page