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.7 (for Python 2.7, 3.4 and 3.5 see the 4.x.y releases)

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 (v4, v5 and 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

optional dependencies needed for exports

  • h5py : for HDF5 export
  • scipy : for Matlab v4 and v5 .mat export
  • hdf5storage : for Matlab v7.3 .mat export
  • fastparquet : for parquet export

other optional dependencies

  • PyQt5 : 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
  • pyqtlet : for GPS window
  • isal : for faster zlib compression/decompression

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

Uploaded Source

Built Distributions

asammdf-7.0.4-cp310-cp310-win_amd64.whl (699.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

asammdf-7.0.4-cp310-cp310-macosx_10_15_x86_64.whl (692.4 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

asammdf-7.0.4-cp39-cp39-win_amd64.whl (699.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

asammdf-7.0.4-cp39-cp39-macosx_10_15_x86_64.whl (692.4 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

asammdf-7.0.4-cp38-cp38-win_amd64.whl (699.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

asammdf-7.0.4-cp38-cp38-macosx_10_14_x86_64.whl (692.3 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

asammdf-7.0.4-cp37-cp37m-win_amd64.whl (698.9 kB view details)

Uploaded CPython 3.7m Windows x86-64

asammdf-7.0.4-cp37-cp37m-macosx_10_14_x86_64.whl (692.3 kB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

File details

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

File metadata

  • Download URL: asammdf-7.0.4.tar.gz
  • Upload date:
  • Size: 627.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4.tar.gz
Algorithm Hash digest
SHA256 f60a50220abc5818059dc6aff4efaa18a5bfab88e1c4d1c2c1be8e0b3229f490
MD5 8c21df57ee31a2a878274b6850e6ead9
BLAKE2b-256 1b2f1d8a8cabb32c3e8ce874401ea821e8996ecd44c117b9838d0b05946b6b3a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 699.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 75f0bb90a508d8566c98b55fab0c9602bbcaf68d88009e5b38fcc68169b03492
MD5 8c5ec0860442a223b99e40bf5736fbea
BLAKE2b-256 a0e9c9c2f7f2379c3dad8dc5b728d14a22be5dbd80c7f16c4bfc1bdc75c98693

See more details on using hashes here.

File details

Details for the file asammdf-7.0.4-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: asammdf-7.0.4-cp310-cp310-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 692.4 kB
  • Tags: CPython 3.10, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f8e2b75674ef262e5d54824e71c181e9fb041595502da738c5dd36a5785d4e4b
MD5 8a4d9d0c5fdf13ccc06e2aaef278a5f4
BLAKE2b-256 084c01801c032f0fc1d223bea04f6eb7af27b30f5fbea197e6095c20913ae87a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.0.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 699.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 47bde0307258adc046ea41691b86d5f2bda43e6aada3d39da32460770ebbde13
MD5 cde82444c04a171c9244055b2e5ceeba
BLAKE2b-256 c1eaa122bac8602a15387ddd507ebb0b5a138385b4462c154e64654b68e5a9f1

See more details on using hashes here.

File details

Details for the file asammdf-7.0.4-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: asammdf-7.0.4-cp39-cp39-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 692.4 kB
  • Tags: CPython 3.9, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7bf8fe79016f9b988b84f8c49f5ced7fad92206cb728485a87ef1cb5888984f7
MD5 f9fc9ebc291a5802fcacd5ed30c1ff77
BLAKE2b-256 a7579604180b397a9776c1b19153800f1267a6f0bebca3f5fab38e9b1515248b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asammdf-7.0.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 699.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5291d6c862cbeef2c0f8f21bcbfb58e2af5874d7f9bb1618dfa6be53b47bd6fa
MD5 2d17fb1ac5a0b31c3900226efbcb89e3
BLAKE2b-256 38fc6fb9d2164993563bee774e01ec2669db121a89b80c81dd48b11b3f063f70

See more details on using hashes here.

File details

Details for the file asammdf-7.0.4-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: asammdf-7.0.4-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 692.3 kB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d51bcf6da5743dc436de993d2da644fc8dcd52864cfbd0f16d1c9e1134a853c4
MD5 34e79fb23135e8e1cb09b55d0f3df2ed
BLAKE2b-256 9f69fec0e680597742dbe58317bddbba7b143dc79edd7f654cca8784abcd5ea8

See more details on using hashes here.

File details

Details for the file asammdf-7.0.4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: asammdf-7.0.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 698.9 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 3c5a6611b63a4acaa48949011676d9728d5c0ed47aa1f1120c346b8e02b17822
MD5 d72c2827c9bf1956ae7f8a967d691050
BLAKE2b-256 ece74a102ee8794ed257bcccebdb9cc64410d33fd6869b4cbb33bea84e8fbce6

See more details on using hashes here.

File details

Details for the file asammdf-7.0.4-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: asammdf-7.0.4-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 692.3 kB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for asammdf-7.0.4-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 fecfcef0f877bb6f79c33e96804ac9810942b17d8ed6273fd8ffeeb12813874f
MD5 7f3d15d45713078b58c9bb66ae49cf76
BLAKE2b-256 b2fbffb4709161de9a99444bbd6804de955a424d83f4fac6edd3f7232bf06208

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