क्षण — Sanskrit for the precise instant, the smallest measure of time.
Open, reproducible PNT-resilience simulation with published quantum-sensor performance models.
Kshana is an open, reproducible PNT-resilience simulator with quantum-sensor
performance models — positioning, navigation, and timing. This package is a thin
PyO3 (abi3) wrapper over the same Rust engine: you pass a scenario
TOML string in and get a reproducible JSON result back. It quantifies, in hard numbers,
what quantum clocks, quantum inertial sensors, and optical time-transfer buy a
navigation system over classical PNT. Every result is reproducible from
scenario + seed + engine version, and every sensor parameter is traceable to a
published source.
Validated, not asserted. 666/666 AIAA SGP4 vectors to 4.12 mm · Cowell force model 0.08 m vs Orekit 12.2 · Galileo 0.61 m / Swarm-A 0.10 m vs real ESA precise ephemerides · GCRS→ITRS bit-for-bit vs SOFA/ERFA · ML metrics exact vs scikit-learn · 64 of 168 capabilities validated against independent external oracles; 100 honestly labelled Modelled, 4 partner-owned.
Validated against external oracles — every row CI-gated
Each row is checked against an independent external oracle (real dataset, independent reference implementation, or published reference vectors) and re-checked in CI.
| Capability | Result | External oracle | |
|---|---|---|---|
| ✅ | SGP4/SDP4 propagation | 666/666 vectors, worst 4.12 mm | AIAA 2006-6753 (Vallado) + independent sgp4 crate |
| ✅ | Numerical Cowell force model | 0.08 m / 24 h, 275 epochs | Orekit 12.2 DormandPrince853 (CS GROUP) |
| ✅ | Orbit fit vs precise ephemeris | Galileo 0.61 m · Swarm-A 0.10 m | ESA/ESOC SP3 precise orbits |
| ✅ | GCRS→ITRS frame chain | bit-for-bit vs SOFA; ≤ 0.86 m vs SPICE | ERFA/SOFA + ANISE (pure-Rust SPICE) |
| ✅ | Allan deviations | reproduce reference deviations | NIST SP 1065 + Stable32 on a real Cs clock |
| ✅ | GNSS DOP · ML detector metrics | to 1e-6 · to 1e-9 | gnss_lib_py · scikit-learn |
Install
pip install kshana
Wheels are built for Linux, macOS, and Windows on each release tag. To build from
source instead, use maturin: pip install maturin && maturin develop --features python.
Usage
import json, kshana
result = json.loads(kshana.run(open("clock-holdover.toml").read()))
print(result["quantum"]["fom"]["integrity"])
# JSON, SVG chart, and a one-line summary at once:
result_json, chart_svg, summary = kshana.run_full(open("orbit-gnss-challenged.toml").read())
print(kshana.version(), summary)
Beyond run / run_full / version, the module exposes run_typed (a structured
result object), validate_toml (lint → list of error strings), list_kinds /
scenario_kinds (the dispatchable kinds), and error_kind (the KshanaError tag for
a rejected scenario) — see
docs/PYTHON_API.md.
Every figure of merit is labelled validated or modelled; optical-clock figures are space goals on ground hardware (no strontium optical clock has flown). Maturity is not uniform across domains — Earth PNT is real-data validated; deep-space / Mars navigation is simulation-validated; real-mission deep-space OD is on the roadmap.
Learn more
- Full README & validation matrix → https://github.com/AshfordeOU/kshana
- Live playground (runs in your browser as WebAssembly) → https://kshana.dev
- Python API → docs/PYTHON_API.md
- Capabilities → docs/CAPABILITY.md
- Validation & provenance → docs/VALIDATION.md · docs/PROVENANCE.md
Licence
Free and open source under the GNU AGPL-3.0-only. A commercial licence is available from Ashforde OÜ for proprietary/closed integration — see LICENSING.md. Professionally developed and maintained by Ashforde OÜ; commercial support, integration, and proprietary extensions available.
Metadata
Release files for kshana 0.27.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kshana-0.27.0.tar.gz | 7.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| kshana-0.27.0-cp39-abi3-win_arm64.whl | CPython 3.9 | abi3 | Windows ARM64 | Details |
| kshana-0.27.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| kshana-0.27.0-cp39-abi3-manylinux_2_28_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| kshana-0.27.0-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| kshana-0.27.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
| kshana-0.27.0-cp39-abi3-macosx_10_12_x86_64.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 22.9 MB
Release files / kshana-0.27.0.tar.gz
| Download URL | kshana-0.27.0.tar.gz |
|---|---|
| Size | 7.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3191b60668db7332584c38b32a42e0a796c35927c846996a7e2eaa45227a6ac7
|
|
BLAKE2b-256 checksum How to use checksums |
3d80435a17bd4435f48ef7e99f94cb6ac9221cfbe0723e7d98bc97a7aa829bed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / kshana-0.27.0-cp39-abi3-win_arm64.whl
| Download URL | kshana-0.27.0-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
337cf9fe7478b73953afef1c26ae9fa8aa54037b0bca1263b31ff846ba46411a
|
|
BLAKE2b-256 checksum How to use checksums |
fc21d1703310ffc3e5e14e1585ee31aed4b64c4cbb3b41ab3ed39398b00e3dc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / kshana-0.27.0-cp39-abi3-win_amd64.whl
| Download URL | kshana-0.27.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f35fed742fe9f3e4c44ed9b9f02ee65bd6704ef8ad2262bbf7992fb79937fe4e
|
|
BLAKE2b-256 checksum How to use checksums |
791d5256d18e975b7337e6883a244bdbd76ab280774b7dcc1bf0e27340272491
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / kshana-0.27.0-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | kshana-0.27.0-cp39-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fadb8b445adc39728791f9bb35b8ab47ba8725db3aa541d2c2f6e7a963ca6948
|
|
BLAKE2b-256 checksum How to use checksums |
ad743ae48afe8cfe54221b3af7880b1b25fc2fc4c4628d4ecd43d4c4eeb33c69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / kshana-0.27.0-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | kshana-0.27.0-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
dea8d3c81210353e983580a358c1448484ccc85608702466459c37d76cec627e
|
|
BLAKE2b-256 checksum How to use checksums |
26ba1fabe2aa9a07575aeeb94c00f3527e67148509c653b384d9be90c39e1cfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / kshana-0.27.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | kshana-0.27.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6a1b1ac60c024f20c16d8bdb5acaa502f55643cae4cdcdd71ef6714b04e272da
|
|
BLAKE2b-256 checksum How to use checksums |
e688f0011f20865609aaf9169083002fc4b9210efb78d044b32fa5e37a5d2254
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / kshana-0.27.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | kshana-0.27.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
920b687bcd678efb7ecee4786ede2e70385dcfa50ed1c68539c03d097e96b13d
|
|
BLAKE2b-256 checksum How to use checksums |
f22c31b93f9892daf7abd602515d063c9123ec6455b6db3e11fe5cd252e6c244
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|