Changelog
0.7.5
New features in pyvinecopulib
Add support for 1d data with the
Kde1dPython bindings (#189, #198)Add support for weighted dependence measures
wdm(#194)Add an argument to control the nonparametric grid size in both
Kde1dandBicop(#191, #192)Release GIL for C++-only operations (#193)
Add support for Python 3.14 (#200)
Bug fixes in pyvinecopulib
Improve repo health (#188)
Improve pickling by making the state a dict instead of tuple for all classes (#190)
0.7.4
This release was yanked due to an issue with the wheel upload. Please use 0.7.5 instead.
0.7.3
Breaking API changes in pyvinecopulib
Rename the
mst_algorithmargument inFitControlsVinecoptotree_algorithmto match the underlying C++ API (#178).The accepted values are now
"mst_prim","mst_kruskal"instead of"prim"and"kruskal".
Drop support for Python 3.8. Add support for Python 3.13 (#181).
New features in pyvinecopulib
Add support for random spanning trees in structure selection via
tree_algorithm="random_weighted"and"random_unweighted"using Wilson’s algorithm, enabling uniform or weight-proportional tree sampling (#178).Upgrade to
nanobindv0.2.7, which removes the need for casting hacks and improves compatibility (#180).Introduce a
format()method and improve__str__output for theVinecopclass (#144, #185).Add PEP 561-compatible stub files and full static type annotations across the package. Enable
mypychecks in CI (#144).Add
.[dev]and.[examples]extras inpyproject.tomlfor installing development and example dependencies (#181, #182, #183).Replace
flake8withrufffor linting and add code formatting checks (#182).Execute and test Jupyter notebooks in CI, including Graphviz rendering (#181).
Bug fixes in pyvinecopulib
Fix non-deterministic structure selection in multithreaded environments by decoupling criterion computation from edge insertion (#178, vinecopulib#640).
Refactor unit test environment setup and cleanup; remove stale directories in tests (#183).
Fix documentation rendering and improve docstrings across the package (#144, #185).
Changes in vinecopulib version 0.7.3
These changes originate from the release 0.7.3 of vinecopulib, the C++ library which powers pyvinecopulib.
BREAKING API CHANGES
The
mst_algorithmoption toFitControlsVinecophas been renamed totree_algorithmto allow for alternative spanning tree algorithms (#637).tree_algorithm’s default value is now"mst_prim"instead of"prim", and"mst_kruskal"replaces"kruskal"(#637).The CMake option
VINECOPULIB_BUILD_SHARED_LIBShas been changed toVINECOPULIB_PRECOMPILEDto better reflect its purpose (#641).
NEW FEATURES
Allow for random spanning trees as alternatives to the MST-based structure selection using
tree_algorithminFitControlsVinecopwith"random_weighted"or"random_unweighted"(#637).
BUG FIXES
Decouple edge insertion from criterion computation in
VinecopSelectorto fix randomness issues in structure selection when using multiple threads (#640)
Changes in vinecopulib version 0.7.2
These changes originate from the release 0.7.2 of vinecopulib, the C++ library which powers pyvinecopulib.
BUG FIXES
0.7.1
New features in pyvinecopulib
Add pickle support for all classes (#168)
Add
allow_rotationoption toFitControlsBicopandFitControlsVinecop(#168)
Bug fixes in pyvinecopulib
Upgrade nanobind to allow for single row matrices (fix #169 and #170)
Changes in vinecopulib version 0.7.1
These changes originate from the latest release of vinecopulib, the C++ library which powers pyvinecopulib.
NEW FEATURES
BUG FIXES
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_xzymethods.For the
Bicopclass: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
Vinecopclass:Vinecop.from_dimension(): Instantiate an empty vine copula of a given dimension.Vinecop.from_data(): Instantiate from data, as well as an optionalFitControlsVinecop, anRVineStructureor matrix, and variable types.Vinecop.from_structure(): Instantiate from anRVineStructureor 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
RVineStructureclass: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
BicopandVinecopclasses 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
Rdefaults (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=nativecompiler flags) and add benchmarking example (#592, #611, #613),using
Eigenelement-wise operations instead ofboostwhenever possible (#598, #612),using binary search in the TLL for
get_indices(#613).