Source code for openmdao.recorders.sqlite_recorder

"""Class definition for SqliteRecorder, which provides dictionary backed by SQLite"""

from collections import OrderedDict
from sqlitedict import SqliteDict
from openmdao.recorders.base_recorder import BaseRecorder
from openmdao.util.record_util import format_iteration_coordinate

[docs]class SqliteRecorder(BaseRecorder): def __init__(self, out, **sqlite_dict_args): super(SqliteRecorder, self).__init__() sqlite_dict_args.setdefault('autocommit', True) sqlite_dict_args.setdefault('tablename', 'openmdao') self.out = SqliteDict(filename=out, **sqlite_dict_args)
[docs] def record(self, params, unknowns, resids, metadata): """ Stores the provided data in the shelve file using the iteration coordinate for the key. Args ---- params : dict Dictionary containing parameters. (p) unknowns : dict Dictionary containing outputs and states. (u) resids : dict Dictionary containing residuals. (r) metadata : dict, optional Dictionary containing execution metadata (e.g. iteration coordinate). """ iteration_coordinate = metadata['coord'] timestamp = metadata['timestamp'] params, unknowns, resids = self._filter_vectors(params, unknowns, resids, iteration_coordinate) group_name = format_iteration_coordinate(iteration_coordinate) data = OrderedDict([('Parameters', params), ('Unknowns', unknowns), ('Residuals', resids), ('timestamp', timestamp), ]) self.out[group_name] = data