You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the feature / issue
Namespace DissolveFit will contain basic fitting operations for 1D data. This originally started as a motivation to include a go-to method for a general case of fitting a Gaussian to histogram data, but the scope expanded to peak finding - a class for this has now been implemented (#1978 ), although the Gaussian fit has yet to be implemented.
Additional details
I thought given the arrival of the first PR, we could maybe flesh out exactly what else should go into this namespace in terms of classes or methods that would be good to have in there.
Some ideas from my side:
Linear and non-linear polynomial Regression class (i.e. for order-N polynomial fitting, perhaps powered by least-squares by gradient descent)
an Approximation class to implement a range of user-specified mathematical series to approximate data, such as Taylor, exponential, or power series.
a Parametric enum class to specify explicitly functional forms to be fitted to data, such as Gaussian, asymmetric peak, logistic function etc. with the fitting also to be handled by the above Approximation class
Sparse fitting functionality, for instance to model complex data with more simple delta functions
A collection of useful minimisation algorithms that could be used in conjunction with the above classes. I think it would be great to have gradient descent in there, but also some global optimization methods such as genetic algorithm or simulated annealing for when there are many parameters to be fitted. This bit could maybe even reside in a neighbouring namespace (i.e. DissolveMinimise), and the idea is that any of the fitting classes described above that can use minimisation schemes to converge could make use of these minimisers interchangeably, making them akin to a sort of 'plugin'.
The text was updated successfully, but these errors were encountered:
If we're going to be adding a large number of these fitting functions, I'm beginning to wonder if we might be better off using pre-existing library for these functions. For example, GSL provides most of the fitting and polynomial functionality that we might desire. It's available on Conan, so it shouldn't be more onerous than other dependencies that we already include. Honestly, I'm rather hoping that we could find a better library than GSL, but it serves as an example.
I'm currently looking into how applicable the GSL library is for covering this functionality - I imagine it will be very applicable though. My guess is that as a first course of action, we could remove my peak finding work from the DissolveFit namespace, and place it in its own namespace, Peaks. Then the fitting namespace could be a wrapper to GSL functions.
Describe the feature / issue
Namespace
DissolveFit
will contain basic fitting operations for 1D data. This originally started as a motivation to include a go-to method for a general case of fitting a Gaussian to histogram data, but the scope expanded to peak finding - a class for this has now been implemented (#1978 ), although the Gaussian fit has yet to be implemented.Additional details
I thought given the arrival of the first PR, we could maybe flesh out exactly what else should go into this namespace in terms of classes or methods that would be good to have in there.
Some ideas from my side:
Regression
class (i.e. for order-N polynomial fitting, perhaps powered by least-squares by gradient descent)Approximation
class to implement a range of user-specified mathematical series to approximate data, such as Taylor, exponential, or power series.Parametric
enum class to specify explicitly functional forms to be fitted to data, such as Gaussian, asymmetric peak, logistic function etc. with the fitting also to be handled by the aboveApproximation
classDissolveMinimise
), and the idea is that any of the fitting classes described above that can use minimisation schemes to converge could make use of these minimisers interchangeably, making them akin to a sort of 'plugin'.The text was updated successfully, but these errors were encountered: