Skip to main content

quicksat

CircleCI codecov

A first-pass satellite sizing tool, in two parts:

  • Sizing works out the mass, data, delta-V and attitude agility budgets. Each budget is a table, worked out from a few input files and a reference orbit.
  • Scenario and power flies the satellite through a timeline of activities on a real orbit, and checks the power: what the solar panels generate, what the equipment draws, and the battery between them. A 3D viewer shows the run.

The two parts share no input files. The budgets use a reference orbit, while the scenario needs a real orbit, with an epoch and a node. quicksat is kept simple on purpose. It gives a first-pass sizing, not a full systems engineering environment.

The viewer with the power sample: the orbit, the body, the current data, the ground track, the timeline, the net power and the battery

The power sample in the viewer, during the downlink to Svalbard. The wings have turned to face the sun.

Install

pip install quicksat

Then copy the samples into a folder of your own. They come from GitHub, for the version you installed, with their data, their notebooks, and the viewers and editor pages written from them:

python -m quicksat init my_satellite

The folder holds sizing/, scenario/ and power/. Where this page says sample/, read my_satellite/. The notebooks need Jupyter, such as pip install jupyterlab.

To work on quicksat itself, clone the repository, and install it from there:

conda env create -f environment.yml
conda activate quicksat
pip install -e .

Sizing

The sizing sample is a small Earth observation satellite on a 500 km sun-synchronous orbit. Its files are in sample/sizing/data/. The workflow:

  1. Edit the files. Double-click sample/sizing/editor/editor.html to open the Sizing Editor in your browser. Its Setup tab takes you through every file, step by step, and the other tabs edit one budget each. Save the files, as a zip or one by one, and put them back in sample/sizing/data/. The files are YAML and CSV, with units written out, such as 750 g or 800 Mbit/s, so they can be edited by hand too.
  2. Run the notebooks in sample/sizing/, in the order below. Each reads the files and builds its budget. Delta-V and agility also read the mass budget.
  3. Read the tables. Each notebook ends with its budget laid out as a document, and the figures that answer the usual questions.
Budget What it gives Sample Reference
Mission The reference orbit and the design life, which every budget shares mission
Mass Dry and wet mass, by location, subsystem and owner, with two layers of margin mass mass
Data Data made against data sent down each day, and the memory needed between passes data data
Delta-V Delta-V by phase and type, and the propellant it needs delta-V delta-V
Agility Slew times about roll and pitch, from the wheels and the inertia, with a wheel failed or not roll, pitch agility
Radiator Not yet specified

The sample works one satellite through each budget. The reference explains each input field, how each figure is worked out, and where the budget stops. For your own satellite, see how to initialise a satellite. How to edit and run the sizing files goes round the loop in the Sizing Editor.

Scenario and power, with the viewer

The power sample flies a 510 km sun-synchronous orbit for three orbits, with imaging, a downlink to Svalbard, and wings that turn to the sun. Its files are in sample/power/data/: the scenario, the 3D model, the power system and the consumption table. The workflow:

  1. Edit the files. Double-click sample/power/editor/editor.html to open the editor in your browser. Its Setup tab takes you through every file, step by step, with an explanation of each choice. The other tabs edit the same data by theme, and a side panel shows the 3D model. Change something, such as the battery's capacity or an activity's trigger. Then save the files, as a zip or one by one, and put them back in sample/power/data/.
  2. Run the budget. Run sample/power/power_budget.ipynb in Jupyter, or python -m quicksat.power sample/power/data sample/power/output from the command line. Either flies the scenario, works out the generation, the loads and the battery, and checks the budget.
  3. Read the results. The notebook shows each orbit's energy, the battery's charge, and three checks. The command prints the checks only. In the sample, the lowest charge is 83.6%, above its 70% limit, and every orbit has at least 16.5 W h to spare.
  4. See the run in the viewer. Both write sample/power/output/power_viewer.html. Double-click it to see the run in 3D, with the ground track, the timeline, the power and the attitude. Its Attitude tab also gives the attitude as files for other tools.

Or skip the copy and the run. python -m quicksat.editor serve sample/power/data sample/power/output starts the editor's server, on your computer only, and opens the editor in your browser. Its Create the viewer button, in the Files tab, runs the files as they are on the page and writes the viewer. Open the viewer then shows it. The server does not change the files in the folder: save them when you want to keep them. See how to edit, run and view a scenario.

The editor's Articulations step, with the wing +y selected and turned in the 3D panel

The editor's Articulations step. The selected wing shows in the 3D panel, turned with the slider.

The viewer's Power tab: the timeline, the power generated and consumed, the battery's charge, the current power and the power setup

The viewer's Power tab. The power and the battery's charge follow the timeline, with the power setup beside them.

The scenario sample works the same way, for the timeline alone: sample/scenario/editor/editor.html, then sample/scenario/scenario.ipynb or python -m quicksat.scenario sample/scenario/data sample/scenario/output, then sample/scenario/output/scenario_viewer.html.

Part What it gives Sample Reference
Scenario The timeline on a real orbit: eclipses, attitudes, slews and ground passes, checked against each activity's needs scenario scenario
Power generation Each solar panel's power, with the wings that turn and the model's own shadows generation generation
Power consumption What the equipment draws in each mode consumption consumption
Power budget The battery's charge through the run, and whether each orbit has energy to spare budget budget

How to edit, run and view a scenario goes round this loop in full, for the samples or a folder of your own. For what each field means, see how to set up and run a scenario and how to set up and run a power budget.

The editors open with the files of the folder that their page was written for. Open a folder…, on the first Setup step, reads any other folder, and Open on a tab reads one file. Or write a page for a folder of your own. A folder with a scenario.yaml gets the Scenario Editor, and a folder of sizing files gets the Sizing Editor:

python -m quicksat.editor sample/power/data sample/power/editor

Keep your notes in comments fields. Every block of a file can hold one, and so can the file as a whole, in the sizing files too. The editors write their own help as # lines, and replace any other # comments when they save. When an editor opens a file with such comments, it lists them, and moves each one you choose into a comments field. Write a # comment on the lines above what it describes, so that it goes to the right block.

Documentation

The documentation follows the Diátaxis split. The samples are tutorials, the guides show how to do one task, and the references explain how each part works. The notebooks, their data and the tests are grouped in three domains: sizing, scenario and power. Each set of notebooks reads its own copy of the inputs, so a change to a sample cannot change a figure in a reference.

Two documents cover the project as a whole:

  • decisions.md records the decisions that shaped quicksat, and why each was made.
  • conventions.md holds the rules for the code and the notebooks: units, constants and tests. Read it before changing the code.

License

GPL-3.0-or-later. See LICENSE.md.

Metadata

Release files for quicksat 0.1.0

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

Source distribution (sdist)

Source distribution for quicksat 0.1.0
File Size Uploaded
quicksat-0.1.0.tar.gz 535.9 kB Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / quicksat-0.1.0.tar.gz

Download URL quicksat-0.1.0.tar.gz
Size 535.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a46b055dbd8d9daf42d36501f52dff79332beb88941de79163432d4d755a81f1
BLAKE2b-256 checksum
How to use checksums
e74671943f2ed6dcd8c7183f900b2250b0b18bfc1c8affc82b91c7f7a18292e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / quicksat-0.1.0-py3-none-any.whl

Download URL quicksat-0.1.0-py3-none-any.whl
Size 581.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9b6ecc54989659d2860cf5fa9a7f33dec64ca855c9b018001168b9a434bab30a
BLAKE2b-256 checksum
How to use checksums
9486a3ec26d1b2f958ec8b95a0dc8f9defd42e396f8310e4577313a55e89fbac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.0 This release

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