Here is one method to save some data in your object store. You can test this out in a research notebook as well.
import json
from json import JSONEncoder
class EncodeNumpyArray(JSONEncoder):
def default(self, obj):
if isinstance(obj, np.ndarray):
return obj.tolist()
return JSONEncoder.default(self, obj)
try:
self.ObjectStore.ContainsKey('some_key')
except:
# Probably debugging in research notebook
qb = QuantBook()
self = qb
# Can loop through values and cache
#some_list = ['some_iter_key']
#for some_iter_var in some_list:
some_iter_var = 'some_iter_key'
f_key = f'{some_iter_var}'
value = np.float32([0.0]) # some new value to append to list
if(self.ObjectStore.ContainsKey(f_key)):
decodedWeights = json.loads(self.ObjectStore.Read(f_key))
cached_value = np.float32(decodedWeights)
new_value = np.append(cached_value,value)
encoded_json_params = json.dumps(new_value, cls=EncodeNumpyArray)
self.ObjectStore.Save(f_key, encoded_json_params)
print(encoded_json_params)
#[0.0, 0.0, 0.0, 0.0] # multiple runs will append based on cached value and current value
else:
# if first time need to create it
encoded_json_params = json.dumps(value, cls=EncodeNumpyArray)
self.ObjectStore.Save(f_key, encoded_json_params)