Skip to content

polatory/polatory

Repository files navigation

Polatory

Travis CI AppVeyor

Polatory is a fast and memory-efficient framework for RBF (radial basis function) interpolation, developed by GSI Co. Ltd.

NOTE: This is a pre-release version. APIs subject to change without notice.

Features | License | Building | Contribution | Module Index | Acknowledgements

Features

  • Fast spline surface reconstruction from 2.5D/3D point cloud
  • Fast interpolation of 1D/2D/3D scattered data (kriging prediction)
  • Meshing isosurfaces
  • Supports large number (millions) of input points
  • Supports inequality constraints
  • List of available RBFs

Platforms

Polatory runs on x86-64 processors and continuously tested on the following platforms.

OS Toolchain
Ubuntu 16.04 LTS GCC 5.4 and Clang 3.8
Ubuntu 18.04 LTS GCC 7.3 and Clang 6.0
Windows Visual Studio 2017

Kriging via RBF Interpolation (Benchmark)

Polatory can perform global kriging prediction via RBF interpolation. Although different terminology is used, both methods produce the same results. Here is the correspondence between kriging and RBF interpolation:

Kriging RBF interpolation
Prediction Interpolation (fitting + evaluation)
Covariance function Positive definite RBF
Nugget effect Spline smoothing
Simple kriging Interpolant with no polynomial
Ordinary kriging Interpolant with polynomial of degree 0
Universal kriging Interpolant with polynomial of degree >= 1
Weights (Not computed) Cardinal basis functions
Kriging variance (Not computed)

Rapidly decaying covariance functions are not supported in the current version, such as the spherical and the Gaussian models. The spherical model can be substituted by a similar one named cov_quasi_spherical9.

License

Polatory is available under two different licenses:

Building

On Ubuntu

  1. Install build tools

    On Ubuntu 16.04 LTS, CMake >= 3.9 must be installed manually.

    sudo apt install build-essential cmake git ninja-build

    If you use Clang, libomp-dev is required.

    sudo apt install clang libomp-dev
  2. Download and install Intel(R) MKL.

    See https://software.intel.com/articles/installing-intel-free-libs-and-python-apt-repo for details.

    cd
    wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB -O - | sudo apt-key add -
    sudo sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list'
    sudo apt update
    sudo apt install intel-mkl-64bit-2018.3-051
  3. Install Eigen

    sudo apt install libeigen3-dev
  4. Install Google Test

    git clone https://github.com/google/googletest.git
    cd googletest
    mkdir build && cd build
    cmake .. -GNinja
    ninja
    sudo ninja install
  5. Install Ceres Solver

    sudo apt install libgoogle-glog-dev
    cd
    git clone https://ceres-solver.googlesource.com/ceres-solver
    cd ceres-solver
    mkdir build && cd build/
    cmake .. -GNinja -DCMAKE_LIBRARY_PATH=/opt/intel/mkl/lib/intel64 -DGFLAGS=OFF -DLAPACK=ON
    ninja
    sudo ninja install
  6. Install FLANN

    sudo apt install libflann-dev
  7. Download and build Boost

    cd
    wget https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.bz2
    tar xjf boost_1_69_0.tar.bz2
    cd boost_1_69_0
    ./bootstrap.sh
    ./b2 install -j8 --prefix=.
  8. Build polatory

    cd
    git clone https://github.com/polatory/polatory.git
    cd polatory
    mkdir build && cd build
    cmake .. -GNinja -DBOOST_ROOT=~/boost_1_69_0
    ninja

On Windows

  1. Install Visual Studio Community 2017

    https://www.visualstudio.com/

    From the Workloads tab, select the following item.

    • Desktop development with C++

    From the Individual components tab, select the following item.

    • Code tools > Git for Windows
  2. Install libraries with vcpkg

    cd /d C:\
    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
    bootstrap-vcpkg.bat
    vcpkg install boost ceres flann eigen3 gtest --triplet x64-windows

    To update vcpkg and installed libraries, run the following commands:

    cd /d C:\vcpkg
    git pull
    bootstrap-vcpkg.bat
    vcpkg update
    vcpkg upgrade
    vcpkg upgrade --no-dry-run
  3. Download and install Intel(R) MKL

  4. Build polatory

    Open Start > Visual Studio 2017 > x64 Native Tools Command Prompt for VS 2017.

    cd /d %userprofile%
    git clone https://github.com/polatory/polatory.git
    cd polatory
    mkdir build
    cd build
    cmake .. -GNinja -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
    ninja

Contribution

We welcome your contributions! You can contribute to this project in several ways:

Add a Star

You can just click the ★Star button to show your interest.

Feel free to file an issue, if you have any questions, feature requests, or if you have found any unexpected results (please include a minimal reproducible example).

You can fork the source tree and make some improvements to it. Then feel free to create a PR. When sending a PR for the first time, please review and sign the Individual Contributor License Agreement.

Module Index

Module Description
common Common utility functions and classes.
fmm Fast multipole methods (wrapper of ScalFMM).
geometry Geometric utilities.
interpolation RBF fitting and evaluation.
isosurface Isosurface generation.
kriging Parameter estimation and validation for kriging.
krylov Krylov subspace methods.
numeric Numerical utilities.
point_cloud SDF data generation from point clouds.
polynomial Polynomial part of RBF interpolant.
preconditioner The preconditioner used with Krylov subspace methods.
rbf Definition of RBFs/covariance functions.

Acknowledgements

Polatory utilizes the following libraries:

Boost
Boost Software License 1.0
Ceres Solver
The 3-Clause BSD License
Eigen
Mozilla Public License 2.0
gsl-lite
The MIT License
FLANN
The 2-Clause BSD License
Google Test
The 3-Clause BSD License
Intel(R) MKL
Intel Simplified Software License
ScalFMM
The CeCILL-C License