Skip to content

Releases: vinecopulib/pyvinecopulib

pyvinecopulib v0.7.1

09 Feb 19:31
d3b3151

Choose a tag to compare

Bug fixes in pyvinecopulib

  • Upgrade nanobind to allow for single row matrices (fix #169 and #170)

New features in pyvinecopulib

  • Add pickle support for all classes (#168)
  • Add allow_rotation option to FitControlsBicop and FitControlsVinecop (#168)

Changes in vinecopulib version 0.7.1

These changes originate from the latest release of vinecopulib, the C++ library which powers pyvinecopulib.

NEW FEATURES

  • add allow_rotation option to FitControlsBicop and FitControlsVinecop
    to allow for the rotation of the pair copulas (#628).
  • add a FitControlsConfig struct to create flexible and yet safe constructors
    for FitControlsBicop and FitControlsVinecop (#629).

BUG FIXES

  • restrict parameter range for fitting Tawn copulas; fix handling of their
    shape/argument order (#620).
  • compute and save loglik/nobs in Vinecop::fit() (#623)
  • disable unwanted compiler output related to BOOST_CONCEPT checks (#624)

pyvinecopulib v0.7.0

08 Jan 14:58
9a64b2e

Choose a tag to compare

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 optional FitControlsVinecop, an RVineStructure or matrix, and variable types.
      • Vinecop.from_structure(): Instantiate from an RVineStructure 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 and Vinecop 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)
  • Improve doc (#580, #585, #607)
  • Allow for the discrete Rosenblatt transform (#581)
  • Add Vinecop::fit() (#584)
  • Improve Bicop::str() (#588) and Vinecop::str() (#589)
  • 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 of boost whenever possible (#598, #612),
    • using binary search in the TLL for get_indices (#613).

Bug fixes

  • Improve stability in BB7 PDF (#573)
  • Revamped CI/CD pipeline, tests discoverable by CTest, boost version on windows ((66cf8b0))
  • Fix ASAN issues (#583)
  • Fix interface includes and other CMake issue (#586, #599, #601, #608), by @jschueller

pyvinecopulib v0.6.8

27 Oct 16:58
5284f27

Choose a tag to compare

  • Vectorize the stats functions properly (#151)

  • New Vinecop.str() (#153)

  • Add variables names option for vinecop plots (#152)

pyvinecopulib 0.6.7

22 Oct 09:25
d661cf0

Choose a tag to compare

pyvinecopulib 0.6.6

22 Oct 09:23

Choose a tag to compare

v0.6.6

Release v0.6.6

pyvinecopulib 0.6.5

22 Oct 09:23
ebec2f7

Choose a tag to compare

v0.6.5

Release v0.6.5

pyvinecopulib 0.6.4

27 Dec 12:31
2dfb0f1

Choose a tag to compare

  • Modernize the package build (e.g., switch to pyproject.toml)
  • Add latest versions of Python (3.11 and 3.12)

pyvinecopulib 0.6.3

20 Feb 15:42
2483b69

Choose a tag to compare

Release following the updates of vinecopulib to 0.6.2, see
https://github.com/vinecopulib/vinecopulib/releases. The most
relevant changes are summarized below.

BUG FIXES

  • replace bitwise ops on boolean operands (#563)

  • handle NaNs in to_pseudo_obs() (#566)

  • Replace calls to sprintf in boost libraries (#565)

pyvinecopulib 0.6.2

26 Aug 15:29
2219975

Choose a tag to compare

Release following the updates of vinecopulib to 0.6.2, see
https://github.com/vinecopulib/vinecopulib/releases. The most
relevant changes are summarized below.

  • improved documentation (discrete and missing dat, Rosenblatt transforms)

  • better parallelization when there is a small number of edges (#555)

pyvinecopulib v0.6.0

13 Jul 19:58
e12c673

Choose a tag to compare

Release following the update of vinecopulib to 0.6.0, see
https://github.com/vinecopulib/vinecopulib/releases.