Skip to main content

spice-kernel-db

CI

Browse, get, and manage SPICE kernels and metakernels across NASA and ESA mission archives.

⚠️ CRITICAL: Update to v0.10.0 or later. Versions before 0.10.0 contained a fuzzy filename matching bug that could silently create symlinks between completely different SPICE kernel files, causing silent scientific data corruption — SPICE loads valid but wrong data with no errors. All users who used spice-kernel-db get or spice-kernel-db update are affected, regardless of the dedup setting — the symlink creation code did not honor the per-mission dedup flag (also fixed in 0.10.0). Users who only used scan and resolve are not affected. After updating, remove all symlinks in your kernel directories and re-run spice-kernel-db update. See CHANGELOG.md for recovery steps.

What this tool does

  1. Mission setup: Configure missions from NASA NAIF or ESA SPICE servers with an interactive dialog.

  2. Browse & get: Browse available metakernels for a mission, then get one — the tool downloads all missing kernels automatically and makes the metakernel ready to use locally.

  3. Metakernel rewriting: Rewrites .tm files for local use with minimal edits — only PATH_VALUES is changed, everything else stays identical to the original. A symlink tree bridges the gap between where the metakernel expects files and where they actually live on disk.

  4. Deduplication (optional): Identifies identical kernel files across missions using SHA-256 hashing and replaces duplicates with symlinks. Per-mission opt-in — you can deduplicate some missions while keeping others untouched.

Documentation

Full documentation is at michaelaye.github.io/spice-kernel-db and built with Quarto.

Installation

pip install spice-kernel-db

Or with conda:

conda install -c michaelaye spice-kernel-db

Or from source:

git clone https://github.com/michaelaye/spice-kernel-db
cd spice-kernel-db
pip install -e ".[dev]"

Quick start

Set up a mission

spice-kernel-db mission add

Interactive dialog: choose a server (NASA NAIF / ESA SPICE) → pick a mission from the list → configure deduplication preference.

Browse available metakernels

spice-kernel-db browse JUICE

Shows all .tm files in the mission's remote mk/ directory, grouped by base name with version counts.

Get a metakernel

spice-kernel-db get juice_ops.tm

Downloads the metakernel, checks which kernels you already have, downloads the missing ones in parallel, and creates symlinks so the .tm file works immediately.

Use with spiceypy

import spiceypy as spice
from spice_kernel_db import KernelDB

db = KernelDB()
mks = db.list_metakernels(mission="JUICE")
spice.furnsh(mks[0]["mk_path"])

Python API

from spice_kernel_db import KernelDB

db = KernelDB()

# Browse remote metakernels
db.browse_remote_metakernels(
    "https://naif.jpl.nasa.gov/pub/naif/JUICE/kernels/mk/",
    mission="JUICE",
)

# Get a metakernel (downloads missing kernels automatically)
db.get_metakernel(
    "https://naif.jpl.nasa.gov/pub/naif/JUICE/kernels/mk/juice_ops.tm",
    mission="JUICE",
)

# Optionally deduplicate across missions
db.deduplicate_with_symlinks(dry_run=True)   # preview
db.deduplicate_with_symlinks(dry_run=False)  # execute

Supported servers

Server URL
NASA NAIF https://naif.jpl.nasa.gov/pub/naif/
ESA SPICE https://spiftp.esac.esa.int/data/SPICE/

Both use the same <server>/<MISSION>/kernels/mk/ directory structure.

Dependencies

License

MIT

Metadata

Release files for spice-kernel-db 0.19.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 spice-kernel-db 0.19.1
File Size Uploaded
spice_kernel_db-0.19.1.tar.gz 173.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spice-kernel-db 0.19.1
File Interpreter ABI Platform
spice_kernel_db-0.19.1-py3-none-any.whl Python 3 none any Details

Total release size: 244.8 kB

Release files / spice_kernel_db-0.19.1.tar.gz

Download URL spice_kernel_db-0.19.1.tar.gz
Size 173.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e431c87a762573295ab9b2d8f37f14d72f1cad0a699934187067d37e8da9eb40
BLAKE2b-256 checksum
How to use checksums
ee3dc4f0ca40c59c7f528fee80fd9d66049774b7eb5cabdc2081c1bd61bee6df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / spice_kernel_db-0.19.1-py3-none-any.whl

Download URL spice_kernel_db-0.19.1-py3-none-any.whl
Size 71.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5746d0bf815a87770dbb21ea1bec6c07226f0932480b4c1b795b077405cb6841
BLAKE2b-256 checksum
How to use checksums
5792767aa3fa37a56b542d9caaa9d46b1e947c3e2695617e323ac562b3880684
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release history Release notifications | RSS feed

0.20.1

2 release files

0.20.0

2 release files

This release

0.19.1 This release

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.4

2 release files

0.13.3

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

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