[SciPy-dev] Patch for writing Matlab structs with long field names
Vebjorn Ljosa
ljosa@broad.mit....
Fri Dec 5 17:57:43 CST 2008
There is a bug in io/matlab/mio5.py: it can only write structs the file
names of which are shorter than 32 characters. I am passing on a patch
from Lee Kamentsky <leek@broad.mit.edu> that extends this to the 64
characters, which is what Matlab can handle.
Thanks,
Vebjorn
Index: mio5.py
===================================================================
--- mio5.py (revision 5227)
+++ mio5.py (working copy)
@@ -808,9 +808,11 @@
def write_fields(self):
# write fieldnames
fieldnames = [f[0] for f in self.arr.dtype.descr]
- self.write_element(np.array([32], dtype='i4'))
- self.write_element(np.array(fieldnames, dtype='S32'),
- mdtype=miINT8)
+ length = max([len(fieldname) for fieldname in fieldnames])+1
+ if length > 64:
+ raise ValueError, "Field names are restricted to 64 characters in Matlab"
+ self.write_element(np.array([length], dtype='i4'))
+ self.write_element(np.array(fieldnames, dtype='S%d'%(length)), mdtype=miINT8)
A = np.atleast_2d(self.arr).flatten('F')
MWG = Mat5WriterGetter(self.file_stream,
self.unicode_strings)
More information about the Scipy-dev
mailing list