Source code for ubcs_auxiliary.save_load_object

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
author: Valentyn Stadnytskyi
created: Sept 9 2019

"""

[docs]def save_to_file(filename, object, protocol = 'pickle'): """ save a python object to a file Parameters ---------- Args: filename (string) the full path and filename object (python object) a python object Returns ------- Examples -------- the example of usage >>> save_to_file('test.pkl',[1,2,3]) """ if protocol =='pickle': from pickle import dumps data = dumps(object) with open(filename,"wb") as f: f.write(data) elif protocol == 'msgpack': import msgpack import msgpack_numpy as m data = msgpack.packb(object, default=m.encode) filename += '.msgpck' with open(filename,"wb") as f: f.write(data) elif protocol == 'hdf5': from h5py import File filename += '.hdf5' with File(filename, "w") as file: file.create_dataset("object", data=object)
[docs]def load_from_file(filename, protocol = 'pickle'): """ read object from a file Parameters ---------- filename : string the full path and filename Returns ------- object : object input object to save. Examples -------- the example of usage >>> list_out = load_from_file('list.extension') """ if protocol == 'pickle': from pickle import load with open(filename,'rb') as f: data = load(f, encoding='bytes') return data elif protocol == 'hdf5': from h5py import File with File(filename, "r") as f: pass
[docs]def save_to_hdf5(filename, dic_in, compression = 0): """ save a dictionary to a .hdf5 file Parameters ---------- filename (string) the full path and filename dict (dictionary) a python dictionary compression (integer) compression paramter Returns ------- Examples -------- the example of usage >>> save_to_hdf5('list.hd5f',[1,2,3]) """ from h5py import File from numpy import ndarray with File(filename, "w") as file: for key in list(dic_in.keys()): object = dic_in[key] if type(object) == ndarray: if compression > 0: file.create_dataset(key, data=object, compression = 'gzip', compression_opt = compression) else: file.create_dataset(key, data=object) else: file.create_dataset(key, data=object)
[docs]def load_from_hdf5(filename): """ read object from a file Parameters ---------- filename : string the full path and filename Returns ------- object : object input object to save. Examples -------- the example of usage >>> data_hdf5 = load_from_hdf5('list.extension.hdf5') """ from h5py import File from numpy import copy data = {} with File(filename, "r") as f: for key in list(f.keys()): data[key] = f[key][()] return data