Skip to content

Releases: scikit-hep/boost-histogram

Version 0.10.0

16 Jul 16:43
Compare
Choose a tag to compare

This version was released during PyHEP 2020. Several improvements were made to
usability when plotting and indexing. ARM and PowerPC builds are now published to PyPI.

User changes

  • AxesTuple array now support operations via ArrayTuple #414
  • Support sum and bh.rebin without slice #424
  • Nicer error messages in some cases #415
  • Made a few properties hidden for accumulators that were not public #418
  • Boolean now supports reduction, faster compile #422
  • AxesTuple now available publicly for subprojects #419

Bug fixes

  • Histograms support operations with arrays, no longer take the first element only #417

Version 0.9.0

11 Jul 22:29
Compare
Choose a tag to compare

This version was released just before PyHEP 2020. Several important fixes were made,
along with a few new features to better support downstream projects.

User changes

  • metadata supported and propagated on Histograms (slots added) #403
  • Added dd=True option in to_numpy #406
  • Deprecated cpp module removed #402

Developer changes

  • Subclasses can override axes generation #401
  • [dev] extra now installs pytest #401

Bug fixes

  • Fix numpy.histogramdd return structure #406
  • Travis deploy multi-arch fixes #399
  • Selecting on a bool axes supports 2D+ histograms #398
  • Warnings fixed on NumPy 1.19+ [#404][]

Version 0.8.0

06 Jul 20:24
Compare
Choose a tag to compare

This version was released just before SciPy 2020 and Boost 1.74. Highlights
include better accumulator views, simpler summing, better NumPy and Pandas
compatibility, and sums on growing axes. Lots of backend work,
including a new wheel building system, internal changes and better reliance
on Boost.Histogram's C++ tools for actions like cropping.

User changes

  • Weighted histogram cells can now be assigned directly from iterables #375
  • Weighted views can be summed and added #368
  • Sum is now identical to the built-in sum function #365
  • Adding growing axis is better supported #358
  • Slicing an AxesTuple now keeps the type #384
  • ndim replaces rank for NumPy compatibility #385
  • Any array-like supported in fill #391, any iterable can be used for Categories #392
  • Added Boolean axes, from Boost.Histogram 1.74 #390
  • Division between histograms is supported #393
  • More deprecated functionality removed

Bug fixes

  • Support older versions of CloudPickle (issue also fixed upstream) #343
  • Drop extra printout #338
  • Throw an error instead of returning an incorrect result in more places #386

Developer changes

  • Update Boost to 1.73 #359, PyBind11 to 2.5.0 #351, Boost.Histogram to pre-1.74 #388
  • Cropping no longer uses workaround #373
  • Many more checks added to pre-commit #366
  • Deprecating cpp interface #391
  • Wheelbuilding migrated to cibuildwheel and GHA #361

Version 0.7.0

16 Mar 18:57
Compare
Choose a tag to compare

This version removes deprecated functionality, and has several backend
improvements. The most noticeable user-facing change is the multithreaded fill
feature, which can enable significant speedups when you have a dataset that is
much larger than the number of bins in your histogram and have free cores to
use. Several small bugs have been fixed.

User changes

  • Added threads= keyword to .fill and numpy functions; 0 for automatic, default is 1 #325
  • .metadata is now settable directly from the AxesTuple #303
  • Deprecated items from 0.5.x now dropped #301
  • cpp mode updates and fixes #317

Bug fixes

  • Dict indexing is now identical to positional indexing, fixes "picking" axes in dict #320
  • Passing samples=None is now always allowed in .fill #325

Developer changes

  • Build system update, higher requirements for developers (only) #314
    • Version is now obtained from setuptools_scm, no longer stored in repo
  • Removed futures requirement for Python 2 tests
  • Updated Boost.Histogram, cleaner code with fewer workarounds

Version 0.6.2

07 Jan 22:37
Compare
Choose a tag to compare

Common analysis tasks are now better supported. Much more complete
documentation. Now using development branch of Boost.Histogram again.

Bug fixes

  • Fix sum over category axes in indexing #298
  • Allow single category item selection #298
  • Allow slicing on axes without flow bins #288, #300
  • Sum repr no longer throws error #293

Developer changes

  • Now using scikit-hep/azure-wheel-helpers via subtree #292

Version 0.6.1

12 Dec 23:49
11350f7
Compare
Choose a tag to compare

Examples and notebooks are now up to date with the current state of the
library. Using Boost 1.72 release.

User changes

  • Slices and single values can be mixed in indexing #279
  • UHI locators supported on axes #280

Bug fixes

  • Properties on accumulator views now resolve correctly #273
  • Division of a histogram by a number is supported again #278
  • Setting a histogram with length one slice fixed #279
  • Numpy functions now work with Numpy ints in bins= #282
  • In-place addition avoids a copy #284

Version 0.6.0

01 Dec 20:23
Compare
Choose a tag to compare

Version 0.6

This version fills out most of the remaining features missing from the 0.5.x
series. You can now use all the storages without the original caveats; even
the accumulators can be accessed array-at-a-time without copy, pickled quickly,
and set array-at-a-time, as well.

The API has changed considerably, providing a more consistent experience in
Python. Most of the classic API still works in this release, but will issue a
warning and will be removed from the next release. Please use this release to
transition existing 0.5.x code to the new API.

User changes

  • Histogram and Axis classes now follow PEP 8 naming scheme (histogram->Histogram, regular->Regular, int->Int64 etc.) #192, #255
  • You can now view a histogram with accumulators, with property access such as h.view().value #194
  • Circular variable and integer axes added #231
  • Split Category into StrCategory and IntCategory, now allows empty categories when growth=True #221
  • StrCategory fills are safer and faster #239, #244
  • Added axes transforms #192
  • Function(forward, inverse) transform added, allowing ultra-fast C function pointer transforms #231
  • You can now set histogram contents directly #250
  • You can now sum over a range with endpoints #185
  • h.axes now has the functions from axis as well. #183
  • bh.project has become bh.sum #185
  • .reduce(...) and the reducers in bh.algorithm have been removed in favor of dictionary based UHI slicing #259
  • bh.numpy module interface updates, histogram=bh.Histogram replaces cryptic bh=True, and density=True is now supported in Numpy mode #256
  • Added hist.copy() #218 and hist.shape #264
  • Signatures are much nicer in Python 3 #188
  • Reprs are better, various properties like __module__ are now set correctly #200

Bug fixes:

  • Unlimited and AtomicInt storages now allow single item access #194
  • .view() now no longer makes a copy #194
  • Fixes related to string category axis fills #233, #230
  • Axes are no longer copies, support setting metadata #238, #246
  • Pickling accumulator storages is now comparable in performance simple storages #258

Developer changes

  • The linux wheels are now 10-20x smaller #229
  • The hist/axis classes are now pure Python, with a C++ object inside #183
  • Most internal names changed, core->_core, etc. #183
  • The uhi module is now tag. #183
  • boost_histogram.cpp as bh provides C++ high-compatibility mode. #183
  • Indexing tags now use full UHI instead of workarounds #185
  • Removed log and sqrt special axes types#231
  • Family and registration added, new casting system #200

Version 0.5.2

24 Oct 01:18
034c720
Compare
Choose a tag to compare

Another small release, mostly focused on fixing a few bugs that primarily affected Windows + Python 3.8 users. Reprs have become much nicer, making histograms easier to work with in REPLs. Serialization code is now shared with Boost.Histogram, which will make maintenance easier and fixes unlimited storage pickling.

User changes:

  • bh.loc supports an offset #164
  • Nicer reprs in several places #167
  • Deprecate .at and .axis #170

Bug fixes:

  • Use relative paths in setup.py to avoid resolving WSL paths on Windows #162, #163
  • Better Pybind11 support for Python 3.8 #168

Developer changes:

  • Serialization code shared with Boost.Histogram #166
  • Avoid unused PEP 517 isolation for now #171 (may return with proper PEP 518 support eventually)

Version 0.5.1

18 Oct 20:22
4009c1f
Compare
Choose a tag to compare

This release has a few quick bugfixes from PyHEP 2019. It also has one new feature, h.axes, which did not quite make it in for 0.5.0, and has removed the indexed iterator (fully replaced by axes).

User changes:

  • Removed the bh.indexed/h.indexed iterator #150
  • Added .axes AxisTuple, with direct access to properties #150
  • Cleaned up tab completion in IPython #150

Bug fixes:

  • Fixed a bug in the sdist missing Boost.Variant2 #154
  • Fixed filling on strided inputs #158

Version 0.5: First beta

16 Oct 12:56
dcfacae
Compare
Choose a tag to compare

First beta release.

Known issues:

  • Unlimited storage does not support pickling or classic multiprocessing
  • Some non-simple storages do not support some forms of access, like .view
  • Indexing and the array versions (such as centers) are incomplete and subject to change
  • The numpy module is provisional and subject to change
  • Docstrings and signatures will improve in later versions (especially on Python 3)