physrisk.api.v1
Submodules
physrisk.api.v1.common
- physrisk.api.v1.common.before_validator(list: list) ndarray[tuple[Any, ...], dtype[_ScalarT]]
Deserialize a list into a numpy array.
- physrisk.api.v1.common.serialize_array(array: ndarray[tuple[Any, ...], dtype[_ScalarT]])
Serialize a numpy array into a list.
- class physrisk.api.v1.common.Asset(*, asset_class: str | None = None, latitude: float | None = None, longitude: float | None = None, wkt: str | None = None, buffer: float = 0.0, type: str | None = None, location: str | None = None, occupancy_code: int = 1000, number_of_storeys: int | None = -1, basement: int = 0, construction_code: int = 5000, first_floor_height: float = 0.305, capacity: float | None = None, **extra_data: Any)
Bases:
BaseModelDefines an asset.
Assets can be specified in two ways 1) ‘asset_class’ set explicitly. This must correspond to a physrisk Asset subclass, e.g. PowerGeneratingAsset’, ManufacturingAsset, or the parent Asset. physrisk will create an instance of the asset and set its attributes from the other fields provided (which can therefore be specific to the class). 2) Inferred from ‘occupancy_code’.
https://github.com/OasisLMF/ODS_OpenExposureData/blob/main/OpenExposureData/OEDInputFields.csv
An asset’s value may be impacted through damage or through disruption disruption being reduction of an asset’s ability to generate cashflows (or equivalent value, e.g. by increased expense or reduced sales).
- asset_class: str | None
- latitude: float | None
- longitude: float | None
- wkt: str | None
- buffer: float
- type: str | None
- location: str | None
- occupancy_code: int
- number_of_storeys: int | None
- basement: int
- construction_code: int
- first_floor_height: float
- capacity: float | None
- classmethod validate_occupancy_code(v: int) int
- model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'json_schema_extra': {'examples': [{'asset_class': 'RealEstateAsset', 'latitude': 22.2972, 'location': 'Asia', 'longitude': 91.8062, 'type': 'Buildings/Commercial'}]}}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.Assets(*, items: List[Asset])
Bases:
BaseModelDefines a collection of assets.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.BaseHazardRequest(*, group_ids: List[str] = ['public'])
Bases:
BaseModel- group_ids: List[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.Country(*, country: str, continent: str, country_iso_a3: str)
Bases:
BaseModelCountry information.
- country: str
- continent: str
- country_iso_a3: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.Countries(*, items: List[Country])
Bases:
BaseModelList of Country.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.IntensityCurve(*, intensities: List[float] = [], return_periods: Sequence[float] | None = [], index_values: Sequence[float] | Sequence[str] | None = [], index_name: str = '')
Bases:
BaseModelHazard indicator intensity curve. Acute hazards are parameterized by event intensities and return periods in years. Chronic hazards are parameterized by a set of index values. Index values are defined per indicator.
- intensities: List[float]
- return_periods: Sequence[float] | None
- index_values: Sequence[float] | Sequence[str] | None
- index_name: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.ExceedanceCurve(*, values: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>, exceed_probabilities: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>)
Bases:
BaseModelGeneral exceedance curve (e.g. hazazrd, impact).
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- values: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- exceed_probabilities: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- class physrisk.api.v1.common.Distribution(*, bin_edges: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>, probabilities: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>)
Bases:
BaseModelGeneral exceedance curve (e.g. hazazrd, impact).
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- bin_edges: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- probabilities: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- class physrisk.api.v1.common.HazardEventDistrib(*, intensity_bin_edges: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>, probabilities: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>, path: ~typing.List[str] = [])
Bases:
BaseModelIntensity curve of an acute hazard.
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- intensity_bin_edges: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- probabilities: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- path: List[str]
- class physrisk.api.v1.common.VulnerabilityCurve(*, asset_type: str, location: str, event_type: str, impact_type: str, intensity: List[float], intensity_units: str, impact_mean: List[float], impact_std: List[float])
Bases:
BaseModelDefines a damage or disruption curve.
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- asset_type: str
- location: str
- event_type: str
- impact_type: str
- intensity: List[float]
- intensity_units: str
- impact_mean: List[float]
- impact_std: List[float]
- class physrisk.api.v1.common.VulnerabilityCurves(*, items: List[VulnerabilityCurve])
Bases:
BaseModelList of VulnerabilityCurve.
- items: List[VulnerabilityCurve]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.common.VulnerabilityDistrib(*, intensity_bin_edges: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>, impact_bin_edges: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>, prob_matrix: ~typing.Annotated[~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[~numpy._typing._array_like._ScalarT]], ~pydantic.functional_validators.BeforeValidator(func=~physrisk.api.v1.common.before_validator, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~physrisk.api.v1.common.serialize_array, return_type=list, when_used=always)] = <factory>)
Bases:
BaseModelDefines a vulnerability matrix.
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- intensity_bin_edges: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- impact_bin_edges: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
- prob_matrix: Annotated[ndarray[tuple[Any, ...], dtype[_ScalarT]], BeforeValidator(func=before_validator, json_schema_input_type=PydanticUndefined), PlainSerializer(func=serialize_array, return_type=list, when_used=always)]
physrisk.api.v1.example_portfolios
- class physrisk.api.v1.example_portfolios.ExamplePortfoliosRequest
Bases:
BaseModelExample portfolios request.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
physrisk.api.v1.exposure_req_resp
- class physrisk.api.v1.exposure_req_resp.AssetExposureRequest(*, assets: ~physrisk.api.v1.common.Assets, calc_settings: ~physrisk.api.v1.impact_req_resp.CalcSettings = <factory>, scenario: str = 'rcp8p5', year: int = 2050, provider_max_requests: ~typing.Dict[str, int] = {})
Bases:
BaseModelImpact calculation request.
- calc_settings: CalcSettings
- scenario: str
- year: int
- provider_max_requests: Dict[str, int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.exposure_req_resp.Exposure(*, category: str, value: float | None, path: str = 'unknown')
Bases:
BaseModel- category: str
- value: float | None
- path: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.exposure_req_resp.AssetExposure(*, asset_id: str | None = None, exposures: Dict[str, Exposure] = {})
Bases:
BaseModelImpact at asset level. Each asset can have impacts for multiple hazard types.
- asset_id: str | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.exposure_req_resp.AssetExposureResponse(*, items: List[AssetExposure])
Bases:
BaseModelResponse to impact request.
- items: List[AssetExposure]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
physrisk.api.v1.hazard_data
- class physrisk.api.v1.hazard_data.Colormap(*, min_index: int | None = 1, min_value: float, max_index: int | None = 255, max_value: float, name: str, nodata_index: int | None = 0, units: str)
Bases:
BaseModelProvides details of colormap.
- min_index: int | None
- min_value: float
- max_index: int | None
- max_value: float
- name: str
- nodata_index: int | None
- units: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.MapInfo(*, colormap: Colormap | None, bounds: List[Tuple[float, float]] = [(-180.0, 85.0), (180.0, 85.0), (180.0, -85.0), (-180.0, -85.0)], bbox: List[float] | None = [-180.0, -85.0, 180.0, 85.0], index_values: Sequence[float | int | str] | None = None, path: str, source: str | None)
Bases:
BaseModelProvides information about map layer.
- bounds: List[Tuple[float, float]]
- bbox: List[float] | None
- index_values: Sequence[float | int | str] | None
- path: str
- source: str | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.Period(*, year: int, map_id: str)
Bases:
BaseModelProvides information about a period, which currently corresponds to a year, belonging to a scenario.
- year: int
- map_id: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.Scenario(*, id: str, years: List[int])
Bases:
BaseModelScenario ID and the list of available years for that scenario e.g. RCP8.5 = ‘rcp8.5’
- id: str
- years: List[int]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- physrisk.api.v1.hazard_data.expanded(item: str, key: str, param: str)
- class physrisk.api.v1.hazard_data.HazardResource(*, hazard_type: str, group_id: str | None = 'public', path: str, indicator_id: str, indicator_model_id: str | None = None, indicator_model_gcm: str, params: Dict[str, List[str]] = {}, display_name: str, display_groups: List[str] = [], description: str, map: MapInfo | None = None, scenarios: List[Scenario], store_netcdf_coords: bool = False, units: str)
Bases:
BaseModelProvides information about a set of hazard indicators, including available scenarios and years.
- hazard_type: str
- group_id: str | None
- path: str
- indicator_id: str
- indicator_model_id: str | None
- indicator_model_gcm: str
- params: Dict[str, List[str]]
- display_name: str
- display_groups: List[str]
- description: str
- store_netcdf_coords: bool
- units: str
- expand()
- key()
Unique key for the resource. array_path should be unique, although indicator_id is typically not. Vulnerability models request a hazard indicator by indicator_id from the Hazard Model. The Hazard Model selects based on its own logic (e.g. selects a particular General Circulation Model).
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- physrisk.api.v1.hazard_data.expand(item: str, key: str, param: str)
- physrisk.api.v1.hazard_data.expand_resource(resource: HazardResource, keys: List[str], params: Dict[str, List[str]]) Iterable[HazardResource]
- class physrisk.api.v1.hazard_data.InventorySource(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
FlagSource of inventory. Where multiple are selected, order is as shown: results from HAZARD_TEST override those of HAZARD and EMBEDDED (to facilitate testing).
- EMBEDDED = 1
- HAZARD = 2
- HAZARD_TEST = 4
- class physrisk.api.v1.hazard_data.HazardAvailabilityRequest(*, types: List[str] | None = [], sources: List[str] | None = None)
Bases:
BaseModel- types: List[str] | None
- sources: List[str] | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardAvailabilityResponse(*, models: List[HazardResource], colormaps: dict)
Bases:
BaseModel- models: List[HazardResource]
- colormaps: dict
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardDescriptionRequest(*, paths: List[str])
Bases:
BaseModel- paths: List[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardDescriptionResponse(*, descriptions: Dict[str, str])
Bases:
BaseModel- descriptions: Dict[str, str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.StaticInformationResponse(*, scenario_descriptions: Dict[str, str], oed_occupancy_codes: Dict[int, str])
Bases:
BaseModel- scenario_descriptions: Dict[str, str]
- oed_occupancy_codes: Dict[int, str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardDataRequestItem(*, longitudes: List[float], latitudes: List[float], request_item_id: str, hazard_type: str | None = None, indicator_id: str, indicator_model_gcm: str | None = '', path: str | None = None, scenario: str, year: int)
Bases:
BaseModel- longitudes: List[float]
- latitudes: List[float]
- request_item_id: str
- hazard_type: str | None
- indicator_id: str
- indicator_model_gcm: str | None
- path: str | None
- scenario: str
- year: int
- classmethod validate_hazard_type(hazard_type: str | None) str | None
- property event_type: str | None
use hazard_type instead.
- Type:
Deprecated
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardDataRequest(*, group_ids: List[str] = ['public'], interpolation: str = 'floor', interpolate_years: bool = True, provider_max_requests: Dict[str, int] = {}, items: List[HazardDataRequestItem])
Bases:
BaseHazardRequestRequest hazard indicator data for a set of locations, specified by latitude and longitude (in coordinate reference system EPSG:4326). A hazard indicator is defined by the type of the hazard (‘hazard_type’) and the indicator (‘indicator_id’). A hazard indicator is a measure that is used to quantify the hazard. For example, for hazard type ‘RiverineInundation’, flood depth (unprotected) is given by the indicator ‘flood_depth’. In addition, ‘scenario’ and ‘year’ are required. For ‘historical’ scenario, year is ignored and can be set to e.g. ‘-1’. Scenarios can be RCPs and SSPs; convention is e.g. ‘rcp8p5’ (RCP 8.5) and ‘ssp585’.
If only ‘hazard_type’ and ‘indicator_id’ are provided, then the default physrisk logic will be used to identify the data sets. If a specific data set is required, ‘path’ can be supplied. The path is the unique identifier of a ‘hazard resource’. A hazard resource is a collection of data arrays for different scenarios and years, typically made available by the same model provider.
Current behaviour is that empty arrays are returned if there is no match for the scenario and year in the selected / specified resource (an alternative would be to allow interpolation of years and proxying/interpolation of scenarios).
- interpolation: str
- interpolate_years: bool
- provider_max_requests: Dict[str, int]
- items: List[HazardDataRequestItem]
- model_config: ClassVar[ConfigDict] = {'json_schema_extra': {'examples': [{'items': [{'hazard_type': 'RiverineInundation', 'indicator_id': 'flood_depth', 'latitudes': [45.4089, 43.4923], 'longitudes': [20.3162, 4.7877], 'path': 'inundation/river_tudelft/v2/flood_depth_unprot_{scenario}_{year}', 'request_item_id': 'my_id', 'scenario': 'rcp8p5', 'year': 2035}]}, {'items': [{'hazard_type': 'RiverineInundation', 'indicator_id': 'flood_depth', 'latitudes': [45.4089, 43.4923], 'longitudes': [20.3162, 4.7877], 'path': 'inundation/river_tudelft/v2/flood_depth_unprot_{scenario}_{year}', 'request_item_id': 'my_id', 'scenario': 'historical', 'year': -1}]}]}}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardDataResponseItem(*, intensity_curve_set: List[IntensityCurve], request_item_id: str, hazard_type: str | None, indicator_id: str, scenario: str, year: int)
Bases:
BaseModel- intensity_curve_set: List[IntensityCurve]
- request_item_id: str
- hazard_type: str | None
- indicator_id: str
- scenario: str
- year: int
- property event_type: str | None
use hazard_type instead.
- Type:
Deprecated
- property model: str
use indicator_id instead.
- Type:
Deprecated
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_data.HazardDataResponse(*, items: List[HazardDataResponseItem])
Bases:
BaseModel- items: List[HazardDataResponseItem]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
physrisk.api.v1.hazard_image
- exception physrisk.api.v1.hazard_image.TileNotAvailableError
Bases:
KeyErrorRaised if the requested tile is not available, most commonly because the zoom level requested is not present.
- class physrisk.api.v1.hazard_image.Tile(x, y, z)
Bases:
NamedTuple- x: int
Alias for field number 0
- y: int
Alias for field number 1
- z: int
Alias for field number 2
- class physrisk.api.v1.hazard_image.HazardImageInfoRequest(*, group_ids: List[str] = ['public'], resource: str, scenario_id: str, year: int)
Bases:
BaseHazardRequest- resource: str
- scenario_id: str
- year: int
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_image.HazardImageInfoResponse(*, group_ids: List[str] = ['public'], all_index_values: List[Any] = [], available_index_values: List[Any] = [], index_display_name: str = 'index', index_units: str = '', max_zoom: int | None = None)
Bases:
BaseHazardRequest- all_index_values: List[Any]
- available_index_values: List[Any]
- index_display_name: str
- index_units: str
- max_zoom: int | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.hazard_image.HazardImageRequest(*, group_ids: List[str] = ['public'], resource: str, scenario_id: str, year: int, colormap: str | None = 'heating', format: str | None = 'PNG', min_value: float | None, max_value: float | None, tile: Tile | None, index_value: Any | None = None)
Bases:
BaseHazardRequest- resource: str
- scenario_id: str
- year: int
- colormap: str | None
- format: str | None
- min_value: float | None
- max_value: float | None
- index_value: Any | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
physrisk.api.v1.impact_req_resp
- class physrisk.api.v1.impact_req_resp.CalcSettings(*, hazard_interp: str | None = None, hazard_scope: str | None = None, interpolate_years: bool = True, hazard_scope_by_indicator: Dict[str, List[str] | None] | None = None)
Bases:
BaseModel- hazard_interp: str | None
- hazard_scope: str | None
- interpolate_years: bool
- hazard_scope_by_indicator: Dict[str, List[str] | None] | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.AssetImpactRequest(*, assets: ~physrisk.api.v1.common.Assets, calc_settings: ~physrisk.api.v1.impact_req_resp.CalcSettings = <factory>, include_asset_level: bool = True, include_measures: bool = False, include_calc_details: bool = True, use_case_id: str = '', provider_max_requests: ~typing.Dict[str, int] = {}, scenarios: ~typing.Sequence[str] | None = [], years: ~typing.Sequence[int] | None = [], scenario: str = 'rcp8p5', year: int = 2050)
Bases:
BaseModelImpact calculation request.
- calc_settings: CalcSettings
- include_asset_level: bool
- include_measures: bool
- include_calc_details: bool
- use_case_id: str
- provider_max_requests: Dict[str, int]
- scenarios: Sequence[str] | None
- years: Sequence[int] | None
- scenario: str
- year: int
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskMeasureDefinition(*, measure_id: str = '', label: str = '<short description of the measure, e.g. fractional loss for 1-in-100 year event>', description: str, units: str = '')
Bases:
BaseModel- measure_id: str
- label: str
- description: str
- units: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskScoreValue(*, value: int = -1, label: str = '', description: str = '', lower_bound: List[Any] | None = None, upper_bound: List[Any] | None = None)
Bases:
BaseModel- value: int
- label: str
- description: str
- lower_bound: List[Any] | None
- upper_bound: List[Any] | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.ScoreBasedRiskMeasureDefinition(*, hazard_types: List[str] = [], values: List[RiskScoreValue] = [], underlying_measures: List[RiskMeasureDefinition] = [])
Bases:
BaseModel- hazard_types: List[str]
- values: List[RiskScoreValue]
- underlying_measures: List[RiskMeasureDefinition]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskMeasureKey(*, hazard_type: str, scenario_id: str, year: str, measure_id: str, hazard_indicator_id: str | None = None)
Bases:
BaseModelHazard type (e.g. ‘RiverineInundation’), scenario ID (e.g. ‘ssp585’), year (e.g. ‘2050’) and measure ID (e.g. ‘measure_set_1’) that together identify a risk measure. For drill-down by hazard indicator ID, hazard_indicator_id can optionally be provided.
- hazard_type: str
- scenario_id: str
- year: str
- measure_id: str
- hazard_indicator_id: str | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskMeasure(*, key: RiskMeasureKey, score: int = [0], measure_0: float, measure_1: float | None = None)
Bases:
BaseModelA single risk measure, most commonly for a portfolio.
- key: RiskMeasureKey
- score: int
- measure_0: float
- measure_1: float | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskMeasuresForAssets(*, key: RiskMeasureKey, scores: List[int] = [0], measures_0: List[float], measures_1: List[float] | None = [])
Bases:
BaseModelRisk measures for multiple assets. Results returned in this form, i.e. using an array for asset scores, for compactness (keep response size down). List-based version of RiskMeasure.
- key: RiskMeasureKey
- scores: List[int]
- measures_0: List[float]
- measures_1: List[float] | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.ScoreBasedRiskMeasureSetDefinition(*, measure_set_id: str, asset_measure_ids_for_hazard: ~typing.Dict[str, ~typing.List[str]], score_definitions: ~typing.Dict[str, ~physrisk.api.v1.impact_req_resp.ScoreBasedRiskMeasureDefinition], asset_measure_ids_for_hazard_drilldown: dict[str, dict[str, list[str]]] = <factory>)
Bases:
BaseModel- measure_set_id: str
- asset_measure_ids_for_hazard: Dict[str, List[str]]
- score_definitions: Dict[str, ScoreBasedRiskMeasureDefinition]
- asset_measure_ids_for_hazard_drilldown: dict[str, dict[str, list[str]]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskMeasures(*, measures_for_assets: List[RiskMeasuresForAssets], measures_for_portfolio: List[RiskMeasure], score_based_measure_set_defn: ScoreBasedRiskMeasureSetDefinition, measures_definitions: List[RiskMeasureDefinition] | None = [], scenarios: List[Scenario], asset_ids: List[str])
Bases:
BaseModelRisk measures
- measures_for_assets: List[RiskMeasuresForAssets]
- measures_for_portfolio: List[RiskMeasure]
- score_based_measure_set_defn: ScoreBasedRiskMeasureSetDefinition
- measures_definitions: List[RiskMeasureDefinition] | None
- asset_ids: List[str]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.CalculationDetails(*, hazard_exceedance: ExceedanceCurve | None = None, hazard_distribution: Distribution | None = None, vulnerability_distribution: VulnerabilityDistrib | None = None, hazard_path: List[str] = ['unknown'], hazard_units: str = ['unknown'])
Bases:
BaseModelDetails of a calculation. hazard_exceedance, hazard_distribution and vulnerability_distribution are only set in the case of an acute hazard calculation.
- hazard_exceedance: ExceedanceCurve | None
- hazard_distribution: Distribution | None
- vulnerability_distribution: VulnerabilityDistrib | None
- hazard_path: List[str]
- hazard_units: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.ImpactKey(*, hazard_type: str = '', scenario_id: str = '', year: str = '')
Bases:
BaseModel- hazard_type: str
- scenario_id: str
- year: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.AssetSingleImpact(*, key: ImpactKey, impact_type: str = 'damage', hazard_indicator_id: str = '', impact_distribution: Distribution | None = None, impact_exceedance: ExceedanceCurve | None = None, impact_mean: float | None, impact_std_deviation: float | None = None, impact_semi_std_deviation: float | None = None, calc_details: CalculationDetails | None = None)
Bases:
BaseModelImpact at level of single asset and single type of hazard.
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'ser_json_inf_nan': 'strings'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- impact_type: str
- hazard_indicator_id: str
- impact_distribution: Distribution | None
- impact_exceedance: ExceedanceCurve | None
- impact_mean: float | None
- impact_std_deviation: float | None
- impact_semi_std_deviation: float | None
- calc_details: CalculationDetails | None
- class physrisk.api.v1.impact_req_resp.AssetLevelImpact(*, asset_id: str | None = None, impacts: List[AssetSingleImpact] = [])
Bases:
BaseModelImpact at asset level. Each asset can have impacts for multiple hazard types.
- asset_id: str | None
- impacts: List[AssetSingleImpact]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.AssetImpactResponse(*, asset_impacts: List[AssetLevelImpact] | None = None, risk_measures: RiskMeasures | None = None)
Bases:
BaseModelResponse to impact request.
- asset_impacts: List[AssetLevelImpact] | None
- risk_measures: RiskMeasures | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class physrisk.api.v1.impact_req_resp.RiskMeasuresHelper(risk_measures: RiskMeasures)
Bases:
object- get_measure(hazard_type: str, scenario: str, year: int, hazard_indicator_id: str | None = None)
- get_score_details(score: int, definition: ScoreBasedRiskMeasureDefinition)
- class Key(hazard_type, scenario_id, year, measure_id, hazard_indicator_id)
Bases:
NamedTuple- hazard_type: str
Alias for field number 0
- scenario_id: str
Alias for field number 1
- year: str
Alias for field number 2
- measure_id: str
Alias for field number 3
- hazard_indicator_id: str | None
Alias for field number 4