Get Started
This library consist of C++ implementations of some geographically weighted models. Currently, implemented models are:
Geographically Weighted Density Regression
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,
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!