def get_equation_chart(self, **form_data):
        """
        Returns the html which contains the plot with the equation selected by the user for a certain model param.
        """
        try:
            min_x, max_x, ui_message = self.get_x_axis_range(
                form_data['min_x'], form_data['max_x'])
            form_data = ABCAdapter.collapse_arrays(
                form_data, self.plotted_equations_prefixes)
            _, equation = self._compute_equation(form_data)
            series_data, display_ui_message = equation.get_series_data(
                min_range=min_x, max_range=max_x)
            json_data = self.get_series_json(series_data, "Spatial")
            all_series = self.build_final_json([json_data])
            ui_message = ''
            if display_ui_message:
                ui_message = self.get_ui_message(["spatial"])

            return {
                'allSeries': all_series,
                'prefix': self.plotted_equations_prefixes[0],
                'message': ui_message
            }
        except NameError, ex:
            self.logger.exception(ex)
            return {
                'allSeries': None,
                'errorMsg': "Incorrect parameters for equation passed."
            }
Пример #2
0
    def get_equation_chart(self, **form_data):
        """
        Returns the html which contains the plot with the temporal equation.
        """
        try:
            form_data = ABCAdapter.collapse_arrays(form_data, ['temporal'])
            min_x, max_x, ui_message = self.get_x_axis_range(
                form_data['min_x'], form_data['max_x'])
            equation = Equation.build_equation_from_dict('temporal', form_data)
            series_data, display_ui_message = equation.get_series_data(
                min_range=min_x, max_range=max_x)
            json_data = self.get_series_json(series_data, 'Temporal')
            all_series = self.build_final_json([json_data])
            if display_ui_message:
                ui_message = self.get_ui_message(["temporal"])

            return {
                'allSeries': all_series,
                'prefix': 'temporal',
                'message': ui_message
            }
        except NameError, ex:
            self.logger.exception(ex)
            return {
                'allSeries': None,
                'errorMsg': "Incorrect parameters for equation passed."
            }
 def apply_equation(self, **kwargs):
     """
     Applies an equations for computing a model parameter.
     """
     submitted_data = ABCAdapter.collapse_arrays(kwargs, ['model_param'])
     model_param, equation = self._compute_equation(submitted_data)
     context_model_parameters = base.get_from_session(KEY_CONTEXT_MPS)
     context_model_parameters.apply_equation(model_param, equation)
     base.add2session(KEY_CONTEXT_MPS, context_model_parameters)
     template_specification = self.get_surface_model_parameters_data(model_param)
     template_specification = self._add_entra_equation_entries(template_specification,
                                                               kwargs['min_x'], kwargs['max_x'])
     template_specification['equationViewerUrl'] = '/spatial/modelparameters/surface/get_equation_chart'
     template_specification['equationsPrefixes'] = json.dumps(self.plotted_equations_prefixes)
     return self.fill_default_attributes(template_specification)
 def apply_equation(self, **kwargs):
     """
     Applies an equations for computing a model parameter.
     """
     submitted_data = ABCAdapter.collapse_arrays(kwargs, ['model_param'])
     model_param, equation = self._compute_equation(submitted_data)
     context_model_parameters = common.get_from_session(KEY_CONTEXT_MPS)
     context_model_parameters.apply_equation(model_param, equation)
     common.add2session(KEY_CONTEXT_MPS, context_model_parameters)
     template_specification = self.get_surface_model_parameters_data(
         model_param)
     template_specification = self._add_entra_equation_entries(
         template_specification, kwargs['min_x'], kwargs['max_x'])
     template_specification[
         'equationViewerUrl'] = '/spatial/modelparameters/surface/get_equation_chart'
     template_specification['equationsPrefixes'] = json.dumps(
         self.plotted_equations_prefixes)
     return self.fill_default_attributes(template_specification)
 def _compute_equation(parameters):
     """
     This method will return an equation and the model parameter on
     which should be applied the equation.
     The equation is constructed based on the parameters collected from the UI.
     """
     model_param = parameters[MODEL_PARAM]
     equation = parameters[MODEL_PARAM + PARAM_SUFFIX][MODEL_PARAM_EQUATION]
     equation_params = parameters[MODEL_PARAM + PARAM_SUFFIX][MODEL_PARAM_EQUATION + PARAM_SUFFIX][equation]
     equation_params = ABCAdapter.collapse_arrays(equation_params, [])
     if PARAMETERS + PARAM_SUFFIX in equation_params:
         equation_params = equation_params[PARAMETERS + PARAM_SUFFIX]
     else:
         equation_params = {}
     for param in equation_params:
         equation_params[param] = float(equation_params[param])
     selected_equation = get_traited_instance_for_name(equation, equations.Equation, {PARAMETERS: equation_params})
     return model_param, selected_equation
    def get_equation_chart(self, **form_data):
        """
        Returns the html which contains the plot with the temporal equation.
        """
        try:
            form_data = ABCAdapter.collapse_arrays(form_data, ['temporal'])
            min_x, max_x, ui_message = self.get_x_axis_range(form_data['min_x'], form_data['max_x'])
            equation = Equation.build_equation_from_dict('temporal', form_data)
            series_data, display_ui_message = equation.get_series_data(min_range=min_x, max_range=max_x)
            json_data = self.get_series_json(series_data, 'Temporal')
            all_series = self.build_final_json([json_data])
            if display_ui_message:
                ui_message = self.get_ui_message(["temporal"])

            return {'allSeries': all_series, 'prefix': 'temporal', 'message': ui_message}
        except NameError, ex:
            self.logger.exception(ex)
            return {'allSeries': None, 'errorMsg': "Incorrect parameters for equation passed."}
    def get_equation_chart(self, **form_data):
        """
        Returns the html which contains the plot with the equation selected by the user for a certain model param.
        """
        try:
            min_x, max_x, ui_message = self.get_x_axis_range(form_data['min_x'], form_data['max_x'])
            form_data = ABCAdapter.collapse_arrays(form_data, self.plotted_equations_prefixes)
            _, equation = self._compute_equation(form_data)
            series_data, display_ui_message = equation.get_series_data(min_range=min_x, max_range=max_x)
            json_data = self.get_series_json(series_data, "Spatial")
            all_series = self.build_final_json([json_data])
            ui_message = ''
            if display_ui_message:
                ui_message = self.get_ui_message(["spatial"])

            return {'allSeries': all_series, 'prefix': self.plotted_equations_prefixes[0], 'message': ui_message}
        except NameError, ex:
            self.logger.exception(ex)
            return {'allSeries': None, 'errorMsg': "Incorrect parameters for equation passed."}
 def _compute_equation(parameters):
     """
     This method will return an equation and the model parameter on
     which should be applied the equation.
     The equation is constructed based on the parameters collected from the UI.
     """
     model_param = parameters[MODEL_PARAM]
     equation = parameters[MODEL_PARAM + PARAM_SUFFIX][MODEL_PARAM_EQUATION]
     equation_params = parameters[MODEL_PARAM +
                                  PARAM_SUFFIX][MODEL_PARAM_EQUATION +
                                                PARAM_SUFFIX][equation]
     equation_params = ABCAdapter.collapse_arrays(equation_params, [])
     if PARAMETERS + PARAM_SUFFIX in equation_params:
         equation_params = equation_params[PARAMETERS + PARAM_SUFFIX]
     else:
         equation_params = {}
     for param in equation_params:
         equation_params[param] = float(equation_params[param])
     selected_equation = get_traited_instance_for_name(
         equation, equations.Equation, {PARAMETERS: equation_params})
     return model_param, selected_equation