Chhavi: A Python tool for converting RAMSES outputs to VTKHDF
Overview
Chhavi is a Python tool for converting RAMSES simulation outputs into VTKHDF format for visualization and analysis in ParaView and related tools.
It provides both a command-line interface (CLI) and a Python API.
The package also includes test coverage, example scripts, profile analysis suite for Osyris vs VTKHDF validation and clear documentation, ensuring it is reproducible and accessible for scientific use.
Quick Start
pip install chhavi
chhavi --help
Features
- Convert RAMSES AMR outputs into VTKHDF OverlappingAMR files
- Uses Osyris for data analysis and extraction
- Support for both scalar fields (density, pressure, grav_potential) and vector fields (velocity, magnetic_field, grav_acceleration)
- Dry-run mode to preview what would be written without creating files
- CLI and Python API for flexible use
- Parallel conversion support with configurable number of workers (
--nproc) - Customizable output directory through
--output-diroption - Profile Analysis - Osyris vs VTKHDF validation (CCC > 0.99)
- Fully tested with
pytest
Installation
Install from PyPI (recommended)
pip install chhavi
Install from source (development)
git clone https://github.com/HemangiVarkal/Chhavi.git
cd Chhavi
pip install .
Usage
Command-Line Interface (CLI)
Example:
chhavi --base-dir ramses_outputs/ \
--folder-name sedov_3d/ -n 1 \
--output-prefix sedov_test \
--fields density,velocity,pressure \
--dry-run \
--output-dir ./vtk_outputs \
--nproc 1
Alternatively:
python -m chhavi.cli --base-dir ramses_outputs/ \
--folder-name sedov_3d/ -n 1 \
--output-prefix sedov_test \
--fields density,velocity,pressure \
--dry-run \
--output-dir ./vtk_outputs \
--nproc 1
Key options:
--base-dir→ Parent folder--folder-name→ Folder containing RAMSES outputs-n→ Snapshot number(s)--output-prefix→ Prefix for generated.vtkhdffiles--fields→ Comma-separated list of fields (scalars/vectors)--dry-run→ Run without writing files--output-dir→ Directory to store.vtkhdfoutput files. Defaults to--base-dir/--folder-name.--nproc→ Number of CPU cores to use for parallel conversion (default: 1). Falls back to serial if unavailable.
Python API
from chhavi.converter import ChhaviConverter
converter = ChhaviConverter(
input_folder="ramses_outputs/sedov_3d",
output_prefix="sedov_test",
fields=["density", "velocity"],
dry_run=True,
output_directory="./vtk_outputs"
)
converter.process_output(1)
Profile Analysis Workflow
Profile analysis tools are provided in profiles/ directory:
cd profiles/
python compute_osyris_profile.py --base-dir ..\ramses_outputs --folder-name sedov_3d --numbers 4
python compute_vtk_profile.py --base-dir ..\vtk_outputs --folder-name sedov_3d --numbers 4
python analyzing_profiles.py -n 4
This suite:
- Generates radial density profiles from Osyris (RAMSES native) and VTKHDF outputs, saved as CSV files in profile_outputs/ folder:
osyris_profile_00002.csv[radius, mean, std, min, max]
vtk_profile_00002.csv[radius, mean, std, min, max] - Computes Concordance Correlation Coefficient (CCC) validation metric between CSV profiles (CCC > 0.99 confirms equivalence)
- Creates publication-quality comparison plots
profile_comparison_00002.pngwith error bands test_profile_analysis.pyintests/validatessnapshot output_00004with 7 automated tests
Example Script
An example is provided in examples/example_usage.py:
python -m examples.example_usage
This script:
- Lists available fields in snapshots
- Prints dataset info
- Performs a dry-run conversion
- Displays scalar/vector fields to be written
You can specify an output directory in the example usage by setting OUTPUT_DIR='your/path'.
Output File Structure
<output-prefix>_00001.vtkhdf
<output-prefix>_00002.vtkhdf
...
Tests
Run the test suite with:
pytest tests/
Repository Structure
Chhavi/
├── chhavi/ # Core Python package
│ ├── __init__.py
│ ├── cli.py
│ ├── converter.py
│ └── parallel.py
│
├── examples/ # Example usage scripts
│ └── example_usage.py
│
├── profiles/ # Profile analysis suite
│ ├── compute_osyris_profile.py
│ ├── compute_vtk_profile.py
│ ├── analyzing_profiles.py
│
├── ramses_outputs/ # Sample real RAMSES outputs
│ └── sedov_3d/
│ ├── output_00001/
│ ├── output_00002/
│ ├── output_00003/
│ ├── output_00004/
│ └── output_00005/
│
├── tests/ # Unit tests
│ ├── __init__.py
│ ├── test_cli.py
│ ├── test_converter.py
│ ├── test_import.py
│ ├── test_parallel.py
│ ├── test_parser.py
│ └── test_profile_analysis.py
│
├── LICENSE
├── pyproject.toml
├── README.md
├── requirements-dev.txt
├── requirements.txt
└── .gitignore
Notes & Best Practices
- Default fields if
--fieldsis not specified:density,pressure,velocity - Profile validation confirms Osyris and VTKHDF produce equivalent results
- Verbose mode
--verboseprovides step-by-step information, including the number of cells retained per level. - Parallel execution automatically uses specified CPU cores (
--nproc); falls back to serial execution if needed - Output directory is auto-created if it does not exist — no manual setup required
- If no cells survive filtering or fields are missing, the output file is skipped, with warnings logged
License
This project is licensed under the terms of the MIT License.
See the LICENSE file for details.
Authors
- Hemangi C. Varkal — Developer
- Shubhankar R. Gharote — Space Applications Centre (SAC), ISRO
- Dr. Munn Vinayak Shukla — Space Applications Centre (SAC), ISRO
- Dr. Mehul Pandya — Space Applications Centre (SAC), ISRO
Acknowledgements
- This work was carried out at the Space Applications Centre (SAC), Indian Space Research Organisation (ISRO), Ahmedabad, India.
- The author expresses sincere appreciation to Dr. Rashmi Sharma (DD, EPSA) for continuous encouragement and institutional support.
- Special thanks are due to Dr. Mehul Pandya (Group Director, SESG/EPSA), Dr. Munn Vinayak Shukla (Head, SSD/SESG/EPSA) and Shubhankar R. Gharote (Scientist, SSD/SESG/EPSA) for their invaluable guidance, technical insights, and collaboration throughout the development of this work.
- Computations were performed using the SAGAR High Performance Computing (HPC) Facility of SAC.
- Implementation follows ParaView VTKHDF OverlappingAMR conventions.
Citation
If you use Chhavi in your work, please cite it as:
Varkal, H. (2026). Chhavi: A Python tool for converting RAMSES outputs to VTKHDF.
GitHub repository: https://github.com/HemangiVarkal/Chhavi
Metadata
Release files for chhavi 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chhavi-1.0.1.tar.gz | 24.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chhavi-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.9 kB
Release files / chhavi-1.0.1.tar.gz
| Download URL | chhavi-1.0.1.tar.gz |
|---|---|
| Size | 24.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aedaeedb33d1d1a22c76afb2ced98180fd97bfc56c8cc395f2a35843632fa550
|
|
BLAKE2b-256 checksum How to use checksums |
4d57551deed5314b951ecddcd17cdcdb81c3662dcc93a1d8049df41a29e7f061
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / chhavi-1.0.1-py3-none-any.whl
| Download URL | chhavi-1.0.1-py3-none-any.whl |
|---|---|
| Size | 18.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b7f996b502de716358c109a9183f0f65145fcd799843274d71e66c81fdb77ea
|
|
BLAKE2b-256 checksum How to use checksums |
c4844b6591fba8723d7187b03ced7a37a1afbd21495163b72585957c4a0af46b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|