Skip to main content
Documentation Status

gprMax

Getting Started

What is gprMax?

gprMax is open-source computational electromagnetics software that solves Maxwell’s equations using the finite-difference time-domain (FDTD) method. It supports two- and three-dimensional models through both a Python API and a text-based input-file interface.

The software originated in research on the forward problem of ground-penetrating radar in the 1990s. Antonis Giannopoulos created the original gprMax code and established its numerical foundations; this work is documented in his 1997 D.Phil. thesis. Ground Penetrating Radar (GPR) remains an important application and gives gprMax its name.

Craig Warren led the creation of the open-source Python and Cython codebase that became gprMax version 3, building on his doctoral research. Iraklis Giannakis contributed major original developments in dispersive-material modelling, fractal media and realistic GPR models through his doctoral research on realistic GPR modelling. Together with Antonis Giannopoulos, they described this generation in the 2016 Computer Physics Communications paper.

The subgridding lineage of gprMax includes the early ADI-FDTD research of Nectaria Diamanti. This work influenced the subsequent doctoral research of John Hartley, through which version 4 was initiated and the current FDTD subgridding and dispersive-interface averaging capabilities were developed. Nathan Mannall subsequently carried out a major architectural refactoring and developed the MPI domain-decomposition solver. Qifeng Shen developed the FDFD eigenmode solver, wave-port and impedance-boundary capabilities, and has led the expansion of antenna and RF modelling. Accelerator backends, testing infrastructure, geometry importers, toolboxes, antenna models and documentation also reflect substantial work by the wider gprMax community and Google Summer of Code contributors. The full authors and contributors record describes these contributions in more detail.

After nearly three decades of development, the current version 4 codebase extends substantially beyond the capabilities described in the 2016 paper. Although GPR remains a core application, gprMax is now a general-purpose research platform for time-domain computational electromagnetics. Applications also include antenna and microwave modelling, electromagnetic scattering and radar cross section, bioelectromagnetics and dosimetry, and radiometry. A range of established and recent methods from the published literature complement gprMax’s original formulations and existing core functionality. Some of the key features include:

  • geometrical modelling with dielectric smoothing, semantic object tags, imported voxel geometries, fractal media and locally refined subgrids;

  • conductive, anisotropic, magnetic and multipole dispersive materials, with reusable material databases and dispersive interface averaging;

  • dipole, voltage, transmission-line, magnetic-frill, plane-wave, rational network and FDFD eigenmode-port excitation;

  • port quantities and multi-case studies, S-parameters, impedance, antenna gain and directivity, radar cross section, near- and far-field transforms, SAR and radiometric absorbed-power outputs; and

  • shared-memory CPU execution, NVIDIA CUDA, OpenCL, Apple Metal and MPI domain decomposition, with common model-building and output interfaces.

gprMax is currently released under the GNU General Public License v3 or higher.

gprMax is principally written in Python 3 with performance-critical parts written in Cython. It includes accelerators for CPU using OpenMP, CPU/GPU using OpenCL, GPU using NVIDIA CUDA, and GPU using Apple Metal on macOS with M-series chips. Additionally, MPI support (using mpi4py) enables larger scale (multi-node) simulations. There is more information about the different acceleration approaches in the performance section of the documentation.

Using gprMax? Cite us

If you use gprMax and publish your work we would be grateful if you could cite our work using:

  • Warren, C., Giannopoulos, A., & Giannakis I. (2016). gprMax: Open source software to simulate electromagnetic wave propagation for Ground Penetrating Radar, Computer Physics Communications (http://dx.doi.org/10.1016/j.cpc.2016.08.020)

For further information on referencing gprMax visit the Publications section of our website.

Repository overview

gprMax/
    .github/
    docs/
    examples/
    gprMax/
        toolboxes/
    images_shared/
    packaging/
    reframe_tests/
    testing/
    tests/
    CITATION.cff
    CODE_OF_CONDUCT.md
    conda_env.yml
    CONTRIBUTING.md
    AUTHORS.rst
    LICENSE
    MANIFEST.in
    pyproject.toml
    README.rst
    requirements.txt
    build_config.py
    packaging_config.py
    setup.py
  • .github/ contains the continuous-integration workflows that test the supported operating systems, build binary wheels and source distributions, and run the automated test suites.

  • docs/ contains the source for the HTML and PDF versions of the User Guide. It uses reStructuredText and Sphinx, and is published by Read the Docs.

  • examples/ contains user-facing input files and Python API models grouped by application. These examples are also distributed as package resources so they remain available to users who install a binary wheel.

  • gprMax/ is the main Python package. It contains model construction, material and source definitions, CPU and accelerator solvers, MPI domain decomposition, subgridding, FDFD eigenmode ports, near-to-far-field transforms, antenna and port processing, SAR and radiometry outputs, and the compiled Cython kernels used by performance-critical operations.

  • images_shared/ stores figures shared by the README and User Guide.

  • packaging/ contains platform-specific helpers used to produce portable binary distributions, including the macOS OpenMP build support.

  • reframe_tests/ contains whole-model and HPC regression tests built with ReFrame. The supplied machine configuration and numerical references currently target ARCHER2; other systems can provide their own configuration and reference data.

  • testing/ is the manually run scientific evidence archive. It separates analytical validation, comparisons with other numerical codes, backend consistency studies, larger regression campaigns, experimental work, and performance benchmarks.

  • tests/ is the automated pytest suite, containing focused unit tests, compact integration tests, platform tests and tests that require real accelerator hardware.

  • gprMax/toolboxes/ contains user-facing processing, conversion, visualisation, antenna-model and waveform-modelling tools. Toolboxes and their compact examples are included in source and binary distributions.

  • CITATION.cff is a plain text file with human- and machine-readable citation information for gprMax.

  • conda_env.yml defines the recommended Conda development environment. MPI runtimes and accelerator bindings remain optional and are installed for the hardware and workflow being used.

  • CONTRIBUTING.md is a guide to contributing to gprMax.

  • AUTHORS.rst records the people and organisations that have created, developed, contributed to, and supported gprMax.

  • LICENSE contains information on the GNU General Public License v3 or higher.

  • MANIFEST.in consists of commands, one per line, instructing setuptools to add or remove files from the source distribution.

  • pyproject.toml contains build-system requirements and configuration for pytest, source formatting, and cross-platform binary-wheel builds.

  • README.rst contains getting started information on installation, usage, and new features/changes.

  • requirements.txt lists the common source-development and test dependencies that can be installed with pip. Optional MPI and accelerator dependencies are selected through package extras.

  • build_config.py provides the portable compiler and OpenMP configuration used for local source builds and binary wheels.

  • packaging_config.py defines which packages, examples, toolboxes and data files are included in installed distributions.

  • setup.py defines the setuptools package metadata and Cython extension modules, using the shared build and packaging configuration above.

Installation

Conda environments and coexistence with v3

Conda is useful for source development, testing and managing native libraries, but it is not a gprMax requirement. It can also provide an isolated environment for an ordinary PyPI installation. Choose Conda instead of the venv route; there is no need to nest them for normal use.

To run a released v4 with Conda, create a new environment:

$ conda create --name gprMax-v4 python=3.12 pip
$ conda activate gprMax-v4
$ python -m pip install gprMax
$ python -m gprMax --help

This uses Conda for Python and pip for gprMax; it does not need the repository’s larger development environment. In a new terminal, activate gprMax-v4 before running models. Alternatively, select the environment for one command:

$ conda run --no-capture-output -n gprMax-v4 python -m gprMax model.in

Use conda deactivate when finished with an activated Conda environment. See Conda environment management and conda run.

gprMax-v4 is the default environment name for both released-package and source installations: it identifies the major version, not a Git branch. Choose one installation route; do not run both environment-creation commands for the same name. If you need a wheel installation and an editable checkout side by side, give the second environment a distinct name with --name (for example, gprMax-v4-source) and activate that name instead.

Keeping v3 and v4 side by side

Keep the old environment and, for an editable installation, its source checkout. Do not rename, delete or update that checkout to v4: the v3 environment may import directly from it. Use a separate checkout for v4 development and separate working/output directories for comparisons.

If the original v3 environment is named gprMax, select versions with:

$ conda activate gprMax-v4
$ python -m gprMax model_v4.in
$ conda activate gprMax
$ python -m gprMax model_v3.in

Replace gprMax with the actual old environment name. There is no machine-wide “default gprMax” that permanently wins: the selected interpreter and its import paths determine the version. Both versions use the package name gprMax. Do not install v4 or apply the v4 conda_env.yml to the old environment if you want v3 to remain available; avoid using Conda’s base environment for either project.

For a one-time coexistence check, run this outside both source checkouts:

$ python -c "import sys, gprMax; print(sys.executable); print(gprMax.__version__); print(gprMax.__file__)"

Installing v4 does not itself convert v3 inputs or results. Read the v3-to-v4 migration guide before comparing them.

Installing from source

Build from source when developing gprMax, modifying its Cython extensions, or using a platform for which no wheel is published. The supplied conda_env.yml is development-focused: it includes notebooks, tests and optional geometry/visualisation packages such as pythonocc-core and PyVista. It is larger than the dependencies of a core PyPI installation and is not needed merely to run a released wheel. On HPC systems, use your site’s compiler/MPI modules and consult the HPC guide.

Use a separate source checkout and environment, as below. The source-build steps are:

  1. Install a C compiler which supports OpenMP

  2. [Optional] Install MPI

  3. Install Python, required Python packages, and get the gprMax source code from GitHub

  4. [Optional] Build h5py against Parallel HDF5

  5. [Optional] Install mpi4py_fft

  6. Build and install gprMax

1. Install a C compiler which supports OpenMP

Linux
  • Install GCC and the corresponding development tools using your distribution’s package manager, or load the compiler module on an HPC system. They may already be available; check gcc --version.

macOS
  • Install the Xcode command-line tools, which provide Apple Clang, and install the OpenMP runtime using Homebrew:

  $ xcode-select --install
  $ brew install libomp

gprMax detects ``libomp`` from Homebrew, the active Python environment, or
``GPRMAX_LIBOMP_PREFIX``. The previous Homebrew GCC requirement is no longer
necessary.
Microsoft Windows
  • Download and install Microsoft Build Tools for Visual Studio 2022 (direct link). You can also find it on the Microsoft Visual Studio downloads page by scrolling down to the ‘All Downloads’ section, clicking the disclosure triangle by ‘Tools for Visual Studio 2022’, then clicking the download button next to ‘Build Tools for Visual Studio 2022’. When installing, choose the ‘Desktop development with C++’ Workload and select only ‘MSVC v143’ and ‘Windows 10 SDK’ or ‘Windows 11 SDK options.

  • Use an x64 Native Tools Command Prompt for Visual Studio, then activate the chosen Python environment there. The compiler needs its headers and libraries as well as its executable; adding a guessed compiler directory to PATH is not sufficient. See the Microsoft compiler-environment instructions.

Alternatively, use the Windows Subsystem for Linux and follow the Linux instructions. That is a separate Linux Python installation, not the Windows one.

2. [Optional] Install MPI

MPI is required only for domain decomposition and task farming. Ordinary serial, OpenMP, CUDA, OpenCL, and Metal simulations do not require an MPI runtime or the mpi4py Python package. The mpi4py binding is installed through the gprMax mpi extra in step 6.

If you plan to use MPI and are running gprMax on an HPC system, a suitable MPI implementation will likely be installed already. Otherwise you will need to install one yourself.

Linux/macOS
  • It is recommended to use OpenMPI.

Microsoft Windows
  • It is recommended to use Microsoft MPI. Download and install both the .exe and .msi files.

3. Install Python, the required Python packages, and get the gprMax source

Install Conda if it is not already available, and install Git. There is no need to replace an existing Conda installation or make its Python the system-wide default. The Python in Conda’s base environment can differ from Python 3.12 in the development environment.

The following commands select the devel branch for v4 development, not a pinned release. To build a published release instead, check out that release’s tag in the new checkout before creating its environment. Use a new directory and environment name; do not reuse your v3 checkout or environment:

$ git clone --branch devel https://github.com/gprMax/gprMax.git gprMax-v4-src
$ cd gprMax-v4-src
$ conda env create -f conda_env.yml
$ conda activate gprMax-v4

The YAML file defaults to gprMax-v4. This step installs development dependencies, not gprMax itself; step 6 builds and installs the checkout. MPI and accelerator bindings remain optional. If gprMax-v4 already exists, keep it and choose a different name with --name rather than overwriting it.

For a non-Conda source environment, create and activate a venv using the earlier instructions, then run python -m pip install -r requirements.txt from the checkout for the common development/test dependencies. Optional CAD, MPI and accelerator libraries still need their own installation instructions. For a minimal source installation, step 6 installs the declared package dependencies and isolated build requirements without that development list.

4. [Optional] Build h5py against Parallel HDF5

If you plan to use parallel HDF5 output with the MPI domain decomposition functionality available in gprMax, h5py must be built with MPI support.

Install with conda

h5py can be installed with MPI support in a conda environment with:

$ conda install -c conda-forge "h5py>=2.9=mpi*"
Install with pip

For a pip-managed environment on Linux/macOS, install a compatible parallel HDF5 library and h5py’s dependencies first, then build with mpicc and HDF5_MPI. If serial h5py is already installed, an ordinary pip install can report it as already satisfied instead of rebuilding it:

$ CC=mpicc HDF5_MPI=ON python -m pip install --force-reinstall --no-deps --no-cache-dir --no-binary=h5py h5py

--no-deps leaves the already prepared runtime dependencies unchanged. For a Conda-managed h5py installation, prefer the Conda route above rather than replacing its files with pip. Verify MPI support in the selected Python:

$ python -c "import h5py; print(h5py.get_config().mpi)"

Further guidance on building h5py against a parallel build of HDF5 is available in the h5py documentation.

5. [Optional] Install mpi4py_fft

If you plan to use the MPI domain decomposition functionality with fractal user objects, you need to install mpi4py_fft.

Python 3.12 is recommended for this optional configuration. mpi4py_fft contains Python-version-specific compiled extensions and also requires a compatible MPI implementation and FFTW installation, so it is more sensitive to the local software stack than the core gprMax package.

Install FFTW

FFTW is a required dependency of mpi4py_fft, however, if you are running gprMax on a HPC system, FFTW may be available already - consult your site’s documentation. Otherwise you will need to install it yourself.

Linux
  • It is possible binaries are available via your package manager. E.g. libfftw3-dev on Ubuntu.

  • Otherwise you can find the latest source code on the fftw downloads page. There are instructions to build from source in the fftw docs.

macOS
$ brew install fftw
Microsoft Windows
  • While FFTW can be installed on Windows (guidance here), it is not possible to build mpi4py_fft using the MSVC compiler.

  • Therefore, we recommend using Windows Subsystem for Linux and then following the Linux install instructions for gprMax.

Install with conda

mpi4py_fft can be installed in a conda environment with:

$ conda install -c conda-forge mpi4py_fft
Install with pip

mpi4py_fft can be installed using pip with:

$ python -m pip install mpi4py_fft

6. Build and install gprMax

Stay in the top-level gprMax-v4-src checkout (the directory containing setup.py and pyproject.toml), with gprMax-v4 or your chosen source-build environment active:

$ python -m pip install -e .

The . means this checkout, and -e makes the installation editable. Python changes are read from these files; changes to compiled Cython code require rebuilding with the same command. Do not delete or move the checkout while using its editable installation. For a non-editable source install, use python -m pip install . instead.

Release and ordinary source builds use portable instruction sets. Developers making a private build for the current host can opt into machine-specific optimisation on Linux or macOS:

$ GPRMAX_BUILD_NATIVE=1 python -m pip install -e .

Do not redistribute a native build: it may contain instructions unavailable on another processor. Published binary wheels never enable this option. Two extension modules are compiled concurrently by default; constrained systems can set GPRMAX_BUILD_JOBS=1, while release builders may select a larger positive value.

For MPI domain decomposition or task farming, install the MPI extra instead:

$ python -m pip install -e ".[mpi]"

For distributed fractal generation, use the combined extra:

$ python -m pip install -e ".[mpi-fractals]"

The mpi-fractals extra includes both mpi4py and mpi4py-fft. If a core source installation is already built, MPI support can be added without recompiling gprMax by installing the system MPI runtime and then running python -m pip install mpi4py (plus mpi4py-fft for distributed fractals). A compatible system MPI runtime is still required; the Python extra does not install or configure that runtime.

Accelerator bindings are also optional and can be installed independently:

$ python -m pip install -e ".[cuda]"       # NVIDIA CUDA; Linux/Windows
$ python -m pip install -e ".[opencl]"     # OpenCL
$ python -m pip install -e ".[metal]"      # Apple Metal; macOS

These editable targets refer to the current checkout. In contrast, python -m pip install "gprMax[cuda]" selects the published distribution; do not substitute that command when you mean to use your edited source.

Several extras can be requested together, for example .[cuda,opencl]. The .[accelerators] convenience extra requests every accelerator binding applicable to the current operating system. It is not the default because package installers cannot detect whether a compatible device, driver, CUDA toolkit, or OpenCL runtime is present, and building an unavailable binding can prevent installation. The backend-specific system software described in the accelerator documentation is still required.

The interactive Marimo dashboards have their own optional dependencies:

$ python -m pip install -e ".[marimo]"

See the Marimo toolbox documentation for the available A-scan, B-scan, progress, and introductory processing dashboards.

You are now ready to proceed to running gprMax.

Running gprMax

gprMax is designed as a Python package, i.e. a namespace which can contain multiple packages and modules, much like a directory.

Open a terminal and select the Python where gprMax is installed. If using an environment, activate it or explicitly select its interpreter; a direct installation into a user-managed Python needs no activation. Run models from your own working directory; a wheel installation does not require a repository checkout. Source users can also work from the repository root for the version they intend to run. The $ below represents a shell prompt, not a required environment name; do not type it.

Using the installed toolboxes

Toolboxes are included under the gprMax.toolboxes namespace, so they do not compete with an unrelated Python package called toolboxes. Run a toolbox from your working directory, for example:

python -m gprMax.toolboxes.Plotting.plot_Ascan model.h5
python -m gprMax.toolboxes.Plotting.plot_port model.h5 --list-ports

Python model scripts import the same namespace:

from gprMax.toolboxes.GPRAntennaModels.GSSI import antenna_like_GSSI_1500

To locate toolbox-specific examples, MATLAB utilities or other bundled files:

python -c "from importlib.resources import files; print(files('gprMax.toolboxes'))"

Copy files you want to edit into your own workspace; do not modify the installed package. The example-copy command below copies the main model examples, not all toolbox folders. Some specialist toolboxes need additional optional dependencies, and large reference datasets may remain in the source repository; consult the selected toolbox’s documentation.

Existing scripts must change toolboxes.<name> to gprMax.toolboxes.<name> in imports and python -m commands. No top-level toolboxes compatibility package is installed, because that would retain the naming conflict. An isolated environment is recommended when upgrading an older development installation that installed the former namespace.

Examples from a wheel installation

Binary wheel installations also contain the examples that match the installed gprMax version. Copy them from the installed package into a writable workspace with:

$ python -m gprMax.examples list
$ python -m gprMax.examples copy ~/gprMax-v4-examples
$ cd ~/gprMax-v4-examples

The destination contains the normal examples/ hierarchy, so the same commands work for wheel and source installations. An existing example tree is not overwritten unless --force is supplied.

Basic usage of gprMax is:

$ python -m gprMax path_to/name_of_input_file

For example to run one of the test models:

$ python -m gprMax examples/gpr/basic/cylinder_Ascan_2D.in

To use Apple Metal GPU acceleration on macOS:

$ python -m gprMax examples/gpr/basic/cylinder_Ascan_2D.in -metal

When the simulation is complete you can plot the A-scan using:

$ python -m gprMax.toolboxes.Plotting.plot_Ascan examples/gpr/basic/cylinder_Ascan_2D.h5

Your results should be like those from the A-scan from the metal cylinder example in introductory/basic 2D models section

When finished, use deactivate for an activated venv or conda deactivate for Conda. No deactivation is needed when you selected the interpreter directly without activating an environment.

Optional command line arguments

Argument name

Type

Description

-o or -outputfile

string

File path to save the output data.

-n

integer

Number of required simulation runs. This option can be used to run a series of models, e.g. to create a B-scan with 60 traces: $ python -m gprMax examples/gpr/basic/cylinder_Bscan_2D.in -n 60

-i

integer

Model number to start/restart the simulation from. It would typically be used to restart a series of models from a specific model number, with the n argument, e.g. to restart from A-scan 45 when creating a B-scan with 60 traces.

-t or --taskfarm

flag

Flag to use Message Passing Interface (MPI) taskfarm. This option is most usefully combined with -n to allow individual models to be farmed out using a MPI taskfarm, e.g. to create a B-scan with 60 traces and use MPI to farm out each trace: $ python -m gprMax examples/gpr/basic/cylinder_Bscan_2D.in -n 60 --taskfarm. For further details see the MPI task-farm section of the User Guide

--mpi

list

Flag to use Message Passing Interface (MPI) to divide the model between MPI ranks. Three integers should be provided to define the number of MPI processes (min 1) in the x, y, and z dimensions.

-gpu

list/bool

Flag to use NVIDIA GPU or list of NVIDIA GPU device ID(s) for specific GPU card(s), e.g. -gpu 0 1

-opencl

list/bool

Flag to use OpenCL or list of OpenCL device ID(s) for specific compute device(s).

-metal

list/bool

Flag to use Apple Metal GPU or list of Metal device ID(s) for specific compute device(s) (macOS with M-series chips).

-cpu_precision

string

Precision for the CPU solver: single (default) or double. This option is ignored when a GPU solver is used. Sub-gridding always uses double precision regardless of this setting.

-gpu_precision

string

Precision for the CUDA, OpenCL, or Metal solver: single (default) or double. Apple Metal currently supports single precision only. This option is ignored when the CPU solver or sub-gridding is used.

--geometry-only

flag

Build a model and produce any geometry views but do not run the simulation, e.g. to check the geometry of a model is correct: $ python -m gprMax examples/gpr/materials/heterogeneous_soil.in --geometry-only

--geometry-fixed

flag

Run a series of models where the geometry does not change between models, e.g. a B-scan where only the position of simple sources and receivers, moved using #src_steps and #rx_steps, changes between models.

--write-processed

flag

Write another input file after any Python blocks and include commands in the original input file have been processed. Useful for checking that any Python blocks are being correctly processed into gprMax commands.

--show-progress-bars

flag

Forces progress bars to be displayed - by default, progress bars are displayed when the log level is info (20) or less.

--hide-progress-bars

flag

Forces progress bars to be hidden - by default, progress bars are hidden when the log level is greater than info (20).

--log-level

integer

Level of logging to use, see the Python logging module.

--log-file

flag

Write logging information to file.

--log-all-ranks

flag

Write logging information from all MPI ranks. Default behaviour only provides log output from rank 0. When used with --log-file, each rank will write to an individual file.

-h or --help

flag

Used to get help on command line options.

Updating gprMax

Updating a released v4 installation

Select the environment you intend to update, then use pip. No Git checkout or manual uninstallation is needed:

$ python -m pip install --upgrade "gprMax>=4,<5"

The version range keeps an existing v4 project on the v4 release series. An unversioned pip install gprMax may report an existing installation as already satisfied; it is not an explicit upgrade request. For reproducible work, record or pin the exact version and retain representative reference outputs before updating. This command updates the selected environment, not every installation on the machine.

For v3-to-v4 migration, create a separate environment first as described in Keeping v3 and v4 side by side. Do not use this upgrade command inside the old v3 environment if you want to retain that installation.

Updating a source-development installation

Preserve or commit your local edits before switching branches/tags or pulling changes. In the separate v4 checkout, select the desired revision, activate its development environment, then rebuild with python -m pip install -e .. Do not use a PyPI upgrade command to update an editable checkout.

If the revision changes dependencies, recreate a development environment from its YAML file under a new name, for example:

$ conda env create --name gprMax-v4-next --file conda_env.yml
$ conda activate gprMax-v4-next
$ python -m pip install -e .

Reinstall any selected optional bindings. Install Conda-managed dependencies before the final pip installation; repeated Conda/pip changes in place can leave inconsistent dependency sets. Do not apply this YAML file to a v3 environment or to Conda’s base. The environment name is only a selector: an editable install still follows the source files in its checkout.

Thanks to our contributors

The complete and current contributor history is available in the GitHub contributor graph.

Metadata

Release files for gprMax 4.0.1

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

Source distribution (sdist)

Source distribution for gprMax 4.0.1
File Size Uploaded
gprmax-4.0.1.tar.gz 14.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for gprMax 4.0.1
File
gprmax-4.0.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gprmax-4.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
gprmax-4.0.1-cp313-cp313-macosx_11_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 11.0+ x86-64 Details
gprmax-4.0.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
gprmax-4.0.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gprmax-4.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
gprmax-4.0.1-cp312-cp312-macosx_11_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 11.0+ x86-64 Details
gprmax-4.0.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
gprmax-4.0.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gprmax-4.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
gprmax-4.0.1-cp311-cp311-macosx_11_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 11.0+ x86-64 Details
gprmax-4.0.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 221.7 MB

Release files / gprmax-4.0.1.tar.gz

Download URL gprmax-4.0.1.tar.gz
Size 14.3 MB
Tags Source
SHA-256 checksum
How to use checksums
4a8b97f5b60be10f6b1009c2a583a049b4883df88f5c18776cef5b00794952a4
BLAKE2b-256 checksum
How to use checksums
6e0f778b47d5c6967cc9709c31b4310743960b5f46365c6c5a164d6034c802d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp313-cp313-win_amd64.whl

Download URL gprmax-4.0.1-cp313-cp313-win_amd64.whl
Size 11.2 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6cb0dcddab2131f45006a0b22b560f11b9d8e16e12029b5912feaf531c772895
BLAKE2b-256 checksum
How to use checksums
ff82c1436bca261b37d770d0c5f18256a3bd4bb195b8f1d02cb00d5071be97ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL gprmax-4.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 33.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
901896568ff5e3083be872199ddba851da3adedaedc05b57d02449c076692974
BLAKE2b-256 checksum
How to use checksums
2895e463ec37806e9d471236db212dbdbe97870348e8f264ddc9dc5836c71e39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp313-cp313-macosx_11_0_x86_64.whl

Download URL gprmax-4.0.1-cp313-cp313-macosx_11_0_x86_64.whl
Size 12.6 MB
Tags CPython 3.13 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
782eb380c452f25b8cb036362c5b555d2b669bd60127b4c32d4eb637fb00c3c4
BLAKE2b-256 checksum
How to use checksums
af7965451613559bd164a2c6cf8910bc183d42f302a991390376ca53963a64c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL gprmax-4.0.1-cp313-cp313-macosx_11_0_arm64.whl
Size 12.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ddaaa2bef55af614caeffc81797c68ac46c2ce034696fcfbae0e34f4693a8577
BLAKE2b-256 checksum
How to use checksums
a3f2b36ab667e7b784404f7374f0968101470da5af24692ebb9dda65946e5b67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp312-cp312-win_amd64.whl

Download URL gprmax-4.0.1-cp312-cp312-win_amd64.whl
Size 11.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4059ec1e94c88e0f3b1f949ccf0e0c116a8e95c693717caa726d02106ced7035
BLAKE2b-256 checksum
How to use checksums
235f8e66c51aafb7169827c5b954cc13ae57afa9b6c2282dbbdedfbe5aa409a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL gprmax-4.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 33.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
458607246fe571cc9c847d00090f3cd207ad0d249d14aca181e5b7325135506f
BLAKE2b-256 checksum
How to use checksums
f6acd276e3a817259c99802a6d5d372c405a199f777a120b90121d95674667d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp312-cp312-macosx_11_0_x86_64.whl

Download URL gprmax-4.0.1-cp312-cp312-macosx_11_0_x86_64.whl
Size 12.4 MB
Tags CPython 3.12 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
d0cb4444a07c2f78c49b558a316de25d9a3a99fb99c5cd48131ef4c8a13bb884
BLAKE2b-256 checksum
How to use checksums
8973758bdce3c0b29c5d78ba76c7fac8fd4cf26f531aaf4013ec2e2240ddc1b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL gprmax-4.0.1-cp312-cp312-macosx_11_0_arm64.whl
Size 12.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f72b3b84edc3b73686d72446484f5a5cb4272e10f9a78aab91ab78f8ec3a8334
BLAKE2b-256 checksum
How to use checksums
0118a7001fe7797ef0f16b779a169e8cde65bc9f06c29d3009f1370cc10858e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp311-cp311-win_amd64.whl

Download URL gprmax-4.0.1-cp311-cp311-win_amd64.whl
Size 11.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
35a0b0db2bf76e9fb88b6cca3a03ea4930dfa360bfa50a9fe6252dabca0e3017
BLAKE2b-256 checksum
How to use checksums
c84ab5fbd8a120af43e017e6b49215d227c0cd5250dd105136cce7ae2198d52e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL gprmax-4.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 32.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7491242b5d8212f321dc1fb53a9f5c004130aeaa1f74920e2fe76037a1d988de
BLAKE2b-256 checksum
How to use checksums
0c49ce430a163f587ce0a2d86b517e968939985467d59dddd9c1e04ddaea2927
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp311-cp311-macosx_11_0_x86_64.whl

Download URL gprmax-4.0.1-cp311-cp311-macosx_11_0_x86_64.whl
Size 12.6 MB
Tags CPython 3.11 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
dfd00434ee57d2188ebf5f37c0e13cfdd311daa243a4baef1d54a4ba20f702a3
BLAKE2b-256 checksum
How to use checksums
1327f6842f707b8afadcb48d12a5c5bac3506c14f6cc41404e06a99a590e1e13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / gprmax-4.0.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL gprmax-4.0.1-cp311-cp311-macosx_11_0_arm64.whl
Size 12.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f7a4b11b24ed6509a9cff6a0b854e43e1e06638f39dea551340e37a341315b66
BLAKE2b-256 checksum
How to use checksums
a2a4d1800eb607494a5291a7148c1ee0fc9806132fb60c7a2a61ab7a19b3bbe4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

4.0.1 This release

13 release files

4.0.0

13 release files

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