Example #1
0
 def __setstate__(self, state):
     "Experimental unpickling support."
     global mlab  #XXX this should be dealt with correctly
     old_name = state['name']
     mlab_name = "UNPICKLED%s__" % gensym('')
     tmp_filename = None
     try:
         tmp_filename = strToTempfile(state['mlab_contents'],
                                      suffix='.mat',
                                      binary=1)
         mlabraw.eval(
             mlab._session, "TMP_UNPICKLE_STRUCT__ = load('%s', '%s');" %
             (tmp_filename, old_name))
         mlabraw.eval(
             mlab._session,
             "%s = TMP_UNPICKLE_STRUCT__.%s;" % (mlab_name, old_name))
         mlabraw.eval(mlab._session, "clear TMP_UNPICKLE_STRUCT__;")
         # XXX
         mlab._make_proxy(
             mlab_name,
             constructor=lambda *args: self.__init__(*args) or self)
         mlabraw.eval(mlab._session, 'clear %s;' % mlab_name)
     finally:
         if tmp_filename and os.path.exists(tmp_filename):
             os.remove(tmp_filename)
Example #2
0
 def _get_cell(self, varname):
     # XXX can currently only handle ``{}`` and 1D cells
     mlabraw.eval(self._session,
                "TMP_SIZE_INFO__ = \
                [all(size(%(vn)s) == 0), \
                 min(size(%(vn)s)) == 1 & ndims(%(vn)s) == 2, \
                 max(size(%(vn)s))];" % {'vn':varname})
     is_empty, is_rank1, cell_len = map(int,
                                        self._get("TMP_SIZE_INFO__", remove=True).flat)
     if is_empty:
         return []
     elif is_rank1:
         cell_bits = (["TMP%i%s__" % (i, gensym('_'))
                        for i in range(cell_len)])
         mlabraw.eval(self._session, '[%s] = deal(%s{:});' %
                    (",".join(cell_bits), varname))
         # !!! this recursive call means we have to take care with
         # overwriting temps!!!
         return self._get_values(cell_bits)
     else:
         raise MlabConversionError("Not a 1D cell array")
Example #3
0
 def __setstate__(self, state):
     "Experimental unpickling support."
     global mlab         #XXX this should be dealt with correctly
     old_name = state['name']
     mlab_name = "UNPICKLED%s__" % gensym('')
     tmp_filename = None
     try:
         tmp_filename = strToTempfile(
             state['mlab_contents'], suffix='.mat', binary=1)
         mlabraw.eval(mlab._session,
                    "TMP_UNPICKLE_STRUCT__ = load('%s', '%s');" % (
             tmp_filename, old_name))
         mlabraw.eval(mlab._session,
                    "%s = TMP_UNPICKLE_STRUCT__.%s;" % (mlab_name, old_name))
         mlabraw.eval(mlab._session, "clear TMP_UNPICKLE_STRUCT__;")
         # XXX
         mlab._make_proxy(mlab_name, constructor=lambda *args: self.__init__(*args) or self)
         mlabraw.eval(mlab._session, 'clear %s;' % mlab_name)
     finally:
         if tmp_filename and os.path.exists(tmp_filename):
             os.remove(tmp_filename)
Example #4
0
 def _get_cell(self, varname):
     # XXX can currently only handle ``{}`` and 1D cells
     mlabraw.eval(self._session,
                "TMP_SIZE_INFO__ = \
                [all(size(%(vn)s) == 0), \
                 min(size(%(vn)s)) == 1 & ndims(%(vn)s) == 2, \
                 max(size(%(vn)s))];" % {'vn':varname})
     is_empty, is_rank1, cell_len = map(int,
                                        self._get("TMP_SIZE_INFO__", remove=True).flat)
     if is_empty:
         return []
     elif is_rank1:
         cell_bits = (["TMP%i%s__" % (i, gensym('_'))
                        for i in range(cell_len)])
         mlabraw.eval(self._session, '[%s] = deal(%s{:});' %
                    (",".join(cell_bits), varname))
         # !!! this recursive call means we have to take care with
         # overwriting temps!!!
         return self._get_values(cell_bits)
     else:
         raise MlabConversionError("Not a 1D cell array")