Source code for foxes.output.state_turbine_table
from xarray import Dataset
from foxes.utils import write_nc
import foxes.constants as FC
from .output import Output
[docs]
class StateTurbineTable(Output):
"""
Creates tables of state-turbine type data
Attributes
----------
farm_results: xarray.Dataset
The farm results
:group: output
"""
[docs]
def __init__(self, farm_results, **kwargs):
"""
Constructor.
Parameters
----------
farm_results: xarray.Dataset
The farm results
kwargs: dict, optional
Additional parameters for the base class
"""
super().__init__(**kwargs)
self.farm_results = farm_results
[docs]
def get_dataset(
self,
variables,
name_map={},
to_file=None,
isel=None,
sel=None,
**kwargs,
):
"""
Creates a dataset object
Parameters
----------
variables: list of str
The output variables
name_map: dict
Map from foxes to output names
to_file: str, optional
Name of the output file, if writing is desired
isel: dict, optional
Parameters for xarray.Dataset.isel
sel: dict, optional
Parameters for xarray.Dataset.sel
kwargs: dict, optional
Additional parameters for write_nc
Returns
-------
table: xarray.Dataset
The state-turbine data table
"""
state = name_map.get(FC.STATE, FC.STATE)
turbine = name_map.get(FC.TURBINE, FC.TURBINE)
ds = Dataset(
coords={
state: self.farm_results[FC.STATE].to_numpy(),
turbine: self.farm_results[FC.TURBINE].to_numpy(),
},
data_vars={
name_map.get(v, v): ((state, turbine), self.farm_results[v].to_numpy())
for v in variables
},
)
if isel is not None:
ds = ds.isel(**isel)
if sel is not None:
ds = ds.sel(**sel)
if to_file is not None:
fpath = self.get_fpath(to_file)
write_nc(ds=ds, fpath=fpath, **kwargs)
return ds