Background

The routine work of a cheminformatician involves the processing of libraries of small molecules. Standardising molecules, e.g., adding hydrogens or removing unconnected structures, calculation of molecular descriptors, and visualisation of chemical structures in two- or three-dimensional space are just a few examples of recurrent tasks that are carried out upstream of cheminformatic pipelines. Several free cheminformatics libraries and tools have been developed to deal with these tasks, such as the CDK [1], RDKit [2], and OpenBabel [3] to mention only a few.

Typically, building a comprehensive pipeline for small molecules requires a basic understanding of a scripting language to concatenate input and output from different tools or call functions from a cheminformatics library. For experimental scientists, usage of APIs (application programming interfaces) or programming languages adds a constraint to more in-depth analysis. On the other hand, standalone tools suffer from their limited scope. Even simple tasks like the visual characterisation of a chemical library [4] requires importing and exporting data in various formats using different tools.

Workflow environments circumvent the above mentioned challenges to various degrees by providing a common platform for different tools and have become increasingly popular with the scientific community [5, 6]. The Konstanz Information Miner (KNIME) [7] is an open-source workflow platform that supports a wide range of functionality and has an active cheminformatics/bioinformatics community, e.g., with plug-ins for next generation sequencing or image analysis [8-10]. For a detailed description of the KNIME data analysis platform see [11].

The cheminformatics plug-in KNIME-CDK is based on the Chemistry Development Kit (CDK), an open-source cheminformatics library. It wraps elements of the library’s core functionality and exposes it to the user. In contrast to other cheminformatics plug-ins available in KNIME, the project and its core library are fully open and community-driven.

Implementation

KNIME-CDK has been developed in Java 1.6 and is available via the KNIME update mechanism. The plug-in including its sources is available as release (stable) build and nightly (pre-release) build under GNU LGPL v3. It has been tested on KNIME Desktop version 2.6 and 2.7, the latter uses Java 1.7, with 2 GB memory and default settings otherwise, using the ChEBI compound library [12]. Over the last year, the plug-in and its underlying core library have been updated, reducing memory requirements and improving overall performance. The KNIME-CDK community site and forum [13] provide an overview of the implemented functionality and support respectively.

Following KNIME’s data model, the individual CDK molecule representations are stored in their own data cell type, the atomic unit for tabular data transfer from one node to another. A node can be considered as single worker carrying out a single function. Here node names are written in italic. Data persistence is guaranteed via the Chemical Markup Language (CML) [14] serializing the molecule when necessary. The underlying CDK molecules are handled and stored within data cells in standardized form, i.e., with implicit hydrogen atoms added, atom types perceived, and aromaticity detected. This guarantees consistency across all nodes and simplifies usability of the plug-in by hiding technical details from the user, hence allowing the scientist to focus on the task at hand.

The plug-in accepts molecules in CML, SDFile, MDL Mol, InChI, and SMILES formats [15] via the Molecule to CDK node and writes SDFiles via the CDK to Molecule node, hence converting the CDK molecule back to the default SDFile cell, that can be used with other cheminformatics plug-ins. In addition, the implemented SDFile interface ensures that all SDFile cell accepting nodes can directly be connected to KNIME-CDK nodes.

All subsequent operations are carried out on the internal CDK molecule representation and include, inter alia, generation of coordinates, atom signatures of various heights, common fingerprints, e.g., MACCS and Pubchem, two- and three-dimensional molecular descriptor values including XLogP and Lipinski’s Rule of Five, chemical name lookup via OPSIN [16], and substructure search (Figure 1a). Different routes in a workflow can run in parallel and nodes run always multi-threaded. In Figure 1b a chemical library is filtered for molecules containing a phenol group before successive hydrogen acceptor / donor count while being used for MACCS fingerprint and atom signature generation. The out-port view, i.e., the resulting data table, is shown for the Atom Signatures node. Further use cases of workflows using the KNIME-CDK plug-in include the management and analysis of chemical libraries through molecular descriptors, conformer analysis via RMSD, and NMR spectra prediction. Example workflows for these tasks can be found in the repository [17] of the myExperiment virtual research environment [18].

Figure 1
figure 1

Example workflow and out-port views. Overview of the KNIME-CDK plug-in. a) View of the node repository showing all available nodes. b) Example workflow for descriptor calculation. The molecule library is read in and filtered for structures containing phenol groups before counting the number of hydrogen donors and acceptors (lower path). Simultaneously, MACCS fingerprints and atom signatures are calculated for the atom-filtered molecules (upper path). c) Example row from the out-port view of the Atom Signatures node.

Complementing the signature node, the KNIME preference page contains a CDK tab to set global visualisation preferences. Given two- or three-dimensional coordinates, a renderer is provided to draw the molecules using the JChemPaint library [19]. By default the element symbol is drawn. The preference page allows to draw either canonical or sequential atom numbers instead of either all atoms or carbon / hydrogen atoms only.

Discussion

The KNIME-CDK plug-in was tested using the structurally diverse ChEBI library with a total of 23,240 3-star structures. For testing purposes, the library was used in SDFile format, release 98, because this could arguably be considered the most common use case. For comparison, the well-established RDKit plug-in was used. Using the ChEBI SDFile, consistent input-serialization-output was tested using round tripping to ensure that no information is lost or altered.

From the 23,240 structures, 22,225 structures (95.6%) could successfully be read in, marginally less than with the RDKit plug-in (22,482 structures, 96.7%). Not all molecules could be converted into the CDK representation because some classes are not supported throughout the node’s read process. Currently the following groups lack support (examples in brackets): Coordination entities [CHEBI:16304], ’exotic’ atoms [CHEBI:27698], complexed porphyrins [CHEBI:27888], some radical species [CHEBI:33101, CHEBI:33105], and repeated structures [CHEBI:65304]. The structures were read in 43.0±4.5 seconds compared to 12.0±0.7 seconds (RDKit). Even though the KNIME-CDK plug-in is not as fast as RDKit, which uses a native C++ implementation, its functionality should be seen as complimentary to other plug-ins available and its speed is still adequate.

The ChemAxon Marvin Extensions Feature, 2.6.3.v0135, was used to create canonical SMILES from the structures that were loaded with KNIME-CDK and RDKit. For 2794 (12.6%) structures different SMILES were produced, due to the fact that different internal representations and the nature of the problem, inescapably produces variation. This highlights one of the benefits of employing more than one library for processing and analysis tasks. In addition, KNIME-CDK offers some unique functionality including various molecular descriptors, fingerprints, and equivalent class calculation.

With that knowledge, KNIME-CDK can be used for chemical data exploration in synergy with other cheminformatics plug-ins to make proper use of the framework environment. We will continue to update the plug-in continuously to take the newest developments of the CDK project into account. New nodes will be added on a “on-demand” basis.

Conclusions

We presented KNIME-CDK, an open-source cheminformatics plug-in for the KNIME platform. The plug-in brings additional cheminformatics functionality to the platform based on a community-driven open library. Functionality includes molecule conversion to and from common formats, substructure searching, generation of signatures, fingerprints, and molecular properties. It supports the typical range of organic chemical structures similar to RDKit but adds new functionality to the framework. The plug-in is easy to use and enables the community to build further nodes based on the popular CDK library that work in combination with the existing molecule representation. Issues that will be addressed are the overall speed and input capability of the plug-in to make it more usable and better suited for high-throughput analysis.

Availability and requirements

  • Project name: KNIME-CDK

  • Project URL: http://tech.knime.org/community/cdk

  • Availability: All sources and compiled code are available via the KNIME update mechanism.

  • Operating system(s): Platform independent

  • Programming language: Java 1.6

  • Other requirements: KNIME Desktop v2.6+

  • License: GNU LGPLv3