I want to fit brainiak.funcalign.srm.SRM on some subset of data, save this fitted SRM object to disk, then (e.g., weeks) later retrieve the fitted SRM object and use its transform_subject method to project a new subject into the shared space. I tried using numpy.save, e.g.:
from brainiak.funcalign.srm import SRM
srm = SRM(features=50)
srm.fit(data)
np.save('/path/to/saved_srm.npy', srm)
but the pickling used to save object arrays conflicts with MPI:
/jukebox/pkgs/PYGER/0.9/envs/pyger/lib/python3.6/site-packages/numpy/lib/npyio.py in save(file, arr, allow_pickle, fix_impor
ts)
534 arr = np.asanyarray(arr)
535 format.write_array(fid, arr, allow_pickle=allow_pickle,
--> 536 pickle_kwargs=pickle_kwargs)
537 finally:
538 if own_fid:
/jukebox/pkgs/PYGER/0.9/envs/pyger/lib/python3.6/site-packages/numpy/lib/format.py in write_array(fp, array, version, allow_
pickle, pickle_kwargs)
631 if pickle_kwargs is None:
632 pickle_kwargs = {}
--> 633 pickle.dump(array, fp, protocol=2, **pickle_kwargs)
634 elif array.flags.f_contiguous and not array.flags.c_contiguous:
635 if isfileobj(fp):
TypeError: can't pickle mpi4py.MPI.Intracomm objects
Is there any other way to save the SRM object to disk and load it at a later time? If not, we should probably restructure the SRM object to make this possible. (I tried setting allow_pickle=False in numpy.save, but then it can't save the object array at all.)
I want to fit
brainiak.funcalign.srm.SRMon some subset of data, save this fitted SRM object to disk, then (e.g., weeks) later retrieve the fitted SRM object and use itstransform_subjectmethod to project a new subject into the shared space. I tried usingnumpy.save, e.g.:but the pickling used to save object arrays conflicts with MPI:
Is there any other way to save the SRM object to disk and load it at a later time? If not, we should probably restructure the SRM object to make this possible. (I tried setting
allow_pickle=Falseinnumpy.save, but then it can't save the object array at all.)