RDKit implements the MACCS keys as a set of SMARTS patterns,
plus a few bits coded by hand.

I don't know how much people know the impact of this on the other
free software projects. OpenBabel and CDK both use copies of the
RDKit definitions for their own MACCS keys. While I've seen
earlier internal definitions, they were held rather closely, so
it's very nice to have a public definition.

I'm reviewing the definitions as part of my chemfp project,
which is one of the advantages to having an open definition.

I've got some question or suggestions about them. For reference,
see http://rdkit.org/Python_Docs/rdkit.Chem.MACCSkeys-pysrc.html

* Bit 1 is

   1:('?',0), # ISOTOPE 

This explicitly isn't defined, but shouldn't it be [!*0] ?

I tried out that SMARTS and I see that a SMILES of "C[14CH3]"
has two matches in RDKit to [!0*] but in OEChem there's only
one. I think the OEChem version is correct. I verified it at

with the SMILES of C[14CH2][13CH3] and SMARTS of [!0*] .
Daylight matches 2 of the 3 atoms.

I think this is a bug in RDKit, and once fixed it would
mean this bit could be supported.

* Bit 2 is

  #2:('[#103,#104,#105,#106,#107,#106,#109,#110,#111,#112]',0),  # ISOTOPE Not 
   2:('[#103,#104]',0),  # ISOTOPE Not complete 

I assume the comment is wrong, since this has nothing to do with isotopes.

What's not complete about this definition, and/or why is the first one 
commented out?

* "*NOTE* spec wrong" occurs on many lines

What does it mean?

* Bit 3 is

 3:('[Ge,As,Se,Sn,Sb,Te,Tl,Pb,Bi]',0), # Group IVa,Va,VIa Periods 4-6 (Ge...)  
*NOTE* spec wrong 

The "Tl" doesn't look right. Shouldn't the last three be Pb,Bi,Po ?

*  Bit 18 is

   18:('[B,Al,Ga,In,Tl]',0), # Group IIIA (B...) *NOTE* spec wrong 

Boron may be aromatic according to the SMILES spec, so this
should be [B,b, ...] or [#5, ... ].

Also, here's the aromatic elements in OpenBabel:


Not all of these are valid SMARTS according to Daylight, and
RDKit doesn't support the same set of aromatics, so for a
portable version (which I'm working on) they can be written as

[#34], [#33], [#14], ...

Oh, and aromatic lead has been synthesized


*  Bit 44 is

  44:('?',0), # OTHER 

Is this one of the undocumented bits or does "OTHER" mean
something else?

*  Bit 68 says

    FIX: incomplete definition

Are there thoughts to complete this? My thought is that it isn't
important one way or the other. Without a good validation set
it would be hard to really pin this down.

There are a number of other bits which are also marked "FIX:
incomplete definition". Are they going to be fixed? Again, I
don't think there's a pressing need without validation data.

* Bit 101 says:

  8M Ring or larger. This only handles up to ring sizes of 14 

Is it worthwhile to support larger rings? I don't think so.
If yes, then it could be dealt with outside of the SMARTS,
just like 125 and 166.

BTW, I also verified that all of the CH2 atoms were written
as either [CH2] (if there are two bonds other atoms) or
[C;H2,H3] if there is only one bond (and similar with [NH2]).
While strange chemistries can cause this to fail as a
substructure filter, I recognize that that is outside
the scope of those definitions. 



vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery, 
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now. 
Rdkit-discuss mailing list

Reply via email to