Skip to content

4.0.0 - 2022-10-11

Latest
Compare
Choose a tag to compare
@markjonestx markjonestx released this 11 Oct 22:18
· 1 commit to main since this release

Added

  • Anaconda environments. There are two anaconda environments included
    inside the source folder at the moment. anaconda-environment.yml and
    dev-environment.yml. These should provide a nice starting point for
    anyone wanting to work on or with PyPWA. Pull requests are welcomed
    if you think a package should be added to the base environment.
  • Added PyTorch for GPU and Apple Metal support. Can be specified during
    install using pip install pypwa[torch]. Amplitude support is specified
    by setting the USE_TORCH flag to True.
  • Added support for Python's Multithreading. You should only use this when
    computation is happening on separate nodes and/or your optimizer choice
    does not support passing it's values across an OS Pipe.
  • Added support for Minuit's parameter array argument. Now amplitudes can
    be written to accept a single array containing all the array values.
  • Debugging support for amplitudes is now explicit. You can set the DEBUG
    flag to True on your amplitude before simulation or fitting, and it'll run
    in the main process so traceback and errors will not be suppressed.
  • Amplitudes can now know where they live. Amplitudes have a THREAD flag
    that is numbered from 0 to N-threads that will specify which thread the
    amplitude is running in. This is useful if you want to pair your
    processes/threads with external devices like GPUs or OpenMPI nodes.

Changed

  • Data module will no longer bury the Cache object. The cache object will
    now reside in the same directory as the parsed data.
  • Moves Emcee to an optional dependency so that PyPWA can function in a
    base anaconda environment. If Emcee is installed, or if emcee is
    specified during installation using pip install pypwa[emcee], the
    emcee functionality will be usable.
  • iMinuit has changed their ABI entirely, so the iminuit function has
    been changed to adapt to the new ABI.
  • Updated all dependencies around ReadTheDocs to avoid GitHub flagging
    the dependencies for exploits.

Removed

  • Project manager. There were several bugs throughout the module, and as
    far as we are aware, no users using the module. If you're affected by
    this change, please open an issue in the issue tracker to let us know.
  • Removed the command line Binning utility. The Jupyter-based and
    internal binning utilities remain unaffected. If this affects you,
    please open an issue.
  • Removed appdirs as a dependency.
  • Removed CuPy support, replaced by PyTorch.
  • Removed PyYaml Configuration support.

Fixed

  • The bin by range function was not sampling data correctly. The intended
    behaviour was for each bin to be sampled by N samples, and then those
    samples to be shuffled to add randomization. However, because the
    shuffling was improperly implemented, what would occur instead is a single
    random event would be dropped from the sample, and then returned. This
    no longer occurs, and the returned bins will now be the correct length,
    and will be correctly shuffled.