Package rdkit :: Package Chem :: Module PeriodicTable
[hide private]
[frames] | no frames]

Source Code for Module rdkit.Chem.PeriodicTable

  1  # $Id$ 
  2  # 
  3  # Copyright (C) 2001-2006 greg Landrum and Rational Discovery LLC 
  4  # 
  5  #   @@ All Rights Reserved @@ 
  6  #  This file is part of the RDKit. 
  7  #  The contents are covered by the terms of the BSD license 
  8  #  which is included in the file license.txt, found at the root 
  9  #  of the RDKit source tree. 
 10  # 
 11  """ periodic table data, **obsolete** 
 12   
 13    now that the C++ code exposes an interface to the internal PT stuff, 
 14    this data is mostly obsolete 
 15   
 16  """ 
 17  # Num   Symb    RCov    RBO     RVdW    Max Bnd Mass   nval 
 18  periodicData = """ 
 19  0       X       0.0     0.0     0.0     0       0.000   0 
 20  1       H       0.230   0.330   1.200   1       1.008   1 
 21  2       He      0.930   0.700   1.400   0       4.003   2 
 22  3       Li      0.680   1.230   1.820   1       6.941   1 
 23  4       Be      0.350   0.900   1.700   2       9.012   2 
 24  5       B       0.830   0.820   2.080   3       10.812  3 
 25  6       C       0.680   0.770   1.950   4       12.011  4 
 26  7       N       0.680   0.700   1.850   4       14.007  5 
 27  8       O       0.680   0.660   1.700   2       15.999  6 
 28  9       F       0.640   0.611   1.730   1       18.998  7 
 29  10      Ne      1.120   0.700   1.540   0       20.180   8 
 30  11      Na      0.970   1.540   2.270   1       22.990   1 
 31  12      Mg      1.100   1.360   1.730   2       24.305   2 
 32  13      Al      1.350   1.180   2.050   6       26.982   3 
 33  14      Si      1.200   0.937   2.100   6       28.086   4 
 34  15      P       0.750   0.890   2.080   5       30.974   5 
 35  16      S       1.020   1.040   2.000   6       32.067   6 
 36  17      Cl      0.990   0.997   1.970   1       35.453   7 
 37  18      Ar      1.570   1.740   1.880   0       39.948   8 
 38  19      K       1.330   2.030   2.750   1       39.098   1 
 39  20      Ca      0.990   1.740   1.973   2       40.078   2 
 40  21      Sc      1.440   1.440   1.700   6       44.956   3 
 41  22      Ti      1.470   1.320   1.700   6       47.867   4 
 42  23      V       1.330   1.220   1.700   6       50.942   5 
 43  24      Cr      1.350   1.180   1.700   6       51.996   6 
 44  25      Mn      1.350   1.170   1.700   8       54.938   7 
 45  26      Fe      1.340   1.170   1.700   6       55.845   8 
 46  27      Co      1.330   1.160   1.700   6       58.933   9 
 47  28      Ni      1.500   1.150   1.630   6       58.693   10 
 48  29      Cu      1.520   1.170   1.400   6       63.546   11 
 49  30      Zn      1.450   1.250   1.390   6       65.39    2 
 50  31      Ga      1.220   1.260   1.870   3       69.723   3 
 51  32      Ge      1.170   1.188   1.700   4       72.61    4 
 52  33      As      1.210   1.200   1.850   3       74.922   5 
 53  34      Se      1.220   1.170   1.900   2       78.96    6 
 54  35      Br      1.210   1.167   2.100   1       79.904   7 
 55  36      Kr      1.910   1.910   2.020   0       83.80    8 
 56  37      Rb      1.470   2.160   1.700   1       85.468   1 
 57  38      Sr      1.120   1.910   1.700   2       87.62    2 
 58  39      Y       1.780   1.620   1.700   6       88.906   3 
 59  40      Zr      1.560   1.450   1.700   6       91.224   4 
 60  41      Nb      1.480   1.340   1.700   6       92.906   5 
 61  42      Mo      1.470   1.300   1.700   6       95.94    6 
 62  43      Tc      1.350   1.270   1.700   6       98.0     7 
 63  44      Ru      1.400   1.250   1.700   6       101.07   8 
 64  45      Rh      1.450   1.250   1.700   6       102.906  9 
 65  46      Pd      1.500   1.280   1.630   6       106.42   10 
 66  47      Ag      1.590   1.340   1.720   6       107.868  11 
 67  48      Cd      1.690   1.480   1.580   6       112.412  2 
 68  49      In      1.630   1.440   1.930   3       114.818  3 
 69  50      Sn      1.460   1.385   2.170   4       118.711  4 
 70  51      Sb      1.460   1.400   2.200   3       121.760  5 
 71  52      Te      1.470   1.378   2.060   2       127.60   6 
 72  53      I       1.400   1.387   2.150   1       126.904  7 
 73  54      Xe      1.980   1.980   2.160   0       131.29   8 
 74  55      Cs      1.670   2.350   1.700   1       132.905  1 
 75  56      Ba      1.340   1.980   1.700   2       137.328  2 
 76  57      La      1.870   1.690   1.700   12      138.906  3 
 77  58      Ce      1.830   1.830   1.700   6       140.116  4 
 78  59      Pr      1.820   1.820   1.700   6       140.908  3 
 79  60      Nd      1.810   1.810   1.700   6       144.24   4 
 80  61      Pm      1.800   1.800   1.700   6       145.0    5 
 81  62      Sm      1.800   1.800   1.700   6       150.36   6 
 82  63      Eu      1.990   1.990   1.700   6       151.964  7 
 83  64      Gd      1.790   1.790   1.700   6       157.25   8 
 84  65      Tb      1.760   1.760   1.700   6       158.925  9 
 85  66      Dy      1.750   1.750   1.700   6       162.50   10 
 86  67      Ho      1.740   1.740   1.700   6       164.930  11 
 87  68      Er      1.730   1.730   1.700   6       167.26   12 
 88  69      Tm      1.720   1.720   1.700   6       168.934  13 
 89  70      Yb      1.940   1.940   1.700   6       173.04   14 
 90  71      Lu      1.720   1.720   1.700   6       174.967  15 
 91  72      Hf      1.570   1.440   1.700   6       178.49   4 
 92  73      Ta      1.430   1.340   1.700   6       180.948  5 
 93  74      W       1.370   1.300   1.700   6       183.84   6 
 94  75      Re      1.350   1.280   1.700   6       186.207  7 
 95  76      Os      1.370   1.260   1.700   6       190.23   8 
 96  77      Ir      1.320   1.270   1.700   6       192.217  9 
 97  78      Pt      1.500   1.300   1.720   6       195.078  10 
 98  79      Au      1.500   1.340   1.660   6       196.967  11 
 99  80      Hg      1.700   1.490   1.550   6       200.59   2 
100  81      Tl      1.550   1.480   1.960   3       204.383  3 
101  82      Pb      1.540   1.480   2.020   4       207.2    4 
102  83      Bi      1.540   1.450   1.700   3       208.980  5 
103  84      Po      1.680   1.460   1.700   2       209.0    6 
104  85      At      1.700   1.450   1.700   1       210.0    7 
105  86      Rn      2.400   2.400   1.700   0       222.0    8 
106  87      Fr      2.000   2.000   1.700   1       223.0    1 
107  88      Ra      1.900   1.900   1.700   2       226.0    2 
108  89      Ac      1.880   1.880   1.700   6       227.0    3 
109  90      Th      1.790   1.790   1.700   6       232.038  4 
110  91      Pa      1.610   1.610   1.700   6       231.036  3 
111  92      U       1.580   1.580   1.860   6       238.029  4 
112  93      Np      1.550   1.550   1.700   6       237.0    5 
113  94      Pu      1.530   1.530   1.700   6       244.0    6 
114  95      Am      1.510   1.070   1.700   6       243.0    7 
115  96      Cm      1.500   0.000   1.700   6       247.0    8 
116  97      Bk      1.500   0.000   1.700   6       247.0    9 
117  98      Cf      1.500   0.000   1.700   6       251.0    10 
118  99      Es      1.500   0.000   1.700   6       252.0    11 
119  100     Fm      1.500   0.000   1.700   6       257.0    12 
120  101     Md      1.500   0.000   1.700   6       258.0    13 
121  102     No      1.500   0.000   1.700   6       259.0    14 
122  103     Lr      1.500   0.000   1.700   6       262.0    15 
123  """ 
124   
125  nameTable = {} 
126  numTable = {} 
127  for line in periodicData.split('\n'): 
128    splitLine = line.split() 
129    if len(splitLine) > 1: 
130      nameTable[splitLine[1]] = (int(splitLine[0]), float(splitLine[6]), int(splitLine[7]), 
131                                 int(splitLine[5]), float(splitLine[2]), float(splitLine[3]), 
132                                 float(splitLine[4])) 
133      numTable[int(splitLine[0])] = (splitLine[1], float(splitLine[6]), int(splitLine[7]), 
134                                     int(splitLine[5]), float(splitLine[2]), float(splitLine[3]), 
135                                     float(splitLine[4])) 
136   
137  # a list of metals (transition metals, semi-metals, lanthanides and actinides) 
138  metalRanges = ["13", "21-32", "39-51", "57-84", "89-103"] 
139  metalNumList = [] 
140  for entry in metalRanges: 
141    t = entry.split('-') 
142    start = int(t[0]) 
143    if len(t) > 1: 
144      end = int(t[1]) 
145    else: 
146      end = start 
147    if start > end: 
148      start, end = end, start 
149    metalNumList += range(start, end + 1) 
150  metalNames = [numTable[x][0] for x in metalNumList] 
151   
152  # these are from table 4 of Rev. Comp. Chem. vol 2, 367-422, (1991) 
153  #  the order is [alpha(SP),alpha(SP2),alpha(SP3)] 
154  # where values are not known, None has been inserted 
155  hallKierAlphas = { 
156    'H': [0.0, 0.0, 0.0],  # removes explicit H's from consideration in the shape 
157    'C': [-0.22, -0.13, 0.0], 
158    'N': [-0.29, -0.20, -0.04], 
159    'O': [None, -0.20, -0.04], 
160    'F': [None, None, -0.07], 
161    'P': [None, 0.30, 0.43], 
162    'S': [None, 0.22, 0.35], 
163    'Cl': [None, None, 0.29], 
164    'Br': [None, None, 0.48], 
165    'I': [None, None, 0.73] 
166  } 
167