def record_iteration_system(self, recording_requester, data, metadata): """ Record data and metadata from a System. Parameters ---------- recording_requester : System System in need of recording. data : dict Dictionary containing inputs, outputs, and residuals. metadata : dict Dictionary containing execution metadata. """ inputs = data['i'] outputs = data['o'] residuals = data['r'] inputs_array = values_to_array(inputs) outputs_array = values_to_array(outputs) residuals_array = values_to_array(residuals) inputs_blob = array_to_blob(inputs_array) outputs_blob = array_to_blob(outputs_array) residuals_blob = array_to_blob(residuals_array) with self.con: self.cursor.execute("INSERT INTO system_iterations(counter, iteration_coordinate, " "timestamp, success, msg, inputs , outputs , residuals ) " "VALUES(?,?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], inputs_blob, outputs_blob, residuals_blob)) self.cursor.execute("INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('system', self.cursor.lastrowid))
def record_iteration_driver(self, recording_requester, data, metadata): """ Record data and metadata from a Driver. Parameters ---------- recording_requester : object Driver in need of recording. data : dict Dictionary containing desvars, objectives, constraints, responses, and System vars. metadata : dict Dictionary containing execution metadata. """ if self.con: outputs = data['out'] inputs = data['in'] outputs_array = values_to_array(outputs) inputs_array = values_to_array(inputs) outputs_blob = array_to_blob(outputs_array) inputs_blob = array_to_blob(inputs_array) with self.con: self.cursor.execute( "INSERT INTO driver_iterations(counter, iteration_coordinate, " "timestamp, success, msg, inputs, outputs) " "VALUES(?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], inputs_blob, outputs_blob)) self.con.execute( "INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('driver', self.cursor.lastrowid))
def record_iteration_driver(self, recording_requester, data, metadata): """ Record data and metadata from a Driver. Parameters ---------- recording_requester : object Driver in need of recording. data : dict Dictionary containing desvars, objectives, constraints, responses, and System vars. metadata : dict Dictionary containing execution metadata. """ desvars = data['des'] responses = data['res'] objectives = data['obj'] constraints = data['con'] sysvars = data['sys'] # Need to gather up the values from across the ranks, if MPI # if MPI: # desvars = self._gather_vars(root, desvars) # responses = self._gather_vars(root, responses) # objectives = self._gather_vars(root, objectives) # constraints = self._gather_vars(root, constraints) # sysvars = self._gather_vars(root, sysvars) if MPI is None or MPI.COMM_WORLD.rank == 0: desvars_array = values_to_array(desvars) responses_array = values_to_array(responses) objectives_array = values_to_array(objectives) constraints_array = values_to_array(constraints) sysvars_array = values_to_array(sysvars) desvars_blob = array_to_blob(desvars_array) responses_blob = array_to_blob(responses_array) objectives_blob = array_to_blob(objectives_array) constraints_blob = array_to_blob(constraints_array) sysvars_blob = array_to_blob(sysvars_array) with self.con: self.cursor.execute( "INSERT INTO driver_iterations(counter, iteration_coordinate, " "timestamp, success, msg, desvars , responses , objectives , " "constraints, sysincludes ) VALUES(?,?,?,?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], desvars_blob, responses_blob, objectives_blob, constraints_blob, sysvars_blob)) self.con.execute( "INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('driver', self.cursor.lastrowid))
def record_iteration_driver(self, recording_requester, data, metadata): """ Record data and metadata from a Driver. Parameters ---------- recording_requester : object Driver in need of recording. data : dict Dictionary containing desvars, objectives, constraints, responses, and System vars. metadata : dict Dictionary containing execution metadata. """ desvars = data['des'] responses = data['res'] objectives = data['obj'] constraints = data['con'] sysvars = data['sys'] # Need to gather up the values from across the ranks, if MPI # if MPI: # desvars = self._gather_vars(root, desvars) # responses = self._gather_vars(root, responses) # objectives = self._gather_vars(root, objectives) # constraints = self._gather_vars(root, constraints) # sysvars = self._gather_vars(root, sysvars) if MPI is None or MPI.COMM_WORLD.rank == 0: desvars_array = values_to_array(desvars) responses_array = values_to_array(responses) objectives_array = values_to_array(objectives) constraints_array = values_to_array(constraints) sysvars_array = values_to_array(sysvars) desvars_blob = array_to_blob(desvars_array) responses_blob = array_to_blob(responses_array) objectives_blob = array_to_blob(objectives_array) constraints_blob = array_to_blob(constraints_array) sysvars_blob = array_to_blob(sysvars_array) with self.con: self.cursor.execute("INSERT INTO driver_iterations(counter, iteration_coordinate, " "timestamp, success, msg, desvars , responses , objectives , " "constraints, sysincludes ) VALUES(?,?,?,?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], desvars_blob, responses_blob, objectives_blob, constraints_blob, sysvars_blob)) self.con.execute("INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('driver', self.cursor.lastrowid))
def record_derivatives_driver(self, recording_requester, data, metadata): """ Record derivatives data from a Driver. Parameters ---------- recording_requester : object Driver in need of recording. data : dict Dictionary containing derivatives keyed by 'of,wrt' to be recorded. metadata : dict Dictionary containing execution metadata. """ if self.connection: data_array = values_to_array(data) data_blob = array_to_blob(data_array) with self.connection as c: c = c.cursor() # need a real cursor for lastrowid c.execute("INSERT INTO driver_derivatives(counter, iteration_coordinate, " "timestamp, success, msg, derivatives) VALUES(?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], data_blob))
def record_iteration_problem(self, recording_requester, data, metadata): """ Record data and metadata from a Problem. Parameters ---------- recording_requester : object Problem in need of recording. data : dict Dictionary containing desvars, objectives, and constraints. metadata : dict Dictionary containing execution metadata. """ if self.connection: outputs = data['out'] outputs_array = values_to_array(outputs) outputs_blob = array_to_blob(outputs_array) with self.connection as c: c = c.cursor() # need a real cursor for lastrowid c.execute( "INSERT INTO problem_cases(counter, case_name, " "timestamp, success, msg, outputs) VALUES(?,?,?,?,?,?)", (self._counter, metadata['name'], metadata['timestamp'], metadata['success'], metadata['msg'], outputs_blob))
def record_iteration_solver(self, recording_requester, data, metadata): """ Record data and metadata from a Solver. Parameters ---------- recording_requester : Solver Solver in need of recording. data : dict Dictionary containing outputs, residuals, and errors. metadata : dict Dictionary containing execution metadata. """ if self.connection: abs = data['abs'] rel = data['rel'] inputs = data['i'] outputs = data['o'] residuals = data['r'] inputs_array = values_to_array(inputs) outputs_array = values_to_array(outputs) residuals_array = values_to_array(residuals) inputs_blob = array_to_blob(inputs_array) outputs_blob = array_to_blob(outputs_array) residuals_blob = array_to_blob(residuals_array) with self.connection as c: c = c.cursor() # need a real cursor for lastrowid c.execute( "INSERT INTO solver_iterations(counter, iteration_coordinate, " "timestamp, success, msg, abs_err, rel_err, " "solver_inputs, solver_output, solver_residuals) " "VALUES(?,?,?,?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], abs, rel, inputs_blob, outputs_blob, residuals_blob)) c.execute( "INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('solver', c.lastrowid))
def record_iteration_system(self, recording_requester, data, metadata): """ Record data and metadata from a System. Parameters ---------- recording_requester : System System in need of recording. data : dict Dictionary containing inputs, outputs, and residuals. metadata : dict Dictionary containing execution metadata. """ if self.con: inputs = data['i'] outputs = data['o'] residuals = data['r'] inputs_array = values_to_array(inputs) outputs_array = values_to_array(outputs) residuals_array = values_to_array(residuals) inputs_blob = array_to_blob(inputs_array) outputs_blob = array_to_blob(outputs_array) residuals_blob = array_to_blob(residuals_array) with self.con: self.cursor.execute( "INSERT INTO system_iterations(counter, iteration_coordinate, " "timestamp, success, msg, inputs , outputs , residuals ) " "VALUES(?,?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], inputs_blob, outputs_blob, residuals_blob)) self.cursor.execute( "INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('system', self.cursor.lastrowid))
def record_iteration_solver(self, recording_requester, data, metadata): """ Record data and metadata from a Solver. Parameters ---------- recording_requester : Solver Solver in need of recording. data : dict Dictionary containing outputs, residuals, and errors. metadata : dict Dictionary containing execution metadata. """ abs = data['abs'] rel = data['rel'] outputs = data['o'] residuals = data['r'] outputs_array = values_to_array(outputs) residuals_array = values_to_array(residuals) outputs_blob = array_to_blob(outputs_array) residuals_blob = array_to_blob(residuals_array) with self.con: self.cursor.execute("INSERT INTO solver_iterations(counter, iteration_coordinate, " "timestamp, success, msg, abs_err, rel_err, solver_output, " "solver_residuals) VALUES(?,?,?,?,?,?,?,?,?)", (self._counter, self._iteration_coordinate, metadata['timestamp'], metadata['success'], metadata['msg'], abs, rel, outputs_blob, residuals_blob)) self.cursor.execute("INSERT INTO global_iterations(record_type, rowid) VALUES(?,?)", ('solver', self.cursor.lastrowid))
def record_iteration_driver(self, recording_requester, data, metadata): """ Record data and metadata from a Driver. Parameters ---------- recording_requester : object Driver in need of recording. data : dict Dictionary containing desvars, objectives, constraints, responses, and System vars. metadata : dict Dictionary containing execution metadata. """ input_, output = [values_to_array(data[n]) for n in ['in', 'out']] self.global_iterations.append( ('driver', len(output), str(recording_requester))) meta_fields = [('counter', self._counter), ('iteration_coordinate', self._iteration_coordinate), ('timestamp', metadata['timestamp']), ('success', metadata['success']), ('msg', metadata['msg'])] data_fields = [(abs2prom[n], v) for struct_arr, abs2prom in [( input_[0], self._abs2prom['input']), (output[0], self._abs2prom['output'])] for n, v in zip(struct_arr.dtype.names, struct_arr)] # first time -> create lists if len(self.iteration_coordinate_lst) == 0: for k, _ in meta_fields + data_fields: self.driver_iteration_dict[k] = [] self.dtypes = [input_.dtype, output.dtype] self.iteration_coordinate_lst.append(self._iteration_coordinate) for k, v in meta_fields: self.driver_iteration_dict[k].append(v) N = len(self.iteration_coordinate_lst) for k, v in data_fields: lst = self.driver_iteration_dict[k] if len(lst) < N: lst.append(v) else: # # may be different due to scaling # # we hope the first is the right one # assert np.all(lst[-1] == v) pass