Commit Graph

5710 Commits

Author SHA1 Message Date
Greg Landrum
3aab2653cd Fixes #9068: raise a ValueError when trying to set properties with empty names (#9085)
* 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: = <=>
2026-02-09 05:58:25 +01:00
Greg Landrum
c1b67f0c03 fix the python docs for CanonicalRankAtomsInFragment (#9087)
some clang-format reformatting of rdmolfiles.cpp also is in here
2026-02-07 05:54:10 +01:00
Ricardo Rodriguez
813cd85ecc The precondition in Bond::getOtherAtomIdx() is redundant (#9092) 2026-02-06 16:09:23 +01:00
Brian Kelley
36f061efb1 Don't silently ignore missing or extra atoms/bonds in copyMolSubset (#9089)
* 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
2026-02-06 06:48:05 +01:00
Ricardo Rodriguez
dfb34ec23c Another canonicalization fix (#9082)
* update canonicalization test

* fix
2026-02-05 17:24:20 +01:00
Rachel Walker
664d3194b3 Move some fields and methods from AtomPDBResidueInfo to base class (#8863)
* fix pickling

* added python wrapping and test

* fix expected pickles

* trigger CI

* Apply suggestions from code review

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

* greg suggestion

* remove additional enum values

---------

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2026-02-04 12:13:33 +01:00
Greg Landrum
5df8f93e27 Get things working with numpy 2.4 and pandas 3.0 (#9072)
* 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: = <=>
2026-02-04 12:06:21 +01:00
tadhurst-cdd
0b5172b62d cleanup of stereogroups and wedges for non-chiral sites (#9051)
* 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>
2026-01-30 04:20:32 +01:00
Greg Landrum
cda1b1df2f Fixes #8997 (#9060)
I checked isostar to confirm that the degree-three aromatic N in the pyrrole and pyridone are not acceptors
2026-01-29 12:49:21 -05:00
Ricardo Rodriguez
86902488e9 Store CIP-ranked anchors after CIP labeling. (#9056)
* 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
2026-01-29 18:23:44 +01:00
tadhurst-cdd
2ae0a75a25 Handle chiral atoms with 2 hydrogens in SCSR parser (#8939)
* 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
2026-01-29 08:08:14 +01:00
Ricardo Rodriguez
d3d4170e7c CXSMILES: do not add separators for unserializable Substance Groups (#9048)
* 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>
2026-01-27 12:35:18 +01:00
David Cosgrove
e598f608fe Transform::SetRotationFromQuaternion takes const. (#9063) 2026-01-24 07:18:41 +01:00
Ricardo Rodriguez
d4641c1f58 Fix removing (non)redundant bond dir specs when exporting SMILES (#9066)
* increase counts to avoid removing non-redundant bond dirs

* update tests
2026-01-24 07:15:00 +01:00
Greg Landrum
21225e63b3 Move some more tests over to catch2 (#9058)
* move testSubstructMatch to catch2

* modernization

* modernization

* switch to catch2

* modernize

* convert to catch2

* update

* move to catch

* please be quiet

* move to catch2

* changes in response to review

---------

Co-authored-by: = <=>
2026-01-24 07:03:04 +01:00
Ricardo Rodriguez
163dd42d4c implement hasPrimaryLabel (#9052) 2026-01-19 14:53:03 +01:00
Chris Von Bargen
e5989aa446 Fix deprecated literal operators and macro redefinition warnings for modern compilers (#9055)
* 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
2026-01-19 08:14:52 +01:00
Philip Ullmann
c8f274f0d3 Update deprecation messages for valence methods (#9050) 2026-01-19 08:12:53 +01:00
tadhurst-cdd
14c66817ea added FABS to test for issue #4364 (#9053) 2026-01-19 08:10:15 +01:00
Raul Sofia
4b92c2fa8c Performance improvement: Implement buffered reading for SDMolSupplier (#9010) 2026-01-10 18:29:56 +01:00
Ricardo Rodriguez
658a1af8b2 Read SD property names till the last '>' (#9047)
* add a test

* fix
2026-01-09 05:23:26 +01:00
Yakov Pechersky
7dec637a3f MolAlign: brace-init BestAlignmentParams in wrapper (#9042)
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.
2026-01-08 07:31:22 +01:00
Brian Kelley
9558cb8114 Check for correctly sized propertylists to avoid dropping molecules (#8921)
* Fixes #8918

* Use only the one check for compatible sizes

---------

Co-authored-by: Brian Kelley <bkelley@glysade.com>
2026-01-08 06:08:54 +01:00
David Cosgrove
cef43e8aef In verbose output, check that the query molecule exists before using it. (#9040)
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
2026-01-08 06:06:52 +01:00
Greg Landrum
da08e8d954 Allow molzip to position fragments when joining them (#9021)
* 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: = <=>
2026-01-07 10:33:03 -05:00
Greg Landrum
e0f3ada0d7 Fixes #9033 (#9036)
Also fixes the other similarity metrics.
A very small amount of refactoring

Co-authored-by: = <=>
2026-01-03 06:42:29 +01:00
Greg Landrum
f8b6776af1 Fixes #9020 (#9025)
* Fixes #9020

* add another test

---------

Co-authored-by: = <=>
2026-01-03 06:42:09 +01:00
David Cosgrove
8ef091f306 Github9007 (#9022) 2025-12-29 21:08:10 +01:00
Yakov Pechersky
08552e56b1 atropisomer bond atoms are checked explicitly for SP2 hybridization (#8974)
* 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
2025-12-29 18:04:40 +01:00
tadhurst-cdd
0f03609221 Allow spaces and special chars in SCSR fullname attrs (#8982) 2025-12-29 17:54:56 +01:00
Ricardo Rodriguez
1c16a91730 Some more cleaning up in SMILES Writing (#8991)
* 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.
2025-12-29 07:00:45 +01:00
Greg Landrum
b4164ea2f2 Support serializing/deserializing FP generators to JSON (#9000) 2025-12-24 19:09:05 +01:00
Ricardo Rodriguez
47f2b7c1b5 Fixes #9014 (#9016)
* add a test

* add a fix
2025-12-23 06:43:05 +01:00
Greg Landrum
d6cf5c4a01 move molzip to its own file (#9013) 2025-12-22 10:42:23 -05:00
Ricardo Rodriguez
2921deb254 Convert testMolSupplier to catch2 (#9015)
* update CMake file

* convert to catch
2025-12-22 07:33:36 +01:00
David Cosgrove
4883485ac5 Fixes Github9009 (#9012)
* 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>
2025-12-22 06:26:23 +01:00
David Cosgrove
21b3c4e6f1 Shape overlay initial start aligned to principal axes (#8999)
* 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>
2025-12-20 08:35:28 +01:00
Greg Landrum
dc84967df2 A bunch of modernization of the ShapeHelpers code (#8954)
* modernize testShapeHelpers

* a bunch of modernization of the shape helper code
2025-12-15 15:49:00 -05:00
Ricardo Rodriguez
9160ef8943 Last leak fixes for 2025! (#9006)
* fix leaked atom on zero chiral permutation

* take bond ownership
2025-12-13 20:22:59 +01:00
Ricardo Rodriguez
fa68ea2ef2 convert smiTest1 to catch (#9004) 2025-12-13 20:21:00 +01:00
Ricardo Rodriguez
7c2a6f4a3b rename test, convert to catch (#9003) 2025-12-13 20:18:40 +01:00
Greg Landrum
c2e48f41d8 Stop writing so many atom properties to cxsmiles (#9002)
* 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
2025-12-13 04:35:57 +01:00
Greg Landrum
ef90a4bedf Allow adding custom atom and bond matcher functions for substructure searching (#8994)
* extra SSS match functions for atoms/bonds
initial implementation and testing

* add baseline to test

* add a functor for matching atom coords

* support the extra checks in python

* refactor the way the python callbacks are handled

* test tolerances

* expose the AtomCoordsMatcher to python

* allow the extra checks to override the default matching

---------

Co-authored-by: = <=>
2025-12-12 20:03:31 +01:00
Ricardo Rodriguez
b6655a136d Refactor atomVisitOrders and bondVisitOrders in SMILES Writer canonicalization (#8972)
* refactor calculation of atomVisitOrders/bondVisitOrders

* refactor checkBondsInSameBranch

* fix
2025-12-12 14:07:26 +01:00
Greg Landrum
e786ca231d Stop using raw pointers in the canonicalization interface (#8990)
* 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>
2025-12-12 14:00:23 +01:00
Ricardo Rodriguez
a8a00a1d99 Small fix in ring stereo/canonicalization (#8962)
* fix

* update canonicalization watch test

* add ring chirality test

* prune duplicates
2025-12-12 13:56:01 +01:00
Brian Kelley
70540c2eed Add extract mol fragment api (#8811)
* Create a function to extract some specified atoms from a ROMol as a new ROMol by creating new graph (#8742)

This adds a new api, `RDKit::MolOps::ExtractMolFragment`, to allow efficient
extractions of mol fragments from large mols. Compared to the approach where
we delete "unwanted" atoms/bonds from the input mol, this api is faster for
small mols (about 2x faster) and at least 3x faster for big mols
(was 10x faster for "CCC"*1000).

* clang-format

* review comments

* cleanup

* Consolidate copying subsets of molecules

* Readd missing tests

* Update comment to restart build

* Remove missing test

* Remove debugging comment, fix warnings

* Fix warnings on gcc11

* Add docs

* Make vector<bool> dynamic_bitset<>

* Update copyright

* Add swig wrappers

* Use new designated constructor API

* Fix windows builds

* Change enum values from unsigned int to integer

* Fix unsigned int variable

* Update Code/GraphMol/Wrap/test_subset.py

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

* Update Code/GraphMol/Subset.cpp

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

* Update Code/JavaWrappers/gmwrapper/src-test/org/RDKit/ChemTransformsTests.java

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

* Reponse to review

* Fix documentation

* Remove comments

* Remove unnecessary comments

* Fix one liners

* Change assertion to be clearer (and not one-liners)

* Run clang-format

---------

Co-authored-by: Your Name <you@example.com>
Co-authored-by: Hussein Faara <hussein.faara@schrodinger.com>
Co-authored-by: Brian Kelley <bkelley@glysade.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2025-12-09 15:06:29 +01:00
Chi Cheng
2d25752fe0 Improve DetermineBonds and DetermineBondOrders performance (#8888)
* try to reduce the number of valence combinations by checking neighbour valence and bonding

* fixed error message. Remove test that fails now because determineBondOrders finishes too quickly.

* cleanup

* adjust checking

* fix building

* add interrupt test back in but use a molecule that still takes a bit of time.

* improve error messaging

* change "test interrupt" to use xyz

* fix for atoms without valence information. and apply suggestions

* Update Code/GraphMol/DetermineBonds/DetermineBonds.cpp

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>

---------

Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2025-12-08 06:17:41 +01:00
Greg Landrum
436ecbebac Allow Hs to be ignored in the RMSD alignment functions (#8976)
* first pass at allowing Hs to be ignored in getBestRMS()

* add support in getAllConformersBestRMS()

* do getBestAlignmentTransform()

* cleanup, error checking, and a fix

* this is more painful than it seems like it should be

* add python wrappers and tests

* response to review
2025-12-04 18:37:59 +01:00
Greg Landrum
af4e6c05ec strip whitespace from embedParametersToJSON() (#8989)
* strip whitespace from embedParametersToJSON()

* update expected results in python tests

---------

Co-authored-by: = <=>
2025-12-04 06:57:08 +01:00