MyNixOS website logo
Description

Approximate and Exact Optimal Transport Methods.

R and C++ functions to perform exact and approximate optimal transport. All C++ methods can be linked to other R packages via their header files.

R-CMD-check CRAN status

approxOT: Approximate and Exact Optimal Transport Distances

This R package performs the computation of approximate and exact optimal transport distances through a variety of algorithms. We also provide header files in C++ to allow other packages to use these methods.

Installation

To install this package, download or clone this repository and install with devtools::install("approxOT") or install directly from Github using devtools::install_github. Alternatively, a version is available from CRAN.

Algorithms

The package currently supports the following algorithms to calculate optimal transport distances

  1. "exact" or "networkflow": utilizes a network flow algorithm to calculate exact optimal transport distances
  2. "shortsimplex": uses the shortlist method of Gottschlich and Schuhmacher (2014) to calculate an exact optimal transport distance.
  3. "univariate": uses the exact method special to the univariate case.
  4. "sinkhorn": use the Sinkhorn distance method of Cuturi (2013) to calculate entropically regularized optimal transport distances. An unbiased option also allows the calculation of Sinkhorn divergences (removing the entropic bias).
  5. "greenkhorn": use the Greenkhorn algorithm of Altschuler et al. (2017).
  6. "hilbert": utilizes Hilbert sorting to perform very fast optimal transport distances. Relies on the CGAL header library provided by the RcppCGAL package.
  7. "sliced": uses the sliced optimal transport distances as described in Bonneel et al. (2015).
  8. "ranks": use the average ranks of each column to perform quick optimal transport distances.
  9. "swapping": calculates the swapping optimal transport distance to improve approximate solutions.

Algorithms 1--3 are exact algorithms. Algorithms 4+ are approximate

Author

Eric Dunipace

License

GPL 3

Metadata

Version

1.1.1

License

Unknown

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows