Package lib :: Module periodic_table
[hide private]
[frames] | no frames]

Source Code for Module lib.periodic_table

  1  ############################################################################### 
  2  #                                                                             # 
  3  # Copyright (C) 2013 Edward d'Auvergne                                        # 
  4  #                                                                             # 
  5  # This file is part of the program relax (http://www.nmr-relax.com).          # 
  6  #                                                                             # 
  7  # This program is free software: you can redistribute it and/or modify        # 
  8  # it under the terms of the GNU General Public License as published by        # 
  9  # the Free Software Foundation, either version 3 of the License, or           # 
 10  # (at your option) any later version.                                         # 
 11  #                                                                             # 
 12  # This program is distributed in the hope that it will be useful,             # 
 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of              # 
 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               # 
 15  # GNU General Public License for more details.                                # 
 16  #                                                                             # 
 17  # You should have received a copy of the GNU General Public License           # 
 18  # along with this program.  If not, see <http://www.gnu.org/licenses/>.       # 
 19  #                                                                             # 
 20  ############################################################################### 
 21   
 22  # Module docstring. 
 23  """Module containing a Python object representation of the period table.""" 
 24   
 25  # relax module imports. 
 26  from lib.errors import RelaxError 
 27   
 28   
29 -class Table:
30 """The periodic table object.""" 31
32 - def __init__(self):
33 """Set up the object.""" 34 35 # Initialise some data structures. 36 self.symbol = [] 37 self.name = []
38 39
40 - def add(self, Z=None, symbol=None, name=None):
41 """Add an element to the table. 42 43 @keyword Z: The atomic number. 44 @type Z: int 45 @keyword symbol: The atomic symbol. 46 @type symbol: str 47 @keyword name: The chemical element name. 48 @type name: str 49 """ 50 51 # Check that Z is correctly ordered. 52 if Z != len(self.symbol)+1: 53 raise RelaxError("Incorrect setup.") 54 55 # Append the values. 56 self.symbol.append(symbol) 57 self.name.append(name)
58 59
60 - def lookup_z_to_symbol(self, Z=None):
61 """Return the atomic symbol corresponding to the atomic number. 62 63 @keyword Z: The atomic number. 64 @type Z: int 65 @return: The atomic symbol. 66 @rtype: str 67 """ 68 69 # Direct lookup. 70 return self.symbol[Z-1]
71 72 73 74 # Initialise the table. 75 periodic_table = Table() 76 77 # Populate the table. 78 periodic_table.add(Z=1, symbol='H', name='Hydrogen') 79 periodic_table.add(Z=2, symbol='He', name='Helium') 80 periodic_table.add(Z=3, symbol='Li', name='Lithium') 81 periodic_table.add(Z=4, symbol='Be', name='Beryllium') 82 periodic_table.add(Z=5, symbol='B', name='Boron') 83 periodic_table.add(Z=6, symbol='C', name='Carbon') 84 periodic_table.add(Z=7, symbol='N', name='Nitrogen') 85 periodic_table.add(Z=8, symbol='O', name='Oxygen') 86 periodic_table.add(Z=9, symbol='F', name='Fluorine') 87 periodic_table.add(Z=10, symbol='Ne', name='Neon') 88 periodic_table.add(Z=11, symbol='Na', name='Sodium') 89 periodic_table.add(Z=12, symbol='Mg', name='Magnesium') 90 periodic_table.add(Z=13, symbol='Al', name='Aluminium') 91 periodic_table.add(Z=14, symbol='Si', name='Silicon') 92 periodic_table.add(Z=15, symbol='P', name='Phosphorus') 93 periodic_table.add(Z=16, symbol='S', name='Sulfur') 94 periodic_table.add(Z=17, symbol='Cl', name='Chlorine') 95 periodic_table.add(Z=18, symbol='Ar', name='Argon') 96 periodic_table.add(Z=19, symbol='K', name='Potassium') 97 periodic_table.add(Z=20, symbol='Ca', name='Calcium') 98 periodic_table.add(Z=21, symbol='Sc', name='Scandium') 99 periodic_table.add(Z=22, symbol='Ti', name='Titanium') 100 periodic_table.add(Z=23, symbol='V', name='Vanadium') 101 periodic_table.add(Z=24, symbol='Cr', name='Chromium') 102 periodic_table.add(Z=25, symbol='Mn', name='Manganese') 103 periodic_table.add(Z=26, symbol='Fe', name='Iron') 104 periodic_table.add(Z=27, symbol='Co', name='Cobalt') 105 periodic_table.add(Z=28, symbol='Ni', name='Nickel') 106 periodic_table.add(Z=29, symbol='Cu', name='Copper') 107 periodic_table.add(Z=30, symbol='Zn', name='Zinc') 108 periodic_table.add(Z=31, symbol='Ga', name='Gallium') 109 periodic_table.add(Z=32, symbol='Ge', name='Germanium') 110 periodic_table.add(Z=33, symbol='As', name='Arsenic') 111 periodic_table.add(Z=34, symbol='Se', name='Selenium') 112 periodic_table.add(Z=35, symbol='Br', name='Bromine') 113 periodic_table.add(Z=36, symbol='Kr', name='Krypton') 114 periodic_table.add(Z=37, symbol='Rb', name='Rubidium') 115 periodic_table.add(Z=38, symbol='Sr', name='Strontium') 116 periodic_table.add(Z=39, symbol='Y', name='Yttrium') 117 periodic_table.add(Z=40, symbol='Zr', name='Zirconium') 118 periodic_table.add(Z=41, symbol='Nb', name='Niobium') 119 periodic_table.add(Z=42, symbol='Mo', name='Molybdenum') 120 periodic_table.add(Z=43, symbol='Tc', name='Technetium') 121 periodic_table.add(Z=44, symbol='Ru', name='Ruthenium') 122 periodic_table.add(Z=45, symbol='Rh', name='Rhodium') 123 periodic_table.add(Z=46, symbol='Pd', name='Palladium') 124 periodic_table.add(Z=47, symbol='Ag', name='Silver') 125 periodic_table.add(Z=48, symbol='Cd', name='Cadmium') 126 periodic_table.add(Z=49, symbol='In', name='Indium') 127 periodic_table.add(Z=50, symbol='Sn', name='Tin') 128 periodic_table.add(Z=51, symbol='Sb', name='Antimony') 129 periodic_table.add(Z=52, symbol='Te', name='Tellurium') 130 periodic_table.add(Z=53, symbol='I', name='Iodine') 131 periodic_table.add(Z=54, symbol='Xe', name='Xenon') 132 periodic_table.add(Z=55, symbol='Cs', name='Caesium') 133 periodic_table.add(Z=56, symbol='Ba', name='Barium') 134 periodic_table.add(Z=57, symbol='La', name='Lanthanum') 135 periodic_table.add(Z=58, symbol='Ce', name='Cerium') 136 periodic_table.add(Z=59, symbol='Pr', name='Praseodymium') 137 periodic_table.add(Z=60, symbol='Nd', name='Neodymium') 138 periodic_table.add(Z=61, symbol='Pm', name='Promethium') 139 periodic_table.add(Z=62, symbol='Sm', name='Samarium') 140 periodic_table.add(Z=63, symbol='Eu', name='Europium') 141 periodic_table.add(Z=64, symbol='Gd', name='Gadolinium') 142 periodic_table.add(Z=65, symbol='Tb', name='Terbium') 143 periodic_table.add(Z=66, symbol='Dy', name='Dysprosium') 144 periodic_table.add(Z=67, symbol='Ho', name='Holmium') 145 periodic_table.add(Z=68, symbol='Er', name='Erbium') 146 periodic_table.add(Z=69, symbol='Tm', name='Thulium') 147 periodic_table.add(Z=70, symbol='Yb', name='Ytterbium') 148 periodic_table.add(Z=71, symbol='Lu', name='Lutetium') 149 periodic_table.add(Z=72, symbol='Hf', name='Hafnium') 150 periodic_table.add(Z=73, symbol='Ta', name='Tantalum') 151 periodic_table.add(Z=74, symbol='W', name='Tungsten') 152 periodic_table.add(Z=75, symbol='Re', name='Rhenium') 153 periodic_table.add(Z=76, symbol='Os', name='Osmium') 154 periodic_table.add(Z=77, symbol='Ir', name='Iridium') 155 periodic_table.add(Z=78, symbol='Pt', name='Platinum') 156 periodic_table.add(Z=79, symbol='Au', name='Gold') 157 periodic_table.add(Z=80, symbol='Hg', name='Mercury') 158 periodic_table.add(Z=81, symbol='Tl', name='Thallium') 159 periodic_table.add(Z=82, symbol='Pb', name='Lead') 160 periodic_table.add(Z=83, symbol='Bi', name='Bismuth') 161 periodic_table.add(Z=84, symbol='Po', name='Polonium') 162 periodic_table.add(Z=85, symbol='At', name='Astatine') 163 periodic_table.add(Z=86, symbol='Rn', name='Radon') 164 periodic_table.add(Z=87, symbol='Fr', name='Francium') 165 periodic_table.add(Z=88, symbol='Ra', name='Radium') 166 periodic_table.add(Z=89, symbol='Ac', name='Actinium') 167 periodic_table.add(Z=90, symbol='Th', name='Thorium') 168 periodic_table.add(Z=91, symbol='Pa', name='Protactinium') 169 periodic_table.add(Z=92, symbol='U', name='Uranium') 170 periodic_table.add(Z=93, symbol='Np', name='Neptunium') 171 periodic_table.add(Z=94, symbol='Pu', name='Plutonium') 172 periodic_table.add(Z=95, symbol='Am', name='Americium') 173 periodic_table.add(Z=96, symbol='Cm', name='Curium') 174 periodic_table.add(Z=97, symbol='Bk', name='Berkelium') 175 periodic_table.add(Z=98, symbol='Cf', name='Californium') 176 periodic_table.add(Z=99, symbol='Es', name='Einsteinium') 177 periodic_table.add(Z=100, symbol='Fm', name='Fermium') 178 periodic_table.add(Z=101, symbol='Md', name='Mendelevium') 179 periodic_table.add(Z=102, symbol='No', name='Nobelium') 180 periodic_table.add(Z=103, symbol='Lr', name='Lawrencium') 181 periodic_table.add(Z=104, symbol='Rf', name='Rutherfordium') 182 periodic_table.add(Z=105, symbol='Db', name='Dubnium') 183 periodic_table.add(Z=106, symbol='Sg', name='Seaborgium') 184 periodic_table.add(Z=107, symbol='Bh', name='Bohrium') 185 periodic_table.add(Z=108, symbol='Hs', name='Hassium') 186 periodic_table.add(Z=109, symbol='Mt', name='Meitnerium') 187 periodic_table.add(Z=110, symbol='Ds', name='Darmstadtium') 188 periodic_table.add(Z=111, symbol='Rg', name='Roentgenium') 189 periodic_table.add(Z=112, symbol='Cn', name='Copernicium') 190 periodic_table.add(Z=113, symbol='Uut', name='Ununtrium') 191 periodic_table.add(Z=114, symbol='Fl', name='Flerovium') 192 periodic_table.add(Z=115, symbol='Uup', name='Ununpentium') 193 periodic_table.add(Z=116, symbol='Lv', name='Livermorium') 194 periodic_table.add(Z=117, symbol='Uus', name='Ununseptium') 195 periodic_table.add(Z=118, symbol='Uuo', name='Ununoctium') 196