Introduction¶
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
Features¶
create new mdf files from scratch
append new channels
read unsorted MDF v3 and v4 files
read CAN bus logging files
filter a subset of channels from original mdf file
cut measurement to specified time interval
convert to different mdf version
export to Excel, HDF5, Matlab and CSV
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) using memory = minimum argument
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
Major features not implemented (yet)¶
for version 3
- functionality related to sample reduction block
for version 4
- functionality related to sample reduction block
- handling of channel hierarchy
- full handling of bus logging measurements
- handling of unfinished measurements (mdf 4)
- full support for remaining mdf 4 channel arrays types
- xml schema for MDBLOCK
- full handling of event blocks
- channels with default X axis
- chanenls with reference to attachment
Dependencies¶
asammdf uses the following libraries
- numpy : the heart that makes all tick
- numexpr : for algebraic and rational channel conversions
- matplotlib : for Signal plotting
- wheel : for installation in virtual environments
- pandas : for DataFrame export
- canmatrix : to handle CAN bus logging measurements
optional dependencies needed for exports
- h5py : for HDF5 export
- xlsxwriter : for Excel export
- scipy : for Matlab .mat export
other optional dependencies
- chardet : to detect non-standard unicode encodings
Installation¶
asammdf is available on
- github: https://github.com/danielhrisca/asammdf/
- PyPI: https://pypi.org/project/asammdf/
- conda-forge: https://anaconda.org/conda-forge/asammdf