![pypi Version](https://img.shields.io/pypi/v/mat73)
# mat 7.3
Load MATLAB 7.3 .mat files into Python.
Starting with MATLAB 7.3, `.mat` files have been changed to store as custom `hdf5` files.
This means they cannot be loaded by `scipy.io.loadmat` any longer and raise.
```Python
NotImplementedError: Please use HDF reader for matlab v7.3 files, e.g. h5py
```
## Quickstart
This library loads MATLAB 7.3 HDF5 files into a Python dictionary.
```Python
import mat73
data_dict = mat73.loadmat('data.mat')
```
As easy as that!
By enabling `use_attrdict=True` you can even access sub-entries of `structs` as attributes, just like in MATLAB:
```Python
data_dict = mat73.loadmat('data.mat', use_attrdict=True)
struct = data_dict['structure'] # assuming a structure was saved in the .mat
struct[0].var1 == struct[0]['var1'] # it's the same!
```
You can also specifiy to only load a specific variable or variable tree, useful to reduce loading times
```Python
data_dict = mat73.loadmat('data.mat', only_include='structure')
struct = data_dict['structure'] # now only structure is loaded and nothing else
data_dict = mat73.loadmat('data.mat', only_include=['var/subvar/subsubvar', 'tree1/'])
tree1 = data_dict['tree1'] # the entire tree has been loaded, so tree1 is a dict with all subvars of tree1
subsubvar = data_dict['var']['subvar']['subsubvar'] # this subvar has been loaded
```
## Installation
To install, run:
```
pip install mat73
```
Alternatively for most recent version:
```
pip install git+https://github.com/skjerns/mat7.3
```
## Datatypes
The following MATLAB datatypes can be loaded
| MATLAB | Python |
| ------------------------ | ----------------- |
| logical | np.bool_ |
| single | np.float32 |
| double | np.float64 |
| int8/16/32/64 | np.int8/16/32/64 |
| uint8/16/32/64 | np.uint8/16/32/64 |
| complex | np.complex128 |
| char | str |
| struct | list of dicts |
| cell | list of lists |
| canonical empty | [] |
| missing | None |
| sparse | scipy.sparse.csc |
| Other (ie Datetime, ...) | Not supported |
## Short-comings
- This library will __only__ load mat 7.3 files. For older versions use `scipy.io.loadmat`
- Proprietary MATLAB types (e.g `datetime`, `duriation`, etc) are not supported. If someone tells me how to convert them, I'll implement that
- For now, you can't save anything back to the .mat. It's a bit more difficult than expected, so it's not on the roadmap for now
- See also [hdf5storage](https://github.com/frejanordsiek/hdf5storage), which can indeed be used for saving .mat, but has less features for loading
- See also [pymatreader](https://gitlab.com/obob/pymatreader/) which has a (maybe even better) implementation of loading MAT files, even for older ones
Raw data
{
"_id": null,
"home_page": "https://github.com/skjerns/mat7.3",
"name": "mat73",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "skjerns",
"author_email": "nomail@nomail.com",
"download_url": "https://files.pythonhosted.org/packages/92/61/0e6375513085b13ad23ab150fc83d4d8faa91cba56eb2f30b646259f8214/mat73-0.65.tar.gz",
"platform": null,
"description": "![pypi Version](https://img.shields.io/pypi/v/mat73)\n\n# mat 7.3\n\nLoad MATLAB 7.3 .mat files into Python.\n\nStarting with MATLAB 7.3, `.mat` files have been changed to store as custom `hdf5` files.\nThis means they cannot be loaded by `scipy.io.loadmat` any longer and raise.\n\n```Python\nNotImplementedError: Please use HDF reader for matlab v7.3 files, e.g. h5py\n```\n\n## Quickstart\n\nThis library loads MATLAB 7.3 HDF5 files into a Python dictionary.\n\n```Python\nimport mat73\ndata_dict = mat73.loadmat('data.mat')\n```\n\nAs easy as that!\n\nBy enabling `use_attrdict=True` you can even access sub-entries of `structs` as attributes, just like in MATLAB:\n\n```Python\ndata_dict = mat73.loadmat('data.mat', use_attrdict=True) \nstruct = data_dict['structure'] # assuming a structure was saved in the .mat\nstruct[0].var1 == struct[0]['var1'] # it's the same!\n```\n\nYou can also specifiy to only load a specific variable or variable tree, useful to reduce loading times\n\n```Python\ndata_dict = mat73.loadmat('data.mat', only_include='structure') \nstruct = data_dict['structure'] # now only structure is loaded and nothing else\n\ndata_dict = mat73.loadmat('data.mat', only_include=['var/subvar/subsubvar', 'tree1/']) \ntree1 = data_dict['tree1'] # the entire tree has been loaded, so tree1 is a dict with all subvars of tree1\nsubsubvar = data_dict['var']['subvar']['subsubvar'] # this subvar has been loaded\n```\n\n## Installation\n\nTo install, run:\n\n```\npip install mat73\n```\n\nAlternatively for most recent version:\n\n```\npip install git+https://github.com/skjerns/mat7.3\n```\n\n## Datatypes\n\nThe following MATLAB datatypes can be loaded\n\n| MATLAB | Python |\n| ------------------------ | ----------------- |\n| logical | np.bool_ |\n| single | np.float32 |\n| double | np.float64 |\n| int8/16/32/64 | np.int8/16/32/64 |\n| uint8/16/32/64 | np.uint8/16/32/64 |\n| complex | np.complex128 |\n| char | str |\n| struct | list of dicts |\n| cell | list of lists |\n| canonical empty | [] |\n| missing | None |\n| sparse | scipy.sparse.csc |\n| Other (ie Datetime, ...) | Not supported |\n\n## Short-comings\n\n- This library will __only__ load mat 7.3 files. For older versions use `scipy.io.loadmat`\n- Proprietary MATLAB types (e.g `datetime`, `duriation`, etc) are not supported. If someone tells me how to convert them, I'll implement that\n- For now, you can't save anything back to the .mat. It's a bit more difficult than expected, so it's not on the roadmap for now\n- See also [hdf5storage](https://github.com/frejanordsiek/hdf5storage), which can indeed be used for saving .mat, but has less features for loading\n- See also [pymatreader](https://gitlab.com/obob/pymatreader/) which has a (maybe even better) implementation of loading MAT files, even for older ones\n",
"bugtrack_url": null,
"license": "GPL3",
"summary": "Load MATLAB .mat 7.3 into Python native data types (via h5/hd5/hdf5/h5py)",
"version": "0.65",
"project_urls": {
"Download": "https://github.com/skjerns/mat7.3/archive/v0.65.tar.gz",
"Homepage": "https://github.com/skjerns/mat7.3"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c924e867b1b89b2a2102a5a3bb64ddcd49c5cb815244b2dadff7740c6a422e4f",
"md5": "ee6d2d5e3796f7aed4f2382561a29515",
"sha256": "aadfcd00f328eb8f75dd1d4a060a956dc0abefcf5af20f5bc69a5aae64d62cbf"
},
"downloads": -1,
"filename": "mat73-0.65-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ee6d2d5e3796f7aed4f2382561a29515",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 19665,
"upload_time": "2024-07-24T09:12:31",
"upload_time_iso_8601": "2024-07-24T09:12:31.976559Z",
"url": "https://files.pythonhosted.org/packages/c9/24/e867b1b89b2a2102a5a3bb64ddcd49c5cb815244b2dadff7740c6a422e4f/mat73-0.65-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "92610e6375513085b13ad23ab150fc83d4d8faa91cba56eb2f30b646259f8214",
"md5": "d69d69418892b41d28036d0d07c904de",
"sha256": "ad38a06af3d483632bd939ee572b3724ea8c03d37916765d7278f9de95541ade"
},
"downloads": -1,
"filename": "mat73-0.65.tar.gz",
"has_sig": false,
"md5_digest": "d69d69418892b41d28036d0d07c904de",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19355,
"upload_time": "2024-07-24T09:12:33",
"upload_time_iso_8601": "2024-07-24T09:12:33.007044Z",
"url": "https://files.pythonhosted.org/packages/92/61/0e6375513085b13ad23ab150fc83d4d8faa91cba56eb2f30b646259f8214/mat73-0.65.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-24 09:12:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "skjerns",
"github_project": "mat7.3",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "h5py",
"specs": [
[
">=",
"3.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.19"
]
]
}
],
"lcname": "mat73"
}