Skip to content

Releases: gemc/pygemc

Dev Nightly

11 Jun 06:19

Choose a tag to compare

Dev Nightly Pre-release
Pre-release

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

28 May 14:45

Choose a tag to compare

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 pygemc for stable PyPI publishing with Hatch / hatch-vcs packaging.
  • Added stable-tag version detection restricted to vX.Y.Z tags, so the moving dev tag 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 pygemc
    • python -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 dev prerelease workflow.
  • Added generated development release notes in releases/dev.md.
  • Added ci/update-devmd.sh to build dev release notes from commits since a fixed date.
  • Added a manual publish_pypi.yml workflow for stable tagged releases only.
  • Kept development releases off PyPI; the moving dev release 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 .vtksz files.
  • Clarified that GitHub README files cannot embed .vtksz scenes inline.

Governance and project metadata

  • Added CODE_OF_CONDUCT.md.
  • Added CONTRIBUTING.md with a fork-and-pull-request workflow.
  • Added SECURITY.md with 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 pygemc changes.
  • 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 pygemc without 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 root extra

Compatibility notes

  • The dev GitHub release is a moving development snapshot and is not published to PyPI.
  • PyPI publishing is intended for stable vX.Y.Z tags only.
  • The custom GEMC Software License is provided through LICENSE.md; no OSI license classifier is declared.

v0.1.0

24 May 02:09

Choose a tag to compare

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 mirrors
  • GMaterial — define materials by composition, density, and optical properties
  • GConfiguration — configure and run a full geometry export (ASCII, SQLite)
  • GColors — named color palette for volume visualization
  • autogeometry — 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_units module 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 output
  • read_output — convenience loader for multiple output formats
  • plot_variable — quick histogram/scatter plots from simulation data
  • gemc-analyzer CLI 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 types
  • test_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)