Skip to content

Commit

Permalink
more uniform location for atomic symbols and element names
Browse files Browse the repository at this point in the history
  • Loading branch information
newville committed Aug 2, 2023
1 parent 6249a6b commit f5c7746
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 111 deletions.
63 changes: 32 additions & 31 deletions larch/utils/physical_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,42 +32,43 @@
# Rydberg constant in eV (~13.6 eV)
RYDBERG = consts.Rydberg * consts.Planck * consts.c/ consts.e

# classical electron radius in cm
# classical electron radius in cm and Ang
R_ELECTRON_CM = 100.0 * consts.physical_constants['classical electron radius'][0]
R_ELECTRON_ANG = 1.e10 * consts.physical_constants['classical electron radius'][0]
R_ELECTRON_ANG = 1.e8 * R_ELECTRON_CM



ATOM_SYMS = ['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']
'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']


ATOM_NAMES = ['hydrogen', 'helium', 'lithium', 'beryllium', 'boron',
'carbon', 'nitrogen', 'oxygen', 'fluorine', 'neon', 'sodium',
'magnesium', 'aluminum', 'silicon', 'phosphorus', 'sulfur',
'chlorine', 'argon', 'potassium', 'calcium', 'scandium',
'titanium', 'vanadium', 'chromium', 'manganese', 'iron',
'cobalt', 'nickel', 'copper', 'zinc', 'gallium', 'germanium',
'arsenic', 'selenium', 'bromine', 'krypton', 'rubidium',
'strontium', 'yttrium', 'zirconium', 'niobium', 'molybdenum',
'technetium', 'ruthenium', 'rhodium', 'palladium', 'silver',
'cadmium', 'indium', 'tin', 'antimony', 'tellurium', 'iodine',
'xenon', 'cesium', 'barium', 'lanthanum', 'cerium',
'praseodymium', 'neodymium', 'promethium', 'samarium',
ATOM_NAMES = ['hydrogen', 'helium', 'lithium', 'beryllium', 'boron', 'carbon',
'nitrogen', 'oxygen', 'fluorine', 'neon', 'sodium', 'magnesium',
'aluminum', 'silicon', 'phosphorus', 'sulfur', 'chlorine', 'argon',
'potassium', 'calcium', 'scandium', 'titanium', 'vanadium',
'chromium', 'manganese', 'iron', 'cobalt', 'nickel', 'copper',
'zinc', 'gallium', 'germanium', 'arsenic', 'selenium', 'bromine',
'krypton', 'rubidium', 'strontium', 'yttrium', 'zirconium',
'niobium', 'molybdenum', 'technetium', 'ruthenium', 'rhodium',
'palladium', 'silver', 'cadmium', 'indium', 'tin', 'antimony',
'tellurium', 'iodine', 'xenon', 'cesium', 'barium', 'lanthanum',
'cerium', 'praseodymium', 'neodymium', 'promethium', 'samarium',
'europium', 'gadolinium', 'terbium', 'dysprosium', 'holmium',
'erbium', 'thulium', 'ytterbium', 'lutetium', 'hafnium',
'tantalum', 'tungsten', 'rhenium', 'osmium', 'iridium',
'platinum', 'gold', 'mercury', 'thallium', 'lead', 'bismuth',
'polonium', 'astatine', 'radon', 'francium', 'radium',
'actinium', 'thorium', 'protactinium', 'uranium', 'neptunium',
'plutonium', 'americium', 'curium', 'berkelium', 'californium',
'einsteinium', 'fermium', 'mendelevium', 'nobelium',
'lawrencium']
'tantalum', 'tungsten', 'rhenium', 'osmium', 'iridium', 'platinum',
'gold', 'mercury', 'thallium', 'lead', 'bismuth', 'polonium',
'astatine', 'radon', 'francium', 'radium', 'actinium', 'thorium',
'protactinium', 'uranium', 'neptunium', 'plutonium', 'americium',
'curium', 'berkelium', 'californium', 'einsteinium', 'fermium',
'mendelevium', 'nobelium', 'lawrencium', 'rutherfordium',
'dubnium', 'seaborgium', 'bohrium', 'hassium', 'meitnerium',
'darmstadtium', 'roentgenium', 'copernicium', 'nihonium',
'flerovium', 'moscovium', 'livermorium', 'tennessine', 'oganesson']
6 changes: 3 additions & 3 deletions larch/wxlib/feff_browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
LarchWxApp)

from larch.xafs import get_feff_pathinfo
from larch.xray import atomic_symbols
from larch.utils.physical_constants import ATOM_SYMS

ATSYMS = ['< All Atoms>'] + atomic_symbols
ATSYMS = ['< All Atoms>'] + ATOM_SYMS[:96]
EDGES = ['< All Edges>', 'K', 'L3', 'L2', 'L1', 'M5']


Expand Down Expand Up @@ -143,7 +143,7 @@ def GetResponse(self):

class FeffResultsPanel(wx.Panel):
""" present Feff results """
def __init__(self, parent=None, feffresult=None, path_importer=None,
def __init__(self, parent=None, feffresult=None, path_importer=None,
_larch=None):
wx.Panel.__init__(self, parent, -1, size=(700, 500))
self.parent = parent
Expand Down
4 changes: 2 additions & 2 deletions larch/wxxas/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from larch.site_config import get_homedir
from larch.xafs.xafsutils import FT_WINDOWS
from larch.xray import atomic_symbols
from larch.utils.physical_constants import ATOM_SYMS

ATSYMS = ['?'] + atomic_symbols
ATSYMS = ['?'] + ATOM_SYMS[:98]
EDGES = ['K', 'L3', 'L2', 'L1', 'M5', 'M4', 'M3', 'N7']
CONF_FILE = 'xas_viewer.conf'

Expand Down
15 changes: 2 additions & 13 deletions larch/wxxas/xas_dialogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,12 @@
get_zoomlimits, set_zoomlimits)

from larch.xafs import etok, ktoe, find_energy_step
from larch.utils.physical_constants import PI, DEG2RAD, PLANCK_HC
from larch.utils.physical_constants import PI, DEG2RAD, PLANCK_HC, ATOM_SYMS
from larch.math import smooth

Plot_Choices = {'Normalized': 'norm', 'Derivative': 'dmude'}


ELEM_LIST = ('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')

EDGE_LIST = ('K', 'L3', 'L2', 'L1', 'M5', 'M4', 'M3')

NORM_MU = 'Normalized \u03BC(E)'
Expand Down Expand Up @@ -115,7 +104,7 @@ def __init__(self, parent, controller, **kws):
wids['phi_in'] = FloatSpin(panel, **fs_opts)
wids['phi_out'] = FloatSpin(panel, **fs_opts)

wids['elem'] = Choice(panel, choices=ELEM_LIST, size=(50, -1))
wids['elem'] = Choice(panel, choices=ATOM_SYMS[:98], size=(50, -1))
wids['edge'] = Choice(panel, choices=EDGE_LIST, size=(50, -1))

wids['formula'] = wx.TextCtrl(panel, -1, '', size=(250, -1))
Expand Down
16 changes: 3 additions & 13 deletions larch/xray/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
xray_lines X-ray emission lines for an element
"""

from larch.utils.physical_constants import ATOM_SYMS

from xraydb import (XrayDB, atomic_mass, atomic_number, atomic_symbol,
atomic_density, xray_line, xray_lines, xray_edge,
xray_edges, ck_probability, f0, f0_ions, mu_elam,
Expand All @@ -36,18 +38,6 @@
# from .cromer_liberman import f1f2 as f1f2_cl
from .background import XrayBackground

atomic_symbols = ['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']

_larch_builtins = {'_xray': dict(chemparse=chemparse,
material_get=material_get,
material_add=material_add,
Expand Down Expand Up @@ -86,4 +76,4 @@ def _larch_init(_larch):
setsym = _larch.symtable.set_symbol
setsym('_xray._xraydb', XrayDB())
setsym('_xray._materials', _read_materials_db())
setsym('_xray._atomic_symbols', atomic_symbols)
setsym('_xray._atomic_symbols', ATOM_SYMS)
16 changes: 2 additions & 14 deletions larch/xrd/amcsd.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
from .cif2feff import cif2feffinp
from ..utils import isotime
from ..utils.strutils import version_ge, bytes2str
from ..utils.physical_constants import TAU
from ..utils.physical_constants import TAU, ATOM_SYMS
from ..site_config import user_larchdir
from .. import logger

Expand Down Expand Up @@ -89,18 +89,6 @@
'f2hkl', 'degen', 'lorentz'))


elem_symbol = ['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', 'Uub', 'Uut', 'Uuq', 'Uup', 'Uuh', 'Uus', 'Uuo']


# for packing/unpacking H, K, L to 2-character hash
HKL_ENCODE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_%'
def pack_hkl(h, k, l):
Expand Down Expand Up @@ -1273,7 +1261,7 @@ def find_cifs(self, id=None, mineral_name=None, author_name=None,
matches = new_matches

if strict_contains:
excludes_elements = elem_symbol[:]
excludes_elements = ATOM_SYMS[:]
for c in contains_elements:
if c in excludes_elements:
excludes_elements.remove(c)
Expand Down
37 changes: 2 additions & 35 deletions larch/xrd/amcsd_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import SingletonThreadPool


from larch.utils.physical_constants import ATOM_SYMS, ATOM_NAMES

__version__ = '1'

Expand Down Expand Up @@ -173,39 +173,6 @@ def get_optarray(dat):
)


atsyms = ['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', 'D']


atnames = ['hydrogen', 'helium', 'lithium', 'beryllium',
'boron', 'carbon', 'nitrogen', 'oxygen', 'fluorine', 'neon',
'sodium', 'magnesium', 'aluminum', 'silicon', 'phosphorus',
'sulfur', 'chlorine', 'argon', 'potassium', 'calcium', 'scandium',
'titanium', 'vanadium', 'chromium', 'manganese', 'iron', 'cobalt',
'nickel', 'copper', 'zinc', 'gallium', 'germanium', 'arsenic',
'selenium', 'bromine', 'krypton', 'rubidium', 'strontium',
'yttrium', 'zirconium', 'niobium', 'molybdenum', 'technetium',
'ruthenium', 'rhodium', 'palladium', 'silver', 'cadmium',
'indium', 'tin', 'antimony', 'tellurium', 'iodine', 'xenon',
'cesium', 'barium', 'lanthanum', 'cerium', 'praseodymium',
'neodymium', 'promethium', 'samarium', 'europium', 'gadolinium',
'terbium', 'dysprosium', 'holmium', 'erbium', 'thulium',
'ytterbium', 'lutetium', 'hafnium', 'tantalum', 'tungsten',
'rhenium', 'osmium', 'iridium', 'platinum', 'gold', 'mercury',
'thallium', 'lead', 'bismuth', 'polonium', 'astatine', 'radon',
'francium', 'radium', 'actinium', 'thorium', 'protactinium',
'uranium', 'neptunium', 'plutonium', 'americium', 'curium',
'berkelium', 'californium', 'einsteinium', 'fermium',
'mendelevium', 'nobelium', 'lawrencium', 'deuterium' ]

def create_amcsd(dbname='test.db'):
if os.path.exists(dbname):
os.unlink(dbname)
Expand All @@ -219,7 +186,7 @@ def create_amcsd(dbname='test.db'):
('0', 'in progress', 'today', 'in progress'))

atz, i = 0, 0
for sym, name in zip(atsyms, atnames):
for sym, name in zip(ATOM_SYMS, ATOM_NAMES):
i += 1
atz += 1
if sym == 'D':
Expand Down

0 comments on commit f5c7746

Please sign in to comment.