Releases: gemc/pygemc
Releases · gemc/pygemc
Dev Nightly
Commits on main since 2026-05-23
- 2026-06-10 259e771 - added GVolume.distribute_on_circle to replicate a volume at n equal angular steps along a circle (by Maurizio Ungaro)
- 2026-06-10 1a3205d - added distribute_on_circle method to distribute gvolumes around a circle (by Maurizio Ungaro)
- 2026-06-09 d757e74 - testing renamed trigger workflow (by Maurizio Ungaro)
- 2026-06-06 889eba7 - added polycone (by Maurizio Ungaro)
- 2026-06-06 19cff73 - fixed and added g4trap and passive rotations to pyvista (by Maurizio Ungaro)
- 2026-06-06 2e8623a - aligned ascii entries for readability (by Maurizio Ungaro)
- 2026-06-05 c703605 - added g4placement_type active and passive, drives g4placement (by Maurizio Ungaro)
- 2026-06-04 e7bce70 - added new sqlite creation and fix gconfiguration log to show all variations (by Maurizio Ungaro)
- 2026-06-04 2ca5260 - Added , to set the base PyVista background color (by Maurizio Ungaro)
- 2026-05-29 80dbfbd - skip CI workflows for LICENSE changes alongside other governance docs (by Maurizio Ungaro)
- 2026-05-29 8ae4ceb - fixed LICENSE.md and update_milestone_issues.py (by Maurizio Ungaro)
- 2026-05-29 c5f35ae - Add milestone issue updater for release notes (by Maurizio Ungaro)
- 2026-05-29 16064ed - Add analyzer y-vs-x CLI tests and v0.3.0 notes (by Maurizio Ungaro)
- 2026-05-28 6d57ad0 - readme (by Maurizio Ungaro)
- 2026-05-28 098638a - added PyPI reference (by Maurizio Ungaro)
- 2026-05-28 ad4f826 - added environment necessary for publish (by Maurizio Ungaro)
- 2026-05-28 d87041f - preparing for v0.2.0 release (by Maurizio Ungaro)
- 2026-05-28 a466705 - added documents and workflow skips on documents (by Maurizio Ungaro)
- 2026-05-28 820051f - do not run workflow on README changers and better examples thumbnails (by Maurizio Ungaro)
- 2026-05-28 c986f08 - Update GEMC license coverage to 2026 (by Maurizio Ungaro)
- 2026-05-28 78fddbc - added proper license (by Maurizio Ungaro)
- 2026-05-28 0ebaa61 - updated README (by Maurizio Ungaro)
- 2026-05-27 f383d62 - rename job (by Maurizio Ungaro)
- 2026-05-27 b2587f4 - renamed ci (by Maurizio Ungaro)
- 2026-05-27 31ad73c - was triggering wrong workflow (by Maurizio Ungaro)
- 2026-05-27 c90ec9e - added trigger to deploy and suppress vtk warning in run_geometry (by Maurizio Ungaro)
- 2026-05-23 7036074 - pre-install hatchling in venv to avoid isolated-build PyPI fetch (by Maurizio Ungaro)
- 2026-05-23 e34074c - relese notes for tagged version (by Maurizio Ungaro)
- 2026-05-23 e837925 - using pygemc venv during installation (by Maurizio Ungaro)
v0.2.0
pygemc v0.2.0 prepares the Python API for standalone package distribution, improves documentation, and tightens CI/release integration with GEMC.
Release notes
This release keeps the core geometry and analyzer APIs from v0.1.0 and focuses on making pygemc easier to install, document, test, and release independently from the main GEMC source tree.
Packaging and installation
- Prepared
pygemcfor stable PyPI publishing with Hatch /hatch-vcspackaging. - Added stable-tag version detection restricted to
vX.Y.Ztags, so the movingdevtag does not affect package versions. - Added the GEMC Software License to the package and configured packaging metadata to use
LICENSE.md. - Updated package author contact to
ungaro@jlab.org. - Documented virtual-environment based installation using
python -m pip. - Documented stable PyPI installation:
python -m pip install pygemcpython -m pip install "pygemc[root]"
- Documented development snapshot installation from GitHub:
python -m pip install "pygemc @ git+https://github.com/gemc/pygemc.git@dev"
- Documented editable local-clone development installs:
python -m pip install -e ".[dev]"python -m pip install -e ".[dev,root]"
Release workflow
- Added a nightly GitHub-only
devprerelease workflow. - Added generated development release notes in
releases/dev.md. - Added
ci/update-devmd.shto build dev release notes from commits since a fixed date. - Added a manual
publish_pypi.ymlworkflow for stable tagged releases only. - Kept development releases off PyPI; the moving
devrelease is installable from GitHub. - Added support for publishing to TestPyPI before publishing to PyPI.
Documentation
- Rewrote the README with a full project overview, feature list, installation paths, quickstart, geometry API example, command-line tools, analyzer usage, tests, project layout, documentation links, contribution notes, and license information.
- Added CI, Python, PyPI, license, and documentation badges.
- Added a PyVista visualization gallery with linked thumbnails for B1, B2, Materials, and Simple Flux examples.
- Linked gallery thumbnails to hosted VTK.js scenes generated from
.vtkszfiles. - Clarified that GitHub README files cannot embed
.vtkszscenes inline.
Governance and project metadata
- Added
CODE_OF_CONDUCT.md. - Added
CONTRIBUTING.mdwith a fork-and-pull-request workflow. - Added
SECURITY.mdwith vulnerability reporting instructions. - Standardized feedback, security, and conduct contact email to
ungaro@jlab.org. - Updated the GEMC Software License coverage through 2026.
CI
- Renamed and clarified the Python test workflow.
- Added a workflow to trigger the GEMC source Docker deploy/test workflow after
pygemcchanges. - Added workflow path filters so README and governance-document changes do not trigger CI.
- Kept automated tests on Python 3.10 and 3.14.
Build-system integration
- Updated Meson subproject behavior so the parent GEMC build can install
pygemcwithout unnecessary isolated-build PyPI fetches. - Pre-installs Hatch build backends into the build-tree virtual environment used by the parent project.
Runtime and visualization fixes
- Reduced import-time cost by keeping heavy PyVista / Qt / plotting imports lazy where practical.
- Suppressed a noisy VTK warning in geometry-running workflows.
Supported platforms
- Linux
- macOS
Dependencies
- Python 3.10 or higher
- numpy, pandas, matplotlib
- vtk, pyvista, pyvistaqt, pyqt6 for visualization
- uproot and awkward for optional ROOT-file analysis via the
rootextra
Compatibility notes
- The
devGitHub release is a moving development snapshot and is not published to PyPI. - PyPI publishing is intended for stable
vX.Y.Ztags only. - The custom GEMC Software License is provided through
LICENSE.md; no OSI license classifier is declared.
v0.1.0
Initial release of pygemc — the Python API for GEMC geometry definition and output analysis.
Release notes
pygemc provides a pure-Python interface to define Geant4 detector geometries, materials, and
simulation configurations without writing C++ code. Output files produced by the gemc binary
can be read back and analysed entirely from Python.
Geometry API
GVolume— define Geant4 solids, placements, sensitive detectors, and mirrorsGMaterial— define materials by composition, density, and optical propertiesGConfiguration— configure and run a full geometry export (ASCII, SQLite)GColors— named color palette for volume visualizationautogeometry— decorator that wires a geometry function into the gemc plugin system- G4 unit converters:
convert_length,convert_angle,convert_time,convert_energy,convert_list g4_unitsmodule with the complete Geant4 unit table- PyVista-based 3D visualization (
pyvista_api) - SVG and HTML solid previews
Output formats
- ASCII flat-file geometry database
- SQLite geometry database
Analyzer
GemcOutput— read and inspect gemc simulation outputread_output— convenience loader for multiple output formatsplot_variable— quick histogram/scatter plots from simulation datagemc-analyzerCLI entry point
CLI tools
gemc-system-template— scaffold a new detector system from a Geant4 solid template
Tests
test_cli.py— CLI smoke tests for all supported solid typestest_geometry.py— geometry creation and database export for ASCII and SQLite formats
CI
- GitHub Actions workflow with automated install and test on push
Supported platforms
- Linux (amd64 and arm64)
- macOS
Dependencies
- Python 3.10 or higher
- numpy, pandas, matplotlib, pyyaml (installed automatically)
- vtk, pyvista, pyvistaqt, pyqt6 (visualization, installed at deploy time)