diff --git a/Code/Demos/SWIG/CMakeLists.txt b/Code/Demos/SWIG/CMakeLists.txt index 0ff080c64..7ea640f46 100644 --- a/Code/Demos/SWIG/CMakeLists.txt +++ b/Code/Demos/SWIG/CMakeLists.txt @@ -13,5 +13,5 @@ Depictor SubstructMatch ChemReactions Fingerprints Subgraphs GraphMol DataStructs RDGeometryLib RDGeneral ) -add_subdirectory(python_example) +#add_subdirectory(python_example) add_subdirectory(java_example) diff --git a/Code/Demos/SWIG/RDKFuncs.i b/Code/Demos/SWIG/RDKFuncs.i index 5effa02be..b8b0f5b05 100644 --- a/Code/Demos/SWIG/RDKFuncs.i +++ b/Code/Demos/SWIG/RDKFuncs.i @@ -80,13 +80,13 @@ SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(Match_Vect, std::vector< std::pair > %extend RDKit::ROMol { bool hasSubstructMatch(RDKit::ROMol &query,bool useChirality=false){ RDKit::MatchVectType mv; - return SubstructMatch(*($self),query,mv,true,useChirality,false); + return SubstructMatch(*($self),query,mv,true,useChirality); }; std::vector > getSubstructMatch(RDKit::ROMol &query,bool useChirality=false){ RDKit::MatchVectType mv; - SubstructMatch(*($self),query,mv,true,useChirality,false); + SubstructMatch(*($self),query,mv,true,useChirality); return mv; }; @@ -95,7 +95,7 @@ SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(Match_Vect, std::vector< std::pair > getSubstructMatches(RDKit::ROMol &query,bool uniquify=true, bool useChirality=false){ std::vector mv; - SubstructMatch(*($self),query,mv,uniquify,true,useChirality,false); + SubstructMatch(*($self),query,mv,uniquify,true,useChirality); return mv; }; @@ -165,6 +165,7 @@ SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(Match_Vect, std::vector< std::pair > #include #include #include +#include %} #if SWIGCSHARP @@ -191,10 +192,21 @@ SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(UInt_Pair_Vect, std::vector< std::pair + +%template(SparseIntVecti32) RDKit::SparseIntVect; +%template(SparseIntVecti64) RDKit::SparseIntVect; +%include + + %include %template(TanimotoSimilarityEBV) TanimotoSimilarity; %template(DiceSimilarityEBV) DiceSimilarity; %template(DiceSimilaritySIVu32) RDKit::DiceSimilarity; +%template(DiceSimilaritySIVi32) RDKit::DiceSimilarity; +%template(DiceSimilaritySIVi64) RDKit::DiceSimilarity; +%template(TanimotoSimilaritySIVu32) RDKit::TanimotoSimilarity; +%template(TanimotoSimilaritySIVi32) RDKit::TanimotoSimilarity; +%template(TanimotoSimilaritySIVi64) RDKit::TanimotoSimilarity; diff --git a/Code/Demos/SWIG/java_example/CMakeLists.txt b/Code/Demos/SWIG/java_example/CMakeLists.txt index 124397621..eb7cae49a 100644 --- a/Code/Demos/SWIG/java_example/CMakeLists.txt +++ b/Code/Demos/SWIG/java_example/CMakeLists.txt @@ -5,10 +5,10 @@ find_package(JNI REQUIRED) INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS}) SET_SOURCE_FILES_PROPERTIES(RDKFuncs.i PROPERTIES CPLUSPLUS ON ) -SET_SOURCE_FILES_PROPERTIES(RDKFuncs.i OBJECT_DEPENDS ../RDKFuncs.i ) SET(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_SOURCE_DIR}/org/RDKit ) SET(CMAKE_SWIG_FLAGS -package "org.RDKit") +SET(SWIG_MODULE_RDKFuncs_EXTRA_DEPS ../RDKFuncs.i) SWIG_ADD_MODULE(RDKFuncs "java" RDKFuncs.i ../RDKFuncs.cpp) SWIG_LINK_LIBRARIES(RDKFuncs ${RDKit_Wrapper_Libs} ) @@ -33,5 +33,6 @@ ADD_CUSTOM_TARGET(RDKitJava ALL COMMENT "building jar" ) + INSTALL(TARGETS RDKFuncs DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/Code/Demos/SWIG/java_example/WrapperTests.java b/Code/Demos/SWIG/java_example/WrapperTests.java index d20a1f052..4c997d8c1 100644 --- a/Code/Demos/SWIG/java_example/WrapperTests.java +++ b/Code/Demos/SWIG/java_example/WrapperTests.java @@ -153,26 +153,68 @@ public class WrapperTests { assertTrue(v2.size()>0); assertTrue(v2.size()>v1.size()); } + @Test public void testFingerprints3() { + ROMol m1,m2; + m1 = RDKFuncs.MolFromSmiles("C1=CC=CC=C1"); + m2 = RDKFuncs.MolFromSmiles("C1=CC=CC=N1"); + SparseIntVecti32 fp1,fp2; + fp1=RDKFuncs.getAtomPairFingerprint(m1,2,6); + fp2=RDKFuncs.getAtomPairFingerprint(m1,2,6); + assertTrue(RDKFuncs.DiceSimilaritySIVi32(fp1,fp2)==1.0); + fp2=RDKFuncs.getAtomPairFingerprint(m2,2,6); + assertEquals(RDKFuncs.DiceSimilaritySIVi32(fp1,fp2),0.66667,.0001); + } + @Test public void testFingerprints4() { + ROMol m1,m2; + m1 = RDKFuncs.MolFromSmiles("C1=CC=CC=C1"); + m2 = RDKFuncs.MolFromSmiles("C1=CC=CC=N1"); + SparseIntVecti64 fp1,fp2; + fp1=RDKFuncs.getTopologicalTorsionFingerprint(m1); + fp2=RDKFuncs.getTopologicalTorsionFingerprint(m1); + assertTrue(RDKFuncs.DiceSimilaritySIVi64(fp1,fp2)==1.0); + fp2=RDKFuncs.getTopologicalTorsionFingerprint(m2); + assertEquals(RDKFuncs.DiceSimilaritySIVi64(fp1,fp2),0.3333,.0001); + } @Test public void testErrorHandling() { ROMol m1; - System.err.println("go"); m1 = RDKFuncs.MolFromSmiles("C1CC"); assertTrue(m1==null); - System.err.println("go2"); m1 = RDKFuncs.MolFromSmiles("c1cc1"); assertTrue(m1==null); System.err.println("ok!"); } - /* @Test public void testMemory() { + /*@Test*/ public void testMemory() { for(int i=0;i<1000000;i++){ - ROMol m1,m2; + ROMol m1; m1 = RDKFuncs.MolFromSmiles("C1=CC=CC=C1"); if((i%1000)==0){ System.err.println("done: "+i); } m1.delete(); } - }*/ + } + /*@Test*/ public void testMemory2() { + ChemicalReaction rxn; + rxn=RDKFuncs.ReactionFromSmarts("[OH][C:1]=[O:2].[N!H0:3]>>[N:3][C:1]=[O:2]"); + assertTrue(rxn.getNumReactantTemplates()==2); + assertTrue(rxn.getNumProductTemplates()==1); + ROMol r1,r2; + r1=RDKFuncs.MolFromSmiles("CC(=O)O"); + r2=RDKFuncs.MolFromSmiles("ClCN"); + assertTrue(r1.getNumAtoms()==4); + assertTrue(r2.getNumAtoms()==3); + for(int i=0;i<1000000;i++){ + ROMol_Vect rs= new ROMol_Vect(2); + rs.set(0,r1); + rs.set(1,r2); + ROMol_Vect_Vect ps; + ps=rxn.runReactants(rs); + if((i%1000)==0){ + System.err.println("done: "+i); + } + ps.delete(); + } + } static { try { System.loadLibrary("RDKFuncs"); diff --git a/Code/Demos/SWIG/python_example/CMakeLists.txt b/Code/Demos/SWIG/python_example/CMakeLists.txt index b267b830f..d57a4d0a4 100644 --- a/Code/Demos/SWIG/python_example/CMakeLists.txt +++ b/Code/Demos/SWIG/python_example/CMakeLists.txt @@ -2,9 +2,12 @@ FIND_PACKAGE(PythonLibs) INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) SET_SOURCE_FILES_PROPERTIES(RDKFuncs.i PROPERTIES CPLUSPLUS ON) -SET_SOURCE_FILES_PROPERTIES(RDKFuncs.i PROPERTIES SWIG_FLAGS "") +SET_SOURCE_FILES_PROPERTIES(RDKFuncs.i PROPERTIES SWIG_FLAGS "" +OBJECT_DEPENDS ../RDKFuncs.i ) + SET(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_SOURCE_DIR} ) +SET(SWIG_MODULE_pyRDKFuncs_EXTRA_DEPS ../RDKFuncs.i) SWIG_ADD_MODULE(pyRDKFuncs "python" RDKFuncs.i ../RDKFuncs.cpp) SWIG_LINK_LIBRARIES(pyRDKFuncs ${RDKit_Wrapper_Libs} ${PYTHON_LIBRARIES})