* when shifting double bonds in tautomerization, set double bond stereo to STEREOANY
fixes#9102
notably, do this only to non-ring bonds
move tests over to assert this
avoid index-based bond lookup in test assertions
since bond indexing can move in tautomers
* inchi unittest check
* fast rings
* Cannot push_back std::string to boost json array
`boost::json::array.push_back` expects a `value`
* prefer emplace_back to avoid casting
* Ensure every MINIMAL_LIB option is tested in CI
Also remove Chemdraw support from the compilation. This does not change the final size of the output (not exported anyways) but it reduces the compilation time by 1 min (-10% on my local machine)
* Expose MMPA with other options
* Fix MMPA compilation: Implicitly binding raw pointers is illegal
Applying same pattern as in `get_frags_helper`
* use queues instead of sets for trimBonds
* skip 2 last atoms: if these were in rings, we'd have already noticed
* refactor duplicate detection in findRingsD2nodes
* make smallestRingsBfs a free function
* move things around
* fix paper reference; fix other comments
* Don't silent ignore missing atoms (and replace them with atom #0) in copymolsubet
* Fail if explicitly set atoms/bonds are not present
* Add tests
* Simplify optimization (copy whole molecule) add test for no bonds
* get BertzCT working with numpy 2.4
* test pass with with Pandas 3.0
(on windows at least)
* update testRanker too
* update nb test
* run win32 CI tests with different pandas versions
also updates boost version
* works with pandas 2.0?
* update linux_build_py311 -> linux_build_py312
test both old and new pandas
can't go higher with the python version yet because the older pandas and numpy are not available.
* doctest fix?
---------
Co-authored-by: = <=>
* cleanup of stereogroups and wedges for non-chiral sites
* fixed testShapeHelpers for Arm64 build
* reorg the tests a bit
* rename and document option
* add to the python wrappers
---------
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* 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
* added flag to allow chiral settings on Atoms with 2 hydrogens for SCSR treatment
* added parameter to allow chiral 2Hs on template mols in SCSR parser
* fixed testShapeHelpers for arm64 build
* Remove checking for two Hs in chiral atom in atomChiralTypeFromBondDirPseudo3D
* removal of flag for allow2Hs
* remove setup.bat file
* 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>