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/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 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
  • faust-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

This version

8.0.1

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

Uploaded Source

Built Distributions

asammdf-8.0.1-cp312-cp312-win_amd64.whl (891.3 kB view details)

Uploaded CPython 3.12 Windows x86-64

asammdf-8.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (920.7 kB view details)

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

asammdf-8.0.1-cp312-cp312-macosx_11_0_arm64.whl (888.3 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

asammdf-8.0.1-cp311-cp311-win_amd64.whl (891.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

asammdf-8.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (920.3 kB view details)

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

asammdf-8.0.1-cp311-cp311-macosx_11_0_arm64.whl (888.2 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

asammdf-8.0.1-cp310-cp310-win_amd64.whl (891.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

asammdf-8.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (920.2 kB view details)

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

asammdf-8.0.1-cp310-cp310-macosx_11_0_arm64.whl (888.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

asammdf-8.0.1-cp39-cp39-win_amd64.whl (891.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

asammdf-8.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (920.2 kB view details)

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

asammdf-8.0.1-cp39-cp39-macosx_11_0_arm64.whl (888.2 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: asammdf-8.0.1.tar.gz
  • Upload date:
  • Size: 805.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asammdf-8.0.1.tar.gz
Algorithm Hash digest
SHA256 aa40bb4103aefbea75777ff4888c8ee20089e62f0c141f7e07c01de1beb93247
MD5 00a69b0fe768bf5cc39db5206a4f1c6b
BLAKE2b-256 6a5c5173d96d95dbb75f2700baf2e30ab71d91326b9187c993b44ad2730a8733

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: asammdf-8.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 891.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asammdf-8.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d9685e07503671816680b485c7032716acac72fd31e247a6acb059a775cd2100
MD5 82aa2ce99598779f09497a2991486e60
BLAKE2b-256 f4a96ad9208ed9f5ed077dddca45c12b192e3b1c9641e959742cdede549c0e49

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a07ebbbf1f4f6f724a2f992eaff809a4f6000e7e9a1796657e9857e589529e57
MD5 bb4f6f0eb29eba1e73d1c9ca2b106050
BLAKE2b-256 448c5b2385bc3b0511a2a96ed8e1643df64dcf190d60cfb95849625a9ab7c8b4

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e70cfc85a16e96569d45e304796d4401b5e3796d7f846d6f66da44b6baf77aec
MD5 d186db9d5d8d861bbcd03db426b70453
BLAKE2b-256 5238db219cbbe76dbcb1d32dba768fc4fca192c098b6fca1862805a06e0c1fc0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-8.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 891.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asammdf-8.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d9638e8c3e68c835334df9921269481d05fa315b58383ae36c24565ff2e0a7e4
MD5 6dc29a9ee40b9cce49e198e77ac3b501
BLAKE2b-256 051755ead6eb4f7ee972597c0e3a4ee61c26e12352e30cf5cc9ad9a3521bce70

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7238f979c63eace224b950c26c9dce42f7c7beaeb93a1a13a6579f3f927f8257
MD5 e7d774db4434f3897c6a1c408dfecd85
BLAKE2b-256 fa3344389149c25305301a7889b7b69c3cf49675c7159af236dd502ed31e7a97

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac0991237ff05c2e49df02a8dd8c678510f690834e243e1d80e63e3155d4d7b0
MD5 5917146c4b14f9260928be362b6c4234
BLAKE2b-256 42c7ab728e41912a3cfe0e5298067cee8adbec94bce8f6ae51b5bec6562e63fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-8.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 891.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asammdf-8.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2a662e782fe8bb70ece1a7c491c16db354fbc70a594a20da7ab0f5c7fb72c17d
MD5 684e1a072abec7f84beb0bfd72e0537f
BLAKE2b-256 ba9e88f823f42896d7b1c19219c45800342eccf32e424540459261b4d6594d1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asammdf-8.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea4e877daa191769ea7b5f793d221e870679c8b49e173641e929c3154b8d7c4f
MD5 98cb792d62dd5ee6f2e03f21794d8a58
BLAKE2b-256 a0f800afd48da235a4a2a2fe1d360d127c678c064c127c59f15b6428b1398d08

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9154985456d0c918b02345467d9507dc9f45a44aa06360a2c33e861c1e3b8ea7
MD5 d99b37aa060f8beb1d9c5407f5f858fb
BLAKE2b-256 810372d977a800ccfd727b2b1433ba9df1a6f60d425978e4f944b195f66f2000

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-8.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 891.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asammdf-8.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b704b637bb773d32b5166e597f1b398eaedcf2dd365f184412732257a34cd9ac
MD5 b5ea34125b30b0b76eee38c6d395da5e
BLAKE2b-256 9784434c0ab921f52eaedecbd94a0314ba64d6c73b55fa512694f7ac0c6489ea

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f7cc100be038d95a3928f31ca90fef66a80fdfaaee0f8f96b424e240ccf9b72
MD5 0ac9f5b76acb86096d9e7151252bd4eb
BLAKE2b-256 58bf502b837b0f687d6e13cca1634a64be6c00f0751a723f909685ef0b191e3e

See more details on using hashes here.

File details

Details for the file asammdf-8.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for asammdf-8.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb63b3c072a8f3c5c0d3afa26284e5e281fbd73e191ab6e8f7941e69333fd16e
MD5 88f40e98fa6bb03fb4a6d7bc7b9341a5
BLAKE2b-256 75299ba06bec84c81cb5d6d0dec7324fd18a474221cd75f929f082d4427b9a03

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