Releases: scikit-hep/boost-histogram
Version 0.10.0
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
andbh.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
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 into_numpy
#406 - Deprecated
cpp
module removed #402
Developer changes
Bug fixes
Version 0.8.0
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
replacesrank
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
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
- Version is now obtained from
- Removed
futures
requirement for Python 2 tests - Updated Boost.Histogram, cleaner code with fewer workarounds
Version 0.6.2
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
Examples and notebooks are now up to date with the current state of the
library. Using Boost 1.72 release.
User changes
Bug fixes
Version 0.6.0
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
andIntCategory
, now allows empty categories whengrowth=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. #183bh.project
has becomebh.sum
#185.reduce(...)
and the reducers inbh.algorithm
have been removed in favor of dictionary based UHI slicing #259bh.numpy
module interface updates,histogram=bh.Histogram
replaces crypticbh=True
, anddensity=True
is now supported in Numpy mode #256- Added
hist.copy()
#218 andhist.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 nowtag
. #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
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:
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:
Version 0.5.1
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:
Version 0.5: First beta
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)