Under the hood

autorino is based on a main parent class: StepGnss. It performs generic actions on input files, saving them in an output folder.

StepGnss has three daughter classes:

  • DownloadGnss: for downloading a RAW file to the local server

  • ConvertGnss: for RAW > RINEX conversion

  • HandleGnss: to perform decimation, spliting or splicing operations on a RINEX. It has two daughter classes:

    • SplitGnss: to split a RINEX file

    • SpliceGnss: to splice (concatenate) RINEX files

The central attribute of a StepGnss object is its table (step_gnss.table).

This is a pandas’ DataFrame that lists, among other things, the input files, and, where applicable, the output files if the operation has been successful.

About epoch range and timing.

When defining an epoch range for a step, you give:

  • a first epoch (epoch1*)

  • an last epoch (epoch2*)

  • a period (period)

*: epoch1 and epoch2 are automatically sorted. You don’t have to worry about the order, which one is the oldest and which one is the newest with respect to the present epoch.

To create an epoch range, autorino generates a set of (start bound, end bound) starting at the first epoch, increased incrementally by the period, and stoped at the ending epoch. The ending epoch is not included as a final start bound.

epoch1 and epoch2 can be relative epochs to the presente epoch in human-readable sentences. (interpretation done with the dateparser package). For instance:

  • "10 days ago"

  • "today at 00:00"

  • "now"

  • "15 minutes ago"

epoch1 and epoch2 can also be absolute epochs in the date format. For instance: "2024-05-01 00:00:00"

Internally, autorino uses UTC timescale. (which is a good proxy for the GPS time as the minute level). Customizing the time zone is possible by modifying the tz format in the configuration files. It will change the way the input epoch1 and epoch2 are interpreted. You can customize it using the tz database names: e.g. Europe/Paris, America/Guadeloupe, America/Martinique, Indian/Reunion etc…

Using the round_method option, you can round epoch1 and epoch2 to the closest epoch according to period. Accepted values are:

  • floor (default): round to the closest epoch before the epoch1/epoch2.

  • ceil: round to the closest epoch after the epoch1/epoch2.

  • round: round to the closest epoch depending where you are in the period (not recommended).

A simple exemple

If you ask on 2025-01-20 for an epoch range with:

  • epoch1: "10 days ago"

  • epoch2: "today"

  • period: "01D"

  • round_method: "floor"

You will get the following results:

        epoch_srt         epoch_end
25-01-16 00:00:00 25-01-16 23:59:59
25-01-17 00:00:00 25-01-17 23:59:59
25-01-18 00:00:00 25-01-18 23:59:59
25-01-19 00:00:00 25-01-19 23:59:59
25-01-20 00:00:00 25-01-20 23:59:59