Exemplo n.º 1
0
    def __init__(self, regression_procedure="opus_core.linear_regression",
                  submodel_string=None,
                  run_config=None, estimate_config=None, debuglevel=0, dataset_pool=None):
 
        self.debug = DebugPrinter(debuglevel)

        self.dataset_pool = self.create_dataset_pool(dataset_pool)

        self.regression = RegressionModelFactory().get_model(name=regression_procedure)
        if self.regression == None:
            raise StandardError, "No regression procedure given."

        self.submodel_string = submodel_string

        self.run_config = run_config
        if self.run_config == None:
            self.run_config = Resources()
        if not isinstance(self.run_config,Resources) and isinstance(self.run_config, dict):
            self.run_config = Resources(self.run_config)

        self.estimate_config = estimate_config
        if self.estimate_config == None:
            self.estimate_config = Resources()
        if not isinstance(self.estimate_config,Resources) and isinstance(self.estimate_config, dict):
            self.estimate_config = Resources(self.estimate_config)
            
        self.data = {}
        self.coefficient_names = {}
        ChunkModel.__init__(self)
        self.get_status_for_gui().initialize_pieces(3, pieces_description = array(['initialization', 'computing variables', 'submodel: 1']))
Exemplo n.º 2
0
    def run(self,
            specification,
            coefficients,
            dataset,
            index=None,
            chunk_specification=None,
            data_objects=None,
            run_config=None,
            initial_values=None,
            procedure=None,
            debuglevel=0):
        """'specification' is of type EquationSpecification,
            'coefficients' is of type Coefficients,
            'dataset' is of type Dataset,
            'index' are indices of individuals in dataset for which
                        the model runs. If it is None, the whole dataset is considered.
            'chunk_specification' determines  number of chunks in which the simulation is processed.
            'data_objects' is a dictionary where each key is the name of an data object
            ('zone', ...) and its value is an object of class  Dataset.
           'run_config' is of type Resources, it gives additional arguments for the run.
           If 'procedure' is given, it overwrites the regression_procedure of the constructor.
           'initial_values' is an array of the initial values of the results. It will be overwritten
           by the results for those elements that are handled by the model (defined by submodels in the specification).
           By default the results are initialized with 0.
            'debuglevel' overwrites the constructor 'debuglevel'.
        """
        self.debug.flag = debuglevel
        if run_config == None:
            run_config = Resources()
        if not isinstance(run_config, Resources) and isinstance(
                run_config, dict):
            run_config = Resources(run_config)
        self.run_config = run_config.merge_with_defaults(self.run_config)
        self.run_config.merge({"debug": self.debug})
        if data_objects is not None:
            self.dataset_pool.add_datasets_if_not_included(data_objects)
        self.dataset_pool.replace_dataset(dataset.get_dataset_name(), dataset)
        if procedure is not None:
            self.regression = RegressionModelFactory().get_model(
                name=procedure)
        if initial_values is None:
            self.initial_values = zeros((dataset.size(), ), dtype=float32)
        else:
            self.initial_values = zeros((dataset.size(), ),
                                        dtype=initial_values.dtype)
            self.initial_values[index] = initial_values

        if dataset.size() <= 0:  # no data loaded yet
            dataset.get_id_attribute()
        if index == None:
            index = arange(dataset.size())

        result = ChunkModel.run(self,
                                chunk_specification,
                                dataset,
                                index,
                                float32,
                                specification=specification,
                                coefficients=coefficients)
        return result
Exemplo n.º 3
0
    def __init__(self,
                 regression_procedure="opus_core.linear_regression",
                 submodel_string=None,
                 run_config=None,
                 estimate_config=None,
                 debuglevel=0,
                 dataset_pool=None):

        self.debug = DebugPrinter(debuglevel)

        self.dataset_pool = self.create_dataset_pool(dataset_pool)

        self.regression = RegressionModelFactory().get_model(
            name=regression_procedure)
        if self.regression == None:
            raise StandardError, "No regression procedure given."

        self.submodel_string = submodel_string

        self.run_config = run_config
        if self.run_config == None:
            self.run_config = Resources()
        if not isinstance(self.run_config, Resources) and isinstance(
                self.run_config, dict):
            self.run_config = Resources(self.run_config)

        self.estimate_config = estimate_config
        if self.estimate_config == None:
            self.estimate_config = Resources()
        if not isinstance(self.estimate_config, Resources) and isinstance(
                self.estimate_config, dict):
            self.estimate_config = Resources(self.estimate_config)

        self.data = {}
        self.coefficient_names = {}
        ChunkModel.__init__(self)
        self.get_status_for_gui().initialize_pieces(3,
                                                    pieces_description=array([
                                                        'initialization',
                                                        'computing variables',
                                                        'submodel: 1'
                                                    ]))
Exemplo n.º 4
0
 def run(self, specification, coefficients, dataset, index=None, chunk_specification=None,
         data_objects=None, run_config=None, initial_values=None, procedure=None, debuglevel=0):
     """'specification' is of type EquationSpecification,
         'coefficients' is of type Coefficients,
         'dataset' is of type Dataset,
         'index' are indices of individuals in dataset for which
                     the model runs. If it is None, the whole dataset is considered.
         'chunk_specification' determines  number of chunks in which the simulation is processed.
         'data_objects' is a dictionary where each key is the name of an data object
         ('zone', ...) and its value is an object of class  Dataset.
        'run_config' is of type Resources, it gives additional arguments for the run.
        If 'procedure' is given, it overwrites the regression_procedure of the constructor.
        'initial_values' is an array of the initial values of the results. It will be overwritten
        by the results for those elements that are handled by the model (defined by submodels in the specification).
        By default the results are initialized with 0.
         'debuglevel' overwrites the constructor 'debuglevel'.
     """
     self.debug.flag = debuglevel
     if run_config == None:
         run_config = Resources()
     if not isinstance(run_config,Resources) and isinstance(run_config, dict):
         run_config = Resources(run_config)
     self.run_config = run_config.merge_with_defaults(self.run_config)
     self.run_config.merge({"debug":self.debug})
     if data_objects is not None:
         self.dataset_pool.add_datasets_if_not_included(data_objects)
     self.dataset_name = dataset.get_dataset_name()
     self.dataset_pool.replace_dataset(self.dataset_name, dataset)
     
     if procedure is not None: 
         self.regression = RegressionModelFactory().get_model(name=procedure)
     if initial_values is None:
         self.initial_values = zeros((dataset.size(),), dtype=float32)
     else:
         self.initial_values = zeros((dataset.size(),), dtype=initial_values.dtype)
         self.initial_values[index] = initial_values
         
     if dataset.size()<=0: # no data loaded yet
         dataset.get_id_attribute()
     if index == None:
         index = arange(dataset.size())
         
     result = ChunkModel.run(self, chunk_specification, dataset, index, float32,
                              specification=specification, coefficients=coefficients)
     return result
Exemplo n.º 5
0
 def _get_status_piece_description(self):
     return "%s %s" % (ChunkModel._get_status_piece_description(
         self), self.get_status_for_gui().get_current_piece_description())
Exemplo n.º 6
0
 def _get_status_current_piece(self):
     return ChunkModel._get_status_current_piece(
         self) * self.get_status_for_gui().get_total_number_of_pieces(
         ) + self.get_status_for_gui().get_current_piece()
Exemplo n.º 7
0
 def _get_status_piece_description(self):
     return "%s %s" % (ChunkModel._get_status_piece_description(self), self.get_status_for_gui().get_current_piece_description())
Exemplo n.º 8
0
 def _get_status_current_piece(self):
     return ChunkModel._get_status_current_piece(self)*self.get_status_for_gui().get_total_number_of_pieces() + self.get_status_for_gui().get_current_piece()