.. raw:: html
.. role:: red
.. role:: blue
.. role:: green
.. role:: cyan
.. role:: magenta
.. role:: orange
.. role:: brown
.. _mdf:
MDF
===
This class acts as a proxy for the MDF3 and MDF4 classes.
All attribute access is delegated to the underlying *_file* attribute (MDF3 or MDF4 object).
See MDF3 and MDF4 for available extra methods.
An empty MDF file is created if the *name* argument is not provided.
If the *name* argument is provided then the file must exist in the filesystem, otherwise an exception is raised.
Best practice is to use the MDF as a context manager. This way all resources are released correctly in case of exceptions.
.. code::
with MDF(r'test.mdf') as mdf_file:
# do something
.. autoclass:: asammdf.mdf.MDF
:members:
MDF3 and MDF4 classes
---------------------
.. toctree::
:maxdepth: 1
mdf3
mdf4
Notes about *load_measured_data* argument
-----------------------------------------
By default when the *MDF* object is created the raw channel data is loaded into RAM.
This will give you the best performance from *asammdf*.
However if you reach the physical memmory limit *asammdf* gives you the option use the *load_measured_data* flag.
In this case the raw channel data is not read.
*MDF* defaults
^^^^^^^^^^^^^^
Advantages
* best performance
Disadvantages
* higher RAM usage, there is the chance the file will exceed available RAM
Use case
* when data fits inside the system RAM
*MDF* with *load_measured_data*
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Advantages
* lowest RAM usage
* can handle files that do not fit in the available physical memory
Disadvantages
* slow performance for getting channel data
* must call *close* method to release the temporary file used in case of appending.
.. note::
it is advised to use the MDF context manager in this case
Use case
* when *default* data exceeds available RAM
.. note::
See benchmarks for the effects of using the flag