Source code for parmed.periodic_table

"""
Contains all of the elements in the periodic table and dictionaries that
store all of the data found in the periodic table for that element, indexed
by the element's symbol. For consistency with AMBER, a fictitious element
'EP' is added to all of the arrays that is just an Extra Point, with no mass
or any other meaningful attribute. It's just a container to put an extra
charge
"""
# Data descriptions:
#
#  KNOWN_ELEMENTS: number of known elements
#  Element:        array whose indices are the atomic number corresponding to
#                  the element
#  AtomicNum:      dictionary matching chemical symbol to atomic number
#  Mass:           dictionary matching chemical symbol to atomic mass
#  Name:           dicionary matching chemical symbol to their full name
#  OriginName:     dictionary matching chemical symbol to the name from which
#                  the symbol comes
#  Phase:          Lists standard phase that the element appears in

KNOWN_ELEMENTS = 118

AtomicNum = { 'H'  :  1, 'He' :  2, 'Li' :  3, 'Be' :  4, 'B'  :  5, 'C'  :  6,
              'N'  :  7, 'O'  :  8, 'F'  :  9, 'Ne' : 10, 'Na' : 11, 'Mg' : 12,
              'Al' : 13, 'Si' : 14, 'P'  : 15, 'S'  : 16, 'Cl' : 17, 'Ar' : 18,
              'K'  : 19, 'Ca' : 20, 'Sc' : 21, 'Ti' : 22, 'V'  : 23, 'Cr' : 24,
              'Mn' : 25, 'Fe' : 26, 'Co' : 27, 'Ni' : 28, 'Cu' : 29, 'Zn' : 30,
              'Ga' : 31, 'Ge' : 32, 'As' : 33, 'Se' : 34, 'Br' : 35, 'Kr' : 36,
              'Rb' : 37, 'Sr' : 38, 'Y'  : 39, 'Zr' : 40, 'Nb' : 41, 'Mo' : 42,
              'Tc' : 43, 'Ru' : 44, 'Rh' : 45, 'Pd' : 46, 'Ag' : 47, 'Cd' : 48,
              'In' : 49, 'Sn' : 50, 'Sb' : 51, 'Te' : 52, 'I'  : 53, 'Xe' : 54,
              'Cs' : 55, 'Ba' : 56, 'La' : 57, 'Ce' : 58, 'Pr' : 59, 'Nd' : 60,
              'Pm' : 61, 'Sm' : 62, 'Eu' : 63, 'Gd' : 64, 'Tb' : 65, 'Dy' : 66,
              'Ho' : 67, 'Er' : 68, 'Tm' : 69, 'Yb' : 70, 'Lu' : 71, 'Hf' : 72,
              'Ta' : 73, 'W'  : 74, 'Re' : 75, 'Os' : 76, 'Ir' : 77, 'Pt' : 78,
              'Au' : 79, 'Hg' : 80, 'Tl' : 81, 'Pb' : 82, 'Bi' : 83, 'Po' : 84,
              'At' : 85, 'Rn' : 86, 'Fr' : 87, 'Ra' : 88, 'Ac' : 89, 'Th' : 90,
              'Pa' : 91, 'U'  : 92, 'Np' : 93, 'Pu' : 94, 'Am' : 95, 'Cm' : 96,
              'Bk' : 97, 'Cf' : 98, 'Es' : 99, 'Fm' :100, 'Md' :101, 'No' :102,
              'Lr' :103, 'Rf' :104, 'Db' :105, 'Sg' :106, 'Bh' :107, 'Hs' :108,
              'Mt' :109, 'Ds' :110, 'Rg' :111, 'Cn' :112, 'Nh' :113, 'Fl' :114,
              'Mc' :115, 'Lv' :116, 'Ts' :117, 'Og' :118, 'EP' : 0 , 'LP' :  0,
              'Lp' :  0, 'Ep' :  0}

Element = [ 'EP',
            'H' ,'He','Li','Be','B' ,'C' ,'N' ,'O' ,'F' ,'Ne','Na','Mg',
            'Al','Si','P' ,'S' ,'Cl','Ar','K' ,'Ca','Sc','Ti','V' ,'Cr',
            'Mn','Fe','Co','Ni','Cu','Zn','Ga','Ge','As','Se','Br','Kr',
            'Rb','Sr','Y' ,'Zr','Nb','Mo','Tc','Ru','Rh','Pd','Ag','Cd',
            'In','Sn','Sb','Te','I' ,'Xe','Cs','Ba','La','Ce','Pr','Nd',
            'Pm','Sm','Eu','Gd','Tb','Dy','Ho','Er','Tm','Yb','Lu','Hf',
            'Ta','W' ,'Re','Os','Ir','Pt','Au','Hg','Tl','Pb','Bi','Po',
            'At','Rn','Fr','Ra','Ac','Th','Pa','U' ,'Np','Pu','Am','Cm',
            'Bk','Cf','Es','Fm','Md','No','Lr','Rf','Db','Sg','Bh','Hs',
            'Mt','Ds','Rg','Cn','Nh','Fl','Mc','Lv','Ts','Og' ]

Mass = { 'H'  :   1.0079 , 'He' :   4.0026 , 'Li' :   6.941  ,
         'Be' :   9.0122 , 'B'  :  10.811  , 'C'  :  12.0107 ,
         'N'  :  14.0067 , 'O'  :  15.9994 , 'F'  :  18.9984 ,
         'Ne' :  20.1797 , 'Na' :  22.9898 , 'Mg' :  24.3050 ,
         'Al' :  26.9815 , 'Si' :  28.0855 , 'P'  :  30.9738 ,
         'S'  :  32.065  , 'Cl' :  35.453  , 'Ar' :  39.948  ,
         'K'  :  39.0983 , 'Ca' :  40.078  , 'Sc' :  44.9559 ,
         'Ti' :  47.867  , 'V'  :  50.9415 , 'Cr' :  51.9961 ,
         'Mn' :  54.9380 , 'Fe' :  55.845  , 'Co' :  58.9331 ,
         'Ni' :  58.6934 , 'Cu' :  63.546  , 'Zn' :  65.409  ,
         'Ga' :  69.723  , 'Ge' :  72.64   , 'As' :  74.9216 ,
         'Se' :  78.96   , 'Br' :  79.904  , 'Kr' :  83.798  ,
         'Rb' :  85.4678 , 'Sr' :  87.62   , 'Y'  :  88.9059 ,
         'Zr' :  91.224  , 'Nb' :  92.9064 , 'Mo' :  95.94   ,
         'Tc' :  98.     , 'Ru' : 101.07   , 'Rh' : 102.9055 ,
         'Pd' : 106.42   , 'Ag' : 107.8682 , 'Cd' : 112.411  ,
         'In' : 114.818  , 'Sn' : 118.710  , 'Sb' : 121.760  ,
         'Te' : 127.60   , 'I'  : 126.9045 , 'Xe' : 131.293  ,
         'Cs' : 132.9055 , 'Ba' : 137.327  , 'La' : 138.9055 ,
         'Ce' : 140.116  , 'Pr' : 140.9077 , 'Nd' : 144.242  ,
         'Pm' : 145.     , 'Sm' : 150.36   , 'Eu' : 151.964  ,
         'Gd' : 157.25   , 'Tb' : 158.9254 , 'Dy' : 162.500  ,
         'Ho' : 164.9303 , 'Er' : 167.259  , 'Tm' : 168.9342 ,
         'Yb' : 173.04   , 'Lu' : 174.967  , 'Hf' : 178.49   ,
         'Ta' : 180.9479 , 'W'  : 183.84   , 'Re' : 186.207  ,
         'Os' : 190.23   , 'Ir' : 192.217  , 'Pt' : 195.084  ,
         'Au' : 196.9666 , 'Hg' : 200.59   , 'Tl' : 204.3833 ,
         'Pb' : 207.2    , 'Bi' : 208.9804 , 'Po' : 209.     ,
         'At' : 210.     , 'Rn' : 222.     , 'Fr' : 223.     ,
         'Ra' : 226.     , 'Ac' : 227.     , 'Th' : 232.0381 ,
         'Pa' : 231.0359 , 'U'  : 238.0289 , 'Np' : 237.     ,
         'Pu' : 244.     , 'Am' : 243.     , 'Cm' : 247.     ,
         'Bk' : 247.     , 'Cf' : 251.     , 'Es' : 252.     ,
         'Fm' : 257.     , 'Md' : 258.     , 'No' : 259.     ,
         'Lr' : 262.     , 'Rf' : 261.     , 'Db' : 262.     ,
         'Sg' : 266.     , 'Bh' : 264.     , 'Hs' : 277.     ,
         'Mt' : 268.     , 'Ds' : 281.     , 'Rg' : 272.     ,
         'Cn' : 285.     , 'Nh' : 286.     , 'Fl' : 289.     ,
         'Mc' : 289.     , 'Lv' : 293.     , 'Ts' : 294.     ,
         'Og' : 294.     , 'EP' : 0.000000 }

Name = { 'H'  : 'Hydrogen'     ,'He' : 'Helium'       ,'Li' : 'Lithium'      ,
         'Be' : 'Beryllium'    ,'B'  : 'Boron'        ,'C'  : 'Carbon'       ,
         'N'  : 'Nitrogen'     ,'O'  : 'Oxygen'       ,'F'  : 'Fluorine'     ,
         'Ne' : 'Neon'         ,'Na' : 'Sodium'       ,'Mg' : 'Magnesium'    ,
         'Al' : 'Aluminum'     ,'Si' : 'Silicon'      ,'P'  : 'Phosphorus'   ,
         'S'  : 'Sulfur'       ,'Cl' : 'Chlorine'     ,'Ar' : 'Argon'        ,
         'K'  : 'Potassium'    ,'Ca' : 'Calcium'      ,'Sc' : 'Scandium'     ,
         'Ti' : 'Titanium'     ,'V'  : 'Vanadium'     ,'Cr' : 'Chromium'     ,
         'Mn' : 'Manganese'    ,'Fe' : 'Iron'         ,'Co' : 'Cobalt'       ,
         'Ni' : 'Nickel'       ,'Cu' : 'Copper'       ,'Zn' : 'Zinc'         ,
         'Ga' : 'Gallium'      ,'Ge' : 'Germanium'    ,'As' : 'Arsenic'      ,
         'Se' : 'Selenium'     ,'Br' : 'Bromine'      ,'Kr' : 'Krypton'      ,
         'Rb' : 'Rubidium'     ,'Sr' : 'Strontium'    ,'Y'  : 'Yttrium'      ,
         'Zr' : 'Zirconium'    ,'Nb' : 'Niobium'      ,'Mo' : 'Molybdenum'   ,
         'Tc' : 'Technetium'   ,'Ru' : 'Ruthenium'    ,'Rh' : 'Rhodium'      ,
         'Pd' : 'Palladium'    ,'Ag' : 'Silver'       ,'Cd' : 'Cadmium'      ,
         'In' : 'Indium'       ,'Sn' : 'Tin'          ,'Sb' : 'Antimony'     ,
         'Te' : 'Tellurium'    ,'I'  : 'Iodine'       ,'Xe' : 'Xenon'        ,
         'Cs' : 'Cesium'       ,'Ba' : 'Barium'       ,'La' : 'Lanthanum'    ,
         'Ce' : 'Cerium'       ,'Pr' : 'Praseodymium' ,'Nd' : 'Neodymium'    ,
         'Pm' : 'Promethium'   ,'Sm' : 'Samarium'     ,'Eu' : 'Europium'     ,
         'Gd' : 'Gadolinium'   ,'Tb' : 'Terbium'      ,'Dy' : 'Dysprosium'   ,
         'Ho' : 'Holmium'      ,'Er' : 'Erbium'       ,'Tm' : 'Thulium'      ,
         'Yb' : 'Ytterbium'    ,'Lu' : 'Lutetium'     ,'Hf' : 'Hafnium'      ,
         'Ta' : 'Tantalum'     ,'W'  : 'Tungsten'     ,'Re' : 'Rhenium'      ,
         'Os' : 'Osmium'       ,'Ir' : 'Iridium'      ,'Pt' : 'Platinum'     ,
         'Au' : 'Gold'         ,'Hg' : 'Mercury'      ,'Tl' : 'Thallium'     ,
         'Pb' : 'Lead'         ,'Bi' : 'Bismuth'      ,'Po' : 'Polonium'     ,
         'At' : 'Astatine'     ,'Rn' : 'Radon'        ,'Fr' : 'Francium'     ,
         'Ra' : 'Radium'       ,'Ac' : 'Actinium'     ,'Th' : 'Thorium'      ,
         'Pa' : 'Proactinium'  ,'U'  : 'Uranium'      ,'Np' : 'Neptunium'    ,
         'Pu' : 'Plutonium'    ,'Am' : 'Americium'    ,'Cm' : 'Curium'       ,
         'Bk' : 'Berkelium'    ,'Cf' : 'Californium'  ,'Es' : 'Einsteinium'  ,
         'Fm' : 'Fermium'      ,'Md' : 'Mendelevium'  ,'No' : 'Nobelium'     ,
         'Lr' : 'Lawrencium'   ,'Rf' : 'Rutherfordium','Db' : 'Dubnium'      ,
         'Sg' : 'Seaborgium'   ,'Bh' : 'Bohrium'      ,'Hs' : 'Hassium'      ,
         'Mt' : 'Meitnerium'   ,'Ds' : 'Darmstadtium' ,'Rg' : 'Roentgenium'  ,
         'Cn' : 'Copernicium'  ,'Nh' : 'Nihonium'     ,'Fl' : 'Flerovium'    ,
         'Mc' : 'Moscovium'    ,'Lv' : 'Livermorium'  ,'Ts' : 'Tennessine'   ,
         'Og' : 'Oganesson'    ,'EP' : 'Extra Point'  ,'LP' : 'Extra Point'  ,
         'Ep' : 'Extra Point'  ,'Lp' : 'Extra Point'}

OriginName = {
        'H'  : 'Hydrogen'   ,'He' : 'Helium'       ,'Li' : 'Lithium'      ,
        'Be' : 'Beryllium'  ,'B'  : 'Boron'        ,'C'  : 'Carbon'       ,
        'N'  : 'Nitrogen'   ,'O'  : 'Oxygen'       ,'F'  : 'Fluorine'     ,
        'Ne' : 'Neon'       ,'Na' : 'Natrium'      ,'Mg' : 'Magnesium'    ,
        'Al' : 'Aluminum'   ,'Si' : 'Silicon'      ,'P'  : 'Phosphorus'   ,
        'S'  : 'Sulfur'     ,'Cl' : 'Chlorine'     ,'Ar' : 'Argon'        ,
        'K'  : 'Kalium'     ,'Ca' : 'Calcium'      ,'Sc' : 'Scandium'     ,
        'Ti' : 'Titanium'   ,'V'  : 'Vanadium'     ,'Cr' : 'Chromium'     ,
        'Mn' : 'Manganese'  ,'Fe' : 'Ferrum'       ,'Co' : 'Cobalt'       ,
        'Ni' : 'Nickel'     ,'Cu' : 'Cuprum'       ,'Zn' : 'Zinc'         ,
        'Ga' : 'Gallium'    ,'Ge' : 'Germanium'    ,'As' : 'Arsenic'      ,
        'Se' : 'Selenium'   ,'Br' : 'Bromine'      ,'Kr' : 'Krypton'      ,
        'Rb' : 'Rubidium'   ,'Sr' : 'Strontium'    ,'Y'  : 'Yttrium'      ,
        'Zr' : 'Zirconium'  ,'Nb' : 'Niobium'      ,'Mo' : 'Molybdenum'   ,
        'Tc' : 'Technetium' ,'Ru' : 'Ruthenium'    ,'Rh' : 'Rhodium'      ,
        'Pd' : 'Palladium'  ,'Ag' : 'Argentum'     ,'Cd' : 'Cadmium'      ,
        'In' : 'Indium'     ,'Sn' : 'Stannum'      ,'Sb' : 'Stibium'      ,
        'Te' : 'Tellurium'  ,'I'  : 'Iodine'       ,'Xe' : 'Xenon'        ,
        'Cs' : 'Cesium'     ,'Ba' : 'Barium'       ,'La' : 'Lanthanum'    ,
        'Ce' : 'Cerium'     ,'Pr' : 'Praseodymium' ,'Nd' : 'Neodymium'    ,
        'Pm' : 'Promethium' ,'Sm' : 'Samarium'     ,'Eu' : 'Europium'     ,
        'Gd' : 'Gadolinium' ,'Tb' : 'Terbium'      ,'Dy' : 'Dysprosium'   ,
        'Ho' : 'Holmium'    ,'Er' : 'Erbium'       ,'Tm' : 'Thulium'      ,
        'Yb' : 'Ytterbium'  ,'Lu' : 'Lutetium'     ,'Hf' : 'Hafnium'      ,
        'Ta' : 'Tantalum'   ,'W'  : 'Wolfram'      ,'Re' : 'Rhenium'      ,
        'Os' : 'Osmium'     ,'Ir' : 'Iridium'      ,'Pt' : 'Platinum'     ,
        'Au' : 'Aurum'      ,'Hg' : 'Hydrargyrum'  ,'Tl' : 'Thallium'     ,
        'Pb' : 'Plumbum'    ,'Bi' : 'Bismuth'      ,'Po' : 'Polonium'     ,
        'At' : 'Astatine'   ,'Rn' : 'Radon'        ,'Fr' : 'Francium'     ,
        'Ra' : 'Radium'     ,'Ac' : 'Actinium'     ,'Th' : 'Thorium'      ,
        'Pa' : 'Proactinium','U'  : 'Uranium'      ,'Np' : 'Neptunium'    ,
        'Pu' : 'Plutonium'  ,'Am' : 'Americium'    ,'Cm' : 'Curium'       ,
        'Bk' : 'Berkelium'  ,'Cf' : 'Californium'  ,'Es' : 'Einsteinium'  ,
        'Fm' : 'Fermium'    ,'Md' : 'Mendelevium'  ,'No' : 'Nobelium'     ,
        'Lr' : 'Lawrencium' ,'Rf' : 'Rutherfordium','Db' : 'Dubnium'      ,
        'Sg' : 'Seaborgium' ,'Bh' : 'Bohrium'      ,'Hs' : 'Hassium'      ,
        'Mt' : 'Meitnerium' ,'Ds' : 'Darmstadtium' ,'Rg' : 'Roentgenium'  ,
        'Cn' : 'Copernicium','Nh' : 'Nihonium'     ,'Fl' : 'Flerovium'    ,
        'Mc' : 'Moscovium'  ,'Lv' : 'Livermorium'  ,'Ts' : 'Tennessine'   ,
        'Og' : 'Oganesson'  ,'EP' : 'Extra Point'  ,'LP' : 'Extra Point'  ,
        'Ep' : 'Extra Point','Lp' : 'Extra Point'
}

Phase = { 'H'  : 'Gas'          ,'He' : 'Gas'          ,'Li' : 'Solid'        ,
          'Be' : 'Solid'        ,'B'  : 'Solid'        ,'C'  : 'Solid'        ,
          'N'  : 'Gas'          ,'O'  : 'Gas'          ,'F'  : 'Gas'          ,
          'Ne' : 'Gas'          ,'Na' : 'Solid'        ,'Mg' : 'Solid'        ,
          'Al' : 'Solid'        ,'Si' : 'Solid'        ,'P'  : 'Solid'        ,
          'S'  : 'Solid'        ,'Cl' : 'Gas'          ,'Ar' : 'Gas'          ,
          'K'  : 'Solid'        ,'Ca' : 'Solid'        ,'Sc' : 'Solid'        ,
          'Ti' : 'Solid'        ,'V'  : 'Solid'        ,'Cr' : 'Solid'        ,
          'Mn' : 'Solid'        ,'Fe' : 'Solid'        ,'Co' : 'Solid'        ,
          'Ni' : 'Solid'        ,'Cu' : 'Solid'        ,'Zn' : 'Solid'        ,
          'Ga' : 'Solid'        ,'Ge' : 'Solid'        ,'As' : 'Solid'        ,
          'Se' : 'Solid'        ,'Br' : 'Liquid'       ,'Kr' : 'Gas'          ,
          'Rb' : 'Solid'        ,'Sr' : 'Solid'        ,'Y'  : 'Solid'        ,
          'Zr' : 'Solid'        ,'Nb' : 'Solid'        ,'Mo' : 'Solid'        ,
          'Tc' : 'Solid'        ,'Ru' : 'Solid'        ,'Rh' : 'Solid'        ,
          'Pd' : 'Solid'        ,'Ag' : 'Solid'        ,'Cd' : 'Solid'        ,
          'In' : 'Solid'        ,'Sn' : 'Solid'        ,'Sb' : 'Solid'        ,
          'Te' : 'Solid'        ,'I'  : 'Solid'        ,'Xe' : 'Gas'          ,
          'Cs' : 'Solid'        ,'Ba' : 'Solid'        ,'La' : 'Solid'        ,
          'Ce' : 'Solid'        ,'Pr' : 'Solid'        ,'Nd' : 'Solid'        ,
          'Pm' : 'Solid'        ,'Sm' : 'Solid'        ,'Eu' : 'Solid'        ,
          'Gd' : 'Solid'        ,'Tb' : 'Solid'        ,'Dy' : 'Solid'        ,
          'Ho' : 'Solid'        ,'Er' : 'Solid'        ,'Tm' : 'Solid'        ,
          'Yb' : 'Solid'        ,'Lu' : 'Solid'        ,'Hf' : 'Solid'        ,
          'Ta' : 'Solid'        ,'W'  : 'Solid'        ,'Re' : 'Solid'        ,
          'Os' : 'Solid'        ,'Ir' : 'Solid'        ,'Pt' : 'Solid'        ,
          'Au' : 'Solid'        ,'Hg' : 'Liquid'       ,'Tl' : 'Solid'        ,
          'Pb' : 'Solid'        ,'Bi' : 'Solid'        ,'Po' : 'Solid'        ,
          'At' : 'Solid'        ,'Rn' : 'Solid'        ,'Fr' : 'Solid'        ,
          'Ra' : 'Gas'          ,'Ac' : 'Solid'        ,'Th' : 'Solid'        ,
          'Pa' : 'Solid'        ,'U'  : 'Solid'        ,'Np' : 'Solid'        ,
          'Pu' : 'Solid'        ,'Am' : 'Solid'        ,'Cm' : 'Solid'        ,
          'Bk' : 'Solid'        ,'Cf' : 'Solid'        ,'Es' : 'Solid'        ,
          'Fm' : 'Solid'        ,'Md' : 'Solid'        ,'No' : 'Solid'        ,
          'Lr' : 'Solid'        ,'Rf' : 'Unknown'      ,'Db' : 'Unknown'      ,
          'Sg' : 'Unknown'      ,'Bh' : 'Unknown'      ,'Hs' : 'Unknown'      ,
          'Mt' : 'Unknown'      ,'Ds' : 'Unknown'      ,'Rg' : 'Unknown'      ,
          'Cn' : 'Unknown'      ,'Nh' : 'Unknown'      ,'Fl' : 'Unknown'      ,
          'Mc' : 'Unknown'      ,'Lv' : 'Unknown'      ,'Ts' : 'Unknown'      ,
          'Og' : 'Unknown'      ,'EP' : 'N/A'          ,'Ep' : 'N/A'          ,
          'LP' : 'N/A'          ,'Lp' : 'N/A'
}

_sorted_masses = sorted(Mass.items(), key=lambda x: x[1])

[docs]def element_by_mass(mass): """ Determine the element that has a mass closest to the input mass Parameters ---------- mass : float The atomic mass to compare to Returns ------- element: str The returned string is the name of the element whose atomic mass is closest to the input mass Notes ----- This actually fails (i.e., produces poor predictions) for some cases when masses have changed -- particularly in the case of Hydrogen mass repartitioning. """ diff = mass + 1 best_guess = 'EP' for element, element_mass in _sorted_masses: d = abs(element_mass - mass) if d < diff: best_guess = element diff = d else: break return best_guess
[docs]def element_by_name(name): """ Determine the element based on the name of an atom. This is very naive. It first tries to match the first letter of the element. If that doesn't work, it tries to match the first *two* letters. If that still doesn't work, it defaults to an extra point Parameters ---------- name : str Name of the atom to determine an element for Returns ------- element : str The name of the best-matching element Notes ----- This should be a last-case scenario for guessing element information. For instance, Ca will never be matched, since calcium atoms will be tagged as carbon before the second letter is tried. This is usually OK for biomolecules, but you are better off using the mass or, even better, an appropriate representation of the atomic number to begin with """ name = name.strip() if len(name) == 0: return Element[0] try: atomic_number = AtomicNum[name[0].upper()] except KeyError: sym = name[:2] try: sym = '%s%s' % (sym[0].upper(), sym[1].lower()) atomic_number = AtomicNum[sym] except (KeyError, IndexError): atomic_number = 0 # give up return Element[atomic_number]
# Add some mass aliases here. We need to do it *after* _sorted_masses is created above, since # the element_by_mass routine which uses the _sorted_masses assumes that the masses are all # monotonically strictly increasing Mass.update(dict(Ep=0.0, LP=0.0, Lp=0.0))