smash.signatures#
- smash.signatures(model, sign=None, gauge='all', event_seg=None, domain='obs')[source]#
Compute simulated or observed hydrological signatures of Model.
- Parameters:
- model
Model Primary data structure of the hydrological model
smash.- signstr, list[str, …] or None, default None
Define signature(s) to compute. Should be one of
'Crc','Crchf','Crclf','Crch2r','Cfp2','Cfp10','Cfp50','Cfp90'(continuous signatures-based error metrics)'Eff','Ebf','Erc','Erchf','Erclf','Erch2r','Elt','Epf'(flood event signatures-based error metrics)
Note
If not given, all of continuous and flood event signatures will be computed.
- gaugestr or list[str, …], default ‘all’
Type of gauge to compute signatures. There are two ways to specify it:
An alias among
'all'(all gauge codes) or'dws'(most downstream gauge code(s))A gauge code or any sequence of gauge codes. The gauge code(s) given must belong to the gauge codes defined in the
Model.mesh
>>> gauge = "dws" >>> gauge = "V3524010" >>> gauge = ["V3524010", "V3515010"]
- event_segdict[str, Any] or None, default None
A dictionary of event segmentation options when calculating flood event signatures. The keys are
'peak_quant','peak_value','max_duration', and'by'.Note
If not given, default values will be set for all elements. If a specific element is not given in the dictionary, a default value will be set for that element. See
hydrograph_segmentationfor more.- domainstr, default ‘obs’
Compute observed (
'obs') or simulated ('sim') signatures.
- model
- Returns:
- signatures
Signatures It returns an object containing the results of the signatures computation.
- signatures
See also
SignaturesRepresents signatures computation result.
Examples
>>> from smash.factory import load_dataset >>> setup, mesh = load_dataset("cance") >>> model = smash.Model(setup, mesh)
Run the forward Model
>>> model.forward_run()
Compute simulated signatures
>>> sign = smash.signatures(model, domain="sim") >>> sign cont: <class 'pandas.core.frame.DataFrame'> event: <class 'pandas.core.frame.DataFrame'>
Access simulated flood event signatures as a
pandas.DataFrame>>> sign.event code season start ... Erch2r Elt Epf 0 V3524010 autumn 2014-11-03 03:00:00 ... 0.324836 3.0 100.448631 1 V3515010 autumn 2014-11-03 10:00:00 ... 0.339471 0.0 20.168104 2 V3517010 autumn 2014-11-03 08:00:00 ... 0.319605 1.0 5.356519 [3 rows x 13 columns]
Access simulated continuous signatures as a
pandas.DataFrame>>> sign.cont code Crc Crchf ... Cfp10 Cfp50 Cfp90 0 V3524010 0.208410 0.064490 ... 6.270661e-04 1.767450 27.806826 1 V3515010 0.139829 0.049087 ... 4.919724e-05 0.150414 5.161743 2 V3517010 0.139431 0.047900 ... 6.545733e-07 0.031947 1.355473 [3 rows x 10 columns]
Access specific simulated continuous signature for each gauge
>>> sign.cont["Crc"] 0 0.208410 1 0.139829 2 0.139431 Name: Crc, dtype: float64
Access all simulated continuous signatures for a single gauge
>>> sign.cont[sign.cont["code"] == "V3524010"] code Crc Crchf ... Cfp10 Cfp50 Cfp90 0 V3524010 0.20841 0.06449 ... 0.000627 1.76745 27.806826 [1 rows x 10 columns]
Access specific simulated continuous signatures for a single gauge
>>> sign.cont["Crc"][sign.cont["code"] == "V3524010"] 0 0.20841 Name: Crc, dtype: float64
Use the
itemmethod to return the underlying data as a Python scalar>>> sign.cont["Crc"][sign.cont["code"] == "V3524010"].item() 0.20841039717197418