telemachus
Python SDK for the Telemachus open telematics format — read, validate, convert, and introspect high-frequency GNSS+IMU datasets.
pip install telemachus
Try it in 5 minutes: the AEGIS demo notebook (open in Colab) downloads a real Zenodo dataset, loads it, and plots one trip.
Read a dataset
import telemachus as tele
df = tele.read("path/to/manifest.yaml") # → pandas DataFrame
print(tele.sensor_profile(df)) # → "gps+imu+gyro"
Sensor introspection
tele.has_gps(df) # True if lat, lon, speed_mps non-NaN
tele.has_imu(df) # True if ax, ay, az non-NaN
tele.has_gyro(df) # True if gx, gy, gz present
tele.has_magneto(df) # True if mx, my, mz present
tele.has_obd(df) # True if speed_obd or rpm present
tele.has_io(df) # True if ignition or voltage present
tele.is_full_imu(df) # accel + gyro
tele.is_gps_only(df) # GPS but no IMU
Validate
report = tele.validate(df, profile="imu")
print(report)
# ValidationReport(PASS, profile=imu, level=basic, errors=0, warnings=0)
report = tele.validate_dataset("path/to/dataset/", level="full")
Three profiles adapt validation to hardware capabilities:
| Profile | Required columns | Use case |
|---|---|---|
core |
ts, lat, lon, speed_mps | GPS trackers, fleet APIs |
imu |
core + ax, ay, az | Telematics devices with accelerometer |
full |
imu + gx, gy, gz | Research platforms with gyroscope |
Convert Open datasets
tele convert aegis /path/to/aegis/csvs -o datasets/aegis/
tele convert pvs /path/to/pvs/trips -o datasets/pvs/ --placement dashboard
tele convert stride /path/to/stride/road_data -o datasets/stride/ --category driving
Supported Open datasets:
| Adapter | Source | Sensors | License |
|---|---|---|---|
aegis |
Zenodo 820576 (Austria) | GPS 5Hz + Accel 24Hz + Gyro + OBD | CC-BY-4.0 |
pvs |
Kaggle (Brazil) | GPS 1Hz + Accel 100Hz + Gyro + Magneto | CC-BY-NC-ND-4.0 |
stride |
Figshare (Bangladesh) | GPS 1Hz + Accel 100Hz + Gyro + Magneto | CC-BY-4.0 |
CLI
tele validate path/to/manifest.yaml # validate manifest
tele validate path/to/dataset/ --level full # validate dataset
tele info path/to/manifest.yaml # dataset summary
tele convert aegis /data/aegis -o out/ # convert Open dataset
Telemachus record format
A Telemachus record is a flat Parquet row with 7 functional groups:
| # | Group | Columns | Status |
|---|---|---|---|
| 1 | Datetime | ts |
Mandatory |
| 2 | GNSS | lat, lon, speed_mps, heading_deg, altitude_gps_m, hdop, h_accuracy_m, n_satellites |
Mandatory (lat/lon/speed) |
| 3 | IMU | ax_mps2, ay_mps2, az_mps2, gx_rad_s, gy_rad_s, gz_rad_s, mx_uT, my_uT, mz_uT |
Profile-dependent |
| 4 | OBD | speed_obd_mps, rpm, odometer_m |
Optional |
| 5 | CAN | x_can_<signal> |
Future |
| 6 | I/O | ignition, vehicle_voltage_v |
Optional |
| 7 | Extra | x_<source>_<field> |
Optional |
Full specification: SPEC-01 | SPEC-02 | SPEC-03
Development
git clone https://github.com/telemachus3/telemachus
cd telemachus/python-sdk
pip install -e .[dev]
pytest # 31 tests
License
AGPL-3.0
Metadata
Release files for telemachus 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| telemachus-0.9.0.tar.gz | 64.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| telemachus-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 128.4 kB
Release files / telemachus-0.9.0.tar.gz
| Download URL | telemachus-0.9.0.tar.gz |
|---|---|
| Size | 64.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61efea555856b176fe2ab04f370dc4936677fd46f137ed7e40a23b8467ca94c6
|
|
BLAKE2b-256 checksum How to use checksums |
6ff3eec1b5afc64b058340c968a06340c16cbea0350ab132f721c4da2ae1e15f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.2
|
Release files / telemachus-0.9.0-py3-none-any.whl
| Download URL | telemachus-0.9.0-py3-none-any.whl |
|---|---|
| Size | 63.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
87ae7186d3e3d7abb86c6322dd1fc237b741916ac2c981c329f70067093704d6
|
|
BLAKE2b-256 checksum How to use checksums |
15dc90086e9dcc4dccff6aba177b17c98f489c3249d7b80e78c4546ca089854e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.2
|
Security for telemachus 0.9.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.