diff --git a/Code/DataStructs/FPBReader.h b/Code/DataStructs/FPBReader.h index f84298fa7..896a849cd 100644 --- a/Code/DataStructs/FPBReader.h +++ b/Code/DataStructs/FPBReader.h @@ -15,6 +15,8 @@ #include #include #include +#include + #include namespace RDKit { diff --git a/Code/DataStructs/Wrap/CMakeLists.txt b/Code/DataStructs/Wrap/CMakeLists.txt index 68aae2d4d..b67e32d26 100644 --- a/Code/DataStructs/Wrap/CMakeLists.txt +++ b/Code/DataStructs/Wrap/CMakeLists.txt @@ -1,7 +1,8 @@ -rdkit_python_extension(cDataStructs - DataStructs.cpp DiscreteValueVect.cpp SparseIntVect.cpp - wrap_SparseBV.cpp wrap_ExplicitBV.cpp wrap_BitOps.cpp - wrap_Utils.cpp +rdkit_python_extension(cDataStructs + DataStructs.cpp DiscreteValueVect.cpp SparseIntVect.cpp + wrap_SparseBV.cpp wrap_ExplicitBV.cpp wrap_BitOps.cpp + wrap_FPB.cpp + wrap_Utils.cpp DEST DataStructs LINK_LIBRARIES RDGeneral DataStructs RDBoost) @@ -12,7 +13,5 @@ add_pytest(pyDiscreteValueVect ${CMAKE_CURRENT_SOURCE_DIR}/testDiscreteValueVect.py) add_pytest(pySparseIntVect ${CMAKE_CURRENT_SOURCE_DIR}/testSparseIntVect.py) - - - - +add_pytest(pyFPB + ${CMAKE_CURRENT_SOURCE_DIR}/testFPB.py) diff --git a/Code/DataStructs/Wrap/DataStructs.cpp b/Code/DataStructs/Wrap/DataStructs.cpp index e06f922b6..8dad7c434 100644 --- a/Code/DataStructs/Wrap/DataStructs.cpp +++ b/Code/DataStructs/Wrap/DataStructs.cpp @@ -28,6 +28,7 @@ void wrap_BitOps(); void wrap_Utils(); void wrap_discreteValVect(); void wrap_sparseIntVect(); +void wrap_FPB(); template void convertToNumpyArray(const T &v, python::object destArray) { @@ -76,6 +77,7 @@ BOOST_PYTHON_MODULE(cDataStructs) { wrap_BitOps(); wrap_discreteValVect(); wrap_sparseIntVect(); + wrap_FPB(); python::def( "ConvertToNumpyArray", diff --git a/Code/DataStructs/Wrap/testFPB.py b/Code/DataStructs/Wrap/testFPB.py new file mode 100644 index 000000000..a4176bb1c --- /dev/null +++ b/Code/DataStructs/Wrap/testFPB.py @@ -0,0 +1,28 @@ +from rdkit import DataStructs +from rdkit import RDConfig +import unittest,os + +def feq(a,b,tol=1e-4): + return abs(a-b) +#include +#include +#include "wrap_helpers.h" + +namespace python = boost::python; +using namespace RDKit; +std::string FPBReaderClassDoc = + "A class for read-only interactions with FPB files from Andrew Dalke's chemfp.\n\ +\n\ +\n"; + +struct FPB_wrapper { + static void wrap() { + python::class_( + "FPBReader", FPBReaderClassDoc.c_str(), python::init()) + .def("Init", &FPBReader::init, "init.\n") + .def("__len__", &FPBReader::length) + //.def("__getitem__", &FPBReader::operator[]) careful about this leaking + .def("GetFP", &FPBReader::getFP, + python::return_value_policy()) + .def("GetId", &FPBReader::getId) + .def("GetTanimoto", &FPBReader::getTanimoto); + } +}; + +void wrap_FPB() { FPB_wrapper::wrap(); }