# Periodic table used in MoHa
# Default unit using in the peridoic table
# mass: amu
# radius: pm
[docs]class Element(object):
"""Represents an element from the periodic table.
Attributes
----------
number : int
The atomic number.
symbol : str
A string with the symbol of the element.
name : str
The full element name.
group : int
The group of the element (not for actinides and lanthanides).
"""
def __init__(self, number=None, symbol=None, **kwargs):
self.number = number
self.symbol = symbol
for name, value in kwargs.items():
setattr(self, name, value)
[docs]class Periodic(object):
"""A periodic table data structure.
"""
def __init__(self, elements):
"""Initialize the instance
Parameters
----------
elements
A list of :class:`Element` instances.
"""
self.elements = elements
self._lookup = {}
for element in elements:
self._lookup[element.number] = element
self._lookup[element.symbol.lower()] = element
def __getitem__(self, index):
"""Get an element from the table based on a flexible index.
Parameters
----------
index
This can be either an integer atomic number, a string with the
elemental symbol (any case), or a string with the atomic number.
Returns
-------
result :
The corresponding :class:`Element` instance.
"""
result = self._lookup.get(index)
if result is None and isinstance(index, str):
index = index.strip()
result = self._lookup.get(index.lower())
if result is None and index.isdigit():
result = self._lookup.get(int(index))
if result is None:
raise KeyError('Could not find element %s.' % index)
return result
[docs]def load_periodic():
"""Load the periodic table data.
Unit set
--------
radius_calculated: pm
Returns
-------
periodic_table:
An instance of :class:`Periodic`.
"""
elements = []
#First row
H = Element(1,'H',name ='Hydrogen',period=1,group=1,mass=1.007975,radius_calculated=53,radius_covalent=37,radius_van_der_waals=120)
He = Element(2,'He',name ='Helium',period=1,group=18,mass=4.002602,radius_calculated=31,radius_covalent=32,radius_van_der_waals=140)
#Second row
Li = Element(3,'Li',name ='Lithium',period=2,group=1,mass=6.9675,radius_calculated=167,radius_covalent=134,radius_van_der_waals=182)
Be = Element(4,'Be',name ='Beryllium',period=2,group=2,mass=9.0121831,radius_calculated=112,radius_covalent=90,radius_van_der_waals=None)
B = Element(5,'B',name ='Boron',period=2,group=13,mass=10.8135,radius_calculated=87,radius_covalent=82,radius_van_der_waals=None)
C = Element(6,'C',name ='Carbon',period=2,group=14,mass=12.0106,radius_calculated=67,radius_covalent=77,radius_van_der_waals=170)
N = Element(7,'N',name ='Nitrogen',period=2,group=15,mass=14.006855,radius_calculated=56,radius_covalent=75,radius_van_der_waals=155)
O = Element(8,'O',name ='Oxygen',period=2,group=16,mass=15.9994,radius_calculated=48,radius_covalent=73,radius_van_der_waals=152)
F = Element(9,'F',name ='Fluorine',period=2,group=17,mass=18.998403163,radius_calculated=42,radius_covalent=71,radius_van_der_waals=147)
Ne = Element(10,'Ne',name ='Neon',period=2,group=18,mass=20.1797,radius_calculated=38,radius_covalent=69,radius_van_der_waals=154)
#Third row
Na = Element(11,'Na',name ='Sodium',period=3,group=1,mass=22.98976928,radius_calculated=190,radius_covalent=154,radius_van_der_waals=227)
Mg = Element(12,'Mg',name ='Magnesium',period=3,group=2,mass=24.3055,radius_calculated=145,radius_covalent=130,radius_van_der_waals=173)
Al = Element(13,'Al',name ='Aluminium',period=3,group=13,mass=26.9815385,radius_calculated=118,radius_covalent=118,radius_van_der_waals=None)
Si = Element(14,'Si',name ='Silicon',period=3,group=14,mass=28.085,radius_calculated=111,radius_covalent=111,radius_van_der_waals=210)
P = Element(15,'P',name ='Phosphorus',period=3,group=15,mass=30.973761998,radius_calculated=98,radius_covalent=106,radius_van_der_waals=180)
S = Element(16,'S',name ='Sulfur',period=3,group=16,mass=32.0675,radius_calculated=88,radius_covalent=102,radius_van_der_waals=180)
Cl = Element(17,'Cl',name ='Chlorine',period=3,group=17,mass=35.4515,radius_calculated=79,radius_covalent=99,radius_van_der_waals=175)
Ar = Element(18,'Ar',name ='Argon',period=3,group=18,mass=39.948,radius_calculated=71,radius_covalent=97,radius_van_der_waals=188)
#Fourth row
K = Element(19,'K',name ='Potassium',period=4,group=1,mass=39.0983,radius_calculated=243,radius_covalent=196,radius_van_der_waals=275)
Ca = Element(20,'Ca',name ='Calcium',period=4,group=2,mass=40.078,radius_calculated=194,radius_covalent=174,radius_van_der_waals=None)
Sc = Element(21,'Sc',name ='Scandium',period=4,group=3,mass=44.955908,radius_calculated=184,radius_covalent=144,radius_van_der_waals=None)
Ti = Element(22,'Ti',name ='Titanium',period=4,group=4,mass=47.867,radius_calculated=176,radius_covalent=136,radius_van_der_waals=None)
V = Element(23,'V',name ='Vanadium',period=4,group=5,mass=50.9415,radius_calculated=171,radius_covalent=125,radius_van_der_waals=None)
Cr = Element(24,'Cr',name ='Chromium',period=4,group=6,mass=51.9961,radius_calculated=166,radius_covalent=127,radius_van_der_waals=None)
Mn = Element(25,'Mn',name ='Manganese',period=4,group=7,mass=54.938044,radius_calculated=161,radius_covalent=139,radius_van_der_waals=None)
Fe = Element(26,'Fe',name ='Iron',period=4,group=8,mass=55.845,radius_calculated=156,radius_covalent=125,radius_van_der_waals=None)
Co = Element(27,'Co',name ='Cobalt',period=4,group=9,mass=58.933194,radius_calculated=152,radius_covalent=126,radius_van_der_waals=None)
Ni = Element(28,'Ni',name ='Nickel',period=4,group=10,mass=58.6934,radius_calculated=149,radius_covalent=121,radius_van_der_waals=163)
Cu = Element(29,'Cu',name ='Copper',period=4,group=11,mass=63.546,radius_calculated=145,radius_covalent=138,radius_van_der_waals=140)
Zn = Element(30,'Zn',name ='Zinc',period=4,group=12,mass=65.38,radius_calculated=142,radius_covalent=131,radius_van_der_waals=139)
Ga = Element(31,'Ga',name ='Gallium',period=4,group=13,mass=69.723,radius_calculated=136,radius_covalent=126,radius_van_der_waals=187)
Ge = Element(32,'Ge',name ='Germanium',period=4,group=14,mass=72.63,radius_calculated=125,radius_covalent=122,radius_van_der_waals=None)
As = Element(33,'As',name ='Arsenic',period=4,group=15,mass=74.921595,radius_calculated=114,radius_covalent=119,radius_van_der_waals=185)
Se = Element(34,'Se',name ='Selenium',period=4,group=16,mass=78.971,radius_calculated=103,radius_covalent=116,radius_van_der_waals=190)
Br = Element(35,'Br',name ='Bromine',period=4,group=17,mass=79.904,radius_calculated=94,radius_covalent=114,radius_van_der_waals=185)
Kr = Element(36,'Kr',name ='Krypton',period=4,group=18,mass=83.798,radius_calculated=88,radius_covalent=110,radius_van_der_waals=202)
#Fifth row
Rb = Element(37,'Rb',name ='Rubidium',period=5,group=1,mass=85.4678,radius_calculated=265,radius_covalent=211,radius_van_der_waals=None)
Sr = Element(38,'Sr',name ='Strontium',period=5,group=2,mass=87.62,radius_calculated=219,radius_covalent=192,radius_van_der_waals=None)
Y = Element(39,'Y',name ='Yttrium',period=5,group=3,mass=88.90584,radius_calculated=212,radius_covalent=162,radius_van_der_waals=None)
Zr = Element(40,'Zr',name ='Zirconium',period=5,group=4,mass=91.224,radius_calculated=206,radius_covalent=148,radius_van_der_waals=None)
Nb = Element(41,'Nb',name ='Niobium',period=5,group=5,mass=92.90637,radius_calculated=198,radius_covalent=137,radius_van_der_waals=None)
Mo = Element(42,'Mo',name ='Molybdenum',period=5,group=6,mass=95.95,radius_calculated=190,radius_covalent=145,radius_van_der_waals=None)
Tc = Element(43,'Tc',name ='Technetium',period=5,group=7,mass=96.90636,radius_calculated=183,radius_covalent=156,radius_van_der_waals=None)
Ru = Element(44,'Ru',name ='Ruthenium',period=5,group=8,mass=101.07,radius_calculated=178,radius_covalent=126,radius_van_der_waals=None)
Rh = Element(45,'Rh',name ='Rhodium',period=5,group=9,mass=102.9055,radius_calculated=173,radius_covalent=135,radius_van_der_waals=None)
Pd = Element(46,'Pd',name ='Palladium',period=5,group=10,mass=106.42,radius_calculated=169,radius_covalent=131,radius_van_der_waals=163)
Ag = Element(47,'Ag',name ='Silver',period=5,group=11,mass=107.8682,radius_calculated=165,radius_covalent=153,radius_van_der_waals=172)
Cd = Element(48,'Cd',name ='Cadmium',period=5,group=12,mass=112.414,radius_calculated=161,radius_covalent=148,radius_van_der_waals=158)
In = Element(49,'In',name ='Indium',period=5,group=13,mass=114.818,radius_calculated=156,radius_covalent=144,radius_van_der_waals=193)
Sn = Element(50,'Sn',name ='Tin',period=5,group=14,mass=118.71,radius_calculated=145,radius_covalent=141,radius_van_der_waals=217)
Sb = Element(51,'Sb',name ='Antimony',period=5,group=15,mass=121.76,radius_calculated=133,radius_covalent=138,radius_van_der_waals=None)
Te = Element(52,'Te',name ='Tellurium',period=5,group=16,mass=127.6,radius_calculated=123,radius_covalent=135,radius_van_der_waals=206)
I = Element(53,'I',name ='Iodine',period=5,group=17,mass=126.90447,radius_calculated=115,radius_covalent=133,radius_van_der_waals=198)
Xe = Element(54,'Xe',name ='Xenon',period=5,group=18,mass=131.293,radius_calculated=108,radius_covalent=130,radius_van_der_waals=216)
#Sixth row
Cs = Element(55,'Cs',name ='Cesium',period=6,group=1,mass=132.90545196,radius_calculated=298,radius_covalent=225,radius_van_der_waals=None)
Ba = Element(56,'Ba',name ='Barium',period=6,group=2,mass=137.327,radius_calculated=253,radius_covalent=198,radius_van_der_waals=None)
La = Element(57,'La',name ='Lanthanum',period=6,group=3,mass=138.90547,radius_calculated=None,radius_covalent=169,radius_van_der_waals=None)
Ce = Element(58,'Ce',name ='Cerium',period=6,group=3,mass=140.116,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Pr = Element(59,'Pr',name ='Praseodymium',period=6,group=3,mass=140.90766,radius_calculated=247,radius_covalent=None,radius_van_der_waals=None)
Nd = Element(60,'Nd',name ='Neodymium',period=6,group=3,mass=144.242,radius_calculated=206,radius_covalent=None,radius_van_der_waals=None)
Pm = Element(61,'Pm',name ='Promethium',period=6,group=3,mass=144.91276,radius_calculated=205,radius_covalent=None,radius_van_der_waals=None)
Sm = Element(62,'Sm',name ='Samarium',period=6,group=3,mass=150.36,radius_calculated=238,radius_covalent=None,radius_van_der_waals=None)
Eu = Element(63,'Eu',name ='Europium',period=6,group=3,mass=151.964,radius_calculated=231,radius_covalent=None,radius_van_der_waals=None)
Gd = Element(64,'Gd',name ='Gadolinium',period=6,group=3,mass=157.25,radius_calculated=233,radius_covalent=None,radius_van_der_waals=None)
Tb = Element(65,'Tb',name ='Terbium',period=6,group=3,mass=158.92535,radius_calculated=225,radius_covalent=None,radius_van_der_waals=None)
Dy = Element(66,'Dy',name ='Dysprosium',period=6,group=3,mass=162.5,radius_calculated=228,radius_covalent=None,radius_van_der_waals=None)
Ho = Element(67,'Ho',name ='Holmium',period=6,group=3,mass=164.93033,radius_calculated=226,radius_covalent=None,radius_van_der_waals=None)
Er = Element(68,'Er',name ='Erbium',period=6,group=3,mass=167.259,radius_calculated=226,radius_covalent=None,radius_van_der_waals=None)
Tm = Element(69,'Tm',name ='Thulium',period=6,group=3,mass=168.93422,radius_calculated=222,radius_covalent=None,radius_van_der_waals=None)
Yb = Element(70,'Yb',name ='Ytterbium',period=6,group=3,mass=173.054,radius_calculated=222,radius_covalent=None,radius_van_der_waals=None)
Lu = Element(71,'Lu',name ='Lutetium',period=6,group=3,mass=174.9668,radius_calculated=217,radius_covalent=160,radius_van_der_waals=None)
Hf = Element(72,'Hf',name ='Hafnium',period=6,group=4,mass=178.49,radius_calculated=208,radius_covalent=150,radius_van_der_waals=None)
Ta = Element(73,'Ta',name ='Tantalum',period=6,group=5,mass=180.94788,radius_calculated=200,radius_covalent=138,radius_van_der_waals=None)
W = Element(74,'W',name ='Tungsten',period=6,group=6,mass=183.84,radius_calculated=193,radius_covalent=146,radius_van_der_waals=None)
Re = Element(75,'Re',name ='Rhenium',period=6,group=7,mass=186.207,radius_calculated=188,radius_covalent=159,radius_van_der_waals=None)
Os = Element(76,'Os',name ='Osmium',period=6,group=8,mass=190.23,radius_calculated=185,radius_covalent=128,radius_van_der_waals=None)
Ir = Element(77,'Ir',name ='Iridium',period=6,group=9,mass=192.217,radius_calculated=180,radius_covalent=137,radius_van_der_waals=None)
Pt = Element(78,'Pt',name ='Platinum',period=6,group=10,mass=195.084,radius_calculated=177,radius_covalent=128,radius_van_der_waals=175)
Au = Element(79,'Au',name ='Gold',period=6,group=11,mass=196.966569,radius_calculated=174,radius_covalent=144,radius_van_der_waals=166)
Hg = Element(80,'Hg',name ='Mercury',period=6,group=12,mass=200.592,radius_calculated=171,radius_covalent=149,radius_van_der_waals=155)
Tl = Element(81,'Tl',name ='Thallium',period=6,group=13,mass=204.3835,radius_calculated=156,radius_covalent=148,radius_van_der_waals=196)
Pb = Element(82,'Pb',name ='Lead',period=6,group=14,mass=207.2,radius_calculated=154,radius_covalent=147,radius_van_der_waals=202)
Bi = Element(83,'Bi',name ='Bismuth',period=6,group=15,mass=208.9804,radius_calculated=143,radius_covalent=146,radius_van_der_waals=None)
Po = Element(84,'Po',name ='Polonium',period=6,group=16,mass=208.98243,radius_calculated=135,radius_covalent=None,radius_van_der_waals=None)
At = Element(85,'At',name ='Astatine',period=6,group=17,mass=209.98715,radius_calculated=127,radius_covalent=None,radius_van_der_waals=None)
Rn = Element(86,'Rn',name ='Radon',period=6,group=18,mass=222.01758,radius_calculated=120,radius_covalent=145,radius_van_der_waals=None)
#Seventh row
Fr = Element(87,'Fr',name ='Francium',period=7,group=1,mass=223.01973,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Ra = Element(88,'Ra',name ='Radium',period=7,group=2,mass=226.02541,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Ac = Element(89,'Ac',name ='Actinium',period=7,group=3,mass=227.02775,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Th = Element(90,'Th',name ='Thorium',period=7,group=3,mass=232.038,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Pa = Element(91,'Pa',name ='Protactinium',period=7,group=3,mass=231.03588,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
U = Element(92,'U',name ='Uranium',period=7,group=3,mass=238.0289,radius_calculated=None,radius_covalent=None,radius_van_der_waals=186)
Np = Element(93,'Np',name ='Neptunium',period=7,group=3,mass=237.048172,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Pu = Element(94,'Pu',name ='Plutonium',period=7,group=3,mass=244.06420,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Am = Element(95,'Am',name ='Americium',period=7,group=3,mass=243.061380,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Cm = Element(96,'Gm',name ='Curium',period=7,group=3,mass=247.07035,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Bk = Element(97,'Bk',name ='Berkelium',period=7,group=3,mass=247.07031,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Cf = Element(98,'Cf',name ='Californium',period=7,group=3,mass=251.07959,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Es = Element(99,'Es',name ='Einsteinium',period=7,group=3,mass=252.0830,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Fm = Element(100,'Fm',name ='Fermium',period=7,group=3,mass=257.09511,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Md = Element(101,'Md',name ='Mendelevium',period=7,group=3,mass=258.09843,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
No = Element(102,'No',name ='Nobelium',period=7,group=3,mass=259.10100,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Lr = Element(103,'Lr',name ='Lawrencium',period=7,group=3,mass=266.120,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Rf = Element(104,'Rf',name ='Rutherfordium',period=7,group=4,mass=267.122,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Db = Element(105,'Db',name ='Dubnium',period=7,group=5,mass=268.126,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Sg = Element(106,'Sg',name ='Seaborgium',period=7,group=6,mass=269.128,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Bh = Element(107,'Bh',name ='Bohrium',period=7,group=7,mass=270.133,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Hs = Element(108,'Hs',name ='Hassium',period=7,group=8,mass=269.1336,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Mt = Element(109,'Mt',name ='Meitnerium',period=7,group=9,mass=277.154,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Ds = Element(110,'Ds',name ='Darmstadtium',period=7,group=10,mass=282.166,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Rg = Element(111,'Rg',name ='Roentgenium',period=7,group=11,mass=282.169,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Cn = Element(112,'Cn',name ='Copernicium',period=7,group=12,mass=286.179,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Nh = Element(113,'Nh',name ='Nihonium',period=7,group=13,mass=286.182,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Fl = Element(114,'Fl',name ='Flerovium',period=7,group=14,mass=290.192,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Mc = Element(115,'Mc',name ='Moscovium',period=7,group=15,mass=290.196,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Lv = Element(116,'Lv',name ='Livermorium',period=7,group=16,mass=293.205,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Ts = Element(117,'Ts',name ='Tennessine',period=7,group=17,mass=294.211,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
Og = Element(118,'Og',name ='Oganesson',period=7,group=18,mass=295.216,radius_calculated=None,radius_covalent=None,radius_van_der_waals=None)
#First row
elements.append(H)
elements.append(He)
#Second row
elements.append(Li)
elements.append(Be)
elements.append(B)
elements.append(C)
elements.append(N)
elements.append(O)
elements.append(F)
elements.append(Ne)
#Third row
elements.append(Na)
elements.append(Mg)
elements.append(Al)
elements.append(Si)
elements.append(P)
elements.append(S)
elements.append(Cl)
elements.append(Ar)
#Fourth row
elements.append(K)
elements.append(Ca)
elements.append(Sc)
elements.append(Ti)
elements.append(V)
elements.append(Cr)
elements.append(Mn)
elements.append(Fe)
elements.append(Co)
elements.append(Ni)
elements.append(Cu)
elements.append(Zn)
elements.append(Ga)
elements.append(Ge)
elements.append(As)
elements.append(Se)
elements.append(Br)
elements.append(Kr)
#Fifth row
elements.append(Rb)
elements.append(Sr)
elements.append(Y)
elements.append(Zr)
elements.append(Nb)
elements.append(Mo)
elements.append(Tc)
elements.append(Ru)
elements.append(Rh)
elements.append(Pd)
elements.append(Ag)
elements.append(Cd)
elements.append(In)
elements.append(Sn)
elements.append(Sb)
elements.append(Te)
elements.append(I)
elements.append(Xe)
#Sixth row
elements.append(Cs)
elements.append(Ba)
elements.append(La)
elements.append(Ce)
elements.append(Pr)
elements.append(Nd)
elements.append(Pm)
elements.append(Sm)
elements.append(Eu)
elements.append(Gd)
elements.append(Tb)
elements.append(Dy)
elements.append(Ho)
elements.append(Er)
elements.append(Tm)
elements.append(Yb)
elements.append(Lu)
elements.append(Hf)
elements.append(Ta)
elements.append(W)
elements.append(Re)
elements.append(Os)
elements.append(Ir)
elements.append(Pt)
elements.append(Au)
elements.append(Hg)
elements.append(Tl)
elements.append(Pb)
elements.append(Bi)
elements.append(Po)
elements.append(At)
elements.append(Rn)
#Seventh row
elements.append(Fr)
elements.append(Ra)
elements.append(Ac)
elements.append(Th)
elements.append(Pa)
elements.append(U)
elements.append(Np)
elements.append(Pu)
elements.append(Am)
elements.append(Cm)
elements.append(Bk)
elements.append(Cf)
elements.append(Es)
elements.append(Fm)
elements.append(Md)
elements.append(No)
elements.append(Lr)
elements.append(Rf)
elements.append(Db)
elements.append(Sg)
elements.append(Bh)
elements.append(Hs)
elements.append(Mt)
elements.append(Ds)
elements.append(Rg)
elements.append(Cn)
elements.append(Nh)
elements.append(Fl)
elements.append(Mc)
elements.append(Lv)
elements.append(Ts)
elements.append(Og)
return Periodic(elements)