diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml index c00d809..efd69ec 100644 --- a/.github/workflows/jekyll-gh-pages.yml +++ b/.github/workflows/jekyll-gh-pages.yml @@ -1,35 +1,29 @@ -# Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll with GitHub Pages dependencies preinstalled +name: Deploy Github-Pages on: - # Runs on pushes targeting the default branch push: - branches: ["master"] + branches: + - gh-pages - # Allows you to run this workflow manually from the Actions tab workflow_dispatch: -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: group: "pages" cancel-in-progress: false jobs: - # Build job build: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v2 - name: Setup Pages - uses: actions/configure-pages@v3 + uses: actions/configure-pages@v2 - name: Build with Jekyll uses: actions/jekyll-build-pages@v1 with: @@ -38,7 +32,6 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v1 - # Deployment job deploy: environment: name: github-pages diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..132a59e --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +julian.hochhaus@tu-dortmund.de. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CrossSections/cross_sections.csv b/Databases/CrossSections/cross_sections.csv similarity index 100% rename from CrossSections/cross_sections.csv rename to Databases/CrossSections/cross_sections.csv diff --git a/Databases/elements.csv b/Databases/elements.csv new file mode 100644 index 0000000..ee89de0 --- /dev/null +++ b/Databases/elements.csv @@ -0,0 +1,93 @@ +symbol,period,group_id,series_id,alka,aes,atomic_number,cpk_color,jmol_color,series_name,series_color +H,1,1.0,1,"{'trans': ""['1s']"", 'be': '[13.6]', 'rsf': '[0.0002]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",1,#ffffff,#ffffff,Nonmetals,#baa2a6 +He,1,18.0,2,"{'trans': ""['1s']"", 'be': '[24.6]', 'rsf': '[0.0082]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",2,#ffc0cb,#d9ffff,Noble gases,#bbbb88 +Li,2,1.0,3,"{'trans': ""['1s']"", 'be': '[54.7]', 'rsf': '[0.0568]'}","{'trans': ""['KLL']"", 'ke': '[43]', 'rsf': '[0.977]'}",3,#b22222,#cc80ff,Alkali metals,#a6cee3 +Be,2,2.0,4,"{'trans': ""['1s']"", 'be': '[111.5]', 'rsf': '[0.1947]'}","{'trans': ""['KLL']"", 'ke': '[104]', 'rsf': '[0.456]'}",4,#ff1493,#c2ff00,Alkaline earth metals,#1f78b4 +B,2,13.0,5,"{'trans': ""['1s']"", 'be': '[188]', 'rsf': '[0.486]'}","{'trans': ""['KLL']"", 'ke': '[179]', 'rsf': '[0.289]'}",5,#00ff00,#ffb5b5,Metalloids,#33a02c +C,2,14.0,1,"{'trans': ""['1s']"", 'be': '[284.2]', 'rsf': '[1]'}","{'trans': ""['KLL']"", 'ke': '[272]', 'rsf': '[0.209]'}",6,#c8c8c8,#909090,Nonmetals,#baa2a6 +N,2,15.0,1,"{'trans': ""['1s', '2s']"", 'be': '[409.9, 37.3]', 'rsf': '[1.8, 0.0867]'}","{'trans': ""['KLL']"", 'ke': '[379]', 'rsf': '[0.159]'}",7,#8f8fff,#3050f8,Nonmetals,#baa2a6 +O,2,16.0,1,"{'trans': ""['1s', '2s']"", 'be': '[543.1, 41.6]', 'rsf': '[2.93, 0.1405]'}","{'trans': ""['KLL']"", 'ke': '[503]', 'rsf': '[0.129]'}",8,#f00000,#ff0d0d,Nonmetals,#baa2a6 +F,2,17.0,6,"{'trans': ""['1s']"", 'be': '[696.7]', 'rsf': '[4.43]'}","{'trans': ""['KLL']"", 'ke': '[647]', 'rsf': '[0.105]'}",9,#daa520,#90e050,Halogens,#fdbf6f +Ne,2,18.0,2,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[870.2, 48.5, 21.7, 21.6]', 'rsf': '[6.3, 0.296, 0.0347, 0.0683]'}","{'trans': ""['KLL']"", 'ke': '[805]', 'rsf': '[0.0846]'}",10,#ff1493,#b3e3f5,Noble gases,#bbbb88 +Na,3,1.0,3,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[1070.8, 63.5, 30.65, 30.81]', 'rsf': '[8.52, 0.422, 0.0654, 0.1287]'}","{'trans': ""['KLL']"", 'ke': '[990]', 'rsf': '[0.0714]'}",11,#0000ff,#ab5cf2,Alkali metals,#a6cee3 +Mg,3,2.0,4,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[1303, 88.7, 49.78, 49.5]', 'rsf': '[11.18, 0.575, 0.1125, 0.221]'}","{'trans': ""['KLL', 'LMM']"", 'ke': '[1186, 45]', 'rsf': '[0.0593, 3.43]'}",12,#228b22,#8aff00,Alkaline earth metals,#1f78b4 +Al,3,13.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[1559.6, 117.8, 72.95, 72.55]', 'rsf': '[0.0001, 0.753, 0.1811, 0.356]'}","{'trans': ""['KLL', 'LMM']"", 'ke': '[1396, 68]', 'rsf': '[0.0497, 2.44]'}",13,#808090,#bfa6a6,Poor metals,#b2df8a +Si,3,14.0,5,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[1839, 149.7, 99.82, 99.42]', 'rsf': '[0.0001, 0.955, 0.276, 0.541]'}","{'trans': ""['KLL', 'LMM']"", 'ke': '[1619, 92]', 'rsf': '[0.0417, 1.78]'}",14,#daa520,#f0c8a0,Metalloids,#33a02c +P,3,15.0,1,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[2145.5, 189, 136, 135]', 'rsf': '[0.0001, 1.18, 0.403, 0.789]'}","{'trans': ""['KLL', 'LMM']"", 'ke': '[1859, 120]', 'rsf': '[0.035, 1.36]'}",15,#ffa500,#ff8000,Nonmetals,#baa2a6 +S,3,16.0,1,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[2472, 230.9, 163.6, 162.5]', 'rsf': '[0.0001, 1.43, 0.567, 1.11]'}","{'trans': ""['KLL', 'LMM']"", 'ke': '[2117, 152]', 'rsf': '[0.0295, 1.14]'}",16,#ffc832,#ffff30,Nonmetals,#baa2a6 +Cl,3,17.0,6,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2']"", 'be': '[2822.4, 270, 202, 200]', 'rsf': '[0.0001, 1.69, 0.775, 1.51]'}","{'trans': ""['KLL', 'LMM']"", 'ke': '[2378, 181]', 'rsf': '[0.0001, 0.984]'}",17,#00ff00,#1ff01f,Halogens,#fdbf6f +Ar,3,18.0,2,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[3205.9, 326.3, 250.6, 248.4, 29.3, 15.9, 15.7]', 'rsf': '[0.0001, 1.97, 1.03, 2.01, 0.227, 0.0821, 0.1597]'}","{'trans': ""['LMM']"", 'ke': '[215]', 'rsf': '[0.827]'}",18,#ff1493,#80d1e3,Noble gases,#bbbb88 +K,4,1.0,3,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[3608.4, 378.6, 297.3, 294.6, 34.8, 18.3, 18.3]', 'rsf': '[0.0001, 2.27, 1.35, 2.62, 0.286, 0.1229, 0.239]'}","{'trans': ""['LMM']"", 'ke': '[252]', 'rsf': '[0.723]'}",19,#ff1493,#8f40d4,Alkali metals,#a6cee3 +Ca,4,2.0,4,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[4038.5, 438.4, 349.7, 346.2, 44.3, 25.4, 25.4]', 'rsf': '[0.0001, 2.59, 1.72, 3.35, 0.351, 0.172, 0.335]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[291, 20]', 'rsf': '[0.633, 0.0001]'}",20,#808090,#3dff00,Alkaline earth metals,#1f78b4 +Sc,4,3.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[4492, 498, 403.6, 398.7, 51.1, 28.3, 28.3]', 'rsf': '[0.0001, 2.91, 2.17, 4.21, 0.411, 0.221, 0.429]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[340, 24]', 'rsf': '[0.563, 0.0001]'}",21,#ff1493,#e6e6e6,Transition metals,#e08e79 +Ti,4,4.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[4966, 560.9, 460.2, 453.8, 58.7, 32.6, 32.6]', 'rsf': '[0.0001, 3.24, 2.69, 5.22, 0.473, 0.276, 0.537]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[418, 27]', 'rsf': '[0.514, 0.0001]'}",22,#808090,#bfc2c7,Transition metals,#e08e79 +V,4,5.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[5465, 626.7, 519.8, 512.1, 66.3, 37.2, 37.2]', 'rsf': '[0.0001, 3.57, 3.29, 6.37, 0.538, 0.339, 0.657]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[473, 31]', 'rsf': '[0.471, 5.03]'}",23,#ff1493,#a6a6ab,Transition metals,#e08e79 +Cr,4,6.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[5989, 696, 583.8, 574.1, 74.1, 42.2, 42.2]', 'rsf': '[0.0001, 3.91, 3.98, 7.69, 0.596, 0.4, 0.773]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[529, 36]', 'rsf': '[0.432, 4.6]'}",24,#808090,#8a99c7,Transition metals,#e08e79 +Mn,4,7.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[6539, 769.1, 649.9, 638.7, 82.3, 47.2, 47.2]', 'rsf': '[0.0001, 4.23, 4.74, 9.17, 0.674, 0.485, 0.938]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[589, 40]', 'rsf': '[0.397, 3.96]'}",25,#808090,#9c7ac7,Transition metals,#e08e79 +Fe,4,8.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[7112, 844.6, 719.9, 706.8, 91.3, 52.7, 52.7]', 'rsf': '[0.0001, 4.57, 5.6, 10.82, 0.745, 0.569, 1.1]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[703, 47]', 'rsf': '[0.367, 3.5]'}",26,#ffa500,#e06633,Transition metals,#e08e79 +Co,4,9.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[7709, 925.1, 793.2, 778.1, 101, 58.9, 59.9]', 'rsf': '[0.0001, 4.88, 6.54, 12.62, 0.818, 0.66, 1.27]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[775, 53]', 'rsf': '[0.341, 3.12]'}",27,#ff1493,#f090a0,Transition metals,#e08e79 +Ni,4,10.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[8333, 1008.6, 870, 852.7, 110.8, 68, 66.2]', 'rsf': '[0.0001, 5.16, 7.57, 14.61, 0.892, 0.757, 1.46]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[848, 61]', 'rsf': '[0.316, 2.65]'}",28,#a52a2a,#50d050,Transition metals,#e08e79 +Cu,4,11.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']"", 'be': '[8979, 1096.7, 952.3, 932.7, 122.5, 77.3, 75.1]', 'rsf': '[0.0001, 5.46, 8.66, 16.73, 0.957, 0.848, 1.63]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[920, 60]', 'rsf': '[0.294, 2.41]'}",29,#a52a2a,#c88033,Transition metals,#e08e79 +Zn,4,12.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']"", 'be': '[9659, 1196.2, 1044.9, 1021.8, 139.8, 91.4, 88.6, 10.2, 10.1]', 'rsf': '[0.0001, 5.76, 9.8, 18.92, 1.04, 0.968, 1.86, 0.33, 0.48]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[994, 59]', 'rsf': '[0.271, 1.98]'}",30,#a52a2a,#7d80b0,Transition metals,#e08e79 +Ga,4,13.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']"", 'be': '[10367, 1299, 1143.2, 1116.4, 159.5, 103.5, 100, 18.7, 18.7]', 'rsf': '[0.0001, 6.07, 11.09, 21.4, 1.13, 1.1, 2.11, 0.442, 0.643]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1070, 55]', 'rsf': '[0.25, 1.57]'}",31,#ff1493,#c28f8f,Poor metals,#b2df8a +Ge,4,14.0,5,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']"", 'be': '[11103, 1414.6, 1248.1, 1217, 180.1, 124.9, 120.8, 29.8, 29.2]', 'rsf': '[0.0001, 6.31, 12.52, 24.15, 1.23, 1.24, 2.39, 0.578, 0.842]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1147, 23]', 'rsf': '[0.229, 1.27]'}",32,#ff1493,#668f8f,Metalloids,#33a02c +As,4,15.0,5,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']"", 'be': '[11867, 1527, 1359.1, 1323.6, 204.7, 146.2, 141.2, 41.7, 41.7]', 'rsf': '[0.0001, 0.0001, 14.07, 27.19, 1.32, 1.39, 2.68, 0.741, 1.08]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1228, 31]', 'rsf': '[0.211, 1.06]'}",33,#ff1493,#bd80e3,Metalloids,#33a02c +Se,4,16.0,1,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']"", 'be': '[12658, 1652, 1474.3, 1433.9, 229.6, 166.5, 160.7, 55.5, 54.6]', 'rsf': '[0.0001, 0.0001, 13.66, 25.9, 1.43, 1.55, 2.98, 0.934, 1.36]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1315, 43]', 'rsf': '[0.194, 5.44]'}",34,#ff1493,#ffa100,Nonmetals,#baa2a6 +Br,4,17.0,6,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']"", 'be': '[13474, 1782, 1596, 1550, 257, 189, 182, 70, 69]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 1.53, 1.72, 3.31, 1.16, 1.68]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1396, 55]', 'rsf': '[0.179, 4.37]'}",35,#a52a2a,#a62929,Halogens,#fdbf6f +Kr,4,18.0,2,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[14326, 1921, 1730.9, 1678.4, 292.8, 222.2, 214.4, 95, 93.8, 27.5, 14.1, 14.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 1.64, 1.89, 3.65, 1.42, 2.06, 0.213, 0.1643, 0.312]'}","{'trans': ""['LMM']"", 'ke': '[1474]', 'rsf': '[0.164]'}",36,#ff1493,#5cb8d1,Noble gases,#bbbb88 +Rb,5,1.0,3,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[15200, 2065, 1864, 1804, 326.7, 248.7, 239.1, 113, 112, 30.5, 16.3, 15.3]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 1.75, 2.07, 4, 1.72, 2.49, 0.251, 0.214, 0.411]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1565, 76]', 'rsf': '[0.152, 2.63]'}",37,#ff1493,#702eb0,Alkali metals,#a6cee3 +Sr,5,2.0,4,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[16105, 2216, 2007, 1940, 358.7, 280.3, 270, 136, 134.2, 38.9, 21.3, 20.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 1.86, 2.25, 4.37, 2.06, 2.99, 0.291, 0.265, 0.51]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1649, 110]', 'rsf': '[0.14, 2.17]'}",38,#ff1493,#00ff00,Alkaline earth metals,#1f78b4 +Y,5,3.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[17038, 2373, 2156, 2080, 392, 310.6, 298.8, 157.7, 155.8, 43.8, 24.4, 23.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 1.98, 2.44, 4.75, 2.44, 3.54, 0.329, 0.311, 0.599]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1746, 127]', 'rsf': '[0.129, 1.86]'}",39,#ff1493,#94ffff,Transition metals,#e08e79 +Zr,5,4.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[17998, 2532, 2307, 2223, 430.3, 343.5, 329.8, 181.1, 178.8, 50.6, 28.5, 27.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.1, 2.64, 5.14, 2.87, 4.17, 0.367, 0.357, 0.689]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1845, 147]', 'rsf': '[0.119, 1.66]'}",40,#ff1493,#94e0e0,Transition metals,#e08e79 +Nb,5,5.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[18986, 2698, 2465, 2371, 466.6, 376.1, 360.6, 205, 202.3, 56.4, 32.6, 30.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.22, 2.84, 5.53, 3.35, 4.86, 0.402, 0.398, 0.767]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[1944, 167]', 'rsf': '[0.11, 1.5]'}",41,#ff1493,#73c2c9,Transition metals,#e08e79 +Mo,5,6.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[20000, 2866, 2625, 2520, 506.3, 411.6, 394, 231.1, 227.9, 63.2, 37.6, 35.5]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.34, 3.04, 5.94, 3.88, 5.62, 0.44, 0.445, 0.86]'}","{'trans': ""['LMM', 'MNN']"", 'ke': '[2044, 186]', 'rsf': '[0.101, 1.39]'}",42,#ff1493,#54b5b5,Transition metals,#e08e79 +Tc,5,7.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[21044, 3043, 2793, 2677, 544, 447.6, 417.7, 257.6, 253.9, 69.5, 42.3, 39.9]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.45, 3.23, 6.36, 4.46, 6.47, 0.479, 0.494, 0.955]'}","{'trans': ""['MNN']"", 'ke': '[249]', 'rsf': '[1.29]'}",43,#ff1493,#3b9e9e,Transition metals,#e08e79 +Ru,5,8.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[22117, 3224, 2967, 2838, 586.1, 483.5, 461.4, 284.2, 280, 75, 46.3, 43.2]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.57, 3.44, 6.78, 5.1, 7.39, 0.519, 0.544, 1.05]'}","{'trans': ""['MNN']"", 'ke': '[273]', 'rsf': '[1.2]'}",44,#ff1493,#248f8f,Transition metals,#e08e79 +Rh,5,9.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[23220, 3412, 3146, 3004, 628.1, 521.3, 496.5, 311.9, 307.2, 81.4, 50.5, 47.3]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.7, 3.64, 7.21, 5.8, 8.39, 0.56, 0.595, 1.15]'}","{'trans': ""['MNN']"", 'ke': '[302]', 'rsf': '[1.13]'}",45,#ff1493,#0a7d8c,Transition metals,#e08e79 +Pd,5,10.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[24350, 3604, 3330, 3173, 671.6, 559.9, 532.3, 340.5, 335.2, 87.1, 55.7, 50.9]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.81, 3.83, 7.63, 6.56, 9.48, 0.598, 0.641, 1.24]'}","{'trans': ""['MNN']"", 'ke': '[330]', 'rsf': '[1.07]'}",46,#ff1493,#006985,Transition metals,#e08e79 +Ag,5,11.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']"", 'be': '[25514, 3806, 3524, 3351, 719, 603.8, 573, 374, 368.3, 97, 63.7, 58.3]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 2.93, 4.03, 8.06, 7.38, 10.66, 0.644, 0.7, 1.36]'}","{'trans': ""['MNN']"", 'ke': '[351]', 'rsf': '[1]'}",47,#808090,#c0c0c0,Transition metals,#e08e79 +Cd,5,12.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[26711, 4018, 3727, 3538, 772, 652.6, 618.4, 411.9, 405.2, 109.8, 63.9, 63.9, 11.7, 10.7]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.04, 4.22, 8.5, 8.27, 11.95, 0.692, 0.762, 1.49, 0.778, 1.11]'}","{'trans': ""['MNN']"", 'ke': '[376]', 'rsf': '[0.931]'}",48,#ff1493,#ffd98f,Transition metals,#e08e79 +In,5,13.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[27940, 4238, 3938, 3730, 827.2, 703.2, 665.3, 451.4, 443.9, 122.9, 73.5, 73.5, 17.7, 16.9]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.16, 4.4, 8.93, 9.22, 13.32, 0.742, 0.828, 1.62, 0.935, 1.34]'}","{'trans': ""['MNN']"", 'ke': '[404]', 'rsf': '[0.867]'}",49,#ff1493,#a67573,Poor metals,#b2df8a +Sn,5,14.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[29200, 4465, 4156, 3929, 884.7, 756.5, 714.6, 493.2, 484.9, 137.1, 83.6, 83.6, 24.9, 23.9]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.26, 4.58, 9.35, 10.25, 14.8, 0.794, 0.897, 1.77, 1.11, 1.59]'}","{'trans': ""['MNN']"", 'ke': '[430]', 'rsf': '[0.809]'}",50,#ff1493,#668080,Poor metals,#b2df8a +Sb,5,15.0,5,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[30491, 4698, 4380, 4132, 946, 812.7, 766.4, 537.5, 528.2, 153.2, 95.6, 95.6, 33.3, 32.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.36, 4.76, 9.77, 11.35, 16.39, 0.848, 0.968, 1.91, 1.29, 1.85]'}","{'trans': ""['MNN']"", 'ke': '[454]', 'rsf': '[0.759]'}",51,#ff1493,#9e63b5,Metalloids,#33a02c +Te,5,16.0,5,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[31814, 4939, 4612, 4341, 1006, 870.8, 820, 583.4, 573, 169.4, 103.3, 103.3, 41.9, 40.4]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.46, 4.92, 10.21, 12.52, 18.06, 0.903, 1.04, 2.07, 1.49, 2.14]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[483, 31]', 'rsf': '[0.713, 0.0001]'}",52,#ff1493,#d47a00,Metalloids,#33a02c +I,5,17.0,6,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[33169, 5188, 4852, 4557, 1072, 931, 875, 630.8, 619.3, 186, 123, 123, 50.6, 48.9]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.53, 5.06, 10.62, 13.77, 19.87, 0.959, 1.11, 2.23, 1.69, 2.44]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[511, 37]', 'rsf': '[0.67, 0.0001]'}",53,#a020f0,#940094,Halogens,#fdbf6f +Xe,5,18.0,2,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']"", 'be': '[34561, 5453, 5107, 4786, 1148.7, 1002.1, 940.6, 689, 676.4, 213.2, 146.7, 145.5, 69.5, 67.5, 23.3, 13.4, 12.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.62, 5.2, 10.99, 15.1, 21.79, 1.02, 1.19, 2.39, 1.92, 2.76, 0.1596, 0.1361, 0.26]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[532, 41]', 'rsf': '[0.626, 0.0001]'}",54,#ff1493,#429eb0,Noble gases,#bbbb88 +Cs,6,1.0,3,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']"", 'be': '[35985, 5714, 5359, 5012, 1211, 1071, 1003, 740.5, 726.6, 232.3, 172.4, 161.3, 79.8, 77.5, 22.7, 14.2, 12.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.73, 5.29, 11.38, 16.46, 23.76, 1.08, 1.27, 2.56, 2.15, 3.1, 0.1843, 0.1697, 0.332]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[563, 47]', 'rsf': '[0.589, 0.0001]'}",55,#ff1493,#57178f,Alkali metals,#a6cee3 +Ba,6,2.0,4,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']"", 'be': '[37441, 5989, 5624, 5247, 1293, 1137, 1063, 795.7, 780.5, 253.5, 192, 178.6, 92.6, 89.9, 30.3, 17, 14.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.84, 5.42, 11.71, 17.92, 25.84, 1.13, 1.34, 2.73, 2.4, 3.46, 0.21, 0.202, 0.4]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[584, 57]', 'rsf': '[0.554, 3.41]'}",56,#ffa500,#00c900,Alkaline earth metals,#1f78b4 +La,6,3.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']"", 'be': '[38925, 6266, 5891, 5483, 1362, 1209, 1128, 853, 836, 274.7, 205.8, 196, 105.3, 102.5, 34.3, 19.3, 16.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.89, 5.55, 12.11, 19.5, 28.12, 1.19, 1.42, 2.91, 2.67, 3.85, 0.234, 0.23, 0.458]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[625, 78]', 'rsf': '[0.527, 3.12]'}",57,#ff1493,#70d4ff,Lanthanides,#cab2d6 +Ce,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[40443, 6549, 6164, 5723, 1436, 1274, 1187, 902.4, 883.8, 291, 223.2, 206.5, 109, 0.1, 0.1, 37.8, 19.8, 17]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.93, 5.66, 12.53, 21.12, 30.5, 1.24, 1.47, 3.03, 2.84, 0.0609, 0.078, 0.23, 0.221, 0.439]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[661, 82]', 'rsf': '[0.503, 2.79]'}",58,#ff1493,#ffffc7,Lanthanides,#cab2d6 +Pr,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[41991, 6835, 6440, 5964, 1511, 1337, 1242, 948.3, 928.8, 304.5, 236.3, 217.6, 115.1, 115.1, 2, 2, 37.4, 22.3, 22.3]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 3.98, 5.75, 12.94, 22.72, 32.85, 1.28, 1.53, 3.17, 3.07, 4.41, 0.1115, 0.143, 0.238, 0.229, 0.456]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[699, 87]', 'rsf': '[0.485, 2.72]'}",59,#ff1493,#d9ffc7,Lanthanides,#cab2d6 +Nd,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[43569, 7126, 6722, 6208, 1575, 1403, 1297, 1003.3, 980.4, 319.2, 243.3, 224.6, 120.5, 120.5, 1.5, 1.5, 37.5, 21.1, 21.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 5.75, 13.35, 24.27, 35.29, 1.33, 1.59, 3.31, 3.29, 4.74, 0.1788, 0.228, 0.247, 0.236, 0.472]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[730, 91]', 'rsf': '[0.469, 2.65]'}",60,#ff1493,#c7ffc7,Lanthanides,#cab2d6 +Pm,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4p1/2', '4p3/2', '4d3/2', '4d5/2']"", 'be': '[45184, 7428, 7013, 6459, 1471, 1357, 1052, 1027, 242, 242, 120, 120]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 5.72, 13.66, 26.08, 37.65, 1.64, 3.45, 3.52, 5.07]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",61,#ff1493,#a3ffc7,Lanthanides,#cab2d6 +Sm,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[46834, 7737, 7312, 6716, 1723, 1541, 1420, 1110.9, 1083.4, 347.2, 265.6, 247.4, 129, 129, 5.2, 5.2, 37.4, 21.3, 21.3]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 13.84, 27.96, 40.37, 1.42, 1.7, 3.59, 3.76, 5.4, 0.374, 0.477, 0.261, 0.249, 0.501]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[814, 100]', 'rsf': '[0.435, 2.43]'}",62,#ff1493,#8fffc7,Lanthanides,#cab2d6 +Eu,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']"", 'be': '[48519, 8052, 7617, 6977, 1800, 1614, 1481, 1158.6, 1127.5, 360, 284, 257, 133, 127.7, 32, 22, 22]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 14.3, 29.91, 43.24, 1.46, 1.75, 3.72, 3.99, 5.74, 0.268, 0.255, 0.515]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[858, 109]', 'rsf': '[0.42, 2.37]'}",63,#ff1493,#61ffc7,Lanthanides,#cab2d6 +Gd,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[50239, 8376, 7930, 7243, 1881, 1688, 1544, 1221.9, 1189.6, 378.6, 286, 271, 142.6, 8.6, 8.6, 36, 28, 21]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 31.98, 46.23, 1.51, 1.8, 3.88, 6.14, 0.63, 0.804, 0.288, 0.279, 0.568]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[895, 138]', 'rsf': '[0.405, 2.26]'}",64,#ff1493,#45ffc7,Lanthanides,#cab2d6 +Tb,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[51996, 8708, 8252, 7514, 1968, 1768, 1611, 1276.9, 1241.1, 396, 322.4, 284.1, 150.5, 150.5, 7.7, 2.4, 45.6, 28.7, 22.6]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 34.2, 49.42, 1.54, 1.84, 3.99, 4.46, 6.41, 0.867, 1.1, 0.281, 0.265, 0.539]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1073, 146]', 'rsf': '[0.39, 2.15]'}",65,#ff1493,#30ffc7,Lanthanides,#cab2d6 +Dy,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[53789, 9046, 8581, 7790, 2047, 1842, 1676, 1333, 1292.6, 414.2, 333.5, 293.2, 153.6, 153.6, 8, 4.3, 49.9, 26.3, 26.3]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 36.65, 52.83, 1.58, 1.88, 4.12, 4.69, 6.74, 1.1, 1.39, 0.287, 0.27, 0.551]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1126, 151]', 'rsf': '[0.377, 2.07]'}",66,#ff1493,#1fffc7,Lanthanides,#cab2d6 +Ho,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[55618, 9394, 8918, 8071, 2128, 1923, 1741, 1392, 1351, 432.4, 343.5, 308.2, 160, 160, 8.6, 5.2, 49.3, 30.8, 24.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 39.19, 56.66, 1.61, 1.91, 4.24, 4.92, 7.08, 1.37, 1.73, 0.293, 0.274, 0.562]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1175, 157]', 'rsf': '[0.365, 1.98]'}",67,#ff1493,#00ff9c,Lanthanides,#cab2d6 +Er,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[57486, 9751, 9264, 8358, 2207, 2006, 1812, 1453, 1409, 449.8, 366.2, 320.2, 167.6, 167.6, 4.7, 50.6, 31.4, 24.7]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 36.7, 60.42, 1.64, 1.95, 4.37, 5.15, 7.41, 2.13, 0.298, 0.277, 0.572]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1393, 163]', 'rsf': '[0.352, 1.87]'}",68,#ff1493,#00e675,Lanthanides,#cab2d6 +Tm,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[59390, 10116, 9617, 8648, 2307, 2090, 1885, 1515, 1468, 470.9, 385.9, 332.6, 175.5, 175.5, 4.6, 54.7, 31.8, 25]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 41.01, 1.67, 1.98, 4.48, 5.38, 7.74, 2.59, 0.303, 0.281, 0.583]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1449, 166]', 'rsf': '[0.34, 1.78]'}",69,#ff1493,#00d452,Lanthanides,#cab2d6 +Yb,6,100.0,9,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[61332, 10486, 9978, 8944, 2398, 2173, 1950, 1576, 1528, 480.5, 388.7, 339.7, 191.2, 182.4, 2.5, 1.3, 52, 30.3, 24.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.7, 2, 4.6, 5.61, 8.07, 2.47, 3.11, 0.308, 0.284, 0.592]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1514, 170]', 'rsf': '[0.329, 1.69]'}",70,#ff1493,#00bf38,Lanthanides,#cab2d6 +Lu,6,100.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[63314, 10870, 10349, 9244, 2491, 2264, 2024, 1639, 1589, 506.8, 412.4, 359.2, 206.1, 196.3, 8.9, 7.5, 57.3, 33.6, 26.7]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.73, 2.03, 4.74, 5.87, 8.45, 2.87, 3.63, 0.326, 0.304, 0.645]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1573, 177]', 'rsf': '[0.317, 1.61]'}",71,#ff1493,#00ab24,Transition metals,#e08e79 +Hf,6,4.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[65351, 11271, 10739, 9561, 2601, 2365, 2108, 1716, 1662, 538, 438.2, 380.7, 220, 211.5, 15.9, 14.2, 64.2, 38, 29.9]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.76, 2.06, 4.88, 6.13, 8.84, 3.32, 4.2, 0.344, 0.325, 0.699]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1624, 185]', 'rsf': '[0.303, 1.47]'}",72,#ff1493,#4dc2ff,Transition metals,#e08e79 +Ta,6,5.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[67416, 11682, 11136, 9881, 2708, 2469, 2194, 1793, 1735, 563.4, 463.4, 400.9, 237.9, 226.4, 23.5, 21.6, 69.7, 42.2, 32.7]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.79, 2.08, 5.02, 6.4, 9.24, 3.8, 4.82, 0.363, 0.346, 0.754]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1680, 179]', 'rsf': '[0.29, 1.35]'}",73,#ff1493,#4da6ff,Transition metals,#e08e79 +W,6,6.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[69525, 12100, 11544, 10207, 2820, 2575, 2281, 1872, 1809, 594.1, 490.4, 423.6, 255.9, 243.5, 33.6, 31.4, 75.6, 45.3, 36.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.81, 2.1, 5.16, 6.68, 9.65, 4.32, 5.48, 0.383, 0.367, 0.811]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1736, 179]', 'rsf': '[0.278, 1.25]'}",74,#ff1493,#2194d6,Transition metals,#e08e79 +Re,6,7.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[71676, 12527, 11959, 10535, 2932, 2682, 2367, 1949, 1883, 625.4, 518.7, 446.8, 273.9, 260.5, 42.9, 40.5, 83, 45.6, 34.6]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.84, 2.12, 5.3, 6.95, 10.06, 4.88, 6.2, 0.402, 0.387, 0.869]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1799, 176]', 'rsf': '[0.267, 1.17]'}",75,#ff1493,#267dab,Transition metals,#e08e79 +Os,6,8.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[73871, 12968, 12385, 10871, 3049, 2792, 2457, 2031, 1960, 658.2, 549.1, 470.7, 293.1, 278.5, 53.4, 50.7, 84, 58, 44.5]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.86, 2.13, 5.45, 7.23, 10.48, 5.48, 6.96, 0.422, 0.408, 0.928]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1850, 170]', 'rsf': '[0.255, 1.11]'}",76,#ff1493,#266696,Transition metals,#e08e79 +Ir,6,9.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[76111, 13419, 12824, 11215, 3174, 2909, 2551, 2116, 2040, 691.1, 577.8, 495.8, 311.9, 296.3, 63.8, 60.8, 95.2, 63, 48]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.88, 2.14, 5.59, 7.51, 10.9, 6.12, 7.78, 0.438, 0.422, 0.967]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1908, 171]', 'rsf': '[0.244, 1.01]'}",77,#ff1493,#175487,Transition metals,#e08e79 +Pt,6,10.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[78395, 13880, 13273, 11564, 3296, 3027, 2645, 2202, 2122, 725.4, 609.1, 519.4, 331.6, 314.6, 74.5, 71.2, 101.7, 65.3, 51.7]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.9, 2.14, 5.74, 7.78, 11.32, 6.81, 8.65, 0.459, 0.444, 1.04]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[1967, 168]', 'rsf': '[0.234, 5.48]'}",78,#ff1493,#d0d0e0,Transition metals,#e08e79 +Au,6,11.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']"", 'be': '[80725, 14353, 13734, 11919, 3425, 3148, 2743, 2291, 2206, 762.1, 642.7, 546.3, 353.2, 335.1, 87.6, 84, 107.2, 74.2, 57.2]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.92, 2.14, 5.89, 8.06, 11.74, 7.54, 9.58, 0.479, 0.463, 1.1]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[2024, 239]', 'rsf': '[0.223, 4.6]'}",79,#daa520,#ffd123,Transition metals,#e08e79 +Hg,6,12.0,8,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[83102, 14839, 14209, 12284, 3562, 3279, 2847, 2385, 2295, 802.2, 680.2, 576.6, 378.2, 358.8, 104, 99.9, 127, 83.1, 64.5, 9.6, 7.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.94, 2.14, 6.04, 8.33, 12.17, 8.32, 10.57, 0.5, 0.484, 1.17, 0.869, 1.21]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[2078, 241]', 'rsf': '[0.213, 3.78]'}",80,#ff1493,#b8b8d0,Transition metals,#e08e79 +Tl,6,13.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[85530, 15347, 14698, 12658, 3704, 3416, 2957, 2485, 2389, 846.2, 720.5, 609.5, 405.7, 385, 122.2, 117.8, 136, 94.6, 73.5, 14.7, 12.5]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 2.13, 6.19, 8.6, 12.6, 9.14, 11.62, 0.52, 0.505, 1.25, 0.991, 1.39]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[2134, 244]', 'rsf': '[0.202, 3.06]'}",81,#ff1493,#a6544d,Poor metals,#b2df8a +Pb,6,14.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[88005, 15861, 15200, 13035, 3851, 3554, 3066, 2586, 2484, 891.8, 761.9, 643.5, 434.3, 412.2, 141.7, 136.9, 147, 106.4, 83.3, 20.7, 18.1]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.12, 6.33, 8.87, 13.02, 10.01, 12.73, 0.542, 0.526, 1.33, 1.11, 1.58]'}","{'trans': ""['MNN', 'NOO']"", 'ke': '[2186, 249]', 'rsf': '[0.192, 2.58]'}",82,#ff1493,#575961,Poor metals,#b2df8a +Bi,6,15.0,7,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[90524, 16388, 15711, 13419, 3999, 3696, 3177, 2688, 2580, 939, 805.2, 678.8, 464, 440.1, 162.3, 157, 159.3, 119, 92.6, 26.9, 23.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.1, 6.48, 9.14, 13.44, 10.93, 13.9, 0.563, 0.546, 1.41, 1.24, 1.76]'}","{'trans': ""['MNN']"", 'ke': '[2243]', 'rsf': '[0.183]'}",83,#ff1493,#9e4fb5,Poor metals,#b2df8a +Po,6,16.0,5,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[93105, 16939, 16244, 13814, 4149, 3854, 3302, 2798, 2683, 995, 851, 705, 500, 473, 184, 184, 177, 132, 104, 31, 31]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.97, 2.07, 6.62, 9.4, 13.87, 11.9, 15.14, 0.584, 0.566, 1.5, 1.36, 1.95]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",84,#ff1493,#ab5c00,Metalloids,#33a02c +At,6,17.0,6,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[95730, 17493, 16785, 14214, 4317, 4008, 3426, 2909, 2787, 1042, 886, 740, 533, 507, 210, 210, 195, 148, 115, 40, 40]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.04, 6.77, 9.65, 14.29, 12.92, 16.44, 0.605, 0.584, 1.58, 1.49, 2.14]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",85,#ff1493,#754f45,Halogens,#fdbf6f +Rn,6,18.0,2,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s']"", 'be': '[98404, 18049, 17337, 14619, 4482, 4159, 3538, 3022, 2892, 1097, 929, 768, 567, 541, 238, 238, 214, 164, 127, 48, 48, 26]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 2, 6.92, 9.9, 14.7, 14, 17.81, 0.625, 0.602, 1.67, 1.62, 2.33, 0.1129]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",86,#ffffff,#428296,Noble gases,#bbbb88 +Fr,7,1.0,3,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']"", 'be': '[101137, 18639, 17907, 15031, 4652, 4327, 3663, 3136, 3000, 1153, 980, 810, 603, 577, 268, 268, 234, 182, 140, 58, 58, 34, 15, 15]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.97, 7.07, 10.16, 15.11, 15.12, 19.24, 0.645, 0.618, 1.77, 1.75, 2.53, 0.1257, 0.0966, 0.24]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",87,#ffffff,#420066,Alkali metals,#a6cee3 +Ra,7,2.0,4,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']"", 'be': '[103922, 19237, 18484, 15444, 4822, 4490, 3792, 3248, 3105, 1208, 1058, 879, 636, 603, 299, 299, 254, 200, 153, 68, 68, 44, 19, 19]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.91, 7.2, 10.4, 15.53, 16.3, 20.74, 0.665, 0.633, 1.86, 1.88, 2.73, 0.1383, 0.1099, 0.286]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",88,#ffffff,#007d00,Alkaline earth metals,#1f78b4 +Ac,7,3.0,10,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[106755, 19840, 19083, 15871, 5002, 4656, 3909, 3370, 3219, 1269, 1080, 890, 675, 639, 319, 319, 272, 215, 167, 80, 80]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.86, 7.33, 10.61, 15.93, 17.53, 22.3, 0.684, 0.647, 1.95, 2.02, 2.94]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",89,#ffffff,#70abfa,Actinides,#6a3d9a +Th,7,100.0,10,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']"", 'be': '[109651, 20472, 19693, 16300, 5182, 4830, 4046, 3491, 3332, 1330, 1168, 966.4, 712.1, 675.2, 342.4, 333.1, 290, 229, 182, 92.5, 85.4, 41.4, 24.5, 16.6]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.9, 7.46, 10.82, 16.31, 18.81, 23.94, 0.702, 0.66, 2.05, 2.15, 3.15, 0.1625, 0.1325, 0.366]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",90,#ff1493,#00baff,Actinides,#6a3d9a +Pa,7,100.0,10,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']"", 'be': '[112601, 21105, 20314, 16733, 5367, 5001, 4174, 3611, 3442, 1387, 1224, 1007, 743, 708, 371, 360, 310, 232, 232, 94, 94]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.92, 1.74, 7.61, 11.04, 16.47, 20.12, 25.6, 0.718, 0.667, 2.13, 2.25, 3.29]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",91,#ffffff,#00a1ff,Actinides,#6a3d9a +U,7,100.0,10,"{'trans': ""['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']"", 'be': '[115606, 21757, 20948, 17166, 5548, 5182, 4303, 3728, 3552, 1439, 1271, 1043, 778.3, 736.2, 388.2, 377.4, 321, 257, 192, 102.8, 94.2, 43.9, 26.8, 16.8]', 'rsf': '[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.9, 1.68, 7.71, 11.25, 17.05, 21.5, 27.36, 0.732, 0.674, 2.22, 2.36, 3.46, 0.1682, 0.133, 0.376]'}","{'trans': '[]', 'ke': '[]', 'rsf': '[]'}",92,#ff1493,#008fff,Actinides,#6a3d9a diff --git a/Databases/xps_data.csv b/Databases/xps_data.csv new file mode 100644 index 0000000..cc9b699 --- /dev/null +++ b/Databases/xps_data.csv @@ -0,0 +1,93 @@ +symbol,alka.trans,alka.be,alka.rsf,aes.trans,aes.ke,aes.rsf +H,['1s'],[13.6],[0.0002],[],[],[] +He,['1s'],[24.6],[0.0082],[],[],[] +Li,['1s'],[54.7],[0.0568],['KLL'],[43],[0.977] +Be,['1s'],[111.5],[0.1947],['KLL'],[104],[0.456] +B,['1s'],[188],[0.486],['KLL'],[179],[0.289] +C,['1s'],[284.2],[1],['KLL'],[272],[0.209] +N,"['1s', '2s']","[409.9, 37.3]","[1.8, 0.0867]",['KLL'],[379],[0.159] +O,"['1s', '2s']","[543.1, 41.6]","[2.93, 0.1405]",['KLL'],[503],[0.129] +F,['1s'],[696.7],[4.43],['KLL'],[647],[0.105] +Ne,"['1s', '2s', '2p1/2', '2p3/2']","[870.2, 48.5, 21.7, 21.6]","[6.3, 0.296, 0.0347, 0.0683]",['KLL'],[805],[0.0846] +Na,"['1s', '2s', '2p1/2', '2p3/2']","[1070.8, 63.5, 30.65, 30.81]","[8.52, 0.422, 0.0654, 0.1287]",['KLL'],[990],[0.0714] +Mg,"['1s', '2s', '2p1/2', '2p3/2']","[1303, 88.7, 49.78, 49.5]","[11.18, 0.575, 0.1125, 0.221]","['KLL', 'LMM']","[1186, 45]","[0.0593, 3.43]" +Al,"['1s', '2s', '2p1/2', '2p3/2']","[1559.6, 117.8, 72.95, 72.55]","[0.0001, 0.753, 0.1811, 0.356]","['KLL', 'LMM']","[1396, 68]","[0.0497, 2.44]" +Si,"['1s', '2s', '2p1/2', '2p3/2']","[1839, 149.7, 99.82, 99.42]","[0.0001, 0.955, 0.276, 0.541]","['KLL', 'LMM']","[1619, 92]","[0.0417, 1.78]" +P,"['1s', '2s', '2p1/2', '2p3/2']","[2145.5, 189, 136, 135]","[0.0001, 1.18, 0.403, 0.789]","['KLL', 'LMM']","[1859, 120]","[0.035, 1.36]" +S,"['1s', '2s', '2p1/2', '2p3/2']","[2472, 230.9, 163.6, 162.5]","[0.0001, 1.43, 0.567, 1.11]","['KLL', 'LMM']","[2117, 152]","[0.0295, 1.14]" +Cl,"['1s', '2s', '2p1/2', '2p3/2']","[2822.4, 270, 202, 200]","[0.0001, 1.69, 0.775, 1.51]","['KLL', 'LMM']","[2378, 181]","[0.0001, 0.984]" +Ar,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[3205.9, 326.3, 250.6, 248.4, 29.3, 15.9, 15.7]","[0.0001, 1.97, 1.03, 2.01, 0.227, 0.0821, 0.1597]",['LMM'],[215],[0.827] +K,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[3608.4, 378.6, 297.3, 294.6, 34.8, 18.3, 18.3]","[0.0001, 2.27, 1.35, 2.62, 0.286, 0.1229, 0.239]",['LMM'],[252],[0.723] +Ca,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[4038.5, 438.4, 349.7, 346.2, 44.3, 25.4, 25.4]","[0.0001, 2.59, 1.72, 3.35, 0.351, 0.172, 0.335]","['LMM', 'MNN']","[291, 20]","[0.633, 0.0001]" +Sc,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[4492, 498, 403.6, 398.7, 51.1, 28.3, 28.3]","[0.0001, 2.91, 2.17, 4.21, 0.411, 0.221, 0.429]","['LMM', 'MNN']","[340, 24]","[0.563, 0.0001]" +Ti,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[4966, 560.9, 460.2, 453.8, 58.7, 32.6, 32.6]","[0.0001, 3.24, 2.69, 5.22, 0.473, 0.276, 0.537]","['LMM', 'MNN']","[418, 27]","[0.514, 0.0001]" +V,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[5465, 626.7, 519.8, 512.1, 66.3, 37.2, 37.2]","[0.0001, 3.57, 3.29, 6.37, 0.538, 0.339, 0.657]","['LMM', 'MNN']","[473, 31]","[0.471, 5.03]" +Cr,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[5989, 696, 583.8, 574.1, 74.1, 42.2, 42.2]","[0.0001, 3.91, 3.98, 7.69, 0.596, 0.4, 0.773]","['LMM', 'MNN']","[529, 36]","[0.432, 4.6]" +Mn,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[6539, 769.1, 649.9, 638.7, 82.3, 47.2, 47.2]","[0.0001, 4.23, 4.74, 9.17, 0.674, 0.485, 0.938]","['LMM', 'MNN']","[589, 40]","[0.397, 3.96]" +Fe,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[7112, 844.6, 719.9, 706.8, 91.3, 52.7, 52.7]","[0.0001, 4.57, 5.6, 10.82, 0.745, 0.569, 1.1]","['LMM', 'MNN']","[703, 47]","[0.367, 3.5]" +Co,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[7709, 925.1, 793.2, 778.1, 101, 58.9, 59.9]","[0.0001, 4.88, 6.54, 12.62, 0.818, 0.66, 1.27]","['LMM', 'MNN']","[775, 53]","[0.341, 3.12]" +Ni,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[8333, 1008.6, 870, 852.7, 110.8, 68, 66.2]","[0.0001, 5.16, 7.57, 14.61, 0.892, 0.757, 1.46]","['LMM', 'MNN']","[848, 61]","[0.316, 2.65]" +Cu,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2']","[8979, 1096.7, 952.3, 932.7, 122.5, 77.3, 75.1]","[0.0001, 5.46, 8.66, 16.73, 0.957, 0.848, 1.63]","['LMM', 'MNN']","[920, 60]","[0.294, 2.41]" +Zn,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']","[9659, 1196.2, 1044.9, 1021.8, 139.8, 91.4, 88.6, 10.2, 10.1]","[0.0001, 5.76, 9.8, 18.92, 1.04, 0.968, 1.86, 0.33, 0.48]","['LMM', 'MNN']","[994, 59]","[0.271, 1.98]" +Ga,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']","[10367, 1299, 1143.2, 1116.4, 159.5, 103.5, 100, 18.7, 18.7]","[0.0001, 6.07, 11.09, 21.4, 1.13, 1.1, 2.11, 0.442, 0.643]","['LMM', 'MNN']","[1070, 55]","[0.25, 1.57]" +Ge,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']","[11103, 1414.6, 1248.1, 1217, 180.1, 124.9, 120.8, 29.8, 29.2]","[0.0001, 6.31, 12.52, 24.15, 1.23, 1.24, 2.39, 0.578, 0.842]","['LMM', 'MNN']","[1147, 23]","[0.229, 1.27]" +As,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']","[11867, 1527, 1359.1, 1323.6, 204.7, 146.2, 141.2, 41.7, 41.7]","[0.0001, 0.0001, 14.07, 27.19, 1.32, 1.39, 2.68, 0.741, 1.08]","['LMM', 'MNN']","[1228, 31]","[0.211, 1.06]" +Se,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']","[12658, 1652, 1474.3, 1433.9, 229.6, 166.5, 160.7, 55.5, 54.6]","[0.0001, 0.0001, 13.66, 25.9, 1.43, 1.55, 2.98, 0.934, 1.36]","['LMM', 'MNN']","[1315, 43]","[0.194, 5.44]" +Br,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2']","[13474, 1782, 1596, 1550, 257, 189, 182, 70, 69]","[0.0001, 0.0001, 0.0001, 0.0001, 1.53, 1.72, 3.31, 1.16, 1.68]","['LMM', 'MNN']","[1396, 55]","[0.179, 4.37]" +Kr,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[14326, 1921, 1730.9, 1678.4, 292.8, 222.2, 214.4, 95, 93.8, 27.5, 14.1, 14.1]","[0.0001, 0.0001, 0.0001, 0.0001, 1.64, 1.89, 3.65, 1.42, 2.06, 0.213, 0.1643, 0.312]",['LMM'],[1474],[0.164] +Rb,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[15200, 2065, 1864, 1804, 326.7, 248.7, 239.1, 113, 112, 30.5, 16.3, 15.3]","[0.0001, 0.0001, 0.0001, 0.0001, 1.75, 2.07, 4, 1.72, 2.49, 0.251, 0.214, 0.411]","['LMM', 'MNN']","[1565, 76]","[0.152, 2.63]" +Sr,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[16105, 2216, 2007, 1940, 358.7, 280.3, 270, 136, 134.2, 38.9, 21.3, 20.1]","[0.0001, 0.0001, 0.0001, 0.0001, 1.86, 2.25, 4.37, 2.06, 2.99, 0.291, 0.265, 0.51]","['LMM', 'MNN']","[1649, 110]","[0.14, 2.17]" +Y,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[17038, 2373, 2156, 2080, 392, 310.6, 298.8, 157.7, 155.8, 43.8, 24.4, 23.1]","[0.0001, 0.0001, 0.0001, 0.0001, 1.98, 2.44, 4.75, 2.44, 3.54, 0.329, 0.311, 0.599]","['LMM', 'MNN']","[1746, 127]","[0.129, 1.86]" +Zr,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[17998, 2532, 2307, 2223, 430.3, 343.5, 329.8, 181.1, 178.8, 50.6, 28.5, 27.1]","[0.0001, 0.0001, 0.0001, 0.0001, 2.1, 2.64, 5.14, 2.87, 4.17, 0.367, 0.357, 0.689]","['LMM', 'MNN']","[1845, 147]","[0.119, 1.66]" +Nb,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[18986, 2698, 2465, 2371, 466.6, 376.1, 360.6, 205, 202.3, 56.4, 32.6, 30.8]","[0.0001, 0.0001, 0.0001, 0.0001, 2.22, 2.84, 5.53, 3.35, 4.86, 0.402, 0.398, 0.767]","['LMM', 'MNN']","[1944, 167]","[0.11, 1.5]" +Mo,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[20000, 2866, 2625, 2520, 506.3, 411.6, 394, 231.1, 227.9, 63.2, 37.6, 35.5]","[0.0001, 0.0001, 0.0001, 0.0001, 2.34, 3.04, 5.94, 3.88, 5.62, 0.44, 0.445, 0.86]","['LMM', 'MNN']","[2044, 186]","[0.101, 1.39]" +Tc,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[21044, 3043, 2793, 2677, 544, 447.6, 417.7, 257.6, 253.9, 69.5, 42.3, 39.9]","[0.0001, 0.0001, 0.0001, 0.0001, 2.45, 3.23, 6.36, 4.46, 6.47, 0.479, 0.494, 0.955]",['MNN'],[249],[1.29] +Ru,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[22117, 3224, 2967, 2838, 586.1, 483.5, 461.4, 284.2, 280, 75, 46.3, 43.2]","[0.0001, 0.0001, 0.0001, 0.0001, 2.57, 3.44, 6.78, 5.1, 7.39, 0.519, 0.544, 1.05]",['MNN'],[273],[1.2] +Rh,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[23220, 3412, 3146, 3004, 628.1, 521.3, 496.5, 311.9, 307.2, 81.4, 50.5, 47.3]","[0.0001, 0.0001, 0.0001, 0.0001, 2.7, 3.64, 7.21, 5.8, 8.39, 0.56, 0.595, 1.15]",['MNN'],[302],[1.13] +Pd,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[24350, 3604, 3330, 3173, 671.6, 559.9, 532.3, 340.5, 335.2, 87.1, 55.7, 50.9]","[0.0001, 0.0001, 0.0001, 0.0001, 2.81, 3.83, 7.63, 6.56, 9.48, 0.598, 0.641, 1.24]",['MNN'],[330],[1.07] +Ag,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2']","[25514, 3806, 3524, 3351, 719, 603.8, 573, 374, 368.3, 97, 63.7, 58.3]","[0.0001, 0.0001, 0.0001, 0.0001, 2.93, 4.03, 8.06, 7.38, 10.66, 0.644, 0.7, 1.36]",['MNN'],[351],[1] +Cd,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[26711, 4018, 3727, 3538, 772, 652.6, 618.4, 411.9, 405.2, 109.8, 63.9, 63.9, 11.7, 10.7]","[0.0001, 0.0001, 0.0001, 0.0001, 3.04, 4.22, 8.5, 8.27, 11.95, 0.692, 0.762, 1.49, 0.778, 1.11]",['MNN'],[376],[0.931] +In,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[27940, 4238, 3938, 3730, 827.2, 703.2, 665.3, 451.4, 443.9, 122.9, 73.5, 73.5, 17.7, 16.9]","[0.0001, 0.0001, 0.0001, 0.0001, 3.16, 4.4, 8.93, 9.22, 13.32, 0.742, 0.828, 1.62, 0.935, 1.34]",['MNN'],[404],[0.867] +Sn,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[29200, 4465, 4156, 3929, 884.7, 756.5, 714.6, 493.2, 484.9, 137.1, 83.6, 83.6, 24.9, 23.9]","[0.0001, 0.0001, 0.0001, 0.0001, 3.26, 4.58, 9.35, 10.25, 14.8, 0.794, 0.897, 1.77, 1.11, 1.59]",['MNN'],[430],[0.809] +Sb,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[30491, 4698, 4380, 4132, 946, 812.7, 766.4, 537.5, 528.2, 153.2, 95.6, 95.6, 33.3, 32.1]","[0.0001, 0.0001, 0.0001, 0.0001, 3.36, 4.76, 9.77, 11.35, 16.39, 0.848, 0.968, 1.91, 1.29, 1.85]",['MNN'],[454],[0.759] +Te,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[31814, 4939, 4612, 4341, 1006, 870.8, 820, 583.4, 573, 169.4, 103.3, 103.3, 41.9, 40.4]","[0.0001, 0.0001, 0.0001, 0.0001, 3.46, 4.92, 10.21, 12.52, 18.06, 0.903, 1.04, 2.07, 1.49, 2.14]","['MNN', 'NOO']","[483, 31]","[0.713, 0.0001]" +I,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[33169, 5188, 4852, 4557, 1072, 931, 875, 630.8, 619.3, 186, 123, 123, 50.6, 48.9]","[0.0001, 0.0001, 0.0001, 0.0001, 3.53, 5.06, 10.62, 13.77, 19.87, 0.959, 1.11, 2.23, 1.69, 2.44]","['MNN', 'NOO']","[511, 37]","[0.67, 0.0001]" +Xe,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']","[34561, 5453, 5107, 4786, 1148.7, 1002.1, 940.6, 689, 676.4, 213.2, 146.7, 145.5, 69.5, 67.5, 23.3, 13.4, 12.1]","[0.0001, 0.0001, 0.0001, 0.0001, 3.62, 5.2, 10.99, 15.1, 21.79, 1.02, 1.19, 2.39, 1.92, 2.76, 0.1596, 0.1361, 0.26]","['MNN', 'NOO']","[532, 41]","[0.626, 0.0001]" +Cs,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']","[35985, 5714, 5359, 5012, 1211, 1071, 1003, 740.5, 726.6, 232.3, 172.4, 161.3, 79.8, 77.5, 22.7, 14.2, 12.1]","[0.0001, 0.0001, 0.0001, 0.0001, 3.73, 5.29, 11.38, 16.46, 23.76, 1.08, 1.27, 2.56, 2.15, 3.1, 0.1843, 0.1697, 0.332]","['MNN', 'NOO']","[563, 47]","[0.589, 0.0001]" +Ba,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']","[37441, 5989, 5624, 5247, 1293, 1137, 1063, 795.7, 780.5, 253.5, 192, 178.6, 92.6, 89.9, 30.3, 17, 14.8]","[0.0001, 0.0001, 0.0001, 0.0001, 3.84, 5.42, 11.71, 17.92, 25.84, 1.13, 1.34, 2.73, 2.4, 3.46, 0.21, 0.202, 0.4]","['MNN', 'NOO']","[584, 57]","[0.554, 3.41]" +La,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']","[38925, 6266, 5891, 5483, 1362, 1209, 1128, 853, 836, 274.7, 205.8, 196, 105.3, 102.5, 34.3, 19.3, 16.8]","[0.0001, 0.0001, 0.0001, 0.0001, 3.89, 5.55, 12.11, 19.5, 28.12, 1.19, 1.42, 2.91, 2.67, 3.85, 0.234, 0.23, 0.458]","['MNN', 'NOO']","[625, 78]","[0.527, 3.12]" +Ce,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[40443, 6549, 6164, 5723, 1436, 1274, 1187, 902.4, 883.8, 291, 223.2, 206.5, 109, 0.1, 0.1, 37.8, 19.8, 17]","[0.0001, 0.0001, 0.0001, 0.0001, 3.93, 5.66, 12.53, 21.12, 30.5, 1.24, 1.47, 3.03, 2.84, 0.0609, 0.078, 0.23, 0.221, 0.439]","['MNN', 'NOO']","[661, 82]","[0.503, 2.79]" +Pr,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[41991, 6835, 6440, 5964, 1511, 1337, 1242, 948.3, 928.8, 304.5, 236.3, 217.6, 115.1, 115.1, 2, 2, 37.4, 22.3, 22.3]","[0.0001, 0.0001, 0.0001, 0.0001, 3.98, 5.75, 12.94, 22.72, 32.85, 1.28, 1.53, 3.17, 3.07, 4.41, 0.1115, 0.143, 0.238, 0.229, 0.456]","['MNN', 'NOO']","[699, 87]","[0.485, 2.72]" +Nd,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[43569, 7126, 6722, 6208, 1575, 1403, 1297, 1003.3, 980.4, 319.2, 243.3, 224.6, 120.5, 120.5, 1.5, 1.5, 37.5, 21.1, 21.1]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 5.75, 13.35, 24.27, 35.29, 1.33, 1.59, 3.31, 3.29, 4.74, 0.1788, 0.228, 0.247, 0.236, 0.472]","['MNN', 'NOO']","[730, 91]","[0.469, 2.65]" +Pm,"['1s', '2s', '2p1/2', '2p3/2', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4p1/2', '4p3/2', '4d3/2', '4d5/2']","[45184, 7428, 7013, 6459, 1471, 1357, 1052, 1027, 242, 242, 120, 120]","[0.0001, 0.0001, 0.0001, 0.0001, 5.72, 13.66, 26.08, 37.65, 1.64, 3.45, 3.52, 5.07]",[],[],[] +Sm,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[46834, 7737, 7312, 6716, 1723, 1541, 1420, 1110.9, 1083.4, 347.2, 265.6, 247.4, 129, 129, 5.2, 5.2, 37.4, 21.3, 21.3]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 13.84, 27.96, 40.37, 1.42, 1.7, 3.59, 3.76, 5.4, 0.374, 0.477, 0.261, 0.249, 0.501]","['MNN', 'NOO']","[814, 100]","[0.435, 2.43]" +Eu,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2']","[48519, 8052, 7617, 6977, 1800, 1614, 1481, 1158.6, 1127.5, 360, 284, 257, 133, 127.7, 32, 22, 22]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 14.3, 29.91, 43.24, 1.46, 1.75, 3.72, 3.99, 5.74, 0.268, 0.255, 0.515]","['MNN', 'NOO']","[858, 109]","[0.42, 2.37]" +Gd,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[50239, 8376, 7930, 7243, 1881, 1688, 1544, 1221.9, 1189.6, 378.6, 286, 271, 142.6, 8.6, 8.6, 36, 28, 21]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 31.98, 46.23, 1.51, 1.8, 3.88, 6.14, 0.63, 0.804, 0.288, 0.279, 0.568]","['MNN', 'NOO']","[895, 138]","[0.405, 2.26]" +Tb,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[51996, 8708, 8252, 7514, 1968, 1768, 1611, 1276.9, 1241.1, 396, 322.4, 284.1, 150.5, 150.5, 7.7, 2.4, 45.6, 28.7, 22.6]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 34.2, 49.42, 1.54, 1.84, 3.99, 4.46, 6.41, 0.867, 1.1, 0.281, 0.265, 0.539]","['MNN', 'NOO']","[1073, 146]","[0.39, 2.15]" +Dy,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[53789, 9046, 8581, 7790, 2047, 1842, 1676, 1333, 1292.6, 414.2, 333.5, 293.2, 153.6, 153.6, 8, 4.3, 49.9, 26.3, 26.3]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 36.65, 52.83, 1.58, 1.88, 4.12, 4.69, 6.74, 1.1, 1.39, 0.287, 0.27, 0.551]","['MNN', 'NOO']","[1126, 151]","[0.377, 2.07]" +Ho,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[55618, 9394, 8918, 8071, 2128, 1923, 1741, 1392, 1351, 432.4, 343.5, 308.2, 160, 160, 8.6, 5.2, 49.3, 30.8, 24.1]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 39.19, 56.66, 1.61, 1.91, 4.24, 4.92, 7.08, 1.37, 1.73, 0.293, 0.274, 0.562]","['MNN', 'NOO']","[1175, 157]","[0.365, 1.98]" +Er,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[57486, 9751, 9264, 8358, 2207, 2006, 1812, 1453, 1409, 449.8, 366.2, 320.2, 167.6, 167.6, 4.7, 50.6, 31.4, 24.7]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 36.7, 60.42, 1.64, 1.95, 4.37, 5.15, 7.41, 2.13, 0.298, 0.277, 0.572]","['MNN', 'NOO']","[1393, 163]","[0.352, 1.87]" +Tm,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[59390, 10116, 9617, 8648, 2307, 2090, 1885, 1515, 1468, 470.9, 385.9, 332.6, 175.5, 175.5, 4.6, 54.7, 31.8, 25]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 41.01, 1.67, 1.98, 4.48, 5.38, 7.74, 2.59, 0.303, 0.281, 0.583]","['MNN', 'NOO']","[1449, 166]","[0.34, 1.78]" +Yb,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[61332, 10486, 9978, 8944, 2398, 2173, 1950, 1576, 1528, 480.5, 388.7, 339.7, 191.2, 182.4, 2.5, 1.3, 52, 30.3, 24.1]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.7, 2, 4.6, 5.61, 8.07, 2.47, 3.11, 0.308, 0.284, 0.592]","['MNN', 'NOO']","[1514, 170]","[0.329, 1.69]" +Lu,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[63314, 10870, 10349, 9244, 2491, 2264, 2024, 1639, 1589, 506.8, 412.4, 359.2, 206.1, 196.3, 8.9, 7.5, 57.3, 33.6, 26.7]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.73, 2.03, 4.74, 5.87, 8.45, 2.87, 3.63, 0.326, 0.304, 0.645]","['MNN', 'NOO']","[1573, 177]","[0.317, 1.61]" +Hf,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[65351, 11271, 10739, 9561, 2601, 2365, 2108, 1716, 1662, 538, 438.2, 380.7, 220, 211.5, 15.9, 14.2, 64.2, 38, 29.9]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.76, 2.06, 4.88, 6.13, 8.84, 3.32, 4.2, 0.344, 0.325, 0.699]","['MNN', 'NOO']","[1624, 185]","[0.303, 1.47]" +Ta,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[67416, 11682, 11136, 9881, 2708, 2469, 2194, 1793, 1735, 563.4, 463.4, 400.9, 237.9, 226.4, 23.5, 21.6, 69.7, 42.2, 32.7]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.79, 2.08, 5.02, 6.4, 9.24, 3.8, 4.82, 0.363, 0.346, 0.754]","['MNN', 'NOO']","[1680, 179]","[0.29, 1.35]" +W,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[69525, 12100, 11544, 10207, 2820, 2575, 2281, 1872, 1809, 594.1, 490.4, 423.6, 255.9, 243.5, 33.6, 31.4, 75.6, 45.3, 36.8]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.81, 2.1, 5.16, 6.68, 9.65, 4.32, 5.48, 0.383, 0.367, 0.811]","['MNN', 'NOO']","[1736, 179]","[0.278, 1.25]" +Re,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[71676, 12527, 11959, 10535, 2932, 2682, 2367, 1949, 1883, 625.4, 518.7, 446.8, 273.9, 260.5, 42.9, 40.5, 83, 45.6, 34.6]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.84, 2.12, 5.3, 6.95, 10.06, 4.88, 6.2, 0.402, 0.387, 0.869]","['MNN', 'NOO']","[1799, 176]","[0.267, 1.17]" +Os,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[73871, 12968, 12385, 10871, 3049, 2792, 2457, 2031, 1960, 658.2, 549.1, 470.7, 293.1, 278.5, 53.4, 50.7, 84, 58, 44.5]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.86, 2.13, 5.45, 7.23, 10.48, 5.48, 6.96, 0.422, 0.408, 0.928]","['MNN', 'NOO']","[1850, 170]","[0.255, 1.11]" +Ir,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[76111, 13419, 12824, 11215, 3174, 2909, 2551, 2116, 2040, 691.1, 577.8, 495.8, 311.9, 296.3, 63.8, 60.8, 95.2, 63, 48]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.88, 2.14, 5.59, 7.51, 10.9, 6.12, 7.78, 0.438, 0.422, 0.967]","['MNN', 'NOO']","[1908, 171]","[0.244, 1.01]" +Pt,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[78395, 13880, 13273, 11564, 3296, 3027, 2645, 2202, 2122, 725.4, 609.1, 519.4, 331.6, 314.6, 74.5, 71.2, 101.7, 65.3, 51.7]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.9, 2.14, 5.74, 7.78, 11.32, 6.81, 8.65, 0.459, 0.444, 1.04]","['MNN', 'NOO']","[1967, 168]","[0.234, 5.48]" +Au,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2']","[80725, 14353, 13734, 11919, 3425, 3148, 2743, 2291, 2206, 762.1, 642.7, 546.3, 353.2, 335.1, 87.6, 84, 107.2, 74.2, 57.2]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.92, 2.14, 5.89, 8.06, 11.74, 7.54, 9.58, 0.479, 0.463, 1.1]","['MNN', 'NOO']","[2024, 239]","[0.223, 4.6]" +Hg,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[83102, 14839, 14209, 12284, 3562, 3279, 2847, 2385, 2295, 802.2, 680.2, 576.6, 378.2, 358.8, 104, 99.9, 127, 83.1, 64.5, 9.6, 7.8]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.94, 2.14, 6.04, 8.33, 12.17, 8.32, 10.57, 0.5, 0.484, 1.17, 0.869, 1.21]","['MNN', 'NOO']","[2078, 241]","[0.213, 3.78]" +Tl,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[85530, 15347, 14698, 12658, 3704, 3416, 2957, 2485, 2389, 846.2, 720.5, 609.5, 405.7, 385, 122.2, 117.8, 136, 94.6, 73.5, 14.7, 12.5]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 2.13, 6.19, 8.6, 12.6, 9.14, 11.62, 0.52, 0.505, 1.25, 0.991, 1.39]","['MNN', 'NOO']","[2134, 244]","[0.202, 3.06]" +Pb,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[88005, 15861, 15200, 13035, 3851, 3554, 3066, 2586, 2484, 891.8, 761.9, 643.5, 434.3, 412.2, 141.7, 136.9, 147, 106.4, 83.3, 20.7, 18.1]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.12, 6.33, 8.87, 13.02, 10.01, 12.73, 0.542, 0.526, 1.33, 1.11, 1.58]","['MNN', 'NOO']","[2186, 249]","[0.192, 2.58]" +Bi,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[90524, 16388, 15711, 13419, 3999, 3696, 3177, 2688, 2580, 939, 805.2, 678.8, 464, 440.1, 162.3, 157, 159.3, 119, 92.6, 26.9, 23.8]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.1, 6.48, 9.14, 13.44, 10.93, 13.9, 0.563, 0.546, 1.41, 1.24, 1.76]",['MNN'],[2243],[0.183] +Po,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[93105, 16939, 16244, 13814, 4149, 3854, 3302, 2798, 2683, 995, 851, 705, 500, 473, 184, 184, 177, 132, 104, 31, 31]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.97, 2.07, 6.62, 9.4, 13.87, 11.9, 15.14, 0.584, 0.566, 1.5, 1.36, 1.95]",[],[],[] +At,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[95730, 17493, 16785, 14214, 4317, 4008, 3426, 2909, 2787, 1042, 886, 740, 533, 507, 210, 210, 195, 148, 115, 40, 40]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.04, 6.77, 9.65, 14.29, 12.92, 16.44, 0.605, 0.584, 1.58, 1.49, 2.14]",[],[],[] +Rn,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s']","[98404, 18049, 17337, 14619, 4482, 4159, 3538, 3022, 2892, 1097, 929, 768, 567, 541, 238, 238, 214, 164, 127, 48, 48, 26]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 2, 6.92, 9.9, 14.7, 14, 17.81, 0.625, 0.602, 1.67, 1.62, 2.33, 0.1129]",[],[],[] +Fr,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']","[101137, 18639, 17907, 15031, 4652, 4327, 3663, 3136, 3000, 1153, 980, 810, 603, 577, 268, 268, 234, 182, 140, 58, 58, 34, 15, 15]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.97, 7.07, 10.16, 15.11, 15.12, 19.24, 0.645, 0.618, 1.77, 1.75, 2.53, 0.1257, 0.0966, 0.24]",[],[],[] +Ra,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']","[103922, 19237, 18484, 15444, 4822, 4490, 3792, 3248, 3105, 1208, 1058, 879, 636, 603, 299, 299, 254, 200, 153, 68, 68, 44, 19, 19]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.91, 7.2, 10.4, 15.53, 16.3, 20.74, 0.665, 0.633, 1.86, 1.88, 2.73, 0.1383, 0.1099, 0.286]",[],[],[] +Ac,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[106755, 19840, 19083, 15871, 5002, 4656, 3909, 3370, 3219, 1269, 1080, 890, 675, 639, 319, 319, 272, 215, 167, 80, 80]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.86, 7.33, 10.61, 15.93, 17.53, 22.3, 0.684, 0.647, 1.95, 2.02, 2.94]",[],[],[] +Th,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']","[109651, 20472, 19693, 16300, 5182, 4830, 4046, 3491, 3332, 1330, 1168, 966.4, 712.1, 675.2, 342.4, 333.1, 290, 229, 182, 92.5, 85.4, 41.4, 24.5, 16.6]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.9, 7.46, 10.82, 16.31, 18.81, 23.94, 0.702, 0.66, 2.05, 2.15, 3.15, 0.1625, 0.1325, 0.366]",[],[],[] +Pa,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2']","[112601, 21105, 20314, 16733, 5367, 5001, 4174, 3611, 3442, 1387, 1224, 1007, 743, 708, 371, 360, 310, 232, 232, 94, 94]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.92, 1.74, 7.61, 11.04, 16.47, 20.12, 25.6, 0.718, 0.667, 2.13, 2.25, 3.29]",[],[],[] +U,"['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2']","[115606, 21757, 20948, 17166, 5548, 5182, 4303, 3728, 3552, 1439, 1271, 1043, 778.3, 736.2, 388.2, 377.4, 321, 257, 192, 102.8, 94.2, 43.9, 26.8, 16.8]","[0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.9, 1.68, 7.71, 11.25, 17.05, 21.5, 27.36, 0.732, 0.674, 2.22, 2.36, 3.46, 0.1682, 0.133, 0.376]",[],[],[] diff --git a/Images/cross_section.png b/Images/cross_section.png new file mode 100644 index 0000000..0434977 Binary files /dev/null and b/Images/cross_section.png differ diff --git a/Images/main_window.png b/Images/main_window.png new file mode 100644 index 0000000..65ed692 Binary files /dev/null and b/Images/main_window.png differ diff --git a/Images/survey_periodictable.png b/Images/survey_periodictable.png new file mode 100644 index 0000000..147cbe1 Binary files /dev/null and b/Images/survey_periodictable.png differ diff --git a/Python/elementdata.py b/Python/elementdata.py deleted file mode 100644 index 79b04d8..0000000 --- a/Python/elementdata.py +++ /dev/null @@ -1,474 +0,0 @@ -class ElementData: - def __init__(self): - self.xps = [ - { - 'symbol': 'Refresh', - 'alka': {'trans': [], 'be': [], 'rsf': []}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Clear', - 'alka': {'trans': [], 'be': [], 'rsf': []}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'H', - 'alka': {'trans': ['1s'], 'be': [13.6], 'rsf': [.0002]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'He', - 'alka': {'trans': ['1s'], 'be': [24.6], 'rsf': [.0082]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Li', - 'alka': {'trans': ['1s'], 'be': [54.7], 'rsf': [.0568]}, - 'aes': {'trans': ['KLL'], 'ke': [43], 'rsf': [.977]} - }, - { - 'symbol': 'Be', - 'alka': {'trans': ['1s'], 'be': [111.5], 'rsf': [.1947]}, - 'aes': {'trans': ['KLL'], 'ke': [104], 'rsf': [.456]} - }, - { - 'symbol': 'B', - 'alka': {'trans': ['1s'], 'be': [188], 'rsf': [.486]}, - 'aes': {'trans': ['KLL'], 'ke': [179], 'rsf': [.289]} - }, - { - 'symbol': 'C', - 'alka': {'trans': ['1s'], 'be': [284.2], 'rsf': [1]}, - 'aes': {'trans': ['KLL'], 'ke': [272], 'rsf': [.209]} - }, - { - 'symbol': 'N', - 'alka': {'trans': ['1s', '2s'], 'be': [409.9, 37.3], 'rsf': [1.8, .0867]}, - 'aes': {'trans': ['KLL'], 'ke': [379], 'rsf': [.159]} - }, - { - 'symbol': 'O', - 'alka': {'trans': ['1s', '2s'], 'be': [543.1, 41.6], 'rsf': [2.93, .1405]}, - 'aes': {'trans': ['KLL'], 'ke': [503], 'rsf': [.129]} - }, - { - 'symbol': 'F', - 'alka': {'trans': ['1s'], 'be': [696.7], 'rsf': [4.43]}, - 'aes': {'trans': ['KLL'], 'ke': [647], 'rsf': [.105]} - }, - { - 'symbol': 'Ne', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [870.2, 48.5, 21.7, 21.6], 'rsf': [6.3, .296, .0347, .0683]}, - 'aes': {'trans': ['KLL'], 'ke': [805], 'rsf': [.0846]} - }, - { - 'symbol': 'Na', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1070.8, 63.5, 30.65, 30.81], 'rsf': [8.52, .422, .0654, .1287]}, - 'aes': {'trans': ['KLL'], 'ke': [990], 'rsf': [.0714]} - }, - { - 'symbol': 'Mg', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1303, 88.7, 49.78, 49.5], 'rsf': [11.18, .575, .1125, .221]}, - 'aes': {'trans': ['KLL', 'LMM'], 'ke': [1186, 45], 'rsf': [.0593, 3.43]} - }, - { - 'symbol': 'Al', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1559.6, 117.8, 72.95, 72.55], 'rsf': [.0001, .753, .1811, .356]}, - 'aes': {'trans': ['KLL', 'LMM'], 'ke': [1396, 68], 'rsf': [.0497, 2.44]} - }, - { - 'symbol': 'Si', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1839, 149.7, 99.82, 99.42], 'rsf': [.0001, .955, .276, .541]}, - 'aes': {'trans': ['KLL', 'LMM'], 'ke': [1619, 92], 'rsf': [.0417, 1.78]} - }, - { - 'symbol': 'P', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [2145.5, 189, 136, 135], 'rsf': [.0001, 1.18, .403, .789]}, - 'aes': {'trans': ['KLL', 'LMM'], 'ke': [1859, 120], 'rsf': [.035, 1.36]} - }, - { - 'symbol': 'S', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [2472, 230.9, 163.6, 162.5], 'rsf': [.0001, 1.43, .567, 1.11]}, - 'aes': {'trans': ['KLL', 'LMM'], 'ke': [2117, 152], 'rsf': [.0295, 1.14]} - }, - { - 'symbol': 'Cl', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [2822.4, 270, 202, 200], 'rsf': [.0001, 1.69, .775, 1.51]}, - 'aes': {'trans': ['KLL', 'LMM'], 'ke': [2378, 181], 'rsf': [.0001, .984]} - }, - { - 'symbol': 'Ar', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [3205.9, 326.3, 250.6, 248.4, 29.3, 15.9, 15.7], 'rsf': [.0001, 1.97, 1.03, 2.01, .227, .0821, .1597]}, - 'aes': {'trans': ['LMM'], 'ke': [215], 'rsf': [.827]} - }, - { - 'symbol': 'K', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [3608.4, 378.6, 297.3, 294.6, 34.8, 18.3, 18.3], 'rsf': [.0001, 2.27, 1.35, 2.62, .286, .1229, .239]}, - 'aes': {'trans': ['LMM'], 'ke': [252], 'rsf': [.723]} - }, - { - 'symbol': 'Ca', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [4038.5, 438.4, 349.7, 346.2, 44.3, 25.4, 25.4], 'rsf': [.0001, 2.59, 1.72, 3.35, .351, .172, .335]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [291, 20], 'rsf': [.633, .0001]} - }, - { - 'symbol': 'Sc', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [4492, 498, 403.6, 398.7, 51.1, 28.3, 28.3], 'rsf': [.0001, 2.91, 2.17, 4.21, .411, .221, .429]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [340, 24], 'rsf': [.563, .0001]} - }, - { - 'symbol': 'Ti', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [4966, 560.9, 460.2, 453.8, 58.7, 32.6, 32.6], 'rsf': [.0001, 3.24, 2.69, 5.22, .473, .276, .537]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [418, 27], 'rsf': [.514, .0001]} - }, - { - 'symbol': 'V', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [5465, 626.7, 519.8, 512.1, 66.3, 37.2, 37.2], 'rsf': [.0001, 3.57, 3.29, 6.37, .538, .339, .657]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [473, 31], 'rsf': [.471, 5.03]} - }, - { - 'symbol': 'Cr', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [5989, 696, 583.8, 574.1, 74.1, 42.2, 42.2], 'rsf': [.0001, 3.91, 3.98, 7.69, .596, .4, .773]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [529, 36], 'rsf': [.432, 4.6]} - }, - { - 'symbol': 'Mn', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [6539, 769.1, 649.9, 638.7, 82.3, 47.2, 47.2], 'rsf': [.0001, 4.23, 4.74, 9.17, .674, .485, .938]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [589, 40], 'rsf': [.397, 3.96]} - }, - { - 'symbol': 'Fe', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [7112, 844.6, 719.9, 706.8, 91.3, 52.7, 52.7], 'rsf': [.0001, 4.57, 5.6, 10.82, .745, .569, 1.1]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [703, 47], 'rsf': [.367, 3.5]} - }, - { - 'symbol': 'Co', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [7709, 925.1, 793.2, 778.1, 101, 58.9, 59.9], 'rsf': [.0001, 4.88, 6.54, 12.62, .818, .66, 1.27]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [775, 53], 'rsf': [.341, 3.12]} - }, - { - 'symbol': 'Ni', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [8333, 1008.6, 870, 852.7, 110.8, 68, 66.2], 'rsf': [.0001, 5.16, 7.57, 14.61, .892, .757, 1.46]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [848, 61], 'rsf': [.316, 2.65]} - }, - { - 'symbol': 'Cu', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [8979, 1096.7, 952.3, 932.7, 122.5, 77.3, 75.1], 'rsf': [.0001, 5.46, 8.66, 16.73, .957, .848, 1.63]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [920, 60], 'rsf': [.294, 2.41]} - }, - { - 'symbol': 'Zn', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [9659, 1196.2, 1044.9, 1021.8, 139.8, 91.4, 88.6, 10.2, 10.1], 'rsf': [.0001, 5.76, 9.8, 18.92, 1.04, .968, 1.86, .33, .48]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [994, 59], 'rsf': [.271, 1.98]} - }, - { - 'symbol': 'Ga', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [10367, 1299, 1143.2, 1116.4, 159.5, 103.5, 100, 18.7, 18.7], 'rsf': [.0001, 6.07, 11.09, 21.4, 1.13, 1.1, 2.11, .442, .643]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1070, 55], 'rsf': [.25, 1.57]} - }, - { - 'symbol': 'Ge', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [11103, 1414.6, 1248.1, 1217, 180.1, 124.9, 120.8, 29.8, 29.2], 'rsf': [.0001, 6.31, 12.52, 24.15, 1.23, 1.24, 2.39, .578, .842]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1147, 23], 'rsf': [.229, 1.27]} - }, - { - 'symbol': 'As', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [11867, 1527, 1359.1, 1323.6, 204.7, 146.2, 141.2, 41.7, 41.7], 'rsf': [.0001, .0001, 14.07, 27.19, 1.32, 1.39, 2.68, .741, 1.08]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1228, 31], 'rsf': [.211, 1.06]} - }, - { - 'symbol': 'Se', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [12658, 1652, 1474.3, 1433.9, 229.6, 166.5, 160.7, 55.5, 54.6], 'rsf': [.0001, .0001, 13.66, 25.9, 1.43, 1.55, 2.98, .934, 1.36]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1315, 43], 'rsf': [.194, 5.44]} - }, - { - 'symbol': 'Br', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [13474, 1782, 1596, 1550, 257, 189, 182, 70, 69], 'rsf': [.0001, .0001, .0001, .0001, 1.53, 1.72, 3.31, 1.16, 1.68]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1396, 55], 'rsf': [.179, 4.37]} - }, - { - 'symbol': 'Kr', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [14326, 1921, 1730.9, 1678.4, 292.8, 222.2, 214.4, 95, 93.8, 27.5, 14.1, 14.1], 'rsf': [.0001, .0001, .0001, .0001, 1.64, 1.89, 3.65, 1.42, 2.06, .213, .1643, .312]}, - 'aes': {'trans': ['LMM'], 'ke': [1474], 'rsf': [.164]} - }, - { - 'symbol': 'Rb', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [15200, 2065, 1864, 1804, 326.7, 248.7, 239.1, 113, 112, 30.5, 16.3, 15.3], 'rsf': [.0001, .0001, .0001, .0001, 1.75, 2.07, 4, 1.72, 2.49, .251, .214, .411]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1565, 76], 'rsf': [.152, 2.63]} - }, - { - 'symbol': 'Sr', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [16105, 2216, 2007, 1940, 358.7, 280.3, 270, 136, 134.2, 38.9, 21.3, 20.1], 'rsf': [.0001, .0001, .0001, .0001, 1.86, 2.25, 4.37, 2.06, 2.99, .291, .265, .51]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1649, 110], 'rsf': [.14, 2.17]} - }, - { - 'symbol': 'Y', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [17038, 2373, 2156, 2080, 392, 310.6, 298.8, 157.7, 155.8, 43.8, 24.4, 23.1], 'rsf': [.0001, .0001, .0001, .0001, 1.98, 2.44, 4.75, 2.44, 3.54, .329, .311, .599]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1746, 127], 'rsf': [.129, 1.86]} - }, - { - 'symbol': 'Zr', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [17998, 2532, 2307, 2223, 430.3, 343.5, 329.8, 181.1, 178.8, 50.6, 28.5, 27.1], 'rsf': [.0001, .0001, .0001, .0001, 2.1, 2.64, 5.14, 2.87, 4.17, .367, .357, .689]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1845, 147], 'rsf': [.119, 1.66]} - }, - { - 'symbol': 'Nb', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [18986, 2698, 2465, 2371, 466.6, 376.1, 360.6, 205, 202.3, 56.4, 32.6, 30.8], 'rsf': [.0001, .0001, .0001, .0001, 2.22, 2.84, 5.53, 3.35, 4.86, .402, .398, .767]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [1944, 167], 'rsf': [.11, 1.5]} - }, - { - 'symbol': 'Mo', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [20000, 2866, 2625, 2520, 506.3, 411.6, 394, 231.1, 227.9, 63.2, 37.6, 35.5], 'rsf': [.0001, .0001, .0001, .0001, 2.34, 3.04, 5.94, 3.88, 5.62, .44, .445, .86]}, - 'aes': {'trans': ['LMM', 'MNN'], 'ke': [2044, 186], 'rsf': [.101, 1.39]} - }, - { - 'symbol': 'Tc', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [21044, 3043, 2793, 2677, 544, 447.6, 417.7, 257.6, 253.9, 69.5, 42.3, 39.9], 'rsf': [.0001, .0001, .0001, .0001, 2.45, 3.23, 6.36, 4.46, 6.47, .479, .494, .955]}, - 'aes': {'trans': ['MNN'], 'ke': [249], 'rsf': [1.29]} - }, - { - 'symbol': 'Ru', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [22117, 3224, 2967, 2838, 586.1, 483.5, 461.4, 284.2, 280, 75, 46.3, 43.2], 'rsf': [.0001, .0001, .0001, .0001, 2.57, 3.44, 6.78, 5.1, 7.39, .519, .544, 1.05]}, - 'aes': {'trans': ['MNN'], 'ke': [273], 'rsf': [1.2]} - }, - { - 'symbol': 'Rh', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [23220, 3412, 3146, 3004, 628.1, 521.3, 496.5, 311.9, 307.2, 81.4, 50.5, 47.3], 'rsf': [.0001, .0001, .0001, .0001, 2.7, 3.64, 7.21, 5.8, 8.39, .56, .595, 1.15]}, - 'aes': {'trans': ['MNN'], 'ke': [302], 'rsf': [1.13]} - }, - { - 'symbol': 'Pd', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [24350, 3604, 3330, 3173, 671.6, 559.9, 532.3, 340.5, 335.2, 87.1, 55.7, 50.9], 'rsf': [.0001, .0001, .0001, .0001, 2.81, 3.83, 7.63, 6.56, 9.48, .598, .641, 1.24]}, - 'aes': {'trans': ['MNN'], 'ke': [330], 'rsf': [1.07]} - }, - { - 'symbol': 'Ag', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [25514, 3806, 3524, 3351, 719, 603.8, 573, 374, 368.3, 97, 63.7, 58.3], 'rsf': [.0001, .0001, .0001, .0001, 2.93, 4.03, 8.06, 7.38, 10.66, .644, .7, 1.36]}, - 'aes': {'trans': ['MNN'], 'ke': [351], 'rsf': [1]} - }, - { - 'symbol': 'Cd', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [26711, 4018, 3727, 3538, 772, 652.6, 618.4, 411.9, 405.2, 109.8, 63.9, 63.9, 11.7, 10.7], 'rsf': [.0001, .0001, .0001, .0001, 3.04, 4.22, 8.5, 8.27, 11.95, .692, .762, 1.49, .778, 1.11]}, - 'aes': {'trans': ['MNN'], 'ke': [376], 'rsf': [.931]} - }, - { - 'symbol': 'In', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [27940, 4238, 3938, 3730, 827.2, 703.2, 665.3, 451.4, 443.9, 122.9, 73.5, 73.5, 17.7, 16.9], 'rsf': [.0001, .0001, .0001, .0001, 3.16, 4.4, 8.93, 9.22, 13.32, .742, .828, 1.62, .935, 1.34]}, - 'aes': {'trans': ['MNN'], 'ke': [404], 'rsf': [.867]} - }, - { - 'symbol': 'Sn', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [29200, 4465, 4156, 3929, 884.7, 756.5, 714.6, 493.2, 484.9, 137.1, 83.6, 83.6, 24.9, 23.9], 'rsf': [.0001, .0001, .0001, .0001, 3.26, 4.58, 9.35, 10.25, 14.8, .794, .897, 1.77, 1.11, 1.59]}, - 'aes': {'trans': ['MNN'], 'ke': [430], 'rsf': [.809]} - }, - { - 'symbol': 'Sb', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [30491, 4698, 4380, 4132, 946, 812.7, 766.4, 537.5, 528.2, 153.2, 95.6, 95.6, 33.3, 32.1], 'rsf': [.0001, .0001, .0001, .0001, 3.36, 4.76, 9.77, 11.35, 16.39, .848, .968, 1.91, 1.29, 1.85]}, - 'aes': {'trans': ['MNN'], 'ke': [454], 'rsf': [.759]} - }, - { - 'symbol': 'Te', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [31814, 4939, 4612, 4341, 1006, 870.8, 820, 583.4, 573, 169.4, 103.3, 103.3, 41.9, 40.4], 'rsf': [.0001, .0001, .0001, .0001, 3.46, 4.92, 10.21, 12.52, 18.06, .903, 1.04, 2.07, 1.49, 2.14]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [483, 31], 'rsf': [.713, .0001]} - }, - { - 'symbol': 'I', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [33169, 5188, 4852, 4557, 1072, 931, 875, 630.8, 619.3, 186, 123, 123, 50.6, 48.9], 'rsf': [.0001, .0001, .0001, .0001, 3.53, 5.06, 10.62, 13.77, 19.87, .959, 1.11, 2.23, 1.69, 2.44]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [511, 37], 'rsf': [.67, .0001]} - }, - { - 'symbol': 'Xe', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [34561, 5453, 5107, 4786, 1148.7, 1002.1, 940.6, 689, 676.4, 213.2, 146.7, 145.5, 69.5, 67.5, 23.3, 13.4, 12.1], 'rsf': [.0001, .0001, .0001, .0001, 3.62, 5.2, 10.99, 15.1, 21.79, 1.02, 1.19, 2.39, 1.92, 2.76, .1596, .1361, .26]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [532, 41], 'rsf': [.626, .0001]} - }, - { - 'symbol': 'Cs', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [35985, 5714, 5359, 5012, 1211, 1071, 1003, 740.5, 726.6, 232.3, 172.4, 161.3, 79.8, 77.5, 22.7, 14.2, 12.1], 'rsf': [.0001, .0001, .0001, .0001, 3.73, 5.29, 11.38, 16.46, 23.76, 1.08, 1.27, 2.56, 2.15, 3.1, .1843, .1697, .332]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [563, 47], 'rsf': [.589, .0001]} - }, - { - 'symbol': 'Ba', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [37441, 5989, 5624, 5247, 1293, 1137, 1063, 795.7, 780.5, 253.5, 192, 178.6, 92.6, 89.9, 30.3, 17, 14.8], 'rsf': [.0001, .0001, .0001, .0001, 3.84, 5.42, 11.71, 17.92, 25.84, 1.13, 1.34, 2.73, 2.4, 3.46, .21, .202, .4]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [584, 57], 'rsf': [.554, 3.41]} - }, - { - 'symbol': 'La', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [38925, 6266, 5891, 5483, 1362, 1209, 1128, 853, 836, 274.7, 205.8, 196, 105.3, 102.5, 34.3, 19.3, 16.8], 'rsf': [.0001, .0001, .0001, .0001, 3.89, 5.55, 12.11, 19.5, 28.12, 1.19, 1.42, 2.91, 2.67, 3.85, .234, .23, .458]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [625, 78], 'rsf': [.527, 3.12]} - }, - { - 'symbol': 'Ce', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [40443, 6549, 6164, 5723, 1436, 1274, 1187, 902.4, 883.8, 291, 223.2, 206.5, 109, .1, .1, 37.8, 19.8, 17], 'rsf': [.0001, .0001, .0001, .0001, 3.93, 5.66, 12.53, 21.12, 30.5, 1.24, 1.47, 3.03, 2.84, .0609, .078, .23, .221, .439]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [661, 82], 'rsf': [.503, 2.79]} - }, - { - 'symbol': 'Pr', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [41991, 6835, 6440, 5964, 1511, 1337, 1242, 948.3, 928.8, 304.5, 236.3, 217.6, 115.1, 115.1, 2, 2, 37.4, 22.3, 22.3], 'rsf': [.0001, .0001, .0001, .0001, 3.98, 5.75, 12.94, 22.72, 32.85, 1.28, 1.53, 3.17, 3.07, 4.41, .1115, .143, .238, .229, .456]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [699, 87], 'rsf': [.485, 2.72]} - }, - { - 'symbol': 'Nd', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [43569, 7126, 6722, 6208, 1575, 1403, 1297, 1003.3, 980.4, 319.2, 243.3, 224.6, 120.5, 120.5, 1.5, 1.5, 37.5, 21.1, 21.1], 'rsf': [.0001, .0001, .0001, .0001, .0001, 5.75, 13.35, 24.27, 35.29, 1.33, 1.59, 3.31, 3.29, 4.74, .1788, .228, .247, .236, .472]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [730, 91], 'rsf': [.469, 2.65]} - }, - { - 'symbol': 'Pm', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [45184, 7428, 7013, 6459, 1471, 1357, 1052, 1027, 242, 242, 120, 120], 'rsf': [.0001, .0001, .0001, .0001, 5.72, 13.66, 26.08, 37.65, 1.64, 3.45, 3.52, 5.07]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Sm', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [46834, 7737, 7312, 6716, 1723, 1541, 1420, 1110.9, 1083.4, 347.2, 265.6, 247.4, 129, 129, 5.2, 5.2, 37.4, 21.3, 21.3], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, 13.84, 27.96, 40.37, 1.42, 1.7, 3.59, 3.76, 5.4, .374, .477, .261, .249, .501]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [814, 100], 'rsf': [.435, 2.43]} - }, - { - 'symbol': 'Eu', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [48519, 8052, 7617, 6977, 1800, 1614, 1481, 1158.6, 1127.5, 360, 284, 257, 133, 127.7, 32, 22, 22], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, 14.3, 29.91, 43.24, 1.46, 1.75, 3.72, 3.99, 5.74, .268, .255, .515]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [858, 109], 'rsf': [.42, 2.37]} - }, - { - 'symbol': 'Gd', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [50239, 8376, 7930, 7243, 1881, 1688, 1544, 1221.9, 1189.6, 378.6, 286, 271, 142.6, 8.6, 8.6, 36, 28, 21], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, 31.98, 46.23, 1.51, 1.8, 3.88, 6.14, .63, .804, .288, .279, .568]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [895, 138], 'rsf': [.405, 2.26]} - }, - { - 'symbol': 'Tb', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [51996, 8708, 8252, 7514, 1968, 1768, 1611, 1276.9, 1241.1, 396, 322.4, 284.1, 150.5, 150.5, 7.7, 2.4, 45.6, 28.7, 22.6], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, 34.2, 49.42, 1.54, 1.84, 3.99, 4.46, 6.41, .867, 1.1, .281, .265, .539]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1073, 146], 'rsf': [.39, 2.15]} - }, - { - 'symbol': 'Dy', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [53789, 9046, 8581, 7790, 2047, 1842, 1676, 1333, 1292.6, 414.2, 333.5, 293.2, 153.6, 153.6, 8, 4.3, 49.9, 26.3, 26.3], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, 36.65, 52.83, 1.58, 1.88, 4.12, 4.69, 6.74, 1.1, 1.39, .287, .27, .551]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1126, 151], 'rsf': [.377, 2.07]} - }, - { - 'symbol': 'Ho', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [55618, 9394, 8918, 8071, 2128, 1923, 1741, 1392, 1351, 432.4, 343.5, 308.2, 160, 160, 8.6, 5.2, 49.3, 30.8, 24.1], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, 39.19, 56.66, 1.61, 1.91, 4.24, 4.92, 7.08, 1.37, 1.73, .293, .274, .562]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1175, 157], 'rsf': [.365, 1.98]} - }, - { - 'symbol': 'Er', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [57486, 9751, 9264, 8358, 2207, 2006, 1812, 1453, 1409, 449.8, 366.2, 320.2, 167.6, 167.6, 4.7, 50.6, 31.4, 24.7], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, 36.7, 60.42, 1.64, 1.95, 4.37, 5.15, 7.41, 2.13, .298, .277, .572]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1393, 163], 'rsf': [.352, 1.87]} - }, - { - 'symbol': 'Tm', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [59390, 10116, 9617, 8648, 2307, 2090, 1885, 1515, 1468, 470.9, 385.9, 332.6, 175.5, 175.5, 4.6, 54.7, 31.8, 25], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 41.01, 1.67, 1.98, 4.48, 5.38, 7.74, 2.59, .303, .281, .583]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1449, 166], 'rsf': [.34, 1.78]} - }, - { - 'symbol': 'Yb', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [61332, 10486, 9978, 8944, 2398, 2173, 1950, 1576, 1528, 480.5, 388.7, 339.7, 191.2, 182.4, 2.5, 1.3, 52, 30.3, 24.1], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.7, 2, 4.6, 5.61, 8.07, 2.47, 3.11, .308, .284, .592]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1514, 170], 'rsf': [.329, 1.69]} - }, - { - 'symbol': 'Lu', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [63314, 10870, 10349, 9244, 2491, 2264, 2024, 1639, 1589, 506.8, 412.4, 359.2, 206.1, 196.3, 8.9, 7.5, 57.3, 33.6, 26.7], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.73, 2.03, 4.74, 5.87, 8.45, 2.87, 3.63, .326, .304, .645]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1573, 177], 'rsf': [.317, 1.61]} - }, - { - 'symbol': 'Hf', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [65351, 11271, 10739, 9561, 2601, 2365, 2108, 1716, 1662, 538, 438.2, 380.7, 220, 211.5, 15.9, 14.2, 64.2, 38, 29.9], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.76, 2.06, 4.88, 6.13, 8.84, 3.32, 4.2, .344, .325, .699]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1624, 185], 'rsf': [.303, 1.47]} - }, - { - 'symbol': 'Ta', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [67416, 11682, 11136, 9881, 2708, 2469, 2194, 1793, 1735, 563.4, 463.4, 400.9, 237.9, 226.4, 23.5, 21.6, 69.7, 42.2, 32.7], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.79, 2.08, 5.02, 6.4, 9.24, 3.8, 4.82, .363, .346, .754]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1680, 179], 'rsf': [.29, 1.35]} - }, - { - 'symbol': 'W', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [69525, 12100, 11544, 10207, 2820, 2575, 2281, 1872, 1809, 594.1, 490.4, 423.6, 255.9, 243.5, 33.6, 31.4, 75.6, 45.3, 36.8], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.81, 2.1, 5.16, 6.68, 9.65, 4.32, 5.48, .383, .367, .811]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1736, 179], 'rsf': [.278, 1.25]} - }, - { - 'symbol': 'Re', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [71676, 12527, 11959, 10535, 2932, 2682, 2367, 1949, 1883, 625.4, 518.7, 446.8, 273.9, 260.5, 42.9, 40.5, 83, 45.6, 34.6], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.84, 2.12, 5.3, 6.95, 10.06, 4.88, 6.2, .402, .387, .869]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1799, 176], 'rsf': [.267, 1.17]} - }, - { - 'symbol': 'Os', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [73871, 12968, 12385, 10871, 3049, 2792, 2457, 2031, 1960, 658.2, 549.1, 470.7, 293.1, 278.5, 53.4, 50.7, 84, 58, 44.5], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.86, 2.13, 5.45, 7.23, 10.48, 5.48, 6.96, .422, .408, .928]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1850, 170], 'rsf': [.255, 1.11]} - }, - { - 'symbol': 'Ir', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [76111, 13419, 12824, 11215, 3174, 2909, 2551, 2116, 2040, 691.1, 577.8, 495.8, 311.9, 296.3, 63.8, 60.8, 95.2, 63, 48], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.88, 2.14, 5.59, 7.51, 10.9, 6.12, 7.78, .438, .422, .967]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1908, 171], 'rsf': [.244, 1.01]} - }, - { - 'symbol': 'Pt', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [78395, 13880, 13273, 11564, 3296, 3027, 2645, 2202, 2122, 725.4, 609.1, 519.4, 331.6, 314.6, 74.5, 71.2, 101.7, 65.3, 51.7], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.9, 2.14, 5.74, 7.78, 11.32, 6.81, 8.65, .459, .444, 1.04]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [1967, 168], 'rsf': [.234, 5.48]} - }, - { - 'symbol': 'Au', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [80725, 14353, 13734, 11919, 3425, 3148, 2743, 2291, 2206, 762.1, 642.7, 546.3, 353.2, 335.1, 87.6, 84, 107.2, 74.2, 57.2], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.92, 2.14, 5.89, 8.06, 11.74, 7.54, 9.58, .479, .463, 1.1]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [2024, 239], 'rsf': [.223, 4.6]} - }, - { - 'symbol': 'Hg', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [83102, 14839, 14209, 12284, 3562, 3279, 2847, 2385, 2295, 802.2, 680.2, 576.6, 378.2, 358.8, 104, 99.9, 127, 83.1, 64.5, 9.6, 7.8], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.94, 2.14, 6.04, 8.33, 12.17, 8.32, 10.57, .5, .484, 1.17, .869, 1.21]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [2078, 241], 'rsf': [.213, 3.78]} - }, - { - 'symbol': 'Tl', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [85530, 15347, 14698, 12658, 3704, 3416, 2957, 2485, 2389, 846.2, 720.5, 609.5, 405.7, 385, 122.2, 117.8, 136, 94.6, 73.5, 14.7, 12.5], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.95, 2.13, 6.19, 8.6, 12.6, 9.14, 11.62, .52, .505, 1.25, .991, 1.39]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [2134, 244], 'rsf': [.202, 3.06]} - }, - { - 'symbol': 'Pb', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [88005, 15861, 15200, 13035, 3851, 3554, 3066, 2586, 2484, 891.8, 761.9, 643.5, 434.3, 412.2, 141.7, 136.9, 147, 106.4, 83.3, 20.7, 18.1], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.96, 2.12, 6.33, 8.87, 13.02, 10.01, 12.73, .542, .526, 1.33, 1.11, 1.58]}, - 'aes': {'trans': ['MNN', 'NOO'], 'ke': [2186, 249], 'rsf': [.192, 2.58]} - }, - { - 'symbol': 'Bi', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [90524, 16388, 15711, 13419, 3999, 3696, 3177, 2688, 2580, 939, 805.2, 678.8, 464, 440.1, 162.3, 157, 159.3, 119, 92.6, 26.9, 23.8], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.96, 2.1, 6.48, 9.14, 13.44, 10.93, 13.9, .563, .546, 1.41, 1.24, 1.76]}, - 'aes': {'trans': ['MNN'], 'ke': [2243], 'rsf': [.183]} - }, - { - 'symbol': 'Po', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [93105, 16939, 16244, 13814, 4149, 3854, 3302, 2798, 2683, 995, 851, 705, 500, 473, 184, 184, 177, 132, 104, 31, 31], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.97, 2.07, 6.62, 9.4, 13.87, 11.9, 15.14, .584, .566, 1.5, 1.36, 1.95]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'At', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [95730, 17493, 16785, 14214, 4317, 4008, 3426, 2909, 2787, 1042, 886, 740, 533, 507, 210, 210, 195, 148, 115, 40, 40], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.96, 2.04, 6.77, 9.65, 14.29, 12.92, 16.44, .605, .584, 1.58, 1.49, 2.14]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Rn', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s'], 'be': [98404, 18049, 17337, 14619, 4482, 4159, 3538, 3022, 2892, 1097, 929, 768, 567, 541, 238, 238, 214, 164, 127, 48, 48, 26], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.95, 2, 6.92, 9.9, 14.7, 14, 17.81, .625, .602, 1.67, 1.62, 2.33, .1129]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Fr', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [101137, 18639, 17907, 15031, 4652, 4327, 3663, 3136, 3000, 1153, 980, 810, 603, 577, 268, 268, 234, 182, 140, 58, 58, 34, 15, 15], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.95, 1.97, 7.07, 10.16, 15.11, 15.12, 19.24, .645, .618, 1.77, 1.75, 2.53, .1257, .0966, .24]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Ra', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [103922, 19237, 18484, 15444, 4822, 4490, 3792, 3248, 3105, 1208, 1058, 879, 636, 603, 299, 299, 254, 200, 153, 68, 68, 44, 19, 19], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.95, 1.91, 7.2, 10.4, 15.53, 16.3, 20.74, .665, .633, 1.86, 1.88, 2.73, .1383, .1099, .286]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Ac', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [106755, 19840, 19083, 15871, 5002, 4656, 3909, 3370, 3219, 1269, 1080, 890, 675, 639, 319, 319, 272, 215, 167, 80, 80], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.95, 1.86, 7.33, 10.61, 15.93, 17.53, 22.3, .684, .647, 1.95, 2.02, 2.94]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Th', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [109651, 20472, 19693, 16300, 5182, 4830, 4046, 3491, 3332, 1330, 1168, 966.4, 712.1, 675.2, 342.4, 333.1, 290, 229, 182, 92.5, 85.4, 41.4, 24.5, 16.6], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.95, 1.9, 7.46, 10.82, 16.31, 18.81, 23.94, .702, .66, 2.05, 2.15, 3.15, .1625, .1325, .366]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'Pa', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [112601, 21105, 20314, 16733, 5367, 5001, 4174, 3611, 3442, 1387, 1224, 1007, 743, 708, 371, 360, 310, 232, 232, 94, 94], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.92, 1.74, 7.61, 11.04, 16.47, 20.12, 25.6, .718, .667, 2.13, 2.25, 3.29]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - }, - { - 'symbol': 'U', - 'alka': {'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [115606, 21757, 20948, 17166, 5548, 5182, 4303, 3728, 3552, 1439, 1271, 1043, 778.3, 736.2, 388.2, 377.4, 321, 257, 192, 102.8, 94.2, 43.9, 26.8, 16.8], 'rsf': [.0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001, 1.9, 1.68, 7.71, 11.25, 17.05, 21.5, 27.36, .732, .674, 2.22, 2.36, 3.46, .1682, .133, .376]}, - 'aes': {'trans': [], 'ke': [], 'rsf': []} - } - ] diff --git a/Python/elements.csv b/Python/elements.csv new file mode 100644 index 0000000..36fb345 --- /dev/null +++ b/Python/elements.csv @@ -0,0 +1,93 @@ +symbol,period,group_id,series_id,alka,aes,atomic_number,cpk_color,jmol_color,series_name,series_color +H,1,1.0,1,"{'trans': ['1s'], 'be': [13.6], 'rsf': [0.0002]}","{'trans': [], 'ke': [], 'rsf': []}",1,#ffffff,#ffffff,Nonmetals,#baa2a6 +He,1,18.0,2,"{'trans': ['1s'], 'be': [24.6], 'rsf': [0.0082]}","{'trans': [], 'ke': [], 'rsf': []}",2,#ffc0cb,#d9ffff,Noble gases,#bbbb88 +Li,2,1.0,3,"{'trans': ['1s'], 'be': [54.7], 'rsf': [0.0568]}","{'trans': ['KLL'], 'ke': [43], 'rsf': [0.977]}",3,#b22222,#cc80ff,Alkali metals,#a6cee3 +Be,2,2.0,4,"{'trans': ['1s'], 'be': [111.5], 'rsf': [0.1947]}","{'trans': ['KLL'], 'ke': [104], 'rsf': [0.456]}",4,#ff1493,#c2ff00,Alkaline earth metals,#1f78b4 +B,2,13.0,5,"{'trans': ['1s'], 'be': [188], 'rsf': [0.486]}","{'trans': ['KLL'], 'ke': [179], 'rsf': [0.289]}",5,#00ff00,#ffb5b5,Metalloids,#33a02c +C,2,14.0,1,"{'trans': ['1s'], 'be': [284.2], 'rsf': [1]}","{'trans': ['KLL'], 'ke': [272], 'rsf': [0.209]}",6,#c8c8c8,#909090,Nonmetals,#baa2a6 +N,2,15.0,1,"{'trans': ['1s', '2s'], 'be': [409.9, 37.3], 'rsf': [1.8, 0.0867]}","{'trans': ['KLL'], 'ke': [379], 'rsf': [0.159]}",7,#8f8fff,#3050f8,Nonmetals,#baa2a6 +O,2,16.0,1,"{'trans': ['1s', '2s'], 'be': [543.1, 41.6], 'rsf': [2.93, 0.1405]}","{'trans': ['KLL'], 'ke': [503], 'rsf': [0.129]}",8,#f00000,#ff0d0d,Nonmetals,#baa2a6 +F,2,17.0,6,"{'trans': ['1s'], 'be': [696.7], 'rsf': [4.43]}","{'trans': ['KLL'], 'ke': [647], 'rsf': [0.105]}",9,#daa520,#90e050,Halogens,#fdbf6f +Ne,2,18.0,2,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [870.2, 48.5, 21.7, 21.6], 'rsf': [6.3, 0.296, 0.0347, 0.0683]}","{'trans': ['KLL'], 'ke': [805], 'rsf': [0.0846]}",10,#ff1493,#b3e3f5,Noble gases,#bbbb88 +Na,3,1.0,3,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1070.8, 63.5, 30.65, 30.81], 'rsf': [8.52, 0.422, 0.0654, 0.1287]}","{'trans': ['KLL'], 'ke': [990], 'rsf': [0.0714]}",11,#0000ff,#ab5cf2,Alkali metals,#a6cee3 +Mg,3,2.0,4,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1303, 88.7, 49.78, 49.5], 'rsf': [11.18, 0.575, 0.1125, 0.221]}","{'trans': ['KLL', 'LMM'], 'ke': [1186, 45], 'rsf': [0.0593, 3.43]}",12,#228b22,#8aff00,Alkaline earth metals,#1f78b4 +Al,3,13.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1559.6, 117.8, 72.95, 72.55], 'rsf': [0.0001, 0.753, 0.1811, 0.356]}","{'trans': ['KLL', 'LMM'], 'ke': [1396, 68], 'rsf': [0.0497, 2.44]}",13,#808090,#bfa6a6,Poor metals,#b2df8a +Si,3,14.0,5,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [1839, 149.7, 99.82, 99.42], 'rsf': [0.0001, 0.955, 0.276, 0.541]}","{'trans': ['KLL', 'LMM'], 'ke': [1619, 92], 'rsf': [0.0417, 1.78]}",14,#daa520,#f0c8a0,Metalloids,#33a02c +P,3,15.0,1,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [2145.5, 189, 136, 135], 'rsf': [0.0001, 1.18, 0.403, 0.789]}","{'trans': ['KLL', 'LMM'], 'ke': [1859, 120], 'rsf': [0.035, 1.36]}",15,#ffa500,#ff8000,Nonmetals,#baa2a6 +S,3,16.0,1,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [2472, 230.9, 163.6, 162.5], 'rsf': [0.0001, 1.43, 0.567, 1.11]}","{'trans': ['KLL', 'LMM'], 'ke': [2117, 152], 'rsf': [0.0295, 1.14]}",16,#ffc832,#ffff30,Nonmetals,#baa2a6 +Cl,3,17.0,6,"{'trans': ['1s', '2s', '2p1/2', '2p3/2'], 'be': [2822.4, 270, 202, 200], 'rsf': [0.0001, 1.69, 0.775, 1.51]}","{'trans': ['KLL', 'LMM'], 'ke': [2378, 181], 'rsf': [0.0001, 0.984]}",17,#00ff00,#1ff01f,Halogens,#fdbf6f +Ar,3,18.0,2,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [3205.9, 326.3, 250.6, 248.4, 29.3, 15.9, 15.7], 'rsf': [0.0001, 1.97, 1.03, 2.01, 0.227, 0.0821, 0.1597]}","{'trans': ['LMM'], 'ke': [215], 'rsf': [0.827]}",18,#ff1493,#80d1e3,Noble gases,#bbbb88 +K,4,1.0,3,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [3608.4, 378.6, 297.3, 294.6, 34.8, 18.3, 18.3], 'rsf': [0.0001, 2.27, 1.35, 2.62, 0.286, 0.1229, 0.239]}","{'trans': ['LMM'], 'ke': [252], 'rsf': [0.723]}",19,#ff1493,#8f40d4,Alkali metals,#a6cee3 +Ca,4,2.0,4,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [4038.5, 438.4, 349.7, 346.2, 44.3, 25.4, 25.4], 'rsf': [0.0001, 2.59, 1.72, 3.35, 0.351, 0.172, 0.335]}","{'trans': ['LMM', 'MNN'], 'ke': [291, 20], 'rsf': [0.633, 0.0001]}",20,#808090,#3dff00,Alkaline earth metals,#1f78b4 +Sc,4,3.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [4492, 498, 403.6, 398.7, 51.1, 28.3, 28.3], 'rsf': [0.0001, 2.91, 2.17, 4.21, 0.411, 0.221, 0.429]}","{'trans': ['LMM', 'MNN'], 'ke': [340, 24], 'rsf': [0.563, 0.0001]}",21,#ff1493,#e6e6e6,Transition metals,#e08e79 +Ti,4,4.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [4966, 560.9, 460.2, 453.8, 58.7, 32.6, 32.6], 'rsf': [0.0001, 3.24, 2.69, 5.22, 0.473, 0.276, 0.537]}","{'trans': ['LMM', 'MNN'], 'ke': [418, 27], 'rsf': [0.514, 0.0001]}",22,#808090,#bfc2c7,Transition metals,#e08e79 +V,4,5.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [5465, 626.7, 519.8, 512.1, 66.3, 37.2, 37.2], 'rsf': [0.0001, 3.57, 3.29, 6.37, 0.538, 0.339, 0.657]}","{'trans': ['LMM', 'MNN'], 'ke': [473, 31], 'rsf': [0.471, 5.03]}",23,#ff1493,#a6a6ab,Transition metals,#e08e79 +Cr,4,6.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [5989, 696, 583.8, 574.1, 74.1, 42.2, 42.2], 'rsf': [0.0001, 3.91, 3.98, 7.69, 0.596, 0.4, 0.773]}","{'trans': ['LMM', 'MNN'], 'ke': [529, 36], 'rsf': [0.432, 4.6]}",24,#808090,#8a99c7,Transition metals,#e08e79 +Mn,4,7.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [6539, 769.1, 649.9, 638.7, 82.3, 47.2, 47.2], 'rsf': [0.0001, 4.23, 4.74, 9.17, 0.674, 0.485, 0.938]}","{'trans': ['LMM', 'MNN'], 'ke': [589, 40], 'rsf': [0.397, 3.96]}",25,#808090,#9c7ac7,Transition metals,#e08e79 +Fe,4,8.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [7112, 844.6, 719.9, 706.8, 91.3, 52.7, 52.7], 'rsf': [0.0001, 4.57, 5.6, 10.82, 0.745, 0.569, 1.1]}","{'trans': ['LMM', 'MNN'], 'ke': [703, 47], 'rsf': [0.367, 3.5]}",26,#ffa500,#e06633,Transition metals,#e08e79 +Co,4,9.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [7709, 925.1, 793.2, 778.1, 101, 58.9, 59.9], 'rsf': [0.0001, 4.88, 6.54, 12.62, 0.818, 0.66, 1.27]}","{'trans': ['LMM', 'MNN'], 'ke': [775, 53], 'rsf': [0.341, 3.12]}",27,#ff1493,#f090a0,Transition metals,#e08e79 +Ni,4,10.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [8333, 1008.6, 870, 852.7, 110.8, 68, 66.2], 'rsf': [0.0001, 5.16, 7.57, 14.61, 0.892, 0.757, 1.46]}","{'trans': ['LMM', 'MNN'], 'ke': [848, 61], 'rsf': [0.316, 2.65]}",28,#a52a2a,#50d050,Transition metals,#e08e79 +Cu,4,11.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2'], 'be': [8979, 1096.7, 952.3, 932.7, 122.5, 77.3, 75.1], 'rsf': [0.0001, 5.46, 8.66, 16.73, 0.957, 0.848, 1.63]}","{'trans': ['LMM', 'MNN'], 'ke': [920, 60], 'rsf': [0.294, 2.41]}",29,#a52a2a,#c88033,Transition metals,#e08e79 +Zn,4,12.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [9659, 1196.2, 1044.9, 1021.8, 139.8, 91.4, 88.6, 10.2, 10.1], 'rsf': [0.0001, 5.76, 9.8, 18.92, 1.04, 0.968, 1.86, 0.33, 0.48]}","{'trans': ['LMM', 'MNN'], 'ke': [994, 59], 'rsf': [0.271, 1.98]}",30,#a52a2a,#7d80b0,Transition metals,#e08e79 +Ga,4,13.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [10367, 1299, 1143.2, 1116.4, 159.5, 103.5, 100, 18.7, 18.7], 'rsf': [0.0001, 6.07, 11.09, 21.4, 1.13, 1.1, 2.11, 0.442, 0.643]}","{'trans': ['LMM', 'MNN'], 'ke': [1070, 55], 'rsf': [0.25, 1.57]}",31,#ff1493,#c28f8f,Poor metals,#b2df8a +Ge,4,14.0,5,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [11103, 1414.6, 1248.1, 1217, 180.1, 124.9, 120.8, 29.8, 29.2], 'rsf': [0.0001, 6.31, 12.52, 24.15, 1.23, 1.24, 2.39, 0.578, 0.842]}","{'trans': ['LMM', 'MNN'], 'ke': [1147, 23], 'rsf': [0.229, 1.27]}",32,#ff1493,#668f8f,Metalloids,#33a02c +As,4,15.0,5,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [11867, 1527, 1359.1, 1323.6, 204.7, 146.2, 141.2, 41.7, 41.7], 'rsf': [0.0001, 0.0001, 14.07, 27.19, 1.32, 1.39, 2.68, 0.741, 1.08]}","{'trans': ['LMM', 'MNN'], 'ke': [1228, 31], 'rsf': [0.211, 1.06]}",33,#ff1493,#bd80e3,Metalloids,#33a02c +Se,4,16.0,1,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [12658, 1652, 1474.3, 1433.9, 229.6, 166.5, 160.7, 55.5, 54.6], 'rsf': [0.0001, 0.0001, 13.66, 25.9, 1.43, 1.55, 2.98, 0.934, 1.36]}","{'trans': ['LMM', 'MNN'], 'ke': [1315, 43], 'rsf': [0.194, 5.44]}",34,#ff1493,#ffa100,Nonmetals,#baa2a6 +Br,4,17.0,6,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2'], 'be': [13474, 1782, 1596, 1550, 257, 189, 182, 70, 69], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 1.53, 1.72, 3.31, 1.16, 1.68]}","{'trans': ['LMM', 'MNN'], 'ke': [1396, 55], 'rsf': [0.179, 4.37]}",35,#a52a2a,#a62929,Halogens,#fdbf6f +Kr,4,18.0,2,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [14326, 1921, 1730.9, 1678.4, 292.8, 222.2, 214.4, 95, 93.8, 27.5, 14.1, 14.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 1.64, 1.89, 3.65, 1.42, 2.06, 0.213, 0.1643, 0.312]}","{'trans': ['LMM'], 'ke': [1474], 'rsf': [0.164]}",36,#ff1493,#5cb8d1,Noble gases,#bbbb88 +Rb,5,1.0,3,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [15200, 2065, 1864, 1804, 326.7, 248.7, 239.1, 113, 112, 30.5, 16.3, 15.3], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 1.75, 2.07, 4, 1.72, 2.49, 0.251, 0.214, 0.411]}","{'trans': ['LMM', 'MNN'], 'ke': [1565, 76], 'rsf': [0.152, 2.63]}",37,#ff1493,#702eb0,Alkali metals,#a6cee3 +Sr,5,2.0,4,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [16105, 2216, 2007, 1940, 358.7, 280.3, 270, 136, 134.2, 38.9, 21.3, 20.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 1.86, 2.25, 4.37, 2.06, 2.99, 0.291, 0.265, 0.51]}","{'trans': ['LMM', 'MNN'], 'ke': [1649, 110], 'rsf': [0.14, 2.17]}",38,#ff1493,#00ff00,Alkaline earth metals,#1f78b4 +Y,5,3.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [17038, 2373, 2156, 2080, 392, 310.6, 298.8, 157.7, 155.8, 43.8, 24.4, 23.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 1.98, 2.44, 4.75, 2.44, 3.54, 0.329, 0.311, 0.599]}","{'trans': ['LMM', 'MNN'], 'ke': [1746, 127], 'rsf': [0.129, 1.86]}",39,#ff1493,#94ffff,Transition metals,#e08e79 +Zr,5,4.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [17998, 2532, 2307, 2223, 430.3, 343.5, 329.8, 181.1, 178.8, 50.6, 28.5, 27.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.1, 2.64, 5.14, 2.87, 4.17, 0.367, 0.357, 0.689]}","{'trans': ['LMM', 'MNN'], 'ke': [1845, 147], 'rsf': [0.119, 1.66]}",40,#ff1493,#94e0e0,Transition metals,#e08e79 +Nb,5,5.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [18986, 2698, 2465, 2371, 466.6, 376.1, 360.6, 205, 202.3, 56.4, 32.6, 30.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.22, 2.84, 5.53, 3.35, 4.86, 0.402, 0.398, 0.767]}","{'trans': ['LMM', 'MNN'], 'ke': [1944, 167], 'rsf': [0.11, 1.5]}",41,#ff1493,#73c2c9,Transition metals,#e08e79 +Mo,5,6.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [20000, 2866, 2625, 2520, 506.3, 411.6, 394, 231.1, 227.9, 63.2, 37.6, 35.5], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.34, 3.04, 5.94, 3.88, 5.62, 0.44, 0.445, 0.86]}","{'trans': ['LMM', 'MNN'], 'ke': [2044, 186], 'rsf': [0.101, 1.39]}",42,#ff1493,#54b5b5,Transition metals,#e08e79 +Tc,5,7.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [21044, 3043, 2793, 2677, 544, 447.6, 417.7, 257.6, 253.9, 69.5, 42.3, 39.9], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.45, 3.23, 6.36, 4.46, 6.47, 0.479, 0.494, 0.955]}","{'trans': ['MNN'], 'ke': [249], 'rsf': [1.29]}",43,#ff1493,#3b9e9e,Transition metals,#e08e79 +Ru,5,8.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [22117, 3224, 2967, 2838, 586.1, 483.5, 461.4, 284.2, 280, 75, 46.3, 43.2], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.57, 3.44, 6.78, 5.1, 7.39, 0.519, 0.544, 1.05]}","{'trans': ['MNN'], 'ke': [273], 'rsf': [1.2]}",44,#ff1493,#248f8f,Transition metals,#e08e79 +Rh,5,9.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [23220, 3412, 3146, 3004, 628.1, 521.3, 496.5, 311.9, 307.2, 81.4, 50.5, 47.3], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.7, 3.64, 7.21, 5.8, 8.39, 0.56, 0.595, 1.15]}","{'trans': ['MNN'], 'ke': [302], 'rsf': [1.13]}",45,#ff1493,#0a7d8c,Transition metals,#e08e79 +Pd,5,10.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [24350, 3604, 3330, 3173, 671.6, 559.9, 532.3, 340.5, 335.2, 87.1, 55.7, 50.9], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.81, 3.83, 7.63, 6.56, 9.48, 0.598, 0.641, 1.24]}","{'trans': ['MNN'], 'ke': [330], 'rsf': [1.07]}",46,#ff1493,#006985,Transition metals,#e08e79 +Ag,5,11.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2'], 'be': [25514, 3806, 3524, 3351, 719, 603.8, 573, 374, 368.3, 97, 63.7, 58.3], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 2.93, 4.03, 8.06, 7.38, 10.66, 0.644, 0.7, 1.36]}","{'trans': ['MNN'], 'ke': [351], 'rsf': [1]}",47,#808090,#c0c0c0,Transition metals,#e08e79 +Cd,5,12.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [26711, 4018, 3727, 3538, 772, 652.6, 618.4, 411.9, 405.2, 109.8, 63.9, 63.9, 11.7, 10.7], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.04, 4.22, 8.5, 8.27, 11.95, 0.692, 0.762, 1.49, 0.778, 1.11]}","{'trans': ['MNN'], 'ke': [376], 'rsf': [0.931]}",48,#ff1493,#ffd98f,Transition metals,#e08e79 +In,5,13.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [27940, 4238, 3938, 3730, 827.2, 703.2, 665.3, 451.4, 443.9, 122.9, 73.5, 73.5, 17.7, 16.9], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.16, 4.4, 8.93, 9.22, 13.32, 0.742, 0.828, 1.62, 0.935, 1.34]}","{'trans': ['MNN'], 'ke': [404], 'rsf': [0.867]}",49,#ff1493,#a67573,Poor metals,#b2df8a +Sn,5,14.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [29200, 4465, 4156, 3929, 884.7, 756.5, 714.6, 493.2, 484.9, 137.1, 83.6, 83.6, 24.9, 23.9], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.26, 4.58, 9.35, 10.25, 14.8, 0.794, 0.897, 1.77, 1.11, 1.59]}","{'trans': ['MNN'], 'ke': [430], 'rsf': [0.809]}",50,#ff1493,#668080,Poor metals,#b2df8a +Sb,5,15.0,5,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [30491, 4698, 4380, 4132, 946, 812.7, 766.4, 537.5, 528.2, 153.2, 95.6, 95.6, 33.3, 32.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.36, 4.76, 9.77, 11.35, 16.39, 0.848, 0.968, 1.91, 1.29, 1.85]}","{'trans': ['MNN'], 'ke': [454], 'rsf': [0.759]}",51,#ff1493,#9e63b5,Metalloids,#33a02c +Te,5,16.0,5,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [31814, 4939, 4612, 4341, 1006, 870.8, 820, 583.4, 573, 169.4, 103.3, 103.3, 41.9, 40.4], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.46, 4.92, 10.21, 12.52, 18.06, 0.903, 1.04, 2.07, 1.49, 2.14]}","{'trans': ['MNN', 'NOO'], 'ke': [483, 31], 'rsf': [0.713, 0.0001]}",52,#ff1493,#d47a00,Metalloids,#33a02c +I,5,17.0,6,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [33169, 5188, 4852, 4557, 1072, 931, 875, 630.8, 619.3, 186, 123, 123, 50.6, 48.9], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.53, 5.06, 10.62, 13.77, 19.87, 0.959, 1.11, 2.23, 1.69, 2.44]}","{'trans': ['MNN', 'NOO'], 'ke': [511, 37], 'rsf': [0.67, 0.0001]}",53,#a020f0,#940094,Halogens,#fdbf6f +Xe,5,18.0,2,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [34561, 5453, 5107, 4786, 1148.7, 1002.1, 940.6, 689, 676.4, 213.2, 146.7, 145.5, 69.5, 67.5, 23.3, 13.4, 12.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.62, 5.2, 10.99, 15.1, 21.79, 1.02, 1.19, 2.39, 1.92, 2.76, 0.1596, 0.1361, 0.26]}","{'trans': ['MNN', 'NOO'], 'ke': [532, 41], 'rsf': [0.626, 0.0001]}",54,#ff1493,#429eb0,Noble gases,#bbbb88 +Cs,6,1.0,3,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [35985, 5714, 5359, 5012, 1211, 1071, 1003, 740.5, 726.6, 232.3, 172.4, 161.3, 79.8, 77.5, 22.7, 14.2, 12.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.73, 5.29, 11.38, 16.46, 23.76, 1.08, 1.27, 2.56, 2.15, 3.1, 0.1843, 0.1697, 0.332]}","{'trans': ['MNN', 'NOO'], 'ke': [563, 47], 'rsf': [0.589, 0.0001]}",55,#ff1493,#57178f,Alkali metals,#a6cee3 +Ba,6,2.0,4,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [37441, 5989, 5624, 5247, 1293, 1137, 1063, 795.7, 780.5, 253.5, 192, 178.6, 92.6, 89.9, 30.3, 17, 14.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.84, 5.42, 11.71, 17.92, 25.84, 1.13, 1.34, 2.73, 2.4, 3.46, 0.21, 0.202, 0.4]}","{'trans': ['MNN', 'NOO'], 'ke': [584, 57], 'rsf': [0.554, 3.41]}",56,#ffa500,#00c900,Alkaline earth metals,#1f78b4 +La,6,3.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [38925, 6266, 5891, 5483, 1362, 1209, 1128, 853, 836, 274.7, 205.8, 196, 105.3, 102.5, 34.3, 19.3, 16.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.89, 5.55, 12.11, 19.5, 28.12, 1.19, 1.42, 2.91, 2.67, 3.85, 0.234, 0.23, 0.458]}","{'trans': ['MNN', 'NOO'], 'ke': [625, 78], 'rsf': [0.527, 3.12]}",57,#ff1493,#70d4ff,Lanthanides,#cab2d6 +Ce,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [40443, 6549, 6164, 5723, 1436, 1274, 1187, 902.4, 883.8, 291, 223.2, 206.5, 109, 0.1, 0.1, 37.8, 19.8, 17], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.93, 5.66, 12.53, 21.12, 30.5, 1.24, 1.47, 3.03, 2.84, 0.0609, 0.078, 0.23, 0.221, 0.439]}","{'trans': ['MNN', 'NOO'], 'ke': [661, 82], 'rsf': [0.503, 2.79]}",58,#ff1493,#ffffc7,Lanthanides,#cab2d6 +Pr,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [41991, 6835, 6440, 5964, 1511, 1337, 1242, 948.3, 928.8, 304.5, 236.3, 217.6, 115.1, 115.1, 2, 2, 37.4, 22.3, 22.3], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 3.98, 5.75, 12.94, 22.72, 32.85, 1.28, 1.53, 3.17, 3.07, 4.41, 0.1115, 0.143, 0.238, 0.229, 0.456]}","{'trans': ['MNN', 'NOO'], 'ke': [699, 87], 'rsf': [0.485, 2.72]}",59,#ff1493,#d9ffc7,Lanthanides,#cab2d6 +Nd,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [43569, 7126, 6722, 6208, 1575, 1403, 1297, 1003.3, 980.4, 319.2, 243.3, 224.6, 120.5, 120.5, 1.5, 1.5, 37.5, 21.1, 21.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 5.75, 13.35, 24.27, 35.29, 1.33, 1.59, 3.31, 3.29, 4.74, 0.1788, 0.228, 0.247, 0.236, 0.472]}","{'trans': ['MNN', 'NOO'], 'ke': [730, 91], 'rsf': [0.469, 2.65]}",60,#ff1493,#c7ffc7,Lanthanides,#cab2d6 +Pm,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4p1/2', '4p3/2', '4d3/2', '4d5/2'], 'be': [45184, 7428, 7013, 6459, 1471, 1357, 1052, 1027, 242, 242, 120, 120], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 5.72, 13.66, 26.08, 37.65, 1.64, 3.45, 3.52, 5.07]}","{'trans': [], 'ke': [], 'rsf': []}",61,#ff1493,#a3ffc7,Lanthanides,#cab2d6 +Sm,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [46834, 7737, 7312, 6716, 1723, 1541, 1420, 1110.9, 1083.4, 347.2, 265.6, 247.4, 129, 129, 5.2, 5.2, 37.4, 21.3, 21.3], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 13.84, 27.96, 40.37, 1.42, 1.7, 3.59, 3.76, 5.4, 0.374, 0.477, 0.261, 0.249, 0.501]}","{'trans': ['MNN', 'NOO'], 'ke': [814, 100], 'rsf': [0.435, 2.43]}",62,#ff1493,#8fffc7,Lanthanides,#cab2d6 +Eu,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '5s', '5p1/2', '5p3/2'], 'be': [48519, 8052, 7617, 6977, 1800, 1614, 1481, 1158.6, 1127.5, 360, 284, 257, 133, 127.7, 32, 22, 22], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 14.3, 29.91, 43.24, 1.46, 1.75, 3.72, 3.99, 5.74, 0.268, 0.255, 0.515]}","{'trans': ['MNN', 'NOO'], 'ke': [858, 109], 'rsf': [0.42, 2.37]}",63,#ff1493,#61ffc7,Lanthanides,#cab2d6 +Gd,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [50239, 8376, 7930, 7243, 1881, 1688, 1544, 1221.9, 1189.6, 378.6, 286, 271, 142.6, 8.6, 8.6, 36, 28, 21], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 31.98, 46.23, 1.51, 1.8, 3.88, 6.14, 0.63, 0.804, 0.288, 0.279, 0.568]}","{'trans': ['MNN', 'NOO'], 'ke': [895, 138], 'rsf': [0.405, 2.26]}",64,#ff1493,#45ffc7,Lanthanides,#cab2d6 +Tb,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [51996, 8708, 8252, 7514, 1968, 1768, 1611, 1276.9, 1241.1, 396, 322.4, 284.1, 150.5, 150.5, 7.7, 2.4, 45.6, 28.7, 22.6], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 34.2, 49.42, 1.54, 1.84, 3.99, 4.46, 6.41, 0.867, 1.1, 0.281, 0.265, 0.539]}","{'trans': ['MNN', 'NOO'], 'ke': [1073, 146], 'rsf': [0.39, 2.15]}",65,#ff1493,#30ffc7,Lanthanides,#cab2d6 +Dy,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [53789, 9046, 8581, 7790, 2047, 1842, 1676, 1333, 1292.6, 414.2, 333.5, 293.2, 153.6, 153.6, 8, 4.3, 49.9, 26.3, 26.3], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 36.65, 52.83, 1.58, 1.88, 4.12, 4.69, 6.74, 1.1, 1.39, 0.287, 0.27, 0.551]}","{'trans': ['MNN', 'NOO'], 'ke': [1126, 151], 'rsf': [0.377, 2.07]}",66,#ff1493,#1fffc7,Lanthanides,#cab2d6 +Ho,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [55618, 9394, 8918, 8071, 2128, 1923, 1741, 1392, 1351, 432.4, 343.5, 308.2, 160, 160, 8.6, 5.2, 49.3, 30.8, 24.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 39.19, 56.66, 1.61, 1.91, 4.24, 4.92, 7.08, 1.37, 1.73, 0.293, 0.274, 0.562]}","{'trans': ['MNN', 'NOO'], 'ke': [1175, 157], 'rsf': [0.365, 1.98]}",67,#ff1493,#00ff9c,Lanthanides,#cab2d6 +Er,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [57486, 9751, 9264, 8358, 2207, 2006, 1812, 1453, 1409, 449.8, 366.2, 320.2, 167.6, 167.6, 4.7, 50.6, 31.4, 24.7], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 36.7, 60.42, 1.64, 1.95, 4.37, 5.15, 7.41, 2.13, 0.298, 0.277, 0.572]}","{'trans': ['MNN', 'NOO'], 'ke': [1393, 163], 'rsf': [0.352, 1.87]}",68,#ff1493,#00e675,Lanthanides,#cab2d6 +Tm,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [59390, 10116, 9617, 8648, 2307, 2090, 1885, 1515, 1468, 470.9, 385.9, 332.6, 175.5, 175.5, 4.6, 54.7, 31.8, 25], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 41.01, 1.67, 1.98, 4.48, 5.38, 7.74, 2.59, 0.303, 0.281, 0.583]}","{'trans': ['MNN', 'NOO'], 'ke': [1449, 166], 'rsf': [0.34, 1.78]}",69,#ff1493,#00d452,Lanthanides,#cab2d6 +Yb,6,100.0,9,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [61332, 10486, 9978, 8944, 2398, 2173, 1950, 1576, 1528, 480.5, 388.7, 339.7, 191.2, 182.4, 2.5, 1.3, 52, 30.3, 24.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.7, 2, 4.6, 5.61, 8.07, 2.47, 3.11, 0.308, 0.284, 0.592]}","{'trans': ['MNN', 'NOO'], 'ke': [1514, 170], 'rsf': [0.329, 1.69]}",70,#ff1493,#00bf38,Lanthanides,#cab2d6 +Lu,6,100.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [63314, 10870, 10349, 9244, 2491, 2264, 2024, 1639, 1589, 506.8, 412.4, 359.2, 206.1, 196.3, 8.9, 7.5, 57.3, 33.6, 26.7], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.73, 2.03, 4.74, 5.87, 8.45, 2.87, 3.63, 0.326, 0.304, 0.645]}","{'trans': ['MNN', 'NOO'], 'ke': [1573, 177], 'rsf': [0.317, 1.61]}",71,#ff1493,#00ab24,Transition metals,#e08e79 +Hf,6,4.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [65351, 11271, 10739, 9561, 2601, 2365, 2108, 1716, 1662, 538, 438.2, 380.7, 220, 211.5, 15.9, 14.2, 64.2, 38, 29.9], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.76, 2.06, 4.88, 6.13, 8.84, 3.32, 4.2, 0.344, 0.325, 0.699]}","{'trans': ['MNN', 'NOO'], 'ke': [1624, 185], 'rsf': [0.303, 1.47]}",72,#ff1493,#4dc2ff,Transition metals,#e08e79 +Ta,6,5.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [67416, 11682, 11136, 9881, 2708, 2469, 2194, 1793, 1735, 563.4, 463.4, 400.9, 237.9, 226.4, 23.5, 21.6, 69.7, 42.2, 32.7], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.79, 2.08, 5.02, 6.4, 9.24, 3.8, 4.82, 0.363, 0.346, 0.754]}","{'trans': ['MNN', 'NOO'], 'ke': [1680, 179], 'rsf': [0.29, 1.35]}",73,#ff1493,#4da6ff,Transition metals,#e08e79 +W,6,6.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [69525, 12100, 11544, 10207, 2820, 2575, 2281, 1872, 1809, 594.1, 490.4, 423.6, 255.9, 243.5, 33.6, 31.4, 75.6, 45.3, 36.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.81, 2.1, 5.16, 6.68, 9.65, 4.32, 5.48, 0.383, 0.367, 0.811]}","{'trans': ['MNN', 'NOO'], 'ke': [1736, 179], 'rsf': [0.278, 1.25]}",74,#ff1493,#2194d6,Transition metals,#e08e79 +Re,6,7.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [71676, 12527, 11959, 10535, 2932, 2682, 2367, 1949, 1883, 625.4, 518.7, 446.8, 273.9, 260.5, 42.9, 40.5, 83, 45.6, 34.6], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.84, 2.12, 5.3, 6.95, 10.06, 4.88, 6.2, 0.402, 0.387, 0.869]}","{'trans': ['MNN', 'NOO'], 'ke': [1799, 176], 'rsf': [0.267, 1.17]}",75,#ff1493,#267dab,Transition metals,#e08e79 +Os,6,8.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [73871, 12968, 12385, 10871, 3049, 2792, 2457, 2031, 1960, 658.2, 549.1, 470.7, 293.1, 278.5, 53.4, 50.7, 84, 58, 44.5], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.86, 2.13, 5.45, 7.23, 10.48, 5.48, 6.96, 0.422, 0.408, 0.928]}","{'trans': ['MNN', 'NOO'], 'ke': [1850, 170], 'rsf': [0.255, 1.11]}",76,#ff1493,#266696,Transition metals,#e08e79 +Ir,6,9.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [76111, 13419, 12824, 11215, 3174, 2909, 2551, 2116, 2040, 691.1, 577.8, 495.8, 311.9, 296.3, 63.8, 60.8, 95.2, 63, 48], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.88, 2.14, 5.59, 7.51, 10.9, 6.12, 7.78, 0.438, 0.422, 0.967]}","{'trans': ['MNN', 'NOO'], 'ke': [1908, 171], 'rsf': [0.244, 1.01]}",77,#ff1493,#175487,Transition metals,#e08e79 +Pt,6,10.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [78395, 13880, 13273, 11564, 3296, 3027, 2645, 2202, 2122, 725.4, 609.1, 519.4, 331.6, 314.6, 74.5, 71.2, 101.7, 65.3, 51.7], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.9, 2.14, 5.74, 7.78, 11.32, 6.81, 8.65, 0.459, 0.444, 1.04]}","{'trans': ['MNN', 'NOO'], 'ke': [1967, 168], 'rsf': [0.234, 5.48]}",78,#ff1493,#d0d0e0,Transition metals,#e08e79 +Au,6,11.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2'], 'be': [80725, 14353, 13734, 11919, 3425, 3148, 2743, 2291, 2206, 762.1, 642.7, 546.3, 353.2, 335.1, 87.6, 84, 107.2, 74.2, 57.2], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.92, 2.14, 5.89, 8.06, 11.74, 7.54, 9.58, 0.479, 0.463, 1.1]}","{'trans': ['MNN', 'NOO'], 'ke': [2024, 239], 'rsf': [0.223, 4.6]}",79,#daa520,#ffd123,Transition metals,#e08e79 +Hg,6,12.0,8,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [83102, 14839, 14209, 12284, 3562, 3279, 2847, 2385, 2295, 802.2, 680.2, 576.6, 378.2, 358.8, 104, 99.9, 127, 83.1, 64.5, 9.6, 7.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.94, 2.14, 6.04, 8.33, 12.17, 8.32, 10.57, 0.5, 0.484, 1.17, 0.869, 1.21]}","{'trans': ['MNN', 'NOO'], 'ke': [2078, 241], 'rsf': [0.213, 3.78]}",80,#ff1493,#b8b8d0,Transition metals,#e08e79 +Tl,6,13.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [85530, 15347, 14698, 12658, 3704, 3416, 2957, 2485, 2389, 846.2, 720.5, 609.5, 405.7, 385, 122.2, 117.8, 136, 94.6, 73.5, 14.7, 12.5], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 2.13, 6.19, 8.6, 12.6, 9.14, 11.62, 0.52, 0.505, 1.25, 0.991, 1.39]}","{'trans': ['MNN', 'NOO'], 'ke': [2134, 244], 'rsf': [0.202, 3.06]}",81,#ff1493,#a6544d,Poor metals,#b2df8a +Pb,6,14.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [88005, 15861, 15200, 13035, 3851, 3554, 3066, 2586, 2484, 891.8, 761.9, 643.5, 434.3, 412.2, 141.7, 136.9, 147, 106.4, 83.3, 20.7, 18.1], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.12, 6.33, 8.87, 13.02, 10.01, 12.73, 0.542, 0.526, 1.33, 1.11, 1.58]}","{'trans': ['MNN', 'NOO'], 'ke': [2186, 249], 'rsf': [0.192, 2.58]}",82,#ff1493,#575961,Poor metals,#b2df8a +Bi,6,15.0,7,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [90524, 16388, 15711, 13419, 3999, 3696, 3177, 2688, 2580, 939, 805.2, 678.8, 464, 440.1, 162.3, 157, 159.3, 119, 92.6, 26.9, 23.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.1, 6.48, 9.14, 13.44, 10.93, 13.9, 0.563, 0.546, 1.41, 1.24, 1.76]}","{'trans': ['MNN'], 'ke': [2243], 'rsf': [0.183]}",83,#ff1493,#9e4fb5,Poor metals,#b2df8a +Po,6,16.0,5,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [93105, 16939, 16244, 13814, 4149, 3854, 3302, 2798, 2683, 995, 851, 705, 500, 473, 184, 184, 177, 132, 104, 31, 31], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.97, 2.07, 6.62, 9.4, 13.87, 11.9, 15.14, 0.584, 0.566, 1.5, 1.36, 1.95]}","{'trans': [], 'ke': [], 'rsf': []}",84,#ff1493,#ab5c00,Metalloids,#33a02c +At,6,17.0,6,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [95730, 17493, 16785, 14214, 4317, 4008, 3426, 2909, 2787, 1042, 886, 740, 533, 507, 210, 210, 195, 148, 115, 40, 40], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.96, 2.04, 6.77, 9.65, 14.29, 12.92, 16.44, 0.605, 0.584, 1.58, 1.49, 2.14]}","{'trans': [], 'ke': [], 'rsf': []}",85,#ff1493,#754f45,Halogens,#fdbf6f +Rn,6,18.0,2,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s'], 'be': [98404, 18049, 17337, 14619, 4482, 4159, 3538, 3022, 2892, 1097, 929, 768, 567, 541, 238, 238, 214, 164, 127, 48, 48, 26], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 2, 6.92, 9.9, 14.7, 14, 17.81, 0.625, 0.602, 1.67, 1.62, 2.33, 0.1129]}","{'trans': [], 'ke': [], 'rsf': []}",86,#ffffff,#428296,Noble gases,#bbbb88 +Fr,7,1.0,3,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [101137, 18639, 17907, 15031, 4652, 4327, 3663, 3136, 3000, 1153, 980, 810, 603, 577, 268, 268, 234, 182, 140, 58, 58, 34, 15, 15], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.97, 7.07, 10.16, 15.11, 15.12, 19.24, 0.645, 0.618, 1.77, 1.75, 2.53, 0.1257, 0.0966, 0.24]}","{'trans': [], 'ke': [], 'rsf': []}",87,#ffffff,#420066,Alkali metals,#a6cee3 +Ra,7,2.0,4,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [103922, 19237, 18484, 15444, 4822, 4490, 3792, 3248, 3105, 1208, 1058, 879, 636, 603, 299, 299, 254, 200, 153, 68, 68, 44, 19, 19], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.91, 7.2, 10.4, 15.53, 16.3, 20.74, 0.665, 0.633, 1.86, 1.88, 2.73, 0.1383, 0.1099, 0.286]}","{'trans': [], 'ke': [], 'rsf': []}",88,#ffffff,#007d00,Alkaline earth metals,#1f78b4 +Ac,7,3.0,10,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [106755, 19840, 19083, 15871, 5002, 4656, 3909, 3370, 3219, 1269, 1080, 890, 675, 639, 319, 319, 272, 215, 167, 80, 80], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.86, 7.33, 10.61, 15.93, 17.53, 22.3, 0.684, 0.647, 1.95, 2.02, 2.94]}","{'trans': [], 'ke': [], 'rsf': []}",89,#ffffff,#70abfa,Actinides,#6a3d9a +Th,7,100.0,10,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [109651, 20472, 19693, 16300, 5182, 4830, 4046, 3491, 3332, 1330, 1168, 966.4, 712.1, 675.2, 342.4, 333.1, 290, 229, 182, 92.5, 85.4, 41.4, 24.5, 16.6], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.95, 1.9, 7.46, 10.82, 16.31, 18.81, 23.94, 0.702, 0.66, 2.05, 2.15, 3.15, 0.1625, 0.1325, 0.366]}","{'trans': [], 'ke': [], 'rsf': []}",90,#ff1493,#00baff,Actinides,#6a3d9a +Pa,7,100.0,10,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2'], 'be': [112601, 21105, 20314, 16733, 5367, 5001, 4174, 3611, 3442, 1387, 1224, 1007, 743, 708, 371, 360, 310, 232, 232, 94, 94], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.92, 1.74, 7.61, 11.04, 16.47, 20.12, 25.6, 0.718, 0.667, 2.13, 2.25, 3.29]}","{'trans': [], 'ke': [], 'rsf': []}",91,#ffffff,#00a1ff,Actinides,#6a3d9a +U,7,100.0,10,"{'trans': ['1s', '2s', '2p1/2', '2p3/2', '3s', '3p1/2', '3p3/2', '3d3/2', '3d5/2', '4s', '4p1/2', '4p3/2', '4d3/2', '4d5/2', '4f5/2', '4f7/2', '5s', '5p1/2', '5p3/2', '5d3/2', '5d5/2', '6s', '6p1/2', '6p3/2'], 'be': [115606, 21757, 20948, 17166, 5548, 5182, 4303, 3728, 3552, 1439, 1271, 1043, 778.3, 736.2, 388.2, 377.4, 321, 257, 192, 102.8, 94.2, 43.9, 26.8, 16.8], 'rsf': [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1.9, 1.68, 7.71, 11.25, 17.05, 21.5, 27.36, 0.732, 0.674, 2.22, 2.36, 3.46, 0.1682, 0.133, 0.376]}","{'trans': [], 'ke': [], 'rsf': []}",92,#ff1493,#008fff,Actinides,#6a3d9a diff --git a/Python/elements.py b/Python/elements.py deleted file mode 100644 index 6e30739..0000000 --- a/Python/elements.py +++ /dev/null @@ -1,6 +0,0 @@ -class Transition: - def __init__(self, symbol, alka, aes): - self.symbol = symbol - self.alka = alka - self.aes = aes - diff --git a/Python/generate_elems_csv.py b/Python/generate_elems_csv.py new file mode 100644 index 0000000..f83be5f --- /dev/null +++ b/Python/generate_elems_csv.py @@ -0,0 +1,45 @@ +import os +import pandas as pd +from mendeleev.fetch import fetch_table + + +def generate_elements_csv(xps): + """ + Generate a CSV file of element properties based on a pandas dataframe containing XPS data. + + Parameters: + xps (pandas.DataFrame): A pandas dataframe containing XPS data for each element. The dataframe should have + columns 'symbol', 'alka.trans', 'alka.be', 'alka.rsf', 'aes.trans', 'aes.ke', + and 'aes.rsf'. + + Returns: + None: This function generates a CSV file of element properties, but does not return anything. + + Raises: + IndexError: If the symbol for an element in the XPS data is not found in the Mendeleev table. + + """ + mendeleev_pt = fetch_table('elements') + mendeleev_series = fetch_table('series') + + df = pd.DataFrame(columns=['symbol', 'period', 'group_id', 'series_id', 'alka', 'aes', 'atomic_number', 'cpk_color', 'jmol_color', 'series_name', 'series_color']) + + for _, elem in xps.iterrows(): + index = mendeleev_pt.index[mendeleev_pt['symbol'] == elem.symbol].tolist()[0] + mendeleev_pt_copy = mendeleev_pt.copy() + mendeleev_pt_copy.loc[mendeleev_pt_copy['group_id'].isna(), 'group_id'] = 100 + row = pd.Series([elem.symbol, mendeleev_pt['period'][index], mendeleev_pt_copy['group_id'][index], mendeleev_pt['series_id'][index], {'trans': elem['alka.trans'], 'be': elem['alka.be'], 'rsf': elem['alka.rsf']}, {'trans': elem['aes.trans'], 'ke': elem['aes.ke'], 'rsf': elem['aes.rsf']}, mendeleev_pt['atomic_number'][index], mendeleev_pt['cpk_color'][index], mendeleev_pt['jmol_color'][index], mendeleev_series['name'].values[mendeleev_pt['series_id'][index]-1], mendeleev_series['color'].values[mendeleev_pt['series_id'][index]-1]], index=df.columns) + df = pd.concat([df, pd.DataFrame([row])], ignore_index=True) + + # Save CSV file relative to the script location + script_dir = os.path.dirname(os.path.abspath(__file__)) + csv_path = os.path.join(script_dir, '../Databases/elements.csv') + df.to_csv(csv_path, index=False) + + +if __name__ == '__main__': + # Read CSV file relative to the script location + script_dir = os.path.dirname(os.path.abspath(__file__)) + csv_path = os.path.join(script_dir, '../Databases/xps_data.csv') + xps = pd.read_csv(csv_path) + generate_elements_csv(xps) diff --git a/Python/helpers.py b/Python/helpers.py index ca5de07..0fb4ff4 100644 --- a/Python/helpers.py +++ b/Python/helpers.py @@ -1,3 +1,5 @@ +from PyQt5.QtGui import QDoubleValidator, QValidator +from PyQt5.QtWidgets import QItemDelegate, QLineEdit from lmfit.models import ExponentialGaussianModel, SkewedGaussianModel, SkewedVoigtModel, DoniachModel, \ BreitWignerModel, LognormalModel from lmfit.models import GaussianModel, LorentzianModel, VoigtModel, PseudoVoigtModel, ThermalDistributionModel, \ @@ -93,6 +95,93 @@ def model_selector(index: int, strind: str, index_pk: int): else: raise ValueError(f"No model found for index {index}.") +class DoubleValidator(QDoubleValidator): + """Subclass of QDoubleValidator that emits a signal if the input is not valid.""" + + # Define a custom signal that will be emitted when the input is not valid. + validationChanged = QtCore.pyqtSignal(list) + + def validate(self, input_str, pos): + state, input_str, pos = super().validate(input_str, pos) + if input_str == "" and state == QValidator.Acceptable: + state = QValidator.Intermediate + validate_state = [state, input_str, pos] + self.validationChanged.emit(validate_state) + return state, input_str, pos + + +class TableItemDelegate(QItemDelegate): + """Delegate class for QTableWidget cells that validates user input. + + This class creates a line edit widget as the editor for each cell in a + QTableWidget. It adds a DoubleValidator to the line edit widget to ensure + that the user input is a valid double (floating-point) value. + + Attributes: + None + + Methods: + createEditor(parent, option, index): Creates a line edit widget as the + editor for the cell at the specified index. Returns the editor. + + """ + + def createEditor(self, parent, option, index): + """Create a line edit widget as the editor for the cell at the specified index. + + Args: + parent (QWidget): The parent widget of the editor. + option (QStyleOptionViewItem): The style options for the editor. + index (QModelIndex): The model index of the cell being edited. + + Returns: + editor (QLineEdit): The line edit widget used as the editor. + + """ + self.editor = QLineEdit(parent) + self.editor.setToolTip('Only double values are valid inputs!') + validator = DoubleValidator() + self.editor.setValidator(validator) + validator.validationChanged.connect(self.onValidationChanged) + return self.editor + + def onValidationChanged(self, validate_return): + """Display a message box when the user enters an invalid input.""" + state = validate_return[0] + if state == QValidator.Invalid: + print('Value ' + validate_return[1] + " was entered. However, only double values are valid!") + + +class DoubleLineEdit(QLineEdit): + """Custom QLineEdit widget that uses DoubleValidator to validate user input.""" + + def __init__(self, parent=None): + super().__init__(parent) + self.validator = DoubleValidator() + self.setValidator(self.validator) + self.validator.validationChanged.connect(self.onValidationChanged) + + def onValidationChanged(self, validate_return): + """Display a message box when the user enters an invalid input.""" + state = validate_return[0] + if state == QValidator.Invalid: + print('Value ' + validate_return[1] + " was entered. However, only double values are valid!") + + +class SubWindow(QtWidgets.QWidget): + def __init__(self, params_tab): + super(SubWindow, self).__init__() + self.layout = QtWidgets.QGridLayout(self) + self.resize(800, 500) + self.setWindowTitle("Limits") + self.layout.addWidget(params_tab, 0, 0, 5, 4) + + +class LayoutHline(QtWidgets.QFrame): + def __init__(self): + super(LayoutHline, self).__init__() + self.setFrameShape(self.HLine) + self.setFrameShadow(self.Sunken) class Window_CrossSection(QtWidgets.QWidget): """ @@ -159,7 +248,7 @@ def load_elements(self): """ dirPath = os.path.dirname(os.path.abspath(__file__)) temp_elements=[] - with open (dirPath+'/../CrossSections/cross_sections.csv') as f: + with open (dirPath+'/../Databases/CrossSections/cross_sections.csv') as f: next(f) lines=f.read().splitlines() for line in lines: diff --git a/Python/main.py b/Python/main.py index ccc3c21..01ce29a 100644 --- a/Python/main.py +++ b/Python/main.py @@ -3,26 +3,17 @@ import ast import math -import os import sys import pickle - +import webbrowser import matplotlib.pyplot as plt -import numpy as np import pandas as pd -from PyQt5 import QtWidgets, QtCore -from PyQt5.QtCore import QThreadPool, QRunnable, pyqtSlot, QTime, QRegExp, Qt -from PyQt5.QtGui import QRegExpValidator, QDoubleValidator, QColor, QValidator -from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QItemDelegate, QCheckBox, QLineEdit, \ - QMessageBox +from PyQt5.QtCore import QTime +from PyQt5.QtGui import QValidator +from PyQt5.QtWidgets import QItemDelegate, QLineEdit from PyQt5.QtGui import QDoubleValidator -from PyQt5.QtCore import Qt, QLocale, QRegExp, pyqtSignal - +from usrmodel import TougaardBG, ShirleyBG, SlopeBG from lmfit import Model -from lmfit.models import ExponentialGaussianModel, SkewedGaussianModel, SkewedVoigtModel, DoniachModel, \ - BreitWignerModel, LognormalModel -from lmfit.models import GaussianModel, LorentzianModel, VoigtModel, PseudoVoigtModel, ThermalDistributionModel, \ - PolynomialModel, StepModel from matplotlib import style from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar @@ -30,122 +21,33 @@ import vamas_export as vpy import xpspy as xpy from periodictable import PeriodicTable -from usrmodel import ConvGaussianDoniachDublett, ConvGaussianDoniachSinglett, FermiEdgeModel, singlett, fft_convolve from scipy import integrate -from scipy import interpolate from helpers import * import threading import traceback # error handling import logging # error handling -# style.use('ggplot') -style.use('seaborn-pastel') +# style.use('ggplot') +style.use('seaborn-v0_8-colorblind') dictBG = { - '0': 'static ShirleyBG (+Polynomial BG)', - '100': 'active ShirleyBG (+Polynomial BG)', - '1': 'static TougaardBG (+Polynomial BG)', - '101': 'active TougaardBG (+Polynomial BG)', + '0': 'static Shirley BG', + '100': 'active Shirley BG ', + '1': 'static Tougaard BG', + '101': 'active Tougaard BG', '2': 'Polynomial BG', - '3': 'arctan (+Polynomial BG)', - '4': 'Error function (+Polynomial BG)', - '5': 'CutOff (+Polynomial BG)', + '3': 'arctan', + '4': 'Error function', + '5': 'CutOff', + '6': 'Slope BG', } -class DoubleValidator(QDoubleValidator): - """Subclass of QDoubleValidator that emits a signal if the input is not valid.""" - - # Define a custom signal that will be emitted when the input is not valid. - validationChanged = QtCore.pyqtSignal(list) - - def validate(self, input_str, pos): - state, input_str, pos = super().validate(input_str, pos) - if input_str == "" and state == QValidator.Acceptable: - state = QValidator.Intermediate - validate_state=[state, input_str, pos] - self.validationChanged.emit(validate_state) - return state, input_str, pos - - -class TableItemDelegate(QItemDelegate): - """Delegate class for QTableWidget cells that validates user input. - - This class creates a line edit widget as the editor for each cell in a - QTableWidget. It adds a DoubleValidator to the line edit widget to ensure - that the user input is a valid double (floating-point) value. - - Attributes: - None - - Methods: - createEditor(parent, option, index): Creates a line edit widget as the - editor for the cell at the specified index. Returns the editor. - - """ - - def createEditor(self, parent, option, index): - """Create a line edit widget as the editor for the cell at the specified index. - - Args: - parent (QWidget): The parent widget of the editor. - option (QStyleOptionViewItem): The style options for the editor. - index (QModelIndex): The model index of the cell being edited. - - Returns: - editor (QLineEdit): The line edit widget used as the editor. - - """ - self.editor = QLineEdit(parent) - self.editor.setToolTip('Only double values are valid inputs!') - validator = DoubleValidator() - self.editor.setValidator(validator) - validator.validationChanged.connect(self.onValidationChanged) - return self.editor - - def onValidationChanged(self, validate_return): - """Display a message box when the user enters an invalid input.""" - state=validate_return[0] - if state == QValidator.Invalid: - print('Value '+validate_return[1]+" was entered. However, only double values are valid!") - -class DoubleLineEdit(QLineEdit): - """Custom QLineEdit widget that uses DoubleValidator to validate user input.""" - - def __init__(self, parent=None): - super().__init__(parent) - self.validator = DoubleValidator() - self.setValidator(self.validator) - self.validator.validationChanged.connect(self.onValidationChanged) - - - def onValidationChanged(self, validate_return): - """Display a message box when the user enters an invalid input.""" - state = validate_return[0] - if state == QValidator.Invalid: - print('Value ' + validate_return[1] + " was entered. However, only double values are valid!") - -class SubWindow(QtWidgets.QWidget): - def __init__(self, params_tab): - super(SubWindow, self).__init__() - self.layout = QtWidgets.QGridLayout(self) - self.resize(800, 500) - self.setWindowTitle("Limits") - self.layout.addWidget(params_tab, 0, 0, 5, 4) - - -class LayoutHline(QtWidgets.QFrame): - def __init__(self): - super(LayoutHline, self).__init__() - self.setFrameShape(self.HLine) - self.setFrameShadow(self.Sunken) - class PrettyWidget(QtWidgets.QMainWindow): def __init__(self): super(PrettyWidget, self).__init__() # super(PrettyWidget, self).__init__() self.rows_lightened = 1 - self.idx_bg = None self.export_out = None self.export_pars = None self.pre = [[], [], [], []] @@ -182,7 +84,7 @@ def __init__(self): self.initUI() def initUI(self): - self.version = 'LG4X: LMFit GUI for XPS curve fitting v2.0.3' + self.version = 'LG4X: LMFit GUI for XPS curve fitting v2.0.4' self.floating = '.4f' self.setGeometry(700, 500, 1600, 900) self.center() @@ -191,8 +93,6 @@ def initUI(self): 'Copyright (C) 2022, Julian Hochhaus, TU Dortmund University') self.pt = PeriodicTable() self.pt.setWindowTitle('Periodic Table') - self.pt.elementEmitted.connect(self.handleElementClicked) - self.pt.selectedElements = [] # data template # self.df = pd.DataFrame() self.df = [] @@ -201,7 +101,7 @@ def initUI(self): self.idx_imp = 0 - self.idx_bg = 0 + self.idx_bg = [2] self.idx_pres = 0 self.addition = 0 @@ -279,7 +179,7 @@ def initUI(self): # btn_preset_ckedge.setShortcut('Ctrl+Shift+') btn_preset_ckedge.triggered.connect(lambda: self.clickOnBtnPreset(idx=6)) - btn_preset_ptable = QtWidgets.QAction('&Periodic Table', self) + btn_preset_ptable = QtWidgets.QAction('Periodic &Table', self) # btn_preset_ptable.setShortcut('Ctrl+Shift+') btn_preset_ptable.triggered.connect(lambda: self.clickOnBtnPreset(idx=7)) @@ -289,45 +189,67 @@ def initUI(self): presetMenu.addAction(btn_preset_save) presetMenu.addAction(btn_preset_c1s) presetMenu.addAction(btn_preset_ckedge) - presetMenu.addAction(btn_preset_ptable) + menubar.addAction(btn_preset_ptable) self.bgMenu = menubar.addMenu('&Choose BG') - self.submenu_shirley = self.bgMenu.addMenu('&Shirley BG') - btn_bg_shirley_act = QtWidgets.QAction('&Active approach', self) - btn_bg_shirley_act.triggered.connect(lambda: self.clickOnBtnBG(idx=0, activeBG=True)) - btn_bg_shirley_static = QtWidgets.QAction('&Static approach', self) - btn_bg_shirley_static.triggered.connect(lambda: self.clickOnBtnBG(idx=0, activeBG=False)) - self.submenu_shirley.addAction(btn_bg_shirley_act) - self.submenu_shirley.addAction(btn_bg_shirley_static) - self.submenu_tougaard = self.bgMenu.addMenu('&Tougaard BG') - btn_bg_tougaard_act = QtWidgets.QAction('&Active approach', self) - btn_bg_tougaard_act.triggered.connect(lambda: self.clickOnBtnBG(idx=1, activeBG=True)) - btn_bg_tougaard_static = QtWidgets.QAction('&Static approach', self) - btn_bg_tougaard_static.triggered.connect(lambda: self.clickOnBtnBG(idx=1, activeBG=False)) - self.submenu_tougaard.addAction(btn_bg_tougaard_act) - self.submenu_tougaard.addAction(btn_bg_tougaard_static) - - btn_bg_polynomial = QtWidgets.QAction('&Polynomial BG', self) - btn_bg_polynomial.setShortcut('Ctrl+Alt+P') - btn_bg_polynomial.triggered.connect(lambda: self.clickOnBtnBG(idx=2)) - btn_bg_arctan = QtWidgets.QAction('&Arctan BG', self) - btn_bg_arctan.triggered.connect(lambda: self.clickOnBtnBG(idx=3)) - - btn_bg_erf = QtWidgets.QAction('&Erf BG', self) - btn_bg_erf.triggered.connect(lambda: self.clickOnBtnBG(idx=4)) - - btn_bg_vbm = QtWidgets.QAction('&VBM/Cutoff BG', self) - btn_bg_vbm.triggered.connect(lambda: self.clickOnBtnBG(idx=5)) + + self.btn_bg_shirley_act = QtWidgets.QAction('&Active &Shirley BG', self, checkable=True) + self.btn_bg_shirley_act.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_shirley_static = QtWidgets.QAction('&Static &Shirley BG', self, checkable=True) + self.btn_bg_shirley_static.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_tougaard_act = QtWidgets.QAction('&Active &Tougaard BG', self, checkable=True) + self.btn_bg_tougaard_act.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_tougaard_static = QtWidgets.QAction('&Static &Tougaard BG', self, checkable=True) + self.btn_bg_tougaard_static.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_polynomial = QtWidgets.QAction('&Polynomial BG', self, checkable=True) + self.btn_bg_polynomial.setShortcut('Ctrl+Alt+P') + self.btn_bg_polynomial.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_slope = QtWidgets.QAction('&Slope BG', self, checkable=True) + self.btn_bg_slope.setShortcut('Ctrl+Alt+S') + self.btn_bg_slope.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_arctan = QtWidgets.QAction('&Arctan BG', self, checkable=True) + self.btn_bg_arctan.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_erf = QtWidgets.QAction('&Erf BG', self, checkable=True) + self.btn_bg_erf.triggered.connect(self.clickOnBtnBG) + + self.btn_bg_vbm = QtWidgets.QAction('&VBM/Cutoff BG', self, checkable=True) + self.btn_bg_vbm.triggered.connect(self.clickOnBtnBG) + + # Add the checkable actions to the menu + self.bgMenu.addAction(self.btn_bg_shirley_act) + self.bgMenu.addAction(self.btn_bg_shirley_static) + self.bgMenu.addAction(self.btn_bg_tougaard_act) + self.bgMenu.addAction(self.btn_bg_tougaard_static) + self.bgMenu.addAction(self.btn_bg_polynomial) + self.bgMenu.addAction(self.btn_bg_slope) + self.bgMenu.addAction(self.btn_bg_arctan) + self.bgMenu.addAction(self.btn_bg_erf) + self.bgMenu.addAction(self.btn_bg_vbm) btn_tougaard_cross_section = QtWidgets.QAction('Tougaard &Cross Section ', self) btn_tougaard_cross_section.triggered.connect(self.clicked_cross_section) - - self.bgMenu.addAction(btn_bg_polynomial) - self.bgMenu.addAction(btn_bg_arctan) - self.bgMenu.addAction(btn_bg_erf) - self.bgMenu.addAction(btn_bg_vbm) self.bgMenu.addSeparator() self.bgMenu.addAction(btn_tougaard_cross_section) + + menubar.addSeparator() + links_menu= menubar.addMenu('&Help/Info') + #manual_link= QtWidgets.QAction('&Manual', self) + #manual_link.triggered.connect(lambda: webbrowser.open('https://julian-hochhaus.github.io/LG4X-V2/')) + #links_menu.addAction(manual_link) + github_link= QtWidgets.QAction('See on &Github', self) + github_link.triggered.connect(lambda: webbrowser.open('https://github.com/Julian-Hochhaus/LG4X-V2')) + links_menu.addAction(github_link) + about_link= QtWidgets.QAction('&How to cite', self) + about_link.triggered.connect(self.show_citation_dialog) + links_menu.addAction(about_link) + # central widget layout widget = QtWidgets.QWidget(self) self.setCentralWidget(widget) @@ -407,7 +329,7 @@ def initUI(self): hv_form.addRow("hv: ", self.hv_item) plot_settings_layout.addLayout(hv_form) wf_form = QtWidgets.QFormLayout() - self.wf_item =DoubleLineEdit() + self.wf_item = DoubleLineEdit() self.wf = 4 self.wf_item.insert(str(self.wf)) self.wf_item.textChanged.connect(self.update_com_vals) @@ -428,7 +350,7 @@ def initUI(self): layout_bottom_mid = QtWidgets.QVBoxLayout() # PolyBG Table list_bg_col = ['bg_c0', 'bg_c1', 'bg_c2', 'bg_c3', 'bg_c4'] - list_bg_row = ['Shirley (cv, it, k, c)', 'Tougaard(B, C, C*, D)', 'Polynomial', + list_bg_row = ['Shirley (cv, it, k, c)', 'Tougaard(B, C, C*, D, extend)', 'Polynomial', 'Slope(k)', 'arctan (amp, ctr, sig)', 'erf (amp, ctr, sig)', 'cutoff (ctr, d1-4)'] self.fitp0 = QtWidgets.QTableWidget(len(list_bg_row), len(list_bg_col) * 2) self.fitp0.setItemDelegate(self.delegate) @@ -438,7 +360,7 @@ def initUI(self): # set BG table checkbox for row in range(len(list_bg_row)): for col in range(len(list_bg_colh)): - if (row >= 2 or (row == 0 and 8 > col >= 4) or (row == 1 and col == 0)) and col % 2 == 0: + if (row == 2 or row>3 or (row==3 and col<2) or (row == 0 and 8 > col >= 4) or (row == 1 and col == 0)) and col % 2 == 0: item = QtWidgets.QTableWidgetItem() item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) item.setCheckState(QtCore.Qt.Unchecked) @@ -450,15 +372,17 @@ def initUI(self): self.fitp0.setItem(row, col, item) # set BG table default pre_bg = [['', 1e-06, '', 10, 2, 0.0003, 2, 1000, '', ''], - [2, 2866.0, '', 1643.0, '', 1.0, '', 1.0, '', ''], - [2, 0, 2, 0, 2, 0, 2, 0, 2, 0]] + [2, 2866.0, '', 1643.0, '', 1.0, '', 1.0, '', 50], + [2, 0, 2, 0, 2, 0, 2, 0, 2, 0], + [2,0.0,'','','', '', '', '', '', '', '']] # self.setPreset([0], pre_bg, []) self.fitp0.resizeColumnsToContents() self.fitp0.resizeRowsToContents() bg_fixedLayout = QtWidgets.QHBoxLayout() self.fixedBG = QtWidgets.QCheckBox('Keep background fixed') - self.displayChoosenBG.setText('Choosen Background: {}'.format(dictBG[str(self.idx_bg)])) + self.displayChoosenBG.setText( + 'Choosen Background: {}'.format('+ '.join([dictBG[str(idx)] for idx in self.idx_bg]))) self.displayChoosenBG.setStyleSheet("font-weight: bold") bg_fixedLayout.addWidget(self.displayChoosenBG) @@ -649,8 +573,45 @@ def initUI(self): # grid..addWidget(self.res_label, 7, 7, 1, 1) self.activeParameters() self.show() - - def lims_changed(self, row, column): + def show_citation_dialog(self): + citation_text = 'J. A. Hochhaus and H. Nakajima, LG4X-V2 (Zenodo, 2023), DOI:10.5281/zenodo.7871174' + msg_box = QtWidgets.QMessageBox(self) + msg_box.setWindowTitle('How to cite') + msg_box.setTextFormat(QtCore.Qt.RichText) + msg_box.setText(citation_text) + copy_button = msg_box.addButton('Copy to clipboard',QtWidgets.QMessageBox.AcceptRole) + open_zenodo_button = msg_box.addButton('Open on Zenodo(DOI)', QtWidgets.QMessageBox.ActionRole) + + msg_box.exec_() + if msg_box.clickedButton() == copy_button: + # Copy citation text to clipboard + QtWidgets.QApplication.clipboard().setText(citation_text) + elif msg_box.clickedButton() == open_zenodo_button: + # Open web link + url = 'https://zenodo.org/record/7871174' + webbrowser.open(url) + + def setButtonState(self, indices): + for i in indices: + if i==0: + self.btn_bg_shirley_static.setChecked(True) + elif i==1: + self.btn_bg_tougaard_static.setChecked(True) + elif i==2: + self.btn_bg_polynomial.setChecked(True) + elif i==3: + self.btn_bg_arctan.setChecked(True) + elif i==4: + self.btn_bg_erf.setChecked(True) + elif i==5: + self.btn_bg_vbm.setChecked(True) + elif i==6: + self.btn_bg_slope.setChecked(True) + elif i==100: + self.btn_bg_shirley_act.setChecked(True) + elif i==101: + self.btn_bg_tougaard_act.setChecked(True) + def lims_changed(self, row=0, column=0): """Handle the cellChanged signal emitted by fitp1 table (the limits table) Args: row (int): The row index of the changed cell. @@ -659,13 +620,12 @@ def lims_changed(self, row, column): Returns: None """ - item=self.fitp1_lims.item(row, column) - checked=False - for c in range(int(self.fitp1_lims.columnCount()/3)): + checked = False + for c in range(int(self.fitp1_lims.columnCount() / 3)): for r in range(self.fitp1_lims.rowCount()): - item=self.fitp1_lims.item(r,3*c) + item = self.fitp1_lims.item(r, 3 * c) if item is not None and item.checkState(): - checked=True + checked = True if checked: self.set_status('limit_set') else: @@ -688,10 +648,11 @@ def set_status(self, status): elif status == "limit_set": self.status_label.setStyleSheet("background-color: green; border-radius: 9px") self.status_text.setText("Limits active") - elif status=='at_zero': + elif status == 'at_zero': self.status_label.setStyleSheet("background-color: yellow; border-radius: 9px") self.status_text.setText("Limit at 0. ") - self.status_text.setToolTip('If one limit reaches zero, a warning is displayed. Usually, such a case is intended because several parameters such as the amplitude are limited to positive values. If e.g. one component gets an amplitude of 0 during the fit, the warning will be displayed.') + self.status_text.setToolTip( + "
If a limit reaches zero, a warning is displayed. Usually, such a case is intended because several parameters such as the amplitude and the assymetry are limited to positive values.
") else: self.status_label.setStyleSheet("background-color: blue; border-radius: 9px") self.status_text.setText("Error, Unknown state!") @@ -705,53 +666,51 @@ def clicked_cross_section(self): def setCrossSection(self, window): window.choosenElement() tougaard = window.tougaard_params + self.savePreset() for idx in range(4): self.pre[1][1][2 * idx + 1] = tougaard[idx] self.setPreset(self.pre[0], self.pre[1], self.pre[2], self.pre[3]) def activeParameters(self): - """ - - """ nrows = self.fitp0.rowCount() ncols = self.fitp0.columnCount() + for col in range(ncols): for row in range(nrows): - if not row == 2: - self.fitp0.item(row, col).setFlags(self.fitp0.item(row, - col).flags() & ~ QtCore.Qt.ItemIsEditable & ~QtCore.Qt.ItemIsEnabled & ~QtCore.Qt.ItemIsSelectable) - idx = self.idx_bg - for col in range(ncols): - for row in range(nrows): - if idx == 0: - if row == 0 and col < 4: + self.fitp0.item(row, col).setFlags(self.fitp0.item(row, + col).flags() & ~QtCore.Qt.ItemIsEditable & ~QtCore.Qt.ItemIsEnabled & ~QtCore.Qt.ItemIsSelectable) + + for idx in self.idx_bg: + for col in range(ncols): + for row in range(nrows): + if idx == 0 and row == 0 and col < 4: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) - if idx == 100: - if row == 0: + elif idx == 100 and row == 0: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) - if idx == 1: - if row == 1: + elif idx == 1 and row == 1: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) - if idx == 101: - if row == 1: + elif idx == 101 and row == 1: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) - if idx == 3: - if row == 3: + elif idx == 6 and row == 3 and col < 2: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) - if idx == 4: - if row == 4: + elif idx == 3 and row == 4: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) - if idx == 5: - if row == 5: + elif idx == 2 and row == 2: self.fitp0.item(row, col).setFlags(self.fitp0.item(row, col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) + elif idx == 4 and row == 5: + self.fitp0.item(row, col).setFlags(self.fitp0.item(row, + col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) + elif idx == 5 and row == 6: + self.fitp0.item(row, col).setFlags(self.fitp0.item(row, + col).flags() | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) nrows = self.fitp1.rowCount() ncols = self.fitp1.columnCount() ncols = int(ncols / 2) @@ -961,7 +920,7 @@ def raise_error(self, window_title: str, error_message: str) -> None: None """ self.error_dialog.setWindowTitle(window_title) - error_message = error_message+r'\n *******************\n'+traceback.format_exc() + error_message = error_message + r'\n *******************\n' + traceback.format_exc() self.error_dialog.showMessage(error_message) logging.error(error_message) @@ -1171,7 +1130,8 @@ def preset(self): try: self.loadPreset() except Exception as e: - return self.raise_error(window_title="Error: Could not load parameters!", error_message='Loading parameters failed. The following traceback may help to solve the issue:') + return self.raise_error(window_title="Error: Could not load parameters!", + error_message='Loading parameters failed. The following traceback may help to solve the issue:') # print(self.df[0], self.df[1], self.df[2]) if len(str(self.pre[0])) != 0 and len(self.pre[1]) != 0 and len(self.pre[2]) != 0 and len(self.pre) == 3: # old format, reorder data! @@ -1186,7 +1146,7 @@ def preset(self): self.addPreset() except Exception as e: return self.raise_error(window_title="Error: Could not add parameters!", - error_message='Adding parameters failed. The following traceback may help to solve the issue:') + error_message='Adding parameters failed. The following traceback may help to solve the issue:') # print(self.df[0], self.df[1], self.df[2]) if len(str(self.pre[0])) != 0 and len(self.pre[1]) != 0 and len(self.pre[2]) != 0 and len(self.pre) == 3: # old format, reorder data! @@ -1200,11 +1160,13 @@ def preset(self): try: self.savePreset() except Exception as e: - return self.raise_error(window_title="Error: Could not save parameters!", error_message='Save parameters failed. The following traceback may help to solve the issue:') + return self.raise_error(window_title="Error: Could not save parameters!", + error_message='Save parameters failed. The following traceback may help to solve the issue:') try: self.savePresetDia() except Exception as e: - return self.raise_error(window_title="Error: Could not save!", error_message='Saving data failed. The following traceback may help to solve the issue:') + return self.raise_error(window_title="Error: Could not save!", + error_message='Saving data failed. The following traceback may help to solve the issue:') if index == 5: # reformat inputs [bug] # load C1s component preset pre_bg = [[2, 295, 2, 275, '', '', '', '', '', ''], ['cv', 1e-06, 'it', 10, '', '', '', '', '', ''], @@ -1254,6 +1216,8 @@ def preset(self): self.setPreset([4], pre_bg, pre_pk) if index == 7: self.pt.show() + self.pt.refresh_button.clicked.connect(self.plot_pt) + self.pt.clear_button.clicked.connect(self.plot_pt) if not self.pt.isActiveWindow(): self.pt.close() self.pt.show() @@ -1264,9 +1228,8 @@ def preset(self): def setPreset(self, list_pre_com, list_pre_bg, list_pre_pk, list_pre_pk_lims=[[0, '', '']] * 19): if len(list_pre_com) == 1: - index_bg = list_pre_com[0] + pass else: - index_bg = list_pre_com[0] self.xmin = list_pre_com[1] self.xmin_item.setText(str(format(self.xmin, self.floating))) self.xmax = list_pre_com[2] @@ -1275,17 +1238,14 @@ def setPreset(self, list_pre_com, list_pre_bg, list_pre_pk, list_pre_pk_lims=[[0 self.hv_item.setText(str(format(self.hv, self.floating))) self.wf = list_pre_com[4] self.wf_item.setText(str(format(self.wf, self.floating))) - if len(str(index_bg)) > 0 and self.addition == 0: - if int(index_bg) < len(self.bgMenu.actions()) or int(index_bg) in [100, 101]: - # self.comboBox_bg.setCurrentIndex(int(index_bg)) - self.idx_bg = int(index_bg) - self.displayChoosenBG.setText('Choosen Background: {}'.format(dictBG[str(self.idx_bg)])) + self.displayChoosenBG.setText( + 'Choosen Background: {}'.format('+ '.join([dictBG[str(idx)] for idx in self.idx_bg]))) # load preset for bg if len(list_pre_bg) != 0 and self.addition == 0: for row in range(len(list_pre_bg)): for col in range(len(list_pre_bg[0])): item = self.fitp0.item(row, col) - if (row >= 2 or (row == 0 and 8 > col >= 4) or (row == 1 and col == 0)) and col % 2 == 0: + if (row == 2 or row>3 or (row==3 and col<2) or (row == 0 and 8 > col >= 4) or (row == 1 and col == 0)) and col % 2 == 0: if list_pre_bg[row][col] == 2: item.setCheckState(QtCore.Qt.Checked) else: @@ -1326,36 +1286,44 @@ def setPreset(self, list_pre_com, list_pre_bg, list_pre_pk, list_pre_pk_lims=[[0 else: self.fitp1.setCellWidget(row, col + colPosition * 2, comboBox) if list_pre_pk[row][col] != 0: - comboBox.setCurrentIndex(list_pre_pk[row][col] + colPosition) + if row==0: + comboBox.setCurrentIndex(int(list_pre_pk[row][col])) + else: + comboBox.setCurrentIndex(int(list_pre_pk[row][col] + colPosition)) else: - comboBox.setCurrentIndex(list_pre_pk[row][col]) + comboBox.setCurrentIndex(int(list_pre_pk[row][col])) else: - item = self.fitp1.item(row, col) if self.addition == 0: + item = self.fitp1.item(row, col) if str(list_pre_pk[row][col]) == '': item.setText('') else: item.setText(str(format(list_pre_pk[row][col], self.floating))) else: + item = self.fitp1.item(row, col+colPosition*2) if str(list_pre_pk[row][col]) == '': item.setText('') else: item.setText(str(format(list_pre_pk[row][col], self.floating))) + else: if row != 0 and row != 13 and row != 15 and row != 17 and row != 19 and row != 21 and row != 23 and row != 25: - item = self.fitp1.item(row, col) + if self.addition == 0: + item = self.fitp1.item(row, col) + else: + item = self.fitp1.item(row, col+colPosition*2) + item.setText('') if list_pre_pk[row][col] == 2: item.setCheckState(QtCore.Qt.Checked) else: item.setCheckState(QtCore.Qt.Unchecked) - if self.addition == 0: - item.setText('') - else: - self.fitp1.setItem(row, col + colPosition * 2, item) for row in range(len(list_pre_pk_lims)): for col in range(len(list_pre_pk_lims[0])): - item = self.fitp1_lims.item(row, col) + if self.addition == 0: + item = self.fitp1_lims.item(row, col) + else: + item = self.fitp1_lims.item(row, col+colPosition*3) if (col % 3) != 0: if str(list_pre_pk_lims[row][col]) == '': item.setText('') @@ -1366,7 +1334,8 @@ def setPreset(self, list_pre_com, list_pre_bg, list_pre_pk, list_pre_pk_lims=[[0 item.setCheckState(QtCore.Qt.Checked) else: item.setCheckState(QtCore.Qt.Unchecked) - + self.activeParameters() + self.lims_changed() def loadPreset(self): cfilePath, _ = QtWidgets.QFileDialog.getOpenFileName(self, 'Open data file', self.filePath, "DAT Files (*.dat)") if cfilePath != "": @@ -1377,6 +1346,11 @@ def loadPreset(self): file.close() # print(self.pre, type(self.pre)) self.pre = ast.literal_eval(temp_pre) + if type(self.pre[0][0])==int:#backwards compatibility for old presets which only allowed one single BG + self.idx_bg = [self.pre[0][0]] + else: + self.idx_bg = self.pre[0][0] + self.setButtonState(self.idx_bg) # self.pre = json.loads(self.pre) #json does not work due to the None issue # print(self.pre, type(self.pre)) # self.comboBox_pres.clear() @@ -1633,7 +1607,7 @@ def exportResults(self): self.rows_lightened) + "(if not using 2D detector, value is 1 and can be ignored!)\n") self.result.to_csv(f, index=False, mode='a') else: - with open(cfilePath.rsplit("_", 1)[0] + '.csv', 'w') as f: + with open(cfilePath.rsplit(".", 1)[0] + '.csv', 'w') as f: f.write('#No of rows lightened (2D detector)' + str( self.rows_lightened) + "(if not using 2D detector, value is 1 and can be ignored!)\n") self.result.to_csv(f, index=False, mode='a') @@ -1672,7 +1646,7 @@ def imp(self): self.list_vamas = vpy.list_vms(cfilePath) except Exception as e: return self.raise_error(window_title="Error: could not load VAMAS file.", - error_message='Loading VAMAS file failed. The following traceback may help to solve the issue:') + error_message='Loading VAMAS file failed. The following traceback may help to solve the issue:') self.list_file.extend(self.list_vamas) # print (self.list_file) @@ -1703,53 +1677,46 @@ def plot_pt(self): self.canvas.draw() self.repaint() # self.ax.texts.remove() - if self.pt.selectedElements: - if self.fitp0.item(0, 7).text() is not None and self.fitp0.item(0, 9).text() is not None: - if len(self.fitp0.item(0, 7).text()) > 0 and len(self.fitp0.item(0, 9).text()) > 0: - pe = float(self.fitp0.item(0, 7).text()) - wf = float(self.fitp0.item(0, 9).text()) - else: - pe = 1486.6 - wf = 4 - item = QtWidgets.QTableWidgetItem(str(pe)) - self.fitp0.setItem(0, 7, item) - item = QtWidgets.QTableWidgetItem(str(wf)) - self.fitp0.setItem(0, 9, item) + if self.pt.selected_elements: + if self.pre[0][3] != None and self.pre[0][4] != None: + pe = self.pre[0][3] + wf = self.pre[0][4] else: - pe = 1486.6 - wf = 4 - item = QtWidgets.QTableWidgetItem(str(pe)) - self.fitp0.setItem(0, 7, item) - item = QtWidgets.QTableWidgetItem(str(wf)) - self.fitp0.setItem(0, 9, item) + self.hv = 1486.6 + self.hv_item.insert(str(self.hv)) + self.wf = 4 + self.wf.insert(str(self.wf)) + ymin, ymax = self.ax.get_ylim() xmin, xmax = self.ax.get_xlim() - for obj in self.pt.selectedElements: - if len(obj.alka['trans']) > 0: - for orb in range(len(obj.alka['trans'])): + for obj in self.pt.selected_elements: + alka=ast.literal_eval(obj['alka'].values[0]) + if len(alka['trans']) > 0: + for orb in range(len(alka['trans'])): if xmin > xmax: - en = float(obj.alka['be'][orb]) + en = float(alka['be'][orb]) else: - en = pe - wf - float(obj.alka['be'][orb]) + en = pe - wf - float(alka['be'][orb]) if (xmin > xmax and xmin > en > xmax) or (xmin < xmax and xmin < en < xmax): elem_x = np.asarray([en]) - elem_y = np.asarray([float(obj.alka['rsf'][orb])]) - elem_z = obj.alka['trans'][orb] + elem_y = np.asarray([float(alka['rsf'][orb])]) + elem_z = alka['trans'][orb] # obj.symbol+elem_z, color="r", rotation="vertical") self.ax.text(elem_x, ymin + (ymax - ymin) * math.log(elem_y + 1, 10) / 2, - obj.symbol + elem_z, color="r", rotation="vertical") - if len(obj.aes['trans']) > 0: - for orb in range(len(obj.aes['trans'])): + obj['symbol'].values[0] + elem_z, color="r", rotation="vertical") + aes=ast.literal_eval(obj['aes'].values[0]) + if len(aes['trans']) > 0: + for orb in range(len(aes['trans'])): if xmin > xmax: - en = pe - wf - float(obj.aes['ke'][orb]) + en = pe - wf - float(aes['ke'][orb]) else: - en = float(obj.aes['ke'][orb]) + en = float(aes['ke'][orb]) if (xmin > xmax and xmin > en > xmax) or (xmin < xmax and xmin < en < xmax): elem_x = np.asarray([en]) - elem_y = np.asarray([float(obj.aes['rsf'][orb])]) - elem_z = obj.aes['trans'][orb] + elem_y = np.asarray([float(aes['rsf'][orb])]) + elem_z = aes['trans'][orb] # obj.symbol+elem_z, color="g", rotation="vertical") - self.ax.text(elem_x, ymin + (ymax - ymin) * math.log(elem_y + 1, 10), obj.symbol + elem_z, + self.ax.text(elem_x, ymin + (ymax - ymin) * math.log(elem_y + 1, 10), obj['symbol'].values[0] + elem_z, color="g", rotation="vertical") self.canvas.draw() @@ -1767,8 +1734,13 @@ def plot(self): # self.df = np.loadtxt(str(self.comboBox_file.currentText()), delimiter=',', skiprows=1) fileName = os.path.basename(self.comboBox_file.currentText()) if os.path.splitext(fileName)[1] == '.csv': - try: - self.df = np.loadtxt(str(self.comboBox_file.currentText()), delimiter=',', skiprows=1) + try: # change import, so that export file is detected + data = np.genfromtxt(str(self.comboBox_file.currentText()), dtype='str', delimiter=',', max_rows=2) + if all(elem in data for elem in ['x', 'raw_y', 'sum_fit']): + self.df = np.loadtxt(str(self.comboBox_file.currentText()), delimiter=',', skiprows=2, + usecols=(0, 1)) + else: + self.df = np.loadtxt(str(self.comboBox_file.currentText()), delimiter=',', skiprows=1) # self.df = pd.read_csv(str(self.comboBox_file.currentText()), dtype = float, skiprows=1, # header=None) strpe = np.loadtxt(str(self.comboBox_file.currentText()), dtype='str', delimiter=',', usecols=1, @@ -1782,7 +1754,7 @@ def plot(self): except Exception as e: return self.raise_error(window_title="Error: could not load .csv file.", - error_message='The input .csv is not in the correct format!. The following traceback may help to solve the issue:') + error_message='The input .csv is not in the correct format!. The following traceback may help to solve the issue:') else: @@ -1800,8 +1772,7 @@ def plot(self): self.rows_lightened = 1 except Exception as e: return self.raise_error(window_title="Error: could not load input file.", - error_message='The input file is not in the correct format!. The following traceback may help to solve the issue:') - + error_message='The input file is not in the correct format!. The following traceback may help to solve the issue:') # I have moved the error handling here directly to the import, there may exist situations, where already the # Import would fail. I still left the following error handling there, but I am not sure if there are cases @@ -1819,10 +1790,12 @@ def plot(self): return self.raise_error(window_title="Error: could not load .csv file.", error_message='The input .csv is not in the correct format!. The following traceback may help to solve the issue:') strpe = (str(strpe).split()) + if strpe[0] == 'PE:' and strpe[2] == 'eV': pe = float(strpe[1]) item = QtWidgets.QTableWidgetItem(str(pe)) - self.fitp0.setItem(0, 7, item) + self.fitp0.setItem(0, 9, item) + self.fitp0.setItem(0, 8, QtWidgets.QTableWidgetItem('Pass energy (eV)')) # plt.cla() self.ar.cla() self.ax.cla() @@ -1877,7 +1850,7 @@ def fit(self): # self.threadpool.start(self.fitter) except Exception as e: return self.raise_error(window_title="Error: Fitting failed!", - error_message='Fitting was not successful. The following traceback may help to solve the issue:') + error_message='Fitting was not successful. The following traceback may help to solve the issue:') else: print('No Data present, Switching to simulation mode!') if self.xmin is not None and self.xmax is not None and len(str(self.xmin)) > 0 and len(str(self.xmax)) > 0: @@ -1921,51 +1894,93 @@ def history_manager(self, pars): except IndexError: self.go_back_in_parameter_history = False return self.raise_error(window_title="Error: History empty!", - error_message='First entry in parameter history reached. No further steps saved. The following traceback may help to solve the issue:') + error_message='First entry in parameter history reached. No further steps saved. The following traceback may help to solve the issue:') else: self.savePreset() self.parameter_history_list.append([pars, self.pre]) return None - def clickOnBtnBG(self, idx, activeBG=False): - if not activeBG: - self.idx_bg = idx - else: - self.idx_bg = idx + 100 + def clickOnBtnBG(self): + checked_actions = [action for action in self.bgMenu.actions() if action.isChecked()] + idx_bg = set() + for checked_action in checked_actions: + if checked_action.text() == '&Static &Shirley BG': + idx_bg.add(0) + elif checked_action.text() == '&Active &Shirley BG' and '&Static &Shirley BG' in [checked_act.text() for + checked_act in + checked_actions]: + QtWidgets.QMessageBox.warning(self, 'Warning', 'You cannot choose both Active Shirley BG and Static ' + 'Shirley BG at the same time! Static Shirley BG set! To use Active Shirley BG, please uncheck Static ' + 'Shirley BG!') + checked_action.setChecked(False) + idx_bg.add(0) + elif checked_action.text() == '&Active &Shirley BG' and '&Static &Shirley BG' not in [checked_act.text() for + checked_act in + checked_actions]: + idx_bg.add(100) + elif checked_action.text() == '&Static &Tougaard BG': + idx_bg.add(1) + elif checked_action.text() == '&Active &Tougaard BG' and '&Static &Tougaard BG' in [ + checked_act.text() for checked_act in checked_actions]: + QtWidgets.QMessageBox.warning(self, 'Warning', + 'You cannot choose both Active Tougaard BG and Static Tougaard BG at ' + 'the same time! Static Tougaard BG set! To use Active Tougaard BG, ' + 'please uncheck Static Tougaard BG!') + idx_bg.add(1) + checked_action.setChecked(False) + elif checked_action.text() == '&Active &Tougaard BG' and '&Static &Tougaard BG' not in [checked_act.text() + for checked_act in + checked_actions]: + idx_bg.add(101) + elif checked_action.text() == '&Polynomial BG': + idx_bg.add(2) + elif checked_action.text() == '&Slope BG': + idx_bg.add(6) + elif checked_action.text() == '&Arctan BG': + idx_bg.add(3) + elif checked_action.text() == '&Erf BG': + idx_bg.add(4) + elif checked_action.text() == '&VBM/Cutoff BG': + idx_bg.add(5) + if len(checked_actions) == 0: + QtWidgets.QMessageBox.information(self, 'Info', 'No background was choosen, a polynomial BG was set as default.') + idx_bg.add(2) #if no background was selected, a polynomial will be used + self.idx_bg = sorted(idx_bg) + self.pre[0][0] = self.idx_bg - self.activeBG = activeBG - self.displayChoosenBG.setText('Choosen Background: {}'.format(dictBG[str(self.idx_bg)])) + self.displayChoosenBG.setText( + 'Choosen Background: {}'.format('+ '.join([dictBG[str(idx)] for idx in self.idx_bg]))) self.activeParameters() def write_pars(self, pars): return None - def bgSelector(self, x, y, mode): - if self.idx_bg == 0: + def bgSelector(self, x, y, mode, idx_bg): + if idx_bg == 0: shA = self.pre[1][0][1] shB = self.pre[1][0][3] pars = None bg_mod = xpy.shirley_calculate(x, y, shA, shB) - if self.idx_bg == 100: + if idx_bg == 100: if mode == "eva": shA = self.pre[1][0][1] shB = self.pre[1][0][3] pars = None bg_mod = xpy.shirley_calculate(x, y, shA, shB) else: - mod = Model(xpy.shirley, independent_vars=["y"], prefix='bg_') + mod = ShirleyBG(independent_vars=["y"], prefix='bg_shirley_') k = self.pre[1][0][5] const = self.pre[1][0][7] pars = mod.make_params() - pars['bg_k'].value = float(k) - pars['bg_const'].value = float(const) + pars['bg_shirley_k'].value = float(k) + pars['bg_shirley_const'].value = float(const) if self.pre[1][0][4] == 2: - pars['bg_k'].vary = False + pars['bg_shirley_k'].vary = False if self.pre[1][0][6] == 2: - pars['bg_const'].vary = False + pars['bg_shirley_const'].vary = False bg_mod = 0 - if self.idx_bg == 1: + if idx_bg == 1: toB = self.pre[1][1][1] toC = self.pre[1][1][3] toCd = self.pre[1][1][5] @@ -1979,47 +1994,66 @@ def bgSelector(self, x, y, mode): toM = 1 [bg_mod, bg_toB] = xpy.tougaard_calculate(x, y, toB, toC, toCd, toD, toM) self.pre[1][1][1] = bg_toB - if self.idx_bg == 101: - mod = Model(xpy.tougaard2, independent_vars=["x", "y"], prefix='bg_') + if idx_bg == 101: + mod = TougaardBG(independent_vars=["x", "y"], prefix='bg_tougaard_') if self.pre[1][1][1] is None or self.pre[1][1][3] is None or self.pre[1][1][5] is None \ - or self.pre[1][1][7] is None or len(str(self.pre[1][1][1])) == 0 or len(str(self.pre[1][1][3])) == 0 \ - or len(str(self.pre[1][1][5])) == 0 or len(str(self.pre[1][1][7])) == 0: + or self.pre[1][1][7] is None or self.pre[1][1][9] is None or len(str(self.pre[1][1][1])) == 0 or len(str(self.pre[1][1][3])) == 0 \ + or len(str(self.pre[1][1][5])) == 0 or len(str(self.pre[1][1][7]))==0 or len(str(self.pre[1][1][9])) == 0: pars = mod.guess(y, x=x, y=y) else: pars = mod.make_params() - pars['bg_B'].value = self.pre[1][1][1] + pars['bg_tougaard_B'].value = self.pre[1][1][1] if self.pre[1][1][0] == 2: - pars['bg_B'].vary = False - pars['bg_C'].value = self.pre[1][1][3] - pars['bg_C'].vary = False - pars['bg_C_d'].value = self.pre[1][1][5] - pars['bg_C_d'].vary = False - pars['bg_D'].value = self.pre[1][1][7] - pars['bg_D'].vary = False + pars['bg_tougaard_B'].vary = False + pars['bg_tougaard_C'].value = self.pre[1][1][3] + pars['bg_tougaard_C'].vary = False + pars['bg_tougaard_C_d'].value = self.pre[1][1][5] + pars['bg_tougaard_C_d'].vary = False + pars['bg_tougaard_D'].value = self.pre[1][1][7] + pars['bg_tougaard_D'].vary = False + pars['bg_tougaard_extend'].value=self.pre[1][1][9] + pars['bg_tougaard_extend'].vary = False bg_mod = 0 - if self.idx_bg == 3 or self.idx_bg == 4: - if self.idx_bg == 3: - mod = StepModel(prefix='bg_', form='arctan') - if self.idx_bg == 4: - mod = StepModel(prefix='bg_', form='erf') - if self.pre[1][self.idx_bg][1] is None or self.pre[1][self.idx_bg][3] is None or self.pre[1][self.idx_bg][ + if idx_bg == 3: + mod = StepModel(prefix='bg_arctan_', form='arctan') + if self.pre[1][idx_bg+1][1] is None or self.pre[1][idx_bg+1][3] is None or self.pre[1][idx_bg+1][ 5] is None \ - or len(str(self.pre[1][self.idx_bg][1])) == 0 or len(str(self.pre[1][self.idx_bg][3])) == 0 \ - or len(str(self.pre[1][self.idx_bg][5])) == 0: + or len(str(self.pre[1][idx_bg+1][1])) == 0 or len(str(self.pre[1][idx_bg+1][3])) == 0 \ + or len(str(self.pre[1][idx_bg+1][5])) == 0: pars = mod.guess(y, x=x) else: pars = mod.make_params() - pars['bg_amplitude'].value = self.pre[1][self.idx_bg][1] - if self.pre[1][self.idx_bg][0] == 2: - pars['bg_amplitude'].vary = False - pars['bg_center'].value = self.pre[1][self.idx_bg][3] - if self.pre[1][self.idx_bg][2] == 2: - pars['bg_center'].vary = False - pars['bg_sigma'].value = self.pre[1][self.idx_bg][5] - if self.pre[1][self.idx_bg][4] == 2: - pars['bg_sigma'].vary = False + pars['bg_arctan_amplitude'].value = self.pre[1][idx_bg+1][1] + if self.pre[1][idx_bg+1][0] == 2: + pars['bg_arctan_amplitude'].vary = False + pars['bg_arctan_center'].value = self.pre[1][idx_bg+1][3] + if self.pre[1][idx_bg+1][2] == 2: + pars['bg_arctan_center'].vary = False + pars['bg_arctan_sigma'].value = self.pre[1][idx_bg+1][5] + if self.pre[1][idx_bg+1][4] == 2: + pars['bg_arctan_sigma'].vary = False bg_mod = 0 - if self.idx_bg == 5: + if idx_bg == 4: + mod = StepModel(prefix='bg_step_', form='erf') + if self.pre[1][idx_bg+1][1] is None or self.pre[1][idx_bg+1][3] is None or self.pre[1][idx_bg+1][ + 5] is None \ + or len(str(self.pre[1][idx_bg+1][1])) == 0 or len(str(self.pre[1][idx_bg+1][3])) == 0 \ + or len(str(self.pre[1][idx_bg+1][5])) == 0: + pars = mod.guess(y, x=x) + else: + pars = mod.make_params() + pars['bg_step_amplitude'].value = self.pre[1][idx_bg+1][1] + if self.pre[1][idx_bg+1][0] == 2: + pars['bg_step_amplitude'].vary = False + pars['bg_step_center'].value = self.pre[1][idx_bg+1][3] + if self.pre[1][idx_bg+1][2] == 2: + pars['bg_step_center'].vary = False + pars['bg_step_sigma'].value = self.pre[1][idx_bg+1][5] + if self.pre[1][idx_bg+1][4] == 2: + pars['bg_step_sigma'].vary = False + bg_mod = 0 + + if idx_bg == 5: if (x[0] > x[-1] and y[0] > y[-1]) or (x[0] < x[-1] and y[0] < y[-1]): # VBM def poly2vbm(x, ctr, d1, d2, d3, d4): @@ -2031,38 +2065,38 @@ def poly2vbm(x, ctr, d1, d2, d3, d4): return (d1 * (x - ctr) + d2 * (x - ctr) ** 2 + d3 * (x - ctr) ** 3 + d4 * (x - ctr) ** 4) * ( x <= ctr) - mod = Model(poly2vbm, prefix='bg_') + mod = Model(poly2vbm, prefix='bg_vbm_') pars = mod.make_params() - if self.pre[1][self.idx_bg][1] is None or self.pre[1][self.idx_bg][3] is None or self.pre[1][self.idx_bg][ + if self.pre[1][idx_bg+1][1] is None or self.pre[1][idx_bg+1][3] is None or self.pre[1][idx_bg+1][ 5] is None \ - or self.pre[1][self.idx_bg][7] is None or self.pre[1][self.idx_bg][9] is None \ - or len(str(self.pre[1][self.idx_bg][1])) == 0 or len(str(self.pre[1][self.idx_bg][3])) == 0 \ - or len(str(self.pre[1][self.idx_bg][5])) == 0 or len(str(self.pre[1][self.idx_bg][7])) == 0 \ - or len(str(self.pre[1][self.idx_bg][9])) == 0: - pars['bg_ctr'].value = (x[0] + x[-1]) / 2 - pars['bg_d1'].value = 0 - pars['bg_d2'].value = 0 - pars['bg_d3'].value = 0 - pars['bg_d4'].value = 0 + or self.pre[1][idx_bg+1][7] is None or self.pre[1][idx_bg+1][9] is None \ + or len(str(self.pre[1][idx_bg+1][1])) == 0 or len(str(self.pre[1][idx_bg+1][3])) == 0 \ + or len(str(self.pre[1][idx_bg+1][5])) == 0 or len(str(self.pre[1][idx_bg+1][7])) == 0 \ + or len(str(self.pre[1][idx_bg+1][9])) == 0: + pars['bg_vbm_ctr'].value = (x[0] + x[-1]) / 2 + pars['bg_vbm_d1'].value = 0 + pars['bg_vbm_d2'].value = 0 + pars['bg_vbm_d3'].value = 0 + pars['bg_vbm_d4'].value = 0 else: - pars['bg_ctr'].value = self.pre[1][self.idx_bg][1] - if self.pre[1][self.idx_bg][0] == 2: - pars['bg_ctr'].vary = False - pars['bg_d1'].value = self.pre[1][self.idx_bg][3] - if self.pre[1][self.idx_bg][2] == 2: - pars['bg_d1'].vary = False - pars['bg_d2'].value = self.pre[1][self.idx_bg][5] - if self.pre[1][self.idx_bg][5] == 2: - pars['bg_d2'].vary = False - pars['bg_d3'].value = self.pre[1][self.idx_bg][7] - if self.pre[1][self.idx_bg][6] == 2: - pars['bg_d3'].vary = False - pars['bg_d4'].value = self.pre[1][self.idx_bg][9] - if self.pre[1][self.idx_bg][8] == 2: - pars['bg_d4'].vary = False + pars['bg_vbm_ctr'].value = self.pre[1][idx_bg+1][1] + if self.pre[1][idx_bg+1][0] == 2: + pars['bg_vbm_ctr'].vary = False + pars['bg_vbm_d1'].value = self.pre[1][idx_bg+1][3] + if self.pre[1][idx_bg+1][2] == 2: + pars['bg_vbm_d1'].vary = False + pars['bg_vbm_d2'].value = self.pre[1][idx_bg+1][5] + if self.pre[1][idx_bg+1][5] == 2: + pars['bg_vbm_d2'].vary = False + pars['bg_vbm_d3'].value = self.pre[1][idx_bg+1][7] + if self.pre[1][idx_bg+1][6] == 2: + pars['bg_vbm_d3'].vary = False + pars['bg_vbm_d4'].value = self.pre[1][idx_bg+1][9] + if self.pre[1][idx_bg+1][8] == 2: + pars['bg_vbm_d4'].vary = False bg_mod = 0 - if self.idx_bg == 2: - mod = PolynomialModel(4, prefix='bg_') + if idx_bg == 2: + mod = PolynomialModel(4, prefix='bg_poly_') bg_mod = 0 if self.pre[1][2][1] is None or self.pre[1][2][3] is None or self.pre[1][2][5] is None \ or self.pre[1][2][7] is None or self.pre[1][2][9] is None or len(str(self.pre[1][2][1])) == 0 \ @@ -2072,64 +2106,26 @@ def poly2vbm(x, ctr, d1, d2, d3, d4): else: pars = mod.make_params() for index in range(5): - pars['bg_c' + str(index)].value = self.pre[1][2][2 * index + 1] - if self.pre[1][2][2 * index] == 2: - pars['bg_c' + str(index)].vary = False - if self.fixedBG.isChecked(): - for par in pars: - pars[par].vary = False - return [mod, bg_mod, pars] - # Polynomial BG to be added for all BG - modp = PolynomialModel(4, prefix='pg_') - if self.pre[1][2][1] is None or self.pre[1][2][3] is None or self.pre[1][2][5] is None \ - or self.pre[1][2][7] is None or self.pre[1][2][9] is None or len(str(self.pre[1][2][1])) == 0 \ - or len(str(self.pre[1][2][3])) == 0 or len(str(self.pre[1][2][5])) == 0 \ - or len(str(self.pre[1][2][7])) == 0 or len(str(self.pre[1][2][9])) == 0: - if pars is None: - pars = modp.make_params() - mod = modp - for index in range(5): - pars['pg_c' + str(index)].value = 0 - # make all poly bg parameters fixed - for col in range(5): - self.pre[1][2][2 * col] = 0 - if self.fixedBG.isChecked(): - for par in pars: - pars[par].vary = False - return [mod, bg_mod, pars] - - else: - pars.update(modp.make_params()) - for index in range(5): - pars['pg_c' + str(index)].value = 0 - # make all poly bg parameters fixed - for col in range(5): - self.pre[1][2][2 * col] = 0 - - else: - if pars is None: - pars = modp.make_params() - mod = modp - for index in range(5): - pars['pg_c' + str(index)].value = self.pre[1][2][2 * index + 1] + pars['bg_poly_c' + str(index)].value = self.pre[1][2][2 * index + 1] if self.pre[1][2][2 * index] == 2: - pars['pg_c' + str(index)].vary = False - if self.fixedBG.isChecked(): - for par in pars: - pars[par].vary = False - return [mod, bg_mod, pars] + pars['bg_poly_c' + str(index)].vary = False + if idx_bg ==6: + mod=SlopeBG(independent_vars=['y'],prefix='bg_slope_') + bg_mod=0 + if self.pre[1][3][1] is None or len(str(self.pre[1][3][1])) == 0: + pars = mod.guess(y, x=x) else: - pars.update(modp.make_params()) - for index in range(5): - pars['pg_c' + str(index)].value = self.pre[1][2][2 * index + 1] - if self.pre[1][2][2 * index] == 2: - pars['pg_c' + str(index)].vary = False - mod += modp + pars = mod.make_params() + pars['bg_slope_k'].value = self.pre[1][3][1] + if self.pre[1][3][0] == 2: + pars['bg_slope_k'].vary = False if self.fixedBG.isChecked(): for par in pars: pars[par].vary = False return [mod, bg_mod, pars] + + def PeakSelector(self, mod): pars_all = [] ncomponent = self.fitp1.columnCount() @@ -2159,7 +2155,8 @@ def PeakSelector(self, mod): if self.pre[2][14][2 * index_pk] == 2: pars[strind + str(index_pk + 1) + '_center_diff'].vary = False if self.pre[2][16][2 * index_pk + 1] is not None and len(str(self.pre[2][16][2 * index_pk + 1])) > 0: - pars.add(strind + str(index_pk + 1) + "_amp_ratio", value=float(self.pre[2][16][2 * index_pk + 1]), min=0) + pars.add(strind + str(index_pk + 1) + "_amp_ratio", value=float(self.pre[2][16][2 * index_pk + 1]), + min=0) if self.pre[2][16][2 * index_pk] == 2: pars[strind + str(index_pk + 1) + '_amp_ratio'].vary = False if index == 0 or index == 2 or index == 4 or index == 5 or index == 6 or index == 7 or index == 8 or index == 12: @@ -2556,32 +2553,38 @@ def peak_limits(self, pars): 3 * index_pk + 2] return pars - def bgResult2Pre(self, out_params, mode): - if self.idx_bg == 100: - if mode != "eva": - self.pre[1][0][5] = out_params['bg_k'].value - self.pre[1][0][7] = out_params['bg_const'].value - if self.idx_bg == 101: - self.pre[1][1][1] = out_params['bg_B'].value - self.pre[1][1][3] = out_params['bg_C'].value - self.pre[1][1][5] = out_params['bg_C_d'].value - self.pre[1][1][7] = out_params['bg_D'].value - if self.idx_bg == 3 or self.idx_bg == 4: - self.pre[1][self.idx_bg][1] = out_params['bg_amplitude'].value - self.pre[1][self.idx_bg][3] = out_params['bg_center'].value - self.pre[1][self.idx_bg][5] = out_params['bg_sigma'].value - if self.idx_bg == 5: - self.pre[1][self.idx_bg][1] = out_params['bg_ctr'].value - self.pre[1][self.idx_bg][3] = out_params['bg_d1'].value - self.pre[1][self.idx_bg][5] = out_params['bg_d2'].value - self.pre[1][self.idx_bg][7] = out_params['bg_d3'].value - self.pre[1][self.idx_bg][9] = out_params['bg_d4'].value - if self.idx_bg == 2: - for index in range(5): - self.pre[1][self.idx_bg][2 * index + 1] = out_params['bg_c' + str(index)].value - if self.idx_bg != 2: - for index in range(5): - self.pre[1][2][2 * index + 1] = out_params['pg_c' + str(index)].value + def bgResult2Pre(self, out_params, mode, idx_bgs): + for idx_bg in idx_bgs: + if idx_bg == 6: + self.pre[1][3][1] = out_params['bg_slope_k'].value + if idx_bg == 100: + if mode != "eva": + self.pre[1][0][5] = out_params['bg_shirley_k'].value + self.pre[1][0][7] = out_params['bg_shirley_const'].value + if idx_bg == 101: + self.pre[1][1][1] = out_params['bg_tougaard_B'].value + self.pre[1][1][3] = out_params['bg_tougaard_C'].value + self.pre[1][1][5] = out_params['bg_tougaard_C_d'].value + self.pre[1][1][7] = out_params['bg_tougaard_D'].value + self.pre[1][1][9] = out_params['bg_tougaard_extend'].value + if idx_bg == 3: + self.pre[1][idx_bg+1][1] = out_params['bg_arctan_amplitude'].value + self.pre[1][idx_bg+1][3] = out_params['bg_arctan_center'].value + self.pre[1][idx_bg+1][5] = out_params['bg_arctan_sigma'].value + + if idx_bg == 4: + self.pre[1][idx_bg+1][1] = out_params['bg_step_amplitude'].value + self.pre[1][idx_bg+1][3] = out_params['bg_step_center'].value + self.pre[1][idx_bg+1][5] = out_params['bg_step_sigma'].value + if idx_bg == 5: + self.pre[1][idx_bg+1][1] = out_params['bg_vbm_ctr'].value + self.pre[1][idx_bg+1][3] = out_params['bg_vbm_d1'].value + self.pre[1][idx_bg+1][5] = out_params['bg_vbm_d2'].value + self.pre[1][idx_bg+1][7] = out_params['bg_vbm_d3'].value + self.pre[1][idx_bg+1][9] = out_params['bg_vbm_d4'].value + if idx_bg==2: + for index in range(5): + self.pre[1][2][2 * index + 1] = out_params['bg_poly_c' + str(index)].value def peakResult2Pre(self, out_params, mode): ncomponent = self.fitp1.columnCount() @@ -2628,7 +2631,7 @@ def peakResult2Pre(self, out_params, mode): self.pre[2][12][2 * index_pk + 1] = out_params[strind + str(index_pk + 1) + '_fct_coster_kronig'].value def result2Par(self, out_params, mode): - self.bgResult2Pre(out_params, mode) + self.bgResult2Pre(out_params, mode, self.idx_bg) self.peakResult2Pre(out_params, mode) def fillTabResults(self, x, y, out): @@ -2800,6 +2803,20 @@ def fillTabResults(self, x, y, out): self.res_tab.resizeRowsToContents() self.fitp1.resizeColumnsToContents() self.fitp1.resizeRowsToContents() + def BGModCreator(self, x,y,mode): + temp_res = self.bgSelector(x, y, mode=mode, idx_bg= self.idx_bg[0]) + mod=temp_res[0] + bg_mod=temp_res[1] + pars=temp_res[2] + + for idx_bg in self.idx_bg[1:]: + temp_res=self.bgSelector(x,y,mode,idx_bg) + mod += temp_res[0] + bg_mod += temp_res[1] + pars.update(temp_res[2]) + + return mod, bg_mod,pars + def ana(self, mode): self.savePreset() @@ -2865,7 +2882,9 @@ def ana(self, mode): raw_y = y.copy() # BG model selection and call shirley and tougaard # colPosition = self.fitp1.columnCount() - temp_res = self.bgSelector(x, y, mode=mode) + + + temp_res = self.BGModCreator(x, y, mode=mode) mod = temp_res[0] bg_mod = temp_res[1] pars = temp_res[2] @@ -2967,6 +2986,12 @@ def ana(self, mode): self.stats_tab.setItem(9, 0, item) self.stats_tab.resizeColumnsToContents() self.stats_tab.resizeRowsToContents() + sum_background=np.array([0.]*len(x)) + self.bg_comps=dict() + for key in comps: + if 'bg_' in key: + self.bg_comps[key]=comps[key] + sum_background+=comps[key] if mode == "sim": self.ar.set_title(r"Simulation mode", fontsize=11) if mode == 'eva': @@ -2980,30 +3005,12 @@ def ana(self, mode): # print(index_pk, color) strind = self.fitp1.cellWidget(0, 2 * index_pk + 1).currentText() strind = strind.split(":", 1)[0] - if self.idx_bg > 100: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_'], - comps['bg_'] + comps['pg_'], label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, comps['bg_'] + comps['pg_'], label='BG') - if self.idx_bg < 2 or self.idx_bg == 100: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + bg_mod + comps['pg_'], - bg_mod + comps['pg_'], label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + bg_mod + comps['pg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, bg_mod + comps['pg_'], label='BG') - if self.idx_bg == 2: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'], comps['bg_'], - label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'], comps['bg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, comps['bg_'], label='BG') - if 100 > self.idx_bg > 2: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_'], - comps['bg_'] + comps['pg_'], label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, comps['bg_'] + comps['pg_'], label='BG') + + self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + sum_background+bg_mod, + sum_background+bg_mod, label='C_' + str(index_pk + 1)) + self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + sum_background+bg_mod) + if index_pk == len_idx_pk - 1: + self.ax.plot(x, + sum_background+bg_mod, label='BG') self.ax.set_xlim(left=self.xmin) self.ar.set_xlim(left=self.xmin) self.ax.set_xlim(right=self.xmax) @@ -3021,32 +3028,11 @@ def ana(self, mode): for index_pk in range(len_idx_pk): strind = self.fitp1.cellWidget(0, 2 * index_pk + 1).currentText() strind = strind.split(":", 1)[0] - if self.idx_bg >= 100: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_'], - comps['bg_'] + comps['pg_'], label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, comps['bg_'] + comps['pg_'], label="BG") - if self.idx_bg < 2: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + bg_mod + comps['pg_'], - bg_mod + comps['pg_'], label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + bg_mod + comps['pg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, bg_mod + comps['pg_'], label="BG") - if self.idx_bg == 2: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'], comps['bg_'], - label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, comps['bg_'], label="BG") - if 100 > self.idx_bg > 2: - self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_'], - comps['bg_'] + comps['pg_'], label='C_' + str(index_pk + 1)) - self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + comps['bg_'] + comps['pg_']) - if index_pk == len_idx_pk - 1: - self.ax.plot(x, comps['bg_'] + comps['pg_'], label="BG") - - # + self.ax.fill_between(x, comps[strind + str(index_pk + 1) + '_'] + bg_mod+sum_background, + bg_mod+sum_background, label='C_' + str(index_pk + 1)) + self.ax.plot(x, comps[strind + str(index_pk + 1) + '_'] + bg_mod+sum_background) + if index_pk == len_idx_pk - 1: + self.ax.plot(x, + bg_mod+sum_background, label="BG") self.ax.set_xlim(left=self.xmin) self.ar.set_xlim(left=self.xmin) self.ax.set_xlim(right=self.xmax) @@ -3067,59 +3053,29 @@ def ana(self, mode): # make dataFrame and concat to export df_x = pd.DataFrame(x, columns=['x']) df_raw_y = pd.DataFrame(raw_y, columns=['raw_y']) - if self.idx_bg > 100: - df_y = pd.DataFrame(raw_y - comps['pg_'] - comps['bg_'], columns=['data-bg']) - df_pks = pd.DataFrame(out.best_fit - comps['pg_'] - comps['bg_'], columns=['sum_components']) - df_sum = pd.DataFrame(out.best_fit, columns=['sum_fit']) - elif self.idx_bg == 100: - if mode == 'eva': - df_y = pd.DataFrame(raw_y - comps['pg_'] - bg_mod, columns=['data-bg']) - df_pks = pd.DataFrame(out.best_fit - comps['pg_'] - bg_mod, columns=['sum_components']) - df_sum = pd.DataFrame(out.best_fit, columns=['sum_fit']) - else: - df_y = pd.DataFrame(raw_y - comps['pg_'] - comps['bg_'], columns=['data-bg']) - df_pks = pd.DataFrame(out.best_fit - comps['pg_'] - comps['bg_'], columns=['sum_components']) - df_sum = pd.DataFrame(out.best_fit, columns=['sum_fit']) - - elif self.idx_bg == 2: - df_y = pd.DataFrame(raw_y - bg_mod - comps['bg_'], columns=['data-bg']) - df_pks = pd.DataFrame(out.best_fit - comps['bg_'], columns=['sum_components']) - df_sum = pd.DataFrame(out.best_fit + comps['bg_'], columns=['sum_fit']) - else: - df_y = pd.DataFrame(raw_y - bg_mod - comps['pg_'], columns=['data-bg']) - df_pks = pd.DataFrame(out.best_fit - comps['pg_'], columns=['sum_components']) - df_sum = pd.DataFrame(out.best_fit + bg_mod, columns=['sum_fit']) - if self.idx_bg > 100: - df_b = pd.DataFrame(comps['pg_'] + comps['bg_'], columns=['bg']) - if self.idx_bg < 2: - df_b = pd.DataFrame(bg_mod + comps['pg_'], columns=['bg']) - if self.idx_bg == 2: - df_b = pd.DataFrame(comps['bg_'], columns=['bg']) - if 100 > self.idx_bg > 2: - df_b = pd.DataFrame(comps['bg_'] + comps['pg_'], columns=['bg']) - if self.idx_bg == 100: - df_b = pd.DataFrame(comps['bg_'], columns=['bg']) - if self.idx_bg == 2: - df_b_pg = pd.DataFrame(comps['bg_'], columns=['pg']) - else: - df_b_pg = pd.DataFrame(comps['pg_'], columns=['pg']) - self.result = pd.concat([df_x, df_raw_y, df_y, df_pks, df_b, df_b_pg, df_sum], axis=1) + df_y = pd.DataFrame(raw_y - sum_background-bg_mod, columns=['data-bg']) + df_pks = pd.DataFrame(out.best_fit - sum_background-bg_mod, columns=['sum_components']) + df_sum = pd.DataFrame(out.best_fit, columns=['sum_fit']) + df_b = pd.DataFrame(sum_background+bg_mod, columns=['bg']) + self.result = pd.concat([df_x, df_raw_y, df_y, df_pks, df_b, df_sum], axis=1) + df_bg_comps=pd.DataFrame.from_dict(self.bg_comps, orient='columns') + self.result=pd.concat([self.result, df_bg_comps], axis=1) for index_pk in range(int(self.fitp1.columnCount() / 2)): strind = self.fitp1.cellWidget(0, 2 * index_pk + 1).currentText() strind = strind.split(":", 1)[0] df_c = pd.DataFrame(comps[strind + str(index_pk + 1) + '_'], columns=[strind + str(index_pk + 1)]) self.result = pd.concat([self.result, df_c], axis=1) print(out.fit_report()) - lim_reached=False - at_zero=False + lim_reached = False + at_zero = False for key in out.params: - if (out.params[key].value==out.params[key].min or out.params[key].value==out.params[key].max) : - if out.params[key].value!=0: - lim_reached=True + if (out.params[key].value == out.params[key].min or out.params[key].value == out.params[key].max): + if out.params[key].value != 0: + lim_reached = True print('Limit reached for ', key) else: - at_zero=True - print(key, ' is at limit. Value is at 0.0. That was probably intended and can be ignored!' ) + at_zero = True + print(key, ' is at limit. Value is at 0.0. That was probably intended and can be ignored!') if at_zero: self.set_status('at_zero') @@ -3134,18 +3090,6 @@ def center(self): qr.moveCenter(cp) self.move(qr.topLeft()) - def handleElementClicked(self, elementObject, checked): - symbol = elementObject.symbol - if symbol == 'Clear': - self.pt.selectedElements = [] - elif symbol == 'Refresh': - pass - elif checked and elementObject not in self.pt.selectedElements: - self.pt.selectedElements.append(elementObject) - elif not checked: - self.pt.selectedElements.remove(elementObject) - self.plot_pt() - def closeEvent(self, event): event.accept() sys.exit(0) diff --git a/Python/periodictable.py b/Python/periodictable.py index 7fa288a..4528eac 100644 --- a/Python/periodictable.py +++ b/Python/periodictable.py @@ -1,61 +1,113 @@ -import sys -from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QCheckBox -from PyQt5.QtCore import pyqtSignal -from periodictableui import Ui_PeriodicTable -from elements import Transition -from elementdata import ElementData +from PyQt5.QtWidgets import QWidget, QPushButton, QGridLayout, QLabel, QHBoxLayout +import pandas as pd +import os -class PeriodicTable(QWidget): - # Custom signal defined here - elementEmitted = pyqtSignal(object, bool) +data = pd.read_csv(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'elements.csv')) +class PeriodicTable(QWidget): def __init__(self): super().__init__() + self.data = data + self.selected_elements = [] + self.selected_elements_names = [] + self.selected_buttons=[] + self.initUI() + + def initUI(self): + self.grid = QGridLayout() + self.grid.setSpacing(0) # Remove spacing between buttons + self.grid.setVerticalSpacing(0) + self.grid.setHorizontalSpacing(0) + for i in range(1, 8): + for j in range(1, 19): + symbol = self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['symbol'].values + if len(symbol) > 0: + button = QPushButton(symbol[0], self) + button.clicked.connect(lambda checked,s=self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]: self.toggleElementSelection(s)) + cpk_color = \ + self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['cpk_color'].values[0] + series_color = \ + self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['series_color'].values[0] + button.setStyleSheet("background-color: %s" % series_color) + button.setMinimumHeight(50) + button.setMaximumWidth(80) + self.grid.addWidget(button, i, j) + self.grid.setRowMinimumHeight(i, 50) + self.grid.setVerticalSpacing(0) + self.grid.setHorizontalSpacing(0) + self.setLayout(self.grid) + self.setGeometry(100, 100, 600, 500) + self.setWindowTitle('Clickable Periodic Table') + + + self.refresh_button = QPushButton('Refresh', self) + self.refresh_button.setStyleSheet("font-weight: bold; font-size: 16px") + self.refresh_button.clicked.connect(self.updateSelectedElements) + self.refresh_button.setMaximumHeight(50) + self.grid.addWidget(self.refresh_button, 1, 5,2,3) + + self.clear_button = QPushButton('Clear', self) + self.clear_button.setStyleSheet("font-weight: bold; font-size: 16px") + self.clear_button.clicked.connect(self.clearSelection) + self.clear_button.setMaximumHeight(50) + self.grid.addWidget(self.clear_button, 1, 8,2,3) + + # create legend + legend_layout = QHBoxLayout() + legend = QLabel(self) + legend.setText("Legend:") + legend.setStyleSheet("font-size: 16px; margin-top: 20px") + legend.move(50, 750) + colors = self.data['series_color'].unique() + + # add legend labels for each color used in the periodic table + for i, color in enumerate(colors): + label = QLabel(self) + label.setStyleSheet("background-color: %s; border: 1px solid black" % color) + label.setFixedSize(30, 30) + label.move(40 + i * 50, 780) + legend_layout.addWidget(label) + legend_text = QLabel(self) + legend_text.setText(self.data[(self.data['series_color']==color)]['series_name'].values[0]) + legend_text.setStyleSheet("font-size: 16px; margin-top: 20px") + legend_text.move(55 + i * 50, 785) + legend_layout.addWidget(legend_text) + self.grid.addLayout(legend_layout, 9, 1, 1, 18) + def toggleElementSelection(self, element): + if element['symbol'].values[0] in self.selected_elements_names: + self.selected_elements_names.remove(element['symbol'].values[0]) + self.selected_elements.remove(element) + print(self.selected_elements_names) + else: + self.selected_elements.append(element) + self.selected_elements_names.append(element['symbol'].values[0]) + for i in range(1, 8): + for j in range(1, 19): + symbol = self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['symbol'].values + if self.grid.itemAtPosition(i, j) is not None and len(symbol) > 0: + button = self.grid.itemAtPosition(i, j).widget() + cpk_color = \ + self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['cpk_color'].values[0] + series_color = \ + self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['series_color'].values[0] + if symbol in self.selected_elements_names: + button.setStyleSheet("border: 3px solid #FF0000; font-weight: bold; color: #FF0000") + else: + button.setStyleSheet("background-color: %s" % series_color) + def clearSelection(self): + self.selected_elements = [] + self.selected_elements_names = [] + for i in range(1, 8): + for j in range(1, 19): + if self.grid.itemAtPosition(i, j) is not None and not self.data[(self.data['period'] == i) & (self.data['group_id'] == j)].empty: + button = self.grid.itemAtPosition(i, j).widget() + cpk_color = \ + self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['cpk_color'].values[0] + series_color = \ + self.data[(self.data['period'] == i) & (self.data['group_id'] == j)]['series_color'].values[0] + button.setStyleSheet("background-color: %s" % series_color) + - self.ui = Ui_PeriodicTable() - self.ui.setupUi(self) - - # Element Objects - self.elements = ElementData().xps - self.periodicTable = {} - #self.selectedElements = [] - - for element in self.elements: - self.periodicTable[element['symbol']] = Transition(element['symbol'], element['alka'], element['aes']) - #print(element['symbol']) - - # Iterates through all of the UI object names and connects slots/signals - # This widget is highly dependent on the naming convention of the buttons - # and line edits, changing the names will break the function assignments - for name in dir(self.ui): - # Element buttons: - if 'ebtn' in name: - btn = getattr(self.ui, name) - btn.clicked[bool].connect(self.emitElement) - elif 'Clear' in name: - btn = getattr(self.ui, name) - btn.clicked.connect(self.emitElement) - elif 'Refresh' in name: - btn = getattr(self.ui, name) - btn.clicked.connect(self.emitElement) - - # Slot for element button clicked signal - # Emits custom signal with elemental symbol and boolean - def emitElement(self, checked): - symbol = self.sender().text() - elementObject = self.periodicTable[symbol] - self.elementEmitted.emit(elementObject, checked) - - if symbol == 'Clear': - for name in dir(self.ui): - # Element buttons: - if 'ebtn' in name: - btnc = getattr(self.ui, name) - btnc.setChecked(False) - -if __name__ == '__main__': - app = QApplication(sys.argv) - window = PeriodicTable() - window.show() - sys.exit(app.exec_()) + def updateSelectedElements(self): + return self.selected_elements diff --git a/Python/periodictableui.py b/Python/periodictableui.py deleted file mode 100644 index f66b548..0000000 --- a/Python/periodictableui.py +++ /dev/null @@ -1,675 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'periodictable.ui' -# -# Created by: PyQt5 UI code generator 5.9.2 -# -# WARNING! All changes made in this file will be lost! - -from PyQt5 import QtCore, QtGui, QtWidgets - -class Ui_PeriodicTable(object): - def setupUi(self, PeriodicTable): - PeriodicTable.setObjectName("PeriodicTable") - PeriodicTable.resize(570, 300) - font = QtGui.QFont() - font.setPointSize(13) - #font.setBold(False) - font.setWeight(75) - PeriodicTable.setFont(font) - self.Refresh = QtWidgets.QPushButton(PeriodicTable) - self.Refresh.setGeometry(QtCore.QRect(120, 10, 82, 40)) - self.Refresh.setCheckable(False) - self.Clear = QtWidgets.QPushButton(PeriodicTable) - self.Clear.setGeometry(QtCore.QRect(200, 10, 82, 40)) - self.Clear.setCheckable(False) - self.ebtnHe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnHe.setGeometry(QtCore.QRect(520, 10, 42, 40)) - self.ebtnHe.setCheckable(True) - self.ebtnHe.setObjectName("ebtnHe") - self.ebtnRa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRa.setGeometry(QtCore.QRect(40, 190, 42, 40)) - self.ebtnRa.setCheckable(True) - self.ebtnRa.setObjectName("ebtnRa") - self.ebtnLu = QtWidgets.QPushButton(PeriodicTable) - self.ebtnLu.setGeometry(QtCore.QRect(520, 230, 42, 40)) - self.ebtnLu.setCheckable(True) - self.ebtnLu.setObjectName("ebtnLu") - self.ebtnGa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnGa.setGeometry(QtCore.QRect(370, 100, 42, 40)) - self.ebtnGa.setCheckable(True) - self.ebtnGa.setObjectName("ebtnGa") - self.ebtnCa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCa.setGeometry(QtCore.QRect(40, 100, 42, 40)) - self.ebtnCa.setCheckable(True) - self.ebtnCa.setObjectName("ebtnCa") - self.ebtnAu = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAu.setGeometry(QtCore.QRect(310, 160, 42, 40)) - self.ebtnAu.setCheckable(True) - self.ebtnAu.setObjectName("ebtnAu") - self.ebtnLa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnLa.setGeometry(QtCore.QRect(100, 230, 42, 40)) - self.ebtnLa.setCheckable(True) - self.ebtnLa.setObjectName("ebtnLa") - self.ebtnYb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnYb.setGeometry(QtCore.QRect(490, 230, 42, 40)) - self.ebtnYb.setCheckable(True) - self.ebtnYb.setObjectName("ebtnYb") - self.ebtnW = QtWidgets.QPushButton(PeriodicTable) - self.ebtnW.setGeometry(QtCore.QRect(160, 160, 42, 40)) - self.ebtnW.setCheckable(True) - self.ebtnW.setObjectName("ebtnW") - self.ebtnBk = QtWidgets.QPushButton(PeriodicTable) - self.ebtnBk.setGeometry(QtCore.QRect(340, 260, 42, 40)) - self.ebtnBk.setCheckable(True) - self.ebtnBk.setObjectName("ebtnBk") - self.ebtnSc = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSc.setGeometry(QtCore.QRect(70, 100, 42, 40)) - self.ebtnSc.setCheckable(True) - self.ebtnSc.setObjectName("ebtnSc") - self.ebtnNi = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNi.setGeometry(QtCore.QRect(280, 100, 42, 40)) - self.ebtnNi.setCheckable(True) - self.ebtnNi.setObjectName("ebtnNi") - self.ebtnBa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnBa.setGeometry(QtCore.QRect(40, 160, 42, 40)) - self.ebtnBa.setCheckable(True) - self.ebtnBa.setObjectName("ebtnBa") - self.ebtnBh = QtWidgets.QPushButton(PeriodicTable) - self.ebtnBh.setGeometry(QtCore.QRect(190, 190, 42, 40)) - self.ebtnBh.setCheckable(True) - self.ebtnBh.setObjectName("ebtnBh") - self.ebtnHs = QtWidgets.QPushButton(PeriodicTable) - self.ebtnHs.setGeometry(QtCore.QRect(220, 190, 42, 40)) - self.ebtnHs.setCheckable(True) - self.ebtnHs.setObjectName("ebtnHs") - self.ebtnHf = QtWidgets.QPushButton(PeriodicTable) - self.ebtnHf.setGeometry(QtCore.QRect(100, 160, 42, 40)) - self.ebtnHf.setCheckable(True) - self.ebtnHf.setObjectName("ebtnHf") - self.ebtnPr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPr.setGeometry(QtCore.QRect(160, 230, 42, 40)) - self.ebtnPr.setCheckable(True) - self.ebtnPr.setObjectName("ebtnPr") - self.ebtnV = QtWidgets.QPushButton(PeriodicTable) - self.ebtnV.setGeometry(QtCore.QRect(130, 100, 42, 40)) - self.ebtnV.setCheckable(True) - self.ebtnV.setObjectName("ebtnV") - self.ebtnN = QtWidgets.QPushButton(PeriodicTable) - self.ebtnN.setGeometry(QtCore.QRect(430, 40, 42, 40)) - self.ebtnN.setCheckable(True) - self.ebtnN.setObjectName("ebtnN") - self.ebtnFr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnFr.setGeometry(QtCore.QRect(10, 190, 42, 40)) - self.ebtnFr.setCheckable(True) - self.ebtnFr.setObjectName("ebtnFr") - self.ebtnGd = QtWidgets.QPushButton(PeriodicTable) - self.ebtnGd.setGeometry(QtCore.QRect(310, 230, 42, 40)) - self.ebtnGd.setCheckable(True) - self.ebtnGd.setObjectName("ebtnGd") - self.ebtnO = QtWidgets.QPushButton(PeriodicTable) - self.ebtnO.setGeometry(QtCore.QRect(460, 40, 42, 40)) - self.ebtnO.setCheckable(True) - self.ebtnO.setObjectName("ebtnO") - self.ebtnPt = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPt.setGeometry(QtCore.QRect(280, 160, 42, 40)) - self.ebtnPt.setCheckable(True) - self.ebtnPt.setObjectName("ebtnPt") - self.ebtnLi = QtWidgets.QPushButton(PeriodicTable) - self.ebtnLi.setGeometry(QtCore.QRect(10, 40, 42, 40)) - self.ebtnLi.setCheckable(True) - self.ebtnLi.setObjectName("ebtnLi") - self.ebtnP = QtWidgets.QPushButton(PeriodicTable) - self.ebtnP.setGeometry(QtCore.QRect(430, 70, 42, 40)) - self.ebtnP.setCheckable(True) - self.ebtnP.setObjectName("ebtnP") - self.ebtnXe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnXe.setGeometry(QtCore.QRect(520, 130, 42, 40)) - self.ebtnXe.setCheckable(True) - self.ebtnXe.setObjectName("ebtnXe") - self.ebtnPd = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPd.setGeometry(QtCore.QRect(280, 130, 42, 40)) - self.ebtnPd.setCheckable(True) - self.ebtnPd.setObjectName("ebtnPd") - self.ebtnDb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnDb.setGeometry(QtCore.QRect(130, 190, 42, 40)) - self.ebtnDb.setCheckable(True) - self.ebtnDb.setObjectName("ebtnDb") - self.ebtnRb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRb.setGeometry(QtCore.QRect(10, 130, 42, 40)) - self.ebtnRb.setCheckable(True) - self.ebtnRb.setObjectName("ebtnRb") - self.ebtnBi = QtWidgets.QPushButton(PeriodicTable) - self.ebtnBi.setGeometry(QtCore.QRect(430, 160, 42, 40)) - self.ebtnBi.setCheckable(True) - self.ebtnBi.setObjectName("ebtnBi") - self.ebtnIn = QtWidgets.QPushButton(PeriodicTable) - self.ebtnIn.setGeometry(QtCore.QRect(370, 130, 42, 40)) - self.ebtnIn.setCheckable(True) - self.ebtnIn.setObjectName("ebtnIn") - self.ebtnS = QtWidgets.QPushButton(PeriodicTable) - self.ebtnS.setGeometry(QtCore.QRect(460, 70, 42, 40)) - self.ebtnS.setCheckable(True) - self.ebtnS.setObjectName("ebtnS") - self.ebtnNd = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNd.setGeometry(QtCore.QRect(190, 230, 42, 40)) - self.ebtnNd.setCheckable(True) - self.ebtnNd.setObjectName("ebtnNd") - self.ebtnNa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNa.setGeometry(QtCore.QRect(10, 70, 42, 40)) - self.ebtnNa.setCheckable(True) - self.ebtnNa.setObjectName("ebtnNa") - self.ebtnIr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnIr.setGeometry(QtCore.QRect(250, 160, 42, 40)) - self.ebtnIr.setCheckable(True) - self.ebtnIr.setObjectName("ebtnIr") - self.ebtnOs = QtWidgets.QPushButton(PeriodicTable) - self.ebtnOs.setGeometry(QtCore.QRect(220, 160, 42, 40)) - self.ebtnOs.setCheckable(True) - self.ebtnOs.setObjectName("ebtnOs") - self.ebtnPu = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPu.setGeometry(QtCore.QRect(250, 260, 42, 40)) - self.ebtnPu.setCheckable(True) - self.ebtnPu.setObjectName("ebtnPu") - self.ebtnTe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTe.setGeometry(QtCore.QRect(460, 130, 42, 40)) - self.ebtnTe.setCheckable(True) - self.ebtnTe.setObjectName("ebtnTe") - self.ebtnEs = QtWidgets.QPushButton(PeriodicTable) - self.ebtnEs.setGeometry(QtCore.QRect(400, 260, 42, 40)) - self.ebtnEs.setCheckable(True) - self.ebtnEs.setObjectName("ebtnEs") - self.ebtnCe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCe.setGeometry(QtCore.QRect(130, 230, 42, 40)) - self.ebtnCe.setCheckable(True) - self.ebtnCe.setObjectName("ebtnCe") - self.ebtnB = QtWidgets.QPushButton(PeriodicTable) - self.ebtnB.setGeometry(QtCore.QRect(370, 40, 42, 40)) - self.ebtnB.setCheckable(True) - self.ebtnB.setObjectName("ebtnB") - self.ebtnRe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRe.setGeometry(QtCore.QRect(190, 160, 42, 40)) - self.ebtnRe.setCheckable(True) - self.ebtnRe.setObjectName("ebtnRe") - self.ebtnCs = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCs.setGeometry(QtCore.QRect(10, 160, 42, 40)) - self.ebtnCs.setCheckable(True) - self.ebtnCs.setObjectName("ebtnCs") - self.ebtnCd = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCd.setGeometry(QtCore.QRect(340, 130, 42, 40)) - self.ebtnCd.setCheckable(True) - self.ebtnCd.setObjectName("ebtnCd") - self.ebtnPb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPb.setGeometry(QtCore.QRect(400, 160, 42, 40)) - self.ebtnPb.setCheckable(True) - self.ebtnPb.setObjectName("ebtnPb") - self.ebtnRn = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRn.setGeometry(QtCore.QRect(520, 160, 42, 40)) - self.ebtnRn.setCheckable(True) - self.ebtnRn.setObjectName("ebtnRn") - self.ebtnY = QtWidgets.QPushButton(PeriodicTable) - self.ebtnY.setGeometry(QtCore.QRect(70, 130, 42, 40)) - self.ebtnY.setCheckable(True) - self.ebtnY.setObjectName("ebtnY") - self.ebtnU = QtWidgets.QPushButton(PeriodicTable) - self.ebtnU.setGeometry(QtCore.QRect(190, 260, 42, 40)) - self.ebtnU.setCheckable(True) - self.ebtnU.setObjectName("ebtnU") - self.ebtnBr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnBr.setGeometry(QtCore.QRect(490, 100, 42, 40)) - self.ebtnBr.setCheckable(True) - self.ebtnBr.setObjectName("ebtnBr") - self.ebtnC = QtWidgets.QPushButton(PeriodicTable) - self.ebtnC.setGeometry(QtCore.QRect(400, 40, 42, 40)) - self.ebtnC.setCheckable(True) - self.ebtnC.setObjectName("ebtnC") - self.ebtnHo = QtWidgets.QPushButton(PeriodicTable) - self.ebtnHo.setGeometry(QtCore.QRect(400, 230, 42, 40)) - self.ebtnHo.setCheckable(True) - self.ebtnHo.setObjectName("ebtnHo") - self.ebtnNp = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNp.setGeometry(QtCore.QRect(220, 260, 42, 40)) - self.ebtnNp.setCheckable(True) - self.ebtnNp.setObjectName("ebtnNp") - self.ebtnEu = QtWidgets.QPushButton(PeriodicTable) - self.ebtnEu.setGeometry(QtCore.QRect(280, 230, 42, 40)) - self.ebtnEu.setCheckable(True) - self.ebtnEu.setObjectName("ebtnEu") - self.ebtnMn = QtWidgets.QPushButton(PeriodicTable) - self.ebtnMn.setGeometry(QtCore.QRect(190, 100, 42, 40)) - self.ebtnMn.setCheckable(True) - self.ebtnMn.setObjectName("ebtnMn") - self.ebtnGe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnGe.setGeometry(QtCore.QRect(400, 100, 42, 40)) - self.ebtnGe.setCheckable(True) - self.ebtnGe.setObjectName("ebtnGe") - self.ebtnAc = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAc.setEnabled(True) - self.ebtnAc.setGeometry(QtCore.QRect(100, 260, 42, 40)) - self.ebtnAc.setAcceptDrops(False) - self.ebtnAc.setCheckable(True) - self.ebtnAc.setChecked(False) - self.ebtnAc.setAutoDefault(False) - self.ebtnAc.setObjectName("ebtnAc") - self.ebtnAl = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAl.setGeometry(QtCore.QRect(370, 70, 42, 40)) - self.ebtnAl.setCheckable(True) - self.ebtnAl.setObjectName("ebtnAl") - self.ebtnSr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSr.setGeometry(QtCore.QRect(40, 130, 42, 40)) - self.ebtnSr.setCheckable(True) - self.ebtnSr.setObjectName("ebtnSr") - self.ebtnPo = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPo.setGeometry(QtCore.QRect(460, 160, 42, 40)) - self.ebtnPo.setCheckable(True) - self.ebtnPo.setObjectName("ebtnPo") - self.ebtnH = QtWidgets.QPushButton(PeriodicTable) - self.ebtnH.setGeometry(QtCore.QRect(10, 10, 42, 40)) - self.ebtnH.setCheckable(True) - self.ebtnH.setObjectName("ebtnH") - self.ebtnMg = QtWidgets.QPushButton(PeriodicTable) - self.ebtnMg.setGeometry(QtCore.QRect(40, 70, 42, 40)) - self.ebtnMg.setCheckable(True) - self.ebtnMg.setObjectName("ebtnMg") - self.ebtnNb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNb.setGeometry(QtCore.QRect(130, 130, 42, 40)) - self.ebtnNb.setCheckable(True) - self.ebtnNb.setObjectName("ebtnNb") - self.ebtnSe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSe.setGeometry(QtCore.QRect(460, 100, 42, 40)) - self.ebtnSe.setCheckable(True) - self.ebtnSe.setObjectName("ebtnSe") - self.ebtnFm = QtWidgets.QPushButton(PeriodicTable) - self.ebtnFm.setGeometry(QtCore.QRect(430, 260, 42, 40)) - self.ebtnFm.setCheckable(True) - self.ebtnFm.setObjectName("ebtnFm") - self.ebtnRu = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRu.setGeometry(QtCore.QRect(220, 130, 42, 40)) - self.ebtnRu.setCheckable(True) - self.ebtnRu.setObjectName("ebtnRu") - self.ebtnZr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnZr.setGeometry(QtCore.QRect(100, 130, 42, 40)) - self.ebtnZr.setCheckable(True) - self.ebtnZr.setObjectName("ebtnZr") - self.ebtnCm = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCm.setGeometry(QtCore.QRect(310, 260, 42, 40)) - self.ebtnCm.setCheckable(True) - self.ebtnCm.setObjectName("ebtnCm") - self.ebtnAm = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAm.setGeometry(QtCore.QRect(280, 260, 42, 40)) - self.ebtnAm.setCheckable(True) - self.ebtnAm.setObjectName("ebtnAm") - self.ebtnNo = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNo.setGeometry(QtCore.QRect(490, 260, 42, 40)) - self.ebtnNo.setCheckable(True) - self.ebtnNo.setObjectName("ebtnNo") - self.ebtnMt = QtWidgets.QPushButton(PeriodicTable) - self.ebtnMt.setGeometry(QtCore.QRect(250, 190, 42, 40)) - self.ebtnMt.setCheckable(True) - self.ebtnMt.setObjectName("ebtnMt") - self.ebtnTh = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTh.setGeometry(QtCore.QRect(130, 260, 42, 40)) - self.ebtnTh.setCheckable(True) - self.ebtnTh.setObjectName("ebtnTh") - self.ebtnK = QtWidgets.QPushButton(PeriodicTable) - self.ebtnK.setGeometry(QtCore.QRect(10, 100, 42, 40)) - self.ebtnK.setCheckable(True) - self.ebtnK.setObjectName("ebtnK") - self.ebtnMo = QtWidgets.QPushButton(PeriodicTable) - self.ebtnMo.setGeometry(QtCore.QRect(160, 130, 42, 40)) - self.ebtnMo.setCheckable(True) - self.ebtnMo.setObjectName("ebtnMo") - self.ebtnF = QtWidgets.QPushButton(PeriodicTable) - self.ebtnF.setGeometry(QtCore.QRect(490, 40, 42, 40)) - self.ebtnF.setCheckable(True) - self.ebtnF.setObjectName("ebtnF") - self.ebtnTc = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTc.setGeometry(QtCore.QRect(190, 130, 42, 40)) - self.ebtnTc.setCheckable(True) - self.ebtnTc.setObjectName("ebtnTc") - self.ebtnNe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnNe.setGeometry(QtCore.QRect(520, 40, 42, 40)) - self.ebtnNe.setCheckable(True) - self.ebtnNe.setObjectName("ebtnNe") - self.ebtnCo = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCo.setGeometry(QtCore.QRect(250, 100, 42, 40)) - self.ebtnCo.setCheckable(True) - self.ebtnCo.setObjectName("ebtnCo") - self.ebtnMd = QtWidgets.QPushButton(PeriodicTable) - self.ebtnMd.setGeometry(QtCore.QRect(460, 260, 42, 40)) - self.ebtnMd.setCheckable(True) - self.ebtnMd.setObjectName("ebtnMd") - self.ebtnSb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSb.setGeometry(QtCore.QRect(430, 130, 42, 40)) - self.ebtnSb.setCheckable(True) - self.ebtnSb.setObjectName("ebtnSb") - self.ebtnTb = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTb.setGeometry(QtCore.QRect(340, 230, 42, 40)) - self.ebtnTb.setCheckable(True) - self.ebtnTb.setObjectName("ebtnTb") - self.ebtnTm = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTm.setGeometry(QtCore.QRect(460, 230, 42, 40)) - self.ebtnTm.setCheckable(True) - self.ebtnTm.setObjectName("ebtnTm") - self.ebtnEr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnEr.setGeometry(QtCore.QRect(430, 230, 42, 40)) - self.ebtnEr.setCheckable(True) - self.ebtnEr.setObjectName("ebtnEr") - self.ebtnCl = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCl.setGeometry(QtCore.QRect(490, 70, 42, 40)) - self.ebtnCl.setCheckable(True) - self.ebtnCl.setObjectName("ebtnCl") - self.ebtnAt = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAt.setGeometry(QtCore.QRect(490, 160, 42, 40)) - self.ebtnAt.setCheckable(True) - self.ebtnAt.setObjectName("ebtnAt") - self.ebtnCr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCr.setGeometry(QtCore.QRect(160, 100, 42, 40)) - self.ebtnCr.setCheckable(True) - self.ebtnCr.setObjectName("ebtnCr") - self.ebtnTa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTa.setGeometry(QtCore.QRect(130, 160, 42, 40)) - self.ebtnTa.setCheckable(True) - self.ebtnTa.setObjectName("ebtnTa") - self.ebtnRh = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRh.setGeometry(QtCore.QRect(250, 130, 42, 40)) - self.ebtnRh.setCheckable(True) - self.ebtnRh.setObjectName("ebtnRh") - self.ebtnI = QtWidgets.QPushButton(PeriodicTable) - self.ebtnI.setGeometry(QtCore.QRect(490, 130, 42, 40)) - self.ebtnI.setCheckable(True) - self.ebtnI.setObjectName("ebtnI") - self.ebtnTl = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTl.setGeometry(QtCore.QRect(370, 160, 42, 40)) - self.ebtnTl.setCheckable(True) - self.ebtnTl.setObjectName("ebtnTl") - self.ebtnSn = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSn.setGeometry(QtCore.QRect(400, 130, 42, 40)) - self.ebtnSn.setCheckable(True) - self.ebtnSn.setObjectName("ebtnSn") - self.ebtnPa = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPa.setGeometry(QtCore.QRect(160, 260, 42, 40)) - self.ebtnPa.setCheckable(True) - self.ebtnPa.setObjectName("ebtnPa") - self.ebtnAr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAr.setGeometry(QtCore.QRect(520, 70, 42, 40)) - self.ebtnAr.setCheckable(True) - self.ebtnAr.setObjectName("ebtnAr") - self.ebtnSi = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSi.setGeometry(QtCore.QRect(400, 70, 42, 40)) - self.ebtnSi.setCheckable(True) - self.ebtnSi.setObjectName("ebtnSi") - self.ebtnSm = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSm.setGeometry(QtCore.QRect(250, 230, 42, 40)) - self.ebtnSm.setCheckable(True) - self.ebtnSm.setObjectName("ebtnSm") - self.ebtnFe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnFe.setGeometry(QtCore.QRect(220, 100, 42, 40)) - self.ebtnFe.setCheckable(True) - self.ebtnFe.setObjectName("ebtnFe") - self.ebtnKr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnKr.setGeometry(QtCore.QRect(520, 100, 42, 40)) - self.ebtnKr.setCheckable(True) - self.ebtnKr.setObjectName("ebtnKr") - self.ebtnBe = QtWidgets.QPushButton(PeriodicTable) - self.ebtnBe.setGeometry(QtCore.QRect(40, 40, 42, 40)) - self.ebtnBe.setCheckable(True) - self.ebtnBe.setObjectName("ebtnBe") - self.ebtnRf = QtWidgets.QPushButton(PeriodicTable) - self.ebtnRf.setGeometry(QtCore.QRect(100, 190, 42, 40)) - self.ebtnRf.setCheckable(True) - self.ebtnRf.setObjectName("ebtnRf") - self.ebtnLr = QtWidgets.QPushButton(PeriodicTable) - self.ebtnLr.setGeometry(QtCore.QRect(520, 260, 42, 40)) - self.ebtnLr.setCheckable(True) - self.ebtnLr.setObjectName("ebtnLr") - self.ebtnSg = QtWidgets.QPushButton(PeriodicTable) - self.ebtnSg.setGeometry(QtCore.QRect(160, 190, 42, 40)) - self.ebtnSg.setCheckable(True) - self.ebtnSg.setObjectName("ebtnSg") - self.ebtnHg = QtWidgets.QPushButton(PeriodicTable) - self.ebtnHg.setGeometry(QtCore.QRect(340, 160, 42, 40)) - self.ebtnHg.setCheckable(True) - self.ebtnHg.setObjectName("ebtnHg") - self.ebtnAs = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAs.setGeometry(QtCore.QRect(430, 100, 42, 40)) - self.ebtnAs.setCheckable(True) - self.ebtnAs.setObjectName("ebtnAs") - self.ebtnCu = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCu.setGeometry(QtCore.QRect(310, 100, 42, 40)) - self.ebtnCu.setCheckable(True) - self.ebtnCu.setObjectName("ebtnCu") - self.ebtnCf = QtWidgets.QPushButton(PeriodicTable) - self.ebtnCf.setGeometry(QtCore.QRect(370, 260, 42, 40)) - self.ebtnCf.setCheckable(True) - self.ebtnCf.setObjectName("ebtnCf") - self.ebtnTi = QtWidgets.QPushButton(PeriodicTable) - self.ebtnTi.setGeometry(QtCore.QRect(100, 100, 42, 40)) - self.ebtnTi.setCheckable(True) - self.ebtnTi.setObjectName("ebtnTi") - self.ebtnDy = QtWidgets.QPushButton(PeriodicTable) - self.ebtnDy.setGeometry(QtCore.QRect(370, 230, 42, 40)) - self.ebtnDy.setCheckable(True) - self.ebtnDy.setObjectName("ebtnDy") - self.ebtnPm = QtWidgets.QPushButton(PeriodicTable) - self.ebtnPm.setGeometry(QtCore.QRect(220, 230, 42, 40)) - self.ebtnPm.setCheckable(True) - self.ebtnPm.setObjectName("ebtnPm") - self.ebtnAg = QtWidgets.QPushButton(PeriodicTable) - self.ebtnAg.setGeometry(QtCore.QRect(310, 130, 42, 40)) - self.ebtnAg.setCheckable(True) - self.ebtnAg.setObjectName("ebtnAg") - self.ebtnZn = QtWidgets.QPushButton(PeriodicTable) - self.ebtnZn.setGeometry(QtCore.QRect(340, 100, 42, 40)) - self.ebtnZn.setCheckable(True) - self.ebtnZn.setObjectName("ebtnZn") - #self.label_3 = QtWidgets.QLabel(PeriodicTable) - #self.label_3.setGeometry(QtCore.QRect(100, 10, 231, 20)) - #font = QtGui.QFont() - #font.setPointSize(9) - #font.setBold(True) - #font.setWeight(75) - #self.label_3.setFont(font) - #self.label_3.setObjectName("label_3") - #self.label_4 = QtWidgets.QLabel(PeriodicTable) - #self.label_4.setGeometry(QtCore.QRect(580, 10, 231, 20)) - #font = QtGui.QFont() - #font.setPointSize(9) - #font.setBold(True) - #font.setWeight(75) - #self.label_4.setFont(font) - #self.label_4.setObjectName("label_4") - #self.ligCheckBox1 = QtWidgets.QCheckBox(PeriodicTable) - #self.ligCheckBox1.setGeometry(QtCore.QRect(570, 73, 21, 17)) - #self.ligCheckBox1.setText("") - #self.ligCheckBox1.setObjectName("ligCheckBox1") - #self.ligFormula1 = QtWidgets.QLineEdit(PeriodicTable) - #self.ligFormula1.setGeometry(QtCore.QRect(590, 71, 61, 20)) - #self.ligFormula1.setObjectName("ligFormula1") - #self.ligMass1 = QtWidgets.QLineEdit(PeriodicTable) - #self.ligMass1.setGeometry(QtCore.QRect(660, 71, 61, 20)) - #self.ligMass1.setReadOnly(True) - #self.ligMass1.setObjectName("ligMass1") - #self.ligClear1 = QtWidgets.QPushButton(PeriodicTable) - #self.ligClear1.setGeometry(QtCore.QRect(740, 70, 21, 23)) - #self.ligClear1.setObjectName("ligClear1") - #self.label_5 = QtWidgets.QLabel(PeriodicTable) - #self.label_5.setGeometry(QtCore.QRect(590, 50, 231, 20)) - #font = QtGui.QFont() - #font.setPointSize(9) - #font.setBold(True) - #font.setWeight(75) - #self.label_5.setFont(font) - #self.label_5.setObjectName("label_5") - #self.label_6 = QtWidgets.QLabel(PeriodicTable) - #self.label_6.setGeometry(QtCore.QRect(660, 50, 231, 20)) - #font = QtGui.QFont() - #font.setPointSize(9) - #font.setBold(True) - #font.setWeight(75) - #self.label_6.setFont(font) - #self.label_6.setObjectName("label_6") - #self.ligClear2 = QtWidgets.QPushButton(PeriodicTable) - #self.ligClear2.setGeometry(QtCore.QRect(740, 109, 21, 23)) - #self.ligClear2.setObjectName("ligClear2") - #self.ligCheckBox2 = QtWidgets.QCheckBox(PeriodicTable) - #self.ligCheckBox2.setGeometry(QtCore.QRect(570, 112, 21, 17)) - #self.ligCheckBox2.setText("") - #self.ligCheckBox2.setObjectName("ligCheckBox2") - #self.ligFormula2 = QtWidgets.QLineEdit(PeriodicTable) - #self.ligFormula2.setGeometry(QtCore.QRect(590, 110, 61, 20)) - #self.ligFormula2.setObjectName("ligFormula2") - #self.ligMass2 = QtWidgets.QLineEdit(PeriodicTable) - #self.ligMass2.setGeometry(QtCore.QRect(660, 110, 61, 20)) - #self.ligMass2.setReadOnly(True) - #self.ligMass2.setObjectName("ligMass2") - #self.ligMass3 = QtWidgets.QLineEdit(PeriodicTable) - #self.ligMass3.setGeometry(QtCore.QRect(660, 150, 61, 20)) - #self.ligMass3.setReadOnly(True) - #self.ligMass3.setObjectName("ligMass3") - #self.ligClear3 = QtWidgets.QPushButton(PeriodicTable) - #self.ligClear3.setGeometry(QtCore.QRect(740, 149, 21, 23)) - #self.ligClear3.setObjectName("ligClear3") - #self.ligCheckBox3 = QtWidgets.QCheckBox(PeriodicTable) - #self.ligCheckBox3.setGeometry(QtCore.QRect(570, 152, 21, 17)) - #self.ligCheckBox3.setText("") - #self.ligCheckBox3.setObjectName("ligCheckBox3") - #self.ligFormula3 = QtWidgets.QLineEdit(PeriodicTable) - #self.ligFormula3.setGeometry(QtCore.QRect(590, 150, 61, 20)) - #self.ligFormula3.setObjectName("ligFormula3") - - self.retranslateUi(PeriodicTable) - QtCore.QMetaObject.connectSlotsByName(PeriodicTable) - - def retranslateUi(self, PeriodicTable): - _translate = QtCore.QCoreApplication.translate - PeriodicTable.setWindowTitle(_translate("PeriodicTable", "PeriodicTable")) - self.Refresh.setText(_translate("PeriodicTable", "Refresh")) - self.Clear.setText(_translate("PeriodicTable", "Clear")) - self.ebtnHe.setText(_translate("PeriodicTable", "He")) - self.ebtnRa.setText(_translate("PeriodicTable", "Ra")) - self.ebtnLu.setText(_translate("PeriodicTable", "Lu")) - self.ebtnGa.setText(_translate("PeriodicTable", "Ga")) - self.ebtnCa.setText(_translate("PeriodicTable", "Ca")) - self.ebtnAu.setText(_translate("PeriodicTable", "Au")) - self.ebtnLa.setText(_translate("PeriodicTable", "La")) - self.ebtnYb.setText(_translate("PeriodicTable", "Yb")) - self.ebtnW.setText(_translate("PeriodicTable", "W")) - self.ebtnBk.setText(_translate("PeriodicTable", "Bk")) - self.ebtnSc.setText(_translate("PeriodicTable", "Sc")) - self.ebtnNi.setText(_translate("PeriodicTable", "Ni")) - self.ebtnBa.setText(_translate("PeriodicTable", "Ba")) - self.ebtnBh.setText(_translate("PeriodicTable", "Bh")) - self.ebtnHs.setText(_translate("PeriodicTable", "Hs")) - self.ebtnHf.setText(_translate("PeriodicTable", "Hf")) - self.ebtnPr.setText(_translate("PeriodicTable", "Pr")) - self.ebtnV.setText(_translate("PeriodicTable", "V")) - self.ebtnN.setText(_translate("PeriodicTable", "N")) - self.ebtnFr.setText(_translate("PeriodicTable", "Fr")) - self.ebtnGd.setText(_translate("PeriodicTable", "Gd")) - self.ebtnO.setText(_translate("PeriodicTable", "O")) - self.ebtnPt.setText(_translate("PeriodicTable", "Pt")) - self.ebtnLi.setText(_translate("PeriodicTable", "Li")) - self.ebtnP.setText(_translate("PeriodicTable", "P")) - self.ebtnXe.setText(_translate("PeriodicTable", "Xe")) - self.ebtnPd.setText(_translate("PeriodicTable", "Pd")) - self.ebtnDb.setText(_translate("PeriodicTable", "Db")) - self.ebtnRb.setText(_translate("PeriodicTable", "Rb")) - self.ebtnBi.setText(_translate("PeriodicTable", "Bi")) - self.ebtnIn.setText(_translate("PeriodicTable", "In")) - self.ebtnS.setText(_translate("PeriodicTable", "S")) - self.ebtnNd.setText(_translate("PeriodicTable", "Nd")) - self.ebtnNa.setText(_translate("PeriodicTable", "Na")) - self.ebtnIr.setText(_translate("PeriodicTable", "Ir")) - self.ebtnOs.setText(_translate("PeriodicTable", "Os")) - self.ebtnPu.setText(_translate("PeriodicTable", "Pu")) - self.ebtnTe.setText(_translate("PeriodicTable", "Te")) - self.ebtnEs.setText(_translate("PeriodicTable", "Es")) - self.ebtnCe.setText(_translate("PeriodicTable", "Ce")) - self.ebtnB.setText(_translate("PeriodicTable", "B")) - self.ebtnRe.setText(_translate("PeriodicTable", "Re")) - self.ebtnCs.setText(_translate("PeriodicTable", "Cs")) - self.ebtnCd.setText(_translate("PeriodicTable", "Cd")) - self.ebtnPb.setText(_translate("PeriodicTable", "Pb")) - self.ebtnRn.setText(_translate("PeriodicTable", "Rn")) - self.ebtnY.setText(_translate("PeriodicTable", "Y")) - self.ebtnU.setText(_translate("PeriodicTable", "U")) - self.ebtnBr.setText(_translate("PeriodicTable", "Br")) - self.ebtnC.setText(_translate("PeriodicTable", "C")) - self.ebtnHo.setText(_translate("PeriodicTable", "Ho")) - self.ebtnNp.setText(_translate("PeriodicTable", "Np")) - self.ebtnEu.setText(_translate("PeriodicTable", "Eu")) - self.ebtnMn.setText(_translate("PeriodicTable", "Mn")) - self.ebtnGe.setText(_translate("PeriodicTable", "Ge")) - self.ebtnAc.setText(_translate("PeriodicTable", "Ac")) - self.ebtnAl.setText(_translate("PeriodicTable", "Al")) - self.ebtnSr.setText(_translate("PeriodicTable", "Sr")) - self.ebtnPo.setText(_translate("PeriodicTable", "Po")) - self.ebtnH.setText(_translate("PeriodicTable", "H")) - self.ebtnMg.setText(_translate("PeriodicTable", "Mg")) - self.ebtnNb.setText(_translate("PeriodicTable", "Nb")) - self.ebtnSe.setText(_translate("PeriodicTable", "Se")) - self.ebtnFm.setText(_translate("PeriodicTable", "Fm")) - self.ebtnRu.setText(_translate("PeriodicTable", "Ru")) - self.ebtnZr.setText(_translate("PeriodicTable", "Zr")) - self.ebtnCm.setText(_translate("PeriodicTable", "Cm")) - self.ebtnAm.setText(_translate("PeriodicTable", "Am")) - self.ebtnNo.setText(_translate("PeriodicTable", "No")) - self.ebtnMt.setText(_translate("PeriodicTable", "Mt")) - self.ebtnTh.setText(_translate("PeriodicTable", "Th")) - self.ebtnK.setText(_translate("PeriodicTable", "K")) - self.ebtnMo.setText(_translate("PeriodicTable", "Mo")) - self.ebtnF.setText(_translate("PeriodicTable", "F")) - self.ebtnTc.setText(_translate("PeriodicTable", "Tc")) - self.ebtnNe.setText(_translate("PeriodicTable", "Ne")) - self.ebtnCo.setText(_translate("PeriodicTable", "Co")) - self.ebtnMd.setText(_translate("PeriodicTable", "Md")) - self.ebtnSb.setText(_translate("PeriodicTable", "Sb")) - self.ebtnTb.setText(_translate("PeriodicTable", "Tb")) - self.ebtnTm.setText(_translate("PeriodicTable", "Tm")) - self.ebtnEr.setText(_translate("PeriodicTable", "Er")) - self.ebtnCl.setText(_translate("PeriodicTable", "Cl")) - self.ebtnAt.setText(_translate("PeriodicTable", "At")) - self.ebtnCr.setText(_translate("PeriodicTable", "Cr")) - self.ebtnTa.setText(_translate("PeriodicTable", "Ta")) - self.ebtnRh.setText(_translate("PeriodicTable", "Rh")) - self.ebtnI.setText(_translate("PeriodicTable", "I")) - self.ebtnTl.setText(_translate("PeriodicTable", "Tl")) - self.ebtnSn.setText(_translate("PeriodicTable", "Sn")) - self.ebtnPa.setText(_translate("PeriodicTable", "Pa")) - self.ebtnAr.setText(_translate("PeriodicTable", "Ar")) - self.ebtnSi.setText(_translate("PeriodicTable", "Si")) - self.ebtnSm.setText(_translate("PeriodicTable", "Sm")) - self.ebtnFe.setText(_translate("PeriodicTable", "Fe")) - self.ebtnKr.setText(_translate("PeriodicTable", "Kr")) - self.ebtnBe.setText(_translate("PeriodicTable", "Be")) - self.ebtnRf.setText(_translate("PeriodicTable", "Rf")) - self.ebtnLr.setText(_translate("PeriodicTable", "Lr")) - self.ebtnSg.setText(_translate("PeriodicTable", "Sg")) - self.ebtnHg.setText(_translate("PeriodicTable", "Hg")) - self.ebtnAs.setText(_translate("PeriodicTable", "As")) - self.ebtnCu.setText(_translate("PeriodicTable", "Cu")) - self.ebtnCf.setText(_translate("PeriodicTable", "Cf")) - self.ebtnTi.setText(_translate("PeriodicTable", "Ti")) - self.ebtnDy.setText(_translate("PeriodicTable", "Dy")) - self.ebtnPm.setText(_translate("PeriodicTable", "Pm")) - self.ebtnAg.setText(_translate("PeriodicTable", "Ag")) - self.ebtnZn.setText(_translate("PeriodicTable", "Zn")) - #self.label_3.setText(_translate("PeriodicTable", "Step 1: Choose Elements To Include")) - #self.label_4.setText(_translate("PeriodicTable", "Optional: Custom Ligand")) - #self.ligClear1.setText(_translate("PeriodicTable", "x")) - #self.label_5.setText(_translate("PeriodicTable", "Formula")) - #self.label_6.setText(_translate("PeriodicTable", "Mass")) - #self.ligClear2.setText(_translate("PeriodicTable", "x")) - #self.ligClear3.setText(_translate("PeriodicTable", "x")) - - -if __name__ == "__main__": - import sys - app = QtWidgets.QApplication(sys.argv) - PeriodicTable = QtWidgets.QWidget() - ui = Ui_PeriodicTable() - ui.setupUi(PeriodicTable) - PeriodicTable.show() - sys.exit(app.exec_()) - diff --git a/Python/usrmodel.py b/Python/usrmodel.py index a46602f..f6e1d16 100644 --- a/Python/usrmodel.py +++ b/Python/usrmodel.py @@ -313,3 +313,185 @@ def guess(self, data, x=None, **kwargs): self.set_param_hint('sigma', value=(max(x) - min(x)) / len(x), min=0, max=2) params = self.make_params() return lmfit.models.update_param_vals(params, self.prefix, **kwargs) + + +bgrnd = [[], [], []] + + +def tougaard(x, y, B, C, C_d, D,extend=30, only_vary_B=True): + """ + Calculates the Tougaard background of an X-ray photoelectron spectroscopy (XPS) spectrum. + + The following implementation is based on the four-parameter loss function as suggested by R.Hesse (https://doi.org/10.1002/sia.3746). + In contrast to R.Hesse, the Tougaard background is not leveled + with the data using a constant, but the background on the high-energy side is extended. This approach was + found to lead to great convergence empirically, however, the length of the data extension remains arbitrary. + + To reduce computing time, as long as only B should be variated (which makes sense in most cases), if the loss function was already calculated, + only b is further optimized. + + Parameters + ---------- + x : array-like + 1D-array containing the x-values (energies) of the spectrum. + y : array-like + 1D-array containing the y-values (intensities) of the spectrum. + B : float + Scaling factor of the Tougaard background model. + C : float + C_d : float + D : float + extend : float, optional + Length of the data extension on the high-kinetic-energy side. Defaults to 30. + only_vary_B : bool, optional + Whether to only vary the scaling factor `B` when calculating the background. Defaults to True. + Varying all parameters of Tougaard background leads to instabilities and weird shaped backgrounds. + + + Returns + ------- + array-like + The Tougaard background of the XPS spectrum. + + See Also + ------- + The following implementation is based on the four-parameter loss function as suggested by R.Hesse [https://doi.org/10.1002/sia.3746]. + """ + global bgrnd + if np.array_equal(bgrnd[0], y) and only_vary_B and bgrnd[2][0]==extend: # only variating B and loss function was already calculated + return [B * elem for elem in bgrnd[1]] + else: + bgrnd[0] = y + bgrnd[2] = [extend] + bg = [] + delta_x = abs((x[-1] - x[0]) / len(x)) + len_padded = int(extend / delta_x) # sets expansion lenght, values between 15 to 50 work great + padded_x = np.concatenate((x, np.linspace(x[-1] + delta_x, x[-1] + delta_x * len_padded, len_padded))) + padded_y = np.concatenate((y, np.mean(y[-10:]) * np.ones(len_padded))) + for k in range(len(x)): + x_k = x[k] + bg_temp = 0 + for j in range(len(padded_y[k:])): + padded_x_kj = padded_x[k + j] + bg_temp += (padded_x_kj - x_k) / ((C + C_d * (padded_x_kj - x_k) ** 2) ** 2 + + D * (padded_x_kj - x_k) ** 2) * padded_y[k + j] * delta_x + bg.append(bg_temp) + bgrnd[1] = bg + return [B * elem for elem in bgrnd[1]] + + +class TougaardBG(lmfit.model.Model): + __doc__ = "Model of the 4 parameter loss function Tougaard. " \ + "The implementation is based on the four-parameter loss function as suggested by R.Hesse [https://doi.org/10.1002/sia.3746]. In addition, the extend parameter is introduced, which improves the agreement between data and Tougaard BG by extending the Data on the high-kinetic energy side (low binding energy side) by the mean intensity value at the rightmost kinetic energy scale. extend represents the length of the data extension on the high-kinetic-energy side in eV. Defaults to 30." + lmfit.models.COMMON_INIT_DOC + + def __init__(self, *args, **kwargs): + super().__init__(tougaard, *args, **kwargs) + self._set_paramhints_prefix() + + def _set_paramhints_prefix(self): + self.set_param_hint('B', value=2886, min=0) + self.set_param_hint('C', value=1643, min=0) + self.set_param_hint('C_d', value=1, min=0) + self.set_param_hint('D', value=1, min=0) + self.set_param_hint('extend', value=30, vary=False) + + def guess(self, data, x=None, **kwargs): + if x is None: + return + params = self.make_params(B=2886, C=1643, C_d=1, D=1) + return lmfit.models.update_param_vals(params, self.prefix, **kwargs) + + +def shirley(y, k, const): + """ + Calculates the Shirley background of an X-ray photoelectron spectroscopy (XPS) spectrum. + This implementation calculates the Shirley background by integrating the step characteristic of the spectrum. + + Parameters + ---------- + y : array-like + 1D-array containing the y-values (intensities) of the spectrum. + k : float + Slope of the step characteristic. + const : float + Constant offset of the step characteristic. + + Returns + ------- + array-like + The Shirley background of the XPS spectrum. + """ + n = len(y) + y_right = const + y_temp = y - y_right # step characteristic is better approximated, if only the step without background is integrated + bg = [] + for i in range(n): + bg.append(np.sum(y_temp[i:])) + return np.asarray([k * elem + y_right for elem in bg]) + + +class ShirleyBG(lmfit.model.Model): + __doc__ = "Model of the Shirley background for X-ray photoelectron spectroscopy (XPS) spectra." + lmfit.models.COMMON_INIT_DOC + def __init__(self, *args, **kwargs): + super().__init__(shirley, *args, **kwargs) + self._set_paramhints_prefix() + + def _set_paramhints_prefix(self): + self.set_param_hint('k', value=0.03, min=0) + self.set_param_hint('const', value=1000, min=0) + def guess(self, data, x=None, **kwargs): + if x is None: + return + params = self.make_params(k=0.03,const=1000) + return lmfit.models.update_param_vals(params, self.prefix, **kwargs) + + +def slope(y, k): + """ + Calculates the slope background of an X-ray photoelectron spectroscopy (XPS) spectrum. + The slope background has some similarities to the Shirley background, e.g. the slope background is calculated integrating the Shirley background from each data point to the + end. Afterwards, a slope parameter k is used for scaling the slope accordingly to the measured data. + + Parameters + ---------- + y : array-like + 1D-array containing the y-values (intensities) of the spectrum. + k : float + Slope of the linear function for determining the background. + + Returns + ------- + array-like + The slope background of the XPS spectrum. + + See Also + -------- + Slope Background implemented as suggested by A. Herrera-Gomez et al in [DOI: 10.1016/j.elspec.2013.07.006]. + """ + n = len(y) + y_right = np.min(y) + y_temp = y - y_right + temp = [] + bg = [] + for i in range(n): + temp.append(np.sum(y_temp[i:])) + for j in range(n): + bg.append(np.sum(temp[j:])) + return np.asarray([-k * elem for elem in bg]) + + +class SlopeBG(lmfit.model.Model): + __doc__ = "Model of the Slopey background for X-ray photoelectron spectroscopy (XPS) spectra. Slope Background implemented as suggested by A. Herrera-Gomez et al in [DOI: 10.1016/j.elspec.2013.07.006]." + lmfit.models.COMMON_INIT_DOC + + def __init__(self, *args, **kwargs): + super().__init__(slope, *args, **kwargs) + self._set_paramhints_prefix() + + def _set_paramhints_prefix(self): + self.set_param_hint('k', value=0.01) + + def guess(self, data, x=None, **kwargs): + if x is None: + return + params = self.make_params(k=0.01) + return lmfit.models.update_param_vals(params, self.prefix, **kwargs) \ No newline at end of file diff --git a/Python/xpspy.py b/Python/xpspy.py index f3752b4..d3c4382 100644 --- a/Python/xpspy.py +++ b/Python/xpspy.py @@ -76,7 +76,7 @@ def shirley_calculate(x, y, tol=1e-5, maxit=10): # print(any(x), any(y), (any(x) and any(y))) if not (any(x) and any(y)): print("One of the arrays x or y is empty. Returning zero background.") - return x * 0 + return np.asarray(x * 0) # Next ensure the energy values are *decreasing* in the array, # if not, reverse them. @@ -94,7 +94,7 @@ def shirley_calculate(x, y, tol=1e-5, maxit=10): # we can't use this algorithm, we return a zero background. if maxidx == 0 or maxidx >= len(y) - 1: print("Boundaries too high for algorithm: returning a zero background.") - return x * 0 + return np.asarray(x * 0) # Locate the minima either side of maxidx. lmidx = abs(y[0:maxidx] - y[0:maxidx].min()).argmin() @@ -142,10 +142,10 @@ def shirley_calculate(x, y, tol=1e-5, maxit=10): print("Max iterations exceeded before convergence.") if is_reversed: # print("Shirley BG: tol (ini = ", tol, ") , iteration (max = ", maxit, "): ", it) - return (yr + B)[::-1] + return np.asarray((yr + B)[::-1]) else: # print("Shirley BG: tol (ini = ", tol, ") , iteration (max = ", maxit, "): ", it) - return yr + B + return np.asarray(yr + B) def tougaard_calculate(x, y, tb=2866, tc=1643, tcd=1, td=1, maxit=100): @@ -154,7 +154,7 @@ def tougaard_calculate(x, y, tb=2866, tc=1643, tcd=1, td=1, maxit=100): # Sanity check: Do we actually have data to process here? if not (any(x) and any(y)): print("One of the arrays x or y is empty. Returning zero background.") - return [x * 0, tb] + return [np.asarray(x * 0), tb] # KE in XPS or PE in XAS if x[0] < x[-1]: @@ -193,66 +193,5 @@ def tougaard_calculate(x, y, tb=2866, tc=1643, tcd=1, td=1, maxit=100): print("Tougaard B:", tb, ", C:", tc, ", C':", tcd, ", D:", td) - return [y[len(y) - 1] + Btou, tb] + return [np.asarray(y[len(y) - 1] + Btou), tb] - -bgrnd = [[], []] - - -def tougaard2(x, y, B, C, C_d, D): - # returns an approximation of the Tougaard BG for a given parameterset - if np.array_equal(bgrnd[0], y): - return [B * elem for elem in bgrnd[1]] - else: - bgrnd[0] = y - bg = [] - delta_x = abs((x[-1] - x[0]) / len(x)) - extend=35 - len_padded = int(extend / delta_x) - # len_padded = 3*len(x) - padded_x = np.concatenate((x, np.linspace(x[-1] + delta_x, x[-1] + delta_x * len_padded, len_padded))) - padded_y = np.concatenate((y,np.mean(y[-10:]) * np.ones(len_padded))) - for k in range(len(x)): - x_k = x[k] - bg_temp = 0 - for j in range(len(padded_y[k:])): - padded_x_kj = padded_x[k + j] - bg_temp += (padded_x_kj - x_k) / ((C + C_d * (padded_x_kj - x_k) ** 2) ** 2 - + D * (padded_x_kj - x_k) ** 2) * padded_y[k + j] * delta_x - bg.append(bg_temp) - bgrnd[1] = bg - return [B * elem for elem in bgrnd[1]] - - -def tougaard(x, y, B, C, C_d, D): - # returns an approximation of the Tougaard BG for a given parameterset - if np.array_equal(bgrnd[0], y): - return [[B * elem for elem in bgrnd[1]], B] - else: - bgrnd[0] = y - bg = [] - delta_x = abs((x[-1] - x[0]) / len(x)) - len_padded = int(50 / delta_x ) - # len_padded = 3*len(x) - padded_x = np.concatenate((x, np.linspace(x[-1] + delta_x, x[-1] + delta_x * len_padded, len_padded))) - padded_y = np.concatenate((y, np.mean(y[-1:]) * np.ones(len_padded))) - for k in range(len(x)): - x_k = x[k] - bg_temp = 0 - for j in range(len(padded_y[k:])): - padded_x_kj = padded_x[k + j] - bg_temp += (padded_x_kj - x_k) / ((C + C_d * (padded_x_kj - x_k) ** 2) ** 2 - + D * (padded_x_kj - x_k) ** 2) * padded_y[k + j] * delta_x - bg.append(bg_temp) - bgrnd[1] = bg - return [[B * elem for elem in bg], B] - - -def shirley(y, k, const): - n = len(y) - y_right = const - y_temp = y - y_right - bg = [] - for i in range(n): - bg.append(np.sum(y_temp[i:])) - return [k * elem + y_right for elem in bg] diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index f40fbd8..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -_site -.sass-cache -.jekyll-cache -.jekyll-metadata -vendor diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 086a5c9..0000000 --- a/docs/404.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -permalink: /404.html -layout: default ---- - - - -Page not found :(
-The requested page could not be found.
-