sys-bio / SBstoat

Parameter optimization using Tellurium
MIT License
1 stars 4 forks source link

Serialization of ModelFitter should be robust to code changes. #11

Closed joseph-hellerstein closed 3 years ago

joseph-hellerstein commented 3 years ago

We provide serialize() and deserialize() methods for ModelFitter to save the results of simulations and bootstraps. Currently, this is done using pickle. However, pickle fails if there are changes to methods and/or attributes in ModelFitter. A more robust approach is to just serialize those objects that require long computation times, such as the parameters and the fitted timeseries obtained in bootstrapping. This may require serialize() and deserialize() methods for TimeseriesStatistic. It may be worthwhile to have a new project called spickle (simple pickle) that only serializes properties and provides a way to calculate new properties from old ones.

joseph-hellerstein commented 3 years ago

The name spickle is already in use. Try cereal or bcereal.

joseph-hellerstein commented 3 years ago

rpickle is an available name, for robust pickle.

rpickle.dump(fd, prop1=prop1, prop2=prop2, ...) saves each of these properties.

rpickle.load(fd, object) assigns to the object each property that exists in that object.

as the object is evolved and new properties are created, these should be implemented as properties that check for the non-presence of an associated property. For example, suppose that prop is added. This defined as a property that takes its value from _prop. When prop is referenced, there is a check to see if _prop is present. If not, a default value is returned.

joseph-hellerstein commented 3 years ago

Implemented rpickle and incorporated its usage into the code base.