This library consist of C++ implementations of some geographically weighted models. Currently, implemented models are:
- Geographically Weighted Regression (GWR) and its extensions
- Geographically Weighted Summary Statistics (GWSS)
- Geographically Weighted Principal Component Analysis (GWPCA)
- Geographically Weighted Density Regression (GWDR)
Comparing with other libraries, this library has these features:
- Pure C++ implementation which promise high efficiency
- Can be linked ether as a static library or shared library
- Use OpenMP to make algorithms faster
- Use CUDA to reach very high efficiency (only for GWR and MGWR)
- Cross platform, configure and generate by CMake
With OOP style codes, this library is easy to be integrated in any C++ project.
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.
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.
This repositry provides VSCode container development configurations. Developers can create a container with ready-to-use development environment. To do so,
- Install Docker on your PC.
- Open this repositry with VSCode.
- Press
Ctrl+P
to open command panel, then chooseOpen in Container
. - Wait for the building of container.
When the container is ready, make some changes then build and test. Happy coding!