At the moment, DataAssimilator is doing too many thing under the hood. A better way would be to separate observations out of this class, and only use it for "assimilation", i.e. perform incremental updates given a set of states and parameters, e.g.
observation = observer.perform_observation(ensemble_state, kinetic_state, user_nodes, time)
ensemble_state, ensemble_rates = assimilator.update(ensemble_state, ensemble_rates, observation)
At the moment,
DataAssimilatoris doing too many thing under the hood. A better way would be to separate observations out of this class, and only use it for "assimilation", i.e. perform incremental updates given a set of states and parameters, e.g.