Get Started

This library consist of C++ implementations of some geographically weighted models. Currently, implemented models are:

Comparing with other libraries, this library has these features:

  • [x] Pure C++ implementation which promise high efficiency

  • [x] Can be linked ether as a static library or shared library

  • [x] Use OpenMP to make algorithms faster

  • [ ] Use CUDA to reach very high efficiency

  • [x] Cross platform, configure and generate by CMake

  • [x] A python wrapper based on Cython

With OOP style codes, this library is easy to be integrated in any C++ project.

Installation

You can use CMake to build and install. These dependencies are required:

  • Armadillo, together with a BLAS and LAPACK implementation. Such as OpenBLAS and Intel MKL.

  • OpenMP (if ENABLE_OPENMP is defined), usually provided by complier. On macOS, OpenMP support is disabled by default, but clang support OpenMP.

  • CUDA (if ENABLE_CUDA is defined, to be supported in the next stage) and cuBLAS.

  • Cython (if WITH_PYTHON is defined)

Then configure project with cmake, for example

mkdir build
cd build
cmake ..

Then build the projects, for example

cmake --build . --config Release -T host=x64

Currently, auto install is not enabled. It will be finished in the next stage.

Usage

Usually, include the gwmodel.h header file in your project to use this library. If this library is build as a shared library, GWMODEL_SHARED_LIB should be defined in your project.

For more details, check static.cpp or shared.cpp fils in each test project.

Examples for python is coming.

Bindings for Python are archived. Please find it at tag v0.2.0.

Development

This repositry provides VSCode container development configurations. Developers can create a container with ready-to-use development environment. To do so,

  1. Install Docker on your PC.

  2. Open this repositry with VSCode.

  3. Press Ctrl+P to open command panel, then choose Open in Container.

  4. Wait for the building of container.

When the container is ready, make some changes then build and test. Happy coding!