def add_result(self, results: Dict[str, VALUE]) -> int: """ Add a logically single result to existing parameters Args: - results: dictionary with name of a parameter as the key and the value to associate as the value. Returns: - index in the DataSet that the result was stored at If a parameter exist in the dataset and it's not in the results dictionary Null values are inserted. It is an error to provide a value for a key or keyword that is not the name of a parameter in this DataSet. It is an error to add results to a completed DataSet. """ # TODO: Make this check less fugly for param in results.keys(): if self.paramspecs[param].depends_on != '': deps = self.paramspecs[param].depends_on.split(', ') for dep in deps: if dep not in results.keys(): raise ValueError(f'Can not add result for {param}, ' f'since this depends on {dep}, ' 'which is not being added.') if self.completed: raise CompletedError index = insert_values(self.conn, self.table_name, list(results.keys()), list(results.values()) ) return index
def add_result(self, results: Dict[str, VALUE]) -> int: """ Add a logically single result to existing parameters Args: results: dictionary with name of a parameter as the key and the value to associate as the value. Returns: index in the DataSet that the result was stored at If a parameter exist in the dataset and it's not in the results dictionary, "Null" values are inserted. It is an error to provide a value for a key or keyword that is not the name of a parameter in this DataSet. It is an error to add results to a completed DataSet. """ if self.pristine: raise RuntimeError('This DataSet has not been marked as started. ' 'Please mark the DataSet as started before ' 'adding results to it.') if self.completed: raise CompletedError('This DataSet is complete, no further ' 'results can be added to it.') try: parameters = [self._interdeps._id_to_paramspec[name] for name in results] self._interdeps.validate_subset(parameters) except DependencyError as de: raise ValueError( 'Can not add result, missing setpoint values') from de index = insert_values(self.conn, self.table_name, list(results.keys()), list(results.values()) ) return index