Overview
SemiCode Analyzer uses a comprehensive periodic table JSON file to provide detailed information about chemical elements. This data source enables accurate electron configuration calculations and semiconductor analysis.Data source
The periodic table data is sourced from Bowserinator’s Periodic Table JSON repository, which provides extensive information for all chemical elements in a structured JSON format. Credit: The periodic table JSON file was created by Bowserinator and is used under open source license.JSON structure
The periodic table data is stored in/public/periodicTable.json with the following structure:
Key fields
Essential properties
| Field | Type | Description |
|---|---|---|
number | integer | Atomic number (number of protons) |
symbol | string | Chemical symbol (e.g., “Si”, “Al”) |
name | string | Full element name |
mass | number | Atomic mass in unified atomic mass units |
category | string | Element category (metalloid, metal, nonmetal, etc.) |
Electron configuration
| Field | Type | Description |
|---|---|---|
electron_configuration | string | Full electron configuration notation |
electron_configuration_semantic | string | Simplified noble gas notation |
shells | array | Electrons per shell (e.g., [2, 8, 4] for Si) |
electron_affinity | number | Electron affinity in kJ/mol |
electronegativity_pauling | number | Pauling electronegativity scale |
ionization_energies | array | Ionization energies for each electron |
Physical properties
| Field | Type | Description |
|---|---|---|
phase | string | Phase at room temperature (Solid, Liquid, Gas) |
density | number | Density in g/cm³ |
melt | number | Melting point in Kelvin |
boil | number | Boiling point in Kelvin |
appearance | string | Physical appearance description |
Metadata
| Field | Type | Description |
|---|---|---|
period | integer | Period (row) in periodic table |
group | integer | Group (column) in periodic table |
block | string | Block type (s, p, d, f) |
discovered_by | string | Name of discoverer |
named_by | string | Person who named the element |
source | string | Wikipedia URL for reference |
How the application uses this data
The periodic table data is loaded and used throughout SemiCode Analyzer:1. Loading the data
Insrc/pages/index.astro:123-133, the application fetches the periodic table on page load:
2. Element lookup
When users input atomic numbers, the application looks up element names and symbols:3. Electron configuration calculation
While the JSON includeselectron_configuration fields, the application calculates configurations dynamically using the getElementData() function in src/utils/chemistry.js:1-38. This ensures accurate valence electron counting for semiconductor analysis.
4. Visualization
Element data is used to render:- Atomic structure diagrams with correct electron shell distributions
- Element names and symbols in the UI
- Crystal lattice structures showing doping arrangements
Example elements used in semiconductor analysis
Silicon (Si)
Phosphorus (P)
Boron (B)
Aluminium (Al)
Germanium (Ge)
Accessing the source
The original periodic table JSON repository can be found at: GitHub: https://github.com/Bowserinator/Periodic-Table-JSON This repository includes:- Complete element data for all 118 elements
- Multiple output formats (JSON, CSV, SQL)
- Regular updates with new scientific data
- Comprehensive documentation
- Attribution requirements
Data completeness
The JSON file includes 118 chemical elements with varying levels of detail:- Complete data: Elements 1-94 (Hydrogen to Plutonium)
- Partial data: Elements 95-118 (synthetic elements with limited experimental data)
- Required fields: All elements have
number,symbol,name, andelectron_configuration - Optional fields: Some elements may have
nullvalues for properties likeboil,melt, orappearance
Performance considerations
The periodic table JSON file is approximately 250 KB in size. The application loads it once on page initialization and caches it in memory for fast lookups during calculations. For optimal performance:- The file is served from the
/publicdirectory as a static asset - Element lookups use JavaScript’s
Array.find()method - No external API calls are required
- Data remains available offline once loaded
