Deerlab

Latest version: v1.1.4

Safety actively analyzes 682416 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 6

0.14.0

---------------------------------

Overall changes

- |feature| |api| Complete overhaul of the DeerLab modelling and fitting interface. Check the new documentation for help and details. (`218`, `223`, `228`, `237`, `225`, `243`).

* A new modelling system has been introduced. DeerLab main interface runs on a new ``Model`` object class. Models implement and provide the distinction between linear and non-linear parameters.
* Model parameters are no longer (solely) identified by their indexing inside a parameter vector, but are referenced by name. This avoids the need for a user to recall the ordering of the parameters. This is now all handled internally. For example, before ``paramA = parameters[idxA]`` is now ``model.paramA``.
* Any model parameter is accessible from the model object and its boundaries, start values and other properties can be easily modified. For example, to change the lower boundary of a parameter: ``model.paramA.lb = 0``.
* A new general ``fit`` function that fits arbitrary ``Model`` objects to single or multiple datasets has been implemented. The function automatically handles the selection of solvers to optimally fit the data to the model.
* Implemented a new function ``link`` to link model parameters (setting equality constraints in models).
* Implemented a new function ``merge`` to create a model returning more than one response (allowing the creation of global models).
* Implemented a new function ``relate`` to define functional relationships between model parameters.
* Implemented a new function ``lincombine`` to create a model whose response is a linear combination of the inputs' model responses.
* Model parameters can now be frozen (set to a constant value and ignored during optimization) in the ``Model`` object and on the back-end ``snlls`` solver. For examples, to fix a parameter to a certain value: ``model.paramA.freeze(0.5)``.
* Arbitrary normalization conditions can be imposed to the linear parameters.
* Bootstrapping can now be requested directly from the ``fit`` function via the ``bootstrap`` keyword argument. The function will then return the bootstrap uncertainty quantification of all model parameters and of the model's response instead of the covariance-based uncertainty.
* Implemented a new function ``dipolarmodel``, which generates models based on the dipolar EPR multi-pathway theoretical model.
* Added new examples, adapted existing ones, and removed unneeded examples.
* Add many new tests and removed tests related to deprecated functionality.
* All the built-in parametric models are now pre-compiled ``Model`` objects instead of just functions.
* The function ``fitmodel`` has been deprecated and removed. The original has been substituted (and greatly expanded) by the new ``dipolarmodel`` and ``fit`` functions.
* The function ``fitmultimodel`` has been deprecated and removed. The original functionality can be easily scripted with the new modelling system. An example of has been added, describing how to script the same functionality.

- |feature| Introduced the profile-likelihood methodology both for uncertainty quantification based on likelihood-confidence intervals, and for identifiability analysis (`222`).

* Added a new function ``profile_analysis`` to calculate the objective function profiles from model object parameters.
* Implemented a new uncertainty quantification ``UQResult`` object type ``'profile'`` for results obtained from profile_analysis.
- |feature| Implemented a system to specify arbitrary penalty functions to be included in the non-linear part of the objective function during optimization. The penalties can be custom-defined and constructed into a ``Penalty`` object that can be passed to the ``fit`` function. Outer optimization of the penalty weights can also be included based on certain information-based criteria (`197`, `218`, `225`).

* Implemented a new object ``Penalty`` that includes the penalty function, weight parameter (and its boundaries), and the selection functional for optimization.
* Adds new outer optimization options for the penalty weights, based on hard-coded model selection functionals. For now, the ICC, AIC, AICc, and BIC functionals are available.
* Implemented a new function ``dipolarpenalty`` that generates dipolar-EPR-specific penalties, e.g. to induce compactness and/or smoothness.
- |feature| Implemented masking of datasets during optimization (`250`).
- |feature| Added a ``verbose`` option to display progress of the fit routines (`250`).
- |feature| Added support for analyzing and fitting complex-valued models and data (`127`, `218`).
- |feature| Orientation selection in dipolar signals can now be simulated for arbitrary orientation weights distributions via the ``orisel`` keyword argument in the new ``dipolarmodel`` or the ``dipolarkernel`` functions (`183`, `203`).
- |feature| Re-purposed the ``ex_`` models. Each of these function represents a specific dipolar EPR experiment. These now take the experimental time delays as input, and return a new ``ExperimentInfo`` object. This can be passed to ``dipolarmodel`` via the optional keyword argument ``experiment`` to refine the boundaries and start values of the dipolar pathway refocusing times and amplitudes based on the experimental setup (`225`).
- |feature| Implemented masking of datasets during optimization (`250`).
- |enhancement| Overhaul of the DeerLab documentation website (`235`).

* Full HTML/CSS overhaul. The new web design based on the PyData theme has a clearer design, with more readable pages and code blocks.
* Deprecates the use of the RTD theme. This removes the hard constraint of using Sphinx 1.8.0. Now the documentation builds with the latest Sphinx release.
* Add a user-guide for the new modelling and fitting system.
* Re-organize all of the website content.
* Improved the dipolar EPR starting guide, and adapted it to the new system.
* Fixed some minor errors in the examples.
* Redesigned all examples towards the use of actual experimental data files in BES3T format. Examples can now be taken and easily adapted by users to their experiment data files (`304`).
- |enhancement| Added the functionality to print a ``FitResult`` object to display a summary of the fit goodness-of-fit statistics and a table of all estimated parameters and their uncertainties (`234`).
- |enhancement| Added a new keyword argument ``regparamrange`` to ``snlls`` and ``fit`` to specify the search range of the optimal regularization parameter (`225`).
- |enhancement| Noise levels of the datasets can be optionally specified in all functions taking datasets (`213`).
- |enhancement| Added the option to include or exclude the edges of vector in ``regoperator`` via a new keyword argument ``includeedges`` (`204`). The default for all functions in DeerLab has been set to ``includeedges=False`` (`205`, `230`).
- |enhancement| Generalized the regularization operator. Related functions no longer take ``regorder`` (regularization operator order) as an argument. Instead they now take ``regop`` (the full regularization operator) as an argument (`216`).
- |enhancement| Generalized the regularized linear least-squares functionality. Now it can handle arbitrary bounds on linear parameters and adapts the linear LSQ solver back end accordingly (`216`).
- |efficiency| Improved performance of post-optimization model evaluation/propagation for large datasets (`200`, `238`).
- |efficiency| Implemented (adaptable) memory limits for potentially memory-intense functions (`201`, `239`).
- |api| The function ``correctscale`` has been deprecated (`293`). Its limited functionality is included in the now broader functionality provided by the new modelling and fitting system.
- |api| The functions ``fitregmodel`` and ``fitparamodel`` have been deprecated and their core functionality merged into ``snlls``. The ``snlls`` function now handles any kind of least-squares problem and automatically employs optimal combinations of solvers to find the solution to the problems (`218`).
- |api| Renamed the function ``bootan`` to ``bootstrap_analysis`` (`227`).
- |api| Deprecated TV and Huber regularization. Accordingly the keyword arguments ``regtype``, ``huberparameter`` have been removed throughout (`216`).
- |api| Deprecated the ``nnlsbpp`` NNLS solver (`231`).
- |api| Deprecated the ``regparamrange`` function (`232`). It depended on home-written code for the GSVD, which (as shown in previous issues) was prone to LAPACK backend problems and other bugs. This function was still a derelict from DeerAnalysis methodology.
- |api| The function ``time2dist`` has been renamed to ``distancerange`` (`273`, `274`).- |api| The function ``time2dist`` has been renamed to ``distancerange`` (`273`, `274`).
- |api| The convergence control arguments of the fit functions have now been renamed for consistency with the ``least_squares`` function of the SciPy package (`296`).
- |api| Changed the name of the parameter ``width`` to ``std`` in the ``dd_gauss``, ``dd_gauss2``, ``dd_gauss3``, and ``dd_skewgauss``models (`278`, `280`).
- |fix| When using the ``multistart`` keyword argument, no longer includes the parameter boundaries in the set of multiple start values (`218`).
- |fix| Fixed error (manifesting as ``nan`` values in the confidence intervals) caused by a division-by-zero in the covariance matrix estimation (`218`).
- |fix| Fix encoding error during installation (`252`). This error could disrupt the installation in OS with default encoding different from CP-1252.
- |fix| Implement a new function to ensure that estimated Jacobians are positive semi-definite matrices. This fixes the appearance of warnings and bugs when calculating confidence intervals (`216`).
- |fix| Corrected the scale invariance behavior of the covariance-based uncertainty estimates (`218`).
- |fix| Fixed multiple ``numpy.VisibleDeprecationWarning`` and ``RunTime`` warnings (`207`, `212`).
- |fix| Corrected the math in the documentation of some distance distribution models (`215`).
- |fix| Corrected the behavior of dataset weights. These are no longer normalized at runtime and kept as specified by the users (`248`, `250`).
- |fix| While testing, now skips a unit test if an error with the Tk backend of Matplotlib occurs (`211`).
- |fix| Fix multiple bugs and errors related to the new modelling and fitting system (`226`, `233`, `235`, `241`, `242`, `244`, `245`, `246`, `249`).
- |fix| Correct behavior of multistart optimization for one-sided parameter boundaries (`252`).
- |fix| Fix bug when globally fitting multiple datasets. The global weights were not being manipulated correctly in the estimation of the linear parameters leading to incorrect results (`302`)

``bootstrap_analysis``
- |efficiency| Added a new keyword argument ``memorylimit`` to specify the maximal memory used by the bootstrap analysis (by default 8GB). If the total analysis is expected to exceed the memory limit, the function will abort the execution (`200`, `238`).

``dipolarkernel``
- |feature| Added a new option `complex` to request the complex-valued dipolar kernel to simulate the out-of-phase contributions to the dipolar signals (`258`).
- |efficiency| Added a new keyword argument ``memorylimit`` to specify the maximal memory used by the dipolar kernel (by default 8GB). If the dipolar kernel is expected to exceed the memory limit, the function will abort the execution (`200`, `238`).
- |fix| Prompts error if wrong method is selected when specifying a limited excitation bandwidth (`181`, `183`).

``bg_models``
- |feature| Implemented the time-dependent phase shifts for all the built-in physical background models, namely `bg_hon3d_phase`, `bg_hom3dex_phase`, and `bg_homfractal_phase` (`258`).
- |enhancement| Changed the implementation of `bg_hom3dex` (`258`). This avoids the use of tabulated pre-calculated values. Accordingly the utility functions `calculate_exvolume_redfactor` and `load_exvolume_redfactor` have been removed.
- |fix| Improved the implementation and behavior of the `bg_homfractal` model (`258`).

``diststats``
- |fix| Fixed the behavior when dealing with distributions with arbitrary integral values

``selregparam``
- |enhancement| Implemented a general LSQ solver as backend to adapt to different regularized optimization problem structures.
- |enhancement| Generalized the linear least-squares solver. (`216`).
- |enhancement| In the ``brent`` mode, the search range is no longer selected from the min/max of ``regparamrange`` output, but from a new keyword argument ``searchrange`` set by default to ``[1e-8,1e2]``. The default values were chosen as the statistical means of Monte-Carlo simulations of the min/max values of ``regparamrange``'s output for typical 4-pulse DEER kernels (`232`).
- |enhancement| In the ``grid`` mode, the grid-values are passed by the pre-existing keyword argument ``candidates``. By default, if not specified, a grid will be generated from the ``searchrange`` argument (`232`).

``UQResult``
- |fix| Ensures non-negativity of estimated parameter uncertainty probability density functions.
- |enhancement| Improve the behavior of ``UQresult.propagate()`` for bootstrapped uncertainty results. Now, instead of propagating bootstrapped uncertainty via the estimated covariance matrix, the uncertainty is propagated by bootstrapping from the bootstrapped uncertainty distributions (`218`).
- |fix| Fix behavior of the bootstrap median (`254`).
- |fix| Suppress multiple ``DeprecationWarning`` warnings during uncertainty calculations (`255`).
- |fix| Fix error prompt when requesting private methods such as ``__deepcopy__`` (`301`, `303`).

``correctphase``
- |fix| Implement a fully vectorized analytical solution, resulting in a 30-150x speedup (`256`, `279`).
- |api| Eliminate the ``phase='posrealint'`` and ``phase='negrealint'`` options (`279`).

``deerload``
- |fix| Raise warning instead of exception when parsing lines without key-value pairs (`256`). This avoid errors when trying to load BES3T files with PulseSPEL scripts edited in different OS systems.

``whitegaussnoise``
- |api| Renamed the argument ``level`` to ``std`` for clarity (`276`).
- |api| Make the argument ``std`` a required positional argument and no longer provide a default value (`276`).

0.13.2

---------------------------------

Overall changes

- Fixed an error appearing during installation in Windows systems. If during installation a ``python`` executable alias was not created, the call to the ``pipwin`` manager returned an error and the installation failed to download and install Numpy, SciPy and cvxopt. ([187](https://github.com/JeschkeLab/DeerLab/pull/187)).
- Fixed the rendering of certain code-blocks in the documentation examples which were appearing as plain text ([179](https://github.com/JeschkeLab/DeerLab/issues/179), [#184](https://github.com/JeschkeLab/DeerLab/pull/184)).
- Fixed the execution and rendering of the model examples in the documentation ([189](https://github.com/JeschkeLab/DeerLab/issues/189), [#190](https://github.com/JeschkeLab/DeerLab/pull/190)).
- Fixed a bug in ``snlls`` where one of the linear least-squares solvers can return results that violate the boundary conditions due to float-point round-off errors ([177](https://github.com/JeschkeLab/DeerLab/issues/177), [#188](https://github.com/JeschkeLab/DeerLab/pull/188)).

0.13.1

---------------------------------

Overall changes

- Fixed the behaviour of global weights throughout DeerLab fit functions. The keyword argument ``weights`` was not having any or the expected effect in the results in some fit functions. Also fixes the behaviour of built-in plots for global fits ([168](https://github.com/JeschkeLab/DeerLab/issues/168), [#171](https://github.com/JeschkeLab/DeerLab/pull/171)).
- Optimize default weights in global fitting according to the datasets noise levels ([169](https://github.com/JeschkeLab/DeerLab/issues/169), [#174](https://github.com/JeschkeLab/DeerLab/pull/174)).
- Fixed a bug in ``snlls`` that was causing the confidence intervals in ``snlls``, ``fitmodel`` and ``fitmultimodel`` to vanish for large signal scales ([165](https://github.com/JeschkeLab/DeerLab/issues/165), [#166](https://github.com/JeschkeLab/DeerLab/pull/166)).

Specific changes
- ``deerload``: Corrected a bug that happened in certain BES3T Bruker spectrometer files, when there are entries under the ``MANIPULATION HISTORY LAYER`` section at the end of the descriptor file. Also fixed the reading of ``.XGF`` partner files ([164](https://github.com/JeschkeLab/DeerLab/pull/164)).
- ``snlls``: The keyword argument ``extrapenalty`` now requires a function that takes both non-linear and linear parameters. Corrected the name of the keyword in the documentation ([175](https://github.com/JeschkeLab/DeerLab/pull/175)).
- ``fitparamodel``: Fixed the scaling of the output ``FitResult.model`` and ``FitResult.modelUncert`` ([173](https://github.com/JeschkeLab/DeerLab/pull/173)).
- ``ex_pseudotitration_parameter_free``: Removed ``Ctot`` from second order term in the ``chemicalequalibrium`` polynomial ([163](https://github.com/JeschkeLab/DeerLab/pull/163)).

0.13.0

---------------------------------

New features

- DeerLab is now distributed via the Anaconda repository and can be installed with the ``conda`` package manager ([12](https://github.com/JeschkeLab/DeerLab/issues/12), [#157](https://github.com/JeschkeLab/DeerLab/pull/157)). The installation instructions have been expanded to describe the Anaconda installation ([#155](https://github.com/JeschkeLab/DeerLab/pull/155)).
- DeerLab now supports Python 3.9.
- The function ``fitsignal`` has been re-named to ``fitmodel`` for correctness and consistency with other functions ([102](https://github.com/JeschkeLab/DeerLab/pull/102)).
- Added new experiment models for RIDME on systems with one to seven harmonic pathways (S=1/2 to S=7/2) to include all higher harmonics (overtones) ([79](https://github.com/JeschkeLab/DeerLab/pull/79)).
- Bootstrapping is now embedded into ``fitmodel`` to automatically bootstrap all output quantities without the need to write additional script lines ([55](https://github.com/JeschkeLab/DeerLab/issues/55)). In ``fitmodel`` a new option ``uq`` allows to switch between covariance or bootstrapping uncertainty quantification ([#88](https://github.com/JeschkeLab/DeerLab/pull/88)).
- The function ``fitmodel`` now returns ``Vmod`` and ``Vunmod``, the modulated and unmodulated contributionsto the fitted dipolar signal, respectively, along their uncertainties as additional outputs ([78](https://github.com/JeschkeLab/DeerLab/pull/78)).
- Implemented several initialization strategies in ``fitmultimodel`` for multi-model components ([67](https://github.com/JeschkeLab/DeerLab/pull/67)). Three different new strategies ``'spread'``, ``'split'`` and ``'merge'`` will initialize the parameter values of the N-component fit based on the results of the N-1/N+1 component fit to improve quality of results and speed.
- Added contribution guidelines to the documentation and automated list of DeerLab contributors.
- The function ``snlls`` now accepts additional custom penalties to include in the optimization ([76](https://github.com/JeschkeLab/DeerLab/issues/76), [#108](https://github.com/JeschkeLab/DeerLab/pull/112)).
- All fit functions now return the fit of the data along its uncertainty automatically as part of the ``FitResult`` object ([130](https://github.com/JeschkeLab/DeerLab/issues/130), [#134](https://github.com/JeschkeLab/DeerLab/pull/134)).
- Implemented a new method ``UQResult.join()`` to merge multiple uncertainty quantification objects ([154](https://github.com/JeschkeLab/DeerLab/pull/154)). This permits error propagation from multiple uncertainty sources to a common function.

Overall changes

- The performance of all fit functions has been considerably accelerated by removing call overheads in built-in DeerLab models ([100](https://github.com/JeschkeLab/DeerLab/issues/100), [#101](https://github.com/JeschkeLab/DeerLab/pull/101), [#143](https://github.com/JeschkeLab/DeerLab/pull/143)).
- Improved robustness of the installation from PyPI ([65](https://github.com/JeschkeLab/DeerLab/pull/65)):
- The installer no longer assumes the alias ``pip`` to be setup on the system.
- The installation will now handle cases when system-wide privileges are not available ([52](https://github.com/JeschkeLab/DeerLab/issues/52)).
- Improved robustness of the installation in Windows systems to avoid missing DLL errors ([64](https://github.com/JeschkeLab/DeerLab/issues/64)).
- The installer will now get the latest Numpy/Scipy releases in Windows systems available at the [Gohlke repository](https://www.lfd.uci.edu/~gohlke/pythonlibs/).
- Adapted piece of code leading to a ``VisibleDeprecationWarning`` visible during execution of certain DeerLab functions.
- Improved interface of built-in plots in ``FitResult.plot()``. The method now returns a Matplotlib figure object (`matplotlib.figure.Figure`) instead of an axes object (``matplotlib.axes._subplots.AxesSubplot``) which can be modified more freely to adjust graphical elements ([85](https://github.com/JeschkeLab/DeerLab/issues/85)). The method now takes an optional keyword ``FitResult.plot(show=True\False)`` to enable/disable rendering of the graphics upon calling the method ([#87](https://github.com/JeschkeLab/DeerLab/pull/87)).
- The fit objective values returned in ``FitResult.cost`` are now correct (previous versions had an erroneous 1/2 factor) ([80](https://github.com/JeschkeLab/DeerLab/issues/80)). The value is now returned as a scalar value instead of a single-element list ([#81](https://github.com/JeschkeLab/DeerLab/issues/81)).
- Removed the re-normalization conventions ``K(t=0,r)=1`` and ``B(t=0)=1`` and associated options ``renormalize`` and ``renormpaths`` in the ``dipolarkernel`` and ``dipolarbackground`` functions ([99](https://github.com/JeschkeLab/DeerLab/pull/99)) to avoid identifiability issues between dipolar pathway amplitudes and signal scales during fitting ([#76](https://github.com/JeschkeLab/DeerLab/issues/76)).
- The fit convergence criteria ``tol`` (objective function tolerance) and ``maxiter`` (iteration limit) are now exposed as keyword argument in all fit functions ([111](https://github.com/JeschkeLab/DeerLab/issues/111), [#112](https://github.com/JeschkeLab/DeerLab/pull/112)).
- Multiple improvements and corrections to the documentation ([95](https://github.com/JeschkeLab/DeerLab/pull/95), [#96](https://github.com/JeschkeLab/DeerLab/pull/96), [#104](https://github.com/JeschkeLab/DeerLab/pull/104), [#106](https://github.com/JeschkeLab/DeerLab/pull/106), [#107](https://github.com/JeschkeLab/DeerLab/pull/107), [#115](https://github.com/JeschkeLab/DeerLab/pull/115), [#122](https://github.com/JeschkeLab/DeerLab/pull/122))
- Corrections in the metadata of multiple ``dd_models``. The key ``Parameters`` of some models contained the wrong names.
- The metadata of the built-in models is now accessible and manipulable via function attributes (e.g. ``dd_gauss.parameters``) rather than trought a returned dictionary (e.g. ``dd_gauss()['Parameters']``) ([143](https://github.com/JeschkeLab/DeerLab/pull/143)).
- The keyword argument to request uncertainty quantification has been unified across all fitting functions. It is now ``uq`` ([120](https://github.com/JeschkeLab/DeerLab/pull/120)).
- The ``UncertQuant`` class has been renamed into ``UQResult`` ([123](https://github.com/JeschkeLab/DeerLab/pull/123)).
- Uncertainty quantification is now tested numerically against an external package (``lmfit``) to ensue quality and accuracy ([121](https://github.com/JeschkeLab/DeerLab/pull/121)).
- Expanded the collection of examples in the documentation, and improved existing ones ([144](https://github.com/JeschkeLab/DeerLab/pull/144), [#148](https://github.com/JeschkeLab/DeerLab/pull/148), [#153](https://github.com/JeschkeLab/DeerLab/pull/153)).

Specific changes
- ``deerload``:
- Fixed behaviour of the function when loading certain 2D-datasets in the BES3T format ([82](https://github.com/JeschkeLab/DeerLab/issues/82), [#83](https://github.com/JeschkeLab/DeerLab/pull/83)).
- In 2D-datasets, the abscissas are now returned as a list of abscissas instead of a single 2D-matrix ([83](https://github.com/JeschkeLab/DeerLab/pull/83))).
- ``fitmodel``:
- Corrected the scaling behaviour of all outputs related to components of the dipolar signal to match the scaling of the original experimental data ([78](https://github.com/JeschkeLab/DeerLab/pull/78)).
- The built-in plot method ``FitResult.plot()`` now plots the unmodulated component fit as well with its uncertainty ([78](https://github.com/JeschkeLab/DeerLab/pull/78)).
- When plotting bootstrapped results with ``FitResult.plot()``, the fit is substituted with the median of the bootstrapped distribution ([148](https://github.com/JeschkeLab/DeerLab/pull/148)).
- Extended information included in the verbose summary ([78](https://github.com/JeschkeLab/DeerLab/pull/78)).
- Simplified the interface for defining initial values and boundaries of parameters in ``fitsignal`` ([71](https://github.com/JeschkeLab/DeerLab/pull/71)). Now instead of defining, e.g., `fitsignal(..., lb = [[],[50],[0.2, 0.5]])` one can define the individual vales/boundaries ``fitsignal(..., bg_lb = 50, ex_lb = [0.2,0.5])`` by using the new keywords.
- Removed the keyword argument ``uqanalysis=True/False``. The uncertainty quantification can now be disabled via the new keyword ``uq=None`` ([98](https://github.com/JeschkeLab/DeerLab/pull/98)).
- Corrected the behaviour of built-in start values when manually specifying boundaries ([73](https://github.com/JeschkeLab/DeerLab/pull/73)). If the built-in start values are outside of the user-specified boundaries the program will now automatically set the start values in the middle of the boundaries to avoid errors ([#72](https://github.com/JeschkeLab/DeerLab/issues/72)).
- Implemented the constraint ``Lam0+sum(lam)<=1`` to ensure the structural-identifiability of ``Lam0`` and ``V0`` during SNLLS optimization of experiment models with more than one modulated dipolar pathway (i.e. does not affect ``ex_4pdeer``) ([76](https://github.com/JeschkeLab/DeerLab/issues/76), [#108](https://github.com/JeschkeLab/DeerLab/pull/108)).
- The function now accepts any sequence input (lists, arrays, tuples, etc.) instead of just lists ([152](https://github.com/JeschkeLab/DeerLab/pull/152)).
- Removed the optional keyword argument ``regtype`` ([137](https://github.com/JeschkeLab/DeerLab/pull/137)).
- Fixed a bug in the scaling of the distance distribution uncertainty quantification ([148](https://github.com/JeschkeLab/DeerLab/pull/148)).
- ``fitregmodel``:
- Corrected the behaviour of the uncertainty quantification when disabling the non-negativity constraint ([121](https://github.com/JeschkeLab/DeerLab/pull/121)).
- ``fitparamodel``:
- Made ``par0`` a positional argument instead of an optional keyword ([70](https://github.com/JeschkeLab/DeerLab/issues/70)). to avoid errors when not defined ([#69](https://github.com/JeschkeLab/DeerLab/issues/69)).
- Keyword argument ``rescale`` has been renamed to ``fitscale`` ([128](https://github.com/JeschkeLab/DeerLab/issues/128), [#129](https://github.com/JeschkeLab/DeerLab/pull/129)).
- ``snlls``:
- Corrected bug that was leading to the smoothness penalty being accounted for twice in the least-squares residual during optimization ([103](https://github.com/JeschkeLab/DeerLab/issues/103)).
- Now returns the uncertainty quantification of linear and nonlinear parts as separate objects ``nonlinUncert`` and ``linUncert`` ([108](https://github.com/JeschkeLab/DeerLab/pull/108)).
- Improved the covariance-based uncertainty analysis by including correlations between linear and non-linear parameters ([108](https://github.com/JeschkeLab/DeerLab/pull/108)).
- Improved the behavior of signal scale determination ([108](https://github.com/JeschkeLab/DeerLab/pull/108)).
- Enabled prescaling of the data to avoid scaling issues during uncertainty quantification ([132](https://github.com/JeschkeLab/DeerLab/issue/132), [#133](https://github.com/JeschkeLab/DeerLab/pull/133)).
- Corrected the behaviour of the uncertainty quantification when disabling the regularization penalty ([121](https://github.com/JeschkeLab/DeerLab/pull/121)).
- ``diststats``:
- Now compatible with non-uniformly defined distance distributions ([92](https://github.com/JeschkeLab/DeerLab/issues/92), [#94](https://github.com/JeschkeLab/DeerLab/pull/94)).
- Added internal validation step to avoid non-sensical results when confounding the syntax ([91](https://github.com/JeschkeLab/DeerLab/pull/91)).
- ``dipolarkernel``:
- Now allows defining pathways without unmodulated components.
- All optional keyword arguments can only be passed as named and not positional arguments ([138](https://github.com/JeschkeLab/DeerLab/pull/138)).
- The keyword ``pathways`` now only takes lists of pathways and not modulation depth parameters. A new separate keyword ``mod`` takes the modulation depth parameter for the simplified 4-pulse DEER kernel ([118](https://github.com/JeschkeLab/DeerLab/issues/118), [#138](https://github.com/JeschkeLab/DeerLab/pull/138)).
- Renmaed the background argument keyword ``B`` into ``bg`` ([138](https://github.com/JeschkeLab/DeerLab/pull/138)).
- ``regparamrange``:
- Implemented new CSD algorithm to avoid LAPACK library crashes encountered when using multiple DeerLab functions calling ``regparamrange`` internally ([68](https://github.com/JeschkeLab/DeerLab/pull/68)).
- ``correctphase``:
- Implement new keyword ``phase`` to select the criterion for optimizing the phase for correction ([114](https://github.com/JeschkeLab/DeerLab/issues/114), [#131](https://github.com/JeschkeLab/DeerLab/pull0/131)).
- Deprecated imaginary offset fitting ([131](https://github.com/JeschkeLab/DeerLab/pull0/131)).
- Deprecated manual phase correction. Manual correction can be done by the user and is now described in the beginner's guide ([131](https://github.com/JeschkeLab/DeerLab/pull0/131)).

0.12.2

---------------------------------

Hotfix

* ``regparamrange``: The exception handling introduced in the previous release was still too specific. The function kept crashing due to SVD non-convergence errors during the GSVD. This has been fixed and the error will not lead to a crash. ([42](https://github.com/JeschkeLab/DeerLab/issues/42)).

Overall changes

* Fit functions using the ``multistart`` option are now fully deterministic. The functions was using now a random generator to define the different start points, this is now deterministic.

* Documentation UI has been re-designed for a more confortable reading. Minor errors and outdated information have been corrected throughout. Expanded reference documentation of several functions for better understanding.

Specific changes

* ``dd_skewgauss``: corrected an error in the implementation that was leading to wrong distributions ([61](https://github.com/JeschkeLab/DeerLab/issues/61)).

* ``dd_models``, ``ex_models``: Adapted numerical boundaries and start values of some built-in models to reflect better the physical reality. Afected models: ``dd_skewgauss``, ``dd_triangle``, ``dd_gengauss``, ``ex_5pdeer``, ``ex_ovl4pdeer``.

0.12.1

---------------------------------

Overall changes

* The calculation of the Jacobian for covariance-based uncertainty analysis has been simplified providing a significant boost in performance for all fit functions ([55](https://github.com/JeschkeLab/DeerLab/pull/55)).

* The Jacobian computation is more robust, now taking into consideration parameter boundaries ([58](https://github.com/JeschkeLab/DeerLab/pull/58)). This solves errors such as the ones reported in [#50](https://github.com/JeschkeLab/DeerLab/issues/50).

* Broken examples in the documentation have been corrected ([57](https://github.com/JeschkeLab/DeerLab/pull/57)).

* When requesting attributes or method of a UncertQuant object under disabled uncertainty analysis (``uqanalysis=False``) now it will prompt an explanatory error instead of just crashing ([56](https://github.com/JeschkeLab/DeerLab/issues/56)).

Specific changes

* ``fitsignal``: corected the behaviour of the scaling output (``fit.scale``). Now all fitted dipolar signals (``fit.V``) have the same scaling as the input signal ([53](https://github.com/JeschkeLab/DeerLab/issues/53)).

* ``regparamrange``: relaxed the exception handling to catch errors occuring under certain conditions. The function seems to crash due to LAPACK or SVD non-convergence errors during the GSVD, now these are catched and the alpha-range is estimated using simple SVD as an approximation. This function might be deprecated in a future release ([42](https://github.com/JeschkeLab/DeerLab/issues/42)).

Page 3 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.