UNPKG

debugdebug

Version:

JavaScript distribution of cheminformatics functionality from the RDKit - a C++ library for cheminformatics.

1,048 lines (1,015 loc) 588 kB
# Release_2022.09.1 (Changes relative to Release_2022.03.1) ## Backwards incompatible changes ## Code removed in this release: - The C++ class `RDLog::BlockLogs` has been removed. Please use the class `RDLog::LogStateSetter`. The Python class rdBase.BlockLogs() is still available and supported. - Python function `rdkit.Chem.WrapLogs()` has been removed. Please use `rdkit.rdBase.LogToPythonStderr()`. `rdkit.rdBase.WrapLogs()` also exists, but unless you need the old teeing behavior, prefer the former. - Python function `rdkit.Chem.LogWarningMsg()` has been removed. Please use `rdkit.rdBase.LogWarningMsg()`. - Python function `rdkit.Chem.LogErrorMsg()` has been removed. Please use `rdkit.rdBase.LogErrorMsg()`. ## Deprecated code (to be removed in a future release): # Release_2022.03.1 (Changes relative to Release_2021.09.1) ## Backwards incompatible changes - When running in Jupyter Notebook, logs are now sent only to Python's standard error stream, and no longer include the `RDKit LEVEL` prefix. - The Debug and Info logs are now disabled by default. If you would like to enable them within your code you can call `rdBase.EnableLog("rdApp.info")` and/or `rdBase.EnableLog("rdApp.debug")`. - The MolHash functions now reassign stereochemistry after modifying the molecule and before calculating the hash. Previous versions would still include information about atom/bond stereochemistry in the output hash even if that no longer applies in the modified molecule. - The rules for aromaticity in rings containing dummy atoms have been changed. The general intention of the new handling is that aromaticity will not be perceived for rings containing dummy atoms unless it's clear that the dummies should be aromatic. As an example: the SMILES `C1=C*2=CC=CC=*2C=C1` is perceived to be aromatic while the SMILES `C1=C*2C=CC=C*2C=C1` (which does not have any double bonds to the dummy atoms) is not; in previous RDKit releases both of these structures were aromatic. There's more information about this in the discussion of PR #4722 (https://github.com/rdkit/rdkit/pull/4722) and Issue #4721 (https://github.com/rdkit/rdkit/issues/4721). - In the PostgreSQL cartridge the `mol_in()` function no longer performs full sanitization of the molecule. One consequence of this is that directly casting from strings to molecules also no longer does sanitization, so `select 'CN(=O)=O'::mol` does not sanitize the molecule. If you want to convert a string to a molecule with full sanitization you can either cast to `text` first (i.e. `select 'CN(=O)=O'::text::mol` or use the `mol_from_smiles()` function. - The code to calculate bit vector topological torsion fingerprints for reactions no longer ignore the fingerprint size argument. - The rules for tautomer enumeration in `MolStandardize` have been updated to more closely match the rules in the original publication. These changes primarily consist of making the rules more specific; the consequence is that less tautomers will be generated with this version. The previous rules can still be accessed via the function `GetV1TautomerEnumerator()` (Python) or `getV1TautomerEnumerator()` (C++) ## Highlights - The RDKit can now integrate with the python logger: calling `rdBase.LogToPythonLogger()` enables this. All log messages are sent to a logger named "rdkit". - The backend of the MolDraw2D code has been extensively refactored. This should be mostly invisible to RDKit users, but it makes supporting and extending that code much easier. - Beilstein generics (i.e. things like "ARY", "ALK", or "CAL") are now supported when doing substructure queries. This is a first step towards enabling some really cool substructure search possibilities. ## Acknowledgements Marcel Baltruschat, Jason Biggs, Kevin Burk, Cédric Bouysset, David Cosgrove, Joel Duerksen, Jacob Gora, Gareth Jones, Toshiki Kataoka, Eisuke Kawashima, Brian Kelley, Sonia Liggi, Niels Kristian Kjærgård Madsen, Hector Martinez-Seara, Dan Nealschneider, Alex Rebert, Ricardo Rodriguez-Schmidt, Steve Roughley, Roger Sayle, Nikolai Schapin, Ansgar Schuffenhauer, Kaushalesh Shukla, Jon Sorenson, Ichiru Take, Paolo Tosco, Kazuya Ujihara, Fabio Urbina, Riccardo Vianello Rachel Walker, Maciej Wójcikowski, SPKorhonen, yuri@FreeBSD, ## Code removed in this release: - The `useCountSimulation` keyword argument for `rdFingerprintGenerator.GetMorganGenerator` and `rdFingerprintGenerator.GetAtomPairGenerator` has been removed. Please use the `countSimulation` keyword argument instead. - The function `mol_from_smarts()` in the PostgreSQL cartridge has been removed. Please use the `qmol_from_smarts()` function instead. - The `computeBalabanJ()` functions from the `MolOps` namespace were removed. These were not exposed to Python, so this will not affect any Python code. ## Bug Fixes: - Fix Flake8 erorrs (github pull #4252 from e-kwsm) - handle sqlalchemy deprecation (github pull #4625 from greglandrum) - Debug build of the postgres cartridge fails pg_regress tests for reaction.sql (github issue #4631 from rvianello) - fix parsing beyond the end of the input string in findMCSsmiles (github pull #4636 from rvianello) - Mem leak fixes (github pull #4637 from ricrogz) - Subsequent call to rdChemReactions.ChemicalReaction.RunReactants will block indefinitely. (github issue #4651 from goraj) - Fix docstring of ConstrainedEmbed (github pull #4666 from kazuyaujihara) - Postgres cartridge build fails under Ubuntu (github issue #4681 from SPKorhonen) - Molfile SDD records not properly displayed (github pull #4690 from jones-gareth) - RGD: fix for cores with MOL block atom lists (github pull #4695 from jones-gareth) - Wrong tautomers generated (github issue #4700 from sonial) - RGD align output core to input structure (github pull #4709 from jones-gareth) - TorsionFingerprints raises error with S(Cl)F4 group (github issue #4720 from kazuyaujihara) - Dummy atoms next to aromatic are always kekulized even when they should not (github issue #4721 from ptosco) - TautomerEnumerator will crash if copied with a callback set (github issue #4736 from ptosco) - Minor PandasTools cleanup (github pull #4744 from ptosco) - Reaction parser fails when CX extensions are present (github issue #4759 from greglandrum) - GetSimilarityMapFromWeights changes behavior of parameter "colorMap" depending on whether the parameter "draw2d" is provided or not (github issue #4763 from FabioUrbina) - Highlight bond width is different for different PNG image sizes (github issue #4764 from rachelnwalker) - Fixes crashing bug with finalSubstructChecks (github pull #4782 from greglandrum) - MDL query with aromatic bond sets aromatic flag on atoms even though they are not in an aromatic ring (github issue #4785 from ptosco) - [Cartridge]: qmol_from_ctab and qmol_from_smiles are sanitizing molecules (github issue #4787 from greglandrum) - AdjustQueryProperties() is inconsistent when adjustConjugatedFiveRings is set (github issue #4789 from greglandrum) - `Draw.MolToFile` to SVG raises "Can't kekulize" error (github issue #4792 from toslunar) - Ring double bonds written as crossed bonds after RGD (github issue #4809 from greglandrum) - Fix a number of crashing bugs in the python wrappers (github pull #4810 from greglandrum) - correctly tag unspecified branch-begin bonds in SMARTS (github pull #4811 from greglandrum) - AttributeError in PandasTools (github issue #4821 from greglandrum) - reloading PandasTools leads to infinite recursion (github issue #4823 from greglandrum) - ReplaceCore should set stereo on ring bonds when it breaks rings (github issue #4825 from greglandrum) - MolDraw2D::drawArc() starts at wrong angle (github issue #4836 from greglandrum) - MolDraw2D::drawArc() not exposed to Python (github issue #4837 from greglandrum) - align argument to MolDraw2D::DrawString() cannot be used from Python (github issue #4838 from greglandrum) - Fix RunFilterCatalog() thread counts. (github pull #4856 from xavierholt) - RGD: dummy atom in input structure is mishandled (github pull #4863 from jones-gareth) - Fix bug with wedges being drawn backwards (github pull #4868 from greglandrum) - Missing dependency on RDKit::RingDecomposerLib_static in RDKit::GraphMol_static (github issue #4875 from nielskm) - cannot parse coordinate bonds from CXSMARTS (github issue #4878 from greglandrum) - fix some leaks in the SWIG wrappers (github pull #4916 from greglandrum) - Fix some problems turned up by ossfuzz (github pull #4927 from greglandrum) - Fix i-files for RDK_USE_BOOST_IOSTREAMS=OFF (github pull #4933 from kazuyaujihara) - Fails on i386: non-constant-expression cannot be narrowed from type 'unsigned int' to 'npy_intp' (aka 'int') in initializer list (github issue #4934 from yurivict) - Fix SWIG wrappers for C# (github pull #4935 from kazuyaujihara) - Definition of eccentricity in documentation is wrong (github issue #4952 from drkeoni) - fix CMakeLists.txt extracting link line from python LDSHARED config var (github pull #4954 from rvianello) - add JavaGzStreamTests (github pull #4973 from kazuyaujihara) - Invalid SMARTS generated by MolToSmarts (github issue #4981 from nielskm) - Fix memory safety issues found by OSS-Fuzz (github pull #4983 from alpire) - AssignStereochemistry should remove nonchiral atoms from StereoGroups (github pull #4986 from greglandrum) - Transform3D#SetRotation() around arbitrary axis scales coordinates (github issue #4995 from sroughley) - Bad handling of dummy atoms in the CIP assignment code (github issue #4996 from greglandrum) - Bad handling of fragments in CIP code (github issue #4998 from greglandrum) - Drawing query atoms containing an AND query raises an exception (github issue #5006 from ptosco) - Bad tautomers produced for phosphorous compounds (github issue #5008 from NikSchap2107) - Fix warning when generating coordinates for ZOBs (github pull #5011 from d-b-w) - Code in the docstring for `FindMolChiralCenters()` doesn't work (github pull #5014 from greglandrum) - Mol images in DataFrames are drawn only once in Jupyter Lab (github issue #5017 from mrcblt) - Drop `gist_qmol_ops` in upgrade scripts in case it exists (github pull #5021 from mwojcikowski) - Remove extra newline from Kekulize error message. (github pull #5022 from xavierholt) - Neighboring Hs not taken into account in connectivity invariants (github issue #5036 from greglandrum) - smiles parsing error due to erroneous ring perception (github issue #5055 from AnsgarSchuffenhauer) - To INCHI conversion leaks on kekulization failure (github pull #5057 from ricrogz) - Add a CXSMILES option to the MolHash (github pull #5058 from greglandrum) - Make the RGD code work when `rgroupLabelling` is `Isotope` (github pull #5088 from greglandrum) - Compilation issue with catch.hpp (github issue #5089 from hseara) - pg_restore: error: COPY failed for table "mols": ERROR: could not create molecule from SMILES (github issue #5095 from joelduerksen) - Removing H preserving only wedged ones strips all H (github issue #5099 from ricrogz) - fix a mistake in the enhanced stereochemistry substructure table (github issue #5101 from greglandrum) - NumRotatableBonds() incorrect for partially sanitized molecule (github issue #5104 from greglandrum) - Wiggly bonds don't override wedged bonds (github issue #5108 from greglandrum) ## Cleanup work: - Do the deprecations for the 2022.03 release (github pull #4626 from greglandrum) - clang-tidy: readability-simplify-boolean-expr (github pull #4639 from e-kwsm) - Clean-up Python 4815 - P1.1: Chem\AtomPairs (github pull #4859 from IchiruTake) - Clean-up Python #4815 - P1.2: Chem/ChemUtils (github pull #4860 from IchiruTake) - Clean-up Python #4815 - P1.3: Chem\Draw (github pull #4891 from IchiruTake) - Clean-up Python #4815 - P1.4: Chem\EState (github pull #4893 from IchiruTake) - Clean-up Python #4815 - P1.5: Chem\FeatMaps (github pull #4894 from IchiruTake) - Clean-up Python #4815 - P1.6: Chem\Features (github pull #4896 from IchiruTake) - Clean-up Python #4815 - P1.8: Chem\fmcs (github pull #4898 from IchiruTake) - Clean-up Python #4815 - P1.9: Chem\Fraggle (github pull #4906 from IchiruTake) - Clean-up Python #4815 - P1.10: Chem\MolDb (github pull #4907 from IchiruTake) - Clean-up Python #4815 - P1.11: Chem\MolKey (github pull #4910 from IchiruTake) - Clean-up Python #4815 - P1.12: Chem\MolStandardize (github pull #4911 from IchiruTake) - Clean-up Python #4815 - P1.13: Chem\Pharm2D & Chem\Pharm3D (github pull #4912 from IchiruTake) - Clean-up Python #4815 - P1.14: Chem\Scaffolds & Chem\SimpleEnum (github pull #4913 from IchiruTake) - Run clang-tidy (readability-braces-around-statements) (github pull #4977 from e-kwsm) - silence warnings in MSVC compliatons (github pull #5044 from bp-kelley) - Clean up the warning landscape (github pull #5048 from greglandrum) - Cleanup of python API documentation stubs (github pull #5105 from greglandrum) ## New Features and Enhancements: - Update coordgenlibs to v3.0.0 (github pull #4638 from ricrogz) - Fix some compile-time warnings in the postgres cartridge code (github pull #4657 from rvianello) - Add some new color palettes to MolDraw2D (github pull #4668 from greglandrum) - Add support for Beilstein generics when doing substructure queries (github pull #4673 from greglandrum) - Remove unnecessary mutex in InChI wrapper (github pull #4680 from greglandrum) - Update mac CI builds (github pull #4738 from greglandrum) - Remove dead code (github pull #4739 from ptosco) - Refactor the memory management of the postgres cartridge cache module (github pull #4755 from rvianello) - Improve CMake integration of PgSQL build (github pull #4767 from ptosco) - Allow MolDraw2DCairo and MolDraw2DSVG to determine canvas size based on the molecule (github pull #4772 from greglandrum) - generate the sql update files in the binary (build) directory (github pull #4777 from rvianello) - Allow using heavy atoms only in the FragmentChooser (github pull #4791 from ptosco) - silence warnings in MSVC compilations (github pull #4796 from bp-kelley) - Support using the python logger (github issue #4840 from xavierholt) - Add support for quadruple bonds in SMILES (github issue #4842 from jasondbiggs) - Some refactoring of the depictor code (github pull #4865 from greglandrum) - Build documentation for 3 missing modules (github pull #4879 from ptosco) - Add access to query atom symbols from python or an option to render them in images (github issue #4880 from rachelnwalker) - Start adding move constructors and move-assignment operators (github pull #4909 from greglandrum) - Refactor mol draw2 d (github pull #4948 from DavidACosgrove) - [ENH]: Support greater use of `findAtomEnvironmentOfRadiusN()` (github pull #4970 from IchiruTake) - Move isEarlyAtom to a table to reduce lock contention in getPeriodicTable (github pull #4980 from bp-kelley) - Support writing V3000 reactions (github pull #4982 from greglandrum) - Make FMCS check bond stereo. (github pull #5009 from DavidACosgrove) - Improving atom colors for dark mode. (github pull #5038 from kaushaleshshukla) - enable the multithreaded LeaderPicker on linux (github pull #5043 from greglandrum) - Expose MolzipParams::atomSymbols to python (github pull #5054 from bp-kelley) - disable Info and Debug logs by default (github pull #5065 from greglandrum) - Add sanitize option to molzip (github pull #5069 from bp-kelley) - "Powered by RDKit" Badge (github pull #5085 from cbouy) - Add a couple of depiction helper functions and some JS bindings (github pull #5115 from ptosco) - Swig MolDraw2D cairo (github pull #5128 from jones-gareth) - Enables rdkit-structure-renderer.js in Jupyter Lab and Notebook (github pull #5132 from ptosco) ## Deprecated code (to be removed in a future release): - Python function `rdkit.Chem.WrapLogs()` is deprecated in favor of `rdkit.rdBase.LogToPythonStderr()`. `rdkit.rdBase.WrapLogs()` also exists, but unless you need the old teeing behavior, prefer the former. - Python function `rdkit.Chem.LogWarning()` is deprecated in favor of `rdkit.rdBase.LogWarning()`. - Python function `rdkit.Chem.LogError()` is deprecated in favor of `rdkit.rdBase.LogError()`. - The C++ class `RDLog::BlockLogs` is deprecated in favor of the the class `RDLog::LogStateSetter`. # Release_2021.09.1 (Changes relative to Release_2021.03.1) ## Backwards incompatible changes - `RWMol.replaceAtom()` no longer removes `SubstanceGroups` which reference that atom. - The `keepSGroups` argument to `RWMol.replaceBond()` now defaults to true. - The SMARTS parser now by default accepts CXSMILES extensions and molecule names. SMARTS which previously failed to parse like `CCC fail` will now return valid molecules. - Molecule names in SMILES and SMARTS are now parsed by default. Previously they were ignored. - The `getParams()` function for retrieving UFF parameters now returns a const pointer instead of a standard pointer. This shouldn't affect the functionality of any code since the only method of the class is also const. ## Highlights - Single reactant/single product reactions can now be applied in-place. This really helps with the performance of these kinds of transformations. - The CFFI wrapper around MinimalLib greatly expands the number of possible places the RDKit can be used from. - A number of general enhancements and quality-of-life improvements were made to the PostgreSQL cartridge. ## Acknowledgements Jason Biggs, Kit Choi, David Cosgrove, Eloy Félix, Harrison Green, Gareth Jones, Eisuke Kawashima, Alan Kerstjens, Brian Kelley, John Konecny, Stephanie Labouille, Rasmus Lundsgaard, Hadrien Mary, Michel Moreau, Dan Nealschneider, Axel Pahl, Maximilian Peters, Alessio Ragno, Ricardo Rodriguez-Schmidt, Riccardo Sabatini, Roger Sayle, Vincent F. Scalfani, Dan Skatov, David Slochower, Peter St. John, Mihaly Szabo, Ichiru Take, Paolo Tosco, Ivan Tubert-Brohman, Kazuya Ujihara, Alain Vaucher, Riccardo Vianello, Rachel Walker, Shuzhe Wang, Maciej Wójcikowski, bzoracler, jungb-basf, charly828, yoer77, ## Code removed in this release: - The minimizeOnly option for coordgen has been removed. ## Contrib updates: - Contribute FreeWilson analysis (github pull #4026 from bp-kelley) ## Bug Fixes: - cannot pass drawOptions to MolsToGridImage when using notebook (github issue #3101 from slochower) - Draw.MolToImage() cannot highlight with highlightMap (v > '2019.09.3' ) (github issue #3616 from spideralessio) - EnumerateStereoisomers fail with STEREOANY bonds from molblock (github issue #3759 from TermeHansen) - Double bond stereo gets flipped by SMILES reader/writer (github issue #3967 from mwojcikowski) - SparseIntVect copy constructor and assignment operators not clearing existing data (github issue #3994 from AlanKerstjens) - MolFragmentToSmiles with kekuleSmiles=True raises AtomKekulizeException (github issue #3998 from kazuyaujihara) - update clang version for linux CI fuzzer builds (github pull #4012 from greglandrum) - Update coordgen to 2.0.3 (github pull #4017 from d-b-w) - Get SWIG wrappers working with C# again (github pull #4020 from kazuyaujihara) - replaceSidechains creates aromatic dummy atoms (github pull #4022 from ptosco) - A set of fixes for problems caused by bad input (github pull #4033 from greglandrum) - Cleanup some problems found during an ASAN build (github pull #4054 from greglandrum) - Avoid that lone atoms which are part of a ring in one of the molecules become part of the MCS (github pull #4065 from ptosco) - StereoGroups not preserved by RenumberAtoms() (github issue #4071 from greglandrum) - call to pyAvalonTools.Generate2DCoords results in an assert violation (github issue #4075 from rvianello) - Update boost download location in Dockerfile (github pull #4094 from greglandrum) - HCount field in v2000 Mol blocks ignored (github issue #4099 from riccardosabatini) - Reactions don't propagate bond properties (github issue #4114 from d-b-w) - RemoveStereochemistry should also remove stereogroups (github issue #4115 from greglandrum) - Avoid that MolStandardizer segfaults on empty mols (github pull #4119 from ptosco) - SEGV in RWMol::commitBatchEdit (github issue #4122 from hgarrereyn) - SEGV in ROMol::getAtomDegree if atom is not in graph (github issue #4127 from hgarrereyn) - SEGV from unsigned integer overflow in Conformer::setAtomPos (github issue #4128 from hgarrereyn) - HCOUNT from v3000 CTABS incorrectly interpreted (github issue #4131 from greglandrum) - Empty query produces empty match, but at the same time is considered non-matching (github issue #4138 from i-tub) - fixed AddBond documentation (github pull #4142 from Ashafix) - Possible bug with `EnumerateStereoisomers` (github issue #4144 from stephanielabouille) - Odd drawing behavior with radicals and MolsToGridImage (github issue #4156 from pstjohn) - pre-condition violation when sanitizing a de-pickled reaction (github issue #4162 from jasondbiggs) - Many of the PMI descriptors are not being recalculated for different conformers (github issue #4167 from greglandrum) - bug in MDLParser.cpp when reading a rxn file in v3000 format that contains agents (github issue #4183 from jungb-basf) - Potentially chiral bridgehead atoms not being identified. (github pull #4192 from greglandrum) - allow more recoverable V3000 parsing errors when strictParsing=false (github pull #4210 from greglandrum) - RGD: Fix memory leak with deleting array (github pull #4211 from bp-kelley) - UnfoldedRDKFingerprintCountBased returns a different fingerprint length for every molecule (github issue #4212 from greglandrum) - rdMolHash.MolHash fails on non-standard valences (github issue #4222 from ricrogz) - Fix a couple of problems with fingerprint count simulation (github pull #4228 from greglandrum) - Chem.MolFromSmiles using SmilesParserParams throws exceptions (github issue #4232 from greglandrum) - Parse failure for data groups in CXSMILES (github issue #4233 from greglandrum) - double bonds now have EITHER stereo if no coordinates are present (github pull #4239 from greglandrum) - Fix CMakeLists for FileParsers (github pull #4240 from kazuyaujihara) - Multiple ATTCHPT entries for one atom handled incorrectly (github issue #4256 from greglandrum) - Exception thrown by reionizer when dealing with Mg+2 (github issue #4260 from greglandrum) - Fallback ring finding failing on molecules with multiple fragments (github issue #4266 from avaucher) - Make sure that ResonanceMolSupplier substructure matches are uniquified consistently (github pull #4274 from ptosco) - FindPotentialStereo() doesn't find *marked* ring stereo when flagPossible=False (github issue #4279 from greglandrum) - The normalization pattern for pyridine N-oxide is not specific enough (github issue #4281 from ptosco) - computeCanonicalTransform may generate non-canonical coords (github issue #4302 from ptosco) - Unreasonable calculation of implicit valence for atoms with query bonds (github issue #4311 from greglandrum) - call to AvalonTools::set2DCoords results in an assert violation (github issue #4330 from jasondbiggs) - MolBlock writer gives non-stereo double bonds "unspecified" parity (github issue #4345 from d-b-w) - Specified trans stereo being ignored during conformation generation in macrocycles (github issue #4346 from greglandrum) - Two MinGW build fixes and one MSVC build fix (github pull #4347 from ptosco) - Fixes RDK_BUILD_THREADSAFE_SSS=OFF build (github pull #4349 from ptosco) - clean up some leaks identified by an ASAN build (github pull #4354 from greglandrum) - Three more Windows build fixes (github pull #4356 from ptosco) - Specified grid spacing for ShapeTanimotoDistance is ignored. (github issue #4364 from greglandrum) - Need implicit H cleanup after rdMolEnumerator.Enumerate() (github issue #4381 from greglandrum) - rdMolEnumerator.Enumerate fails on variable attachment points with queries (github issue #4382 from greglandrum) - RDKit reaction produces wrong double bond stereochemistry (github issue #4410 from mwojcikowski) - "to-Python converter already registered; second conversion method ignored." warnings issued at import (github issue #4425 from ricrogz) - v2000 SGroups do not generate an "index" property (github issue #4434 from ricrogz) - pg_restore does not work with some mol type molecule (github issue #4442 from mihalyszabo88) - Building with static dependencies breaks CMake exports (github issue #4449 from ricrogz) - DataStruct vectors leak when iterating (github issue #4465 from bp-kelley) - SGroups: Additional SDT properties not decoded if FIELDNAME is empty (github issue #4476 from greglandrum) - Test failure in reaction.sql (github issue #4486 from yoer77) - Small rings can have STEREOANY/EITHERDOUBLE bonds (github issue #4494 from ricrogz) - OR queries involving aromatic atoms cannot be drawn (github issue #4496 from ptosco) - MolFromSmiles and MolFromSmarts incorrectly accepting input with spaces (github issue #4503 from greglandrum) - Native 2D layout engine may generate overlapping coordinates (github issue #4504 from ptosco) - SubstanceGroup labels sometimes overlap with atoms in image generation (github issue #4508 from rachelnwalker) - SGroups do not have a way of unsetting properties from Python (github issue #4514 from ricrogz) - operator<< is declared for AtomPDBResidueInfo but not defined (github issue #4535 from greglandrum) - Improve test coverage and some bug fixes (github pull #4536 from greglandrum) - Seg fault in MolDraw2D::drawMolecules() (github issue #4538 from greglandrum) - Salt removal forces sanitization (github issue #4550 from ricrogz) - fix a thread-safety bug in the UFF parameter loading (github pull #4553 from greglandrum) - GetSubstructMatches() loops at 43690 iterations. (github issue #4558 from ricrogz) - failure to parse CTAB with LINKNODE and SGROUP (github issue #4561 from greglandrum) - Requesting "density" fingerprint Hydrogen molecule fails with exception (github issue #4567 from ricrogz) - Incorrect double bond stereo in output SMILES around ring closures (github issue #4582 from greglandrum) - migrate the MHFP implementation to use boost::random (github pull #4603 from rvianello) - Fix EnumerateStereoisomers with tryEmbedding (github pull #4615 from kazuyaujihara) ## New Features and Enhancements: - Support Chemical Markup Language, CML, for writing (github pull #3024 from e-kwsm) - Add Eigen to ExternalProject and automatically download if RDK_BUILD_DESCRIPTORS3D (github pull #3075 from e-kwsm) - updates to postgreSQL cartridge (github pull #3976 from greglandrum) - Update Overview.md (github pull #3992 from charly828) - MinimalLib: add CFFI interface (github pull #4018 from greglandrum) - Contribute FreeWilson analysis (github pull #4026 from bp-kelley) - Allow partial deserialization of molecules (github pull #4040 from greglandrum) - Add datamol project (github pull #4046 from hadim) - Build BCUT when RDK_BUILD_DESCRIPTORS3D=OFF (github pull #4085 from kazuyaujihara) - Making RDKit minimallib (JS lib) available through the npm package manager (github pull #4086 from MichelML) - Normalize line endings in source code files (github pull #4104 from ptosco) - Allow MolToQPixmap to support PySide2 (github pull #4110 from kitchoi) - update ChEMBL projects in Projects using RDKit (github pull #4116 from eloyfelix) - A collection of MolStandardize improvements (github pull #4118 from greglandrum) - Run clang-format against header files (github pull #4143 from e-kwsm) - Some miscellaneous MinimalLib enhancements (github pull #4169 from ptosco) - [MinimalLib] Add number of heavy atoms to descriptors (github issue #4184 from apahl) - Comments added to RGD core matching (github pull #4189 from jones-gareth) - Fix/rdprop integer conversions (github pull #4194 from bp-kelley) - RWMol cleanup (github pull #4198 from greglandrum) - Test comparing SVGs via hash code - ready for review (github pull #4199 from DavidACosgrove) - support getNumAtoms and getNumHeavyAtoms as Descriptors (github pull #4200 from greglandrum) - Canon.cpp canonicalizeDoubleBond function refactor (github pull #4204 from jfkonecn) - Add low level functions to bulk-update Substance Group atoms & bonds (github pull #4206 from ricrogz) - Run clang-tidy (modernize-pass-by-value) (github pull #4224 from e-kwsm) - Shift `Trajectory` and `Snapshot` constructors to methods on classes (github pull #4225 from bzoracler) - Allow depiction of "either" double bonds as "wiggly neighbors" (github issue #4238 from d-b-w) - Some cartridge enhancements (github pull #4271 from greglandrum) - [Enhancement]: Allow every bit-vect fixed-size fingerprints can be directly embedded || attached into the (Numpy) Array or return the Numpy Array (github issue #4273 from IchiruTake) - Turn MRV_COORDINATE_BOND_TYPE data Substance Groups into coordinate bonds (github pull #4299 from ricrogz) - Support using SubstructMatchParameters in RGD (github pull #4318 from greglandrum) - Add partial CXSMARTS support (github issue #4319 from greglandrum) - Support toggling components of CXSMILES output (github issue #4320 from greglandrum) - Switch to using InChI v1.06 (github issue #4322 from greglandrum) - support using RGBA colors (github issue #4323 from greglandrum) - MinimalLib: return fingerprints as BitSets (github issue #4329 from dskatov) - Expose atomColourPalette as JSON drawOption (github pull #4337 from ptosco) - Improved sgroup output (github pull #4343 from greglandrum) - support get_json in the rdkitjs wrapper (github pull #4348 from greglandrum) - Enable using the URF library in Windows static builds (github pull #4357 from ptosco) - a few doxygen comment fixes (github pull #4368 from jasondbiggs) - Enable building Java wrappers with MinGW compilers (github pull #4384 from ptosco) - add exactmw to cartridge (github issue #4386 from greglandrum) - Some cartridge additions and fixes (github pull #4387 from greglandrum) - Remove SWIG kludge on Windows (github pull #4388 from ptosco) - CXSMILES improvements (github pull #4396 from greglandrum) - SubstructLibrary improvements (github pull #4403 from greglandrum) - Add 3 new examples to Cookbook. (github pull #4404 from vfscalfani) - cleanup the use of lambdas in the code (github pull #4432 from greglandrum) - Swap from RDUNUSED_PARAM to unnamed parameters (github pull #4433 from greglandrum) - Fix #4442 and other cartridge improvements (github pull #4448 from greglandrum) - RDKit Cartridge: qmol GiST support (github issue #4463 from mwojcikowski) - Add ToList method to Sparse/ExplicitBitVector (github pull #4467 from bp-kelley) - GiST support to qmol type (github pull #4470 from mwojcikowski) - be more tolerant when kekulizing (github pull #4492 from greglandrum) - Allow applying single-reactant/single-product reactions in place (github pull #4511 from greglandrum) - Add custom distance bounds parameter for ETKDG conformer generation (github pull #4516 from hjuinj) - cleanup some compiler warnings (github pull #4521 from greglandrum) - Improve test coverage and some bug fixes (github pull #4536 from greglandrum) - Additions to the jupyter integration (github pull #4541 from greglandrum) - another round of cartridge improvements (github pull #4543 from greglandrum) - Major speed-up of RGD scoring (github pull #4544 from ptosco) - Expose get_smarts to JS (github pull #4547 from ptosco) - Improve performance of removing substruct/tautomer duplicates (github pull #4560 from ricrogz) - Add support for SRUs to MolEnumerator (github pull #4563 from greglandrum) - Adds KeyFromPropHolder to hold user defined indices (github pull #4571 from bp-kelley) - add ROMol::atomNeighbors() and ROMol::atomBonds() (github pull #4573 from greglandrum) - Improvements to some constructors in python wrappers (github pull #4581 from greglandrum) - Add FreeSASA support to Windows builds (github pull #4584 from ptosco) - use V3K mol blocks in PNG metadata (github pull #4588 from greglandrum) - Prevent some loop variables from creating unnecessary copies (github pull #4610 from rvianello) - Rename the molLinkNode property to _molLinkNode (github pull #4614 from greglandrum) - Fix clang warning `-Wabsolute-value` (github pull #4616 from e-kwsm) ## Deprecated code (to be removed in a future release): - The `useCountSimulation` keyword argument for `rdFingerprintGenerator.GetMorganGenerator` and `rdFingerprintGenerator.GetAtomPairGenerator` has been deprecated and will be removed in the next release. Please use the `countSimulation` keyword argument instead. - The function `mol_from_smarts()` in the PostgreSQL cartridge has been deprecated and will be removed in the next release. Please use the `qmol_from_smarts()` function instead. - The `computeBalabanJ()` functions from the `MolOps` namespace have been deprecated and will be removed in the next release. These have not been exposed to Python, so this will not affect any Python code. # Release_2021.03.1 (Changes relative to Release_2020.09.1) ## Backwards incompatible changes - The distance-geometry based conformer generation now by defaults generates trans(oid) conformations for amides, esters, and related structures. This can be toggled off with the `forceTransAmides` flag in EmbedParameters. Note that this change does not impact conformers created using one of the ET versions. (#3794) - The conformer generator now uses symmetry by default when doing RMS pruning. This can be disabled using the `useSymmetryForPruning` flag in EmbedParameters. (#3813) - Double bonds with unspecified stereochemistry in the products of chemical reactions now have their stereo set to STEREONONE instead of STEREOANY (#3078) - The MolToSVG() function has been moved from rdkit.Chem to rdkit.Chem.Draw (#3696) - There have been numerous changes to the RGroup Decomposition code which change the results. (#3767) - In RGroup Decomposition, when onlyMatchAtRGroups is set to false, each molecule is now decomposed based on the first matching scaffold which adds/uses the least number of non-user-provided R labels, rather than simply the first matching scaffold. Among other things, this allows the code to provide the same results for both onlyMatchAtRGroups=true and onlyMatchAtRGroups=false when suitable scaffolds are provided without requiring the user to get overly concerned about the input ordering of the scaffolds. (#3969) - There have been numerous changes to `GenerateDepictionMatching2DStructure()` (#3811) - Setting the kekuleSmiles argument (doKekule in C++) to MolToSmiles will now cause the molecule to be kekulized before SMILES generation. Note that this can lead to an exception being thrown. Previously this argument would only write kekulized SMILES if the molecule had already been kekulized (#2788) - Using the kekulize argument in the MHFP code will now cause the molecule to be kekulized before the fingerprint is generated. Note that becaues kekulization is not canonical, using this argument currently causes the results to depend on the input atom numbering. Note that this can lead to an exception being thrown. (#3942) - Gradients for angle and torsional restraints in both UFF and MMFF were computed incorrectly, which could give rise to potential instability during minimization. As part of fixing this problem, force constants have been switched to using kcal/degree^2 units instead of kcal/rad^2 units, consistently with the fact that angle and dihedral restraints are specified in degrees. (#3975) ## Highlights - MolDraw2D now does a much better job of handling query features like common query bond types, atom lists, variable attachment points, and link nodes. It also supports adding annotations at the molecule level, displaying brackets for Sgroups, rendering the ABS flag for stereochemistry, and a new "comic" mode. - There are two new Contrib packages: NIBRStructureFilters and CalcLigRMSD - There have been a number of improvements made to the R-Group Decomposition code which make it both more flexible and considerably faster ## Acknowledgements Michael Banck, Christopher Von Bargen, Jason Biggs, Patrick Buder, Ivan Chernyshov, Andrew Dalke, Xiaorui Dong, Carmen Esposito, Nicholas Firth, Enrico Gandini, James Gayvert, Gareth Jones, Eisuke Kawashima, Steven Kearnes, Brian Kelley, Mark Mackey, Niels Kristian Kjærgård Madsen, Luca Naef, Dan Nealschneider, Jin Pan, Daniel Paoliello, António JM Ribeiro, Sereina Riniker, Braxton Robbason, Jaime Rodríguez-Guerra, Ricardo Rodriguez-Schmidt, Steve Roughley, Vincent F. Scalfani, Nadine Schneider, Philippe Schwaller, Dan Skatov, Pascal Soveaux, Paolo Tosco, Kazuya Ujihara, Riccardo Vianello, Shuzhe Wang, Piotr Wawrzyniak, Maciej Wójcikowski, Zhijiang Yang, Yutong Zhao 'driesvr', 'GintasKam', 'SPKorhonen', 'pkubaj', 'AnPallo', 'darintay', 'slchan3', 'Robins', 'sirbiscuit', 'amateurcat', 'noncomputable', 'yurivict', 'magattaca' ## Contrib updates: - Added NIBRStructureFilters: a set of substructure filters for hit-list triaging together with python code for applying them. The filters are described in the publication https://dx.doi.org/10.1021/acs.jmedchem.0c01332 (github pull #3516 from NadineSchneider) - Added CalcLigRMSD: flexible python code for calculating RMSD between pre-aligned molecules (github pull #3812 from cespos) ## Bug Fixes: - Casting int to uint in MorganFingerprintHelper leads to unexpected behaviour. (github issue #1761 from SiPa13) - MolChemicalFeature.GetPos() returns value for molecule's default conformer (github issue #2530 from greglandrum) - Unable to catch RDKit exceptions in linked library when compiling with fvisibility=hidden (github issue #2753 from cdvonbargen) - Reaction rendering always shows molecules in aromatic form (github issue #2976 from greglandrum) - Reactions setting unspecified double-bond stereo to STEREOANY (github issue #3078 from ricrogz) - PDB output flavor&2 documentation change (github issue #3089 from adalke) - WedgeMolBonds() should prefer degree-1 atoms (github issue #3216 from greglandrum) - Error in ChemAxon SMILES "parsing" (github issue #3320 from IvanChernyshov) - Incorrect number of radical electrons calculated for metals (github issue #3330 from greglandrum) - Problem with lifetime linkage of mols and conformers (github issue #3492 from amateurcat) - Traceback when pickling ROMol after BCUT descriptors are calculated (github issue #3511 from d-b-w) - Fix AUTOCORR2D descriptors (github pull #3512 from ricrogz) - SDMolSupplier requires several attempts to load a SDF file in Python 3.6/3.7 (github issue #3517 from jaimergp) - Remove accidentally included boost header (github pull #3518 from ricrogz) - legend_height_ should be preserved after drawing the molecule (github pull #3520 from greglandrum) - remove the include directive for unused <access/tuptoaster.h> header (github pull #3525 from rvianello) - C++ build fails when configured with RDKIT_USE_BOOST_SERIALIZATION=OFF (github issue #3529 from rvianello) - Newest RDKIT version allowing chemically invalid smiles (github issue #3531 from GintasKam) - Behaviour of generate_aligned_coords for erroneous inputs (github issue #3539 from dskatov) - Drawing artifacts in draw_to_canvas_with_offset (github issue #3540 from dskatov) - Error adding PNG metadata when kekulize=False (github issue #3543 from gayverjr) - Add missing methods to remove SubstanceGroup attributes (github pull #3547 from greglandrum) - Error writing SDF data containing UTF-8 to a StringIO object (github issue #3553 from greglandrum) - correct handling of amide distances for macrocycles (github pull #3559 from hjuinj) - rdMolDraw2D, problems during generation of pictures from SMARTS, differences between Cairo and SVG (github issue #3572 from wopozka) - Fix example of SmilesToMol (github pull #3575 from kazuyaujihara) - atom/bond notes handle capital letters incorrectly (github issue #3577 from greglandrum) - Get MolDraw2DQt working again (github pull #3592 from greglandrum) - Scientific notation in SDF V3000 files (github issue #3597 from mark-cresset) - Fix: add missing python wrappers for MolDraw2DQt (github pull #3613 from greglandrum) - V3K mol block parser not saving the chiral flag (github issue #3620 from greglandrum) - Inconsistent metal disconnectors (github issue #3625 from pschwllr) - Ring stereochemistry not properly removed from N atoms (github issue #3631 from greglandrum) - moldraw2djs should not close all polygonal paths (github pull #3634 from greglandrum) - Unidentifiable C++ Exception with FMCS (github issue #3635 from proteneer) - Bump catch2 version to allow builds on Apple M1 (github pull #3641 from naefl) - Segmentation fault when parsing InChI (github issue #3645 from AnPallo) - RDK_BUILD_THREADSAFE_SSS does not work as expected (github issue #3646 from pascal-soveaux) - Disabling MaeParser and CoordGen Support Breaks the Build (github issue #3648 from proteneer) - BondStereo info lost in FragmentOnBonds() (github pull #3649 from bp-kelley) - memory leak when sanitization fails in InChIToMol() (github issue #3655 from greglandrum) - Qt GUI libraries being linked into rdmolops.so when Qt support is enabled (github issue #3658 from ricrogz) - Documentation of Chem.rdmolops.GetMolFrags's frag argument is wrong (github issue #3670 from noncomputable) - fmcs() + bogus input causes engine crash (github issue #3687 from robins) - qmol_from_ctab() with NULL crashes engine (github issue #3688 from robins) - qmol_from_smiles() + bogus input causes engine crash (github issue #3689 from robins) - Check PIL support for tostring and fromstring (github pull #3690 from sirbiscuit) - Move MolToSVG() to rdkit.Chem.Draw (Addresses #3694) (github pull #3696 from ricrogz) - Pandas AttributeError when rendering Molecule in DataFrame (github issue #3701 from enricogandini) - Memory leak in EnumerateLibrary (github issue #3702 from jose-mr) - Fix to add ZLIB_INCLUDE_DIRS for Windows build (github pull #3714 from kazuyaujihara) - Docs/Book: Unexpected unicode character makes pdflatex build fail (github issue #3738 from mbanck) - Test suite failures if eigen3 is not available (github issue #3740 from mbanck) - Regression in depiction of double bonds in aromatic rings (github issue #3744 from ptosco) - RGD with RGroupMatching.GA leaks memory and takes too long (github issue #3746 from ptosco) - Fix comment to match the code in RemoveHsParameters (github pull #3747 from jasondbiggs) - Inconsistent canonical tautomer on repeated application (github issue #3755 from darintay) - bonds no longer highlighted in substruct matches in jupyter (github issue #3762 from greglandrum) - SubstanceGroup output doesn't correctly quote " symbols (github issue #3768 from greglandrum) - MolToSmarts inverts direction of dative bond (github issue #3774 from IvanChernyshov) - Regression in dihedral constraints (github issue #3781 from ptosco) - Fix pillow error in IPythonConsole.py (github pull #3783 from skearnes) - lock swig version in MacOS CI builds (github pull #3789 from greglandrum) - DrawMorganBit errors when useSVG is False (github issue #3796 from ncfirth) - SubstructLibrary Cached Smiles Holders have bad behavior with bad smiles (github issue #3797 from bp-kelley) - MolFromSmiles('[He]') produces a diradical helium atom (github issue #3805 from jasondbiggs) - NaNs from AUTOCORR2D descriptor (github issue #3806 from greglandrum) - MaeMolSupplier throws an invariant exception on parsing an "undefined" chirality label (github issue #3815 from ricrogz) - Sanitize molecules when SMILES needs to be produced in PandasTools (github pull #3818 from mwojcikowski) - Tautomer Query copy constructor is shallow not deep causing segfaults in destructor (github issue #3821 from bp-kelley) - OptimizeMolecule and OptimizeMoleculeConfs Argument Bug (github issue #3824 from xiaoruiDong) - rdMolEnumerator.Enumerate() fragile w.r.t. atom ordering (github issue #3844 from greglandrum) - MinimalLib: Bonds are parallel in SVG but not on an HTML5 Canvas (github issue #3852 from dskatov) - AddHs creates H atom with nan coordinates on edge case 2D structure (github issue #3854 from ricrogz) - Build error with static boost libraries (v1.73) (github issue #3865 from nielskm) - Make sure that added R-groups have non-zero coordinates (github pull #3877 from ptosco) - Bad H coordinates on fused ring (github issue #3879 from greglandrum) - SubstructLibrary needs to check bond ring queries as well (github issue #3881 from bp-kelley) - Fixes Amine.Tertiary.Aromatic definition (github pull #3883 from bp-kelley) - inconsistency in seedSmarts in FMCS between and GetSubstructureMatches (github issue #3886 from proteneer) - PandasTools.RGroupDecomposition throws an error when redraw_sidechains is set to True. (github pull #3888 from greglandrum) - Dev/update glare to py3 (github pull #3892 from bp-kelley) - ConfGen: Macrocycle torsion terms not being used with fused macrocycles (github pull #3894 from greglandrum) - Broken KNIME link in README (github issue #3897 from yurivict) - Change class to struct for forward declaration (github pull #3906 from bp-kelley) - Fixes issues with unlabelled groups on aromatic nitrogens (github pull #3908 from ptosco) - Fix #3659 regression introduced in #3832 (github pull #3909 from ricrogz) - Error rendering SMARTS queries with atom OR lists (github issue #3912 from greglandrum) - MoDraw2D: Get tests working without freetype (github pull #3923 from greglandrum) - RGD default scoring function does not always work as expected (github issue #3924 from jones-gareth) - MolDraw2D: relative font size changes with bond lengths in molecule (github issue #3929 from greglandrum) - MolDraw2D: coordinates for reactions not being used (github issue #3931 from greglandrum) - Follow-on patch for changes in #3899 (github issue #3932 from greglandrum) - Fix MolDraw2DQt exports (github pull #3935 from ricrogz) - Fix building JavaWrappers on Windows, dynamic linking (github pull #3936 from ricrogz) - Boost header warnings when compiling (github issue #3956 from jasondbiggs) - Adds removeAllHydrogenRGroupsAndLabels and fixes kekulization issues (github pull #3944 from ptosco) - MolToJSONData fails when mol has a property that can't be stringified (github issue #3956 from jasondbiggs) - RWMol should reset(), not release(), dp_delAtoms and dp_delBonds (github pull #3970 from greglandrum) ## New Features and Enhancements: - add context managers for writers (github issue #2217 from greglandrum) - MolToSmiles(kekuleSmiles=True) gives SMILES with aromatic bonds (github issue #2788 from adalke) - allow specification of color map when drawing similarity maps (github issue #2904 from greglandrum) - Clean up CMake files (github pull #3417 from e-kwsm) - Speed up GraphMol/Chirality.cpp/iterateCIPRanks (github pull #3482 from jinpan) - Removes function which is an exact duplicate of another function (github pull #3524 from ptosco) - A couple of minor improvements to FindCairo (github pull #3535 from ptosco) - Give a bit more time to RGD test in debug builds (github pull #3536 from ptosco) - A couple of fixes to the build system (github pull #3538 from ptosco) - Modularized WASM module (github issue #3561 from dskatov) - A couple changes to speedup bulk similarity calculations from Python (github pull #3574 from greglandrum) - add documentation for the JS wrappers (github pull #3583 from greglandrum) - add a "comic mode" to MolDraw2D (github pull #3584 from greglandrum) - Add rendering of SGroup brackets to MolDraw2D (github pull #3586 from greglandrum) - Update Install.md (github pull #3589 from slchan3) - Add explicit support for remaining CTAB query bond types (github issue #3599 from greglandrum) - update Cookbook stereochemistry examples (github pull #3604 from vfscalfani) - Add support for rendering SGroup data fields to MolDraw2D (github pull #3619 from greglandrum) - Support rendering the "ABS" flag in MolDraw2D (github issue #3623 from greglandrum) - Support drawing some query bonds (github pull #3624 from greglandrum) - Support rendering variable attachment points (github pull #3626 from greglandrum) - add configuration option to disable atom symbols in the rendering (github pull #3630 from greglandrum) - Render link nodes in MolDraw2D (github issue #3637 from greglandrum) - First pass at MolZip (now with bond stereo!) (github pull #3644 from bp-kelley) - Add molecule annotations/notes to MolDraw2D (github pull #3651 from greglandrum) - support setting MolDraw2DOptions using JSON from Python (github pull #3660 from greglandrum) - Make the scope control for Qt more idiomatic (github pull #3663 from d-b-w) - Expanded MolEnumerator