- assigned_to: Nina Jeliazkova
Currently, the ambit library dependes on CDK version 2.1.1
To use the library with the current CDK version I did the following:
After making these changes the code compiles. However, I skipped the tests as I did not want to go to the trouble of installing the database, so I don't know if any of the tests break.
ambit2 depends on classes in the cdk-legacy package which are marked as deprecated; classes in this module might get dropped in future versions of the CDK so it might be worthwhile removing the dependency on these classes.
I did a backward dependency analysis of the cdk-legacy module for the ambit2 library. These are the classes in cdk-legacy that are used by ambit2:
geometry/GeometryTools.class
isomorphism/matchers/smarts/AliphaticAtom.class
isomorphism/matchers/smarts/AliphaticSymbolAtom.class
isomorphism/matchers/smarts/AnyAtom.class
isomorphism/matchers/smarts/AnyOrderQueryBond.class
isomorphism/matchers/smarts/AromaticAtom.class
isomorphism/matchers/smarts/AromaticQueryBond.class
isomorphism/matchers/smarts/LogicalOperatorAtom.class
isomorphism/matchers/smarts/OrderQueryBond.class
isomorphism/matchers/smarts/SMARTSAtom.class
isomorphism/matchers/smarts/SMARTSBond.class
smiles/smarts/parser/SMARTSParser.class
smiles/smarts/SMARTSQueryTool.class
templates/MoleculeFactory.class
All of the classes listed above are used by both classes in main and in source of the ambit2 library with the exception of AliphaticSymbolAtom, LogicalOperatorAtom and SMARTSParser that are used by classes in test only.
John then provided me with the following information which classes should be used instead of the deprecated ones:
GeometryTools "@deprecated use {@link GeometryUtil} moved for dependency reorganisation"
Specifically Java awt I think was the issue, so GeometryUtil should provide like for like and more and is in cdk-standard module
MoleculeFactory "@deprecated Old CDK class primarily for testing, for CDK Tests please use TestMoleculeFactory in cdk-data."
We were reoragnising and decoupling tests
SMARTS is a bit more complicated because the entire API stack was redesigned. Fortunately the doc should be good on these. The parser (and generator) is now just "Smarts"
http://cdk.github.io/cdk/latest/docs/api/index.html?org/openscience/cdk/smarts/Smarts.html
Then for the Atom/Bond matchers, this is now handled by an expression tree rather than let Java do dynamic dispatches on lots of different classes. The key class is "Expr"(ression) and you can set/get expression on QueryAtom|Bond.setExpression(expr).
For matching
http://cdk.github.io/cdk/latest/docs/api/index.html?org/openscience/cdk/smarts/SmartsPattern.html (when from SMARTS string)
or
http://cdk.github.io/cdk/latest/docs/api/index.html?org/openscience/cdk/isomorphism/DfPattern.html (when building an IAtomContainer up for matching)
The key challenge here is for some of these APIs you may need to make sure all molecule creation is done via the factories and not "new AtomContainer()", that will be less important in future but might be an issue here.
Further reading:
- https://github.com/cdk/cdk/wiki/AtomContainer2
- SMARTS API release notes: https://github.com/cdk/cdk/wiki/2.2-Release-Notes#core
Please let me know if there is anything else I can provide you with to make the process of updating the dependency to the newest CDK version easier for you.
Uli