# A 0 in a column means "This library does not do this", a 1 means "This # library does this", a 2 means "This library kind of does this." # # Basic: # (1) Provides some sort of fitting function that works on generic # function pointers (typically non-linear least squares). # (2) Provides access to best fit parameters. # (3) Provides access to uncertainty on best fit parameters. # Data: # (4) Allows for fits to data with no error bars. # (5) Allows for fits to data with with only y error bars. # (6) Allows for fits to data with x and y error bars. # (7) Allows for fits to data with upper and lower bounds. # (8) Allows for fits to distributions. # Return Values: # (9) Best fit values can be interpreted in _any_ self-consistent probabilistic # way. # (10) Best fit uncertainty can be interpreted in _any_ self-consistent # probabilistic way. # (11) Provides access to parameter covariance, correlation, or anything # vaguely similar. # (12) Provides access to the full joint posterior distribution for every # parameter. # Customization: # (13) Allows the user some sort of control over method convergence. # (14) User can constrain parameter ranges. # Convenience: # (15) Reports common statistical tests, like Chi^2/nu or R^2. # (16) Allows for parameters to be frozen. # Design: # (17) Does not require advanced statistical knowledge to use basic # functionality. More complicated features (if there) are hidden. # (18) Is not physically painful to use. # (FG) Qualitative grade based on library functionality only. # (AG) Qualitative grade based on both functionality and Functionality/Library Grades and API comments. # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 FG AG Name (0) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 A+ A- emcee 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 B+ A- lmfit_Python # -------- Good libraries above this line ------- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 A+ B PyMC 1 1 1 1 1 2 0 0 2 2 1 0 1 1 1 0 1 0 B+ B ROOT 1 1 1 1 1 2 0 2 0 0 1 0 1 1 1 0 1 1 B B Michael_Flanagan 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 0 1 1 B- B- ALGLIB 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 1 1 B- B- scipy 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 B- B- MATLAB 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 B- B- MPFIT 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 2 1 0 B- C+ Octave # ------ Usable libraries above this line ------- 1 1 1 1 1 2 0 0 0 0 1 0 1 0 0 1 0 0 C+ C Numerical_Recipes 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 C+ C GSL 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 C C LsqFit.jl 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 C C NAG 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 C C Wolfram_Language 1 1 1 1 1 0 0 0 0 0 0 0 1 0 2 0 0 0 C C Accord.NET 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 C C Extreme_Optimization 1 1 1 1 1 0 0 2 0 0 0 0 1 1 1 1 0 0 B C- zunzun 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 D D lmfit_C 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 2 1 D D Maple 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 D D CURVEFIT_Geospatial 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 2 D D- mljs 2 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 D D- Math.NET 1 1 0 1 2 0 0 0 0 0 0 0 1 0 2 0 0 2 D D- dlib 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 F F CuvelFit_Perl 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 F F CurveFit.jl 2 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 D F Apache_Commons_Math