[Update] auto-STRF: SatNOGS waterfall processing and candidate TLE fitting (done)

Hello everyone,

I would like to share the current version of auto-STRF, following up on my [previous development thread]( [UPDATE] Fully Automated SatNOGS to STRF Pipeline Released (still 99% progress) ).

The code is now available as a fork of [Cees Bassa’s STRF]( GitHub - cbassa/strf: Radio Frequency Satellite Tracking · GitHub ):

[GitHub repository and installation guide]( GitHub - VerdantFoster/auto-strf: Radio Frequency Satellite Tracking · GitHub )**

The goal is to make the path from a SatNOGS waterfall to a candidate TLE easier to run and inspect. The workflow downloads observation metadata and waterfall images, proposes signal points, reconstructs Doppler measurements, and passes them to STRF for orbit fitting.

Thanks to om @bali and everyone who tested the earlier version, especially for the feedback on Doppler correction and signal-track selection.

What is in this version?

- Metadata-based calibration: time and frequency coordinates are read from the calibration metadata embedded in supported SatNOGS PNGs.

- Automatic signal-point proposals: the extractor follows an image ridge and refines its position around the local intensity peak. Points can also be reviewed and edited interactively.

- Explicit Doppler reconstruction: for a tracked waterfall, the observation’s tracking TLE and station coordinates are used to reconstruct absolute received frequencies before exporting the measurements.

- Native STRF batch fitting: `rffit-batch` uses STRF’s numerical engine without interactive fitting menus. PGPLOT is still required for the generated plots.

- Configurable targets: the latest-observation download accepts a NORAD catalog number and station IDs, rather than a fixed satellite and station pair.

- Traceable outputs: each fit saves a candidate TLE, residual CSV, plot, log, and a provenance file containing input hashes and fitting settings.

From waterfall to candidate TLE


SatNOGS waterfall + observation metadata


              |

   Calibrate time and frequency

              |

  Propose / review signal points

              |

  Reconstruct Doppler frequencies

              |

    Export STRF measurements

              |

      Native STRF fitting

              |

  Candidate TLE + residuals + plot

```

The observed Doppler shift contains information about the satellite’s velocity along the line of sight. Fitting compares those measurements with the predicted frequency evolution and adjusts selected orbital elements.

The distinction between the displayed waterfall frequency and reconstructed received frequency matters here. The current reconstruction assumes ideal continuous tracking based on the observation’s TLE; it does not use measured receiver tuning logs.

Trying it out

Follow the installation instructions in the [README]( GitHub - VerdantFoster/auto-strf: Radio Frequency Satellite Tracking · GitHub ). From the repository directory, with the Python environment activated:


\# Replace this example with a completed SatNOGS observation ID.

OBS_ID=12345678



python -m satnogs_waterfall fetch "$OBS_ID"

python -m satnogs_waterfall inspect "$OBS_ID"

python -m satnogs_waterfall suggest "$OBS_ID"

python -m satnogs_waterfall export "$OBS_ID" --source proposal

python -m satnogs_waterfall.fit_outputs "$OBS_ID" --mode mamm

This example fits mean anomaly and mean motion, while also estimating the transmitter frequency. The outputs are written to `data/waterfall/<observation_id>/`.

To inspect or edit the proposed points, run `python -m satnogs_waterfall mark “$OBS_ID”` on a graphical desktop. Press `f` to save, export with `–source selection`, and repeat the fitting command with `–replace` if outputs already exist.

Current scope*

This is still experimental software. The Python fitting command processes each observation separately. Supported PNG calibration metadata and the expected waterfall color palette are required for automatic extraction.

Automatically proposed points are not proof of signal identity. A small residual on the fitted pass also does not establish accurate predictions for a later pass. The output is a candidate TLE and is not automatically installed into an operational catalog.

Feedback welcome

I would appreciate testing on other observations and stations, particularly:

- Does the extracted track follow the intended signal when it is weak or interrupted?

- Are the reconstructed frequencies consistent with manually tabulated measurements?

- How well does a candidate predict an independent later pass?

- Are the installation instructions clear on your Linux distribution?

If you find a problem, please include the public observation link, command used, fitting mode, and relevant log excerpt. Issues and pull requests are welcome on [GitHub]( GitHub - VerdantFoster/auto-strf: Radio Frequency Satellite Tracking · GitHub ).

Credit to Cees Bassa for STRF and Fabian P. Schmidt for the [SatNOGS Waterfall Tabulation Helper]( Fabian P. Schmidt / SatNOGS Waterfall Tabulation Helper · GitLab ), from which the interactive helper workflow was adapted.

Thank you for the feedback and support. Please help me improve this tool!

73,

VerdantFoster

5 Likes

thank you!

1 Like