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.12.tar.gz (736.3 kB view details)

Uploaded Source

Built Distributions

asammdf-7.3.12-cp311-cp311-win_amd64.whl (821.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

asammdf-7.3.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (845.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asammdf-7.3.12-cp311-cp311-macosx_10_9_x86_64.whl (814.8 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

asammdf-7.3.12-cp310-cp310-win_amd64.whl (821.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

asammdf-7.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (844.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asammdf-7.3.12-cp310-cp310-macosx_10_9_x86_64.whl (814.7 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

asammdf-7.3.12-cp39-cp39-win_amd64.whl (821.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

asammdf-7.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (844.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

asammdf-7.3.12-cp39-cp39-macosx_10_9_x86_64.whl (814.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

asammdf-7.3.12-cp38-cp38-win_amd64.whl (821.1 kB view details)

Uploaded CPython 3.8 Windows x86-64

asammdf-7.3.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (844.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

asammdf-7.3.12-cp38-cp38-macosx_10_9_x86_64.whl (814.7 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: asammdf-7.3.12.tar.gz
  • Upload date:
  • Size: 736.3 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.12.tar.gz
Algorithm Hash digest
SHA256 cf58d64d4733fccfbe259ca497ec5392c671c6e3eeda429d059068e2b23c6f3c
MD5 fed49a00324945de2a617be33a60a8a1
BLAKE2b-256 fb7bd928cf7aa8501d898eb146dc61c3656a31500369d36db9f6f5436a5043f7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.12-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 821.1 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.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6f86f3b1d276801203558a620853dbd175e74ebfbeb4b5143d9e72cddcddfab9
MD5 bdb9ad020e52f1e8833a48a55bb73742
BLAKE2b-256 cac2a18d07e9868d22ed8cd5a6da7b90239a5cab2a0678fac91c29ec932698e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b942d1077897348b23c4b72b87acbaef827bdd3efe92dae526363ef4aec7c5f4
MD5 20658ee2c67e5bff1b5d663a038e99ed
BLAKE2b-256 f770d6f9c717e05bf12e71eb5e30c9deda84e63eeb7adcb2013c7cb1d0916040

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 57aebdbd1833c6235dccb64357caa7725c250b4d41b0374a4e3d738e53b6b619
MD5 01163c2a2f6fe97c7109af4d7f45663f
BLAKE2b-256 dd05ef7f15d70a665130d59e493c237740b04408addd60cfc7fd50d7f77e3e11

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.12-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 821.1 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.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5006d2da6a763ea397e0064b4baee0dd3966016c86bfcc821c9623ed7ab92d38
MD5 e89fccc886e63243f1fcc75bd606573e
BLAKE2b-256 6e49c7843c4f7e9d6c6b1c855c18025a58ab8c4650f88c0aa1d872cb7be764cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 53049991994bc0c137090f1834944851f0cf942ab8b98e9925fee28a0bffb753
MD5 ea153b1e66877f761e8e6ce95014ad42
BLAKE2b-256 b43de2b5678d14271349ffcba84baf6f28c1f34dec4e1c06f080bb193364a3ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 08d4e6415629e7a65a74d37d8932caa3b451ececdc558c0120feca2f8ea28928
MD5 b115f1560247d45d2d4b99e806c801bf
BLAKE2b-256 d4e8d03a1104676993eab91eee954cdd124fecc827673179d876e89a94f26b84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.12-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 821.1 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.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 4f05853c4e841ecef1f8a6b3c92c7b096156837c6375cd85ea520169462f0dcf
MD5 aaba1ce16f18d3bc1c33ce6bddcd73ed
BLAKE2b-256 10138ba48725cd6244b4aa1c0e54e0654ea21589825ab34bd536464f3ebbafdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e618715109ea7171b9527a3489c3fbf31277cf23502a254e42845761275f0159
MD5 6170e8e54776e5c732fdaf35ba4daa90
BLAKE2b-256 f008d4a363d971ae5317baf9c9573951d62194886ae0d3d22ca729343d3446dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d21efbe8d4202f8b0ca9fd9699846fcfd8315cfdd3ba3f242f7e8923139d9b7d
MD5 00df3df3db9a96015ce6e3e7210bc3ec
BLAKE2b-256 414121db98af3c987f201e2806ce66dff8d547bccaec729c86ad316c2e2adf4e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.12-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 821.1 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.12-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e8951b144313c5661ff1068bc3f320eb98245ffd14c7efc035243083e8369ddf
MD5 6274aa75b60c0c63f7e68e4721613a7e
BLAKE2b-256 305983cc0d7db5bea5364c54d1d51a4c2c6638cb958c49d764cc965168bf6501

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 25b5fdd5b7fd0cf3641cc66a9fa497b629258ddb998b479082bac81fe7fa1117
MD5 6c362a3dce926a4b1dc2bcf93c049c12
BLAKE2b-256 d6369cb24bbdc162cae36e79ab153ae660ccd032cb1ae44cb91cd15e0fa33c8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.12-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c133e7f6aba6ed001f99f0ea2604188449e70d0189d01c3cacb21c5cd7aa07b1
MD5 212f3e71c05ac90538bb2a9d14d40dfa
BLAKE2b-256 18b7011bd96bd96d39b947dac154f6a7c890fa8194349e31b54e81f062dc5519

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