コード例 #1
0
def get_risk_model(oqparam):
    """
    Return a :class:`openquake.risklib.riskinput.CompositeRiskModel` instance

   :param oqparam:
        an :class:`openquake.commonlib.oqvalidation.OqParam` instance
    """
    riskdict = get_risk_models(oqparam)
    oqparam.set_risk_imtls(riskdict)
    return riskinput.CompositeRiskModel(oqparam, riskdict)
コード例 #2
0
ファイル: readinput.py プロジェクト: mtahara/oq-engine
def get_risk_model(oqparam, rmdict):
    """
    Return a :class:`openquake.risklib.riskinput.CompositeRiskModel` instance

   :param oqparam:
        an :class:`openquake.commonlib.oqvalidation.OqParam` instance
   :param rmdict:
        a dictionary (imt, taxonomy) -> loss_type -> risk_function
    """
    riskmod = {}  # taxonomy -> riskmodel
    crm = riskinput.CompositeRiskModel(riskmod)
    if getattr(oqparam, 'limit_states', []):
        # classical_damage/scenario_damage calculator
        if oqparam.calculation_mode in ('classical', 'scenario'):
            # case when the risk files are in the job_hazard.ini file
            oqparam.calculation_mode += '_damage'
        crm.damage_states = ['no_damage'] + oqparam.limit_states
        delattr(oqparam, 'limit_states')
        for taxonomy, ffs_by_lt in rmdict.items():
            riskmod[taxonomy] = riskmodels.get_riskmodel(
                taxonomy, oqparam, fragility_functions=ffs_by_lt)
    elif oqparam.calculation_mode.endswith('_bcr'):
        # classical_bcr calculator
        retro = get_risk_models(oqparam, 'vulnerability_retrofitted')
        for (taxonomy, vf_orig), (taxonomy_, vf_retro) in \
                zip(rmdict.items(), retro.items()):
            assert taxonomy == taxonomy_  # same imt and taxonomy
            riskmod[taxonomy] = riskmodels.get_riskmodel(
                taxonomy,
                oqparam,
                vulnerability_functions_orig=vf_orig,
                vulnerability_functions_retro=vf_retro)
    else:
        # classical, event based and scenario calculators
        for taxonomy, vfs in rmdict.items():
            for vf in vfs.values():
                # set the seed; this is important for the case of
                # VulnerabilityFunctionWithPMF
                vf.seed = oqparam.random_seed
            riskmod[taxonomy] = riskmodels.get_riskmodel(
                taxonomy, oqparam, vulnerability_functions=vfs)

    crm.make_curve_builders(oqparam)
    taxonomies = set()
    for taxonomy, riskmodel in riskmod.items():
        taxonomies.add(taxonomy)
        riskmodel.compositemodel = crm
        # save the number of nonzero coefficients of variation
        for vf in riskmodel.risk_functions.values():
            if hasattr(vf, 'covs') and vf.covs.any():
                crm.covs += 1
    crm.taxonomies = sorted(taxonomies)
    return crm
コード例 #3
0
ファイル: readinput.py プロジェクト: treviallen/oq-engine
def get_risk_model(oqparam):
    """
    Return a :class:`openquake.risklib.riskinput.CompositeRiskModel` instance

   :param oqparam:
        an :class:`openquake.commonlib.oqvalidation.OqParam` instance
    """
    rmdict = get_risk_models(oqparam)
    oqparam.set_risk_imtls(rmdict)
    if oqparam.calculation_mode.endswith('_bcr'):
        retro = get_risk_models(oqparam, 'vulnerability_retrofitted')
    else:
        retro = {}
    return riskinput.CompositeRiskModel(oqparam, rmdict, retro)