Skip to main content

GraxPy

graxpy is an independent Python package for one-dimensional X-ray diffraction-grating simulations. Its public Python import is grax.

grax provides two selectable electromagnetic solver paths:

  • modal rigorous coupled-wave analysis (RCWA), inspired by RETICOLO v9;
  • the Nevière differential method.

Both solvers support the same grating, material, and workflow APIs. They share the Fourier/discretization infrastructure and differ in how they propagate the fields through a layer.

Documentation

Full user and API documentation is available at graxpy.readthedocs.io.

For local docs builds from this repository, use:

tools/build_docs.sh --html

Installation

graxpy supports Python 3.12 and 3.13 only.

python -m pip install graxpy

graxpy now supports local Henke-table material lookup for elemental string names such as "Si" and "Pt", with optional density overrides through grax.MaterialSpec. Existing DataFrame optical-constants inputs still work, and xrt-compatible material objects remain supported for now but emit a deprecation warning.

PyPI project page: https://pypi.org/project/graxpy/

For local editable installs:

python -m pip install -e .

Select a solver

RCWA is the default, so existing code continues to use it. Pass solver to choose the Nevière differential method instead:

import grax

grating = grax.LaminarGrating(
    period_lpermm=400,
    width_to_period_ratio=0.67,
    depth_nm=14.9,
    substrate_material="Si",
    layer_material="Pt",
    layer_thickness_nm=28.77,
)

common = dict(
    grating=grating,
    energy_ev=300.0,
    grazing_angle_deg=4.0,
    fourier_orders=30,
    polarization="p",
)

rcwa_result = grax.run_simulation(**common, solver="rcwa")
neviere_result = grax.run_simulation(**common, solver="neviere")

See the documentation's Choosing a solver tutorial and the runnable examples/simulation/neviere_solver/neviere_solver.py for guidance and integration options.

Local web app

Install the package and web extra, then start the local server.

From PyPI:

python -m pip install "graxpy[web]"
grax-web

From a local repository checkout:

python -m pip install -e ".[web]"
grax-web

The syntax graxpy.[web] is invalid. The extra must be attached directly to the package name: graxpy[web].

Then open http://127.0.0.1:5050. Use the home page to create and save gratings, then open the plot page to combine saved runs and select the diffraction orders to overlay.

grax-web now opens that local URL in your default browser automatically on startup.

Start on a different port when needed:

grax-web --port 8000

You can also override the bind address:

grax-web --host 0.0.0.0 --port 8000

When developing the web app locally, restart grax-web after changing run-state or UI logic so the browser sees the updated server behavior.

Local data is stored in .grax-web/ by default:

  • saved gratings: .grax-web/saved_gratings/
  • run results: .grax-web/runs/
  • combined plots: .grax-web/plots/
  • grating previews: .grax-web/previews/

Each saved run lives in .grax-web/runs/<run_id>/ and includes:

  • manifest.json
  • summary.csv
  • all_orders.csv
  • selected_efficiency.png

Use Plots to combine saved runs and choose which diffraction orders to overlay for each run. Use Manage runs to rename runs or bulk delete them.

Repository at a glance

  • src/grax/: core package source code
  • examples/: runnable examples
  • docs/: documentation sources

Attribution

The modal RCWA solver is inspired by RETICOLO v9. GraxPy is an independent implementation, not an official RETICOLO port or distribution; RETICOLO is not bundled with the public graxpy package.

License

Copyright (C) [2026] [Helmholtz-Berlin fur Materialen und Energie GmbH (HZB)]

Licensed under the European Union Public License (EUPL), Version 1.2.

You may not use this work except in compliance with the License.

A copy of the License is available at: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12

Metadata

Release files for graxpy 0.5.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for graxpy 0.5.7
File Size Uploaded Provenance
graxpy-0.5.7.tar.gz 2.2 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for graxpy 0.5.7
File Interpreter ABI Platform
graxpy-0.5.7-py3-none-any.whl Python 3 none any Details

Total release size: 4.5 MB

Release files / graxpy-0.5.7.tar.gz

Download URL graxpy-0.5.7.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
8828ac83c46df86e373be5d7cfb860d56b8f11e5ef94e46aaee0232cecb5e329
BLAKE2b-256 checksum
How to use checksums
aa4a7b3eb1bcb7b5715b1a090e0d1ffbae157b1cae36c9eece873703929b043d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / graxpy-0.5.7-py3-none-any.whl

Download URL graxpy-0.5.7-py3-none-any.whl
Size 2.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
74bbe3cccb39e96fa094818abb59b88ea00352fed830af5019639ebb6a6449e7
BLAKE2b-256 checksum
How to use checksums
f885440909e218a64ddbc4895dc9c1ae112f247a878d1acd6c6bca6f22b71f7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for graxpy 0.5.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page