* switch the Query infrastructure to use std::function
* add releasenotes mention
* response to review
Removed commented-out function pointer declarations for match and data functions.
* add a test
* change stereo bond canonicalization
* update canonicalization watch test with fixed cases
* make canonicalization test stricter (compare CIP codes)
* add reverse symmetry condition
* rewrite double bond canonicalization code
* update tests
* fix multiline comment
* update java tests
* update python test
* nix switchBondDir (unused)
* fix and rename flipBondDir
* refactor comment
* fix shadowed var name, casting
* fix neighbor sorting
* make seen_bonds a vector
* abstract setDirectionFromNeighboringBond
* handle both sides of the bond have directions
* move getNeighboringStereoBond
* check seen_bonds after popping connectedBondsQ
* use references for arguments
* add release note
* add example required by Dan
* add example requested by Dan
* add the _CIPNeighborRanks property
* store CIP-ranked chiral neighbors
* store CIP-ranked SP2 bond and atropisomer anchors
* add a test
* boost headers in test
* add Atom::NOATOM
* add NOATOM test
* amend and clarify implicit H in Tetrahedral
* rename property
* rename property to _CIPNeighborOrder
* deprecate Chirality::StereoInfo::NOATOM
* 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>
* 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
* do not remove hydrides by default
* add a minimal test
* add release note about behavior change
* require Hydrides to have degree 1
* also allow hydrides with degree 0 (ionic bond)
* suggested changes
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* backup
builds but no tests
* deprecate old form
* initial basic tests for bond property lists
* Tests pass
Fixes#8777
* add deprecations to release notes
* - avoid computing size of a constant at runtime
- replace multiple instances of a numeric constant with a literal constant
- avoid unnecessary copying of strings in iterations and function calls
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* 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: = <=>
* refactor the code to determine whether or not an atom is in brackets
* move the definition of isMetal to QueryOps
* atoms bound to metals in SMILES should always be in square brackets
Implementation and some test updates
needs confirmation that all of tests run
* basic tests pass
* java tests pass
* update js tests
* doc updates
* Update Code/GraphMol/catch_graphmol.cpp
Co-authored-by: Ricardo Rodriguez <ricrogz@users.noreply.github.com>
* Update Code/GraphMol/SmilesParse/test.cpp
Co-authored-by: Ricardo Rodriguez <ricrogz@users.noreply.github.com>
* finish fixing tests
* bump yaehmop version to allow compilation to work
---------
Co-authored-by: Ricardo Rodriguez <ricrogz@users.noreply.github.com>
* Remove GetUniqueCombinations, use instead GetUniqueCombinations_new for improved speed. Update related tests.
* Remove unused and uncalled parameter `which`
* Update tests for GetUniqueCombinations to be in numerical order. Remove unused variable `x`. "Alias" GetUniqueCombinations_new to GetUniqueCombinations for backwards compatibility. Add note about backwards incompatibility for GetUniqueCombinations to ReleaseNotes.md.
* Create _compareCombinationsOrderUnimportant and use for testGetUniqueCombinations for order-insensitive comparison
* Replace call to GetUniqueCombinations_new with GetUniqueCombinations in Gen2DFingerprint for consistency
* Properly cleanup Dict::Pair when serializing HasPropWithQueryValue
* Make sure pickling doesn't change original molecule
* Fix bad cut and paste
* Add PairHolder utility class for memory management of non Dict Dict::Pairs, fix mem leak in pickler
* Edit comment to force a rebuild
* Ignore PairHolder from Java/Swig builds
* Ignore PairHolder API from swig
* Reponses to review
* Add backward incompatible change
* Make release note a bullet point
* - moved SMILES and RGroupDecomp JSON parsers to their own translation units
- added missing DLL export decorators that had been previously forgotten
- changed the signatures of MolToCXSmiles and updateCXSmilesFieldsFromJSON
to replace enum parameters with the underlying types
- updated ReleaseNotes.md
* make sure cxSmilesFields is only updated if the JSON string contains keys
belonging to the CXSmilesFields enum
* added missing copyright notices
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* First try at using DistViolationContribs
only the most basic of testing has been done
also add ForceField::distance2 to allow some optimizations
* allow testing using old approach
* optimization
At this point testUFFForceFieldHelpers fails since the check for std::max_element
in the e_contribs vector at Embedder.cpp:513 is now doing something totally different
(instead of a bunch of small distance violation contribs, we have one big one).
We'll need to come up with something for this.
With the benchmarking set that I'm using - 500 DG conformers for ~465 COD molecules
using 10 threads - this runs in almost 10% less time than master.
* backup;
builds, tests do not pass
* all tests pass except the old failure
* more constification
* backup/debugging
* add fourthdim contribs the same way
* tests now pass
* deprecations
* remove unused vars and code
* changes in response to review
* change valence model to use isolobal analogy
Remove support for five-coordinate C+ and, by analogy, five-coordinate N+2
Removes support for charge states that take atoms past the end of the periodic table
i.e. [Lv-4] is no longer supported
* update the tests for that
* remove valence state of 6 for Al
* fix representation of phosphate in the mol2 parser
this is a correction of what was done during #5973
* cleanup the exceptions for P, S, As, and Se
* drop valence states:
Si 6, P 7, As 7
* a couple of additional changes from #7397
* update java tests
* fix an inconsistency: Rb now supports valence -1
* documentation
* - replace operator[] with at() for bounds check
- extract some code into a function to avoid duplication
- use TAB as separator throughout in the periodic table data for consistency
* removing the .at() usage
We know that these vectors aren't empty, so there's no need for the bounds check.
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* deprecations for the 2024.09 release
* update doctests
* Fixes#7402
* get tests passing when the cairo build is not there
* fix a problem in the tests
* - renamed getParamsFromJSON() to updateSmilesWriteParamsFromJSON() and moved it from the anonymous namespace to the RDKit namespace such that it is publicly available
- implemented updateCXSmilesFieldsAndRestoreBondDirOptionFromJSON()
- added CFFI and JS tests
- get_smiles(), get_smarts(), get_cxsmiles() and get_cxsmarts() are now available in MinimalLib in both CFFI and JS layers and they can be passed JSON parameters
- CFFI get_qmol() now returns NULL if it fails to generate a RWMol rather than returning the "Error!" const char[] string, for consistency with what get_mol() and get_rxn() do. This was documented in release notes
* suggestions
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Correct unbranched alkane SMARTS to match the description: must restrict to only carbon and allow for terminal alkanes
* Add backwards incompatible change notes
* move and edit incompatible changes note
---------
Co-authored-by: Daniel Levine <levineds@meta.com>
Co-authored-by: levineds-meta <159849019+levineds-meta@users.noreply.github.com>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* switch to range-based for loops
* Update Code/GraphMol/testChirality.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* fix a leak in the new DCLV code (#7279)
* fixes#7295 (#7303)
* tag 2024.03 release (#7308)
* tag release
* attempt to solve constant MD5 problems
* switch to getting the ComicNeue font from github instead of as a zip
* open new release cycle (#7314)
* restrict the application of 1,3- 1,5- conjugated cation normalization (#7287)
* propagate yaehmop build status (#7316)
* Fixes#7299 (#7304)
* clean up of python and c++ for-loops
* clang formatted testChirality
* fix test file
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
Co-authored-by: Riccardo Vianello <riccardo.vianello@gmail.com>