.. _aggregation_model-library: Aggregation model library ========================= An aggregation model takes one attribute as its input parameter. The parameter is an instance of the **AggregationArg** class (see simo.simulation.model.aggregationarg). The object instance has the following attributes: - *operands* -- the number of operands for the model - *target_variable* -- index of the target variable in the data matrix - *remove_targets* -- indices of the objects for which the aggregation model is not evaluated - *use_nan_funcs* -- boolean indicating NaN values in the data - *values* -- operand values - *weights* -- weight attribute values - *target_index* -- indices of the object for which the model is evaluated - *oper_target_index* -- target index tables for operand(s) - *oper_data_level* -- operand data level indice, int - *success* -- boolean for successfull model evaluation - *errors* -- list of errors encountered during model evaluation - *deterministic* -- boolean that can be used to control whether random values are used in aggregation models or not (among others, random number generation is treated as an aggregation model) - *results* -- a numpy vector for storing aggregation results, NOTE: aggregation model implementation is responsible for making sure that this actually is a numpy array Below is an example of a very simple **substract** aggregation model:: def substract(arg): """Substract two operands """ if arg.operands != 2: arg.success = False arg.errors.append("Two operands required in 'substract'") else: arg.results = arg.values[0] - arg.values[1]