Thanks to visit codestin.com
Credit goes to github.com

Skip to content

CDK 2.8

Choose a tag to compare

@johnmay johnmay released this 14 Sep 14:44
· 824 commits to main since this release

DOI

Key Changes

  • JDK Versions:
    • JDK 8 (minimum)
    • JDK 11 (minimum if not using cdk-iordf)
    • JDK 17 (recommended)
  • The project is now built with Java 11+ but compiled to target Java 8. If you have any issues please let us know.
  • The master branch has been renamed to main.
  • logj4-core is no longer a dependency of cdk-log4j, you should include these separately if you intend to use Log4j
  • A new cdk-slf4j module allows connecting logging to SLF4J
  • MayGen structure generator, provides the ability to generate millions and millions of structures that have a given formulae.
Maygen maygen = new Maygen(SilentChemObjectBuilder.getInstance());
maygen.setFormula("C3Cl2H4");
maygen.setConsumer(new SmiOutputConsumer(new OutputStreamWriter(System.out)));
maygen.run();

Maygen is pure Java, if you need more speed consider Surge by the same author.

  • New Smallest Ring utilities for single atom/bond
if (Cycles.smallRingSize(atom, 7) != 0) {
 // atom is in a ring 7 or smaller
}
if (Cycles.smallRingSize(bond, 7) != 0) {
  // bond is in a ring 7 or smaller
}
  • RAW/Count Path Fingerprints
IFingerprinter fpr = new Fingerprinter();
Map<String, Integer> feats = fpr.getRawFingerprint(mol);
  • Where possible "Re-inflate" convex rings on cyclcophanes:
    Before:Screenshot 2022-09-16 at 09 38 14 now: Screenshot 2022-09-16 at 09 38 10

  • New substructure/copy utility that allows a whole or part of a structure to be copied. Atoms are bonds are selected by providing a predicate:

IAtomContainer dst = builder.newAtomContainer();
AtomContainerManipulator.copy(dst, src, a -> a.isInRing(), b -> b.isInRing()); //  select the cyclic part of a molecule

// select atoms in a set, the bonds will also be selected
Set<IAtom> subset = ...
AtomContainerManipulator.copy(dst, src, a -> subset.contains(a)); 
  • New exclusive atoms filter that provides non-overlapping substructure matches, note the input order can determine which matches are selected.
for (int[] mapping : Pattern.findSubstructure(query).matchAll(mol).exclusiveAtoms()) {
   // ...
}
  • Stereo perception corner-cases. Reject:
    Screenshot 2022-09-16 at 09 45 22,
    Screenshot 2022-09-16 at 09 46 22, ok:

Screenshot 2022-09-16 at 09 46 24

Summary

  • Merged all PRs and resolved all open issues related to bugs
  • InChINumbersTools: Use JNA InChI options by @johnmay in #799
  • Avoid integer overflow in MF by @johnmay in #808, #810
  • Ensure correct stereo consistency (Fix #812) by @johnmay in #813
  • SMILES: Fix an issue with stereochemistry being lost on generic atoms - @johnmay in #814, #866
  • Maygen structure generator by @MehmetAzizYirik in #811
  • Weighted path descriptor performance improvements by @johnmay in #817
  • Depiction: Fix missing bond annotations by @johnmay in #819
  • Utility functions for determining the smallest ring size of an atom/b… by @johnmay in #820
  • Better consistentcy in Stereochemistry and Sgroups when removing atoms by @johnmay in #821
  • Unify MOLfile V2000/V3000 options by @johnmay in #824, #852
  • Improved stereochemistry perception by @johnmay in #826, #839
  • Replace Atom symbol (String) comparison with atomic number (integer) by @johnmay in #827
  • Improved/fix bugs with XLogP, PiContact, and BCUT, HuLuIndex descriptors by @johnmay in #833, #656, #822, #832
  • Additional Raw and count path fingerprints by @johnmay in #834
  • "Re-inflate" convex rings in macrocycles. The macrocycle layout can en… by @johnmay in #836
  • Fix a corner case in repeat crossing bonds when we have variable atta… by @johnmay in #835
  • Restore space as delimiter for string-based definition of InChI options by @marco-foscato in #846
  • Update to Apache Jena 4.2 (requires JDK 11) by @egonw in #748
  • Fix localisation of alpha channel floats in SVG by @egonw in #868
  • Check string bounds on PDB COMPND line. Fixes #870 by @johnmay in #871
  • Methods to manipulate atom types in ReactionManipulator by @uli-f in #883, #879
  • Added ChemObjectBuilder.newReaction() by @uli-f in #888
  • Utilities for selecting a substructure of a molecule. by @johnmay in #889
  • Improved CDK Log4J/SLF4J interactions by @johnmay in #878, #876
  • Additional SMARTS/matching utilities by @johnmay in #896, #900
  • Use Junit5 by @johnmay in #901
  • Fix issue with hose code nesting by @johnmay in #828

Authors

 278 John Mayfield
  13 Egon Willighagen
  11 Uli Fechner
   5 Mark Williamson
   3 Valentyn Kolesnikov
   2 MehmetAzizYirik
   2 Marco Foscato
   1 dependabot[bot]
   1 Tim Dudgeon
   1 Otto Brinkhaus
   1 Christoph Steinbeck
   1 Alex

New Contributors

Full Changelog: cdk-2.7.1...cdk-2.8