Source code for openquake.risklib.riskinput

# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (C) 2015-2022 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
# 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 <>.

import numpy

U32 = numpy.uint32
F32 = numpy.float32

[docs]class RiskInput(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_getter self.asset_df = asset_df self.weight = len(asset_df) def __repr__(self): [sid] = self.hazard_getter.sids return '<%s sid=%s, %d asset(s)>' % ( self.__class__.__name__, sid, len(self.asset_df))
[docs]def str2rsi(key): """ Convert a string of the form 'rlz-XXXX/sid-YYYY/ZZZ' into a triple (XXXX, YYYY, ZZZ) """ rlzi, sid, imt = key.split('/') return int(rlzi[4:]), int(sid[4:]), imt
[docs]def rsi2str(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)