Source code for foxes.algorithms.sequential.models.seq_state
from foxes.core.states import States
[docs]
class SeqState(States):
"""
A single state during sequential iteration, just serving
as a structural placeholder
Parameters
----------
states: foxes.core.States
The original states set
:group: algorithms.sequential.models
"""
[docs]
def __init__(self, states):
"""
Constructor.
Attributes
----------
states: foxes.core.States
The original states set
"""
super().__init__()
self.states = states
# updated by SequentialIter:
self._size = states.size()
self._weight = None
self._indx = None
self._counter = None
[docs]
def sub_models(self):
"""
List of all sub-models
Returns
-------
smdls: list of foxes.core.Model
Names of all sub models
"""
return [self.states]
[docs]
def initialize(self, algo, verbosity=0, force=False):
"""
Initializes the model.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
verbosity: int
The verbosity level, 0 = silent
force: bool
Overwrite existing data
"""
super().initialize(algo, verbosity, force)
self._size = self.states.size()
[docs]
def size(self):
"""
The total number of states.
Returns
-------
int:
The total number of states
"""
return self._size
[docs]
def index(self):
"""
The index list
Returns
-------
indices: array_like
The index labels of states, or None for default integers
"""
return [self._indx] if self._size == 1 else self.states.index()
@property
def counter(self):
"""
The current index counter
Returns
-------
i: int
The current index counter
"""
return self._counter
[docs]
def weights(self, algo):
"""
The statistical weights of all states.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
Returns
-------
weights: numpy.ndarray
The weights, shape: (n_states, n_turbines)
"""
return self._weight[None, :] if self._size == 1 else self.states.weights(algo)
[docs]
def output_point_vars(self, algo):
"""
The variables which are being modified by the model.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
Returns
-------
output_vars: list of str
The output variable names
"""
return self.states.output_point_vars(algo)
[docs]
def calculate(self, algo, mdata, fdata, tdata):
"""
The main model calculation.
This function is executed on a single chunk of data,
all computations should be based on numpy arrays.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
mdata: foxes.core.Data
The model data
fdata: foxes.core.Data
The farm data
tdata: foxes.core.Data
The target point data
Returns
-------
results: dict
The resulting data, keys: output variable str.
Values: numpy.ndarray with shape
(n_states, n_targets, n_tpoints)
"""
return self.states.calculate(algo, mdata, fdata, tdata)