Skip to content

Introducing PySTRF: A Python Toolkit for Satellite Tracking via Radio Observations

Satellite tracking and radio frequency (RF) observations are crucial for amateur radio enthusiasts, astronomers, and satellite operators alike. Today, we’re excited to introduce PySTRF—a Python-based interpretation of the Satellite Tracking Toolkit for Radio Observations, originally developed as STRF by Cees Bassa. PySTRF brings the power, flexibility, and accessibility of Python to the world of satellite tracking.

What is PySTRF?

PySTRF is a Python translation and adaptation of the original STRF toolkit, making advanced satellite tracking and RF observation tools accessible to Python users. The project aims to empower users to:

  • Predict and track satellite positions in real time
  • Analyze Doppler shifts, signal strengths, and observation geometry
  • Automate and visualize radio observation workflows
  • Integrate with other scientific Python tools and libraries

Why PySTRF?

The original STRF toolkit is a powerful C-based solution. However, Python’s popularity in scientific computing, data analysis, and automation makes it a natural fit for expanding accessibility and interoperability. With PySTRF, users can:

  • Leverage the vast ecosystem of Python scientific libraries (NumPy, SciPy, Matplotlib, Pandas, etc.)
  • Rapidly prototype, customize, and automate tracking scripts
  • Integrate satellite tracking with data analysis and machine learning pipelines
  • Benefit from an active Python community for support and contributions

Key Features

  • TLE Parsing and Orbit Propagation: Read and process standard Two-Line Element (TLE) sets to determine satellite orbits.
  • Pass Predictions: Calculate satellite passes over a ground station, including AOS/LOS times and elevation/azimuth angles.
  • Doppler Shift Calculation: Compute frequency shifts for radio communications.
  • Integration with Python Tools: Output data for visualization and further analysis.
  • Open Source: Freely available on GitHub for the community to use and improve.

Getting Started

To get started with PySTRF:

  1. Clone the repository:
   git clone https://github.com/bgilbert1984/PySTRF.git
   cd PySTRF
  1. Install dependencies:
    PySTRF is designed to work with standard Python scientific libraries. Install requirements with:
   pip install -r requirements.txt
  1. Run example scripts:
    Explore the provided scripts and notebooks to see PySTRF in action.

Example Usage

Here’s a simple example to predict when the ISS will pass over your location:

from pystrf import tle, observer, predict

# Load TLE for the ISS
iss_tle = tle.load_tle('ISS (ZARYA)', 'tle.txt')

# Define observer location (lat, lon, altitude)
obs = observer.Observer(lat=37.7749, lon=-122.4194, alt=10)  # San Francisco

# Predict passes over the next 24 hours
passes = predict.get_passes(iss_tle, obs, hours=24)

for p in passes:
    print(f"Start: {p.aos} | End: {p.los} | Max Elevation: {p.max_elev} deg")

Contributing

PySTRF is an open-source project and welcomes contributions! If you have ideas for features, bug fixes, or documentation improvements, open an issue or submit a pull request.

Credits

  • Original STRF toolkit by Cees Bassa
  • Python conversion and enhancements by bgilbert1984
  • Community contributors

Learn More

Stay tuned for future updates, new features, and tutorials!


Happy satellite tracking!

A Python toolkit for satellite tracking typically includes libraries and tools to calculate satellite positions, predict passes, and potentially interface with hardware for tracking. Key libraries include pyEphem and Skyfield, which handle astronomical calculations, while tools like pysat and SatKit offer more specialized functionalities for data analysis and orbit propagation. [1, 1, 2, 2, 3, 3, 4, 5, 6]

Here’s a breakdown of what a Python satellite tracking toolkit typically includes:

Core Functionality:

  • Ephemeris Calculation: Libraries like pyEphem and Skyfield are used to compute the position and velocity of satellites based on orbital parameters (TLEs – Two-Line Element sets). [1, 1, 7, 7, 8, 8, 9]
  • Pass Prediction: Algorithms that determine when and where a satellite will be visible from a specific ground station. [3, 3, 7, 7, 10]
  • Ground Station Definition: Tools to input and manage information about the user’s location (latitude, longitude, altitude). [3, 3, 7, 7]
  • TLE Management: Mechanisms for downloading, parsing, and updating satellite TLE data, often from online sources. [3, 3, 7, 7]
  • Data Visualization: Libraries like Matplotlib can be used to plot satellite tracks on a map or create visualizations of orbital paths. [4, 7, 7, 11]

Advanced Features:

  • Real-time Tracking: Interfaces with hardware (e.g., antennas, telescopes) to automatically point towards a satellite and track its movement. [12, 12, 13, 13]
  • Doppler Shift Calculation: Accounting for the Doppler effect when tracking satellites, especially with radio signals. [13, 13, 14]
  • Orbit Propagation: Libraries like SatKit can propagate satellite orbits into the future, allowing for more accurate pass predictions and maneuver planning. [2, 2]
  • Data Analysis: Pysat provides a framework for analyzing satellite data, including handling different file formats and instrument types. [1, 1, 15, 15, 16, 16]
  • User Interface: Graphical user interfaces (GUIs) can be created using libraries like Tkinter or PyQt to provide an intuitive way for users to interact with the tracking tools. [7, 7, 17, 18]
  • Integration with other tools: Potential for integrating with other Python libraries for tasks like weather data processing (for atmospheric effects) or machine learning (for more advanced tracking). [19, 19, 20, 20]

Example Tools and Libraries:

  • pyEphem: A popular library for astronomical calculations, including satellite tracking, according to a Reddit post. [8, 8, 21, 21]
  • Skyfield: A more modern alternative to pyEphem, offering improved performance and accuracy. [7, 7, 8, 8]
  • pysat: A toolkit for satellite data analysis, providing a consistent interface for various data sources and instruments. [1, 1, 15, 15, 16, 16]
  • SatKit: A library focused on orbit propagation and maneuver planning, with a core written in Rust for speed and safety. [2, 2]
  • pypredict: A Python wrapper for the predict command-line application, providing accurate satellite tracking and pass prediction. [8, 8]
  • SatelliteTracker: A Python program that can update a satellite’s location in real-time and provide location parameters. [3, 3]
  • pyserial: Used for communication with hardware like Arduino boards (for antenna control). [13, 13]
  • requests: Used for downloading data from online sources (like TLEs). [13, 13, 22, 23]

Example Usage:

A basic example might involve: [7, 7, 24, 25]

  1. Loading TLE data: Downloading and parsing TLEs for the desired satellite.
  2. Setting up a ground station: Defining the observer’s location.
  3. Calculating the satellite’s position: Using pyEphem or Skyfield to get the satellite’s coordinates at a specific time.

[1] https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2018ja025297

[2] https://satellite-toolkit.readthedocs.io/

[3] https://github.com/nfischer/satelliteTracker

[4] https://github.com/cbassa/sattools

[5] https://www.numberanalytics.com/blog/ground-track-astrodynamics-guide

[6] https://github.com/cfdemirkiran/STS-Satellite-Tracking-System

[7] https://www.n1fd.org/2018/02/28/using-python-track-amateur-satellites/

[8] https://pypi.org/project/pypredict/

[9] https://github.com/aerospaceresearch/findsatbyrf

[10] https://forum.orekit.org/t/ground-station-in-view-of-satellite-field-of-view/4185

[11] https://github.com/ThomasAFink/visualization_of_the_solar_system_on_an_interstellar_scale

[12] https://pypogs.readthedocs.io/

[13] https://github.com/hazrmard/SatTrack

[14] https://vamosys.com/history-gps-satellites-commercial-gps-tracking/

[15] https://pypi.org/project/pysat/

[16] https://ntrs.nasa.gov/api/citations/20190002337/downloads/20190002337.pdf

[17] https://matlabprojects.org/python-electrical-circuit-simulation/

[18] https://johnvastola.medium.com/5-python-projects-to-automate-your-life-from-beginner-to-advanced-843dba9605bf

[19] https://medium.com/rotten-grapes/5-python-libraries-for-earth-observation-319af1c04cc3

[20] https://github.com/oechenique/remote_sensing/

[21] https://www.reddit.com/r/Python/comments/9pl4bc/using_python_pyephem_and_opencv_to_track/

[22] https://apps.dtic.mil/sti/trecms/pdf/AD1224533.pdf

[23] https://space.stackexchange.com/questions/59802/python-orbit-simulation-using-tle-tools-and-poliastro

[24] https://pypi.org/project/orbdtools/

[25] https://github.com/dariol83/drorbiteex

1 thought on “Introducing PySTRF: A Python Toolkit for Satellite Tracking via Radio Observations”

  1. Based on the attached STRF toolkit and LANL’s CHIME initiative, here’s how **signal integrity** likely plays a central role in their mission:

    ### 🧠 What CHIME Means by “Signal Integrity”
    In the context of CHIME (Co-design and Heterogeneous Integration in Microelectronics for Extreme Environments), signal integrity refers to the **preservation of accurate, undistorted signal transmission** across microelectronic systems—especially under harsh conditions like radiation, thermal extremes, and electromagnetic interference.

    ### 🔬 How STRF and CHIME Intersect
    The STRF toolkit in your document focuses on:
    – **Doppler curve analysis** for satellite tracking
    – **Spectrogram generation** and **RF signal processing**
    – **FFT-based signal decomposition** and **peak detection**

    CHIME’s mission complements this by:
    – Designing **radiation-hardened microelectronics** that maintain signal fidelity in space or nuclear environments
    – Developing **photon-electron hybrid architectures** that reduce noise and improve bandwidth density
    – Exploring **3D stacking of components** to minimize parasitic interference and crosstalk

    Together, these efforts aim to ensure that signals—whether from satellites, sensors, or embedded systems—remain **coherent, traceable, and resilient**.

    ### 🛰️ Real-World Application: Satellite RF Tracking
    Imagine STRF tracking a satellite’s signal through the ionosphere. CHIME’s chips would:
    – **Filter and amplify weak signals** without distortion
    – **Correct for phase shifts and Doppler anomalies**
    – **Maintain timing precision** across multi-layered chip architectures

    This is especially critical for defense, climate monitoring, and secure communications in volatile regions like the Korean Peninsula.

    Would you like to sketch out a hybrid architecture that merges STRF’s signal analytics with CHIME’s chip design principles? We could even visualize how signal paths deform under ionospheric stress.

Leave a Reply to bengilbert Cancel reply

Your email address will not be published. Required fields are marked *