Skip to content

Latest commit

 

History

History
72 lines (58 loc) · 5.46 KB

CHANGELOG.md

File metadata and controls

72 lines (58 loc) · 5.46 KB

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 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