conv¶
The HydPy-C model family allows connecting different kinds of models providing output and requiring input that does not fit immediately.
Method Features¶
-
class
hydpy.models.conv.conv_model.
Model
[source]¶ Bases:
hydpy.core.modeltools.AdHocModel
The HydPy-Conv model.
- The following “inlet update methods” are called in the given sequence at the beginning of each simulation step:
Pick_Inputs_V1
Pick the input from all inlet nodes.
- The following “run methods” are called in the given sequence during each simulation step:
Calc_ActualConstant_ActualFactor_V1
Calculate the linear regression coefficientsActualConstant
andActualFactor
for modelling the relationship betweenInputs
(dependent variable) andHeights
(independent variable).Calc_InputPredictions_V1
Predict the values of the input nodes based on a linear model.Calc_OutputPredictions_V1
Predict the values of the output nodes based on a linear model.Calc_InputResiduals_V1
Determine the residuals at the input nodes.Calc_Outputs_V1
Perform a simple proximity-based interpolation.Calc_Outputs_V2
Perform a simple inverse distance weighted interpolation based on the original data supplied by the input nodes.Calc_OutputResiduals_V1
Perform a simple inverse distance weighted interpolation based on the residuals previously determined for the input nodes.Calc_Outputs_V3
Calculate the values of the output nodes by combining the initial predictions with the interpolated residuals.
- The following “outlet update methods” are called in the given sequence at the end of each simulation step:
Pass_Outputs_V1
Pass the output to all outlet nodes.
- The following “additional methods” might be called by one or more of the other methods or are meant to be directly called by the user:
Return_Mean_V1
Return the arithmetic mean value for the given vector.Interpolate_InverseDistance_V1
Perform a simple inverse distance weighted interpolation.
-
connect
()[source]¶ Connect the
InletSequence
andOutletSequence
objects of the actual model to theNodeSequence
objects handled by an arbitrary number of inlet and outlet nodes.To application models derived from
Model
, you first need to define anElement
connected with an arbitrary number of inlet and outlet nodes:>>> from hydpy import Element >>> conv = Element("conv", ... inlets=["in1", "in2"], ... outlets=["out1", "out2", "out3"])
Second, you must define the inlet and outlet nodes’ coordinates via parameter
InputCoordinates
andOutputCoordinates
, respectively. In both cases, use the names of theNode
objects as keyword arguments to pass the corresponding coordinates:>>> from hydpy.models.conv_v001 import * >>> parameterstep() >>> inputcoordinates( ... in1=(0.0, 3.0), ... in2=(2.0, -1.0)) >>> outputcoordinates( ... out1=(0.0, 3.0), ... out2=(3.0, -2.0), ... out3=(1.0, 2.0)) >>> maxnmbinputs() >>> parameters.update()
conv
passes the current values of the inlet nodes correctly to the outlet nodes (note that node in1 works with simulated values while node in2 works with observed values, as we set itsdeploymode
to obs):>>> conv.model = model >>> conv.inlets.in1.sequences.sim = 1.0 >>> conv.inlets.in2.deploymode = "obs" >>> conv.inlets.in2.sequences.obs = 2.0 >>> model.simulate(0) >>> conv.outlets.out1.sequences.sim sim(1.0) >>> conv.outlets.out2.sequences.sim sim(2.0) >>> conv.outlets.out3.sequences.sim sim(1.0)
When you forget a node (or misspell its name), you get the following error message:
>>> outputcoordinates( ... out1=(0.0, 3.0), ... out2=(3.0, -2.0)) >>> maxnmbinputs() >>> parameters.update() >>> conv.model = model Traceback (most recent call last): ... RuntimeError: While trying to connect model `conv_v001` of element `conv`, the following error occurred: The node handled by control parameter outputcoordinates (out1 and out2) are not the same as the outlet nodes handled by element conv (out1, out2, and out3).
-
class
hydpy.models.conv.conv_model.
Pick_Inputs_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Pick the input from all inlet nodes.
-
class
hydpy.models.conv.conv_model.
Calc_Outputs_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Perform a simple proximity-based interpolation.
- Requires the control parameter:
- Requires the derived parameters:
- Requires the flux sequence:
- Calculates the flux sequence:
Examples:
With complete input data, method
Calc_Outputs_V1
performs the most simple nearest-neighbour approach:>>> from hydpy.models.conv import * >>> parameterstep() >>> maxnmbinputs.value = 1 >>> derived.nmboutputs(3) >>> derived.proximityorder.shape = (3, 1) >>> derived.proximityorder([[0], [1], [0]]) >>> fluxes.inputs.shape = 2 >>> fluxes.inputs = 1.0, 2.0 >>> model.calc_outputs_v1() >>> fluxes.outputs outputs(1.0, 2.0, 1.0)
With incomplete data, it subsequently checks the second-nearest location, the third-nearest location, and so on, until it finds an actual value. Parameter
MaxNmbInputs
defines the maximum number of considered locations:>>> fluxes.inputs = 1.0, nan >>> model.calc_outputs_v1() >>> fluxes.outputs outputs(1.0, nan, 1.0)
>>> maxnmbinputs.value = 2 >>> derived.proximityorder.shape = (3, 2) >>> derived.proximityorder([[0, 1], [1, 0], [0, 1]]) >>> model.calc_outputs_v1() >>> fluxes.outputs outputs(1.0, 1.0, 1.0)
-
class
hydpy.models.conv.conv_model.
Return_Mean_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Return the arithmetic mean value for the given vector.
Examples:
Method
Return_Mean_V1
requires two vectors and one integer value. The first vector (in the following examples:Inputs
) handles the data to be averaged. The second vector (Outputs
) serves as a mask. MethodReturn_Mean_V1
takes only those vector positions into account, where the value of the mask vector is notnan
. The integer value defines the length of both vectors:>>> from hydpy.models.conv import * >>> parameterstep() >>> fluxes.inputs.shape = 3 >>> fluxes.outputs.shape = 3 >>> fluxes.inputs = 0.0, 1.0, 5.0 >>> fluxes.outputs = 9.9, 9.9, 9.9 >>> model.return_mean_v1(fluxes.inputs.values, fluxes.outputs.values, 3) 2.0 >>> fluxes.outputs = nan, 9.9, nan >>> model.return_mean_v1(fluxes.inputs.values, fluxes.outputs.values, 3) 1.0 >>> fluxes.outputs = nan, nan, nan >>> model.return_mean_v1(fluxes.inputs.values, fluxes.outputs.values, 3) nan
-
class
hydpy.models.conv.conv_model.
Calc_ActualConstant_ActualFactor_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the linear regression coefficients
ActualConstant
andActualFactor
for modelling the relationship betweenInputs
(dependent variable) andHeights
(independent variable).- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequence:
- Calculates the flux sequences:
Examples:
First, we calculate both regression coefficients for a small data set consisting of only three data points:
>>> from hydpy.models.conv import * >>> parameterstep() >>> inputheights.shape = 3 >>> inputheights.values = 1.0, 2.0, 3.0 >>> minnmbinputs(3) >>> derived.nmbinputs(3) >>> fluxes.inputs = 2.0, 3.0, 5.0 >>> model.calc_actualconstant_actualfactor_v1() >>> fluxes.actualconstant actualconstant(0.333333) >>> fluxes.actualfactor actualfactor(1.5)
In the last example, the required number of data points (
MinNmbInputs
) exactly agrees with the available number of data points. In the next example, we insert anan
value into theInputs
array to reduce the number of available data points to two. Then,Calc_ActualConstant_ActualFactor_V1
falls back to the default values provided by the control parametersDefaultConstant
andDefaultFactor
:>>> fluxes.inputs = 2.0, nan, 5.0 >>> defaultconstant(0.0) >>> defaultfactor(1.0) >>> model.calc_actualconstant_actualfactor_v1() >>> fluxes.actualconstant actualconstant(0.0) >>> fluxes.actualfactor actualfactor(1.0)
If we lower our data requirements, method
Calc_ActualConstant_ActualFactor_V1
uses the remaining two data points to calculate the coefficients:>>> minnmbinputs(2) >>> model.calc_actualconstant_actualfactor_v1() >>> fluxes.actualconstant actualconstant(0.5) >>> fluxes.actualfactor actualfactor(1.5)
The following two examples deal with a perfect and a non-existing linear relationship:
>>> fluxes.inputs = 2.0, 4.0, 6.0 >>> model.calc_actualconstant_actualfactor_v1() >>> fluxes.actualconstant actualconstant(0.0) >>> fluxes.actualfactor actualfactor(2.0)
>>> fluxes.inputs = 1.0, 4.0, 1.0 >>> model.calc_actualconstant_actualfactor_v1() >>> fluxes.actualconstant actualconstant(2.0) >>> fluxes.actualfactor actualfactor(0.0)
In case all values of the independent variable are the same, method
Calc_ActualConstant_ActualFactor_V1
again uses the provided default values:>>> inputheights.values = 1.0, 1.0, 1.0 >>> model.calc_actualconstant_actualfactor_v1() >>> fluxes.actualconstant actualconstant(0.0) >>> fluxes.actualfactor actualfactor(1.0)
-
class
hydpy.models.conv.conv_model.
Calc_InputPredictions_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Predict the values of the input nodes based on a linear model.
- Requires the control parameter:
- Requires the derived parameter:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(InputPredictions = ActualConstant + ActualFactor \cdot InputHeights\)
Example:
>>> from hydpy.models.conv import * >>> parameterstep() >>> inputheights.shape = 2 >>> inputheights.values = 1.0, 2.0 >>> derived.nmbinputs(2) >>> fluxes.actualconstant(1.0) >>> fluxes.actualfactor(2.0) >>> model.calc_inputpredictions_v1() >>> fluxes.inputpredictions inputpredictions(3.0, 5.0)
-
class
hydpy.models.conv.conv_model.
Calc_OutputPredictions_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Predict the values of the output nodes based on a linear model.
- Requires the control parameter:
- Requires the derived parameter:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(OutputPredictions = ActualConstant + ActualFactor \cdot OutputHeights\)
Example:
>>> from hydpy.models.conv import * >>> parameterstep() >>> outputheights.shape = 2 >>> outputheights.values = 1.0, 2.0 >>> derived.nmboutputs(2) >>> fluxes.actualconstant(1.0) >>> fluxes.actualfactor(2.0) >>> model.calc_outputpredictions_v1() >>> fluxes.outputpredictions outputpredictions(3.0, 5.0)
-
class
hydpy.models.conv.conv_model.
Calc_InputResiduals_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Determine the residuals at the input nodes.
- Requires the derived parameter:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(InputResiduals = Inputs - InputPredictions\)
Example:
>>> from hydpy.models.conv import * >>> parameterstep() >>> derived.nmbinputs(2) >>> fluxes.inputs = 1.0, 2.0 >>> fluxes.inputpredictions = 0.0, 4.0 >>> model.calc_inputresiduals_v1() >>> fluxes.inputresiduals inputresiduals(1.0, -2.0)
-
class
hydpy.models.conv.conv_model.
Interpolate_InverseDistance_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Perform a simple inverse distance weighted interpolation.
- Required by the methods:
- Requires the control parameter:
- Requires the derived parameters:
See the documentation on method
Calc_Outputs_V2
for further information.
-
class
hydpy.models.conv.conv_model.
Calc_Outputs_V2
[source]¶ Bases:
hydpy.core.modeltools.Method
Perform a simple inverse distance weighted interpolation based on the original data supplied by the input nodes.
- Required submethod:
- Requires the control parameter:
- Requires the derived parameters:
- Requires the flux sequence:
- Calculates the flux sequence:
Examples:
With complete input data, method
Calc_Outputs_V2
performs the most simple inverse distance weighted approach:>>> from hydpy.models.conv import * >>> parameterstep()
>>> maxnmbinputs.value = 4 >>> derived.nmboutputs(3) >>> derived.proximityorder.shape = 3, 4 >>> derived.proximityorder([[0, 2, 1, 3], ... [1, 0, 2, 3], ... [0, 2, 1, 3]]) >>> derived.weights.shape = 3, 4 >>> derived.weights([[inf, inf, 0.05, 0.000053], ... [0.5, 0.029412, 0.029412, 0.000052], ... [0.5, 0.5, 0.1, 0.000053]])
>>> fluxes.inputs.shape = 4 >>> fluxes.inputs = 1.0, 5.0, 3.0, 6.0 >>> model.calc_outputs_v2() >>> fluxes.outputs outputs(2.0, 4.684331, 2.272907)
With incomplete data, it subsequently skips all missing values. Parameter
MaxNmbInputs
defines the maximum number of considered locations:>>> fluxes.inputs = nan, 5.0, nan, 6.0 >>> model.calc_outputs_v2() >>> fluxes.outputs outputs(5.001059, 5.000104, 5.00053)
With just one considered location, method
Calc_Outputs_V2
calculates the same results as the nearest-neighbour approach implemented by methodCalc_Outputs_V1
:>>> maxnmbinputs.value = 1 >>> derived.proximityorder.shape = 3, 1 >>> derived.proximityorder([[0], ... [1], ... [0]]) >>> derived.weights.shape = 3, 1 >>> derived.weights([[inf], ... [0.5], ... [0.5]]) >>> model.calc_outputs_v2() >>> fluxes.outputs outputs(nan, 5.0, nan)
-
class
hydpy.models.conv.conv_model.
Calc_OutputResiduals_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Perform a simple inverse distance weighted interpolation based on the residuals previously determined for the input nodes.
- Required submethod:
- Requires the control parameter:
- Requires the derived parameters:
- Requires the flux sequence:
- Calculates the flux sequence:
Example:
See the documentation on method
Calc_Outputs_V2
for further information, from which we take the following (first) example:>>> from hydpy.models.conv import * >>> parameterstep()
>>> maxnmbinputs.value = 4 >>> derived.nmboutputs(3) >>> derived.proximityorder.shape = 3, 4 >>> derived.proximityorder([[0, 2, 1, 3], ... [1, 0, 2, 3], ... [0, 2, 1, 3]]) >>> derived.weights.shape = 3, 4 >>> derived.weights([[inf, inf, 0.05, 0.000053], ... [0.5, 0.029412, 0.029412, 0.000052], ... [0.5, 0.5, 0.1, 0.000053]])
>>> fluxes.inputresiduals.shape = 4 >>> fluxes.inputresiduals = 1.0, 5.0, 3.0, 6.0 >>> model.calc_outputresiduals_v1() >>> fluxes.outputresiduals outputresiduals(2.0, 4.684331, 2.272907)
-
class
hydpy.models.conv.conv_model.
Calc_Outputs_V3
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the values of the output nodes by combining the initial predictions with the interpolated residuals.
- Requires the derived parameter:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(Outputs = OutputPredictions - OutputResiduals\)
Examples:
>>> from hydpy.models.conv import * >>> parameterstep() >>> derived.nmboutputs(2) >>> fluxes.outputpredictions = 1.0, 2.0 >>> fluxes.outputresiduals = 3.0, -4.0 >>> model.calc_outputs_v3() >>> fluxes.outputs outputs(4.0, -2.0)
-
class
hydpy.models.conv.conv_model.
Pass_Outputs_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Pass the output to all outlet nodes.
- Requires the derived parameter:
- Requires the flux sequence:
- Calculates the outlet sequence:
Parameter Features¶
Control parameters¶
-
class
hydpy.models.conv.
ControlParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Control parameters of model conv.
- The following classes are selected:
InputCoordinates()
Coordinates of the inlet nodes [?].OutputCoordinates()
Coordinates of the outlet nodes [?].InputHeights()
The height (above sea level or anything else) of the input nodes [?].OutputHeights()
The height (above sea level or anything else) of the output nodes [?].MaxNmbInputs()
The maximum number of input locations to be taken into account for interpolating the values of a specific output location [-].MinNmbInputs()
The minimum number of inputs for performing a statistical analysis [-].DefaultConstant()
Default or fallback value for the constant of the linear regression model [?].DefaultFactor()
Default or fallback value for the factor of the linear regression model [?].Power()
Power parameter for calculating inverse distance weights [-].
-
class
hydpy.models.conv.conv_control.
Coordinates
(subvars: hydpy.core.parametertools.SubParameters)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for
InputCoordinates
andOutputCoordinates
[?].We use the derived class
InputCoordinates
as an example:>>> from hydpy.models.conv import * >>> parameterstep()
Coordinates
subclasses define 2-dimensional sequences. Hence, we must define their shape first:>>> inputcoordinates inputcoordinates(?) >>> inputcoordinates.values Traceback (most recent call last): ... hydpy.core.exceptiontools.AttributeNotReady: Shape information for variable `inputcoordinates` can only be retrieved after it has been defined.
However, you usually do this automatically when assigning new values. Use keyword arguments to define the names of the relevant input nodes as well as their coordinates:
>>> inputcoordinates(in1=(1.0, 3.0)) >>> inputcoordinates inputcoordinates(in1=(1.0, 3.0)) >>> inputcoordinates.values array([[ 1., 3.]])
Defining new coordinates removes the old ones:
>>> inputcoordinates(in2=(2.0, 4.0), ... in0=(3.0, 5.0), ... in3=(4.0, 6.0)) >>> inputcoordinates inputcoordinates(in2=(2.0, 4.0), in0=(3.0, 5.0), in3=(4.0, 6.0)) >>> inputcoordinates.values array([[ 2., 4.], [ 3., 5.], [ 4., 6.]])
You are free to change individual coordinate values (the rows of the data array contain the different value pairs; the row order corresponds to the definition order when “calling” the parameter):
>>> inputcoordinates.values[1, 0] = 9.0 >>> inputcoordinates inputcoordinates(in2=(2.0, 4.0), in0=(9.0, 5.0), in3=(4.0, 6.0))
The attribute
nodes
stores the correctly ordered nodes:>>> inputcoordinates.nodes (Node("in2", variable="Q"), Node("in0", variable="Q"), Node("in3", variable="Q"))
-
TYPE
¶
-
-
nodes
: Tuple[hydpy.core.devicetools.Node, …]¶ The relevant input or output nodes.
-
class
hydpy.models.conv.conv_control.
InputCoordinates
(subvars: hydpy.core.parametertools.SubParameters)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Coordinates of the inlet nodes [?].
-
nodes
: Tuple[hydpy.core.devicetools.Node, …]¶ The relevant input or output nodes.
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.conv.conv_control.
OutputCoordinates
(subvars: hydpy.core.parametertools.SubParameters)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Coordinates of the outlet nodes [?].
-
nodes
: Tuple[hydpy.core.devicetools.Node, …]¶ The relevant input or output nodes.
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.conv.conv_control.
Heights
(subvars: hydpy.core.parametertools.SubParameters)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for
InputHeights
andOutputHeights
[?].We use the derived class
InputHeights
as an example:>>> from hydpy.models.conv import * >>> parameterstep()
Heights
subclasses define 1-dimensional sequences. Hence, we must define their shape first:>>> inputheights inputheights(?) >>> inputheights.values Traceback (most recent call last): ... hydpy.core.exceptiontools.AttributeNotReady: Shape information for variable `inputheights` can only be retrieved after it has been defined.
However, you usually do this automatically when assigning new values. Use keyword arguments to define the names of the relevant input nodes as well as their heights:
>>> inputheights(in1=1.0) >>> inputheights inputheights(in1=1.0) >>> inputheights.values array([ 1.])
Defining new heights removes the old ones:
>>> inputheights(in2=2.0, ... in0=3.0, ... in3=4.0) >>> inputheights inputheights(in2=2.0, in0=3.0, in3=4.0) >>> inputheights.values array([ 2., 3., 4.])
You are free to change individual height values (the row order corresponds to the definition order when “calling” the parameter):
>>> inputheights.values[1] = 9.0 >>> inputheights inputheights(in2=2.0, in0=9.0, in3=4.0)
The attribute
nodes
stores the correctly ordered nodes:>>> inputheights.nodes (Node("in2", variable="Q"), Node("in0", variable="Q"), Node("in3", variable="Q"))
-
TYPE
¶
-
-
nodes
: Tuple[hydpy.core.devicetools.Node, …]¶ The relevant input or output nodes.
-
class
hydpy.models.conv.conv_control.
InputHeights
(subvars: hydpy.core.parametertools.SubParameters)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]The height (above sea level or anything else) of the input nodes [?].
- Required by the methods:
Calc_ActualConstant_ActualFactor_V1
Calc_InputPredictions_V1
-
nodes
: Tuple[hydpy.core.devicetools.Node, …]¶ The relevant input or output nodes.
-
subvars
: SubVariablesType¶
-
class
hydpy.models.conv.conv_control.
OutputHeights
(subvars: hydpy.core.parametertools.SubParameters)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]The height (above sea level or anything else) of the output nodes [?].
- Required by the method:
-
nodes
: Tuple[hydpy.core.devicetools.Node, …]¶ The relevant input or output nodes.
-
subvars
: SubVariablesType¶
-
class
hydpy.models.conv.conv_control.
MaxNmbInputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]The maximum number of input locations to be taken into account for interpolating the values of a specific output location [-].
- Required by the methods:
Calc_OutputResiduals_V1
Calc_Outputs_V1
Calc_Outputs_V2
Interpolate_InverseDistance_V1
When passing no value, parameter
MaxNmbInputs
queries it from the shape of parameterInputCoordinates
:>>> from hydpy.models.conv import * >>> parameterstep() >>> inputcoordinates(in2=(2.0, 4.0), ... in0=(3.0, 5.0), ... in3=(4.0, 6.0)) >>> maxnmbinputs() >>> maxnmbinputs maxnmbinputs(3)
You can define alternative values manually:
>>> maxnmbinputs(2) >>> maxnmbinputs maxnmbinputs(2)
-
TYPE
¶
-
trim
(lower=None, upper=None)[source]¶ Assure that the value of
MaxNmbInputs
does not exceed the number of available input locations.>>> from hydpy.models.conv import * >>> parameterstep() >>> inputcoordinates(in2=(2.0, 4.0), ... in0=(3.0, 5.0), ... in3=(4.0, 6.0)) >>> maxnmbinputs(0) Traceback (most recent call last): ... ValueError: The value `0` of parameter `maxnmbinputs` of element `?` is not valid. >>> maxnmbinputs(4) Traceback (most recent call last): ... ValueError: The value `4` of parameter `maxnmbinputs` of element `?` is not valid.
-
class
hydpy.models.conv.conv_control.
MinNmbInputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]The minimum number of inputs for performing a statistical analysis [-].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.conv.conv_control.
DefaultConstant
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Default or fallback value for the constant of the linear regression model [?].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.conv.conv_control.
DefaultFactor
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Default or fallback value for the factor of the linear regression model [?].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.conv.conv_control.
Power
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Power parameter for calculating inverse distance weights [-].
-
TYPE
¶
-
Derived parameters¶
-
class
hydpy.models.conv.
DerivedParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Derived parameters of model conv.
- The following classes are selected:
NmbInputs()
The number of inlet nodes [-]NmbOutputs()
The number of outlet nodes [-]Distances()
Distances of the inlet nodes to each outlet node [?].ProximityOrder()
Indices of the inlet nodes in the order of their proximity to each outlet node [-].Weights()
Weighting coefficients of the inlet nodes corresponding to their proximity to each outlet node and parameterPower
[-].
-
class
hydpy.models.conv.conv_derived.
NmbInputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]The number of inlet nodes [-]
- Required by the methods:
Calc_ActualConstant_ActualFactor_V1
Calc_InputPredictions_V1
Calc_InputResiduals_V1
Pick_Inputs_V1
-
TYPE
¶
-
update
() → None[source]¶ Determine the number of inlet nodes via inspecting control parameter
InputCoordinates
.Note that invoking method
update()
like calling the parameter directly also sets the shape of flux sequenceInputs
:>>> from hydpy.models.conv import * >>> parameterstep() >>> inputcoordinates( ... in1=(0.0, 3.0), ... in2=(2.0, -1.0)) >>> derived.nmbinputs.update() >>> derived.nmbinputs nmbinputs(2) >>> fluxes.inputs.shape (2,)
>>> derived.nmbinputs(3) >>> derived.nmbinputs nmbinputs(3) >>> fluxes.inputs.shape (3,)
-
class
hydpy.models.conv.conv_derived.
NmbOutputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]The number of outlet nodes [-]
- Required by the methods:
Calc_OutputPredictions_V1
Calc_OutputResiduals_V1
Calc_Outputs_V1
Calc_Outputs_V2
Calc_Outputs_V3
Interpolate_InverseDistance_V1
Pass_Outputs_V1
-
TYPE
¶
-
update
() → None[source]¶ Determine the number of inlet nodes via inspecting control parameter
OutputCoordinates
.Note that invoking method
update()
like calling the parameter directly also sets the shape of flux sequenceOutputs
:>>> from hydpy.models.conv import * >>> parameterstep() >>> outputcoordinates( ... out1=(0.0, 3.0), ... out2=(2.0, -1.0)) >>> derived.nmboutputs.update() >>> derived.nmboutputs nmboutputs(2) >>> fluxes.outputs.shape (2,)
>>> derived.nmboutputs(3) >>> derived.nmboutputs nmboutputs(3) >>> fluxes.outputs.shape (3,)
-
class
hydpy.models.conv.conv_derived.
Distances
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Distances of the inlet nodes to each outlet node [?].
-
TYPE
¶
-
-
update
() → None[source]¶ Determine the distances.
The individual rows of parameter
Distances
correspond to the outlet nodes; the columns contain the inlet nodes’ indices:>>> from hydpy.models.conv import * >>> parameterstep() >>> inputcoordinates( ... in1=(0.0, 3.0), ... in2=(2.0, -1.0)) >>> outputcoordinates( ... out1=(0.0, 3.0), ... out2=(3.0, -2.0), ... out3=(1.0, 2.0)) >>> derived.distances.update() >>> derived.distances distances([[0.0, 4.472136], [5.830952, 1.414214], [1.414214, 3.162278]])
-
class
hydpy.models.conv.conv_derived.
ProximityOrder
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Indices of the inlet nodes in the order of their proximity to each outlet node [-].
- Required by the methods:
Calc_OutputResiduals_V1
Calc_Outputs_V1
Calc_Outputs_V2
Interpolate_InverseDistance_V1
-
TYPE
¶
-
update
() → None[source]¶ Determine the proximity-order of the inlet and outlet nodes.
The individual rows of parameter
ProximityOrder
correspond to the outlet nodes; the columns contain the inlet nodes’ indices:>>> from hydpy.models.conv import * >>> parameterstep() >>> inputcoordinates( ... in1=(0.0, 3.0), ... in2=(2.0, -1.0)) >>> outputcoordinates( ... out1=(0.0, 3.0), ... out2=(3.0, -2.0), ... out3=(1.0, 2.0)) >>> maxnmbinputs() >>> derived.distances.update() >>> derived.proximityorder.update() >>> derived.proximityorder proximityorder([[0, 1], [1, 0], [0, 1]])
Set the value of parameter
MaxNmbInputs
to one,if you want to consider the respective nearest input node only:>>> maxnmbinputs(1) >>> derived.proximityorder.update() >>> derived.proximityorder proximityorder([[0], [1], [0]])
-
class
hydpy.models.conv.conv_derived.
Weights
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Weighting coefficients of the inlet nodes corresponding to their proximity to each outlet node and parameter
Power
[-].- Required by the methods:
Calc_OutputResiduals_V1
Calc_Outputs_V2
Interpolate_InverseDistance_V1
-
TYPE
¶
-
update
() → None[source]¶ Determine the weighting coefficients.
The individual rows of parameter
Weights
correspond to the outlet nodes; the rows contain the weights of the inlet nodes:>>> from hydpy.models.conv import * >>> parameterstep() >>> inputcoordinates( ... in1=(0.0, 3.0), ... in2=(2.0, -1.0), ... in3=(0.0, 3.0), ... in4=(99.0, 99.0)) >>> outputcoordinates( ... out1=(0.0, 3.0), ... out2=(3.0, -2.0), ... out3=(1.0, 2.0)) >>> maxnmbinputs() >>> power(2.0) >>> derived.distances.update() >>> derived.proximityorder.update() >>> derived.weights.update() >>> derived.weights weights([[inf, inf, 0.05, 0.000053], [0.5, 0.029412, 0.029412, 0.000052], [0.5, 0.5, 0.1, 0.000053]])
You can restrict the number of inlet nodes used for each outlet node via parameter
MaxNmbInputs
. In the following example, it seems reasonable to set its value to three to ignore the far-distant inlet node in4:>>> maxnmbinputs(3) >>> derived.distances.update() >>> derived.proximityorder.update() >>> derived.weights.update() >>> derived.weights weights([[inf, inf, 0.05], [0.5, 0.029412, 0.029412], [0.5, 0.5, 0.1]])
Sequence Features¶
Flux sequences¶
-
class
hydpy.models.conv.
FluxSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.OutputSequences
[FluxSequence
]Flux sequences of model conv.
- The following classes are selected:
Inputs()
The (unmodified) values supplied by the input nodes [?].ActualConstant()
The actual value for the constant of the linear regression model [?].ActualFactor()
The actual value for the factor of the linear regression model [?].InputPredictions()
The values of the input nodes predicted by a regression model [?].OutputPredictions()
The values of the output nodes predicted by a regression model [?].InputResiduals()
The exact residuals of a regression model calculated for the input nodes [?].OutputResiduals()
The guessed residuals of a regression model interpolated for the input nodes [?].Outputs()
The final interpolation results estimated for the output nodes [?].
-
class
hydpy.models.conv.conv_fluxes.
Inputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The (unmodified) values supplied by the input nodes [?].
- Calculated by the method:
- Required by the methods:
Calc_ActualConstant_ActualFactor_V1
Calc_InputResiduals_V1
Calc_Outputs_V1
Calc_Outputs_V2
-
class
hydpy.models.conv.conv_fluxes.
ActualConstant
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The actual value for the constant of the linear regression model [?].
- Calculated by the method:
- Required by the methods:
-
class
hydpy.models.conv.conv_fluxes.
ActualFactor
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The actual value for the factor of the linear regression model [?].
- Calculated by the method:
- Required by the methods:
-
class
hydpy.models.conv.conv_fluxes.
InputPredictions
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The values of the input nodes predicted by a regression model [?].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.conv.conv_fluxes.
OutputPredictions
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The values of the output nodes predicted by a regression model [?].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.conv.conv_fluxes.
InputResiduals
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The exact residuals of a regression model calculated for the input nodes [?].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.conv.conv_fluxes.
OutputResiduals
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The guessed residuals of a regression model interpolated for the input nodes [?].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.conv.conv_fluxes.
Outputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]The final interpolation results estimated for the output nodes [?].
- Calculated by the methods:
- Required by the method:
Inlet sequences¶
-
class
hydpy.models.conv.
InletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.LinkSequences
[InletSequence
]Inlet sequences of model conv.
- The following classes are selected:
Inputs()
Inputs [?].
-
class
hydpy.models.conv.conv_inlets.
Inputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.LinkSequence
[hydpy.core.sequencetools.InletSequences
]Inputs [?].
- Required by the method:
Outlet sequences¶
-
class
hydpy.models.conv.
OutletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.LinkSequences
[OutletSequence
]Outlet sequences of model conv.
- The following classes are selected:
Outputs()
Outputs [?].
-
class
hydpy.models.conv.conv_outlets.
Outputs
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.LinkSequence
[hydpy.core.sequencetools.OutletSequences
]Outputs [?].
- Calculated by the method:
-
class
hydpy.models.conv.
ControlParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Control parameters of model conv.
- The following classes are selected:
InputCoordinates()
Coordinates of the inlet nodes [?].OutputCoordinates()
Coordinates of the outlet nodes [?].InputHeights()
The height (above sea level or anything else) of the input nodes [?].OutputHeights()
The height (above sea level or anything else) of the output nodes [?].MaxNmbInputs()
The maximum number of input locations to be taken into account for interpolating the values of a specific output location [-].MinNmbInputs()
The minimum number of inputs for performing a statistical analysis [-].DefaultConstant()
Default or fallback value for the constant of the linear regression model [?].DefaultFactor()
Default or fallback value for the factor of the linear regression model [?].Power()
Power parameter for calculating inverse distance weights [-].
-
class
hydpy.models.conv.
DerivedParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Derived parameters of model conv.
- The following classes are selected:
NmbInputs()
The number of inlet nodes [-]NmbOutputs()
The number of outlet nodes [-]Distances()
Distances of the inlet nodes to each outlet node [?].ProximityOrder()
Indices of the inlet nodes in the order of their proximity to each outlet node [-].Weights()
Weighting coefficients of the inlet nodes corresponding to their proximity to each outlet node and parameterPower
[-].
-
class
hydpy.models.conv.
FluxSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.OutputSequences
[FluxSequence
]Flux sequences of model conv.
- The following classes are selected:
Inputs()
The (unmodified) values supplied by the input nodes [?].ActualConstant()
The actual value for the constant of the linear regression model [?].ActualFactor()
The actual value for the factor of the linear regression model [?].InputPredictions()
The values of the input nodes predicted by a regression model [?].OutputPredictions()
The values of the output nodes predicted by a regression model [?].InputResiduals()
The exact residuals of a regression model calculated for the input nodes [?].OutputResiduals()
The guessed residuals of a regression model interpolated for the input nodes [?].Outputs()
The final interpolation results estimated for the output nodes [?].
-
class
hydpy.models.conv.
InletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.LinkSequences
[InletSequence
]Inlet sequences of model conv.
- The following classes are selected:
Inputs()
Inputs [?].
-
class
hydpy.models.conv.
OutletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.LinkSequences
[OutletSequence
]Outlet sequences of model conv.
- The following classes are selected:
Outputs()
Outputs [?].