コード例 #1
0
ファイル: mlabwraptester.py プロジェクト: bh0085/programming
 def _get_cell(self, varname):
     # XXX can currently only handle 1D
     mlabraw.eval(self._session,
                "TMP_SIZE_INFO__ = \
                [min(size(%(vn)s)) == 1 & ndims(%(vn)s) == 2, \
                max(size(%(vn)s))];" % {'vn':varname})
     is_rank1, cell_len = self._get("TMP_SIZE_INFO__", remove=True).flat
     if 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")
コード例 #2
0
ファイル: _mlabwrap.py プロジェクト: bh0085/programming
 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('')
     try:
         tmp_filename = mktemp('.mat')
         spitOut(state['mlab_contents'], tmp_filename, binary=1)
         mlab._raw_eval(
           "TMP_UNPICKLE_STRUCT__ = load('%s', '%s');" % (
             tmp_filename, old_name))
         mlab._raw_eval(
           "%s = TMP_UNPICKLE_STRUCT__.%s;" % (mlab_name, old_name))
         mlab._raw_eval("clear TMP_UNPICKLE_STRUCT__;")
         # XXX
         mlab._make_proxy(mlab_name, constructor=lambda *args: self.__init__(*args) or self)
         mlab._raw_eval('clear %s;' % mlab_name)
     finally:
         if os.path.exists(tmp_filename): os.remove(tmp_filename)