perhaps some of you know iminuit, the Jupyter-friendly Python interface for the Minuit2 C++ library.
We are about to finish the first major revision (version 2.0) of this package and hope you give the revised interface a spin, feedback is welcome! The interface was updated to give iminuit a clean and consistent interface without historical clutter, to makes it easier to learn, safer to use, and ready for the long-term stable future.
You can install the current release candidate with pip from test.pypi.org:
pip install -i https://test.pypi.org/simple/ iminuit==2.0rc1
Binary wheels are available for all current Python versions (3.6-3.9) on Windows, MacOS and Linux, so this should just take a second and not require any compilation.
You can see the updated iminuit tutorial here
(you may have to reload that page until it is displayed properly)
What is iminuit?
The C++ Minuit2 library is part of ROOT, but the code can be used standalone. iminuit is a small (< 1 MB) Python package which you can
pip install to get access to the Minuit2 minimisers and error computers. iminuit is the official successor of pyminuit and pyminuit2, both written by Jim Pivarski. We work together with the ROOT developers to improve the Minuit2 code in ROOT, so iminuit also benefits ROOT.
Why iminuit? I can already fit in Python using RooFit and PyROOT etc.
If you are happy with RooFit, then you won’t gain anything from iminuit. iminuit is a lower level tool, just a minimiser and error computer. You need to write your likelihood function by yourself (a few simple cost functions are included in the iminuit package, though). People who use iminuit typically want to have full control over the cost functions they write. It is also good for teaching, because it is rather simple. RooFit is a full framework to generate efficient cost functions, it is very good at that, the cost function minimization happens inside RooFit when you call the