Chemistry Development Kit 20060714 review

by on

Chemistry Development Kit classes are Java utitility classes for ChemoInformatics and Computational chemistry, written in Java

License: LGPL (GNU Lesser General Public License)
File size: 0K
Developer: The CDK Project
0 stars award from

Chemistry Development Kit classes are Java utitility classes for ChemoInformatics and Computational chemistry, written in Java. They are developed constantly developed parallel to other projects that make use of them.

They are a complete re-write of the CompChem classes that were the basis of JChemPaint, a Java Editor for 2D chemical structures, and of JMDraw, a Java package for the graphical layout of 2D chemical structures.

The CDK project was started in September 2000 to replace the CompChem libraries used by JChemPaint, Jmol and SENECA. It no longer is in its initial stage, but is slowly getting a solid state.

The people involved in setting up the project are Christoph Steinbeck then at the Chemoinformatics Group at the Max Planck Institute of Chemical Ecology in Jena, as well as Egon Willighagen from the University of Nijmegen, The Netherlands, who is also involved with JChemPaint and many other Java Chemoinformatics programs, and Dan Gezelter from Notre Dame University, South Bend, USA, the initiator of Jmol, a 3D viewer and analyzer for molecules .

Now, the rewrite of these CompChem/CDK library classes do somehow effect all of our projects. All of our code relies to some extend on the so-called CompChem classes for computational chemistry.

Christoph Steinbeck started this chemistry library when he started programming SENECA, a system for Computer Assisted Structure Elucidation. It turned out that some of the code had design flaws that prevented others, like the authors of (Jmol) to use it.

What's New in This Release:
General changes:

new build system that compiles modules one by one to have clear dependencies
more use of @cdk.keyword for the topic index
data files moved from cdk/data to cdk/src/data
updated the FSF address
code clean ups and JavaDoc improvement
many bug fixes and new JUnit tests
removed printf.jar which had a suspicious licence
upgraded log4j version to 1.2.13
upgraded jgrapht version to 0.6.0
dependency on gnujaxp has been removed

Below is an overview of major changes sorted per module.


the interfaces are now located in org.openscience.cdk.interfaces
many methods now make use of interfaces instead of implementations: generally a replace if ChemObject by IChemObject
the data classes return interfaces now
the interface cdk.ChemObjectListener is now known as cdk.IChemObjectListener
added an IChemObjectBuilder interface with implementations
IRingSet now extends ISetOfAtomContainers
IChemObject.clone() now declares a 'throws CloneNotSupported' (as is normal in Java)
the API now use the List interface instead of the Vector implementation

Data (+ data-debug + nonotify)

Added a DefaultChemObjectBuilder for the data classes
Added new set of data classes that debug calls to the classes (data-debug module)
Added new set of data classes that do not trigger ChangedNotification calls (nonotify module)
Added missing serialVersionUID fields to data classes
Mapping now properly implements clone()


now only depends on interfaces, no longer on the data class implementations
added a constructor CDKException(String message, Throwable cause)
added a number of missing atom types from our lists


added DeAromatizationTool which can convert 'aromatic' systems to Kekule systems
removed the deprecated RTools
added a method to calculate double bond equivalents (DBEs)
added some methods to get all paths between 2 atoms and all paths starting from an atom of a given length
added a method to get the actual shortest path between two atoms
added a general IImplementationSpecification which DescriptorSpecification and ReactionSpecification now extend
added getAtomCount() and getBondCount() to manipulators
deprecated the manipulators' getAllInOneAtomContainer() convenience method as they pose a serious performance hit
added a method in GeometryTools to rotate the coordinates of an atom in 3d around a line segment by a specified angle
added an EState atom type matcher


added option to turn of rendering of reaction boxes
added option to draw CDKConstants.TITLE
added rendering of curly arrows
extended highlighting posibilities: there are now three types of selection:

- highlightAtom/Bond with highligh color, for hovering over
- selectedPart/selectedPartColor for internally selected part
- externalSelectdPart/externalHighlightColor for external selections

added 'compact' mode in which atoms are drawn like squares (like on PubChem)
the renderer now uses cached screen coordinates instead of modifying the atomic coordinates all the time
removed the unmaintained Java3D based 3D renderer


removed ChemObjectWriter.highestSupportedChemObject()
no longer depends on a specific interfaces implementation
the MDLWriter can now write IChemFile
added a basic Mol2 writer
the MDLReader is now more flexible with corrupt output from other programs
ChemObjectIO.accepts(Object) is deprecated in favor of .accepts(Class)
many chemical file formats were added defined in OpenBabel
the MDLRXNReader now reads atom-atom mappings
IChemFormat now extends IResourceFormat
added the new methods IResourceFormat.getMIMEType(), getFileExtensions() and isXMLBased()
added IChemFormat.getSupportedDataFeatures()
added ReaderFactory.createReader(IChemFormat) and WriterFactory.createWriter(IChemFormat)



Stereo center detection was refactored out of the SmilesGenerator into BondTools
getAllChemObjects() were added to classes
namespace declarations in dictionaries and atom type lists were fixed
added a GridGenerator
added the Tanimoto similarity measure
dictionaries can now be in OWL too, in addition to STMML (part of CML)
the StructureDiagramGenerator no longer deletes E/Z stereochemistry
the AbstractController now allows merging of Atoms
added tool to determine the number of lone pair electrons for an atomtype


REMARK and COMPND are now read from PDB files
mutliple MODEL in PDB files are now read into a ChemSequence
PDBAtom was moved into the package
added method PDBStrand.getMonomerNamesInSequentialOrder()
the PDBReader performance was improved by some 30%


descriptors are moved to cdk.qsar.descriptors.molecular and descriptor.atomic
added the Petitjean shape indices descriptor
added Randic's weighted path descriptor
added descriptors for the number of atoms in the longest aliphatic chain, longest chain and largest pi system
added new interfaces IAtomicDescriptor, IBondDescriptor and IMolecularDescriptor
added a few bond descriptors
added Weka to build linear regression models
R-CDK bridge now uses rJava/JRI instead of previous library


added a line search algorithm for the Wolfe conditions and a cubic interpolation
added MMFF94EnergyFunction.MMFF94EnergyFunction(IAtomContainer) to calculate for force field energy

libio_cml (+ qsar_cml + pdb_cml)

Uses Jumbo 5.2 now, with a XOM 1.1 based CMLDOM


added tool to convert a BioJava SymbolList to a CDK IBioPolymer
added customizing of Bond in the ICMLCustomizer API


implemented Garsteiger pi charges


added cdk.reaction.IReactionProcess for describing reaction processes
added a set of reaction types found in mass spectroscopy
added a method in ReactionManipulator that returns the mapped ChemObject for a given ChemObject
added a StructureResonanceGenerator that uses known reaction types from cdk.reaction.type


added four missing one char symbol elements in parser: K, U, V and Y
added a DeduceBondSystemTool that is supposed to resolve double bond placement in delocalized systems



added a ProteinPocket finder algorithm
added a SubstructureFingerprinter (which still lacks a good optimized list of descriptive substructures. Anyone?)
added generator for Murcko fragments

Chemistry Development Kit 20060714 keywords