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

Uploaded Source

Built Distributions

asammdf-7.3.15-cp311-cp311-win_amd64.whl (822.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

asammdf-7.3.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (846.8 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asammdf-7.3.15-cp311-cp311-macosx_10_9_x86_64.whl (816.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

asammdf-7.3.15-cp310-cp310-win_amd64.whl (822.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

asammdf-7.3.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (845.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asammdf-7.3.15-cp310-cp310-macosx_10_9_x86_64.whl (816.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

asammdf-7.3.15-cp39-cp39-win_amd64.whl (822.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

asammdf-7.3.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (845.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

asammdf-7.3.15-cp39-cp39-macosx_10_9_x86_64.whl (816.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

asammdf-7.3.15-cp38-cp38-win_amd64.whl (822.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

asammdf-7.3.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (846.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

asammdf-7.3.15-cp38-cp38-macosx_10_9_x86_64.whl (816.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: asammdf-7.3.15.tar.gz
  • Upload date:
  • Size: 740.9 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.15.tar.gz
Algorithm Hash digest
SHA256 573f6fe43fa7d69656198821d7128f1257279a05306c1bd3bc6ba381c8f3eca9
MD5 8b23ab0a870e45c3f8599127e8b5ee19
BLAKE2b-256 929b419779f8497b8ffcedd0ec274afe7580f7336ae1d3a92d285d71ad1665c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.15-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 822.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.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7fa6a7ecdb252d0388d6d66f931c1d2e9c326a643e5a5a7f93d226649596a204
MD5 70e9ed415ccdf6c84b191cb841f7eaab
BLAKE2b-256 2b660d28cac38381a8931f71691befc49769d8aec332a2f7112f6eb61927c738

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f08151a8c7749793e19ce287794113cd53074968b0964c7c89f678f86d622f4
MD5 497cbc9c3532551fef403f03a47df624
BLAKE2b-256 4e6c9f8b04ac24df0234ebb9d01dcc6bd86831d7dfc15b967d41eae5e55570a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e30d5f0e614749aabf796e371a55cad881805a27c252283e467d794e996ccb05
MD5 9446a06f8b0c6f2222beee6abe66f31a
BLAKE2b-256 940e35218a1180e9ae3fb2e51fa9ee38c521561bff67f1a2803812271f3564cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.15-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 822.9 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.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 12ad69eef92795e283b74877007c7219233b00c992826b243786c51c8e8bad45
MD5 0efabfc9988c76f181740223b10f5b89
BLAKE2b-256 9c0f9667f008ff171fc5ad749e3b515820ad1ec49cf31387197d55d056a1422d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f25893db469cdc4d1a6164188d6623f995163179ae5ed98f4cd0ba728f9263fe
MD5 45a969e093938bee6aca8b231c674a03
BLAKE2b-256 99a731118c0dd5c254d5f03c7a95a4c3efc378d774e5fac659e8232e23f0e488

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b7fa29154344b9c6070e9c644343e0b49e9b19f79c280eb845146a73c451d3ab
MD5 c4799e51743c5c63f7cc83f524878866
BLAKE2b-256 75d23f6d1f46528a94cc53648809f56905f47f027c5594dea2f8f38eaae8976a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.15-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 822.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.15-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b1ff803a0fc5f1a02f339dd6678d92847b003991dd8e3631ad4babf33303d2c3
MD5 be1909c27ab7ca2c41d54ac41e3c9582
BLAKE2b-256 85e793c28f28a83cdd6ce249efbcdd3811c58431275c5cbeeaed78ec6c7b1c49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc0f36503dc9aa1e85e1da78c45576e8d1730f8cc6f5bcb46ffd1f05af981bb4
MD5 1346120eb2af00d56f15d0452f09a91e
BLAKE2b-256 8b660e02e33fdeab84ceb55a76e760df5a8e3f4956ae2701d335799b96a4acc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1c423cd9ab7ba3971e065d673d248b47e170695a495a9d623cda82bfce3bbad4
MD5 6179a2ee90c78516e04db53e47ee724d
BLAKE2b-256 330558ee50d061ba32a7ae04a83d5d78dbdce4ce75a5bb992417da486c57f650

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.3.15-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 822.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.15-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d63cd5ea2ca7d4e108ba282d0a91b5e56899fe0b44dfcf700e03e5f3a1595537
MD5 71c80d46d3fba01a39f53aab8a0ac30f
BLAKE2b-256 4fd469c29c391d9252aec09c6757829fb64db9accfc8437cd4abac02ed8eb278

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 007f8db5696759b129e1ea1805c25b9ff607e88d86c683e59b201cc20342b5e5
MD5 e825e870cc7d2bdac27bd1dcaa0df986
BLAKE2b-256 f1a1a3643cf6a606eb8b3bf97de2279062099e0a1bd491481da411ba3003f400

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-7.3.15-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 90e6961e03b1f5e862dc23af61810f3179a77373a2e2ab9388fcef632aebd12c
MD5 e9dd7ad447d4fd211b6b90185f779053
BLAKE2b-256 77aabb6aed4db0b30781df3d4659b1c1db66fb3f58162d40706dcdeef539bbef

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