Example #1
0
 def pre_execute(self, pre_calculator=None):
     """
     Check if there is a previous calculation ID.
     If yes, read the inputs by retrieving the previous calculation;
     if not, read the inputs directly.
     """
     oq = self.oqparam
     if 'gmfs' in oq.inputs:  # read hazard from file
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with gmfs_file')
         self.read_inputs()
         save_gmfs(self)
     elif 'hazard_curves' in oq.inputs:  # read hazard from file
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with hazard_curves')
         haz_sitecol = readinput.get_site_collection(oq)
         # NB: horrible: get_site_collection calls get_pmap_from_nrml
         # that sets oq.investigation_time, so it must be called first
         self.load_riskmodel()  # must be after get_site_collection
         self.read_exposure(haz_sitecol)  # define .assets_by_site
         self.datastore['poes/grp-00'] = readinput.pmap
         self.datastore['sitecol'] = self.sitecol
         self.datastore['assetcol'] = self.assetcol
         self.datastore['csm_info'] = fake = source.CompositionInfo.fake()
         self.rlzs_assoc = fake.get_rlzs_assoc()
     elif oq.hazard_calculation_id:
         parent = datastore.read(oq.hazard_calculation_id)
         check_precalc_consistency(
             oq.calculation_mode,
             parent['oqparam'].calculation_mode)
         self.datastore.parent = parent
         # copy missing parameters from the parent
         params = {name: value for name, value in
                   vars(parent['oqparam']).items()
                   if name not in vars(self.oqparam)}
         self.save_params(**params)
         self.read_inputs()
         oqp = parent['oqparam']
         if oqp.investigation_time != oq.investigation_time:
             raise ValueError(
                 'The parent calculation was using investigation_time=%s'
                 ' != %s' % (oqp.investigation_time, oq.investigation_time))
         if oqp.minimum_intensity != oq.minimum_intensity:
             raise ValueError(
                 'The parent calculation was using minimum_intensity=%s'
                 ' != %s' % (oqp.minimum_intensity, oq.minimum_intensity))
     elif pre_calculator:
         calc = calculators[pre_calculator](
             self.oqparam, self.datastore.calc_id)
         calc.run()
         self.param = calc.param
         self.sitecol = calc.sitecol
         self.assetcol = calc.assetcol
         self.riskmodel = calc.riskmodel
         self.rlzs_assoc = calc.rlzs_assoc
     else:
         self.read_inputs()
Example #2
0
 def pre_execute(self):
     """
     Check if there is a previous calculation ID.
     If yes, read the inputs by retrieving the previous calculation;
     if not, read the inputs directly.
     """
     oq = self.oqparam
     if 'gmfs' in oq.inputs or 'multi_peril' in oq.inputs:
         # read hazard from files
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with gmfs_file')
         self.read_inputs()
         if 'gmfs' in oq.inputs:
             if not oq.inputs['gmfs'].endswith('.csv'):
                 raise NotImplementedError(
                     'Importer for %s' % oq.inputs['gmfs'])
             E = len(import_gmfs(self.datastore, oq.inputs['gmfs'],
                                 self.sitecol.complete.sids))
             if hasattr(oq, 'number_of_ground_motion_fields'):
                 if oq.number_of_ground_motion_fields != E:
                     raise RuntimeError(
                         'Expected %d ground motion fields, found %d' %
                         (oq.number_of_ground_motion_fields, E))
             else:  # set the number of GMFs from the file
                 oq.number_of_ground_motion_fields = E
         else:
             self.save_multi_peril()
         self.save_crmodel()
     elif 'hazard_curves' in oq.inputs:  # read hazard from file
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with hazard_curves')
         haz_sitecol = readinput.get_site_collection(oq)
         self.load_crmodel()  # must be after get_site_collection
         self.read_exposure(haz_sitecol)  # define .assets_by_site
         self.datastore['poes/grp-00'] = fix_ones(readinput.pmap)
         self.datastore['sitecol'] = self.sitecol
         self.datastore['assetcol'] = self.assetcol
         self.datastore['csm_info'] = fake = source.CompositionInfo.fake()
         self.rlzs_assoc = fake.get_rlzs_assoc()
         self.datastore['rlzs_by_grp'] = self.rlzs_assoc.by_grp()
         self.save_crmodel()
     elif oq.hazard_calculation_id:
         parent = util.read(oq.hazard_calculation_id)
         self.check_precalc(parent['oqparam'].calculation_mode)
         self.datastore.parent = parent
         # copy missing parameters from the parent
         if 'concurrent_tasks' not in vars(self.oqparam):
             self.oqparam.concurrent_tasks = (
                 self.oqparam.__class__.concurrent_tasks.default)
         params = {name: value for name, value in
                   vars(parent['oqparam']).items()
                   if name not in vars(self.oqparam)}
         self.save_params(**params)
         self.read_inputs()
         oqp = parent['oqparam']
         if oqp.investigation_time != oq.investigation_time:
             raise ValueError(
                 'The parent calculation was using investigation_time=%s'
                 ' != %s' % (oqp.investigation_time, oq.investigation_time))
         if not consistent(oqp.minimum_intensity, oq.minimum_intensity):
             raise ValueError(
                 'The parent calculation was using minimum_intensity=%s'
                 ' != %s' % (oqp.minimum_intensity, oq.minimum_intensity))
         hstats, rstats = list(oqp.hazard_stats()), list(oq.hazard_stats())
         if hstats != rstats:
             raise ValueError(
                 'The parent calculation had stats %s != %s' %
                 (hstats, rstats))
         missing_imts = set(oq.risk_imtls) - set(oqp.imtls)
         if missing_imts:
             raise ValueError(
                 'The parent calculation is missing the IMT(s) %s' %
                 ', '.join(missing_imts))
         self.save_crmodel()
     elif self.__class__.precalc:
         calc = calculators[self.__class__.precalc](
             self.oqparam, self.datastore.calc_id)
         calc.run(remove=False)
         for name in ('csm param sitecol assetcol crmodel rlzs_assoc '
                      'policy_name policy_dict csm_info').split():
             if hasattr(calc, name):
                 setattr(self, name, getattr(calc, name))
     else:
         self.read_inputs()
         self.save_crmodel()
Example #3
0
 def pre_execute(self):
     """
     Check if there is a previous calculation ID.
     If yes, read the inputs by retrieving the previous calculation;
     if not, read the inputs directly.
     """
     oq = self.oqparam
     if 'gmfs' in oq.inputs or 'multi_peril' in oq.inputs:
         # read hazard from files
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with gmfs_file')
         self.read_inputs()
         if 'gmfs' in oq.inputs:
             save_gmfs(self)
         else:
             self.save_multi_peril()
     elif 'hazard_curves' in oq.inputs:  # read hazard from file
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with hazard_curves')
         haz_sitecol = readinput.get_site_collection(oq)
         # NB: horrible: get_site_collection calls get_pmap_from_nrml
         # that sets oq.investigation_time, so it must be called first
         self.load_riskmodel()  # must be after get_site_collection
         self.read_exposure(haz_sitecol)  # define .assets_by_site
         self.datastore['poes/grp-00'] = fix_ones(readinput.pmap)
         self.datastore['sitecol'] = self.sitecol
         self.datastore['assetcol'] = self.assetcol
         self.datastore['csm_info'] = fake = source.CompositionInfo.fake()
         self.rlzs_assoc = fake.get_rlzs_assoc()
     elif oq.hazard_calculation_id:
         parent = util.read(oq.hazard_calculation_id)
         self.check_precalc(parent['oqparam'].calculation_mode)
         self.datastore.parent = parent
         # copy missing parameters from the parent
         params = {name: value for name, value in
                   vars(parent['oqparam']).items()
                   if name not in vars(self.oqparam)}
         self.save_params(**params)
         self.read_inputs()
         oqp = parent['oqparam']
         if oqp.investigation_time != oq.investigation_time:
             raise ValueError(
                 'The parent calculation was using investigation_time=%s'
                 ' != %s' % (oqp.investigation_time, oq.investigation_time))
         if oqp.minimum_intensity != oq.minimum_intensity:
             raise ValueError(
                 'The parent calculation was using minimum_intensity=%s'
                 ' != %s' % (oqp.minimum_intensity, oq.minimum_intensity))
         hstats, rstats = list(oqp.hazard_stats()), list(oq.hazard_stats())
         if hstats != rstats:
             raise ValueError(
                 'The parent calculation had stats %s != %s' %
                 (hstats, rstats))
         missing_imts = set(oq.risk_imtls) - set(oqp.imtls)
         if missing_imts:
             raise ValueError(
                 'The parent calculation is missing the IMT(s) %s' %
                 ', '.join(missing_imts))
     elif self.__class__.precalc:
         calc = calculators[self.__class__.precalc](
             self.oqparam, self.datastore.calc_id)
         calc.run()
         self.param = calc.param
         self.sitecol = calc.sitecol
         self.assetcol = calc.assetcol
         self.riskmodel = calc.riskmodel
         if hasattr(calc, 'rlzs_assoc'):
             self.rlzs_assoc = calc.rlzs_assoc
         else:
             # this happens for instance for a scenario_damage without
             # rupture, gmfs, multi_peril
             raise InvalidFile(
                 '%(job_ini)s: missing gmfs_csv, multi_peril_csv' %
                 oq.inputs)
         if hasattr(calc, 'csm'):  # no scenario
             self.csm = calc.csm
     else:
         self.read_inputs()
     if self.riskmodel:
         self.save_riskmodel()
Example #4
0
 def pre_execute(self):
     """
     Check if there is a previous calculation ID.
     If yes, read the inputs by retrieving the previous calculation;
     if not, read the inputs directly.
     """
     oq = self.oqparam
     if 'gmfs' in oq.inputs or 'multi_peril' in oq.inputs:
         # read hazard from files
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with gmfs_file')
         self.read_inputs()
         if 'gmfs' in oq.inputs:
             save_gmfs(self)
         else:
             self.save_multi_peril()
     elif 'hazard_curves' in oq.inputs:  # read hazard from file
         assert not oq.hazard_calculation_id, (
             'You cannot use --hc together with hazard_curves')
         haz_sitecol = readinput.get_site_collection(oq)
         # NB: horrible: get_site_collection calls get_pmap_from_nrml
         # that sets oq.investigation_time, so it must be called first
         self.load_riskmodel()  # must be after get_site_collection
         self.read_exposure(haz_sitecol)  # define .assets_by_site
         self.datastore['poes/grp-00'] = fix_ones(readinput.pmap)
         self.datastore['sitecol'] = self.sitecol
         self.datastore['assetcol'] = self.assetcol
         self.datastore['csm_info'] = fake = source.CompositionInfo.fake()
         self.rlzs_assoc = fake.get_rlzs_assoc()
     elif oq.hazard_calculation_id:
         parent = util.read(oq.hazard_calculation_id)
         self.check_precalc(parent['oqparam'].calculation_mode)
         self.datastore.parent = parent
         # copy missing parameters from the parent
         params = {name: value for name, value in
                   vars(parent['oqparam']).items()
                   if name not in vars(self.oqparam)}
         self.save_params(**params)
         self.read_inputs()
         oqp = parent['oqparam']
         if oqp.investigation_time != oq.investigation_time:
             raise ValueError(
                 'The parent calculation was using investigation_time=%s'
                 ' != %s' % (oqp.investigation_time, oq.investigation_time))
         if oqp.minimum_intensity != oq.minimum_intensity:
             raise ValueError(
                 'The parent calculation was using minimum_intensity=%s'
                 ' != %s' % (oqp.minimum_intensity, oq.minimum_intensity))
         missing_imts = set(oq.risk_imtls) - set(oqp.imtls)
         if missing_imts:
             raise ValueError(
                 'The parent calculation is missing the IMT(s) %s' %
                 ', '.join(missing_imts))
     elif self.__class__.precalc:
         calc = calculators[self.__class__.precalc](
             self.oqparam, self.datastore.calc_id)
         calc.run()
         self.param = calc.param
         self.sitecol = calc.sitecol
         self.assetcol = calc.assetcol
         self.riskmodel = calc.riskmodel
         if hasattr(calc, 'rlzs_assoc'):
             self.rlzs_assoc = calc.rlzs_assoc
         else:
             # this happens for instance for a scenario_damage without
             # rupture, gmfs, multi_peril
             raise InvalidFile(
                 '%(job_ini)s: missing gmfs_csv, multi_peril_csv' %
                 oq.inputs)
         if hasattr(calc, 'csm'):  # no scenario
             self.csm = calc.csm
     else:
         self.read_inputs()
     if self.riskmodel:
         self.save_riskmodel()