def load_json(self, fn: str, cs: ConfigurationSpace): """Load and runhistory in json representation from disk. Overwrites current runhistory! Parameters ---------- fn : str file name to load from cs : ConfigSpace instance of configuration space """ with open(fn) as fp: all_data = json.load(fp, object_hook=StatusType.enum_hook) self.ids_config = {int(id_): Configuration(cs, values=values) for id_, values in all_data["configs"].items()} self.config_ids = {config: id_ for id_, config in self.ids_config.items()} self._n_id = len(self.config_ids) # important to use add method to use all data structure correctly for k, v in all_data["data"]: self.add(config=self.ids_config[int(k[0])], cost=float(v[0]), time=float(v[1]), status=StatusType(v[2]), instance_id=k[1], seed=int(k[2]), additional_info=v[3])
def load_json(self, fn: str, cs: ConfigurationSpace, id_set=set()): """Load and runhistory in json representation from disk. Overwrites current runhistory! Parameters ---------- fn : str file name to load from cs : ConfigSpace instance of configuration space """ try: txt = self.file_system.read_txt(fn) all_data = json.loads(txt, object_hook=StatusType.enum_hook) except Exception as e: self.logger.warning( 'Encountered exception %s while reading runhistory from %s. ' 'Not adding any runs!', e, fn, ) return config_origins = all_data.get("config_origins", {}) self.ids_config = {} updated_id_set = deepcopy(id_set) for i, (id_, values) in enumerate(all_data["configs"].items()): id_ = int(id_) if id_ not in id_set: self.ids_config[id_] = Configuration(cs, values=values, origin=config_origins.get( str(id_), None)) updated_id_set.add(id_) self.config_ids = { config: id_ for id_, config in self.ids_config.items() } self._n_id = len(self.config_ids) # important to use add method to use all data structure correctly for k, v in all_data["data"]: id_ = int(k[0]) if id_ in self.ids_config: self.add(config=self.ids_config[id_], cost=float(v[0]), time=float(v[1]), status=StatusType(v[2]), instance_id=k[1], seed=int(k[2]), additional_info=v[3]) return updated_id_set
def load_json(self, fn: str, cs: ConfigurationSpace) -> None: """Load and runhistory in json representation from disk. Overwrites current runhistory! Parameters ---------- fn : str file name to load from cs : ConfigSpace instance of configuration space """ try: with open(fn) as fp: all_data = json.load(fp, object_hook=StatusType.enum_hook) except Exception as e: self.logger.warning( 'Encountered exception %s while reading runhistory from %s. ' 'Not adding any runs!', e, fn, ) return config_origins = all_data.get("config_origins", {}) self.ids_config = { int(id_): Configuration(cs, values=values, origin=config_origins.get(id_, None)) for id_, values in all_data["configs"].items() } self.config_ids = { config: id_ for id_, config in self.ids_config.items() } self._n_id = len(self.config_ids) # important to use add method to use all data structure correctly for k, v in all_data["data"]: self.add(config=self.ids_config[int(k[0])], cost=float(v[0]), time=float(v[1]), status=StatusType(v[2]), instance_id=k[1], seed=int(k[2]), budget=float(k[3]) if len(k) == 4 else 0, additional_info=v[3])