%global _empty_manifest_terminate_build 0
Name: python-asammdf
Version: 7.3.12
Release: 1
Summary: ASAM MDF measurement data file parser
License: LGPLv3+
URL: https://github.com/danielhrisca/asammdf
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/fb/7b/d928cf7aa8501d898eb146dc61c3656a31500369d36db9f6f5436a5043f7/asammdf-7.3.12.tar.gz
Requires: python3-canmatrix[arxml,dbc]
Requires: python3-lz4
Requires: python3-numexpr
Requires: python3-numpy
Requires: python3-pandas
Requires: python3-typing-extensions
Requires: python3-dateutil
Requires: python3-isal
Requires: python3-cChardet
Requires: python3-chardet
Requires: python3-cryptography
Requires: python3-keyring
Requires: python3-fastparquet
Requires: python3-h5py
Requires: python3-hdf5storage
Requires: python3-snappy
Requires: python3-scipy
Requires: python3-fsspec
Requires: python3-lxml
Requires: python3-natsort
Requires: python3-psutil
Requires: python3-PySide6
Requires: python3-pyqtgraph
Requires: python3-pyqtlet2
Requires: python3-numexpr3
%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 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml) | [](https://coveralls.io/github/danielhrisca/asammdf?branch=master) | [](https://www.codacy.com/app/danielhrisca/asammdf?utm_source=github.com&utm_medium=referral&utm_content=danielhrisca/asammdf&utm_campaign=badger) | [](http://asammdf.readthedocs.io/en/master/?badge=stable) |
| PyPI | conda-forge |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [](https://badge.fury.io/py/asammdf) | [](https://anaconda.org/conda-forge/asammdf) |
# 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
```python
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](https://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-gui/)
# Contributing & Support
Please have a look over the [contributing guidelines](CONTRIBUTING.md)
If you enjoy this library please consider making a donation to the
[numpy project](https://numfocus.org/donate-to-numpy) or to [danielhrisca using liberapay](https://liberapay.com/danielhrisca/donate)
## Contributors
Thanks to all who contributed with commits to *asammdf*:
*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 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml) | [](https://coveralls.io/github/danielhrisca/asammdf?branch=master) | [](https://www.codacy.com/app/danielhrisca/asammdf?utm_source=github.com&utm_medium=referral&utm_content=danielhrisca/asammdf&utm_campaign=badger) | [](http://asammdf.readthedocs.io/en/master/?badge=stable) |
| PyPI | conda-forge |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [](https://badge.fury.io/py/asammdf) | [](https://anaconda.org/conda-forge/asammdf) |
# 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
```python
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](https://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-gui/)
# Contributing & Support
Please have a look over the [contributing guidelines](CONTRIBUTING.md)
If you enjoy this library please consider making a donation to the
[numpy project](https://numfocus.org/donate-to-numpy) or to [danielhrisca using liberapay](https://liberapay.com/danielhrisca/donate)
## Contributors
Thanks to all who contributed with commits to *asammdf*:
*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 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml) | [](https://coveralls.io/github/danielhrisca/asammdf?branch=master) | [](https://www.codacy.com/app/danielhrisca/asammdf?utm_source=github.com&utm_medium=referral&utm_content=danielhrisca/asammdf&utm_campaign=badger) | [](http://asammdf.readthedocs.io/en/master/?badge=stable) |
| PyPI | conda-forge |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [](https://badge.fury.io/py/asammdf) | [](https://anaconda.org/conda-forge/asammdf) |
# 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
```python
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](https://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-gui/)
# Contributing & Support
Please have a look over the [contributing guidelines](CONTRIBUTING.md)
If you enjoy this library please consider making a donation to the
[numpy project](https://numfocus.org/donate-to-numpy) or to [danielhrisca using liberapay](https://liberapay.com/danielhrisca/donate)
## Contributors
Thanks to all who contributed with commits to *asammdf*: