* The API now accepts no `"*_method"` string arguments (other than those to `NN_Wrapper`). Instead, one should import and use loss and optimization functions directly. See the [univariate regression tutorial](https://muygpys.readthedocs.io/en/stable/examples/univariate_regression_tutorial.html) and the [optimization docs](https://muygpys.readthedocs.io/en/stable/MuyGPyS/optimize.html) for details.
* Several keyword arguments, member objects, and functor classes are renamed. References to Greek character names deriving from equations have been dropped in favor of interpretable English words. Some examples follow:
* The `eps` kwarg and member of `MuyGPS` is now called `noise`.
* The `sigma_sq` kwarg and member is now called `scale`, as in the variance scale parameter, and the `SigmaSq` class has been replaced:
* `FixedScale` is insensitive to optimization.
* `AnalyticScale` contains the analytic optimization internally.
* `DistortionFn` is replaced by the more precise `DeformationFn`, and is contained in the `MuyGPS` kwarg and member `deformation` instead of `distortion_fn`. The usable functors are renamed `Isotropy` and `Anisotropy` for brevity.
* `ScalarHyperparameter` now has the simpler alias `Parameter`.
There are other, less obvious-to-users changes in this update as well
* The whole optimization workflow has been made ifless. Optimization choices are now purely functions of the classes involved and their member functors.
* loss functions are all now objects of the `LossFn` class, and similarly outer-loop optimization functions are objects of the `OptimizeFn` class.
* `OptimizeFn` takes an objective function maker function in its constructor, which makes it easier to define and incorporate new objective functions.
* As a consequence, it is now much easier to add alternative loss or objective functions or to wrap different optimization libraries entirely.
* It will also be easier to add different ways to optimize the variance scale parameter.
* There are no more "toss-catch"-style optimization function preparations. The primary function held by `MuyGPS.kernel`, `MuyGPS.posterior_mean`, etc, are now suitable for optimization and are all created by `MuyGPS._make()`. If a user for some reason changes a parameter value directly, it is necessary to run `MuyGPS._make()` to update the downstream functors.
* Backend-sensitive classes have `_backend_fn`-type kwargs in their constructors that allows a user to override the default backend specified by the `MUYGPYS_BACKEND` environment variable. This makes testing the backends against one another simpler. Users should most likely ignore these kwargs, as it is unclear if they have other uses.
What's Changed
* Feature/ifless loss by bwpriest in https://github.com/LLNL/MuyGPyS/pull/190
* improved loss abstraction by bwpriest in https://github.com/LLNL/MuyGPyS/pull/191
* made noise perturbation logic ifless by bwpriest in https://github.com/LLNL/MuyGPyS/pull/192
* made sigma_sq logic ifless by bwpriest in https://github.com/LLNL/MuyGPyS/pull/193
* streamlined and made DistortionFns ifless by bwpriest in https://github.com/LLNL/MuyGPyS/pull/194
* made outer-loop optimization ifless by bwpriest in https://github.com/LLNL/MuyGPyS/pull/195
* divested namespace of notation in favor of English by bwpriest in https://github.com/LLNL/MuyGPyS/pull/196
**Full Changelog**: https://github.com/LLNL/MuyGPyS/compare/v0.7.2...v0.8.0