# -*- coding: utf-8 -*-# vim: tabstop=4 shiftwidth=4 softtabstop=4## Copyright (C) 2015-2023 GEM Foundation## OpenQuake is free software: you can redistribute it and/or modify it# under the terms of the GNU Affero General Public License as published# by the Free Software Foundation, either version 3 of the License, or# (at your option) any later version.## OpenQuake is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU Affero General Public License for more details.## You should have received a copy of the GNU Affero General Public License# along with OpenQuake. If not, see <http://www.gnu.org/licenses/>.importnumpyU32=numpy.uint32F32=numpy.float32
[docs]classRiskInput(object):""" Site specific inputs. :param hazard_getter: a callable returning the hazard data for all realizations :param asset_df: a DataFrame of assets on the given site """def__init__(self,hazard_getter,asset_df):self.hazard_getter=hazard_getterself.asset_df=asset_dfself.weight=len(asset_df)def__repr__(self):[sid]=self.hazard_getter.sidsreturn'<%s sid=%s, %d asset(s)>'%(self.__class__.__name__,sid,len(self.asset_df))
[docs]defstr2rsi(key):""" Convert a string of the form 'rlz-XXXX/sid-YYYY/ZZZ' into a triple (XXXX, YYYY, ZZZ) """rlzi,sid,imt=key.split('/')returnint(rlzi[4:]),int(sid[4:]),imt
[docs]defrsi2str(rlzi,sid,imt):""" Convert a triple (XXXX, YYYY, ZZZ) into a string of the form 'rlz-XXXX/sid-YYYY/ZZZ' """return'rlz-%04d/sid-%04d/%s'%(rlzi,sid,imt)