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.
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()
Key Features
1. Simultaneous 1D, 2D, 3D and DataFrame Visualization
Visualize line plots, 2D geometries, 3D VTK-based plots, and pandas DataFrames 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
GenericInterfacebase 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
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, DataFrame, generic)
│ ├── layout/ # Layout managers (GridStack, Split)
│ ├── panel/ # Visualization panels (1D, 2D, 3D, DataFrame) and GUI
│ ├── plotter_1d/ # 1D plotting backends
│ ├── plotter_2d/ # 2D plotting backends (grid, polygon)
│ ├── plotter_3d/ # 3D plotting backends (VTK.js)
│ ├── plotter_dataframe/ # DataFrame display backend
│ └── 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 (1D, 2D, 3D, DataFrame) |
| layout/ | Layout managers for arranging multiple panels (GridStack, Split) |
| interface/ | Data interfaces for reading various file formats (MED, VTK, CSV, DataFrame, generic) |
| 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/ | 1D plotting backends using Bokeh |
| plotter_2d/ | 2D plotting backends using Bokeh (polygon and grid modes) |
| plotter_3d/ | 3D plotting backends using VTK.js |
| plotter_dataframe/ | DataFrame display backend for pandas DataFrames |
| component/ | Custom Panel components including React Three Fiber integration |
Metadata
Release files for scivianna 0.8.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scivianna-0.8.2.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scivianna-0.8.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.8 MB
Release files / scivianna-0.8.2.tar.gz
| Download URL | scivianna-0.8.2.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f27e63837011c1ffc5930b3e46de5e3d3d2c5a0c7ec1c5c373b4dbb6061ad463
|
|
BLAKE2b-256 checksum How to use checksums |
b5af5c97ac52d46944ccc19bc2c79269a1514e24251dc55f0717837167ad110c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / scivianna-0.8.2-py3-none-any.whl
| Download URL | scivianna-0.8.2-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ffeee8ae264bd431c48517536d860254dab21f50d415c482f826554dfe8cd0c6
|
|
BLAKE2b-256 checksum How to use checksums |
ab5f98c93b4a65cb50b0df0050542bd6408c620166a14632d54feaa7b86f08d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|