[Scipy-tickets] [SciPy] #1319: io.loadmat not working on MATLAB ASCII files
SciPy Trac
scipy-tickets@scipy....
Mon Oct 25 14:11:30 CDT 2010
#1319: io.loadmat not working on MATLAB ASCII files
------------------------+---------------------------------------------------
Reporter: daviesk24 | Owner: somebody
Type: defect | Status: closed
Priority: lowest | Milestone: 0.9.0
Component: scipy.io | Version: 0.7.0
Resolution: invalid | Keywords:
------------------------+---------------------------------------------------
Changes (by pv):
* status: new => closed
* resolution: => invalid
Old description:
> I am just getting started with SciPy. I'd like to use it to load data
> that a stand-alone program is saving as a MATLAB version 4 in ASCII.
> I've isolated the problem a little bit. I'd appreciate any help.
> Thanks!
>
> In MATLAB, try:
> a = 1:10;
> save('test_binary.mat', 'a')
> save('-ascii', 'test_ascii.mat', 'a')
>
> Then in Python, try:
> import scipy.io
>
> print "Trying to load test_binary.mat..."
> b = scipy.io.loadmat("test_binary.mat", struct_as_record=True)
> print b
>
> print "\nTrying to load test_ascii.mat..."
> c = scipy.io.loadmat("test_ascii.mat", struct_as_record=True)
> print c
>
> I get the following (MATLAB R2007A and Python v2.6 on Ubuntu 10.04):
> Trying to load test_binary.mat...
> {'a': array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]], dtype=uint8),
> '__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform:
> GLNX86, Created on: Mon Oct 25 11:59:50 2010', '__globals__': []}
>
> Trying to load test_ascii.mat...
> Traceback (most recent call last):
> File "./load_data.py", line 21, in <module>
> c = scipy.io.loadmat("test_ascii.mat", struct_as_record=True)
> File "/usr/lib/python2.6/dist-packages/scipy/io/matlab/mio.py", line
> 110, in loadmat
> MR = mat_reader_factory(file_name, appendmat, **kwargs)
> File "/usr/lib/python2.6/dist-packages/scipy/io/matlab/mio.py", line
> 80, in mat_reader_factory
> mjv, mnv = get_matfile_version(byte_stream)
> File "/usr/lib/python2.6/dist-packages/scipy/io/matlab/miobase.py",
> line 125, in get_matfile_version
> raise ValueError('Unknown mat file type, version %s' % ret)
> TypeError: not all arguments converted during string formatting
>
> I've tried all the settings of byte_order in loadmat(), but none seem to
> work.
New description:
I am just getting started with SciPy. I'd like to use it to load data
that a stand-alone program is saving as a MATLAB version 4 in ASCII. I've
isolated the problem a little bit. I'd appreciate any help. Thanks!
In MATLAB, try:
{{{
a = 1:10;
save('test_binary.mat', 'a')
save('-ascii', 'test_ascii.mat', 'a')
}}}
Then in Python, try:
{{{
import scipy.io
print "Trying to load test_binary.mat..."
b = scipy.io.loadmat("test_binary.mat", struct_as_record=True)
print b
print "\nTrying to load test_ascii.mat..."
c = scipy.io.loadmat("test_ascii.mat", struct_as_record=True)
print c
}}}
I get the following (MATLAB R2007A and Python v2.6 on Ubuntu 10.04):
{{{
Trying to load test_binary.mat...
{'a': array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]], dtype=uint8),
'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform:
GLNX86, Created on: Mon Oct 25 11:59:50 2010', '__globals__': []}
Trying to load test_ascii.mat...
Traceback (most recent call last):
File "./load_data.py", line 21, in <module>
c = scipy.io.loadmat("test_ascii.mat", struct_as_record=True)
File "/usr/lib/python2.6/dist-packages/scipy/io/matlab/mio.py", line
110, in loadmat
MR = mat_reader_factory(file_name, appendmat, **kwargs)
File "/usr/lib/python2.6/dist-packages/scipy/io/matlab/mio.py", line 80,
in mat_reader_factory
mjv, mnv = get_matfile_version(byte_stream)
File "/usr/lib/python2.6/dist-packages/scipy/io/matlab/miobase.py", line
125, in get_matfile_version
raise ValueError('Unknown mat file type, version %s' % ret)
TypeError: not all arguments converted during string formatting
}}}
I've tried all the settings of byte_order in loadmat(), but none seem to
work.
--
Comment:
Matlab ASCII files are not MAT-files but plain text files.
You should use `numpy.loadtxt` to load those.
--
Ticket URL: <http://projects.scipy.org/scipy/ticket/1319#comment:2>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.
More information about the Scipy-tickets
mailing list