Parse, validate, analyse and convert UAV mission data in the open .mfx (Mission Flight Exchange) format
Project description
pymfx
Parse, validate, analyse and convert UAV mission data using the open .mfx format — plain text, self-describing, FAIR-compliant, single file per flight.
pip install pymfx
Package
import pymfx
mfx = pymfx.parse("flight.mfx")
pymfx.validate(mfx)
| Function | Description |
|---|---|
parse(src) |
Parse a .mfx file or string |
validate(mfx) |
Run V01–V21 validation rules |
flight_stats(mfx) |
Duration, distance, alt, speed |
fair_score(mfx) |
FAIR compliance score (F/A/I/R) |
detect_anomalies(mfx) |
Speed spikes, GPS jumps, altitude cliffs |
write(mfx, dest) |
Write with auto SHA-256 checksum |
Convert
mfx = pymfx.convert.from_gpx("track.gpx")
pymfx.convert.to_geojson(mfx)
| Import | Export | |
|---|---|---|
| GPX 1.1 | from_gpx |
to_gpx |
| GeoJSON | from_geojson |
to_geojson |
| CSV | from_csv |
to_csv |
| DJI / AirData | from_dji_csv |
|
| KML | to_kml |
Visualize
import pymfx.viz as viz
viz.flight_profile(mfx)
| Function | Output |
|---|---|
trajectory_map(mfx) |
Folium map, speed gradient |
speed_heatmap(mfx) |
Folium map, heat overlay |
compare_map([...]) |
Multi-flight overlay |
flight_profile(mfx) |
Alt / speed / heading chart |
flight_3d(mfx) |
3D trajectory |
events_timeline(mfx) |
Events on flight axis |
DataFrame
df = mfx.trajectory.to_dataframe(events=mfx.events)
TUI
pymfx flight.mfx --tui
| Key | Tab |
|---|---|
1 |
Overview |
2 |
Trajectory |
3 |
Events |
4 |
Statistics + FAIR |
5 |
Anomalies |
6 |
Raw |
e |
Export |
CLI
pymfx flight.mfx --validate
| Flag | Action |
|---|---|
--validate |
Check V01–V21 rules |
--info |
File summary |
--stats |
Flight statistics |
--checksum |
Verify SHA-256 |
--anomalies |
Detect anomalies |
--diff other.mfx |
Compare two files |
--export fmt -o out |
Export to gpx/kml/csv/geojson |
--import fmt -o out |
Import from gpx/csv/dji/geojson |
--repair -o out |
Rebuild checksum + index |
--tui |
Open interactive viewer |
Format
@mfx 1.0
@encoding UTF-8
[meta]
id : uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479
drone_id : drone:DJI-Mini3-SN8273
pilot_id : pilot:ahmed-jabrane
date_start : 2025-06-15T08:30:00Z
status : complete
license : CC-BY-4.0
[trajectory]
frequency_hz : 1.0
@checksum sha256:b1f2bc...
@schema point: {t:float [no_null], lat:float [no_null], lon:float [no_null], alt_m:float32, speed_ms:float32}
data[]:
0.000 | 48.7733 | 2.2858 | 52.1 | 3.2
1.000 | 48.7734 | 2.2859 | 54.3 | 4.1
[index]
bbox : (2.2858, 48.7733, 2.2901, 48.7751)
anomalies : 0
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pymfx-1.0.1.tar.gz
(551.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pymfx-1.0.1-py3-none-any.whl
(71.6 kB
view details)
File details
Details for the file pymfx-1.0.1.tar.gz.
File metadata
- Download URL: pymfx-1.0.1.tar.gz
- Upload date:
- Size: 551.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbce4342f56193a56c29c4b9050ee5b9bb9f950b7df1ab44c22cd7f55e615bc1
|
|
| MD5 |
32cb39d5fc0ef992885847bae236c064
|
|
| BLAKE2b-256 |
6a4bdc265c21b8990e329ab07edb44e96df0f9f79023be93e3f44b0c48419f64
|
File details
Details for the file pymfx-1.0.1-py3-none-any.whl.
File metadata
- Download URL: pymfx-1.0.1-py3-none-any.whl
- Upload date:
- Size: 71.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
455653407fffdd227475d8353a33109c39c0643c4a67392d4c286791991d709f
|
|
| MD5 |
52f16b98e8ac8acb7ede8a2bc0715589
|
|
| BLAKE2b-256 |
6cc2a1d022057dc7b13235720de33b6c2f67a978a04460fc9afcb394699a216d
|