Skip to main content

Run GMAT mission scripts from Python and get results as pandas DataFrames.

Project description

gmat-run

CI Docs PyPI Python versions License: MIT

Run GMAT mission scripts from Python and get results as pandas DataFrames.

What this is

A thin, Pythonic wrapper around NASA GMAT's own gmatpy runtime. You bring a working .script; gmat-run loads it, lets you override fields from Python, runs the mission headlessly, and returns ReportFile / ephemeris / ContactLocator output as pandas DataFrames.

What this is not

  • Not a way to build GMAT missions from scratch in Python — see gmatpyplus for that.
  • Not a .script text generator — see pygmat.
  • Not a parallel sweep runner — that's a future astro-tools project (gmat-sweep) built on top.

Requirements

  • Python 3.10, 3.11, or 3.12.
  • A local GMAT install. gmat-run does not ship GMAT binaries — install GMAT separately from gmat.gsfc.nasa.gov.

Supported GMAT versions

GMAT release Status CI
R2026a Primary development target Exercised on every PR (Ubuntu + Windows + macOS, Python 3.10/3.11/3.12)
R2025a Supported Exercised on every PR (Ubuntu + Windows + macOS, Python 3.10/3.11/3.12)
R2024a Expected to work Not exercised in CI
R2023a Expected to work Not exercised in CI
R2022a Expected to work Not exercised in CI (Python 3.9 ABI floor; see known limitations)

Report any version-specific breakage as an issue and we'll add a CI cell for it.

Installation

pip install gmat-run

Optional extras unlock format- and feature-specific code paths. Each is named after the dependency it pulls in:

Extra Pulls in Unlocks
[spiceypy] spiceypy SPK (NASA SPICE binary) ephemeris parsing.
[ccsds-ndm] ccsds-ndm CCSDS-OEM export via Results.write_oem.
[astropy] astropy Leap-second-correct time-scale conversion via gmat_run.time.

Install one or more at once:

pip install gmat-run[spiceypy]
pip install gmat-run[astropy,ccsds-ndm]

Quick start

Load a script, override a field, run the mission, and read each output GMAT wrote as a pandas DataFrame:

from gmat_run import Mission

mission = Mission.load("flyby.script")
mission["Sat.SMA"] = 7000
result = mission.run()

# ReportFile → DataFrame, with UTCGregorian / *ModJulian epoch columns
# promoted to datetime64[ns].
result.reports["ReportFile1"].plot(x="UTCGregorian", y="Sat.Earth.Altitude")

# EphemerisFile → DataFrame, dispatching on file format.
ephem = result.ephemerides["EphemerisFile1"]

# ContactLocator → DataFrame; df.attrs["report_format"] carries the variant.
contacts = result.contacts["ContactLocator1"]

Mission.load discovers a local GMAT install (honouring the GMAT_ROOT environment variable or a gmat_root= argument), bootstraps gmatpy, and parses the script into the live GMAT object graph. Subscript access reads and writes fields against that graph with type coercion. mission.run() executes the mission sequence headlessly, captures GMAT's log, and returns a Results exposing three lazy mappings — reports, ephemerides, and contacts — each keyed by the GMAT resource name and parsing to a DataFrame on first access. See Outputs below for the formats covered.

A gmat-run console script is also installed for shell-script and smoke-test use:

gmat-run run flyby.script --out results/

See the CLI reference for flags, exit codes, and sample output.

Outputs

Results exposes three mappings, each keyed by the GMAT resource name as declared in the .script:

  • ReportFile → DataFrame, with UTCGregorian and *ModJulian epoch columns promoted to datetime64[ns].
  • EphemerisFile → DataFrame, dispatching on file format: CCSDS-OEM and STK-TimePosVel are read out of the box; SPK (NASA SPICE binary) is read with the [spiceypy] extra installed. Code-500 (GSFC binary) is not implemented — see Known limitations.
  • ContactLocator → DataFrame, supporting Legacy and the five tabular ReportFormat variants. df.attrs["report_format"] carries the variant name so downstream code can branch on it without inspecting the column set.

Documentation

Full docs at https://astro-tools.github.io/gmat-run/, including a getting-started guide, GMAT install instructions, a Run gmat-run in your CI cookbook page, the CLI reference, and the API reference.

Runnable example notebooks:

  • Load / run / plot — load a stock GMAT sample, run it, and plot altitude over time end-to-end.
  • Parameter sweep — vary Sat.SMA across a range, run the same script for each, and overlay the resulting orbits.
  • Ground track — read an EphemerisFile from Results.ephemerides and plot the spacecraft's ground track on a Cartopy world map.
  • Export to CCSDS-OEM — run a stock GMAT sample that emits an STK ephemeris, convert it to a CCSDS-OEM file with Results.write_oem, re-parse the result, and visualise the trajectory in 3D.
  • Time-scale conversion — propagate across the 2017-01-01 leap-second boundary and convert the resulting ReportFile's epoch columns between A1, TAI, UTC, TT, and TDB with gmat_run.time and the parser-level convert_to= keyword.

Development

To work on gmat-run itself:

git clone https://github.com/astro-tools/gmat-run.git
cd gmat-run
uv sync --all-groups

See CONTRIBUTING.md for the full branch / PR / test workflow.

Licence

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmat_run-0.4.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gmat_run-0.4.0-py3-none-any.whl (82.0 kB view details)

Uploaded Python 3

File details

Details for the file gmat_run-0.4.0.tar.gz.

File metadata

  • Download URL: gmat_run-0.4.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gmat_run-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a07fd4e669c89907d210b1b69ef712ced828e142798ce16191e5059eda2ef7d8
MD5 4e80bce0c0d090e7cbde652b686c23e5
BLAKE2b-256 0769f3007f8e2632bd4c4ace5302d04e970253d1fb1fdb41cba40e889fad5f2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_run-0.4.0.tar.gz:

Publisher: release.yml on astro-tools/gmat-run

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gmat_run-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: gmat_run-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 82.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gmat_run-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bb1bf7498a3c2ca7c16a6a99696fb6b29ae458ce757610692ddb9b20c00dc079
MD5 eea5174f7e9edaae91ef980cb7184b8c
BLAKE2b-256 163104f13f99bc5bf73cb06e0619cd99979abbb6460752b8aa9eedf91e1f1f21

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_run-0.4.0-py3-none-any.whl:

Publisher: release.yml on astro-tools/gmat-run

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page