seeking endorsement for histogram library
Dear Boost developers, I believe the histogram library is now ready to be presented here and I am looking for endorsement. Histogram is a C++11 header-only library that provides a safe, convenient, and fast multi-dimensional histogram for statistical analysis and visualisation. The library has a unique feature set, among it a safety guarantee that the counts in the histogram cannot overflow. It is easily customisable for power users, while providing defaults that just work for the occasional user. Meta-programming is used to provide an especially fast histogram implementation that can be used when the histogram configuration is known at compile-time. A dynamic implementation is also provided for the other case when the configuration is only known at run-time. The two implementations share a common interface, so it is easy to switch between them. Python bindings are included for the dynamic implementation. The Python interface supports Numpy arrays to greatly speed up the exchange of data between the Python and C++ side. I tested the performance of the library in benchmarks against other libraries, which have fewer features, and this library beats them in almost all cases. I am stealing the style of the rest of the email from Antony Polukhin. Library: https://github.com/HDembinski/histogram https://github.com/HDembinski/histogram Docs: https://htmlpreview.github.io/?https://raw.githubusercontent.com/HDembinski/... https://htmlpreview.github.io/?https://raw.githubusercontent.com/HDembinski/... Boost Library Incubator: http://blincubator.com/bi_library/histogram-2/?gform_post_id=1582 http://blincubator.com/bi_library/histogram-2/?gform_post_id=1582 Library changes since last mail: * Support for efficient adding of multiple histograms and scaling * Support for reduce transformation * Re-design of category axis as a general mapping between unique values and bins * Re-design of the bin description an axis returns upon element access * Regular axis can accepted bijective (user-provided) transformations * Interface cleanup, refactoring, and simplification * Finished documentation Best regards, Hans
On Monday, November 13, 2017 2:23:54 PM CST Hans Dembinski via Boost wrote:
Dear Boost developers,
I believe the histogram library is now ready to be presented here and I am looking for endorsement.
I'm not sure what "endorsement" entails for Boost, but I think a histogram would be a great addition. I've had to write simple 1d histograms many times over the years and this library goes way beyond that so I'd look forward to using it. Regards, -Steve
Hi Steve,
On 13. Nov 2017, at 18:19, Steve Robbins via Boost
wrote: On Monday, November 13, 2017 2:23:54 PM CST Hans Dembinski via Boost wrote:
Dear Boost developers,
I believe the histogram library is now ready to be presented here and I am looking for endorsement.
I'm not sure what "endorsement" entails for Boost, but I think a histogram would be a great addition. I've had to write simple 1d histograms many times over the years and this library goes way beyond that so I'd look forward to using it.
that is cool, thank you. :) If you have any feedback to share about the library, please let me know. Here is the bit about endorsement in the submission guide lines http://www.boost.org/development/submissions.html http://www.boost.org/development/submissions.html "When you feel that your library is ready for entry into Boost, you need to find at least one member (but preferably several) of the Boost community who is willing to publicly endorse your library for entry into Boost. A simple method of achieving this is to post to the Boost developers mailing list http://www.boost.org/community/groups.html a short description of your library, links to its github and documentation, and a request for endorsements." Best regards, Hans
Dear Boost developers,
I believe the histogram library is now ready to be presented here and I am looking for endorsement.
Histogram is a C++11 header-only library that provides a safe, convenient, and fast multi-dimensional histogram for statistical analysis and visualisation. The library has a unique feature set, among it a safety guarantee that the counts in the histogram cannot overflow. It is easily customisable for power users, while providing defaults that just work for the occasional user. Meta-programming is used to provide an especially fast histogram implementation that can be used when the histogram configuration is known at compile-time. A dynamic implementation is also provided for the other case when the configuration is only known at run-time. The two implementations share a common interface, so it is easy to switch between them. Python bindings are included for the dynamic implementation. The Python interface supports Numpy arrays to greatly speed up the exchange of data between the Python and C++ side. I tested the performance of the library in benchmarks against other libraries , which have fewer features, and this library beats them in almost all cases.
[snip] The histogram classes look quite useful, especially the property that you can add histograms and thus accumulate data in parallel is important in many scientific contexts. Did you also intend to provide estimates of mean, variance and possibly higher order statistical moments of the whole distribution? This can be achieved with so-called on-line algorithms (even in the multi-variate case) and would help to get more information about your data. This can also be implemented such that the summation of histograms still work (and probably also the scaling). Best, Fabian
Dear Fabian,
On 13. Nov 2017, at 18:59, Fabian Bösch via Boost
wrote: The histogram classes look quite useful, especially the property that you can add histograms and thus accumulate data in parallel is important in many scientific contexts.
yes, right! :) I also mention that use case in the user guide. :)
Did you also intend to provide estimates of mean, variance and possibly higher order statistical moments of the whole distribution? This can be achieved with so-called on-line algorithms (even in the multi-variate case) and would help to get more information about your data. This can also be implemented such that the summation of histograms still work (and probably also the scaling).
assuming I understand you correctly, then I think the functionality of computing moments on-line is already in Boost.Accumulators, see http://www.boost.org/doc/libs/1_65_1/doc/html/accumulators/user_s_guide.html... The histogram library has a weak overlap in scope with Boost.Accumulators, but mostly they are complementary. There is a section in the rationale about on this point: https://htmlpreview.github.io/?https://github.com/HDembinski/histogram/html/... Best regards, Hans
participants (3)
-
Fabian Bösch
-
Hans Dembinski
-
Steve Robbins