Skip to content
John Mayfield edited this page May 11, 2021 · 10 revisions

DOI Maven Central

Download complete JAR: cdk-2.5.jar (28MB)

Highlights

  • Atoms (via IElement) now store the element only by the integer atomic number field. Previously each atom had both a symbol (C,N,O,P,S) and an atomic number (6,7,8,15,16). This would cause inconsistencies when the atomic number and symbol conflicted. The symbol storage has been removed internally. If you need to store a custom label the IPseudoAtom can provide this.
  • JLogP retrained with additional atom types see https://github.com/cdk/cdk/issues/629
  • Added flavour options to SMILESWriter utility class:
try (SMILESWriter writer = new SMILESWriter(wtr)) {
   writer.setFlavor(SmiFlavor.Canonical|SmiFlavor.CXSMILES); // new
   writer.setWriteTitle(true);
   for (IAtomContainer mol : mols)
     writer.write(mol):
}
  • Enhanced Stereochemistry: Support Racemic/Relative stereo groups, using the high-bits of the stereo config we can now indicate if stereocentres should be considered in AND (racemic) or OR (relative) groups. The groups will round trip between MDL MOLfiles and CXSMILES:
CC[C@H](O)C |r| // rac-butan-2-ol (R)- and (S-)
CC[C@H](O)C |&1:2| // rac-butan-2-ol (R)- and (S-)
CC[C@H](O)C |o1:2| // rel-butan-2-ol (R)- or (S-)

As per BIOVIA semantics MDL Chiral Flag=0 means all tetrahedral centres are racemic.

API Access:

IAtomContainer mol;
for (IStereoElement<?,?> se : mol.stereoElements()) {
    if (se.getGroupInfo() == IStereoElement.GRP_RAC1) {

    } else if (se.getGroupInfo() == IStereoElement.GRP_REL1) {

    }
}
  • Enhanced Stereochemistry: Update substructure/SMARTS matching to respect the racemic/relative stereo configurations
CC[C@H](O)[C@H](O)N = match => CC[C@H](O)[C@H](O)N => yes
CC[C@H](O)[C@H](O)N = match => CC[C@H](O)[C@@H](O)N => no
CC[C@H](O)[C@H](O)N = match => CC[C@@H](O)[C@H](O)N => no
CC[C@H](O)[C@H](O)N = match => CC[C@@H](O)[C@@H](O)N => no

CC[C@H](O)[C@H](O)N = match => CC[C@H](O)[C@H](O)N |r| => yes
CC[C@H](O)[C@H](O)N = match => CC[C@H](O)[C@@H](O)N |r| => no
CC[C@H](O)[C@H](O)N = match => CC[C@@H](O)[C@H](O)N |r| => no
CC[C@H](O)[C@H](O)N = match => CC[C@@H](O)[C@@H](O)N |r| => yes

CC[C@H](O)[C@@H](O)N = match => CC[C@H](O)[C@H](O)N |r| => no
CC[C@H](O)[C@@H](O)N = match => CC[C@H](O)[C@@H](O)N |r| => yes
CC[C@H](O)[C@@H](O)N = match => CC[C@@H](O)[C@H](O)N |r| => yes
CC[C@H](O)[C@@H](O)N = match => CC[C@@H](O)[C@@H](O)N |r| => no

CC[C@H](O)[C@H](O)N = match => CC[C@H](O)[C@H](O)N |&1:2,&2:4| => yes
CC[C@H](O)[C@H](O)N = match => CC[C@H](O)[C@@H](O)N |&1:2,&2:4| => yes
CC[C@H](O)[C@H](O)N = match => CC[C@@H](O)[C@H](O)N |&1:2,&2:4| => yes
CC[C@H](O)[C@H](O)N = match => CC[C@@H](O)[C@@H](O)N |&1:2,&2:4| => yes
  • MDL Data Sgroups: Add support to read/write Data Sgroups. These can be used to store arbitrary (and semantic) data on sets of atoms/bonds. An example usage is storing mixture information, here we can attach a ratio to the component brackets of a mixture "THF:DCM (1:3)":

C1CCOC1.C(Cl)Cl |Sg:c:0,1,2,3,4::,Sg:c:5,6,7::,Sg:mix:0,1,2,3,4,5,6,7::,SgD::RATIO:1/4::,SgD::RATIO:3/4::,SgH:2:1.0,0:3,1:4|
  • Improved MDL query reading semantics, previously reading a query MOLfile would result in an inconsistent molecule where some atoms/bonds were "real" and some were "query". We may still tweak this further based on dative bonds stored as 8=ANY BOND.
  • Depiction: Display 2H as D (option: StandardGenerator.DeuteriumSymbol).
  • Depiction: Allow Psuedo atom font to be customised (option: StandardGenerator.PseudoFontStyle).
  • Depiction: Racemic/Relative stereo group display:

CC[C@H](O)[C@H](O)N |&1:2,&2:4|
CC[C@H](O)[C@H](O)N |o1:2,o2:4|
CC[C@H](O)[C@H](O)N |&1:2,4|
CC[C@H](O)[C@H](O)N |r|
CC[C@H](O)[C@H](O)N |&o:2,4|
  • Depiction: Display ligand ordering from CXSMILES, this allows indication of how to reattach groups:

CC*(CN)CO |$;;R$,LO:2:1.3.5|
*CC(N*)CC* |$_AP1;;;;_AP2;;;_AP3$|
  • Improved Trigonal Bipyramidal and Octahedral layouts of bidentate ligands:

O=C1O[Fe@](OC1=O)(OC2=O)(Cl)OC2=O.O=C1O[Fe@@](OC1=O)(OC2=O)(Cl)OC2=O
O=C1O[Fe@OH12-3]23(OC(C(O3)=O)=O)(OC(C(O2)=O)=O)OC1=O.O=C1O[Fe@OH13-3]23(OC(C(O3)=O)=O)(OC(C(O2)=O)=O)OC1=O
Cl[Fe@OH12-3]23(OC(C(O3)=O)=O)(OC(C(O2)=O)=O)Cl.Cl[Fe@OH13-3]23(OC(C(O3)=O)=O)(OC(C(O2)=O)=O)Cl

Authors

   169  John Mayfield
    75  Egon Willighagen
    24  Danny Katzel
    18  Xavier Linn
    11  Mark J. Williamson
     9  Mark Williamson
     2  Jeffrey Plante
     2  Kazuya Ujihara
     1  Tagir Valeev
     1  Jean Marois
     1  Kai Dührkop
     1  Glur, Marco
     1  Robin Schmid

Full Change Log

Clone this wiki locally