Skip to main content

Python generic module to visualize simulation geometries and results.

Project description

Scivianna: SCIentific VIsualizer for simulAtioN aNAlysis

Scivianna is an open-source Python simulation geometry and result visualizer based on Holoviz Panel. It provides a powerful and flexible environment for visualizing 1D plots and 2D geometries simultaneously, with support for real-time simulation result visualization through code coupling.

Installation

Scivianna can be installed directly from PyPI using pip:

pip install scivianna

Optional Dependencies

Scivianna offers several optional dependency sets for specific features:

# Agent/LLM features
pip install scivianna[agent]

# PyVista 3D visualization
pip install scivianna[pyvista]

# Testing and development
pip install scivianna[test]

# Code coupling with C3PO
pip install scivianna[coupling]

Quick Start

Basic Usage

from scivianna.layout.gridstack import GridStackLayout
from scivianna.panel.visualisation_panel import VisualizationPanel
from scivianna.slave import ComputeSlave

# Create a slave with your data interface
slave = ComputeSlave(YourInterface)

# Create a visualization panel
panel = VisualizationPanel(slave, name="My Panel")

# Create a layout and add the panel
layout = GridStackLayout({"panel1": panel})

# Display
layout.show()

Running the Demonstrator

Scivianna includes a scivianna_example module with several demonstration cases. To run the demonstrator:

from scivianna_example.demo import make_demo

demo = make_demo()
demo.show()

scivianna_example Module

The scivianna_example module provides ready-to-use examples showcasing Scivianna's capabilities:

Available Examples

Example Description
Europe Grid Plots an interactive Europe map displaying electricity production and consumption per country with weekly time-steps. Hover over countries to see values.
Medcoupling Demonstrates MED file format handling with three synchronized views. Click in one view to offset others at the click location.
Mandelbrot Computes the Mandelbrot set on a 2D grid and converts it to polygons for visualization.

Accessing Examples Individually

# Europe example
from scivianna_example.europe_grid.europe_grid import make_europe_panel
europe_panel = make_europe_panel(None)

# Medcoupling example  
from scivianna_example.med.split_item_example import get_panel
medcoupling_panel = get_panel(None)

# Mandelbrot example
from scivianna_example.mandelbrot.mandelbrot import make_panel
mandelbrot_panel = make_panel(None)

Repository Organization

scivianna/
├── src/
│   └── scivianna/              # Main package source code
│       ├── agent/              # LLM/Agent integration tools
│       ├── component/          # UI components (GridStack, Overlay, SplitJS, R3F)
│       ├── coupling/           # C3PO/ICOCO coupling interface
│       ├── data/               # Data containers and workers
│       ├── extension/          # Panel extensions (axes, layout, file loader, etc.)
│       ├── icon/               # UI icons
│       ├── input_file/         # Sample input files
│       ├── interface/          # Data interfaces (MED, VTK, CSV, generic)
│       ├── layout/             # Layout managers (GridStack, Split)
│       ├── panel/              # Visualization panels and GUI
│       ├── plotter_1d/         # 1D plotting backends
│       ├── plotter_2d/         # 2D plotting backends (grid, polygon)
│       └── utils/              # Utilities (mesh tools, serialization, etc.)
│
├── tests/                      # Test suite
├── utils/                      # Development utilities
└── results/                    # Example outputs

Core Modules

Module Purpose
panel/ Visualization panels with GUI controls, extensions, and overlay components
layout/ Layout managers for arranging multiple panels (GridStack, Split)
interface/ Data interfaces for reading various file formats (MED, VTK, CSV)
coupling/ ICOCO-compatible interface for code coupling with C3PO
data/ Data containers and workers for handling simulation data
extension/ Extendable components for axes, field selection, file loading, etc.
plotter_1d/ & plotter_2d/ Plotting backends using Bokeh and Matplotlib
component/ Custom Panel components including React Three Fiber integration

Key Features

1. Simultaneous 1D and 2D Visualization

Visualize line plots and 2D geometries together in an integrated dashboard.

2. Real-Time Code Coupling

Connect to simulations in real-time using the C3PO coupling platform and ICOCO interface. The visualizer can receive field updates during simulation execution.

3. Generic Data Interfaces

Scivianna provides flexible interfaces to read various data formats:

  • MED (Salome MED file format)
  • VTK (Visualization Toolkit files)
  • CSV (Structured time-series data)
  • Custom interfaces via GenericInterface base class

4. Remote Server Access

Access the visualizer from a distant computer using Panel's server/client architecture. Perfect for running simulations on HPC clusters while visualizing locally.

5. Extensible Architecture

Extensions can be added to panels for additional functionality:

  • Field selectors
  • Line selection tools
  • File loaders
  • Layout management
  • AI assistant integration

Code Coupling with C3PO

Scivianna integrates with the C3PO coupling tool through the ICOCO interface:

from scivianna.coupling.icoco import LayoutProblem
from scivianna.layout.gridstack import GridStackLayout

# Create your layout
layout = GridStackLayout(panels)

# Create the coupling problem
problem = LayoutProblem(layout, title="Coupled Simulation")

# Use with C3PO
# problem.initialize()
# problem.setInputMEDDoubleField("panel_name@field_name", field_data)

Requirements

  • Python >= 3.8, < 4
  • panel
  • holoviews
  • bokeh / jupyter_bokeh
  • matplotlib
  • numpy / pandas
  • shapely / geopandas
  • rasterio
  • icoco (for coupling features)
  • panel_material_ui

Demo Application

A live demonstrator (excluding real-time simulation features) is available at: https://huggingface.co/spaces/tmoulignier/scivianna

License

Scivianna is developed by CEA (Commissariat à l'énergie atomique et aux énergies alternatives).

Contact

Project details


Download files

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

Source Distribution

scivianna-0.5.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

scivianna-0.5.0-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file scivianna-0.5.0.tar.gz.

File metadata

  • Download URL: scivianna-0.5.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for scivianna-0.5.0.tar.gz
Algorithm Hash digest
SHA256 f43e2d1d976c865dfd7b915a3c34e92dbbd7153a3c22be815b629cc5e99b078f
MD5 6435ce81021e16eaf3b7c365ecf76150
BLAKE2b-256 84ae7c997b50147cd0861470c20e0c57bbb67ecf046f9037cf5c726add05bf3c

See more details on using hashes here.

File details

Details for the file scivianna-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: scivianna-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for scivianna-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b22b9f08dd7b70ca76529c1dca47a95500529047213f32ef5a5348d04e685340
MD5 fb3ad847cda830cf8aba16422b36e354
BLAKE2b-256 e0ff9eeb6220c5bcb94db94d0ddbd8e50adeb4ef986d5d30e5bcba5e5876c6c1

See more details on using hashes here.

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