"""Contains the Atom class and a dictionary of elements."""

from __future__ import annotations

from typing import TYPE_CHECKING, Any

import numpy as np

from molara.Structure.basisset import Basisset

if TYPE_CHECKING:
    from numpy.typing import ArrayLike

__copyright__ = "Copyright 2024, Molara"


class Atom:
    """Creates an Atom object."""

    def __init__(self, atomic_number: int, position: ArrayLike) -> None:
        """Create an Atom object.

        :param atomic_number: atomic number (nuclear charge number) of the atom
        :param position: cartesian coordinates of atom location
        """
        self.symbol = elements[atomic_number]["symbol"]
        self.name = elements[atomic_number]["name"]
        self.atomic_number = atomic_number
        self.atomic_mass = elements[atomic_number]["atomic_weight"]
        self.electronegativity = elements[atomic_number]["electronegativity"]
        self.cpk_color: np.ndarray = np.array(elements[atomic_number]["cpk_color"]) / 255
        self.vdw_radius = elements[atomic_number]["vdw_radius"]
        self.basis_set = Basisset()
        self.position = np.array([])
        self.set_position(position)

    def set_position(self, position: ArrayLike) -> None:
        """Set the position of the atom.

        :param position: new position of the atom
        :return: None
        """
        self.position = np.array(position, dtype=np.float64)


def element_symbol_to_atomic_number(symbol: str) -> int:
    """Define a dictionary mapping element symbols to atomic numbers.

    :param symbol: atomic symbol (element) of the atom
    """
    symbol_to_atomic_number = {
        "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,
    }
    return symbol_to_atomic_number.get(symbol, 0)


elements: dict[int, dict[str, Any]] = {
    1: {
        "symbol": "H",
        "name": "Hydrogen",
        "atomic_number": 1,
        "atomic_weight": 1.008,
        "electronegativity": 2.2,
        "electron_configuration": "1s1",
        "vdw_radius": 1.20,
        "cpk_color": (255, 255, 255),
    },
    2: {
        "symbol": "He",
        "name": "Helium",
        "atomic_number": 2,
        "atomic_weight": 4.0026,
        "electronegativity": None,
        "electron_configuration": "1s2",
        "vdw_radius": 1.40,
        "cpk_color": (217, 255, 255),
    },
    3: {
        "symbol": "Li",
        "name": "Lithium",
        "atomic_number": 3,
        "atomic_weight": 6.94,
        "electronegativity": 0.98,
        "electron_configuration": "1s2 2s1",
        "vdw_radius": 1.82,
        "cpk_color": (204, 128, 255),
    },
    4: {
        "symbol": "Be",
        "name": "Beryllium",
        "atomic_number": 4,
        "atomic_weight": 9.0122,
        "electronegativity": 1.57,
        "electron_configuration": "1s2 2s2",
        "vdw_radius": 2.00,
        "cpk_color": (194, 255, 0),
    },
    5: {
        "symbol": "B",
        "name": "Boron",
        "atomic_number": 5,
        "atomic_weight": 10.811,
        "electronegativity": 2.04,
        "electron_configuration": "1s2 2s2 2p1",
        "vdw_radius": 2.00,
        "cpk_color": (255, 181, 181),
    },
    6: {
        "symbol": "C",
        "name": "Carbon",
        "atomic_number": 6,
        "atomic_weight": 12.011,
        "electronegativity": 2.55,
        "electron_configuration": "1s2 2s2 2p2",
        "vdw_radius": 1.70,
        "cpk_color": (144, 144, 144),
    },
    7: {
        "symbol": "N",
        "name": "Nitrogen",
        "atomic_number": 7,
        "atomic_weight": 14.0067,
        "electronegativity": 3.04,
        "electron_configuration": "1s2 2s2 2p3",
        "vdw_radius": 1.55,
        "cpk_color": (48, 80, 248),
    },
    8: {
        "symbol": "O",
        "name": "Oxygen",
        "atomic_number": 8,
        "atomic_weight": 15.999,
        "electronegativity": 3.44,
        "electron_configuration": "1s2 2s2 2p4",
        "vdw_radius": 1.52,
        "cpk_color": (255, 13, 13),
    },
    9: {
        "symbol": "F",
        "name": "Fluorine",
        "atomic_number": 9,
        "atomic_weight": 18.998,
        "electronegativity": 3.98,
        "electron_configuration": "1s2 2s2 2p5",
        "vdw_radius": 1.47,
        "cpk_color": (144, 224, 80),
    },
    10: {
        "symbol": "Ne",
        "name": "Neon",
        "atomic_number": 10,
        "atomic_weight": 20.180,
        "electronegativity": None,
        "electron_configuration": "1s2 2s2 2p6",
        "vdw_radius": 1.54,
        "cpk_color": (179, 227, 245),
    },
    11: {
        "symbol": "Na",
        "name": "Sodium",
        "atomic_number": 11,
        "atomic_weight": 22.990,
        "electronegativity": 0.93,
        "electron_configuration": "[Ne] 3s1",
        "vdw_radius": 2.27,
        "cpk_color": (171, 92, 242),
    },
    12: {
        "symbol": "Mg",
        "name": "Magnesium",
        "atomic_number": 12,
        "atomic_weight": 24.305,
        "electronegativity": 1.31,
        "electron_configuration": "[Ne] 3s2",
        "vdw_radius": 1.73,
        "cpk_color": (138, 255, 0),
    },
    13: {
        "symbol": "Al",
        "name": "Aluminum",
        "atomic_number": 13,
        "atomic_weight": 26.982,
        "electronegativity": 1.61,
        "electron_configuration": "[Ne] 3s2 3p1",
        "vdw_radius": 1.84,
        "cpk_color": (191, 166, 166),
    },
    14: {
        "symbol": "Si",
        "name": "Silicon",
        "atomic_number": 14,
        "atomic_weight": 28.085,
        "electronegativity": 1.90,
        "electron_configuration": "[Ne] 3s2 3p2",
        "vdw_radius": 2.10,
        "cpk_color": (240, 200, 160),
    },
    15: {
        "symbol": "P",
        "name": "Phosphorus",
        "atomic_number": 15,
        "atomic_weight": 30.974,
        "electronegativity": 2.19,
        "electron_configuration": "[Ne] 3s2 3p3",
        "vdw_radius": 1.80,
        "cpk_color": (255, 128, 0),
    },
    16: {
        "symbol": "S",
        "name": "Sulfur",
        "atomic_number": 16,
        "atomic_weight": 32.06,
        "electronegativity": 2.58,
        "electron_configuration": "[Ne] 3s2 3p4",
        "vdw_radius": 1.80,
        "cpk_color": (255, 255, 48),
    },
    17: {
        "symbol": "Cl",
        "name": "Chlorine",
        "atomic_number": 17,
        "atomic_weight": 35.45,
        "electronegativity": 3.16,
        "electron_configuration": "[Ne] 3s2 3p5",
        "vdw_radius": 1.75,
        "cpk_color": (31, 240, 31),
    },
    18: {
        "symbol": "Ar",
        "name": "Argon",
        "atomic_number": 18,
        "atomic_weight": 39.948,
        "electronegativity": None,
        "electron_configuration": "[Ne] 3s2 3p6",
        "vdw_radius": 1.88,
        "cpk_color": (128, 209, 227),
    },
    19: {
        "symbol": "K",
        "name": "Potassium",
        "atomic_number": 19,
        "atomic_weight": 39.098,
        "electronegativity": 0.82,
        "electron_configuration": "[Ar] 4s1",
        "vdw_radius": 2.75,
        "cpk_color": (143, 64, 212),
    },
    20: {
        "symbol": "Ca",
        "name": "Calcium",
        "atomic_number": 20,
        "atomic_weight": 40.08,
        "electronegativity": 1.0,
        "electron_configuration": "[Ar] 4s2",
        "vdw_radius": 2.31,
        "cpk_color": (61, 255, 0),
    },
    21: {
        "symbol": "Sc",
        "name": "Scandium",
        "atomic_number": 21,
        "atomic_weight": 44.956,
        "electronegativity": 1.36,
        "electron_configuration": "[Ar] 3d1 4s2",
        "vdw_radius": 2.11,
        "cpk_color": (230, 230, 230),
    },
    22: {
        "symbol": "Ti",
        "name": "Titanium",
        "atomic_number": 22,
        "atomic_weight": 47.867,
        "electronegativity": 1.54,
        "electron_configuration": "[Ar] 3d2 4s2",
        "vdw_radius": 2.00,
        "cpk_color": (191, 194, 199),
    },
    23: {
        "symbol": "V",
        "name": "Vanadium",
        "atomic_number": 23,
        "atomic_weight": 50.942,
        "electronegativity": 1.63,
        "electron_configuration": "[Ar] 3d3 4s2",
        "vdw_radius": 2.00,
        "cpk_color": (166, 166, 171),
    },
    24: {
        "symbol": "Cr",
        "name": "Chromium",
        "atomic_number": 24,
        "atomic_weight": 51.996,
        "electronegativity": 1.66,
        "electron_configuration": "[Ar] 3d5 4s1",
        "vdw_radius": 2.00,
        "cpk_color": (138, 153, 199),
    },
    25: {
        "symbol": "Mn",
        "name": "Manganese",
        "atomic_number": 25,
        "atomic_weight": 54.938,
        "electronegativity": 1.55,
        "electron_configuration": "[Ar] 3d5 4s2",
        "vdw_radius": 2.00,
        "cpk_color": (156, 122, 199),
    },
    26: {
        "symbol": "Fe",
        "name": "Iron",
        "atomic_number": 26,
        "atomic_weight": 55.845,
        "electronegativity": 1.83,
        "electron_configuration": "[Ar] 3d6 4s2",
        "vdw_radius": 2.00,
        "cpk_color": (224, 102, 51),
    },
    27: {
        "symbol": "Co",
        "name": "Cobalt",
        "atomic_number": 27,
        "atomic_weight": 58.933,
        "electronegativity": 1.88,
        "electron_configuration": "[Ar] 3d7 4s2",
        "vdw_radius": 2.00,
        "cpk_color": (240, 144, 160),
    },
    28: {
        "symbol": "Ni",
        "name": "Nickel",
        "atomic_number": 28,
        "atomic_weight": 58.693,
        "electronegativity": 1.91,
        "electron_configuration": "[Ar] 3d8 4s2",
        "vdw_radius": 1.63,
        "cpk_color": (80, 208, 80),
    },
    29: {
        "symbol": "Cu",
        "name": "Copper",
        "atomic_number": 29,
        "atomic_weight": 63.546,
        "electronegativity": 1.90,
        "electron_configuration": "[Ar] 3d10 4s1",
        "vdw_radius": 1.40,
        "cpk_color": (200, 128, 51),
    },
    30: {
        "symbol": "Zn",
        "name": "Zinc",
        "atomic_number": 30,
        "atomic_weight": 65.38,
        "electronegativity": 1.65,
        "electron_configuration": "[Ar] 3d10 4s2",
        "vdw_radius": 1.39,
        "cpk_color": (125, 128, 176),
    },
    31: {
        "symbol": "Ga",
        "name": "Gallium",
        "atomic_number": 31,
        "atomic_weight": 69.723,
        "electronegativity": 1.81,
        "electron_configuration": "[Ar] 3d10 4s2 4p1",
        "vdw_radius": 1.87,
        "cpk_color": (194, 143, 143),
    },
    32: {
        "symbol": "Ge",
        "name": "Germanium",
        "atomic_number": 32,
        "atomic_weight": 72.630,
        "electronegativity": 2.01,
        "electron_configuration": "[Ar] 3d10 4s2 4p2",
        "vdw_radius": 2.11,
        "cpk_color": (102, 143, 143),
    },
    33: {
        "symbol": "As",
        "name": "Arsenic",
        "atomic_number": 33,
        "atomic_weight": 74.922,
        "electronegativity": 2.18,
        "electron_configuration": "[Ar] 3d10 4s2 4p3",
        "vdw_radius": 1.85,
        "cpk_color": (189, 128, 227),
    },
    34: {
        "symbol": "Se",
        "name": "Selenium",
        "atomic_number": 34,
        "atomic_weight": 78.971,
        "electronegativity": 2.55,
        "electron_configuration": "[Ar] 3d10 4s2 4p4",
        "vdw_radius": 1.90,
        "cpk_color": (255, 161, 0),
    },
    35: {
        "symbol": "Br",
        "name": "Bromine",
        "atomic_number": 35,
        "atomic_weight": 79.904,
        "electronegativity": 2.96,
        "electron_configuration": "[Ar] 3d10 4s2 4p5",
        "vdw_radius": 1.85,
        "cpk_color": (166, 41, 41),
    },
    36: {
        "symbol": "Kr",
        "name": "Krypton",
        "atomic_number": 36,
        "atomic_weight": 83.798,
        "electronegativity": None,
        "electron_configuration": "[Ar] 3d10 4s2 4p6",
        "vdw_radius": 2.02,
        "cpk_color": (92, 184, 209),
    },
    37: {
        "symbol": "Rb",
        "name": "Rubidium",
        "atomic_number": 37,
        "atomic_weight": 85.468,
        "electronegativity": 0.82,
        "electron_configuration": "[Kr] 5s1",
        "vdw_radius": 3.03,
        "cpk_color": (112, 46, 176),
    },
    38: {
        "symbol": "Sr",
        "name": "Strontium",
        "atomic_number": 38,
        "atomic_weight": 87.62,
        "electronegativity": 0.95,
        "electron_configuration": "[Kr] 5s2",
        "vdw_radius": 2.49,
        "cpk_color": (0, 255, 0),
    },
    39: {
        "symbol": "Y",
        "name": "Yttrium",
        "atomic_number": 39,
        "atomic_weight": 88.906,
        "electronegativity": 1.22,
        "electron_configuration": "[Kr] 4d1 5s2",
        "vdw_radius": 2.40,
        "cpk_color": (148, 255, 255),
    },
    40: {
        "symbol": "Zr",
        "name": "Zirconium",
        "atomic_number": 40,
        "atomic_weight": 91.224,
        "electronegativity": 1.33,
        "electron_configuration": "[Kr] 4d2 5s2",
        "vdw_radius": 2.31,
        "cpk_color": (148, 224, 224),
    },
    41: {
        "symbol": "Nb",
        "name": "Niobium",
        "atomic_number": 41,
        "atomic_weight": 92.906,
        "electronegativity": 1.6,
        "electron_configuration": "[Kr] 4d4 5s1",
        "vdw_radius": 2.25,
        "cpk_color": (115, 194, 201),
    },
    42: {
        "symbol": "Mo",
        "name": "Molybdenum",
        "atomic_number": 42,
        "atomic_weight": 95.95,
        "electronegativity": 2.16,
        "electron_configuration": "[Kr] 4d5 5s1",
        "vdw_radius": 2.25,
        "cpk_color": (84, 181, 181),
    },
    43: {
        "symbol": "Tc",
        "name": "Technetium",
        "atomic_number": 43,
        "atomic_weight": 98,
        "electronegativity": 1.9,
        "electron_configuration": "[Kr] 4d5 5s2",
        "vdw_radius": 2.25,
        "cpk_color": (59, 158, 158),
    },
    44: {
        "symbol": "Ru",
        "name": "Ruthenium",
        "atomic_number": 44,
        "atomic_weight": 101.07,
        "electronegativity": 2.2,
        "electron_configuration": "[Kr] 4d7 5s1",
        "vdw_radius": 2.25,
        "cpk_color": (36, 143, 143),
    },
    45: {
        "symbol": "Rh",
        "name": "Rhodium",
        "atomic_number": 45,
        "atomic_weight": 102.91,
        "electronegativity": 2.28,
        "electron_configuration": "[Kr] 4d8 5s1",
        "vdw_radius": 2.25,
        "cpk_color": (10, 125, 140),
    },
    46: {
        "symbol": "Pd",
        "name": "Palladium",
        "atomic_number": 46,
        "atomic_weight": 106.42,
        "electronegativity": 2.20,
        "electron_configuration": "[Kr] 4d10",
        "vdw_radius": 1.63,
        "cpk_color": (0, 105, 133),
    },
    47: {
        "symbol": "Ag",
        "name": "Silver",
        "atomic_number": 47,
        "atomic_weight": 107.87,
        "electronegativity": 1.93,
        "electron_configuration": "[Kr] 4d10 5s1",
        "vdw_radius": 1.72,
        "cpk_color": (192, 192, 192),
    },
    48: {
        "symbol": "Cd",
        "name": "Cadmium",
        "atomic_number": 48,
        "atomic_weight": 112.41,
        "electronegativity": 1.69,
        "electron_configuration": "[Kr] 4d10 5s2",
        "vdw_radius": 1.58,
        "cpk_color": (255, 217, 143),
    },
    49: {
        "symbol": "In",
        "name": "Indium",
        "atomic_number": 49,
        "atomic_weight": 114.82,
        "electronegativity": 1.78,
        "electron_configuration": "[Kr] 4d10 5s2 5p1",
        "vdw_radius": 1.93,
        "cpk_color": (166, 117, 115),
    },
    50: {
        "symbol": "Sn",
        "name": "Tin",
        "atomic_number": 50,
        "atomic_weight": 118.71,
        "electronegativity": 1.96,
        "electron_configuration": "[Kr] 4d10 5s2 5p2",
        "vdw_radius": 2.17,
        "cpk_color": (102, 128, 128),
    },
    51: {
        "symbol": "Sb",
        "name": "Antimony",
        "atomic_number": 51,
        "atomic_weight": 121.76,
        "electronegativity": 2.05,
        "electron_configuration": "[Kr] 4d10 5s2 5p3",
        "vdw_radius": 2.06,
        "cpk_color": (158, 99, 181),
    },
    52: {
        "symbol": "Te",
        "name": "Tellurium",
        "atomic_number": 52,
        "atomic_weight": 127.60,
        "electronegativity": 2.1,
        "electron_configuration": "[Kr] 4d10 5s2 5p4",
        "vdw_radius": 2.06,
        "cpk_color": (212, 122, 0),
    },
    53: {
        "symbol": "I",
        "name": "Iodine",
        "atomic_number": 53,
        "atomic_weight": 126.90,
        "electronegativity": 2.66,
        "electron_configuration": "[Kr] 4d10 5s2 5p5",
        "vdw_radius": 1.98,
        "cpk_color": (148, 0, 148),
    },
    54: {
        "symbol": "Xe",
        "name": "Xenon",
        "atomic_number": 54,
        "atomic_weight": 131.29,
        "electronegativity": None,
        "electron_configuration": "[Kr] 4d10 5s2 5p6",
        "vdw_radius": 2.16,
        "cpk_color": (66, 158, 176),
    },
    55: {
        "symbol": "Cs",
        "name": "Cesium",
        "atomic_number": 55,
        "atomic_weight": 132.91,
        "electronegativity": 0.79,
        "electron_configuration": "[Xe] 6s1",
        "vdw_radius": 3.43,
        "cpk_color": (87, 23, 143),
    },
    56: {
        "symbol": "Ba",
        "name": "Barium",
        "atomic_number": 56,
        "atomic_weight": 137.33,
        "electronegativity": 0.89,
        "electron_configuration": "[Xe] 6s2",
        "vdw_radius": 2.68,
        "cpk_color": (0, 201, 0),
    },
    57: {
        "symbol": "La",
        "name": "Lanthanum",
        "atomic_number": 57,
        "atomic_weight": 138.91,
        "electronegativity": 1.10,
        "electron_configuration": "[Xe] 5d1 6s2",
        "vdw_radius": 2.50,
        "cpk_color": (112, 212, 255),
    },
    58: {
        "symbol": "Ce",
        "name": "Cerium",
        "atomic_number": 58,
        "atomic_weight": 140.12,
        "electronegativity": 1.12,
        "electron_configuration": "[Xe] 4f1 5d1 6s2",
        "vdw_radius": 2.48,
        "cpk_color": (255, 255, 199),
    },
    59: {
        "symbol": "Pr",
        "name": "Praseodymium",
        "atomic_number": 59,
        "atomic_weight": 140.91,
        "electronegativity": 1.13,
        "electron_configuration": "[Xe] 4f3 6s2",
        "vdw_radius": 2.47,
        "cpk_color": (217, 255, 199),
    },
    60: {
        "symbol": "Nd",
        "name": "Neodymium",
        "atomic_number": 60,
        "atomic_weight": 144.24,
        "electronegativity": 1.14,
        "electron_configuration": "[Xe] 4f4 6s2",
        "vdw_radius": 2.45,
        "cpk_color": (199, 255, 199),
    },
    61: {
        "symbol": "Pm",
        "name": "Promethium",
        "atomic_number": 61,
        "atomic_weight": 145,
        "electronegativity": 1.13,
        "electron_configuration": "[Xe] 4f5 6s2",
        "vdw_radius": None,
        "cpk_color": (163, 255, 199),
    },
    62: {
        "symbol": "Sm",
        "name": "Samarium",
        "atomic_number": 62,
        "atomic_weight": 150.36,
        "electronegativity": 1.17,
        "electron_configuration": "[Xe] 4f6 6s2",
        "vdw_radius": 2.42,
        "cpk_color": (143, 255, 199),
    },
    63: {
        "symbol": "Eu",
        "name": "Europium",
        "atomic_number": 63,
        "atomic_weight": 151.96,
        "electronegativity": 1.2,
        "electron_configuration": "[Xe] 4f7 6s2",
        "vdw_radius": 2.4,
        "cpk_color": (97, 255, 199),
    },
    64: {
        "symbol": "Gd",
        "name": "Gadolinium",
        "atomic_number": 64,
        "atomic_weight": 157.25,
        "electronegativity": 1.20,
        "electron_configuration": "[Xe] 4f7 5d1 6s2",
        "vdw_radius": 2.38,
        "cpk_color": (69, 255, 199),
    },
    65: {
        "symbol": "Tb",
        "name": "Terbium",
        "atomic_number": 65,
        "atomic_weight": 158.93,
        "electronegativity": 1.20,
        "electron_configuration": "[Xe] 4f9 6s2",
        "vdw_radius": 2.37,
        "cpk_color": (48, 255, 199),
    },
    66: {
        "symbol": "Dy",
        "name": "Dysprosium",
        "atomic_number": 66,
        "atomic_weight": 162.50,
        "electronegativity": 1.22,
        "electron_configuration": "[Xe] 4f10 6s2",
        "vdw_radius": 2.35,
        "cpk_color": (31, 255, 199),
    },
    67: {
        "symbol": "Ho",
        "name": "Holmium",
        "atomic_number": 67,
        "atomic_weight": 164.93,
        "electronegativity": 1.23,
        "electron_configuration": "[Xe] 4f11 6s2",
        "vdw_radius": 2.33,
        "cpk_color": (0, 255, 156),
    },
    68: {
        "symbol": "Er",
        "name": "Erbium",
        "atomic_number": 68,
        "atomic_weight": 167.26,
        "electronegativity": 1.24,
        "electron_configuration": "[Xe] 4f12 6s2",
        "vdw_radius": 2.32,
        "cpk_color": (0, 230, 117),
    },
    69: {
        "symbol": "Tm",
        "name": "Thulium",
        "atomic_number": 69,
        "atomic_weight": 168.93,
        "electronegativity": 1.25,
        "electron_configuration": "[Xe] 4f13 6s2",
        "vdw_radius": 2.30,
        "cpk_color": (0, 212, 82),
    },
    70: {
        "symbol": "Yb",
        "name": "Ytterbium",
        "atomic_number": 70,
        "atomic_weight": 173.05,
        "electronegativity": 1.1,
        "electron_configuration": "[Xe] 4f14 6s2",
        "vdw_radius": 2.28,
        "cpk_color": (0, 191, 56),
    },
    71: {
        "symbol": "Lu",
        "name": "Lutetium",
        "atomic_number": 71,
        "atomic_weight": 174.97,
        "electronegativity": 1.27,
        "electron_configuration": "[Xe] 4f14 5d1 6s2",
        "vdw_radius": 2.27,
        "cpk_color": (0, 171, 36),
    },
    72: {
        "symbol": "Hf",
        "name": "Hafnium",
        "atomic_number": 72,
        "atomic_weight": 178.49,
        "electronegativity": 1.30,
        "electron_configuration": "[Xe] 4f14 5d2 6s2",
        "vdw_radius": 2.25,
        "cpk_color": (77, 194, 255),
    },
    73: {
        "symbol": "Ta",
        "name": "Tantalum",
        "atomic_number": 73,
        "atomic_weight": 180.95,
        "electronegativity": 1.50,
        "electron_configuration": "[Xe] 4f14 5d3 6s2",
        "vdw_radius": 2.20,
        "cpk_color": (77, 166, 255),
    },
    74: {
        "symbol": "W",
        "name": "Tungsten",
        "atomic_number": 74,
        "atomic_weight": 183.84,
        "electronegativity": 2.36,
        "electron_configuration": "[Xe] 4f14 5d4 6s2",
        "vdw_radius": 2.10,
        "cpk_color": (33, 148, 214),
    },
    75: {
        "symbol": "Re",
        "name": "Rhenium",
        "atomic_number": 75,
        "atomic_weight": 186.21,
        "electronegativity": 1.90,
        "electron_configuration": "[Xe] 4f14 5d5 6s2",
        "vdw_radius": 2.05,
        "cpk_color": (38, 125, 171),
    },
    76: {
        "symbol": "Os",
        "name": "Osmium",
        "atomic_number": 76,
        "atomic_weight": 190.23,
        "electronegativity": 2.20,
        "electron_configuration": "[Xe] 4f14 5d6 6s2",
        "vdw_radius": 2.02,
        "cpk_color": (38, 102, 150),
    },
    77: {
        "symbol": "Ir",
        "name": "Iridium",
        "atomic_number": 77,
        "atomic_weight": 192.22,
        "electronegativity": 2.20,
        "electron_configuration": "[Xe] 4f14 5d7 6s2",
        "vdw_radius": 2.00,
        "cpk_color": (23, 84, 135),
    },
    78: {
        "symbol": "Pt",
        "name": "Platinum",
        "atomic_number": 78,
        "atomic_weight": 195.08,
        "electronegativity": 2.28,
        "electron_configuration": "[Xe] 4f14 5d9 6s1",
        "vdw_radius": 2.05,
        "cpk_color": (208, 208, 224),
    },
    79: {
        "symbol": "Au",
        "name": "Gold",
        "atomic_number": 79,
        "atomic_weight": 196.97,
        "electronegativity": 2.54,
        "electron_configuration": "[Xe] 4f14 5d10 6s1",
        "vdw_radius": 2.10,
        "cpk_color": (255, 209, 35),
    },
    80: {
        "symbol": "Hg",
        "name": "Mercury",
        "atomic_number": 80,
        "atomic_weight": 200.59,
        "electronegativity": 2.00,
        "electron_configuration": "[Xe] 4f14 5d10 6s2",
        "vdw_radius": 2.05,
        "cpk_color": (184, 184, 208),
    },
    81: {
        "symbol": "Tl",
        "name": "Thallium",
        "atomic_number": 81,
        "atomic_weight": 204.38,
        "electronegativity": 1.62,
        "electron_configuration": "[Xe] 4f14 5d10 6s2 6p1",
        "vdw_radius": 1.96,
        "cpk_color": (166, 84, 77),
    },
    82: {
        "symbol": "Pb",
        "name": "Lead",
        "atomic_number": 82,
        "atomic_weight": 207.2,
        "electronegativity": 2.33,
        "electron_configuration": "[Xe] 4f14 5d10 6s2 6p2",
        "vdw_radius": 2.02,
        "cpk_color": (87, 89, 97),
    },
    83: {
        "symbol": "Bi",
        "name": "Bismuth",
        "atomic_number": 83,
        "atomic_weight": 208.98,
        "electronegativity": 2.02,
        "electron_configuration": "[Xe] 4f14 5d10 6s2 6p3",
        "vdw_radius": 2.07,
        "cpk_color": (158, 79, 181),
    },
    84: {
        "symbol": "Po",
        "name": "Polonium",
        "atomic_number": 84,
        "atomic_weight": 209,
        "electronegativity": 2.0,
        "electron_configuration": "[Xe] 4f14 5d10 6s2 6p4",
        "vdw_radius": None,
        "cpk_color": (171, 92, 0),
    },
    85: {
        "symbol": "At",
        "name": "Astatine",
        "atomic_number": 85,
        "atomic_weight": 210,
        "electronegativity": 2.2,
        "electron_configuration": "[Xe] 4f14 5d10 6s2 6p5",
        "vdw_radius": None,
        "cpk_color": (117, 79, 69),
    },
    86: {
        "symbol": "Rn",
        "name": "Radon",
        "atomic_number": 86,
        "atomic_weight": 222,
        "electronegativity": None,
        "electron_configuration": "[Xe] 4f14 5d10 6s2 6p6",
        "vdw_radius": None,
        "cpk_color": (66, 130, 150),
    },
    87: {
        "symbol": "Fr",
        "name": "Francium",
        "atomic_number": 87,
        "atomic_weight": 223,
        "electronegativity": 0.7,
        "electron_configuration": "[Rn] 7s1",
        "vdw_radius": None,
        "cpk_color": (66, 0, 102),
    },
    88: {
        "symbol": "Ra",
        "name": "Radium",
        "atomic_number": 88,
        "atomic_weight": 226,
        "electronegativity": 0.9,
        "electron_configuration": "[Rn] 7s2",
        "vdw_radius": None,
        "cpk_color": (0, 125, 0),
    },
    89: {
        "symbol": "Ac",
        "name": "Actinium",
        "atomic_number": 89,
        "atomic_weight": 227,
        "electronegativity": 1.1,
        "electron_configuration": "[Rn] 6d1 7s2",
        "vdw_radius": None,
        "cpk_color": (112, 171, 250),
    },
    90: {
        "symbol": "Th",
        "name": "Thorium",
        "atomic_number": 90,
        "atomic_weight": 232.04,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 6d2 7s2",
        "vdw_radius": None,
        "cpk_color": (0, 186, 255),
    },
    91: {
        "symbol": "Pa",
        "name": "Protactinium",
        "atomic_number": 91,
        "atomic_weight": 231.04,
        "electronegativity": 1.5,
        "electron_configuration": "[Rn] 5f2 6d1 7s2",
        "vdw_radius": None,
        "cpk_color": (0, 161, 255),
    },
    92: {
        "symbol": "U",
        "name": "Uranium",
        "atomic_number": 92,
        "atomic_weight": 238.03,
        "electronegativity": 1.38,
        "electron_configuration": "[Rn] 5f3 6d1 7s2",
        "vdw_radius": None,
        "cpk_color": (0, 143, 255),
    },
    93: {
        "symbol": "Np",
        "name": "Neptunium",
        "atomic_number": 93,
        "atomic_weight": 237,
        "electronegativity": 1.36,
        "electron_configuration": "[Rn] 5f4 6d1 7s2",
        "vdw_radius": None,
        "cpk_color": (0, 128, 255),
    },
    94: {
        "symbol": "Pu",
        "name": "Plutonium",
        "atomic_number": 94,
        "atomic_weight": 244,
        "electronegativity": 1.28,
        "electron_configuration": "[Rn] 5f6 7s2",
        "vdw_radius": None,
        "cpk_color": (0, 107, 255),
    },
    95: {
        "symbol": "Am",
        "name": "Americium",
        "atomic_number": 95,
        "atomic_weight": 243,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f7 7s2",
        "vdw_radius": None,
        "cpk_color": (84, 92, 242),
    },
    96: {
        "symbol": "Cm",
        "name": "Curium",
        "atomic_number": 96,
        "atomic_weight": 247,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f7 6d1 7s2",
        "vdw_radius": None,
        "cpk_color": (120, 92, 227),
    },
    97: {
        "symbol": "Bk",
        "name": "Berkelium",
        "atomic_number": 97,
        "atomic_weight": 247,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f9 7s2",
        "vdw_radius": None,
        "cpk_color": (138, 79, 227),
    },
    98: {
        "symbol": "Cf",
        "name": "Californium",
        "atomic_number": 98,
        "atomic_weight": 251,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f10 7s2",
        "vdw_radius": None,
        "cpk_color": (161, 54, 212),
    },
    99: {
        "symbol": "Es",
        "name": "Einsteinium",
        "atomic_number": 99,
        "atomic_weight": 252,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f11 7s2",
        "vdw_radius": None,
        "cpk_color": (179, 31, 212),
    },
    100: {
        "symbol": "Fm",
        "name": "Fermium",
        "atomic_number": 100,
        "atomic_weight": 257,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f12 7s2",
        "vdw_radius": None,
        "cpk_color": (179, 31, 186),
    },
    101: {
        "symbol": "Md",
        "name": "Mendelevium",
        "atomic_number": 101,
        "atomic_weight": 258,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f13 7s2",
        "vdw_radius": None,
        "cpk_color": (179, 13, 166),
    },
    102: {
        "symbol": "No",
        "name": "Nobelium",
        "atomic_number": 102,
        "atomic_weight": 259,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f14 7s2",
        "vdw_radius": None,
        "cpk_color": (189, 13, 135),
    },
    103: {
        "symbol": "Lr",
        "name": "Lawrencium",
        "atomic_number": 103,
        "atomic_weight": 262,
        "electronegativity": 1.3,
        "electron_configuration": "[Rn] 5f14 7s2 7p1",
        "vdw_radius": None,
        "cpk_color": (199, 0, 102),
    },
    104: {
        "symbol": "Rf",
        "name": "Rutherfordium",
        "atomic_number": 104,
        "atomic_weight": 267,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d2 7s2",
        "vdw_radius": None,
        "cpk_color": (204, 0, 89),
    },
    105: {
        "symbol": "Db",
        "name": "Dubnium",
        "atomic_number": 105,
        "atomic_weight": 270,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d3 7s2",
        "vdw_radius": None,
        "cpk_color": (209, 0, 79),
    },
    106: {
        "symbol": "Sg",
        "name": "Seaborgium",
        "atomic_number": 106,
        "atomic_weight": 271,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d4 7s2",
        "vdw_radius": None,
        "cpk_color": (217, 0, 69),
    },
    107: {
        "symbol": "Bh",
        "name": "Bohrium",
        "atomic_number": 107,
        "atomic_weight": 270,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d5 7s2",
        "vdw_radius": None,
        "cpk_color": (224, 0, 56),
    },
    108: {
        "symbol": "Hs",
        "name": "Hassium",
        "atomic_number": 108,
        "atomic_weight": 277,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d6 7s2",
        "vdw_radius": None,
        "cpk_color": (230, 0, 46),
    },
    109: {
        "symbol": "Mt",
        "name": "Meitnerium",
        "atomic_number": 109,
        "atomic_weight": 278,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d7 7s2",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    110: {
        "symbol": "Ds",
        "name": "Darmstadtium",
        "atomic_number": 110,
        "atomic_weight": 281,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d9 7s1",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    111: {
        "symbol": "Rg",
        "name": "Roentgenium",
        "atomic_number": 111,
        "atomic_weight": 282,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s1",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    112: {
        "symbol": "Cn",
        "name": "Copernicium",
        "atomic_number": 112,
        "atomic_weight": 285,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    113: {
        "symbol": "Nh",
        "name": "Nihonium",
        "atomic_number": 113,
        "atomic_weight": 284,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2 7p1",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    114: {
        "symbol": "Fl",
        "name": "Flerovium",
        "atomic_number": 114,
        "atomic_weight": 289,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2 7p2",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    115: {
        "symbol": "Mc",
        "name": "Moscovium",
        "atomic_number": 115,
        "atomic_weight": 288,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2 7p3",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    116: {
        "symbol": "Lv",
        "name": "Livermorium",
        "atomic_number": 116,
        "atomic_weight": 293,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2 7p4",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    117: {
        "symbol": "Ts",
        "name": "Tennessine",
        "atomic_number": 117,
        "atomic_weight": 294,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2 7p5",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
    118: {
        "symbol": "Og",
        "name": "Oganesson",
        "atomic_number": 118,
        "atomic_weight": 294,
        "electronegativity": None,
        "electron_configuration": "[Rn] 5f14 6d10 7s2 7p6",
        "vdw_radius": None,
        "cpk_color": (235, 0, 38),
    },
}
