Skip to main content

Nebula Space Toolkit (nstk) for space systems engineering and analysis.

Project description

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

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

nstk-0.1.1.tar.gz (13.3 MB view details)

Uploaded Source

Built Distribution

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

nstk-0.1.1-py3-none-any.whl (438.9 kB view details)

Uploaded Python 3

File details

Details for the file nstk-0.1.1.tar.gz.

File metadata

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

File hashes

Hashes for nstk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7e2e0ca3b0df558b9150b37dd17b77ff9b09c96442804ec0adf14990d1bfa69c
MD5 43563e7bbfc0db584e2542d5ad32dad4
BLAKE2b-256 5f345e91b04243cc8e977b2645a34ac58eee96ee3c6e4bd5d4068b6d1a9c2cb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for nstk-0.1.1.tar.gz:

Publisher: python-publish.yml on Nebula-Space-Systems/Nebula-Systems-Toolkit

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

File details

Details for the file nstk-0.1.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for nstk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 35b89d5294928db9f9c1f630e9a16c57d9b4a231c6f12aa0c3535eae3e3224b9
MD5 0ebaf4c9647ef84e6e820f1502482dbe
BLAKE2b-256 690ec85161bb3f77895da1bcde852d9ac0f4996f72f918e0f3e4b5d1ddca275c

See more details on using hashes here.

Provenance

The following attestation bundles were made for nstk-0.1.1-py3-none-any.whl:

Publisher: python-publish.yml on Nebula-Space-Systems/Nebula-Systems-Toolkit

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