Source code for statescale.kernels.griddata

from dataclasses import dataclass

import numpy as np


@dataclass
class GriddataKernelParameters:
    "Griddata kernel parameters."

    points: np.array
    values: np.array


@dataclass
class GriddataKernelData:
    "Griddata kernel data."

    point_data: dict
    cell_data: dict
    field_data: dict


[docs] class GriddataKernel: """A griddata kernel. Parameters ---------- point_data : dict A dict of point data. cell_data : dict A dict of cell data. field_data : dict A dict of field data. **kwargs Additional keyword arguments (not used). See Also -------- statescale.SnapshotModel : A model with point-, cell- and field-data at snapshots and with methods to interpolate the data at points of interest. statescale.kernels.SurrogateKernel : A surrogate kernel. """ def __init__(self, snapshots, point_data, cell_data, field_data, **kwargs): self.kernel_data = GriddataKernelData( point_data=self._calibrate(snapshots=snapshots, data=point_data), cell_data=self._calibrate(snapshots=snapshots, data=cell_data), field_data=field_data, ) def _calibrate(self, snapshots, data): """Calibrate the surrogate kernel. Parameters ---------- snapshots : np.ndarray Snapshot points. data : dict Dict with snapshot data. Returns ------- GriddataKernelParameters A dict with the griddata kernel parameters. """ out = dict() for label, values in data.items(): out[label] = GriddataKernelParameters( points=snapshots, values=values, ) return out
[docs] @staticmethod def evaluate( xi, upscale, kernel_parameters, indices=None, axis=None, **kwargs, ): values_taken = kernel_parameters.values if indices is not None: values_taken = values_taken.take(indices=indices, axis=axis) return upscale(kernel_parameters.points, values_taken, xi, **kwargs)