Skip to main content

A package for reading MATLAB .mat files, with support for MATLAB datatypes like table and string

Project description

Mat-IO Module

The mat-io module provides tools for reading .mat files, particularly for extracting contents from user-defined objects or MATLAB datatypes such as datetime, table and string. It uses a wrapper built around scipy.io to extract raw subsystem data from MAT-files, which is then parsed and interpreted to extract object data. Currently supported MATLAB objects are:

  • string
  • datetime
  • duration
  • table
  • timetable
  • Enumeration Instance Arrays
  • User-defined objects

Note: load_from_mat() uses a modified fork of scipy. The fork currently contains a few minor changes to scipy.io to return variable names and object metadata for all objects in a MAT-file. This change is available on Github and can be installed directly from the branch. You can also view the changes under patches/scipy_changes.patch and apply it manually. Note that you might need to rebuild as parts of the Cython code was modified. Follow the instruction on the official SciPy documentation.

Usage

Install using pip

pip install mat-io

Example

To read subsystem data from a .mat file:

from matio import load_from_mat

file_path = "path/to/your/file.mat"
data = load_from_mat(file_path, raw_data=False)
print(data)

Parameters

  • file_path: str Full path to the MAT-file.

  • raw_data: bool, optional

    • If False (default), returns object data as raw object data
    • If True, converts data into respective Pythonic datatypes (e.g., string, datetime and table).
  • mdict: dict, optional Dictionary into which MATLAB variables will be inserted. If None, a new dictionary is created and returned.

  • spmatrix: bool, optional (default = True) Whether to read MATLAB sparse matrices as SciPy sparse matrix coo_matrix.

  • **kwargs: Additional keyword arguments passed to scipy.io.loadmat. These include:

    • byte_order
    • mat_dtype
    • chars_as_strings
    • matlab_compatible
    • verify_compressed_data_integrity
    • variable_names
    • uint16_codec

MATLAB objects

MATLAB objects are returned as a dictionary with the following fields:

  • _Class: The class name
  • _Props: A structured numpy.ndarray containing the property names and their contents. Dimensions are determined by the object dimensions.

If the raw_data parameter is set to False, then load_from_mat converts these objects into a corresponding Pythonic datatype. This conversion is detailed here.

Contribution

There's still lots to do! I could use your help in the following:

  • Reverse engineer the MAT-file structure to include support for more objects like categorical, calendarDuration and others
  • Write object data into MAT-files
  • Write tests
  • Algorithmic optimization to integrate within the scipy.io framework
  • Documentation of the MAT-file format

Feel free to create a PR if you'd like to add something, or open up an issue if you'd like to discuss! I've also opened an issue with scipy.io detailing some of the workflow, as well as a PR to develop this iteratively. Please feel free to contribute there as well!

Acknowledgement

Big thanks to mahalex for their detailed breakdown of MAT-files. A lot of this wouldn't be possible without it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mat_io-0.1.1.tar.gz (78.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mat_io-0.1.1-py3-none-any.whl (94.9 kB view details)

Uploaded Python 3

File details

Details for the file mat_io-0.1.1.tar.gz.

File metadata

  • Download URL: mat_io-0.1.1.tar.gz
  • Upload date:
  • Size: 78.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for mat_io-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d94813347adcac38e44c28441a0629b4d81f192a12105e160ceb9c5f01a3855e
MD5 32c2c173ab99d893a42aabbc4cd7fa75
BLAKE2b-256 47907ae8b7311659afa865b0018e78faef70daa7f3066cf6fbe16c392cd92fed

See more details on using hashes here.

File details

Details for the file mat_io-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mat_io-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 94.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for mat_io-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 56a0c3c6b962434034736bdd3be40b658f584dd72ab588fff23b9c11f53e3126
MD5 2f4ed633c5d13960316f513901046b24
BLAKE2b-256 2fef2c9b86a842746da57df112a2378aab31bc41573d17843c3beccdd609c5b0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page