* do not write extra separators
* add a test
* update tests
* Update Code/GraphMol/SmilesParse/CXSmilesOps.cpp
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Fix deprecated literal operator syntax for C++14 compliance
Remove whitespace between "" and identifier in user-defined literal
operators to comply with C++14 standard. Fixes warnings with newer
compilers (emscripten 4.0+, clang 15+) that treat this as deprecated.
Changed operator"" _name to operator""_name for:
- SmilesParse.h: _smiles, _smarts
- ReactionParser.h: _rxnsmarts, _rxnsmiles
- FileParsers.h: _ctab, _mol2, _pdb
* Fix BOOST_CONTAINER_NO_LIB macro redefinition warnings
Add #ifndef guards before defining BOOST_CONTAINER_NO_LIB in Writer.cpp
and Parser.cpp to avoid redefinition warnings when the macro is already
defined via compiler flags in emscripten 4.0+ builds.
Warnings fixed:
- Writer.cpp:32: 'BOOST_CONTAINER_NO_LIB' macro redefined
- Parser.cpp:38: 'BOOST_CONTAINER_NO_LIB' macro redefined
BestAlignmentParams is an aggregate; paren-init (T(...)) is rejected by Apple Clang (Xcode) and only works on some compilers.
Use brace-init (T{...}) for portable initialization.
* move molzip to its own file
* basics working
* more testing
* another test
* minor
* fix doxygen comment format
* fix alignment with co-directional exit vectors;
some modernization
* JSON parsing
python wrapper
* response to review
* response to review
* explicitly test that the first frag does not move
---------
Co-authored-by: = <=>
* atropisomer bond atoms are checked explicitly for SP2 hybridization
before, we checked only on totalDegree = 2 or 3,
but this causes false positives for something like a chiral sulfoxide
since the S is tetrahedral (sp3) but has only 3 substituents.
the hybridization code relies on totalDegree,
but modified to include and making sure to include conjugation
so while this is more expensive per molecule, it is closer to intent
Closes#8973
* assert we got no warnings on sulfinamides
* cleanup
* bring back degree based check, quick pass so that we don't run expensive calc on all mols with wedge bonds
* bring conformer back
* refactor getting initial bond directions
* fix atom dir counts
* move lambdas to separate functions
* restore increments
These are ok: they mean how many double bonds care about this direction,
not just whether it has been set or not.
* Mostly working.
* Clear out debugging writes.
* Avoid a mol copy.
* Left some debugging in.
* Move the fix into fragmentOnBonds.
* Add test.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* Add MolTransforms library.
* Transform to inertial frame of reference before overlay.
* Vital fix of typo in comment.
* Tidy up debugging cruft.
* Comment in CMakeLists.txt.
* Fix python wrappers.
* Extra tidy.
* Response to review.
* Tidy includes.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* fix a bug in copySelectedAtomsAndBonds()
we need to clear computed properties on the atoms here
* prune back the atom properties written to CXSMILES
* update minimallib tests
* extra SSS match functions for atoms/bonds
initial implementation and testing
* add baseline to test
* add a functor for matching atom coords
* support the extra checks in python
* refactor the way the python callbacks are handled
* test tolerances
* expose the AtomCoordsMatcher to python
* allow the extra checks to override the default matching
---------
Co-authored-by: = <=>
* change count-type from pointer to ints to vector
* change type from pointer to ints to vector
* change type from pointer to ints to vector
* change type from pointer to ints to vector
* change type from pointer to ints to vector
* use std::fill only when necessary
* delete unnecessary includes
* reformat
* re-enable a test that was accidentally disabled a few years ago
* finish getting rid of the raw pointers
* include chrono
* changes from review
---------
Co-authored-by: Anna Brünisholz <anna.bruenisholz@gmail.com>
* Create a function to extract some specified atoms from a ROMol as a new ROMol by creating new graph (#8742)
This adds a new api, `RDKit::MolOps::ExtractMolFragment`, to allow efficient
extractions of mol fragments from large mols. Compared to the approach where
we delete "unwanted" atoms/bonds from the input mol, this api is faster for
small mols (about 2x faster) and at least 3x faster for big mols
(was 10x faster for "CCC"*1000).
* clang-format
* review comments
* cleanup
* Consolidate copying subsets of molecules
* Readd missing tests
* Update comment to restart build
* Remove missing test
* Remove debugging comment, fix warnings
* Fix warnings on gcc11
* Add docs
* Make vector<bool> dynamic_bitset<>
* Update copyright
* Add swig wrappers
* Use new designated constructor API
* Fix windows builds
* Change enum values from unsigned int to integer
* Fix unsigned int variable
* Update Code/GraphMol/Wrap/test_subset.py
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Update Code/GraphMol/Subset.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Update Code/JavaWrappers/gmwrapper/src-test/org/RDKit/ChemTransformsTests.java
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Reponse to review
* Fix documentation
* Remove comments
* Remove unnecessary comments
* Fix one liners
* Change assertion to be clearer (and not one-liners)
* Run clang-format
---------
Co-authored-by: Your Name <you@example.com>
Co-authored-by: Hussein Faara <hussein.faara@schrodinger.com>
Co-authored-by: Brian Kelley <bkelley@glysade.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* try to reduce the number of valence combinations by checking neighbour valence and bonding
* fixed error message. Remove test that fails now because determineBondOrders finishes too quickly.
* cleanup
* adjust checking
* fix building
* add interrupt test back in but use a molecule that still takes a bit of time.
* improve error messaging
* change "test interrupt" to use xyz
* fix for atoms without valence information. and apply suggestions
* Update Code/GraphMol/DetermineBonds/DetermineBonds.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* first pass at allowing Hs to be ignored in getBestRMS()
* add support in getAllConformersBestRMS()
* do getBestAlignmentTransform()
* cleanup, error checking, and a fix
* this is more painful than it seems like it should be
* add python wrappers and tests
* response to review
* some optimizations of AlignPoints()
still should do some benchmarking to see how much of a difference the changes make
* remove unused variable
---------
Co-authored-by: = <=>
* move test to catch2
* fix one broken test
* make some stuff constexpr
* refactor some checks involving exceptions
* replace CHECK_INVARIANT
* replace CHECK_INVARIANT
* clean up commented out debug logging
* initialize var
* remove redundant REQUIRE_MSG
* add function to convert embedParams to json
* add catch test
* add function to python wrapper
* test python function
* update copyright
* undo formatting and cleanup
* more cleanup
* remove the map flag and added round trip
* add bounds mat output
* run clang-format
* Add many new c++ catch2 performance benchmarks.
* inline splitmix64 from boost, splitmix64 is not always available in boost. fun fact, this version is ~twice as fast
* reduce intensity of memory pressure test, target 200MB usage.
* new bench compound; accept suggestion from code review
* bench MolToCXSmiles
* Update Code/Bench/stereo.cpp
* impl first part of the suggestions from code reveiw
* impl second part of the suggestions from code reveiw