-
Notifications
You must be signed in to change notification settings - Fork 0
Research Data
ntpstats reads the data behind recent time-transfer and NTP measurement studies directly:
| Format | Where it comes from | What you get |
|---|---|---|
cggtts |
GNSS time-transfer receivers at time laboratories (BIPM CGGTTS V2E) | REF − GNSS time per epoch; ntpstats cv gives UTC(A) − UTC(B) |
rinex-clock |
IGS clock products (.clk, gzip accepted) |
receiver and satellite clock biases |
circular-t |
BIPM Circular T, section 1 | UTC − UTC(k) for about 80 laboratories |
ripe-atlas |
RIPE Atlas NTP measurements (API JSON) | offset and RTT per probe and server |
ntppool |
NTP Pool monitoring logs | offset, RTT and score per monitor |
interop |
the ntpstats open dataset (data/interop/, monthly since 2026) |
NTP/NTS/NTPv5/Roughtime probes of public servers, with availability |
All are auto-detected and work with every command: info, stability, noise, hat and
report.
Circular T gives UTC − UTC(k) every five days. Concatenate the issues you have into one file:
curl -O https://webtai.bipm.org/ftp/pub/tai/Circular-T/cirt/cirt.44[0-9]
cat cirt.4* > cirt-all.txt
ntpstats info cirt-all.txt --all-peers # one series per laboratory
ntpstats stability cirt-all.txt --peer PTB -k tdev,htot # stability of UTC(PTB)The published uncertainties (uA, uB, u) are kept in each series' metadata.
ntpstats cv laba.cggtts labb.cggtts -o ab.csv # REF(A) - REF(B), common view
ntpstats cv laba.cggtts labb.cggtts --mode aiv -o ab.csv # all in view
ntpstats stability ab.csv -k tdev,mdev- Common view differences the same satellite at the same epoch, so satellite clock errors cancel.
- All in view differences the per-epoch means.
- Line checksums of each file are verified; failing lines are skipped and counted.
ntpstats stability IGS0OPSFIN_20250190000_01D_05M_CLK.CLK.gz --peer PTBB -k oadev,hdevcurl "https://atlas.ripe.net/api/v2/measurements/MSM_ID/results/?format=json&start=...&stop=..." -o atlas.json
ntpstats info atlas.json --all-peersIn Python, ntpstats.research.group_summary(series, by="peer") gives the offset distribution per
server (median, 95th percentile of |offset|) across all probes, or by="probe" per vantage point.
Atlas logs local − server; ntpstats negates it to its usual server − local.
curl "https://www.ntppool.org/scores/192.0.2.1/log?limit=2000&monitor=*" -o pool.csv
ntpstats info pool.csv --all-peers # one series per monitor
ntpstats hat pool.csv --all-peers # which monitor paths are noisy?Please keep requests to public services modest.
Every week the Live interop workflow probes public NTP, NTS, NTS-pool, NTPv5 and Roughtime
servers; the first run of each month is recorded in
data/interop/. The
dataset is versioned with every release (Zenodo), and its schema is in the directory's README.
ntpstats dataset data/interop --test nts # availability and offsets of NTS servers over time
ntpstats stability data/interop --peer time.google.com -k oadevA directory given to any command is read as the concatenation of its files.
Synthetic examples of every format are in
examples/data/.
ntpstats
- Home
- Getting started
- CLI reference
- In your browser
- Input formats
- Statistics
- Network & estimators
- Trace replay & PTP chains
- PTP & time error
- Sources & bounds
- Audit, events & CI
- Monitoring
- Protocols
- Metrology
- Research data
- Dataframes & Parquet
- Writing a plugin
- Notebooks & gallery
- Validation
- API reference
- Live interop
- State of the art
- Tools landscape
- Changelog
- Roadmap