* 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
* test changes
* 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
* Merge branch 'master' into pr/specialQueries
* changes from previous PR
* Iclude false chiral
* rigorous enhnced stereo canoncalization
* Added more tests and clenup
* removed commented out code
* corrected init of SmilesWriteParams
* added MolFileStereoChem.h to the header files
* Renamed Rxn parser to MrvBlockToChemicalReaction
* To make catch2 work, and match the checksum
* Fixed Structchecker errors
* fix CI for DetermineBonds catch test
* error in catch_test for CI
* Allow custom smileWriteParams in GetMolLayers
* misnamed entry point
* ReactionFromMrvString change name
* remove adding writeParams to GetMolLayers
* make rigorous enhanced stereo the default, and fix tests
* only one abs group no longer needs Rigorous Enhanced treatment
* changed string_view to string in catch test
* Canonicalize Enhnaced Stereo only resturne unique smiles
* Now allows or and and groups together
* internal routines inside detail scope
* fix test error
* changed string back to string_view and fixed a CHECK
* Fixes for PR review tests
* Fix RDKit_Book.rst failure on build test
* fix xqm sql test
* updated expected files for cxsmiles_test
* Fixed removal of atom attrs
* Fixed tests after merge of master
* More efficient version of Stereo Groups Canonicalization
* Fixes for ctests
* removed debug code
* readded cipLabel test
* fix generalizedSubstruct/catch_tests.cpp error
* hueristics to improve speed
* Rationaized control of abs groups
* removed unused routine
* added rigorous stereo group treatment to test
* some suggested changes
* Changes per PR review and removed some changes to smiles
* Fixed CI errors
* changes per PR review
* more PR review vhanges and cleanup
* Fixed PSql PKL change
* changes as per PR review
* Restored error type for bad mols for canonicalizeStereoGroups and added a test
* Merge master and fix test in MolDraw2D
* Fix for randomize test error and other PR review comments
* Removed unsued variable to fix mac CI
* do not force aromatization in canonicalizeStereoGroups
* changes as per PR review
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* basic code to convert dative to single if we aren't outputting dative to the SMILES
add forms of GetAtomSmiles() and GetBondSmiles() that take SmilesWriteParams
* dative/coordinate bond support when writing CXSMILES
* expose all of that to Python
* remove usage of _doIsoSmiles property
add params to smarts writers
* allow disabling dative bonds in SMARTS
* typo
* add support to the reaction writers
* support params for SMARTS
* Set _SmilesStart when parsing SMARTS.
* SmartsWriter should also invert first atoms, like SMILES.
* Update test cases now these SMILES match themselves as SMARTS.
* rerun bison
* cleanup a possible repeated define
* When an atom moves from the first to second position winding should flip in SMARTS (i.e. same as SMILES).
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
Before this commit, if you run MolToSmarts on a molecule with a
zero order bond (ZOB), the SMARTS won't match the ZOB! It's a bit
weird for a molecule not to be its own substructure...
This came up because in Schrodinger we see ZOBs somewhat frequently
in organometallics.
* resolves oss-fuzz #24399
* clean up some undefined behavior
* fix some UB in mergeQueryHs
* be more defensive
* defensive programming
* fix a _cxsmilesBondIdx bug
* more defensive programming
* docs
* cleanup
* docs
* backup
* support parsing polymer sgroups from cxsmiles
* add _smilesBondOutputOrder
* make that work with SMARTS too
* get the writer working and update the docs
* ensure processCXSmilesLabels() is called at the appropriate time
* test simplification
* handle multiple s groups
test multiple s groups + data
* set sgroup indices
handled sgroup hierarchy
* write linknodes
* move replaceAtomWithQueryAtom() and completeMolQueries() to QueryOps namespace
* support ring bonds from cxsmiles
* add a test that is still failing
* update nonHydrogenDegree query, add SMARTS extension for that
* some cleanup
* unsaturation and substitution count
* fix typo in test
* update expected result
* add linknodes
* add variable attachment points
* improve documentation of supported cxsmiles features
* clarifying the docs
* support leaving out the outer atoms in LN specs
* first cleanup
* next round of changes. all tests pass
* Fixes#2909
* Fixes#2910
* further cleanup
* some cleanup/refactoring of the Dict class
* remove now extraneous calls to hasProp() before clearProp()
* minor refactoring of RDProps.h
* Switch from using our own version of round() to std::round()
* replace some boost::math stuff with the equivalents from std::
* cleanups in SmartsWrite
* refactor out a bunch of duplicated code
* fix an instance of undefined behavior
* 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
* 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
* turn back on some tests that shouldn't have been disabled
* improve SMARTS testing
make sure we can generate SMARTS from all the examples and then parse that again.
* Fixes#2814
* Fixes#2815
* forward doIsomericSmiles
* added test for #2565
* fix for my snippet
* update test with Greg's comments
* add braces for readability to MolMatchFinalCheckFunctor
* small refactors: abstract label checking, while/size, final check
* merge loops reading order of bonds -- all tests pass
* fix chiral-lead fragments, allow frags w. degree < 3
* add new test, update old
* add test, update old
* fix (inocuous) bug with ranks assignment in MolToSmarts
* start SMARTS with first non-chiral atom
* use smart pointers in test
* reenable doIsomericSmiles
* update patch for #2594
* remove faulty fragments matching
* review tests, remove wrong flip
We have MolFragmentToSmiles already. But I think that when talking
about a fragment or part of a molecule, maybe SMARTS makes more
sense. If I see a SMILES string, I'll definitely think that
it should be a valid molecule, but I have no such
presumption about SMARTS.
Additionally, Schrodinger software sometimes generates SMARTS
for selection using a set of atoms picked in a GUI. It will
be useful to generate these SMARTS using RDKit.
* first round of cleanups based on PVS-studio suggestions
* a couple more
* a few more cleanups
* another round of cleanups
* undo one of those cleanups
we want the integer rounding behavior here
* add a comment to make that clear
* Fix for filter catalog PRECONDITION redundancy
* Fixes#2450
adds `hasOwningMol()` to the public API for Bond and Atom
* add to other classes;
add to python wrappers
* get the smiles generation partially working
* changes in response to review
* Fixes#1929
* add a tests to make sure bogus template directories work
* add a combined atomic number + aromaticity query operation to speed up SMARTS matches
Still needs to be recognized by the SMARTS writer, serialization, and no doubt a few other places.
* add a combined query for the single/aromatic bond query that shows up in SMARTS
* Stop using a dead pointer in the when parsing Marvin SMARTS in a CTAB
* At this point all tests pass on windows
* debugging info back in
* update the bison output
* add queries for the number of heteroatom neighbors
* support cactvs "z" extension
this includes support for range queries on z that could
be extended to other query types as well
* extend range query extension to other SMARTS primitives
* add the less-than and greater-than versions of the range queries
* updates and new tests
* update .cmake files
* support [#6] in SMILES
* document SMILES extensions (such as they are)
* Add support for cactvs's Z queries
* add support for ^4 and ^5
* get tests running
doc update
* book updates
* update .cmake files
* add a SmilesParserParams object to prepare for this
* add a SmilesParserParams object to prepare for this
* add tests for the SmilesParseParmas
* support name parsing, should it be the default?
* rename CXNSmiles to CXSmiles;
add a spirit parser for CXSmiles coordinate that is at least syntax correct
* abandon boost::spirit for now; crude atom token parser
* support params in smiles parser (not tested, may not build)
* can read coords and atom labels along with mol names; crude, but works
* read coordinate bonds
* remove some compiler warnings with VS2015
* remove a bunch of compiler warnings on windows
* remove more warnings on windows
* remove more warnings on windows
* backup commit: first pass at parsing query features
* radical spec parsing
* handle attachment points using atom mapping
* switch to a named property for atom labels
* fix handling of the "A" atom query
* add functions to construct A and Q queries (needs more work)
* fix a problem created while cleaning up warnings earlier
* add some additional convenience functions for making generic atoms.
Still need M and to recognize these while writing CXSMILES
* add M queries; update some tests
* fix a linux compile problem
* get the cxsmiles stuff working in python; basic testing
* support "M" in CXSMILES
* Add support for dative bonds to molfile reader plus writer and to SMILES reader (SMILES writer already supports it).
Initial V3000 molfile reader and writer dative bond support by Esben Jannik Bjerrum.
* first pass at adding -> as dative bond in smiles/smarts
more testing required
* all tests pass
* update .cmake files for lex
o rdkit gains a RDKit::common_properties namespace that contains common string value properties
o Dict.h and below gain getPropIfPresent that attempts to retrieve a property and returns
true/false on success or failure. This is used to optimize access.
o rdkit learns how to pass property keys by reference, not value.
A new namespace has been added to RDKit, common_properties
that contains the std::string values for commonly used
properties. This helps to avoid typos in string values
but also avoids a creation of std::strings from character
values. All accessors (has/get/clear and getPropIfPresent) now pass
the key by reference.
Additionally, getPropIfPresent removes the double lookup
of hasProp/getProp which can be a significant speedup
in the smiles and smarts parsers (10-20%)