Skip to main content

Satellitic

A collection of tools for satellite assessments

License PyPI Downloads

Take note that while this package aims to introduce simulation methods many of the derived statistical properties does not require full simulations. The reason is that satellite movements are well modelled by assuming that they are ergodic. Thus time averages are equal to ensemble averages.

Install

Install the package using :

pip install satellitic

Example

In order to create a similar image as this: text

place the content of this projects data folder in you run root and execute the below code

from satellitic.init import ALL_CELESTRAK_GROUPS,PREFERRED_BANDS
import satellitic.simulation as satsim

out = satsim.run_snapshot_simulation(
            out_dir="sim_20251212_dev",
            groups=ALL_CELESTRAK_GROUPS,	# CELESTRAK_GROUPS,
            local_tle_file="tle_local.txt", 	# LOCAL_TLE_FALLBACK,
            N_target=10000,               	# set to 35000 for full-scale runs (ensure resources)
            grid_nlat=120,
            grid_nlon=240,
            model="multibeam",
            n_beams_per_sat=7,
            beam_half_angle_deg=0.8,
            beam_pattern="hex",
            beam_max_tilt_deg=10.0,
            beam_gain_model="gaussian",
            gain_threshold=0.25,
            frequency_band="E-band",
            preferred_bands=PREFERRED_BANDS,
            chunk_sat=256,
            chunk_ground=20000,
            use_gpu_if_available=False,   # set True if you installed cupy
            compute_power_map = False,
            do_random_sampling = True,
        )
print("Simulation finished. Outputs:", out)

import pandas as pd
tdf = pd.concat( ( pd.read_csv(out['total_csv']),	pd.read_csv(out['pref_csv']), pd.read_csv(out['cofreq_csv']),	pd.read_csv(out['nvis_csv'])) )
print ( tdf .describe() )

Forcing qt5 in VisPy

>>> from vispy import app
... print(app.use_app('pyqt5', True))  # force PyQt5

To view an orbital simulation

Note that the streaming 3D vispy visualisation cannot handle huge amounts of satellites. Test with a small tle file and then offload to the trajectory file

>>> from satellitic.simulation import newtonian_simulator
ImportSuccess: HAS JAX IN ENVIRONMENT
>>> newtonian_simulator( run_parameters  = { 'dt':5e1,
            'Nsteps':None ,
            'steps_per_frame':100 ,
            'mass_epsilon':None ,
            'mass_rule':None } ,
    satellite_topology  = {'Earth':'data/local_small_tle.txt'} )

To write a trajectory file you can specify

>>> newtonian_simulator( run_parameters  = { 'dt':5e1,
            'Nsteps':None ,
            'steps_per_frame':100 ,
            'mass_epsilon':None ,
            'mass_rule':None } ,
    satellite_topology  = {'Earth':'data/local_small_tle.txt'} ,
    bAnimated = True , bWriteTrajectory = True,
    trajectory_filename = "trajectory.trj", bVerbose = False )

Creating a TLE file from default system definitions

If you have access to the SRS database then this method will create TLE:s from it:

    from satellitic.constellation import SRSDatabase, get_active_constellations, build_unique_satellite_rows, generate_tle_file_from_srs_df

    path_ = "Data/Satellit/SRS/srs3048/"

    mdb_files = [
        path_ + "srs3048_part1of4.mdb",
        path_ + "srs3048_part2of4.mdb",
        path_ + "srs3048_part3of4.mdb",
        path_ + "srs3048_part4of4.mdb",
    ]

    db = SRSDatabase(mdb_files)
    db .show_table("geo")
    db .show_table("orbit_set")

    df = get_active_constellations(db)
    df = build_unique_satellite_rows( df )

    generate_tle_file_from_srs_df( df , filename="srs3048.tle" )

Running a non-visual GPU chunked simulation using dictionary defined satellites

A viable dictionary can be supplied to the below defined function satellite topology (instead of a tle file name). The dictionaries of the systems as defined in the ITU defintions are already included as defaults:

from satellitic.constants import systems_5Cs142dE
if __name__=='__main__':
    selection		= ['A','B','D']
    systems = { s_:systems_5Cs142dE[s_] for s_ in selection }
    print ( systems )

These can be directly supplied to simulator functions:

from satellitic.simulator import jax_chunked_simulator
jax_chunked_simulator( \
    run_parameters = { 'dt':5e-1,
            'Nframes': 20000 ,
            'steps_per_frame':100 ,
            'write positions'  : True  ,
            'write velocities' : False ,
            'write masses'     : False } ,
    satellite_topology  = { 'Earth':systems } ,
    bWriteTrajectory = True, trajectory_filename = None ,
    bVerbose = True )

Release files for satellitic 0.1.30

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

Source distribution (sdist)

Source distribution for satellitic 0.1.30
File Size Uploaded
satellitic-0.1.30.tar.gz 3.6 MB Details

Built distribution (wheel)

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

Total release size: 3.7 MB

Release files / satellitic-0.1.30.tar.gz

Download URL satellitic-0.1.30.tar.gz
Size 3.6 MB
Tags Source
SHA-256 checksum
How to use checksums
6959f4412d55069fe2455f5a1f3a9bf855ff502df2a15a292655ed458aa1e326
BLAKE2b-256 checksum
How to use checksums
cfa81d7f05bbd7e75a5a16aaacd1bd607810c08d3ff7d26c540fc554e86e707a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.12

Release files / satellitic-0.1.30-py3-none-any.whl

Download URL satellitic-0.1.30-py3-none-any.whl
Size 94.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7c2fbcf505df87ad03b581c1b4c405e0aa28a633fa1338c169560515089526ae
BLAKE2b-256 checksum
How to use checksums
88d51581793f7079a8e70d66bf133484a691c3b49b856926b9bd01f49345046a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.1.30 This release

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.23

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.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