* improve handling of esters, amides, etc. in the v2 tautomer hash
Fixes#8090
* cleanup
* extend that logic to aromatic systems
* documentation in response to review
* First pass at approximate FP check.
* Tidy and Python wrapper.
* More tidying.
* Add addFP and subtractFP to binary file.
* Minor tidy.
* In splits code, check for duplicate fragmentations.
* Update test results.
* Tidy.
* Set configurable limit on number of fragments generated from query.
* Stash prior to trying counts fps.
* Stash count fps.
* Back to bit fingerprints again.
* Extra comment.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* remove no-op macros and dead code (pt 2)
* test failures due to whitespace changes?
* actually run the testFeatures tests
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* fix SetPositions when using strided numpy array
previously SetPositions assumed that the provided numpy array used contiguous-C stride patterns
* cast to a const pointer to avoid compiler warning
* For GetAtomsMatchingQuery, note that "Atom query options are given in the rdkit.Chem.rdqueries module"
* wording change
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Add timeout to searches.
* Correct docstring.
* Include chrono header.
* Get it compiling with gcc.
* And then clang didn't like it...
* Revert to tmpnam as msktemp isn't available on Windows.
* Response to review.
Run time no longer saved in SearchResults.
Timeout check not tied to size of results.
Made the test timeout shorter.
* Fix the Python wrapper.
* Shamelessly steal the better timeout method from PR8110.
* suggested changes
* be more conservative about what does not time out
the CI machines can be surprisingly slow
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Handle DOS files.
* Smaller test file.
Add DOS file to .gitattributes.
* Update Code/GraphMol/SynthonSpaceSearch/substructure_search_catch_tests.cpp
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
- str_to_c() should check the ptr returned by malloc for non-nullness before using it
- change has_coords() mol_pkl parameter to const
- use assert.equal in JS tests where possible
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* normalizeDepiction() should always center coordinates on the coordinate centroid, irrespective of the canonicalize parameter
* Update Code/GraphMol/Depictor/catch_tests.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* fix catch test
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Handle DOS files.
* Smaller test file.
Add DOS file to .gitattributes.
* Update Code/GraphMol/SynthonSpaceSearch/substructure_search_catch_tests.cpp
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Add RealValueVect.
* Add UniformRealValueGrid3D
* Add Molecular Interaction Fields (MIFs)
* line endings
* cherry-pick f1bc94a4c8
* format
* Adapt tests for python3.
* Adapt RealValueVector pickling for python3.
* Speed-up of MIF calculations.
* Bugfix in MIFDescriptors.cpp.
* all tests pass
* clean up some memory leaks
* update copyrights
* rename
* rename the library
* complete the rename
* lost file
* another forgotten file
* cleanup
* clang-tidy
* clang-tidy
* windows DLL builds work
* python wrapper and tests cleanup
* convert to catch2 testing
* switch RealValueVect to use std::vector
* remove obsolete friend
* - Replace explicit loops with stdlib implicit equivalents
- Replace explicit types with auto where possible
- Avoid unnecessary copy operations where possible
- Replace raw pointers with exception-safe unique_ptr
- Replace C-style #define with constexpr
- Replace C-style casts with C++ casts
- Replace C-style arrays with std::vector
- Avoid code duplication with templated operators
- Replace VdWaals class taking multiple atom type definitions and force-field name as string parameter with force-field-specific classes deriving from an abstract VdWaals class
- Replace x,y,z doubles with Point3D class where possible
- Removed unused (and untested) DistanceToClosestAtom class
- Renamed some variables and functions for better clarity
- Converted tabs to spaces
- Made the mol parameter in cube read/write functions optional for convenience
- Made the Python wrappers more pythonic (e.g., avoid C++-style passing objects as parameters which are modified in place)
- Implemented alternative Python class constructors using boost::python::make_constructor rather than with external non-class functions
- The Python wrappers taking a sequence of Point3D now take a sequence of sequences, such that the output of Conformer.GetPositions() can be passed
- Made the Python wrapper sequence parsing more robust
- Removed duplicated code from Python wrappers
* - avoid an unnecessary copy
* progress
* works
* more cleanup
* all tests pass
* changes in response to review
---------
Co-authored-by: dfhahn <dfhahn@users.noreply.github.com>
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* Allow fragments of aromatic rings to match.
* Use existing code for checking bond is in ring.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* - Fix#8029
- avoid unnecessary rounding errors in the JSON writer
- remove a warning when compiling MinimalLib without SubstructLIbrary support
* changes in response to review
* changes in response to review
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* make sure that loggers can be enabled, disabled, captured and tee'd from MinimalLib without issues
* changes in response to review
* change in response to review
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* Move atom labels round if they clash.
* Tidy.
* Re-work orientation logic.
Remove virtual fns from AtomSymbol.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* - Fix#8029
- avoid unnecessary rounding errors in the JSON writer
- remove a warning when compiling MinimalLib without SubstructLIbrary support
* changes in response to review
* changes in response to review
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* First pass at splitting molecule.
* Interim commit. Reading libraries from file in original format.
* Basic search seems to be working.
* Pattern fingerprint screening.
* Connector region heuristic.
* Fixed triazole (aromatic/non-aromatic connectors).
* Fix search with non-split parent query, where query is substructure of a single reagent.
* Remove duplicate hits by reaction/reagents used.
* Implement largest fragment heuristic.
* Extra test files.
* Read/write binary file.
Program for conversion from text format to binary format.
* Remove empty reagent sets on reading, probably due to synthon number counting from 1 rather than 0.
* Tidy SSSearch functions.
* Stash pending major surgery for triazole bug.
* Revert to using unique_ptr.
Correct use of reagent order.
* Function to summarise Hyperspace.
* Delay building hits till end and put cutoff on number.
* Earlier bale-out in getHitReagents.
* Streamline checkConnectorRegions.
* Remove free functions for search.
* Correct name of Python test.
* First stage of Python wrappers.
* Rename namespace.
* Parameters object.
* Mysterious windows export thing.
* Fix bug - not matching number of connectors in fragment and synthon.
* Back like it was. The connector count wasn't the problem.
* Put the substructure results into their own class.
* gcc 14 didn't like my use of std::reduce.
Update expected test results.
* Remove write statement.
* Tidy.
* Tidy.
* Enable random sample of hits.
* Test that complex SMARTS works.
Update Python wrappers.
* Rename Hyperspace to SynthonSpace.
* More renaming.
Python test.
* Enable Python test.
Remove write.
* Plug memory leak.
* Response to Greg's initial look.
* More response to Greg's initial look.
* get the windows DLL builds working
* Do away with mutable.
Purge a few more uses of reagent in favour of synthon.
Remove the c++ exe for converting text to binary databases.
* Better Synthon c'tor.
* More feedback from Greg.
* Tidy the Python wrapper.
* Remove tags from catch tests.
* Don't allow copying of SubstructureResults.
* Revert to allow copying of SubstructureResults. The Python wrapper needs it.
* Refinements based on CLion/clangd suggestions.
* Allow for map numbers in connectors in space file.
* Refactor to make the searcher a separate class from the space.
* Transfer Greg's review suggestions from Hyperspace merge.
* First cut of fingerprint searcher.
* Python wrapper.
Some tidying.
* Better random selection.
* Fix bug in preparing frags for fingerprints.
Re-factor.
* Minor-refactor.
* Sort hits by similarity if available.
* Option for a few different fingerprint types. Pending a better solution.
* Write fingerprints to binary file.
* Use any fingerprint generator for similarity searching. No Python wrapper yet.
* Python wrapper.
* Change random selection to use distribution weighted by number of hits in each reaction.
* Lots of suggestions from CLion/clang.
* Use boost discrete_distribution for cross-platform consistency.
* Tidy test up.
* Try boost rng as well.
* uniform_int_distribution to boost also.
* Small tidy.
* Method to write enumerated library.
* Windows export thing.
* Windows export thing.
* Allow for commas in tab-separated fields.
* win64 dll builds now work
* More aliphatic synthon, aromatic product joy.
* Force ring finding if it hasn't been done.
* Fingerprint hits not being sorted if maxHits reached.
* Remove debugging write. Doh!
* Response to review of SynthonSpace2.
* Missed one.
* Add test file.
* Hand merge Greg's #8050.
* Discard nodiscard.
* Move include of export.h inside include guards.
* Response to review.
* Fix memory leaks.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>