Changelog
0.7.6
This release was only used to pull the latest changes from vinecopulib’s dev branch, which includes some bug fixes.
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).