def savez(file, *args, **kwds): __doc__ = numpy.savez.__doc__ import zipfile from numpy.lib import format if isinstance(file, basestring): if not file.endswith('.npz'): file = file + '.npz' namedict = kwds for i, val in enumerate(args): key = 'arr_%d' % i if key in namedict.keys(): raise ValueError("Cannot use un-named variables and keyword %s" % key) namedict[key] = val zip = zipfile.ZipFile(file, mode="wb") # Place to write temporary .npy files # before storing them in the zip. We need to path this to have a working # function in parallel ! import tempfile direc = tempfile.mkdtemp() for key, val in iteritems(namedict): fname = key + '.npy' filename = os.path.join(direc, fname) fid = open(filename, 'wb') format.write_array(fid, numpy.asanyarray(val)) fid.close() zip.write(filename, arcname=fname) zip.close() shutil.rmtree(direc)
def make_pynn_compatible(container): """ Make sure that all entries in container do not confuse pyNN. container can be scalar, a list or a dict. """ compatible = None if isinstance(container, list): compatible = [] for value in container: compatible.append(make_pynn_compatible_single(value)) elif isinstance(container, dict): compatible = {} for k, v in iteritems(container): compatible[k] = make_pynn_compatible_single(v) else: compatible = make_pynn_compatible_single(container) return compatible
def make_sli_compatible(container): """ Makes sure container only contains datatypes understood by the nest kernel. container can be scalar, a list or a dict. """ compatible = None if isinstance(container, list): compatible = [] for value in container: compatible.append(make_sli_compatible_single(value)) elif isinstance(container, dict): compatible = {} for k, v in iteritems(container): compatible[k] = make_sli_compatible_single(v) else: compatible = make_sli_compatible_single(container) return compatible