Recent Releases of pyvinecopulib

pyvinecopulib - pyvinecopulib v0.7.1

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)

- C++
Published by tvatter about 1 year ago

pyvinecopulib - pyvinecopulib v0.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

- C++
Published by tvatter about 1 year ago

pyvinecopulib - pyvinecopulib v0.6.8

  • Vectorize the stats functions properly (https://github.com/vinecopulib/pyvinecopulib/pull/151)

  • New Vinecop.str() (https://github.com/vinecopulib/pyvinecopulib/pull/153)

  • Add variables names option for vinecop plots (https://github.com/vinecopulib/pyvinecopulib/pull/152)

- C++
Published by tvatter over 1 year ago

pyvinecopulib - pyvinecopulib 0.6.7

- C++
Published by tvatter over 1 year ago

pyvinecopulib - pyvinecopulib 0.6.6

- C++
Published by tvatter over 1 year ago

pyvinecopulib - pyvinecopulib 0.6.5

- C++
Published by tvatter over 1 year ago

pyvinecopulib - pyvinecopulib 0.6.4

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

- C++
Published by tvatter over 2 years ago

pyvinecopulib - pyvinecopulib 0.6.3

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)

- C++
Published by tnagler about 3 years ago

pyvinecopulib - pyvinecopulib 0.6.2

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)

- C++
Published by tnagler over 3 years ago

pyvinecopulib - pyvinecopulib v0.6.0

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

- C++
Published by tvatter over 4 years ago

pyvinecopulib - pyvinecopulib 0.5.5

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

BUG FIXES

  • fix little bug in copula selection based on mBIC

  • stabilize BB7 copula pdf

  • fix threshold selection for (near-)independent data

  • fix vine copula selection for 1-dimensional models with discrete variables

  • fix user-visible variable types

- C++
Published by tnagler over 5 years ago

pyvinecopulib - pyvinecopulib 0.5.4

Version 0.5.4 following the release of vinecopulib 0.5.4.

- C++
Published by tnagler over 5 years ago