Skip to main content

ASAM MDF measurement data file parser

Project description

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.8

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 3-rd 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 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 fileas, 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 data frames are good if all the channels have the same time based
    • 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 samples reduction blocks are simply ignored
  • for version 4

    • experimental support for MDF v4.20 column oriented storage
    • functionality related to sample reduction block: the samples 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 the 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/log-file-tools/asammdf-api/

Documentation

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

And a nicely written tutorial on the CSS Electronics site

Contributing & Support

Please have a look over the contributing guidelines

If you enjoy this library please consider making a donation to the numpy project or to danielhrisca using liberapay <a href="https://liberapay.com/danielhrisca/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>

Contributors

Thanks to all who contributed with commits to asammdf:

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 you 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
  • fastparquet : 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
  • cChardet : to detect non-standard Unicode encodings
  • 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-7.3.3.tar.gz (725.5 kB view details)

Uploaded Source

Built Distributions

asammdf-7.3.3-cp311-cp311-win_amd64.whl (810.4 kB view details)

Uploaded CPython 3.11 Windows x86-64

asammdf-7.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (834.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asammdf-7.3.3-cp311-cp311-macosx_10_9_x86_64.whl (804.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

asammdf-7.3.3-cp310-cp310-win_amd64.whl (810.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

asammdf-7.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (833.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asammdf-7.3.3-cp310-cp310-macosx_10_9_x86_64.whl (804.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

asammdf-7.3.3-cp39-cp39-win_amd64.whl (810.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

asammdf-7.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (833.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

asammdf-7.3.3-cp39-cp39-macosx_10_9_x86_64.whl (804.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

asammdf-7.3.3-cp38-cp38-win_amd64.whl (810.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

asammdf-7.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (833.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

asammdf-7.3.3-cp38-cp38-macosx_10_9_x86_64.whl (804.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: asammdf-7.3.3.tar.gz
  • Upload date:
  • Size: 725.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for asammdf-7.3.3.tar.gz
Algorithm Hash digest
SHA256 f4df02e9ac5b07a3a9ccbaf49c24c30b56d12364c5e3e881fab86ff7299cbb60
MD5 b28c32f7648ea34e483c2a6e2a224372
BLAKE2b-256 b71add16b1dc1152ddfdf6986ec2f78c73873538af146642192d2a38492800a5

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: asammdf-7.3.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 810.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for asammdf-7.3.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1d2b5881188a9110ab550de17bb1e5e12dc3f52b021ee9a9e2e40ce0be314988
MD5 f8a9371fd224b838582cf632fee6e6d2
BLAKE2b-256 bc03493e38e67f0fcec7c1f487fcad3a0192b7680b611d3c7e8fb14ea4105e1b

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d11b99321b25316b45a02d8426b1dd4e6a2e71ba5b545ad46687e0c448dfbaa
MD5 b6acbdabf22bde5c879adb86c0eefd1d
BLAKE2b-256 852a17e553875313565911021e0e5fa44a9351203b3c48ace8867ed6eb287efc

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4db1b6f7fabc57e92a47a3374accd8eccd2760ee3034b9bd20812b2ab4e622c8
MD5 54653144f6ab4f4a2455244c3919584e
BLAKE2b-256 e5eae7ce33dd53e2ff0880dcecc1ca8753811c5bdd529e384f36403821076924

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: asammdf-7.3.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 810.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for asammdf-7.3.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 93e72ac75508ba6670e62836a52f5d77321986bb3756d5882a7ca190105476e9
MD5 08f0de6c751019e8019581a477b23b22
BLAKE2b-256 5f759c84f505779958642828978317dade8290b771ee67510a8a770a5412e0cb

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2272d681c01e494b6792f48b1d1b3ff05e5673a8bd206d761bdbeb5cd21f0d5c
MD5 3a67de02f19058595f1ff4e8a9491387
BLAKE2b-256 30649d11ed0703fd7182739aa9b2cc49671b8dfe733be815621d03254d74cab8

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a8f62f3b9123b3e70419b28dde8c2eb69e8d134803dee3edafdeff12feea76ef
MD5 a647c652312d55a8414972e49328cb5e
BLAKE2b-256 13bb2c0d0960f1be9d36a689718f583032a57931eb794d57de1a8543c33ed509

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: asammdf-7.3.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 810.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for asammdf-7.3.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8478e74edd9f4f036cf0de664618102968992044dc8f2ea59300050dd0012a52
MD5 4456525716706d9fd97b829cce610b45
BLAKE2b-256 f9eb9af55f96f581ef61cd3790fb7c63a9953be9d747a9513298397b483ae414

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 484acbc9b971712679942afbcbfe80e9a07fd50e50ff394326cc70899d9f6e39
MD5 8666ec7daad14eaead80066e16a5eada
BLAKE2b-256 4f0067999c98be445e0540decb3b3cdd57e9dda72268f477a27095e6245aab9c

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5fe9ea8a6f9386b55c3247ce5fb554c217cd8fb1802c5d84e287d7b8e28f0423
MD5 87a34784152f360ee711bd6a1eaadc50
BLAKE2b-256 33c6cadbf919fd3180537b6f1988195bc98401b09d7199bf73d42ce8b8709e6c

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: asammdf-7.3.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 810.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for asammdf-7.3.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a22d1a23a74c0bf768af6e7a92f7b504c3bc32cb211146e7cb05dd0153637526
MD5 f5a5e375cec2ad464dd2218917631381
BLAKE2b-256 604e1e520a4b935ead8a45f014ee61f84941a91ea3748f274047215ec79bdf2a

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c03c2489fd147358b22feb036c48d2ab220ef5c57c784559f73f0f9bc3b4f549
MD5 4b4c7d40f8120d6696d720e7eeaeef55
BLAKE2b-256 e9014acf1751c3d67df9a69c68bf1b85f9c8efacccb9aac5ac811a0edb51dd6d

See more details on using hashes here.

File details

Details for the file asammdf-7.3.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-7.3.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 43bc6641bf5a2f07f77bfc080ad5d844baa63449821f9f7e3a738704de7b220a
MD5 cca2cfa56486a195f895d0c1f7348f10
BLAKE2b-256 4b9931f691c636ba500d88a455fa8cd299570efaec03e89bf8635896a95b779b

See more details on using hashes here.

Supported by

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