def setUp(self): super(TestModelRunOutput, self).setUp() self.clean_database() self.user = self.login() self.valid_params = { 'submit': u'Next', 'ov_select_1': 1, 'ov_yearly_1': 1, 'ov_monthly_1': 1, 'ov_select_2': 1, 'ov_hourly_2': 1, 'ov_daily_2': 1, 'ov_select_3': 1, 'ov_monthly_3': 1 } self.model_run_service = ModelRunService() param_run_start = self.model_run_service.get_parameter_by_constant(JULES_PARAM_RUN_START) param_run_end = self.model_run_service.get_parameter_by_constant(JULES_PARAM_RUN_END) with session_scope(Session) as session: self.model_run = self.model_run_service._create_new_model_run(session, self.user) self.model_run.name = "MR1" pv_run_start = ParameterValue() pv_run_start.parameter_id = param_run_start.id pv_run_start.value = "'1901-01-01 00:00:00'" pv_run_end = ParameterValue() pv_run_end.parameter_id = param_run_end.id pv_run_end.value = "'1902-01-01 00:00:00'" self.model_run.parameter_values = [pv_run_start, pv_run_end] session.add(self.model_run)
def set_up_single_cell_model_run(self): self.clean_database() self.user = self.login() self.create_two_driving_datasets() user_upload_id = DatasetService().get_id_for_user_upload_driving_dataset() with session_scope(Session) as session: self.model_run = ModelRun() self.model_run.name = "MR1" self.model_run.status = self._status(MODEL_RUN_STATUS_CREATED) self.model_run.driving_dataset_id = user_upload_id self.model_run.user = self.user self.model_run.driving_data_lat = 51.75 self.model_run.driving_data_lon = -0.25 self.model_run.driving_data_rows = 248 param1 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_INTERP) pv1 = ParameterValue() pv1.parameter_id = param1.id pv1.set_value_from_python(8 * ['nf']) param2 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_DATA_PERIOD) pv2 = ParameterValue() pv2.parameter_id = param2.id pv2.set_value_from_python(60 * 60) param3 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_DATA_START) pv3 = ParameterValue() pv3.parameter_id = param3.id pv3.value = "'1901-01-01 00:00:00'" param4 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_DATA_END) pv4 = ParameterValue() pv4.parameter_id = param4.id pv4.value = "'1901-01-31 21:00:00'" param5 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_LATLON_REGION) pv5 = ParameterValue() pv5.parameter_id = param5.id pv5.value = ".false." param6 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_POINTS_FILE) pv6 = ParameterValue() pv6.parameter_id = param6.id pv6.value = "51.75 -0.25" self.model_run.parameter_values = [pv1, pv2, pv3, pv4, pv5, pv6] session.add(self.model_run)
def set_up_single_cell_user_driving_data(self): self.clean_database() del self.driving_data self.user = self.login() user_upload_id = DatasetService().get_id_for_user_upload_driving_dataset() with session_scope(Session) as session: self.model_run = ModelRun() self.model_run.name = "MR1" self.model_run.status = self._status(MODEL_RUN_STATUS_CREATED) self.model_run.driving_dataset_id = user_upload_id self.model_run.user = self.user self.model_run.driving_data_lat = 25 self.model_run.driving_data_lon = 40 self.model_run.driving_data_rows = 248 self.model_run.science_configuration_id = 2 param1 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_INTERP) pv1 = ParameterValue() pv1.parameter_id = param1.id pv1.set_value_from_python(8 * ['nf']) param2 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_DATA_PERIOD) pv2 = ParameterValue() pv2.parameter_id = param2.id pv2.set_value_from_python(60 * 60) param3 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_DATA_START) pv3 = ParameterValue() pv3.parameter_id = param3.id pv3.value = "'1901-01-01 00:00:00'" param4 = self.model_run_service.get_parameter_by_constant(JULES_PARAM_DRIVE_DATA_END) pv4 = ParameterValue() pv4.parameter_id = param4.id pv4.value = "'1901-01-31 21:00:00'" self.model_run.parameter_values = [pv1, pv2, pv3, pv4] session.add(self.model_run)
def _copy_parameter_set_into_model(self, parameter_values, model_run, session): """ Copy the parameters into a model :param parameter_values: the values to copy :param model_run: the model run to copy them to :param session: the session to use :return: nothing """ for parameter_value in parameter_values: val = ParameterValue() val.value = parameter_value.value val.parameter_id = parameter_value.parameter_id val.model_run = model_run session.add(val)
def _create_uploaded_driving_dataset(self, start_date, end_date, lat, lon, model_run_service): class UploadedDrivingDataset(object): """ An uploaded driving dataset """ def __init__(self): self.id = DatasetService().get_id_for_user_upload_driving_dataset() self.driving_data_lat = None self.driving_data_lon = None self.driving_data_rows = None self.parameter_values = [] driving_dataset = UploadedDrivingDataset() driving_dataset.driving_data_lat = lat driving_dataset.driving_data_lon = lon driving_dataset.driving_data_rows = self.n_lines driving_dataset.parameter_values = [] params_to_save = [[constants.JULES_PARAM_DRIVE_DATA_START, start_date], [constants.JULES_PARAM_DRIVE_DATA_END, end_date], [constants.JULES_PARAM_DRIVE_DATA_PERIOD, self.period], [constants.JULES_PARAM_DRIVE_FILE, constants.USER_UPLOAD_FILE_NAME], [constants.JULES_PARAM_DRIVE_NVARS, len(self.var_list or [])], [constants.JULES_PARAM_DRIVE_VAR, self.var_list], [constants.JULES_PARAM_DRIVE_INTERP, self.interp_list], [constants.JULES_PARAM_LATLON_LATITUDE, lat], [constants.JULES_PARAM_LATLON_LONGITUDE, lon], [constants.JULES_PARAM_FRAC_FILE, constants.FRACTIONAL_FILENAME]] for param in params_to_save: parameter = model_run_service.get_parameter_by_constant(param[0]) param_val = ParameterValue() param_val.set_value_from_python(param[1]) param_val.parameter_id = parameter.id driving_dataset.parameter_values.append(param_val) user_upload_id = self.dataset_service.get_id_for_user_upload_driving_dataset() ds = self.dataset_service.get_driving_dataset_by_id(user_upload_id) for pv in ds.parameter_values: parameter_value = ParameterValue() parameter_value.parameter_id = pv.parameter_id parameter_value.value = pv.value driving_dataset.parameter_values.append(parameter_value) return driving_dataset
def _create_parameter_value_for_parameter(self, parameters, parameter_dict_name, parameter_dict_value, group_id): """ Create parameter value for a parameter :param parameters: the parameters list :param parameter_dict_name: the name of the parameter in the dictionary :param parameter_dict_value: the value in the dictionary :param group_id: group id :return: the parameter value """ for parameter in parameters: if parameter_dict_name.lower() == parameter.name.lower(): pv = ParameterValue() pv.parameter = parameter pv.group_id = group_id pv.value = parameter_dict_value return pv log.critical("Can not find matching parameter for %s" % parameter_dict_name) exit()