Skip to main content

ASAM MDF measurement data file parser

Project description

logo of asammdf

asammdf is a fast parser and editor for ASAM (Association for Standardization of Automation and Measuring Systems) MDF (Measurement Data Format) files.

asammdf supports MDF versions 2 (.dat), 3 (.mdf) and 4 (.mf4).

asammdf works on Python >= 3.10

PyPI - Downloads PyPI - License PyPI - Python Version PyPI - Version Checked with mypy pre-commit Ruff


screenshot of the graphical user interface

Status

Continuous Integration Coveralls Codacy ReadTheDocs
continuous integration Coverage Status Codacy Badge Documentation Status
PyPI conda-forge
PyPI version conda-forge version

Project goals

The main goals for this library are:

  • to be faster than the other Python-based mdf libraries
  • to have clean and easy-to-understand code base
  • to have minimal 3rd party dependencies

Features

  • create new mdf files from scratch
  • append new channels
  • read unsorted MDF v3 and v4 files
  • read CAN and LIN bus logging files
  • extract CAN and LIN signals from anonymous bus logging measurements
  • filter a subset of channels from original mdf file
  • cut measurement to specified time interval
  • convert to different mdf version
  • export to pandas, HDF5, Matlab (v7.3), CSV and parquet
  • merge multiple files sharing the same internal structure
  • read and save mdf version 4.10 files containing zipped data blocks
  • space optimizations for saved files (no duplicated blocks)
  • split large data blocks (configurable size) for mdf version 4
  • full support (read, append, save) for the following map types (multidimensional array channels):
    • mdf version 3 channels with CDBLOCK
    • mdf version 4 structure channel composition
    • mdf version 4 channel arrays with CNTemplate storage and one of the array types:
      • 0 - array
      • 1 - scaling axis
      • 2 - look-up
  • add and extract attachments for mdf version 4
  • handle large files (for example merging two files, each with 14000 channels and 5GB size, on a RaspberryPi)
  • extract channel data, master channel and extra channel information as Signal objects for unified operations with v3 and v4 files
  • time domain operation using the Signal class
    • pandas DataFrames are good if all the channels have the same time base
    • a measurement will usually have channels from different sources at different rates
    • the Signal class facilitates operations with such channels
  • graphical interface to visualize channels and perform operations with the files

Major features not implemented (yet)

  • for version 3
    • functionality related to sample reduction block: the sample reduction blocks are simply ignored
  • for version 4
    • experimental support for MDF v4.20 column oriented storage
    • functionality related to sample reduction block: the sample reduction blocks are simply ignored
    • handling of channel hierarchy: channel hierarchy is ignored
    • full handling of bus logging measurements: currently only CAN and LIN bus logging are implemented with the ability to get signals defined in the attached CAN/LIN database (.arxml or .dbc). Signals can also be extracted from an anonymous bus logging measurement by providing a CAN or LIN database (.dbc or .arxml)
    • handling of unfinished measurements (mdf 4): finalization is attempted when the file is loaded, however not all the finalization steps are supported
    • full support for remaining mdf 4 channel arrays types
    • xml schema for MDBLOCK: most metadata stored in the comment blocks will not be available
    • full handling of event blocks: events are transferred to the new files (in case of calling methods that return new MDF objects) but no new events can be created
    • channels with default X axis: the default X axis is ignored and the channel group's master channel is used
    • attachment encryption/decryption using user provided encryption/decryption functions; this is not part of the MDF v4 spec and is only supported by this library

Usage

from asammdf import MDF

mdf = MDF('sample.mdf')
speed = mdf.get('WheelSpeed')
speed.plot()

important_signals = ['WheelSpeed', 'VehicleSpeed', 'VehicleAcceleration']
# get short measurement with a subset of channels from 10s to 12s
short = mdf.filter(important_signals).cut(start=10, stop=12)

# convert to version 4.10 and save to disk
short.convert('4.10').save('important signals.mf4')

# plot some channels from a huge file
efficient = MDF('huge.mf4')
for signal in efficient.select(['Sensor1', 'Voltage3']):
    signal.plot()

Check the examples folder for extended usage demo, or the documentation http://asammdf.readthedocs.io/en/master/examples.html

https://canlogger.csselectronics.com/canedge-getting-started/ce3/log-file-tools/asammdf-gui/

Documentation

http://asammdf.readthedocs.io/en/master

And a nicely written tutorial on the CSS Electronics site.

Contributing & Support

Please have a look at the contributing guidelines.

If you enjoy this library please consider making a donation to the numpy project or to danielhrisca using liberapay.

Donate using Liberapay

Contributors

Thanks to all who contributed with commits to asammdf:

profile pictures of the contributors

Installation

asammdf is available on

pip install asammdf
# for the GUI
pip install asammdf[gui]
# or for anaconda
conda install -c conda-forge asammdf

In case a wheel is not present for your OS/Python versions and you lack the proper compiler setup to compile the C-extension code, then you can simply copy-paste the package code to your site-packages. In this way the Python fallback code will be used instead of the compiled C-extension code.

Dependencies

asammdf uses the following libraries

  • numpy : the heart that makes all tick
  • numexpr : for algebraic and rational channel conversions
  • wheel : for installation in virtual environments
  • pandas : for DataFrame export
  • canmatrix : to handle CAN/LIN bus logging measurements
  • natsort
  • lxml : for canmatrix arxml support
  • lz4 : to speed up the disk IO performance
  • python-dateutil : measurement start time handling

Optional dependencies needed for exports

  • h5py : for HDF5 export
  • hdf5storage : for Matlab v7.3 .mat export
  • pyarrow : for parquet export
  • scipy: for Matlab v4 and v5 .mat export

Other optional dependencies

  • PySide6 : for GUI tool
  • pyqtgraph : for GUI tool and Signal plotting
  • matplotlib : as fallback for Signal plotting
  • chardet : to detect non-standard Unicode encodings
  • pyqtlet2 : for the GPS window
  • isal : for faster zlib compression/decompression
  • fsspec : access files stored in the cloud

Benchmarks

http://asammdf.readthedocs.io/en/master/benchmarks.html

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

asammdf-8.8.6.tar.gz (11.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

asammdf-8.8.6-cp310-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

asammdf-8.8.6-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

asammdf-8.8.6-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

asammdf-8.8.6-cp310-abi3-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

asammdf-8.8.6-2-cp310-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

asammdf-8.8.6-2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

asammdf-8.8.6-2-2cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

asammdf-8.8.6-2-2cp310-abi3-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded macOS 11.0+ ARM64

asammdf-8.8.6-1-cp310-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

asammdf-8.8.6-1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

asammdf-8.8.6-1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

asammdf-8.8.6-1-cp310-abi3-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file asammdf-8.8.6.tar.gz.

File metadata

  • Download URL: asammdf-8.8.6.tar.gz
  • Upload date:
  • Size: 11.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for asammdf-8.8.6.tar.gz
Algorithm Hash digest
SHA256 5ebe19ec7083ea80a7e470b7203a7e478540e3165c7e6ee9c2cfd9f819b0db27
MD5 a18ec9e35e39eeeb7d3cc36469d4725f
BLAKE2b-256 da93a518bd81d5f16bb77757c9a2408e48b3294220f05c5ba8b0941a7de09813

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: asammdf-8.8.6-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for asammdf-8.8.6-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2e956f3d082fe80beec5bf1144cb399d835784d080c5c6f6ce979f229e8d3f0e
MD5 5413b6c1851e1739f968e8616d827764
BLAKE2b-256 068b256d5ee676ab202d8a5eea8a3f47125dfb694271d149d8f88dbcf5ff2b22

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dc9056055d82e627a3449df2dddd210a8e78c38face9cc75267ea52c3879a981
MD5 69661408df2abd1ff79b653f781f00a1
BLAKE2b-256 778b5b946357288d2f01acc205a49fc125635ba6a1b7cc7fed9e341e0b4999ff

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3453c3f8187790216edb4df19c4ac2e5c3d0a78b7f46e3b418e8f6a319530946
MD5 fc0fe608672936e2c382d8c46c6a65b7
BLAKE2b-256 a77fccece5d6409d465145396281b9b625a85a3e1be768b8ee3163f5901a501b

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 495c07b85f73b55e6ff89c7cd81b0275a6c77dcc95c1f487a73232efd6e4d312
MD5 6ec5c828a18362e6985323e5e9ffc439
BLAKE2b-256 d923c46844c274c2a3db675d3339ef65a6c969bec0c4080f155ebb78ca8620dc

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-2-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: asammdf-8.8.6-2-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for asammdf-8.8.6-2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0809a386e91aafc3240006157561a534b25dff6448f60ef0826bca68957067fc
MD5 cbfdd74ecdddaabec81066dec3b44cfe
BLAKE2b-256 9004d0c328146cf840728570349220fcbb8df08eb58ed04bb5ae1ef093134c4b

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-2-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 777c11ab2841f203f7baba85ba3fb5d69828f06f5a719cf410faa780e56835e1
MD5 8347608c929c2b7b54f66186fd35804e
BLAKE2b-256 1f251bf574591846710627a732138a43865c22cbdd78e71176c80e0f7724b3e2

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-2-2cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-2-2cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cefff03fa5090787c7b9503506d7f26961db2f1b55d1cf348f0d298f449c7e42
MD5 27218903b26bea30074f0a2504730290
BLAKE2b-256 0561aabf91402ed9965ef0e36e6fe949613cc7810d5ec8aaa97ff00d414a40ab

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-2-2cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-2-2cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9db8fd8259361d111cb68c02551d52814dd583e4f1481893d6a4fc42371be157
MD5 908d12e66e1462750609cdf76d6a9e92
BLAKE2b-256 b276bfd23319bd551fcb7220ce18fead79f2b3f8988f41b52409994556372c4b

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: asammdf-8.8.6-1-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for asammdf-8.8.6-1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7c3eb6e403cc512cb131eda40a6ec87daf30b50638b1b5907a9dd2f50518e8d7
MD5 89564e1dd33d06ca0fc5d900ab6de49e
BLAKE2b-256 1f291d13376e064b80402cd78f64fe263dc316c36a4f28e8a2ce06b030f476bc

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d7316dea0752d1012a69686a3ea46517ac3fa85dd371389348f5b197412c4d81
MD5 c0ab57dc5d9ca995026597abac665acf
BLAKE2b-256 3b6bf4a9a332c6cd3f9de449dcb6e0f6837c8cce65a4b0f605b7cb2c6889c776

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fb63a46f0bd6c748a3e02e8e128bf27ff12da356e01043f4612cfa3be1764556
MD5 023cbf0620960ca8db3167c64981a65f
BLAKE2b-256 fbff93b400a662600bfaab01000c18e12566c4e1ac297ac8fe89494ca71e0a28

See more details on using hashes here.

File details

Details for the file asammdf-8.8.6-1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.8.6-1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f161a5690ac0168ded41fb6b27171a13d18972039f91f6fe57b4c3f79b9d9bcc
MD5 2561e95b6a5b1e7619462183b6bd9be8
BLAKE2b-256 f3885a84dc2bc0c150e8864a3d545062f2fa157a601de183b532978b7b791ddd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page