mailr21731 - in /trunk/lib: __init__.py periodic_table.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on December 02, 2013 - 10:13:
Author: bugman
Date: Mon Dec  2 10:13:58 2013
New Revision: 21731

URL: http://svn.gna.org/viewcvs/relax?rev=21731&view=rev
Log:
Created the lib.periodic_table module for storing information about the 
periodic table.

This is via the periodic_table object which will have different methods for 
obtaining different
information about an element.


Added:
    trunk/lib/periodic_table.py
Modified:
    trunk/lib/__init__.py

Modified: trunk/lib/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/__init__.py?rev=21731&r1=21730&r2=21731&view=diff
==============================================================================
--- trunk/lib/__init__.py (original)
+++ trunk/lib/__init__.py Mon Dec  2 10:13:58 2013
@@ -42,6 +42,7 @@
     'mathematics',
     'model_selection',
     'order',
+    'periodic_table',
     'physical_constants',
     'regex',
     'selection',

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




Related Messages


Powered by MHonArc, Updated Mon Dec 02 10:40:01 2013