diff --git a/ecoli/experiments/ecoli_engine_process.py b/ecoli/experiments/ecoli_engine_process.py index 5f8dd54ca..ab9a83ca5 100644 --- a/ecoli/experiments/ecoli_engine_process.py +++ b/ecoli/experiments/ecoli_engine_process.py @@ -452,6 +452,7 @@ def run_simulation(config): metadata.pop("initial_state", None) metadata["git_hash"] = get_git_revision_hash() metadata["git_diff"] = get_git_diff() + metadata = serialize_value(metadata) # Since unique numpy updater is an class method, internal # deepcopying in vivarium-core causes this warning to appear @@ -467,11 +468,20 @@ def run_simulation(config): topology=composite.topology, initial_state=initial_state, experiment_id=experiment_id, + emit_config=config.get("emit_config", False), emitter=emitter_config, progress_bar=config["progress_bar"], metadata=metadata, profile=config["profile"], initial_global_time=config.get("start_time", 0.0), + emit_topology=config.get("emit_topology", True), + emit_processes=config.get("emit_processes", False), + emit_step=config.get("emit_step", 1), + display_info=config.get("display_info", True), + global_time_precision=config.get("global_time_precision", None), + store_schema=config.get("store_schema", None), + description=config.get("description", ""), + experiment_name=config.get("experiment_name", None), ) # Unnecessary reference to initial_state engine.initial_state = None diff --git a/ecoli/library/serialize.py b/ecoli/library/serialize.py index 353459380..ab89b048f 100644 --- a/ecoli/library/serialize.py +++ b/ecoli/library/serialize.py @@ -1,6 +1,7 @@ import numpy as np import orjson import re +import ast from unum import Unum from vivarium.core.registry import Serializer from vivarium.library.topology import convert_path_style, normalize_path @@ -80,9 +81,12 @@ def deserialize(self, data): matched_regex = self.regex_for_serialized.fullmatch(data) if matched_regex: data = matched_regex.group(1) - data = orjson.loads(data) + if data.startswith("("): + data = ast.literal_eval(data) + else: + data = orjson.loads(data) rng = np.random.RandomState() - rng.set_state(data) + rng.set_state(tuple(data)) return rng