tristanic / nd_interpolation

Fast C++ N-dimensional interpolation on pre-defined data

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nd_interpolation

Fast C++ N-dimensional interpolation on pre-defined data

Originally designed for fast validation of molecular models against Ramachandran, rotamer and CABLAM (and future other...?) contours from MolProbity. The core classes are defined as pure header-only templates and should be readily applicable to a range of tasks with minor modification.

Dependencies

  • a Python installation with (as a minimum) setuptools, wheel and numpy modules
  • PyBind11
  • The MolProbity Ramachandran, rotamer and CaBLAM contours from the Richardson lab at Duke University.

NOTE: the rota*.data files included here have been modified relative to the official ones by wrapping the axes to the range (-180..180) degrees in keeping with the Ramachandran and CaBLAM datasets. Building will work with either set, but the test rotamer values in test_interpolators.py are based on the re-wrapped range.

Getting started

  • test_nd_interp.cpp contains a brief example of usage at the C++ API level. Compile it to an executable with:
gcc test_nd_interp.cpp -o test_nd_interp -pthread -std=c++11 -lstdc++ -lm -g -O2
  • python prepare_interpolators.py bdist_wheel will parse the rama*.data and rota*.data files into C++ source and compile them into Python-compatible libraries. The resulting library files in build/lib... can be copied to the destination of your choice. Put them in the same directory as test_interpolators.py and run it to test.

About

Fast C++ N-dimensional interpolation on pre-defined data

License:GNU Lesser General Public License v3.0


Languages

Language:Python 67.4%Language:C++ 32.6%