def startup(self, recording_requester):
"""
Prepare for a new run and create/update the abs2prom and prom2abs variables.
Parameters
----------
recording_requester :
Object to which this recorder is attached.
"""
super(SqliteRecorder, self).startup(recording_requester)
# grab the system
if isinstance(recording_requester, Driver):
system = recording_requester._problem.model
elif isinstance(recording_requester, System):
system = recording_requester
else:
system = recording_requester._system
# merge current abs2prom and prom2abs with this system's version
for io in ['input', 'output']:
for v in system._var_abs2prom[io]:
self._abs2prom[io][v] = system._var_abs2prom[io][v]
for v in system._var_allprocs_prom2abs_list[io]:
if v not in self._prom2abs[io]:
self._prom2abs[io][v] = system._var_allprocs_prom2abs_list[io][v]
else:
self._prom2abs[io][v] = list(set(self._prom2abs[io][v]) |
set(system._var_allprocs_prom2abs_list[io][v]))
# store the updated abs2prom and prom2abs
abs2prom = pickle.dumps(self._abs2prom)
prom2abs = pickle.dumps(self._prom2abs)
if self._open_close_sqlite:
with self.con:
self.con.execute("UPDATE metadata SET abs2prom=?, prom2abs=?",
(abs2prom, prom2abs))
评论列表
文章目录