Python Simulator
This folder contains a standard-library Python version of the optical link-budget simulator. It follows the same scenario, hardware, atmospheric-loss, snapshot, continuous-jitter, and outage models as the MATLAB application.
Requirements
- Python 3.10 or newer
- Tkinter, which is included with the standard Python installers from python.org
- Internet access when Live API weather is selected
No pip packages, virtual environment, MATLAB installation, or API key are required.
Run from a downloaded ZIP
- Download and extract the project ZIP.
- Open Terminal or Command Prompt in the extracted project folder.
- Run:
python3 python/run.py
On Windows, use this command if python3 is not recognized:
py python\run.py
Install from PyPI
The packaged application can be installed and launched with:
python3 -m pip install ogs-linkbudget-live
ogs-linkbudget
Features
- Downlink, uplink, and inter-satellite links
- User-selected worst-case elevation for ground-space links
- Manual weather or live Open-Meteo conditions
- Past Replay and Current Hold continuous weather timelines
- Independent transmitter and receiver jitter-profile selection
- Configured random, OLYMPUS open-loop/reference ATP, and Micius before/after-ATP jitter
- Ideal no-weather/no-jitter reference margin
- User-configurable operational outage margin with a
3 dBdefault - Dynamic margin, probability-density, and outage charts
Each continuous run creates a fresh random jitter sequence. No seed is requested from the user.
Interface
The Scenario Settings tab selects the link direction, conservative elevation, weather source, station location, simulation mode, weather timeline, and duration.
- OLYMPUS Platform PSD (Open Loop) uses
S(f) = 160/(1 + f²) µrad²/Hz, approximately15.85 µradradial RMS, at 200 Hz. - OLYMPUS After ATP (Reference Design) uses the same modeled disturbance shape calibrated to a published
0.34 µradoptical-terminal residual target. It is a design reference rather than a measured OLYMPUS closed-loop flight spectrum. - Micius Before ATP (Open Loop) reproduces its published
0–1,1–10,10–50, and50–100 Hzband RMS values, approximately9.26 µradcombined, at 250 Hz. - Micius After ATP (Measured) reproduces the published residual values in the same bands, approximately
0.48 µradcombined (0.47 µradreported full-band).
Python scenario and continuous-simulation controls.
The Hardware Configuration tab defines transmitter power, wavelength, terminal apertures, configured-random per-axis jitter, relative boresight bias, and the required operational margin. The margin defaults to 3 dB and can be configured from 0 to 30 dB. A terminal's entered jitter value is only used when Configured Random is selected.
ATP profiles contain residual tracking error after a closed-loop pointing system, whose rejection varies with frequency and controller behavior. Manual suppression instead scales every angular sample by 10^(-dB/20) and PSD power by 10^(-dB/10). Leave it at 0 dB to use an after-ATP reference by itself; a nonzero value adds hypothetical frequency-independent suppression after that residual.
Because the available OLYMPUS-based reference gives an integrated residual target rather than a closed-loop residual spectrum, its after-ATP option is equivalent here to approximately 33.4 dB of uniform suppression. The Micius after-ATP option instead uses measured band-dependent residuals and therefore changes the spectral shape.
The Jitter Models tab contains the independent Tx/Rx profile selectors and their 0–60 dB additional-suppression controls. It keeps all Configured Random, OLYMPUS, and Micius choices together. The tab’s controls are enabled only for Continuous Tracking.
Python optical hardware and pointing controls.
Continuous simulations display the randomized link-margin profile, the ideal no-weather/no-jitter reference, the configurable operational outage threshold, the 0 dB receiver-sensitivity boundary, the margin probability density, and the calculated outage rate.
Python continuous link-margin and outage analytics.
Run the tests
From the project folder:
python3 -m unittest discover -s python/tests -t python
The test suite uses local TLE data and does not require an internet connection.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ogs_linkbudget_live-3.1.0.tar.gz.
File metadata
- Download URL: ogs_linkbudget_live-3.1.0.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db8990468c7dfe74cc5b80e11c4f82d41eb4a2c9f745d8beae65ff78073e22b7
|
|
| MD5 |
0f2128f3e890ab3b880c9060d1a7b54b
|
|
| BLAKE2b-256 |
7fe70d6d8a99be6c9b3af3e218f150febd359d399b8d3a0bd273bd082270f26a
|
Provenance
The following attestation bundles were made for ogs_linkbudget_live-3.1.0.tar.gz:
Publisher:
publish-to-pypi.yml on reptide/ogs-linkbudget-live
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ogs_linkbudget_live-3.1.0.tar.gz -
Subject digest:
db8990468c7dfe74cc5b80e11c4f82d41eb4a2c9f745d8beae65ff78073e22b7 - Sigstore transparency entry: 2287544951
- Sigstore integration time:
-
Permalink:
reptide/ogs-linkbudget-live@e7a813e42bb3b15192b1bb7e1f334df080343502 -
Branch / Tag:
refs/tags/v3.1.0 - Owner: https://github.com/reptide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@e7a813e42bb3b15192b1bb7e1f334df080343502 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ogs_linkbudget_live-3.1.0-py3-none-any.whl.
File metadata
- Download URL: ogs_linkbudget_live-3.1.0-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cf56a96909bea44e04f1daeeb351c3ff8331f86a35329c2c0a12a0fc6f730a1
|
|
| MD5 |
8297a1341c73195945036df2261b6b7f
|
|
| BLAKE2b-256 |
140d24cfdbad174388c76776e240d2b324674431dffb8c70035b001b07a2776b
|
Provenance
The following attestation bundles were made for ogs_linkbudget_live-3.1.0-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on reptide/ogs-linkbudget-live
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ogs_linkbudget_live-3.1.0-py3-none-any.whl -
Subject digest:
6cf56a96909bea44e04f1daeeb351c3ff8331f86a35329c2c0a12a0fc6f730a1 - Sigstore transparency entry: 2287544967
- Sigstore integration time:
-
Permalink:
reptide/ogs-linkbudget-live@e7a813e42bb3b15192b1bb7e1f334df080343502 -
Branch / Tag:
refs/tags/v3.1.0 - Owner: https://github.com/reptide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@e7a813e42bb3b15192b1bb7e1f334df080343502 -
Trigger Event:
release
-
Statement type: