* Do not reset the ringInfo information when adding bonds
This call was inconsistent (for example, the version of addBond() in ROMol did not do it)
and is unnecessary since the standard assumption is molecules need
to be re-sanitized after adding atoms and bonds
* response to review
clear the property cache on atoms after adding a bond.
* add a property cache update to the reaction runner
* add something to the release notes
* Fixes#8379
* check in some working tests
* test passes
* test passes
* test passes
* test passes
* test passes
* ensure that the invariants flush the streams on failure
* tests pass
* test passes
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* tests pass
* Fixes#8391
* tests pass
* fix a test with legacy
not clear why this was not causing problems before
* make a test work
* Fixes#8396
* gcc builds work
* fingerprint tests pass
* mention backwards incompatible change
* fix a problem with FindMolChiralCenters
* more testing details
* enable the test status output
* Fixes#8432
fix a bug in double-bond stereo handling for template matching
* all depictor tests pass
* use the new-stereo chiral ranks in the depiction code
* always assign new-stereo chiral ranks
* make _ChiralAtomRank a computed property
This is analogous to _CIPRank
* tweak to the way the atom ordering is computed for 2D coordinate generation
* update two expected results
* backup
* response to review
* tests pass
* tests pass
---------
Co-authored-by: = <=>
* simple modernization
* more
* done with RWMol for this pass
* the ROMol.cpp variant
* Atom
* minor change to bond
* simplify Conformer
* monomerinfo, queryatom, querybond
queryatom and querybond cpp files still need to be done
* typos
* revert a dumb change
* suggestion from review
* Add private functions for batch removal of atoms/bonds
* Reset the unique_ptr not the bitvector
* Remove unused variable
* Forgot to reset stero atoms
* Remove unecessary post batch edit check
* Set min_idx to the number of bonds, this makes it a sentinel
* Don't need rdcast
* Responses to review
* Removed unused variable
* Add missing braces
* Consolidate bond removal loops
---------
Co-authored-by: Brian Kelley <bkelley@relaytx.com>
* insert stereogroups
* insert Substance Groups
* fix ownership, bond indexes
* add test
* fix comparison signednedss
* update test
* Brian's suggestion
* allow more than one ABS group
* fragmentatin of mol loses any sgroups
* removed unneeded test
* Fixes#7071
* simplification. tests do not pass
* Changed test for sgroup retention as per PR review
* Fix testing errors
* attempt to get CI windows to build
* removed files incorrectly committed, and removed code no longer needed
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* atropisomer handling added
* fixed non-used variables, linking directives
* BOOST LIB start/stop fixes, linking fix
* Fixes for RDKIT CI errors
* minimalLib fix
* changed vector<enum> for java builds
* check for extra chars in CIP labeling
* removed wrong deprecated message
* fix ostrstream output error?
* restored _ChiralAtomRank to lowercase first letter
* changes for merged master
* Fixed catch label for new Catch package
* update expected psql results
* get swig wrappers building
* restore MolFileStereochem to FileParsers
* fix java wrapper for reapplyMolBlockWedging
* some suggestions
* move a couple functions out of Bond
* Merge branch 'master' into pr/atropisomers2
* merged master
* Renamed setStereoanyFromSquiggleBond
* atropisomers in cdxml, rationalize atrop wedging, stereoGroups in drawMol
* fix for CI build
* attempt to fix java build in CI
* attempt to fix java build in CI #2
* New routine to remove non-explicit 3D-geneated chirality
* changed to use pair for atrop atoms and related bonds
* Changes as per PR reviews
* PR review respnses
* PR review reponse - more
* Fix merge from master
* fixing java ci after merge
* Updated the help doc for atripisomers
* update the atropisomer docs
* improve the images
* add the source CXSMILES
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Fix vulnerabilities found by fuzzer.
* Fix Typo in RWMol.cpp
* Update RWMol.cpp
This is an attempt to double check where the test failure is coming from.
* Update RWMol.cpp
Re-adding changes to test tests.
* First stab at disconnecting organometallics the Syngenta way.
* Add support for Li and Na compounds, with tests.
* Correct docstrings.
* Add -1 valence to sodium.
* Add changes from PR 5997.
* Move declaration of disconnectOrganometallics.
* Re-factor tests for disconnectOrganometallics to read V3000 files rather than hard-code in file.
* Add optional options to constructor.
* Python wrapping for disconnectOrganometallics.
* Python tests.
* Correct docString.
* Test using in place overload of disconnect free function.
* options_ should not be a reference.
* Re-work the wrappers.
* Added test MOL files.
* Correct charge on iron atoms.
* Fix tests for charged iron.
* Added some more test complexes.
* Port Marco's oxidation number Python to C++ Descriptor.
* Rename functions.
* Another test.
* Python wrappers.
* Comment in test.
* Throws exception if atom-based function called with non-kekulized parent.
* Fix typo.
* Allow potassium as well.
* Whole molecule calculations for oxidation number only.
Rename prop to OxidationNumber.
* Add OxidationNumber to common_properties.
* Extra comment.
* When deleting atom, update any ENDPTS props on bonds.
Copied in from stale PR ExtraDoc.
* Added hapticBondsToDative with python wrapper.
* Extra test.
* Re-factor endpts parsing.
* Typo.
* Add function for haptic end points inc. Python wrapper.
* Add dative bonds in separate step.
* C++ version of dativeBondstoHaptic.
* Update test mols.
* Python wrapper.
* Fix indents in Python test script.
* Corrected expected test result.
* Only do non-metal to metal conversion of single bond to dative if the explicit valence of the non-metal allows it.
* Fix test broken in a non-material way by previous change.
* Export for DLL.
* Remove redundant function declaration.
* Dave hates Windows.
* Move hapticBondEndpoints to Molops::details.
* And take it out of the Python wrappers.
* Run yapf on reformatted test script.
* Get the DLL builds going.
* addDativeBond -> addHapticBond.
* Batch edits.
* Position arithmetic.
* setQuery.
* Dummy positions for all confs.
* Fix tests for dummy positions for all confs.
* Move tests to catch_organometallics.cpp.
* Modern docString.
* Change member variable names.
* sProp length, bonus batchEdit.
* Add options object to disconnectOrganometallics.
* Tidied license.
Atom precondition.
* GetIntProp.
* Test opts aren't defaults.
* Python wrapper for disconnectOrganometallics with options.
* Minor edit.
* Slightly random attempt to fix Java build.
* Response to review.
* Another stab at the doc strings.
---------
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* RWMol: replace atom in stereo groups
Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36998, a
use-after-free in initFromOther.
* Fix out-of-bounds write in iterateCIPRanks
If the rank has not changed in the current iteration, the cipEntries
vectors might not have increased in size. Accessing `numIts + 1`
resulted in an out-of-bounds write. This commit skip the cipEntries
update when the rank is unchanged.
Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28660
* Fix use of uninitialized values in MolSGroupParsing
`stream >> count` may silently fail without an exception. In that case,
`count` was uninitialized but used. This commit initalizes `count` to 0,
as well as other variables that may be read without being initialized.
Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25220
Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=25225
* Fix vector size cast in streamReadVec
In 32-bit systems, the implicit conversions from 64-bit to a 32-bit
size_t could lead to an underallocation of the vector. This would follow
by a out-of-bounds write while trying to populate the vector. Now, the
code throws an exception in case of a cast that would change the size.
Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28034
* RWMol: improve atom replacement in stereo groups
This code is cleaner and more efficient.
* Add test for replaceAtom and stereo groups
* stop removing substance groups with replaceAtom()
change default for keepSGroups argument to replaceBond()
* enable logging output for the fileparserscatch
* basics of parsing SMARTSQ SubstanceGroups
* Fixes#4476
test coming in the next commit
* handle multi-atom SMARTS as recursive
more testing
Test #4476
* a bit of cleanup
* get the tests working
* additional testing
* Update Code/GraphMol/FileParsers/MolFileParser.cpp
Co-authored-by: Ric <ricrogz@users.noreply.github.com>
Co-authored-by: Ric <ricrogz@users.noreply.github.com>
* make sure atom and bond bookmarks survive replaceAtom/Bond
* fixes oss-fuzz #30572
* fix possible memory-access error in error reporting
* more defensive deserialization
* switch that recursive smarts error handling to not use an exception
* backup
* simple first pass, passes all tests
* cleanup a bunch of existing uses
* ensure that we can safely add atoms/bonds while in edit mode
* add context manager on python side
* handle exceptions properly in those
* changes in response to review
* remove include from headers
* update implementation files
* completely remove BOOST_FOREACH (#7)
* convert those changes to use auto
* get rid of all usage of BOOST_FOREACH
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* run clang-tidy with modernize-use-default-member-init
* results from modernize-use-emplace
* one uniform initialization per line
otherwise SWIG is unhappy
Co-authored-by: Brian Kelley <fustigator@gmail.com>
* Progress on #3168
* Fixes#3167
* Fixes#3169
* deal with CBONDS too
* test PATOMS
* Fixes#3175
* a bit of code simplification and test updates
still needs more testing
* more testing
* handle s-group hierarchy
also a couple of other changes in response to the review
* add forgotten test file
* changes in response to review
* 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
* Implementation of SGroups
* remove sample files test
* update gitignore with test outputs
* fix RevisionModifier
* re-enable tests
* backup commit; things seem to work so far
* some refactoring; obvious s group tests pass now
* more refactoring
* everything now out of the public API
* not sure why this was still in there
* rename functions; all tests now pass
* remove getNextFreeSGroupId; readd comment in copy SGroups
* clang-format
* squash-merge current master
* squash merge master
* Address comments on PR
- Update to current master.
- Move SGroup parse time checks to SGroupChecks namespace.
- Store SGroups in ROMOl as vector<SGroups>.
- SGroup methods return referenes instead of pointers.
- Use atom/bond/sgroup indexes for properties instead of pointers.
- Have SGroups inherit from RDProps; move properties to RDProps.
- Remove trivial/unused methods.
- Add a link to the SD specification atop SGroup.h
* add a couple test files
* backup
* first pass at some theory documentatin
* it's a draft
* Update enhanced stereochemistry documentation
Adds initial target use case and caveats about the tentative
nature of the current implementation.
* Support read/write of molfile enhanced stereochemistry
This includes reading and writing of enhanced stereochemistry
from v3000 molfiles (sdf). Enhanced stereochemistry encodes
the relative configuration of stereocenters, allowing
representation of racemic mixtures and compounds with
unknown absolute stereochemistry.
It does not include:
* Python wrapping
* invalidation of the enhanced stereochemistry
* use of enhanced stereochemistry in search
* depiction of enhanced stereochemistry.
* Update to reflect changes from #1971
* change names of enum elements to allow compilation in VS2017
I think it's also clearer to do things this way
* Addressed most review comments.
* Run missed test "testEnhancedStereoChemistry"
* In tests, added size checks to group equality checks
* Updated copyright statements
* Deleted mol created for a test
* Use perfect forwarding in RWMol::setStereoGroups()
* use references for stereo groups that are checked in write and pickle
* Updated stereogroup.h in hopes of fixing compilation on Windows.
* clang-format
* try allowing a switch to boost regex and requiring it for g++-4.8
* do a better job of that
* typo
* Code review comments. Updated Copyright notice.
* When an atom is deleted, delete stereo groups containing it.
Also updates StereoGroup toUse accessors instead of
constant member attributes. This allows move of StereoGroups.
* RDKit style guide
* Add header required on Windows.
* get the SWIG wrappers to build
* Fixes#1990
makes sure we don't destroy a double bond's StereoAtoms just because a bond connected to one of its atoms is removed
* change in response to review
* Removes ATOM/BOND_SPTR in boost::graph in favor of raw pointers
* Actually delete atoms and bonds...
* RWMol::clear now calls destroy to handle atom/bond deletion
* Changes broken Atom lookup for windows/gcc
* Adds tests for running with valgrind
* Adds test designed for valgrind and molecule deletions
* Removes RNG, actually tests bond deletions
* update swig wrappers
* deal with most recent changes on the main branch
* Fixes atom documentation
* Fixes#1461
This is a complicated one. Basically URANGE_CHECK when
used on unsigned integers has a problem when the size of
the range it’s checking is 0. The standard operations is
to check
URANGE(num, size-1)
Which (for unsigned integers) obviously rolls over.
This fixes all usage cases to be
URANGE(num+1, size)
And fixes the bugs found. (addBond and the mmff tests)
* Fixes#1461 - Updates URANGE_CHECK to be 0<=x<hi
* Adds RDProps updateProps API point
* AdjustQuery now copies over original atom data to the query ato
* Preserves existing data on the replacing atom
* Exposes preserveProps to Python replaceAtom/Bond
* Adds RDProps updateProps API point
* AdjustQuery now copies over original atom data to the query ato
* Preserves existing data on the replacing atom
* Exposes preserveProps to Python replaceAtom/Bond
* first pass at RWMol::replaceBond()
* get ready for the changes
* rename some options
add bond options (not doing anything with them yet)
update tests to reflect new options
* backup
* re-enable the rest of the tests
It's very possible, that I don't understand something (apologies) but shouldn't the second loop iterate over vertices adjacent to the second end of the bond being removed?