ó
a#nSc           @   s4  d  Z  d d l m Z d d l m Z d d l m Z i¦ dKd 6dLd	 6dMd 6dNd 6dOd 6dPd 6dQd 6dRd 6dSd 6dTd 6dUd 6dVd 6dWd 6dXd! 6dYd# 6dZd% 6d[d' 6d\d) 6d]d+ 6d^d- 6d_d/ 6d`d1 6dad3 6dbd5 6dcd7 6ddd9 6ded; 6dfd= 6dgd? 6dhdA 6didC 6djdE 6dkdG 6dldI 6dmdK 6dndM 6dodO 6dpdQ 6dqdS 6drdU 6dsdW 6dtdY 6dud[ 6dvd\ 6dwd^ 6dxd` 6dydb 6dzdd 6d{df 6d|dh 6d}dj 6d~dl 6ddn 6d€dp 6d�dr 6d‚dt 6dƒdv 6d„dx 6d…dz 6d†d| 6d‡d~ 6dˆd€ 6d‰d‚ 6dŠd„ 6d‹d† 6dŒdˆ 6d�dŠ 6dŽdŒ 6d�dŽ 6d�d� 6d‘d’ 6d’d” 6d“d– 6d”d˜ 6d•dš 6d–dœ 6d—dž 6d˜d  6d™d¢ 6dšd¤ 6d›d¦ 6dœd¨ 6d�dª 6džd¬ 6dŸd® 6d d° 6d¡d² 6d¢d´ 6d£d¶ 6d¤d¸ 6d¥dº 6d¦d¼ 6d§d¾ 6d¨dÀ 6d©dÂ 6dªdÄ 6d«dÆ 6d¬dÈ 6d­dÊ 6d®dÌ 6d¯dÎ 6d°dÐ 6d±dÒ 6d²dÔ 6d³dÖ 6d´dØ 6dµdÚ 6d¶dÜ 6d·dÞ 6d¸dà 6d¹dâ 6dºdä 6d»dæ 6d¼dè 6d½dê 6d¾dì 6d¿dî 6dÀdð 6dÁdò 6dÂdô 6dÃdö 6dÄdø 6dÅdú 6dÆdü 6dÇdý 6dÈdÿ 6dÉd6dÊd6dËd6dÌd6dÍd6dÎd
6dÏd6dÐd6dÑd6dÒd6dÓd6dÔd6dÕd6dÖd6d×d6dØd6dÙd6dÚd!6dÛd#6dÜd$6dÝd&6dÞd(6dßd*6dàd,6dád.6dâd06dãd16däd36dåd56dæd76dçd96dèd;6déd<6dêd=6dëd>6dìd@6dídA6dîdB6dïdD6dðdE6Z dJa dF„  Z	 dG„  Z
 e j Z e j Z dH„  Z e dIk r0d dJl Z e ƒ  \ Z Z e j e ƒ n  dJS(ñ  s¥   SMARTS definitions for the publically available MACCS keys
and a MACCS fingerprinter

I compared the MACCS fingerprints generated here with those from two
other packages (not MDL, unfortunately). Of course there are
disagreements between the various fingerprints still, but I think
these definitions work pretty well. Some notes:

1) most of the differences have to do with aromaticity
2) there's a discrepancy sometimes because the current RDKit
definitions do not require multiple matches to be distinct. e.g. the
SMILES C(=O)CC(=O) can match the (hypothetical) key O=CC twice in my
definition. It's not clear to me what the correct behavior is.
3) Some keys are not fully defined in the MDL documentation
4) Two keys, 125 and 166, have to be done outside of SMARTS.
5) Key 1 (ISOTOPE) isn't defined

Rev history:
2006 (gl): Original open-source release
May 2011 (gl): Update some definitions based on feedback from Andrew Dalke

iÿÿÿÿ(   t   Chem(   t   rdMolDescriptors(   t   DataStructst   ?i    i   s   [#104]i   s%   [#32,#33,#34,#50,#51,#52,#82,#83,#84]i   s-   [Ac,Th,Pa,U,Np,Pu,Am,Cm,Bk,Cf,Es,Fm,Md,No,Lr]i   s   [Sc,Ti,Y,Zr,Hf]i   s.   [La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu]i   s   [V,Cr,Mn,Nb,Mo,Tc,Ta,W,Re]i   s   [!#6;!#1]1~*~*~*~1i   s   [Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt]i	   s   [Be,Mg,Ca,Sr,Ba,Ra]i
   s
   *1~*~*~*~1i   s   [Cu,Zn,Ag,Cd,Au,Hg]i   s   [#8]~[#7](~[#6])~[#6]i   s   [#16]-[#16]i   s   [#8]~[#6](~[#8])~[#8]i   s   [!#6;!#1]1~*~*~1i   s	   [#6]#[#6]i   s   [#5,#13,#31,#49,#81]i   s   *1~*~*~*~*~*~*~1i   s   [#14]i   s   [#6]=[#6](~[!#6;!#1])~[!#6;!#1]i   s   *1~*~*~1i   s   [#7]~[#6](~[#8])~[#8]i   s	   [#7]-[#8]i   s   [#7]~[#6](~[#7])~[#7]i   s   [#6]=;@[#6](@*)@*i   s   [I]i   s   [!#6;!#1]~[CH2]~[!#6;!#1]i   s   [#15]i   s   [#6]~[!#6;!#1](~[#6])(~[#6])~*i   s   [!#6;!#1]~[F,Cl,Br,I]i   s   [#6]~[#16]~[#7]i    s
   [#7]~[#16]i!   s   [CH2]=*i"   s   [Li,Na,K,Rb,Cs,Fr]i#   s   [#16R]i$   s   [#7]~[#6](~[#8])~[#7]i%   s   [#7]~[#6](~[#6])~[#7]i&   s   [#8]~[#16](~[#8])~[#8]i'   s
   [#16]-[#8]i(   s	   [#6]#[#7]i)   t   Fi*   s   [!#6;!#1;!H0]~*~[!#6;!#1;!H0]i+   i,   s   [#6]=[#6]~[#7]i-   t   Bri.   s   [#16]~*~[#7]i/   s   [#8]~[!#6;!#1](~[#8])(~[#8])i0   s   [!+0]i1   s   [#6]=[#6](~[#6])~[#6]i2   s   [#6]~[#16]~[#8]i3   s	   [#7]~[#7]i4   s!   [!#6;!#1;!H0]~*~*~*~[!#6;!#1;!H0]i5   s   [!#6;!#1;!H0]~*~*~[!#6;!#1;!H0]i6   s   [#8]~[#16]~[#8]i7   s   [#8]~[#7](~[#8])~[#6]i8   s   [#8R]i9   s   [!#6;!#1]~[#16]~[!#6;!#1]i:   s
   [#16]!:*:*i;   s
   [#16]=[#8]i<   s   *~[#16](~*)~*i=   s   *@*!@*@*i>   s	   [#7]=[#8]i?   s
   *@*!@[#16]i@   s   c:niA   s   [#6]~[#6](~[#6])(~[#6])~*iB   s   [!#6;!#1]~[#16]iC   s   [!#6;!#1;!H0]~[!#6;!#1;!H0]iD   s   [!#6;!#1]~[!#6;!#1;!H0]iE   s   [!#6;!#1]~[#7]~[!#6;!#1]iF   s	   [#7]~[#8]iG   s   [#8]~*~*~[#8]iH   s   [#16]=*iI   s   [CH3]~*~[CH3]iJ   s	   *!@[#7]@*iK   s   [#6]=[#6](~*)~*iL   s   [#7]~*~[#7]iM   s	   [#6]=[#7]iN   s   [#7]~*~*~[#7]iO   s   [#7]~*~*~*~[#7]iP   s   [#16]~*(~*)~*iQ   s   *~[CH2]~[!#6;!#1;!H0]iR   s   [!#6;!#1]1~*~*~*~*~1iS   s   [NH2]iT   s   [#6]~[#7](~[#6])~[#6]iU   s   [C;H2,H3][!#6;!#1][C;H2,H3]iV   s   [F,Cl,Br,I]!@*@*iW   s   [#16]iX   s   [#8]~*~*~*~[#8]iY   sf   [$([!#6;!#1;!H0]~*~*~[CH2]~*),$([!#6;!#1;!H0;R]1@[R]@[R]@[CH2;R]1),$([!#6;!#1;!H0]~[R]1@[R]@[CH2;R]1)]iZ   s•   [$([!#6;!#1;!H0]~*~*~*~[CH2]~*),$([!#6;!#1;!H0;R]1@[R]@[R]@[R]@[CH2;R]1),$([!#6;!#1;!H0]~[R]1@[R]@[R]@[CH2;R]1),$([!#6;!#1;!H0]~*~[R]1@[R]@[CH2;R]1)]i[   s   [#8]~[#6](~[#7])~[#6]i\   s   [!#6;!#1]~[CH3]i]   s   [!#6;!#1]~[#7]i^   s   [#7]~*~*~[#8]i_   s   *1~*~*~*~*~1i`   s   [#7]~*~*~*~[#8]ia   s   [!#6;!#1]1~*~*~*~*~*~1ib   s	   [#6]=[#6]ic   s   *~[CH2]~[#7]id   s_  [$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1)]ie   s   [!#6;!#1]~[#8]if   t   Clig   s   [!#6;!#1;!H0]~*~[CH2]~*ih   s	   *@*(@*)@*ii   s!   [!#6;!#1]~*(~[!#6;!#1])~[!#6;!#1]ij   s   [F,Cl,Br,I]~*(~*)~*ik   s   [CH3]~*~*~*~[CH2]~*il   s   *~[CH2]~[#8]im   s   [#7]~[#6]~[#8]in   s   [#7]~*~[CH2]~*io   s   *~*(~*)(~*)~*ip   s	   [#8]!:*:*iq   s   [CH3]~[CH2]~*ir   s   [CH3]~*~[CH2]~*is   s+   [$([CH3]~*~*~[CH2]~*),$([CH3]~*1~*~[CH2]1)]it   s   [#7]~*~[#8]iu   s'   [$(*~[CH2]~[CH2]~*),$(*1~[CH2]~[CH2]1)]iv   s   [#7]=*iw   s   [!#6;R]ix   s   [#7;R]iy   s   *~[#7](~*)~*iz   s   [#8]~[#6]~[#8]i{   s   [!#6;!#1]~[!#6;!#1]i|   i}   s
   *!@[#8]!@*i~   s	   *@*!@[#8]i   s   [$(*~[CH2]~*~*~*~[CH2]~*),$([R]1@[CH2;R]@[R]@[R]@[R]@[CH2;R]1),$(*~[CH2]~[R]1@[R]@[R]@[CH2;R]1),$(*~[CH2]~*~[R]1@[R]@[CH2;R]1)]i€   sT   [$(*~[CH2]~*~*~[CH2]~*),$([R]1@[CH2]@[R]@[R]@[CH2;R]1),$(*~[CH2]~[R]1@[R]@[CH2;R]1)]i�   i‚   s   [!#6;!#1;!H0]iƒ   s   [#8]~*~[CH2]~*i„   s	   *@*!@[#7]i…   s   [F,Cl,Br,I]i†   s	   [#7]!:*:*i‡   s   [#8]=*iˆ   s	   [!C;!c;R]i‰   s   [!#6;!#1]~[CH2]~*iŠ   s   [O;!H0]i‹   s   [#8]iŒ   s   [CH3]i�   s   [#7]iŽ   i�   s	   *!:*:*!:*i�   s   *1~*~*~*~*~*~1i‘   i’   s-   [$(*~[CH2]~[CH2]~*),$([R]1@[CH2;R]@[CH2;R]1)]i“   s   *~[!#6;!#1](~*)~*i”   s	   [C;H3,H4]i•   s	   *!@*@*!@*i–   s   [#7;!H0]i—   s   [#8]~[#6](~[#6])~[#6]i˜   i™   s	   [#6]=[#8]iš   s   *!@[CH2]!@*i›   s   [#7]~*(~*)~*iœ   s	   [#6]-[#8]i�   s	   [#6]-[#7]iž   iŸ   i    i¡   t   ai¢   i£   i¤   s   [R]i¥   i¦   c         C   s³   t  |  ƒ t  | j ƒ  ƒ k s* t d ƒ ‚ x‚ | j ƒ  D]t } | | \ } } | d k r7 y t j | ƒ } Wn d } n X| s” d | | f GHq« | | f |  | d <q7 q7 Wd S(   sM    *Internal Use Only*

   generates SMARTS patterns for the keys, run once

  s   length mismatchR   s#   SMARTS parser error for key #%d: %si   N(   t   lent   keyst   AssertionErrorR    t   MolFromSmartst   None(   t   keyListt   keyDictt   keyt   pattt   countt   sma(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/MACCSkeys.pyt	   _InitKeysÑ   s    *
c         K   sÜ  t  d k r5 d g t t j ƒ  ƒ a  t t  t ƒ n  | j d t j ƒ } | t t  ƒ d ƒ } xut	 t  ƒ D]g\ } \ } } | d k	 ræ | d k r± |  j
 | ƒ | | d <qÔ|  j | ƒ } t | ƒ | k rÔd | | d <qÔqm | d d k r�|  j ƒ  } d }	 d | d <x¿ | j ƒ  D]i }
 t } x- |
 D]% } |  j | ƒ j ƒ  s2t } Pq2q2W| r|	 d 7}	 |	 d k rˆd | d <PqˆqqWqm | d d k rm d | d <t t j |  ƒ ƒ d k rÔd | d <qÔqm qm W| S(   s   generates the MACCS fingerprint for a molecules

   **Arguments**

     - mol: the molecule to be fingerprinted

     - any extra keyword arguments are ignored
     
   **Returns**

      a _DataStructs.SparseBitVect_ containing the fingerprint.

  >>> m = Chem.MolFromSmiles('CNO')
  >>> bv = GenMACCSKeys(m)
  >>> tuple(bv.GetOnBits())
  (24, 68, 69, 71, 93, 94, 102, 124, 131, 139, 151, 158, 160, 161, 164)
  >>> bv = GenMACCSKeys(Chem.MolFromSmiles('CCC'))
  >>> tuple(bv.GetOnBits())
  (74, 114, 149, 155, 160)

  i    t   ctori   i}   i¦   N(   Ni    (   t	   maccsKeysR   R   t   smartsPattsR	   R   t   getR   t   SparseBitVectt	   enumeratet   HasSubstructMatcht   GetSubstructMatchest   GetRingInfot	   BondRingst   Truet   GetBondWithIdxt   GetIsAromatict   FalseR    t   GetMolFrags(   t   molt   kwargsR   t   rest   iR   R   t   matchest   rit   nAromt   ringt   isAromt   bondIdx(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/MACCSkeys.pyt   _pyGenMACCSKeysä   s@    



c          C   s,   d d  l  }  d d  l } |  j | j d ƒ S(   Niÿÿÿÿt   __main__(   t   doctestt   syst   testmodt   modules(   R/   R0   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/MACCSkeys.pyt   _test'  s    R.   N(   R   i    (   s   [#104]i    (   s%   [#32,#33,#34,#50,#51,#52,#82,#83,#84]i    (   s-   [Ac,Th,Pa,U,Np,Pu,Am,Cm,Bk,Cf,Es,Fm,Md,No,Lr]i    (   s   [Sc,Ti,Y,Zr,Hf]i    (   s.   [La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu]i    (   s   [V,Cr,Mn,Nb,Mo,Tc,Ta,W,Re]i    (   s   [!#6;!#1]1~*~*~*~1i    (   s   [Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt]i    (   s   [Be,Mg,Ca,Sr,Ba,Ra]i    (   s
   *1~*~*~*~1i    (   s   [Cu,Zn,Ag,Cd,Au,Hg]i    (   s   [#8]~[#7](~[#6])~[#6]i    (   s   [#16]-[#16]i    (   s   [#8]~[#6](~[#8])~[#8]i    (   s   [!#6;!#1]1~*~*~1i    (   s	   [#6]#[#6]i    (   s   [#5,#13,#31,#49,#81]i    (   s   *1~*~*~*~*~*~*~1i    (   s   [#14]i    (   s   [#6]=[#6](~[!#6;!#1])~[!#6;!#1]i    (   s   *1~*~*~1i    (   s   [#7]~[#6](~[#8])~[#8]i    (   s	   [#7]-[#8]i    (   s   [#7]~[#6](~[#7])~[#7]i    (   s   [#6]=;@[#6](@*)@*i    (   s   [I]i    (   s   [!#6;!#1]~[CH2]~[!#6;!#1]i    (   s   [#15]i    (   s   [#6]~[!#6;!#1](~[#6])(~[#6])~*i    (   s   [!#6;!#1]~[F,Cl,Br,I]i    (   s   [#6]~[#16]~[#7]i    (   s
   [#7]~[#16]i    (   s   [CH2]=*i    (   s   [Li,Na,K,Rb,Cs,Fr]i    (   s   [#16R]i    (   s   [#7]~[#6](~[#8])~[#7]i    (   s   [#7]~[#6](~[#6])~[#7]i    (   s   [#8]~[#16](~[#8])~[#8]i    (   s
   [#16]-[#8]i    (   s	   [#6]#[#7]i    (   R   i    (   s   [!#6;!#1;!H0]~*~[!#6;!#1;!H0]i    (   R   i    (   s   [#6]=[#6]~[#7]i    (   R   i    (   s   [#16]~*~[#7]i    (   s   [#8]~[!#6;!#1](~[#8])(~[#8])i    (   s   [!+0]i    (   s   [#6]=[#6](~[#6])~[#6]i    (   s   [#6]~[#16]~[#8]i    (   s	   [#7]~[#7]i    (   s!   [!#6;!#1;!H0]~*~*~*~[!#6;!#1;!H0]i    (   s   [!#6;!#1;!H0]~*~*~[!#6;!#1;!H0]i    (   s   [#8]~[#16]~[#8]i    (   s   [#8]~[#7](~[#8])~[#6]i    (   s   [#8R]i    (   s   [!#6;!#1]~[#16]~[!#6;!#1]i    (   s
   [#16]!:*:*i    (   s
   [#16]=[#8]i    (   s   *~[#16](~*)~*i    (   s   *@*!@*@*i    (   s	   [#7]=[#8]i    (   s
   *@*!@[#16]i    (   s   c:ni    (   s   [#6]~[#6](~[#6])(~[#6])~*i    (   s   [!#6;!#1]~[#16]i    (   s   [!#6;!#1;!H0]~[!#6;!#1;!H0]i    (   s   [!#6;!#1]~[!#6;!#1;!H0]i    (   s   [!#6;!#1]~[#7]~[!#6;!#1]i    (   s	   [#7]~[#8]i    (   s   [#8]~*~*~[#8]i    (   s   [#16]=*i    (   s   [CH3]~*~[CH3]i    (   s	   *!@[#7]@*i    (   s   [#6]=[#6](~*)~*i    (   s   [#7]~*~[#7]i    (   s	   [#6]=[#7]i    (   s   [#7]~*~*~[#7]i    (   s   [#7]~*~*~*~[#7]i    (   s   [#16]~*(~*)~*i    (   s   *~[CH2]~[!#6;!#1;!H0]i    (   s   [!#6;!#1]1~*~*~*~*~1i    (   s   [NH2]i    (   s   [#6]~[#7](~[#6])~[#6]i    (   s   [C;H2,H3][!#6;!#1][C;H2,H3]i    (   s   [F,Cl,Br,I]!@*@*i    (   s   [#16]i    (   s   [#8]~*~*~*~[#8]i    (   sf   [$([!#6;!#1;!H0]~*~*~[CH2]~*),$([!#6;!#1;!H0;R]1@[R]@[R]@[CH2;R]1),$([!#6;!#1;!H0]~[R]1@[R]@[CH2;R]1)]i    (   s•   [$([!#6;!#1;!H0]~*~*~*~[CH2]~*),$([!#6;!#1;!H0;R]1@[R]@[R]@[R]@[CH2;R]1),$([!#6;!#1;!H0]~[R]1@[R]@[R]@[CH2;R]1),$([!#6;!#1;!H0]~*~[R]1@[R]@[CH2;R]1)]i    (   s   [#8]~[#6](~[#7])~[#6]i    (   s   [!#6;!#1]~[CH3]i    (   s   [!#6;!#1]~[#7]i    (   s   [#7]~*~*~[#8]i    (   s   *1~*~*~*~*~1i    (   s   [#7]~*~*~*~[#8]i    (   s   [!#6;!#1]1~*~*~*~*~*~1i    (   s	   [#6]=[#6]i    (   s   *~[CH2]~[#7]i    (   s_  [$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1),$([R]@1@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]@[R]1)]i    (   s   [!#6;!#1]~[#8]i    (   R   i    (   s   [!#6;!#1;!H0]~*~[CH2]~*i    (   s	   *@*(@*)@*i    (   s!   [!#6;!#1]~*(~[!#6;!#1])~[!#6;!#1]i    (   s   [F,Cl,Br,I]~*(~*)~*i    (   s   [CH3]~*~*~*~[CH2]~*i    (   s   *~[CH2]~[#8]i    (   s   [#7]~[#6]~[#8]i    (   s   [#7]~*~[CH2]~*i    (   s   *~*(~*)(~*)~*i    (   s	   [#8]!:*:*i    (   s   [CH3]~[CH2]~*i    (   s   [CH3]~*~[CH2]~*i    (   s+   [$([CH3]~*~*~[CH2]~*),$([CH3]~*1~*~[CH2]1)]i    (   s   [#7]~*~[#8]i    (   s'   [$(*~[CH2]~[CH2]~*),$(*1~[CH2]~[CH2]1)]i   (   s   [#7]=*i    (   s   [!#6;R]i   (   s   [#7;R]i    (   s   *~[#7](~*)~*i    (   s   [#8]~[#6]~[#8]i    (   s   [!#6;!#1]~[!#6;!#1]i    (   R   i    (   s
   *!@[#8]!@*i    (   s	   *@*!@[#8]i   (   s   [$(*~[CH2]~*~*~*~[CH2]~*),$([R]1@[CH2;R]@[R]@[R]@[R]@[CH2;R]1),$(*~[CH2]~[R]1@[R]@[R]@[CH2;R]1),$(*~[CH2]~*~[R]1@[R]@[CH2;R]1)]i    (   sT   [$(*~[CH2]~*~*~[CH2]~*),$([R]1@[CH2]@[R]@[R]@[CH2;R]1),$(*~[CH2]~[R]1@[R]@[CH2;R]1)]i    (   s   [!#6;!#1]~[!#6;!#1]i   (   s   [!#6;!#1;!H0]i   (   s   [#8]~*~[CH2]~*i    (   s	   *@*!@[#7]i    (   s   [F,Cl,Br,I]i    (   s	   [#7]!:*:*i    (   s   [#8]=*i   (   s	   [!C;!c;R]i    (   s   [!#6;!#1]~[CH2]~*i   (   s   [O;!H0]i    (   s   [#8]i   (   s   [CH3]i   (   s   [#7]i   (   s	   *@*!@[#8]i    (   s	   *!:*:*!:*i    (   s   *1~*~*~*~*~*~1i   (   s   [#8]i   (   s-   [$(*~[CH2]~[CH2]~*),$([R]1@[CH2;R]@[CH2;R]1)]i    (   s   *~[!#6;!#1](~*)~*i    (   s	   [C;H3,H4]i   (   s	   *!@*@*!@*i    (   s   [#7;!H0]i    (   s   [#8]~[#6](~[#6])~[#6]i    (   s   [!#6;!#1]~[CH2]~*i    (   s	   [#6]=[#8]i    (   s   *!@[CH2]!@*i    (   s   [#7]~*(~*)~*i    (   s	   [#6]-[#8]i    (   s	   [#6]-[#7]i    (   s   [#8]i   (   s	   [C;H3,H4]i    (   s   [#7]i    (   R   i    (   s   *1~*~*~*~*~*~1i    (   s   [#8]i    (   s   [R]i    (   R   i    (   t   __doc__t   rdkitR    t
   rdkit.ChemR   R   R   R   R   R   R-   t   GetMACCSKeysFingerprintt   GenMACCSKeyst   FingerprintMolR3   t   __name__R0   t   failedt   triedt   exit(    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/MACCSkeys.pyt   <module>    sh  
		<			