Skip to main content

Nebula Space Toolkit

nstk is the Python package for Nebula Space Toolkit, a library for space systems engineering and analysis. It is designed for users who need reusable building blocks for orbit propagation, coordinate transforms, geometry, coverage analysis, localization workflows, and mission-oriented plotting.

What NSTK Provides

  • Orbit construction and propagation interfaces built around Orekit
  • Coordinate and frame transforms for common astrodynamics workflows
  • Coverage and access analysis utilities
  • Line-of-sight, terrain, and other geometric analysis tools
  • Localization and measurement helpers for angle, time-difference, and frequency-difference studies
  • 2D and 3D plotting tools for orbits and geospatial views

Package Layout

The top-level package is organized into the following modules:

  • nstk.propagation: orbit creation, propagation, and Walker constellations
  • nstk.transforms: geodetic, ECEF, ENU, AER, and timed frame transforms
  • nstk.geometry: line-of-sight, terrain, raster-mask, and sun-position tools
  • nstk.coverage: interval and fixed-step coverage analysis
  • nstk.localization: measurement models and localization helpers
  • nstk.plotting: basemaps and orbit visualization
  • nstk.time_utils: shared Orekit and Astropy time conversion helpers

Installation

Install the base package with:

pip install nstk

The base install includes the core package plus the offline data dependency nstk-data.

Optional extras are available for heavier workflows:

pip install "nstk[propagation]"
pip install "nstk[plotting]"
pip install "nstk[all]"

Extras are intended for:

  • propagation: Orekit-backed propagation and timed frame operations
  • plotting: Cartopy and related geospatial plotting support
  • all: all optional dependencies used by the project

Installing From Source

For local development, install from the repository root:

python -m pip install -e .

To include optional features during development:

python -m pip install -e ".[propagation]"
python -m pip install -e ".[plotting]"
python -m pip install -e ".[all]"

If Orekit-backed features later report that nstk-data is missing, install it into the same environment as nstk and your Jupyter kernel:

python -m pip install nstk-data

Data and Runtime Behavior

Nebula Space Toolkit uses the separate nstk-data package for bundled Orekit and Cartopy assets. This keeps the code package smaller and allows data updates to be managed independently.

Orekit-backed features initialize lazily on first use. Most users do not need to do anything beyond installing the appropriate extra.

If you want one simple top-level setup call for Orekit plus NSTK's bundled offline Cartopy assets, initialize the runtime once near the top of your script or notebook:

import nstk

nstk.initialize()

For fully offline-friendly workflows, disable Astropy IERS downloads and relax its IERS age checks through the same entry point:

import nstk

nstk.initialize(offline=True)

If you want to use custom data directories instead of the bundled nstk-data package, pass them explicitly:

import nstk

nstk.initialize(
    orekit_data_path="/path/to/orekit-data",
    cartopy_data_path="/path/to/cartopy-data",
)

For Orekit-only advanced workflows, the lower-level helpers nstk.initialize_orekit(...) and nstk.set_orekit_data_path(...) remain available.

Minimal Example

The example below shows a simple Orekit-backed orbit workflow:

import nstk
nstk.initialize()

from astropy.time import Time
from nstk.propagation import Orbit, build_two_body_propagator

propagator = build_two_body_propagator(
    epoch=Time("2026-01-01T00:00:00", scale="utc"),
    a=7000e3,
    e=0.001,
    i=0.9,
    raan=0.1,
    argp=0.2,
    anomaly=0.3,
    anomaly_type="mean",
    inertial_frame="gcrf",
)
orbit = Orbit(propagator)

position_m = orbit.get_position(0.0, frame="gcrf")
print(position_m)

This example requires the propagation extra.

Orbit Attitude Defaults

NSTK orbit propagators default to attitude="vvlh", which is implemented as Orekit LofOffset(native_frame, LOFType.VVLH). This is a reasonable default for a general Earth-observing satellite because it keeps the spacecraft body in a local orbital, nadir-pointing attitude law.

Supported local-orbital attitude names include:

  • vvlh and lvlh_ccsds for the CCSDS-style local orbital frame family
  • lvlh and qsw for Orekit's STK/Vallado-style LVLH family
  • tnw, ntw, vnc, eqw, enu, and ned for other built-in Orekit local orbital frames

You can also pass an Orekit LOFType, a prebuilt Orekit AttitudeProvider, or one of NSTK's attitude-provider helpers through attitude_provider= on a propagator factory, and later swap the installed provider with Orbit.set_attitude_provider(...).

Examples

Additional usage examples are provided in the examples/ directory, including:

  • orbit usage
  • orbit attitude configuration
  • transforms
  • Walker constellations
  • interval coverage

Project Identity

  • Brand name: Nebula Space Toolkit
  • PyPI package: nstk
  • Python import: import nstk

Attribution

NSTK is a part of Nebula Space Systems

Metadata

Release files for nstk 0.1.3

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

Source distribution (sdist)

Source distribution for nstk 0.1.3
File Size Uploaded
nstk-0.1.3.tar.gz 13.3 MB Details

Built distribution (wheel)

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

Total release size: 13.8 MB

Release files / nstk-0.1.3.tar.gz

Download URL nstk-0.1.3.tar.gz
Size 13.3 MB
Tags Source
SHA-256 checksum
How to use checksums
f6cefb05d159ac8825966475670f9d647d1d3c104e7ba70a06fc693a6e65a8f3
BLAKE2b-256 checksum
How to use checksums
27c0b3efaa9877bfd641df1b00b67ddaf711fa16b7ec634f33d41df9b357e4d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 13, 2026.

Transparency log

Release files / nstk-0.1.3-py3-none-any.whl

Download URL nstk-0.1.3-py3-none-any.whl
Size 444.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1741d86f930d82ddb5f423ab0b7766d338d436a877a553308e2f39d7f6c22764
BLAKE2b-256 checksum
How to use checksums
b2818a88929e6aa3088b8586c75469d5094720522510605cd0df0f22b0cd6247
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.1

2 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