Changelog
0.7.0
This version introduces a switch to nanobind as a backend (#160): i.e., the C++ bindings, now use nanobind instead of pybind11. It allows for considerable performance improvements (~8x speedup in our latest benchmarks) and smaller binaries.
Breaking API changes in pyvinecopulib
Removal of the overloaded constructors:
For all classes, only one constructor is now available. The reason is that the overloaded constructors were un-Pythonic, error-prone, and could not be properly documented with Sphinx. They have been replaced by a single constructor for each class, along with factory
from_xzy
methods.For the
Bicop
class:Bicop.from_family()
: Instantiate from a family, rotation, parameters, and variable types.Bicop.from_data()
: Instantiate from data, as well as optional controls and variable types.Bicop.from_file()
: Instantiate from a file.Bicop.from_json()
: Instantiate from a JSON-like string.
For the
Vinecop
class:Vinecop.from_dimension()
: Instantiate an empty vine copula of a given dimension.Vinecop.from_data()
: Instantiate from data, as well as an optionalFitControlsVinecop
, anRVineStructure
or matrix, and variable types.Vinecop.from_structure()
: Instantiate from anRVineStructure
or matrix, as well as optional pair-copulas and variable types.Vinecop.from_file()
: Instantiate from a file.Vinecop.from_json()
: Instantiate from a JSON-like string.
For the
RVineStructure
class:RVineStructure.from_dimension()
: Instantiate a default structure of a given dimension and truncation level.RVineStructure.from_order()
: Instantiate from an order vector.RVineStructure.from_matrix()
: Instantiate from a matrix.RVineStructure.from_file()
: Instantiate from a file.RVineStructure.from_json()
: Instantiate from a JSON-like string.
New features in pyvinecopulib
Expose more structure methods to python (#157)
Switch to nanobind as a backend (#160)
New IO methods for
Bicop
andVinecop
classes to use JSON-like strings (#160)Extensive documentation revamp (#160)
Adding a benchmark example (#160)
Convertion of all examples to Jupyter notebooks (#160)
Bug fixes in pyvinecopulib
Install and test source distribution (#164)
Changes in vinecopulib
These changes originate from the underlying C++ library, vinecopulib
, which powers pyvinecopulib
.
New features
Use analytical derivatives in discrete pdf/hfuncs (#572)
Allow for alternative for
"prim"
vs"kruskal"
in MST-based model selection (#577)Improve the dependencies install script to use it in other projects (#576)
Add tawn copula (#579)
Allow for the discrete Rosenblatt transform (#581)
Add
Vinecop::fit()
(#584)Properly handle discrete variables for the TLL family (#597)
Weighted pseudo-observations (#602)
Cross-platform random numbers and add seeds options to
to_pseudo_obs
(#603)Improve performance by
aligning with the
R
defaults (e.g.,BOOST_NO_AUTO_PTR
,BOOST_ALLOW_DEPRECATED_HEADERS
,BOOST_MATH_PROMOTE_DOUBLE_POLICY=false
,std::string nonparametric_method = "constant"
for the TLL instead of"quadratic"
,-O3 -march=native
compiler flags) and add benchmarking example (#592, #611, #613),using
Eigen
element-wise operations instead ofboost
whenever possible (#598, #612),using binary search in the TLL for
get_indices
(#613).