def __init__(self, **names_vals): super(OqParam, self).__init__(**names_vals) self.risk_investigation_time = ( self.risk_investigation_time or self.investigation_time) if ('intensity_measure_types_and_levels' in names_vals and 'intensity_measure_types' in names_vals): logging.warn('Ignoring intensity_measure_types since ' 'intensity_measure_types_and_levels is set') if 'intensity_measure_types_and_levels' in names_vals: self.hazard_imtls = self.intensity_measure_types_and_levels delattr(self, 'intensity_measure_types_and_levels') elif 'intensity_measure_types' in names_vals: self.hazard_imtls = dict.fromkeys(self.intensity_measure_types) delattr(self, 'intensity_measure_types') if vulnerability_files(self.inputs): self.risk_imtls = get_imtls_from_vulnerabilities(self.inputs) elif fragility_files(self.inputs): fname = self.inputs['fragility'] ffs = get_fragility_functions( fname, self.continuous_fragility_discretization) self.risk_imtls = {fset.imt: fset.imls for fset in ffs.values()} # check the IMTs vs the GSIMs if 'gsim_logic_tree' in self.inputs: if self.gsim: raise ValueError('If `gsim_logic_tree_file` is set, there ' 'must be no `gsim` key') path = os.path.join( self.base_path, self.inputs['gsim_logic_tree']) for gsims in logictree.GsimLogicTree(path, []).values.values(): self.check_imts_gsims(list(map(valid.gsim, gsims))) elif self.gsim is not None: self.check_imts_gsims([self.gsim])
def __init__(self, **names_vals): super(OqParam, self).__init__(**names_vals) self.risk_investigation_time = (self.risk_investigation_time or self.investigation_time) if ('intensity_measure_types_and_levels' in names_vals and 'intensity_measure_types' in names_vals): logging.warn('Ignoring intensity_measure_types since ' 'intensity_measure_types_and_levels is set') if 'intensity_measure_types_and_levels' in names_vals: self.hazard_imtls = self.intensity_measure_types_and_levels delattr(self, 'intensity_measure_types_and_levels') elif 'intensity_measure_types' in names_vals: self.hazard_imtls = dict.fromkeys(self.intensity_measure_types) delattr(self, 'intensity_measure_types') if vulnerability_files(self.inputs): self.risk_imtls = get_imtls_from_vulnerabilities(self.inputs) elif fragility_files(self.inputs): fname = self.inputs['fragility'] ffs = get_fragility_functions( fname, self.continuous_fragility_discretization) self.risk_imtls = {fset.imt: fset.imls for fset in ffs.values()} # check the IMTs vs the GSIMs if 'gsim_logic_tree' in self.inputs: if self.gsim: raise ValueError('If `gsim_logic_tree_file` is set, there ' 'must be no `gsim` key') path = os.path.join(self.base_path, self.inputs['gsim_logic_tree']) for gsims in logictree.GsimLogicTree(path, []).values.values(): self.check_imts_gsims(list(map(valid.gsim, gsims))) elif self.gsim is not None: self.check_imts_gsims([self.gsim])
def is_valid_intensity_measure_types(self): """ If the IMTs and levels are extracted from the risk models, they must not be set directly. Moreover, if `intensity_measure_types_and_levels` is set directly, `intensity_measure_types` must not be set. """ if self.ground_motion_correlation_model: for imt in self.imtls: if not (imt.startswith('SA') or imt == 'PGA'): raise ValueError( 'Correlation model %s does not accept IMT=%s' % ( self.ground_motion_correlation_model, imt)) if fragility_files(self.inputs) or vulnerability_files(self.inputs): return (self.intensity_measure_types is None and self.intensity_measure_types_and_levels is None) elif not hasattr(self, 'hazard_imtls') and not hasattr( self, 'risk_imtls'): return False return True
def is_valid_intensity_measure_types(self): """ If the IMTs and levels are extracted from the risk models, they must not be set directly. Moreover, if `intensity_measure_types_and_levels` is set directly, `intensity_measure_types` must not be set. """ if self.ground_motion_correlation_model: for imt in self.imtls: if not (imt.startswith('SA') or imt == 'PGA'): raise ValueError( 'Correlation model %s does not accept IMT=%s' % (self.ground_motion_correlation_model, imt)) if fragility_files(self.inputs) or vulnerability_files(self.inputs): return (self.intensity_measure_types is None and self.intensity_measure_types_and_levels is None) elif not hasattr(self, 'hazard_imtls') and not hasattr( self, 'risk_imtls'): return False return True