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

Uploaded Source

Built Distributions

asammdf-7.3.8-cp311-cp311-win_amd64.whl (820.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

asammdf-7.3.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (845.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asammdf-7.3.8-cp311-cp311-macosx_10_9_x86_64.whl (814.6 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

asammdf-7.3.8-cp310-cp310-win_amd64.whl (821.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

asammdf-7.3.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (844.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asammdf-7.3.8-cp310-cp310-macosx_10_9_x86_64.whl (814.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

asammdf-7.3.8-cp39-cp39-win_amd64.whl (820.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

asammdf-7.3.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (844.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

asammdf-7.3.8-cp39-cp39-macosx_10_9_x86_64.whl (814.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

asammdf-7.3.8-cp38-cp38-win_amd64.whl (820.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

asammdf-7.3.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (844.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

asammdf-7.3.8-cp38-cp38-macosx_10_9_x86_64.whl (814.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: asammdf-7.3.8.tar.gz
  • Upload date:
  • Size: 736.1 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.8.tar.gz
Algorithm Hash digest
SHA256 fe9ec52d8f2c411a0130bea1782cb386d69d00e0352df246f00ecaa4fbce7ea5
MD5 fe8d1e752c8674834c2927a6f1d6ef3e
BLAKE2b-256 6acd02337a529d16d57d1963f0aaa462273ebfbc2e6d1ab67f1d462cdd64b67e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 820.9 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e2c410d188664ad12346e6bf39747f9f71b12643c9f8e70a33ce57b916da7055
MD5 75935a22256aabdac5de33ad5a6a7204
BLAKE2b-256 d36e5bd79c26327684ab011bb0f56a7c0571ddebf2701c6c9afd14893a1355c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e8d254586eed13fae7324f4fc311718ab439f408e9e4e1c9b9181630837c689
MD5 53ee38fc7f1c385ba80c0c77b950d8d9
BLAKE2b-256 0bddd7b285f767d7aba013d3c59207bd32b4a54dae5dec7340d72b0ff8d8e9bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5cdd10069aa185e6ac9db9e58e2641878e4d23438365feaed1c9fc827a52883d
MD5 babb85d150de5eeaec73a8eddd7f8879
BLAKE2b-256 8fe06abbdb00fd50f0886e966f5a6f53b87e9e65b3504034f64fa105aba517b4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 821.0 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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a7654ef6b13faf941f53593dd79968fffbdec6c3f86298f709d00234d667dd56
MD5 be5d385a3319b130304611032f67d098
BLAKE2b-256 664d3187d32c35d82227a40b45ac42a167eb4e4a3550167dd6eae2c76a8d0b76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0721144306c78fd2392a7529c72733fbce2f0f34758fdad9e2c9a2b691696fd0
MD5 b5713f5429ddaf4d213e1692897f63f2
BLAKE2b-256 ef557c901b628a1e6f12a3b356ce140cfc48e35e13f53256bdf880ce33871405

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 639a576086885ef9b9c5664e913abb47110ab983e589cb8a0e92deec58e80fa9
MD5 f803f8b3ed150e9a85216885b5fcbba3
BLAKE2b-256 b9d0fc0f43d26b7736d632886668f297cbfb2c992ff5ab69eb599f8efa4071ac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.8-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 820.9 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.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 25e5771208de4e8bb6a5c5f89080bda616c8b3a2aade844c9d2b9bde01d808b9
MD5 4e5f2ca68b0643c9157247f952e574c4
BLAKE2b-256 a15e5cfcad128530420da0082ab07226a86e31436e89cbbfa867ab399744f07b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e001204b7543b1b34fbb11ad865dc26afc03e973c646f26779e504f12a6d48c8
MD5 077f3a3c855563cd5c5a91fa9241a8bc
BLAKE2b-256 a0c330f0e9029382bdf34e99cf9edbf9fa4632915479f1f3aa66767c8fd34f21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f3807cc2e52ecb4d114c8d5ce14a89fb77fc50f903fe8648c73571196f8c756b
MD5 4048314475ea3478f620c4337ad69185
BLAKE2b-256 8715b9f00a5c09bfd790a0f90278731b54b9e331933babefcd3a7659456adf6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.8-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 820.9 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.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 31b1de1fe8166c4de4f1aafb2bced1322609e226e052fc286cb53e3a899bb2a3
MD5 d6855de5837c3d268148b7064120c0be
BLAKE2b-256 ce7becdf4b2ec1b897260de9792513947dc36ef80b9909f5fcf90fc23c8d34d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b78e418295453e95f2ce02e47d553d74e474c054f657b5f21180005940aa538c
MD5 3b361d1a67ed8a0cb4c63357251a8968
BLAKE2b-256 e03b9074c873b977ddcfdb90d928e69a6ee06a9af46901083cdba3abb208c0bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.8-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9a8a7f375d77977fa756b62437da20d9b79e83dce90d62149b905889cb052320
MD5 e67ca68376569d04a2190c6b3d97c19f
BLAKE2b-256 c586b6390b0e4e56f3520ec9c5e158818f2a2d033f8e921efd4c1f4248090ac8

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