* fix extended boundary issue (3 mols)
* clang pass
* no change. retrigger CI for failed java test
there's a failing java test that seems to be failing by chance rather than by changes, as it depends on rng. this is just to retrigger the CI pipeline to confirm this
* no change. retrigger the CI (yet again)
* raw strings and removed garbage collector
* iterators for random-access MolSuppliers
add optional caching to SDMolSupplier
* add support to SmilesMolSupplier too
There is a lot of duplicate code between the random-access suppliers that would be worth trying to remove
but at the moment it looks like it would require multiple inheritance, and I think we want to avoid that
* add input iterators for ForwardSDMolSupplier()
* throw when calling begin() on a used supplier
* switch to use the spaceship operator
* init() should reset the mol cache
* Make SDMolSupplier and SmilesMolSupplier safe for multi-threaded reads
* add benchmarking
* add TDTMolSupplier support
improved testing
add benchmarks for parallel iteration
optional TBB support
* better const handling, add reverse iterators
doesn't look like const_iterator is possible since getting data from the underlyng supplier object is non-const
* improve docs
more usings
add reverse iterator to TDTMolSupplier
* tests only try execution::par when it is there
* fix typo
* more testing/demo
* remove accidentally added files
* review changes
* add default ctors
* disable a false-positive compiler warning
it is stupid to have to do this
---------
Co-authored-by: = <=>
* check for duplicate atoms/bonds in StereoGroups
* explicit handling of duplicate stereogroup atoms in CTAB and CXSMILES parsers
---------
Co-authored-by: = <=>
* Remove Dict::getData() for a strict abstraction boundary
Replace direct access to Dict's internal std::vector<Pair> with
encapsulated methods: size(), empty(), const iteration via
begin()/end(), appendPair(), markNonPOD(), and getRawVal().
This enables future changes to Dict's internal representation
without breaking callers.
Ref: rdkit/rdkit#9112
* Harden Dict::appendPair to take a populated Pair by move
appendPair(Pair&&) now auto-detects non-POD status via
RDValue::needsCleanup(), eliminating markNonPOD() and the
risk of dangling references or uninitialized entries.
needsCleanup() is placed next to destroy() on RDValue to
keep the POD/non-POD distinction in one place.
* Remove vestigial dictHasNonPOD param from streamReadProp
Both callers ignored the output. Non-POD detection is now handled
by Dict::appendPair via RDValue::needsCleanup().
* unbork java build
* Address PR review: bulk append, rename getRawVal, add custom data test
- Add Dict::append(vector<Pair>&&) for bulk insertion with reserve
- Use bulk append in streamReadProps to restore pre-allocation
- Rename getRawVal -> getRDValue per reviewer preference
- Add test verifying custom AnyTag data is destroyed through Dict lifecycle
* heed self-review
* don't manually implement vec.insert
* Add test: ExplicitBitVect round-trip through Dict serialization
Exercises the full streamWriteProps/streamReadProps path with an
ExplicitBitVect in an RDProps Dict, confirming the custom handler
is invoked and no memory is leaked (verified under valgrind).
* in anyTag test, assert destructors ran a specific number of times.
---------
Co-authored-by: bddap (Coding Agent) <andrew+bot@dirksen.com>
V3000 parsing sets aromatic flags on bonds but not atoms. When removeHs
strips an explicit H from nitrogen in an aromatic ring, molRemoveH
checked heavyAtom->getIsAromatic() to decide whether to increment
numExplicitHs — but that flag was always false for V3000-parsed atoms.
Without the explicit H count, the kekulizer cannot distinguish pyrrole N from pyridine N,
causing
"Can't kekulize mol" errors on valid ChemDraw-exported molblocks.
Fix: use isAromaticAtom(), which checks both atom and bond aromatic
flags
* Fixes#9068
* fix a problem with empty labels in s-group parsing
* fix empty column names in smiles suppliers
* add the check to setPODVal()
---------
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>
* 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
* 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
* 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
* 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
* added new attributes for scsr template as per BIOVIA doc 2003
* changed to allow any attributes for an SCSR Template def
* removed unneeded defs for TEMPLATE attribute names
* merge ABS groups on setStereoGroups
* warn/fail on multiple ABS groups on strict parsing
* add a test for setStereoGroups
* add a test for multiple ABS groups in mol blocks
* Drop the warning
* 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>
* Fist pass at CDX support
* Enable CDX support for reading (also) in the CDXMLParser API
* Add cdxml test files
* Update swig wrappers for CDXMLFormat and Parameters
* Add constructor to ChemDrawParserParams
* Add Java SWIG support for ChemDraw
* Add chemdraw define to rdconfig
* Add missing chemdraw deps
* Remove direct expat link
* Fix Java linkages for ChemDraw
* Remove bad merge code
* Remove bad merge code
* Fix csharp builds
* Add sniffer for the ChemDraw DataStream
* Include filesystem
* Fix test on windows
* Add more CDX tests
* Ensure streams are open in binary mode to support CDX on windows
* Fix text to show that a Block is the text input, not a file
* Fix CSharp test
* Disable CDX tests when not building chemdraw
* Turn back on chemdraw
* Response to review
* Turn off chemdraw support for the limited external test
---------
Co-authored-by: Brian Kelley <bkelley@glysade.com>
* get SynthonSpace.cpp to build also when RDK_USE_BOOST_SERIALIZATION is
not defined
* test should not fail when RDK_USE_BOOST_SERIALIZATION is not defined
* - expose reading/writing PNG metadata to CFFI and MinimalLib
- add relevant CFFI and MinimalLib unit tests
- add RDK_USE_BOOST_PROGRAM_OPTIONS CMake option
- enable using standalone zlib in the absence of boost::iostreams for parsing PNG files
- enable linking against maeparser in the absence of boost::iostreams also on Windows
- enable building RDKit in the absence of boost::program_options
* add check for boost::program_options
* change size_t into std::uint64_t in SearchResults for consistency with doTheSearch() which uses std::uint64_t
* change size_t into std::uint64_t in SearchResults for consistency with
SynthonSpaceSearcher::doTheSearch()
* set CMake policy to allow YAeHMOP to require a version which is not
actually supported
* reverted External/YAeHMOP/CMakeLists.txt to master version
* check if Windows build will work
* fix build
* configure zlib install location
* build zlib dependency
* include zlib header directory
* explicitly set PropertyFlags.AllProps so the test does not fail on
static builds
---------
Co-authored-by: ptosco <paolo.tosco@novartis.com>
* fix scsr parsing for non-template SUP groups
* Rempoved two tests not related to this PR
* Update Code/GraphMol/FileParsers/SCSRMolFileParser.cpp
added the constexpr as suggested
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* changed constrexpr to const for std:string
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* ChemDraw Document and read/write support for the RDKit
* Add missing test file
* Rev chemdraw version
* Rev chemdraw version
* Rev chemdraw version for g++11
* Update CMakeLists.txt
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Build chemdraw from an external CMake file
* Remove unused platform bigendian check
* Revert changes to constants, remove unused ones
* Keep the original constant names
* Remove __main__ section
* Use as much of the ChemDraw CMakeList as possible
* Skip installing expat
* Rev chemdraw version to fix windows issue
* Don't install expat, set the appropriate CHEMDRAW_BUILD definition
* resolve windows builds
* Fix minimal lib builds
* Move ChemDraw document to private header
* Move utility functions to ChemDraw namespace
* Move ChemDraw to v2 unique ptr api namespace
* Make class enum
* Switch to camelCase
* Response to review
* Move ChemDrawToDocument to ChemDraw namespace
* Update External/ChemDraw/Wrap/rdChemDraw.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Fix typo
* Update External/ChemDraw/Wrap/rdChemDraw.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Add better documentation
* Rev chemdraw version
---------
Co-authored-by: Brian Kelley <bkelley@glysade.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* ChemDraw Document and read/write support for the RDKit
* Add missing test file
* Rev chemdraw version
* Rev chemdraw version
* Rev chemdraw version for g++11
* Update CMakeLists.txt
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Build chemdraw from an external CMake file
* Remove unused platform bigendian check
* Revert changes to constants, remove unused ones
* Keep the original constant names
* Remove __main__ section
* Use as much of the ChemDraw CMakeList as possible
* Skip installing expat
* Rev chemdraw version to fix windows issue
* Don't install expat, set the appropriate CHEMDRAW_BUILD definition
* resolve windows builds
* Fix minimal lib builds
* Move ChemDraw document to private header
* Move utility functions to ChemDraw namespace
* Move ChemDraw to v2 unique ptr api namespace
* Make class enum
* Switch to camelCase
* Response to review
* Move ChemDrawToDocument to ChemDraw namespace
* Update External/ChemDraw/Wrap/rdChemDraw.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Fix typo
* Update External/ChemDraw/Wrap/rdChemDraw.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Add better documentation
---------
Co-authored-by: Brian Kelley <bkelley@glysade.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* feed dummy perpendicular point for cross product to prevent zero error in normalization during atropisomer chirality, fixes#8602
* remove debug log
* move test, and check that no bonds
* Adds a df_forceStop to stop readers and writers, clears out queues on destructor
* Propery implement close function, requires protected closeStreams
* changes from greg's version
* close() needs to be called in the derived destructors
* Close the writers before the reader to avoid deadlock
* Don't process trailing new lines
* Don't accept pushes if the queue is done
* Add mutex protecting d_threadCounter, remove unneeded forceStop checks
* Update Code/GraphMol/FileParsers/MultithreadedMolSupplier.cpp
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Add comment for the d_threadCounterMutex unlock
---------
Co-authored-by: = <=>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* Parsing SCSR
* add scsrol to mol
* removed bad include file
* loosen distGeom test slightly
* add wrap test for SCSRMol
* Add test for scsr in python
* tests added for scsr and strict parsing removed
* remove extra stuff
* More fully specified use of SCSRMol for PR CI build
* Added flags for SCSR expansion to not include any leaving groups
* Added MolFromScsrParams to Wrap for python
* added SCSRMol destructor
* Added two tests for RNA macromols, and fixed a bug they revealed
* Added new tests abd expected files
* changes as per PR review
* SCSR Chnages for leaving groups
* fixed testScsr.py
* hydrogen bond treatment
* in SCSR expand, allow Hbond to be autoatically detected
* changes as per code review
* Adding new test file
* chages for SCSR contructors, destructors for CI build
* fixed pyton for SCSR hydrogen bond modes, and added tests
* Added new test files
* fixed edge case for SCSR
* fix checksum for inchi
* consistent capitalization of SCSR throughout
* switch to enum class
* make things shorter
* simplify
* get rid of the ATTCHORD class
* New section for SCSR in RDKit_book
* addeed section to RDKit_Book
* SCSRMol is no longer exposed in Python
* fix leak in MolFromSCSRFile()
light refactoring
* expose MolFromSCSRFile() to python
make the MolFromSCSR functions work with default args
a bit more testing
* removed C++ access to SCSRMol
* CXMsiles now ouputs hbonds, fix to template matching, and a few other things
* Addl fix for bad aromaticity in Hbond rings
* Test files needed
* Test files needed
* try to fix a CI build errors
* CI error fix
* Added missing test file
* CMake version - for CI build
* remove full file compoarison from macromol test file
* accidental change to debug restored to release
* Code review changes
* As per PR review
---------
Co-authored-by: Greg Landrum <greg.landrum@gmail.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: = <=>