rdkit/rdkit: 2025_03_1 (Q1 2025) Release
Authors/Creators
- Greg Landrum
- Paolo Tosco
- Brian Kelley
- Ricardo Rodriguez
- David Cosgrove1
- Riccardo Vianello
- sriniker
- Peter Gedeck
- Gareth Jones2
- NadineSchneider
- Eisuke Kawashima
- Dan Nealschneider3
- Andrew Dalke
- Matt Swain4
- Brian Cole
- Samo Turk
- Aleksandr Savelev
- tadhurst-cdd
- Alain Vaucher5
- Maciej Wójcikowski6
- Ichiru Take
- Rachel Walker3
- Vincent F. Scalfani7
- Hussein Faara8
- Kazuya Ujihara
- Daniel Probst9
- Juuso Lehtivarjo
- guillaume godin
- Axel Pahl10
- Jeremy Monat
- 1. CozChemIx Limited
- 2. Glysade LLC
- 3. @schrodinger
- 4. @DEShawResearch
- 5. Google
- 6. @merckgroup
- 7. University of Alabama
- 8. Schrodinger
- 9. Wageningen University
- 10. Fraunhofer ITMP (Hamburg)
Description
Release_2025.03.1
(Changes relative to Release_2024.09.1)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to see your contribution acknowledged with your name, please set your name in GitHub)
Andrey Alekseenko, Marco Ballarotto, Chris Von Bargen, Kevin Boyd, Jessica Braun, Christopher Brown, Martin Buttenschoen, Rubén Chaves, Michael Cho David Cosgrove, Oleksii Dukhno, Hussein Faara, Jozef Fulop, Richard Gowers, Tad Hurst, Gareth Jones, Eisuke Kawashima, Brian Kelley, Radics Laszlo, Zhen(Jack) Liu, Niels Maeder, John Mayfield, Jeremy Monat, Dan Nealschneider, Jan Oboril, Yakov Pechersky, Patrick Penner, Julianus Pfeuffer, Rachael Pirie, Yechen Qiao, Lauren Reid, Ricardo Rodriguez, Nikitas Rontsis, Fio Ruggiu, Vincent F. Scalfani, Ulrich Schatzschneider, Wonseok Shin, Anton Siomchen, Paolo Tosco, Kollin Trujillo, Ivan Tubert-Brohman, Franz Waibl, Rachel Walker, Riccardo Vianello, Marco Visani, QJ-Chen, UENO, M., heng-yin, EvaSnow, JP, Jess, knalice, YOUNG-JAME, thomp-j, esiaero, bbu-imdea, bzoracler
Highlights
- The RDKit now supports synthon-based substructure and similarity (fingerprint-based and RASCAL-based) searches in very large combinatorial spaces. This code should still be viewed as experimental: the API and results may change in future releases.
Backwards incompatible changes
- The order of combinations returned by Chem.Pharm2D.Utils.GetUniqueCombinations has changed to be in numerical order. The combinations themselves are unchanged.
- The MaeWriter class will now throw when attempting to write an empty Mol or when there are errors during the writing (e.g. kekulization errors). Previous behavior was to log an error and return an empty string.
- AdjustQueryProperties now no longer ignores additional atom adjustments when makeAtomsGeneric is enabled.
- The functions getImplicitValence(), getNumImplicitHs(), getDegree(), and getTotalDegree(), now return 0 for atoms that are not associated with molecules (previously they threw exceptions)
- SMILES and RGroupDecomp JSON parsers were moved to their own translation units. This will require C++ code using those JSON parsers to be added #include directives for GraphMol/SmilesParse/SmilesJSONParsers.h and GraphMol/RGroupDecomposition/RGroupDecompJSONParsers.h, respectively.
- Replaced enums in the signatures of MolToCXSmiles and updateCXSmilesFieldsFromJSON with the underlying types. This may require existing C++ code using those functions to be updated accordingly.
- HasPropWithValueQueryBase used RDKit::Dict::Pair to return data used for serializing object in a molecule pickle. This has been changed to RDKit::PairHolder which automatically manages memory.
- The colors of annotations on atoms and bonds are now controlled by the drawing
options
atomNoteColourandbondNoteColourinstead of the generalannotationColour. - When writing SMILES, organic subset atoms which are bonded to "metals" will
always be written in square brackets, i.e. with their H count explicit. Here
the definition of "metal" is any atom matching an "M" query (the corresponding
SMARTS is
[!#0!#1!#2!#5!#6!#7!#8!#9!#10!#14!#15!#16!#17!#18!#33!#34!#35!#36!#52!#53!#54!#85!#86])
New Features and Enhancements:
- NumAmideBonds descriptor missing (github issue #1670 from malteseunderdog)
- Improved handling of SP/TB/OH reording in SMILES/SMARTS. (github pull #6777 from johnmay)
- Fix canonicalization of stereogroups (github pull #7041 from tadhurst-cdd)
- Update reaction fingerprints to use generators (github issue #7521 from vfscalfani)
- Carry over enhanced stereochemistry groups from reaction product templates to products (github issue #7669 from jpfeuffer)
- Simple speed up for CIPLabeler (github pull #7826 from d-b-w)
- Additional compatibility updates for commutator/negator settings for … (github pull #7834 from esiaero)
- Support Writing CX Extensions for Reactions (github pull #7838 from KollinRT)
- Expose preset color palettes to MinimalLib through JSON (github pull #7853 from ptosco)
- Another 2x performance improvement in CIP labelling (github pull #7854 from d-b-w)
- Improve Morgan Fingerprint Performance (github pull #7862 from scal444)
- [IterateCIPRanks] Precompute neighbor indices and counts, sort them together for each atom (github pull #7889 from scal444)
- Optimize Butina Clustering for Performance and Expand API (github pull #7892 from evasnow1992)
- Expose three ROMol methods which were not previously exposed to SWIG wrappers (github pull #7895 from ptosco)
- Sort CIP entries in place using a lightweight wrapper, only sort tied entries (github pull #7911 from scal444)
- export the targets with a python dependency to a different config file (github pull #7914 from rvianello)
- Only save the most recent CIP rank for sorting (github pull #7932 from scal444)
- Add to Cookbook "Include a Bond Index" recipe and image (github pull #7939 from bertiewooster)
- Updates to the Docs/Book directory (github pull #7942 from greglandrum)
- Allow inclusion of molecule names in ScaffoldNetwork (github pull #7956 from PatrickPenner)
- Expose molzip functionality to MinimalLib (github pull #7959 from ptosco)
- Expose propertyFlags to CFFI and MinimalLib (github pull #7960 from ptosco)
- Make sure that loggers can be enabled, disabled, captured and tee'd from MinimalLib (github pull #7962 from ptosco)
- SynthonSpace Search (github pull #7978 from DavidACosgrove)
- Update SMILES parsing syntax error to include bad token position (github pull #7979 from whosayn)
- Update SMILES parsing syntax error to include bad token position (github issue #7980 from whosayn)
- Add Molecular Interaction Fields (github pull #7993 from greglandrum)
- Expose tautomer scoring functions to python (github pull #7994 from bp-kelley)
- Implemented two more JSON parsers for CFFI and MinimalLib (github pull #8000 from ptosco)
- Explicit valence for charged organic atoms when creating a MolBlock (github issue #8023 from greglandrum)
- improve defaults for the shape-based alignment (github pull #8029 from greglandrum)
- SynthonSpace search timeout (github pull #8070 from DavidACosgrove)
- Resolve clashing atom labels in 2D drawing (github pull #8074 from DavidACosgrove)
- Add drawMols3D() and improve documentation for IPythonConsole (github pull #8083 from greglandrum)
- Allow fragments of aromatic rings to match in RascalMCES (github pull #8088 from DavidACosgrove)
- SynthonSearch synth check (github pull #8109 from DavidACosgrove)
- Conformer embedding timeout (github pull #8110 from nrontsis)
- Avoid expensive matching in conformer generation if it's not needed. (github pull #8111 from nrontsis)
- allow specified chiral features to SSS match unspecified features (github pull #8115 from greglandrum)
- efgs code (github pull #8145 from bbu-imdea)
- Optimisations to fingerprint search of Synthon Space (github pull #8152 from DavidACosgrove)
- Making SynthonSearch respond to Ctrl-C (github pull #8153 from DavidACosgrove)
- Condense MMFF Contribs into single contrib per type. (github pull #8175 from scal444)
- bump the inchi version to 1.07.2 (github pull #8176 from greglandrum)
- some optimizations of triangle smoothing and the bounds matrix code (github pull #8190 from greglandrum)
- support Ctrl-C in conformer generation (github pull #8197 from greglandrum)
- DistViolationContribs optimization (github pull #8208 from evasnow1992)
- Add option to omit brackets when drawing query atoms. (github pull #8212 from DavidACosgrove)
- Option to put padding round elements of reaction. (github pull #8216 from DavidACosgrove)
- Add property to track reactant index in reaction products (github issue #8222 from bp-kelley)
- Optimisation of fingerprint Synthon Search (github pull #8223 from DavidACosgrove)
- Rascal: Add option to specify minimum clique size directly. (github pull #8248 from DavidACosgrove)
- MolDraw2D: add separate colors for atom and bond annotations (github pull #8249 from greglandrum)
- Restore functionality of the MinimalLib Dockerfile and improve exception handling performance (github pull #8267 from ptosco)
- Option to preserve default text colors when highlighting atoms. (github issue #8271 from JessJKitty)
- Tweak mol fragmenter (github pull #8277 from DavidACosgrove)
- Expose basinThresh to the python layer (github pull #8283 from nmaeder)
- Make MaeWriter to throw on errors. (github pull #8297 from ricrogz)
- bump InChI version to 1.07.3 (github pull #8300 from greglandrum)
- addHs should ignore queries (github issue #8304 from cdvonbargen)
- Add RascalMCES option to require complete RingInfo rings (github pull #8305 from rachelnwalker)
- Atoms bonded to metal atoms should always have their H counts explicit in SMILES (github pull #8318 from greglandrum)
- cartridge: expose sanitize options to mol_from_ctab (github pull #8326 from greglandrum)
- Feat/use draw color in drawString() (github pull #8334 from greglandrum)
- Synthon Search Phase 2 (github pull #8338 from DavidACosgrove)
- bump yaehmop version (github issue #8395 from greglandrum)
Bug Fixes:
- Segmentation fault using None as property name in SetProp (github issue #4570 from bp-kelley)
- Python SIGSEGV when calling
rdkit.Chem.rdmolops.SplitMolByPDBResidueson some molecules (github issue #5599 from bzoracler) - Suspicious value for atom pair code calculation (github issue #6679 from QJ-Chen)
- Tautomer canonicalizer invariant violation (github issue #7044 from fioruggiu)
- Online Documentation:
Mol.GetAtomsandMol.GetBondsmiss signatures (github issue #7527 from e-kwsm) - Chem.MolToSmiles(mol, rootedAtAtom=pos), when the parameter rootedAtAtom is greater than or equal to 20, the range error is reported. (github issue #7572 from YOUNG-JAME)
- rdMolAlign.GetBestRMS gets stuck (github issue #7685 from LiuCMU)
- MergeQueryHs fails to detect explicit H involved in OR queries where there's more than 2 options in the query (github issue #7687 from ricrogz)
- Fix 4.3.0--4.4.0 sql upgrade script (github pull #7774 from esiaero)
- RWMol::insertMol should not add an empty ABSOLUTE_STEREO group unnecessarily (github issue #7782 from ptosco)
- Catch exceptions in MultithreadedMolSupplier callbacks (github pull #7810 from i-tub)
- HasPropWithValueQueryBase::getPair() may leak the value of RDValue. (github issue #7865 from ricrogz)
- Use .dylib on macOS for PostgreSQL 16+ (github pull #7869 from cho-m)
- Setting an atom's pdb residue number with None segfaults (github issue #7873 from bp-kelley)
- Restore "oops, exponential is a pain" code snippet in the RGD algorithm (github pull #7898 from ptosco)
- Fix some more mem errors in 2024.09.1 (github pull #7899 from ricrogz)
- UFF optimization leads to overlapping atoms (github issue #7901 from oboril)
- AssignStereochemistry(cleanIt=True) does not clean _CIPCode property on bonds (github issue #7929 from ricrogz)
- rxn.RunReactants mismatch directional bonds in a heterocycle ring (github issue #7944 from m-hyin)
- Fix for trimethylcyclohexane error (github pull #7949 from tadhurst-cdd)
- Fix incorrect CIP values for some aromatic atropisomers (github pull #7957 from tadhurst-cdd)
- Need to reserve space before assignment (github pull #7964 from bp-kelley)
- Fixes a regression introduced in #7582 which made all SWIG enums become type-unsafe (github pull #7972 from ptosco)
- Fix for removing bad stereo indications from Atropisomer parsing (github pull #7984 from tadhurst-cdd)
- Morgan fingerprints with chirality distinguish chiral atoms too early (github issue #7986 from greglandrum)
- Wrong SMARTS pattern in O-benzyl deprotection reaction (github issue #7989 from marcobICR)
- Fix for kekuleAtrop wedge error (github pull #7992 from tadhurst-cdd)
- RMS pruning in conformer generation misses conformers above the threshold (github issue #8001 from fwaibl)
- Fix potential division by zero in UFF TorsionAngle (github pull #8007 from ricrogz)
- Fix probe molecule transformation for ShapeAlign (github pull #8016 from greglandrum)
- DistanceConstraintContrib is not exposed to SWIG wrappers anymore (github issue #8019 from ptosco)
- MinimalLib and CFFI get_mol() will not remove Hs even when removeHs is set to true (github issue #8027 from ptosco)
- segfault when parsing molecule with high coordination number (github issue #8060 from garaboncias)
- Adding Hs to a linear molecule throws "Cannot normalize a zero length vector" (github issue #8065 from ricrogz)
- Handle DOS files in SynthonSpaceSearch (github pull #8075 from DavidACosgrove)
- reloading IPythonConsole breaks it (github issue #8082 from greglandrum)
- Avoid that map::at() throws an exception in case atomColourPalette includes neither 6 nor -1 (github pull #8085 from ptosco)
- Synthon search fp bug (github pull #8086 from DavidACosgrove)
- HetAtomTautomerv2 detects tautomerism at carboxylate (github issue #8090 from d-b-w)
- rdDetermineBonds segfaults when called from readonly directory (github issue #8092 from bp-kelley)
- Tanimoto score exceeds 1 for deuterium-containing molecules in rdShapeAlign.AlignMol() (github issue #8096 from fulopjoz)
- Rascal returns empty results even when told not to (github issue #8098 from DavidACosgrove)
- Use endian-aware read/write for length of string. (github pull #8105 from DavidACosgrove)
- normalizeDepiction() should always center coordinates on the coordinate centroid, irrespective of the canonicalize parameter (github pull #8107 from ptosco)
- Vulnerability fixes (github pull #8116 from thomp-j)
- symmetric ring finding not returning correct results for molecules with fragments (github issue #8121 from greglandrum)
- Fixes two out-of-bounds bugs in the InChI wrapper (github pull #8126 from greglandrum)
- Two out-of-bounds bugs in inchi interface (github issue #8129 from chbrown)
- Bad radical values are now ignored for MRV generation (github pull #8130 from tadhurst-cdd)
- INCHI-API:
add_custom_commandsignature problem (github issue #8138 from e-kwsm) - JavaWrappers: CMake
add_custom_commandhas multiple comments (github issue #8139 from e-kwsm) - Fix leaks in MIF wrappers (github pull #8143 from ricrogz)
- Fix division by zero in MIF descriptors (github pull #8144 from ricrogz)
- fix SetPositions when using strided numpy array (github pull #8150 from richardjgowers)
- Cyanamide incorrectly matches methyl-imidazole when aromaticMatchesConjugated is set (github issue #8162 from jones-gareth)
- Unify Mol rendering in IPython (github pull #8166 from asiomchen)
- improve handling of esters, amides, etc. in the v2 tautomer hash (github pull #8173 from greglandrum)
- bad conformer ID errors when drawing with unspecifiedStereoIsUnknown and prepareMolsBeforeDrawing drawoptions both set to false (github issue #8177 from oleksii-dukhno-bayer)
- Reaction Rendering Looks odd at small scales (github issue #8195 from bp-kelley)
- Rascal MCES missing an atom when ignoreAtomAromaticity is True (github issue #8198 from DavidACosgrove)
- RASCAL MCES gives duplicate results with singleLargestFrag = True (github issue #8200 from DavidACosgrove)
- Reaction products not being drawn with smooth corners (github issue #8209 from DavidACosgrove)
- Reaction drawing ignores panels, always draws across full canvas (github issue #8213 from DavidACosgrove)
- Generating inchi for chiral phosphates raises a warning (github issue #8238 from pechersky)
- Chiral phosphates no longer generate distinct inchi (github issue #8239 from pechersky)
- RascalMCES.FindMCES Produces Incorrect SMARTS Output (github issue #8246 from gratus907)
- Segmentation fault in EmbedMultipleConfs (github issue #8250 from maabuu)
- Rascal - Missing atoms in MCESs (github issue #8255 from laurenreid1)
- PR #8192 breaks AdjustQueryProperties / aromatizeIfPossible for some molecules. (github issue #8256 from ricrogz)
- MolBlocks should fail to write when given coordinates that are too large (github issue #8265 from bp-kelley)
- trimethylcyclohexane chirality error (github pull #8272 from tadhurst-cdd)
- Some mem fixes. (github pull #8276 from ricrogz)
- Fix buffer size in pickersCLI.cpp (github pull #8282 from al42and)
- molzip doesn't handle linker style zipping (github issue #8288 from bp-kelley)
- Another mem leak fix to the InChI conversion (github pull #8291 from ricrogz)
- Fix memory leaks in MolStandardize SWIG Wrapper (github pull #8298 from jones-gareth)
- Fix the way carbon is handed in cleanupOrganometallics() (github pull #8301 from greglandrum)
- Fix potential build error under MSVC (github pull #8302 from ricrogz)
- Explicit valence of carbon > 4 not permitted (github issue #8312 from schatzsc)
- apply query adjustments when makeAtomsGeneric is enabled (github pull #8315 from greglandrum)
- Ignore invalid chirality labels when reading MAE inputs (github issue #8346 from whosayn)
- Unable to write wiggly bond information by default (github issue #8348 from whosayn)
- Calling expandQuery on an empty QueryAtom crashes the program (github issue #8353 from DavidACosgrove)
- stereo atoms not set for STEREOANY bonds when using the new stereo code (github issue #8364 from greglandrum)
- cis/trans markers in CXSMILES being interpreted incorrectly (github issue #8365 from greglandrum)
Cleanup work:
- Fix some mem errors in 2024.09.1 (github pull #7867 from ricrogz)
- FindPython Development.Module instead of Development (github pull #7881 from pechersky)
- Use smart pointer for buffer. (github pull #7883 from DavidACosgrove)
- Modernise ExplicitBitVect. (github pull #7884 from DavidACosgrove)
- Update
PUBCHEMSHAPE_URLand remove patch code (github pull #7900 from eunos-1128) - Replace awful enum reflection macros with Better Enums (github pull #7913 from ptosco)
- ... and more mem errors fixed (github pull #7924 from ricrogz)
- Replace GetImplicitValence() and GetExplicitValence() with GetValence() (github pull #7926 from greglandrum)
- SA Score updates (github pull #7928 from DavidACosgrove)
- Remove deprecation warnings by switching MinimalLib to fingerprint generators (github pull #7938 from ptosco)
- One final round of mem errors (github pull #7943 from ricrogz)
- Fix misnamed test (github pull #7952 from ricrogz)
- Make sure that FreeSASA can be built as DLL on Windows (github pull #7985 from ptosco)
- Remove unused code from GraphMol/SmilesParse (github pull #7996 from whosayn)
- Throw when attempting to normalize a Zero RDGeom::Point (github pull #8008 from ricrogz)
- Avoid division by zero in DrawMol (github pull #8011 from ricrogz)
- remove no-op macros and dead code (pt 1) (github pull #8012 from whosayn)
- Avoid division by zero in AlignPoints (github pull #8013 from ricrogz)
- Fix shifting of a potentially negative number (github pull #8014 from ricrogz)
- Fix some minor issues reported by ubsan and the compiler (github pull #8015 from ricrogz)
- remove no-op macros and dead code (pt 2) (github pull #8035 from whosayn)
- remove no-op macros and dead code (pt 4) (github pull #8037 from whosayn)
- Remove explicit default constructor from Compute2DCoordParameters (github pull #8046 from d-b-w)
- Remove warnings from
npscorer.py(github issue #8052 from mvisani) - Minor MinimalLib cleanup (github pull #8112 from ptosco)
- fix: apply modernize-use-nullptr (github pull #8134 from e-kwsm)
- relax two tolerances for ARM64 builds (github pull #8148 from tadhurst-cdd)
- Fix build under gcc-14 (github pull #8378 from ricrogz)
Documentation:
- The Python type hint for GetMolLayers in RegistrationHash.py appears incorrect (github issue #7650 from yechenqiao)
- Getting Started with Contributing to RDKit (github pull #7813 from RPirie96)
- Documentation updates (github pull #7933 from greglandrum)
- expanded documentation in Chem and AllChem (github pull #8004 from greglandrum)
- Mol to smiles docs (github pull #8005 from DavidACosgrove)
- fixing the doc string in the shape alignment code (github pull #8040 from brje01)
- Improve doc string for ParseAbbreviations in python wrapper. (github pull #8049 from DavidACosgrove)
- Some documentation updates (github pull #8080 from greglandrum)
- document H atoms in SMARTS (github pull #8081 from greglandrum)
- Add section
How to Build RDKit Documentation Locally(github pull #8120 from bertiewooster) - Expand on Explicit Valence Error - Partial Sanitization recipe (github pull #8131 from bertiewooster)
- GetAtomsMatchingQuery: Tell where to find query options for (github pull #8132 from bertiewooster)
- Explain how to run doctests locally (github pull #8135 from bertiewooster)
- Update KNIME section in GettingStartedWithContributing (github pull #8174 from knalice)
- Update InChi links (github pull #8187 from RubenChM)
- Fix typo in documentation (github pull #8220 from nmaeder)
Code removed in this release:
- AtomPairs.Utils.NumPiElectrons was removed, please use Chem.GetNumPiElectrons instead.
- The classes DistViolationContrib, ChiralViolationContrib, and FourthDimContrib were removed, please use DistViolationContribs, ChiralViolationContribs, and FourthDimContribs instead.
- The function
MMFF::setMMFFAromaticity()was removed, please useMolOps::setMMFFAromaticity()instead.
Deprecated code (to be removed in a future release):
- The functions Atom::getImplicitValence() and Atom::getExplicitValence() are deprecated, please use Atom::getValence(Atom::ValenceType::IMPLICIT) or Atom::getValence(Atom::ValenceType::EXPLICIT) instead
Files
rdkit/rdkit-Release_2025_03_1.zip
Files
(85.2 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:86a73348145beea74d933a35196e863d
|
85.2 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/rdkit/rdkit/tree/Release_2025_03_1 (URL)
Software
- Repository URL
- https://github.com/rdkit/rdkit