Sunday, July 03, 2011

CDK 1.4.0: the changes, the authors, and the reviewers

The time has come. With the help of Rajarshi, Gilleain, and others, the last few important glitches have been removing, including a few found since 1.3.12. This post will not discuss all the new stuff in 1.4.0 since the 1.2.x series, and such we will see soon enough, I guess. Instead, like all those other TCTATR posts, I will just list the changes, the authors, and the reviewers for this particular release. Also special thanx to the various users who sent in bug reports and even small patches, like Dmitry and Jonty!

Since 1.3.12, mostly bug fixes have been made. Glancing over the below list, I do not see much that really stands out. Here is the full list:
  • Updated unit test to test of all those elements are still present, but more too 1f54188
  • Fixed potential NPE. Also moved the debug statement inside the loop so that each atom in the list is reported. 3ad6073
  • Added Test[Method|Class] annotation beab5b3
  • A test class for the atom placer, and a couple of unit tests 5438093
  • Unit tests for helium and americum for MF string generation d2a2162
  • MolecularFormulaManipulator: added element symbols in generateOrderEle* . - added symbols up to and including "Cn" (#112) - updated accompanying JavaDoc - fixes CDK bug #3340660 c248d16
  • MolecularFormulaManipulator: fixed whitespacing / bracket style. "Whitespace only" - consistently indented with tabs (was mixed) - made javadoc indent consistent - made {}-use in if/else-if blocks consistent - made 'if(' vs. 'if (' consistent (also for else/for) df59d71
  • Fixed spelling error, and added useful whitespace bb51081
  • Fixed bug in RingGenerator: it now returns the parameters from the superclass too 185520e
  • Updated unit tests according to cdk-jchempaint ML: we expect Line and Oval elements df7c7f5
  • Updated unit tests according to cdk-jchempaint ML: we expect 1 AtomSymbolElement 1d2d707
  • Fixed various JavaDoc errors 789a6a4
  • Fixed false positives about missing Jena classes, by including those jars to the classpath too da493da
  • Removed @inheritDoc because the method does not override any method 5ccf7d7
  • Replaced with just @author e41a9c7
  • Replaced cdk.svnrev with cdk.githash d2e502e
  • Ensure that we set the diagonal values of the Burden matrix correctly. Fixes bug 3347528 b008a4b
  • Updated so that the writer does not fill in the valency field in the atom block by default, and added an IO setting to trigger writing. 20f3639
  • Updated boron unit test to just check that we parsed boron d77c936
  • Fixed the BasicSceneGeneratorTest: nothing is drawn by this generator -> expect zero elements; test the right class b0c50cd
  • Typo fix 8eba14e
  • Fixed returning of the descriptor result type: actual length 5049178
  • Extend the MolecularDescriptorTest ac02901
  • Added missing test annotation 4601c4b
  • Code clean up: use IMolecule interface, and properly typed List 6ae652f
  • Added copyright owner line for previous patch 98e4cae
  • Fixed potential NPE. 280381d
  • Added missing JavaDoc checking for renderbasic and log4j 45b67e5
  • Added missing module testing a1b4961
  • Updated SMILES parser consider aromatic boron part of the organic subset. Added a test case for bug 3160514 6a25800
  • Updated Pubchem fp SMARTS patterns in response to Andrew Dalkes bug reports 130fa04
  • Removed non-existant dependencies a8ceaa0
  • The setAtoms() method itself throws a change even too, so the listener must be reset *after* that call. 0e1b952
  • Unregister the listeners for the global atoms, not the local one 1ed28ee
  • Removed old identifiers, incompatible with git 44a3d4a
  • Send around a change event when flags are set (fixes #2992921) 8eed94c
  • Overwrite the setFlags() test for notification for the NoNotification classes 0f3080b
  • Added unit tests to verify that both setFlag() and setFlags() give a change event, addressing bug #2992921 01161d6
  • Updated the copyright list to reflect the descriptors history 8539e23
  • Removed 'this' as listener from the atoms no longer in this container 6237571
  • Implemented actual reading of CDK/N3 files f06dcb6
  • Extended test to highlight that I forgot to implement the actual read method b11336a
  • Merged two methods (fixing #3089188) 7b46968
  • Improved error message to show what character the parser was trying to interpret as symbol 555f856
  • Fixed error message suggestion to have an upper case element symbol in brackets (addressing #3160514) cf47901
  • Overwrite the setAtoms() test for notification for the NoNotification classes f5b1818
  • Added unit test for bug #2993609 for not removing listeners with setAtoms(IAtom[]) cd07ebc
  • Fixed order in assertion: expected value comes first 3c15ff3
  • Updated the expected fingerprints for the hybridization fingerprinter 49fd969
  • Code clean up: use generics 1d6aade
  • Some code clean up: generics and one variable now starting with a lower case char dff478c
  • Use the HybridizationFingerprinter: faster, not suffering from aromaticity 89b0f1e
  • Added unit test to see if descriptors give proper identifiers, and not the $ template b2275db
  • Added missing @TestMethod annotation 6bf07ac
  • Updated copyright statement, following the git log 19218e6
  • Added .gitattribute files to have the $ fields for the descriptors specifications updated again a4bd711
  • Added a missing test class to the suite b14795d
  • Moved the reaction and descriptor ontologies to the dict module 530f02e
  • Added a missing dependency e847231
  • Removed dictionaries that are in the atomtype module fd54ca2
  • Added license, download metadata for Jena jars (fixing #3187448) c9ff6eb
  • Updated for chiral SMILES parsing: @@H-like statements yield an explicit hydrogen, changing the number of expected atoms and bonds, and the index of the charged sulphur 9413571
  • Fix in the annotation-based coverage testing: if classes do not have an explicit constructor, they gave a false positive in the coverage testing. I am now talking advantage of the annotations array to be empty, for the implicit constructors Java adds itself, though private constructors have no annotation either. However, those do not need testing, as they are already typically indirectly tested. 4737199
  • Fixed ClassCastException, by properly 'converting' an IAtomContainer into a IMolecule (yes, yes, I know, we're going to drop the IMolecule interface later...) a4fd02c
  • Added a missing dependency on atomtype, introduced by Mol2WriterTest 673f754
  • Added @cdk.bug annotation, and removed output to STDOUT 9048e78
  • Fixed Mol2Writer to also accept NNMolecule, etc fac6ab5
  • Fixed unit tests, to match the current implementation d33c697
  • Added a test for IMolecule.getLonePairCount(), casting to an IMolecule 648f4ca
  • Arom detection was enabled, and no casting to .2 needed anymore. 0b8581d
  • Added missing unit test in io module: Mol2WriterTest bfacac5
  • Updated SMILES reader so that we can specify a builder object. Using NN builder speeds things up for large SMI files da0a62a
  • Added a test case for bug 3315503 to ensure that Mol2Writer is not throwing an NPE when faced with an unknown atom type. Also added test data file. aa35eae
  • Updated Javadocs. Fixes bug 3322592 63619c2
  • Updated Javadoc to fix a variety of Javadoc errors (see bug 3322594) 57d3199
  • Updated Javadoc to fix a variety of Javadoc errors (see bug 3322602) 1043b3d
  • Fixed typing, so that we work with IAtomContainer rather than IMolecule b74143c
  • Added missing dependency of test-dict on vecmath.jar 98c4855
  • Removed non-existing dependency declaration: qsarprotein does not depend on diff d7a229a
  • Removed obsolete meta info: sinchi module no longer exists d4530d0

The Authors
The high numbers are explained by the fact that we were in bug fix mode. Many small, simple patches have been applied, at a very rapid pace. In fact, we have been so active, we reached the top 50 most active projects on SourceForge last weekend!
65  Egon Willighagen
13  Rajarshi Guha
 2  Dmitry Katsubo
 2  Jules Kerssemakers
 1  Jonty Lawson
 1  Gilleain Torrance

The Reviewers
32  Rajarshi Guha 
 8  Egon Willighagen 
 7  Gilleain Torrance 


  1. You forgot to put a download link.

  2. Well, I kind of deliberately not added it. But I did not anticipate the post to show up on Reddit :)

    Download link: