* Coulomb Mat v0.1 issue on linux
* use static 3D molecule instead of generating 3D conf for testing
* fix tokenize
* fix issue removeHs
* update test for sdf 3D molecule
* strip things back to just do the basic coulomb matrix
* add RDKIT_DESCRIPTORS_EXPORT
* fix 3 typos and a missing const
* Update rdMolDescriptors.cpp
Co-authored-by: greg landrum <greg.landrum@gmail.com>
Co-authored-by: Paolo Tosco <paolo.tosco.mail@gmail.com>
* [WIP] Add BCUT 2D descriptors
* Use the standard RDKit license
* Add Check for EIGEN3
* Add vector param, fix some formatting, remove debug print
* Add make_burden function, optimize symmetric eigenvalues
* Add some tests, finalize API
* Make the python API return tuples
* Updates docs
* Remove unused variable
* Fixed up C++ tests
* Remove std::pair wrapper, don't build BCUT when missing EIGEN
* Add bigger test case for BCUTs
* Accidentally removed the wrong code
* backup
* backup
* backup
* getting close to v0.1
* switch to using node indices
* add pruning and flattening
* support multiple mols
* example notebook
* backup
* initial commit
Just includes the basic API and flatten
* add the pruning step
* add removeAttachmentPoints()
* add makeScaffoldGeneric()
* improve compilation speed by adding catch_main.cpp
* add getMolFragments()
* doc cleanup
* actually add the network building code
* first pass at python wrapper
* allow edges to be nicely converted to strings
* get node counts working
* backup python notebook
* switch example notebook to use wrapped C++ code
* add BRICS fragmentation option
* fix a bug with removing attachment points to aromatic heteroatoms
* add provisional attachment point merger to notebook
* fix a bug with includeScaffoldsWithAttachments=false
* backup of efforts to get this working on windows
* backup of efforts to get this working on windows
* does not work. backup
* Fix a substructure crash on Windows
* re-enable tests
* adjust to the new BRICS form
* in-code documentation
* more doc updates
* reformat
* change the string output format for edges
* remove old python implementation
* remove obsolete test
* include a generic scaffold for the pruned structure too
* default to keepOnlyFirstFragment=false with BRICS params
* bug in removal of attachment points from generic scaffolds
* more testing
* support working from std::shared_ptr as well as boost::shared_ptr
* more testing
* disable debug printing
* use memo-ization in getMolFragments() to avoid duplicate work
* add SWIG wrapper and basic testing
* add define for RDK_USE_BOOST_SERIALIZATION
* add serialization at the C++ level
* add a string ctor for a scaffold networks
* add pickle support on the python side
* formatting
* remove old notebook
* move the fantastically useful iterable_convertor to RDBoost/Wrap.h
* expose parameter constructor with std::vector<std::string>
* add scaffoldnetwork to documentation
* add overrides for what()
* translation fot KeyErrorException; update tests
* Switch all exceptions to `const char *` as a return type from message() (#4)
* switch return type of message() from std::string to const char *
* adjust one test to the new return type from message()
remove unnecessary verbosity from some tests
* fix cartridge build: update call to message().c_str()
* rebase agains master; fix another issue in cartridge build
* add deprecation note for message() and getMessage()
* amend Release notes
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* run clang-tidy with readability-braces-around-statements
clang-format the results
clean up all the parts that clang-tidy-8 broke
* fix problem on windows
* disable builds of the StructChecker code by default
* operator"" _smarts() doesn't need to catch sanitization errors
* remove unused function
* turn back on some tests that shouldn't have been disabled
* Remove unused code from SMARTS parser and simplify a bit
SmilesParseOps::AddFragToMol is now used only from the SMARTS parser, so we can simplify the API
* Removes obsolete special case code for SMARTS
This was relevant when organic atoms in SMARTS queries were stored as two-part queries.
* improve SMARTS testing
make sure we can generate SMARTS from all the examples and then parse that again.
* Fixes#2814
* Fixes#2815
* some additional smarts tests to improve coverage
* test copy ctor and getPos
* remove obsolete test_list files
* include tests for the morgan invariant generators
* more cleanups and coverage improvements
* remove files that were mistakenly added
* remove all of the "from __future__" imports
* remove the first batch of rdkit.six imports/uses
* next step of rdkit.six removal
* removing xrange, range, and some maps
* next round of removals
* next round of cleanups
* fix inchi test
* last bits of "from rdkit.six" are gone
* and the last of the six stuff is gone
* strange importlib problem
* Addition of CustomProp_VSA
* Small fix in CustomProp_VSA
* bins made constant in calcCustomProp_VSA
* small fix in calcCustomProp_VSA
* dependency on MolData3Ddescriptors removed
* 3D customs Descriptors
* some cleanups
* adding tests for 3D customs
* add WHIM out files
* fix div by zeros and add testcases
* add back a local change
* run clang-format
* switch to fabs
* EEM implementation
* EEM
improve speed by a factor of 2
remove lapack
* Rename eem.out to eem1.out
* Add new test_data
* Delete set00.sdf
* Add files via upload
* Update testEEM.cpp
add testEEM2 not sure rdkit can read the zip file not tested... github cannot handle this large sdf file
* Add files via upload
* Delete setEEM2.sdf.zip
* Add files via upload
* Update testEEM.cpp
* cleaning EEM implementation
* few modifications on EEM imp
* remove compiler warnings; make tests actually test
* more cleanup
* unique_ptrs instead of bare ptrs
* more cleanup
* cleanup to get non-VC++ builds to work
* 3D Descriptors Dragons
* stripped down, not yet working
* get this building on a non C++-11 compiler
* move the python test to the python directory
* move the python test to the python directory
* add the python test
* now at least those tests runn
* warning comment
* some basic refactoring and cleanup
* get python wrapper "working" (completely untested)
* fix Name
* fixing AutoCorr & RDF
* AutoCorr test added
* RDF reviewed based on AutoCorr comments
* fix Morse code
* Morse reviewed
* Correct Morse & start Getaway
* correct MORSE test
* start Getaway clean up
* simplification of Whim
* better
* fix Getaway
* fix RCON
* merge repaired
* adding Dragon 2D autocorrelations descriptors
* fix the 3D autocorrelation descriptors based on the modification in
Dragon.
* Adding the 2D autocorrelation descriptors (no need of Eigen
dependency for this one)
* Adding 2D test case
* IState … no idea for the moment
* there is an error in 2D computation (memory error ???)
* fix the IState for molecules with Hs
* need to use getTotalNumHs(true) not getTotalNumHs()
* also need to remove Hs in both dv and d!
* fixing Rcov values
I fix the Rcov values
* fix Getaway
* remove push_back
* remove call to sum
* improve tests
* fix getaway
* adding precision parameter to GETAWAY
* adding rouding (1e-3)
* fix WHIM
* use void in declarations of function
* update MolDescriptors link
* remove print option in WHIM
* fix python wrapper to 3D descriptors.
- all modifications reduce computation time by a factor of 3!
* final fix for Getaway
* all output are fixed except the 2 first values due to clustering
approach.
* cluster cannot be fixed du tu float precision issue between Java &
c++
* best fix of ITH and ISH
* use the same algorithm as in Dragon 6 but there is still a deviation
* remove std::move
* std:move only works on c++ 11
* fixing issue based on Greg Comments
* auto2D still not working on my env
* update 3d test.py
* auto 2D not working after the first loop test
* tighten up the tests
* change name
* update, but still does not pass
* make this run (though it does not work)
* re-enable test3D
* some cleanup
* add GETAWAY test data. Note that the tests fail
* fix the ATS and ATSC autocorrelation 2D
Broto Moreau and Geary autocorrelation are not correct again a specificity of Dragon to compute them. The result are not consistant with Padel because we use the relative weigth not in Padel.
* one minor change to get things to compile
* fix the M & G matrix computation
fix inversion in the computation of the equations for both M & G matrixes
* update autocorr2d tests
* 192 examples
* fix issue in cluster 0.01 0.009 case
this is not correct all the cases
* update GETAWAY expected values to reflect the fact that we cannot reproduce the literature values exactly
fix a leak in GETAWAY
* fix the negative values in gamma
this is strickly the implementation that we find in the book molecular descriptors for chemoinformatics (except the case where an atom is already in the axis in this case it should be added in the symetric list which is not the case in this implementation)
* Update WHIM.cpp
adding the axis atoms to the symetrical list
* update WHIM tests
* add AUTOCORR2D to MolDescriptors and the python wrappers
* start adding tests
* test the python versions of the new descriptors
* update list of descriptors
* 3D Descriptors Dragons
* stripped down, not yet working
* get this building on a non C++-11 compiler
* move the python test to the python directory
* move the python test to the python directory
* add the python test
* now at least those tests runn
* warning comment
* some basic refactoring and cleanup
* get python wrapper "working" (completely untested)
* fix Name
* fixing AutoCorr & RDF
* AutoCorr test added
* RDF reviewed based on AutoCorr comments
* fix Morse code
* Morse reviewed
* Correct Morse & start Getaway
* correct MORSE test
* start Getaway clean up
* simplification of Whim
* better
* fix Getaway
* fix RCON
* merge repaired
* adding Dragon 2D autocorrelations descriptors
* fix the 3D autocorrelation descriptors based on the modification in
Dragon.
* Adding the 2D autocorrelation descriptors (no need of Eigen
dependency for this one)
* Adding 2D test case
* IState … no idea for the moment
* there is an error in 2D computation (memory error ???)
* fix the IState for molecules with Hs
* need to use getTotalNumHs(true) not getTotalNumHs()
* also need to remove Hs in both dv and d!
* fixing Rcov values
I fix the Rcov values
* fix Getaway
* remove push_back
* remove call to sum
* improve tests
* fix getaway
* adding precision parameter to GETAWAY
* adding rouding (1e-3)
* fix WHIM
* use void in declarations of function
* update MolDescriptors link
* remove print option in WHIM
* fix python wrapper to 3D descriptors.
- all modifications reduce computation time by a factor of 3!
* final fix for Getaway
* all output are fixed except the 2 first values due to clustering
approach.
* cluster cannot be fixed du tu float precision issue between Java &
c++
* best fix of ITH and ISH
* use the same algorithm as in Dragon 6 but there is still a deviation
* remove std::move
* std:move only works on c++ 11
* fixing issue based on Greg Comments
* auto2D still not working on my env
* update 3d test.py
* auto 2D not working after the first loop test
* tighten up the tests
* change name
* update, but still does not pass
* make this run (though it does not work)
* re-enable test3D
* some cleanup
* add GETAWAY test data. Note that the tests fail
* fix the ATS and ATSC autocorrelation 2D
Broto Moreau and Geary autocorrelation are not correct again a specificity of Dragon to compute them. The result are not consistant with Padel because we use the relative weigth not in Padel.
* one minor change to get things to compile
* fix the M & G matrix computation
fix inversion in the computation of the equations for both M & G matrixes
* update autocorr2d tests
* 192 examples
* fix issue in cluster 0.01 0.009 case
this is not correct all the cases
* update GETAWAY expected values to reflect the fact that we cannot reproduce the literature values exactly
fix a leak in GETAWAY
* fix the negative values in gamma
this is strickly the implementation that we find in the book molecular descriptors for chemoinformatics (except the case where an atom is already in the axis in this case it should be added in the symetric list which is not the case in this implementation)
* Update WHIM.cpp
adding the axis atoms to the symetrical list
* update WHIM tests
* add AUTOCORR2D to MolDescriptors and the python wrappers
* start adding tests
* test the python versions of the new descriptors
* update list of descriptors
* update .gitignore
* foundation for 3D descriptors
move PBF into core
* cleanup work
* a bit more cleanup
* move the principal moments calc to MolTransforms
* cleanup
* cleanups
* add caching of the principal moments and values
* do not include the 3D descriptors in MolDescriptors.h
* the properties are computed
* add PMI descriptors and tests
* add tests for NPR descriptors
* return 0 when the largest PMI is zero
* PMI edge case tests
* NPR edge case tests
* PBF edge case tests
* PBF edge case tests
* more edge cases
* add a few more 3d descriptors
* add defns to docs
* tests for the new descriptors
* add versions to new descriptors
* add 3d descriptors to python wrapper
* add eigen support to the travis build
* try to get non-windows builds working
* remove computeCovarianceMatrix() from java wrapper
* make pmi property names "private"
* Adds a generic Property Calculation API
Property mw(Property::MW);
Property logp(Property::ALOGP);
// User based function
struct MyPropertyFunction : public PropertyFxn {
double compute(const ROMol &mol) const {
return rdcast<double>(mol.getNumAtoms());
}
bool isAdditive() const { return true; }
}
// Make the a num atom property
boost::shared_ptr<PropertyFxn> atomfxn(new MyPropertyFxn);
Property numAtoms("NumAtoms", atomfxn);
double alogp = logp.computeProperty(mol);
double nAtoms = numAtoms.computeProperty(mol);
And a ProperFilter API
// Molecular weight filter 0 ... 500.
PropertyFilter mw(PropertyFilter::MW, 0., 500.);
// log p Filter -5 ... 5
PropertyFilter logp(PropertyFilter::ALOGP, -5.0, 5.0);
// User based function
struct MyPropertyFunction : public PropertyFxn {
double compute(const ROMol &mol) const {
return rdcast<double>(mol.getNumAtoms());
}
}
// add num atom property 0. ... 50.
boost::shared_ptr<PropertyFxn> atomfxn(new MyPropertyFxn);
PropertyFilter natoms("NumAtoms", 0., 50., atomfxn);
if (natoms.accepts(mol)) {
// molecule is ok
} else {
// molecules is bad
}
* Adds missing includes
* Fixes g++ access to class based enums
* Updates to new API, adds better property registry
* Adds a generic Property Calculation API
Property mw(Property::MW);
Property logp(Property::ALOGP);
// User based function
struct MyPropertyFunction : public PropertyFxn {
double compute(const ROMol &mol) const {
return rdcast<double>(mol.getNumAtoms());
}
bool isAdditive() const { return true; }
}
// Make the a num atom property
boost::shared_ptr<PropertyFxn> atomfxn(new MyPropertyFxn);
Property numAtoms("NumAtoms", atomfxn);
double alogp = logp.computeProperty(mol);
double nAtoms = numAtoms.computeProperty(mol);
And a ProperFilter API
// Molecular weight filter 0 ... 500.
PropertyFilter mw(PropertyFilter::MW, 0., 500.);
// log p Filter -5 ... 5
PropertyFilter logp(PropertyFilter::ALOGP, -5.0, 5.0);
// User based function
struct MyPropertyFunction : public PropertyFxn {
double compute(const ROMol &mol) const {
return rdcast<double>(mol.getNumAtoms());
}
}
// add num atom property 0. ... 50.
boost::shared_ptr<PropertyFxn> atomfxn(new MyPropertyFxn);
PropertyFilter natoms("NumAtoms", 0., 50., atomfxn);
if (natoms.accepts(mol)) {
// molecule is ok
} else {
// molecules is bad
}
* Adds missing includes
* Fixes g++ access to class based enums
* Updates to new API, adds better property registry
* Fixes merge error
* Removes unused unordered_map include
* Adds calcClogP calcMR as functions.
* PropertyFxn ->PropertyFunctor, adds Queries::Query based queries.
* Adds Python PropertyFunctors (can’t be used as queries yet)
* Exposes PropertyRangeQueries
* Adds doc strings
* Throws error if stereo is not assigned.
* Adds molecule annotation.
Major changes in definition relative to the original GPS calculator:
Bonds linking ring systems:
- Single bonds between aliphatic ring Cs are always rotatable. This
means that the central bond in CC1CCCC(C)C1-C1C(C)CCCC1C is now
considered rotatable; it was not before
- Heteroatoms in the linked rings no longer affect whether or not
the linking bond is rotatable
- the linking bond in systems like Cc1cccc(C)c1-c1c(C)cccc1 is now
considered non-rotatable