What’s new in boost-histogram¶
Dropped support for Python 2 and 3.5; removed large numbers of workarounds.
Fully statically typed. API compatible with the final
0.x release for most
uses, except for subclassing; subclassing histogram components now uses Python
3 class keyword syntax to set families.
Subclassing Histogram changes¶
Backport fix scaling a weighted storage
Backport fix partial summation over a Categorical axis
Backport fix for Mean/WeightedMean summing.
Backport fix for
Backport missing metadata from the repr’s.
family=on Histogram subclassing to make subclassing Histogram only possible in 1.x + 0.x code.
PlottableProtocol provides a way to plot in different libraries, and easy access to common quantities. This is expected to be the final release for Python 2, and mostly equivalent in API to 1.0.
Support for PlottableProtocol. You can now access
.variances()on all storages; used by plotting libraries.
.kinddescribes the Kind of the histogram (
.optionshas been renamed to
.traits, and a few more useful traits were added, like
.discrete. Most other portions of the Protocol were already present. #476
.rankon histograms (since 0.8). Use
Supports converting user histogram objects that provide a
view=Trueparameter must now be passed to get a View instead of a standard NumPy values array from
Pressing forward to 1.0.
If you are using
Axis.options, please transition to
includes all the old options, along with some new traits, and matches the
Updating pybind11 to 2.6.0. #443 Features:
Python 3.9 support
PyPy2 / PyPy3.6 / PyPy3.7 support
Warnings on latest AppleClang fixed
40% faster accumulator fills, simpler implementation
Segfaults when passing an object with a throwing repr fixed
kwargs replaced older workarounds (partially at the moment)
Enhanced CMake support, finds conda and venv now, uses
Using setuptools support from pybind11 (previously vendored, so benefits have been available since 0.11.0)
Also cleans up SDists a bit. #467
A release focused on preparing for the upcoming Hist 2.0 release.
Quick fix for extra print statement in fill.
Several fixes were made, mostly related to Weight storage histograms from Uproot 4.
This version was released during PyHEP 2020. Several improvements were made to usability when plotting and indexing.
AxesTuple array now support operations via ArrayTuple #414
bh.rebinwithout 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
This version was released just before PyHEP 2020. Several important fixes were made, along with a few new features to better support downstream projects.
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.
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
rankfor NumPy compatibility #385
Added Boolean axes, from Boost.Histogram 1.74 #390
Division between histograms is supported #393
More deprecated functionality removed
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.
Common analysis tasks are now better supported. Much more complete documentation. Now using development branch of Boost.Histogram again.
Examples and notebooks are now up to date with the current state of the library. Using Boost 1.72 release.
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.
You can now view a histogram with accumulators, with property access such as
Circular variable and integer axes added #231
Split Category into
IntCategory, now allows empty categories when
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.axesnow has the functions from axis as well. #183
.reduce(...)and the reducers in
bh.algorithmhave been removed in favor of dictionary based UHI slicing #259
bh.numpymodule interface updates,
density=Trueis now supported in NumPy mode #256
Signatures are much nicer in Python 3 #188
Reprs are better, various properties like
__module__are now set correctly #200
Unlimited and AtomicInt storages now allow single item access #194
.view()now no longer makes a copy #194
Pickling accumulator storages is now comparable in performance simple storages #258
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
uhimodule is now
boost_histogram.cpp as bhprovides 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
First beta release and beginning of the changelog.
Unlimited storage does not support pickling or classic multiprocessing
Some non-simple storages do not support some forms of access, like
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)