Skip to content

Fast, memory-efficient 3D spline interpolation and global kriging.

License

Notifications You must be signed in to change notification settings

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

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 16.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 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)
Standard errors (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.67.0/source/boost_1_67_0.tar.bz2
    tar xjf boost_1_67_0.tar.bz2
    cd boost_1_67_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_67_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.
third_party Third party libraries.

Acknowledgements

Polatory utilizes the following libraries:

Library License Used
Boost Boost Software License 1.0 In several modules
Ceres Solver The 3-clause BSD license In kriging module
Eigen Mozilla Public License 2.0 In almost all modules
FLANN The 2-clause BSD license In point_cloud module
Google Test The 3-clause BSD license For unit testing
Intel(R) MKL Intel Simplified Software License As a backend for Ceres Solver, Eigen and ScalFMM
ScalFMM The CeCILL-C license In fmm module

About

Fast, memory-efficient 3D spline interpolation and global kriging.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 95.1%
  • CMake 3.8%
  • Other 1.1%