-----
Added
+++++
- The curve fitting parameters (top, bottom, slope) can now be constrained to a range in addition to being completely free or fixed. This can help with fitting some curves more sensibly (see [this issue](https://github.com/jbloomlab/neutcurve/issues/53)). Specifically:
- ``fixtop`` and ``fixbottom`` parameters to ``HillCurve`` can be 2-tuples of bounds
- added ``fixslope`` parameter to ``HillCurve`` and ``CurveFits``
- New ``constrain_params_range`` notebook tests and documents this functionality.
- Add ``no_curve_fit_first`` argument to ``HillCurve`` to aid debugging/development.
- Improvements to metrics for assessing curve fit (see [here](https://github.com/jbloomlab/neutcurve/issues/55#issuecomment-2016975219)):
- The coefficient of determination (``r2``) now is one if all points are fit by a straight line, rather than engative infinity.
- A root-mean-square-deviation (square root of mean residual) is now calculated as the ``rmsd`` attribute of ``HillCurve`` objects and reported in fit parameter summaries from ``CurveFits``.