Skip to main content

Atomic Term Symbol Calculator

A Python package for calculating all possible atomic term symbols from electron configurations. This tool uses quantum mechanical principles to determine microstates and derive term symbols including J-coupling.

Quick Start

# Install from PyPI
pip install term-symbols

# Use in Python
python -c "from term_symbols.terms import calc_term_symbols; print(calc_term_symbols('2p2'))"
# Output: ['1D2', '3P0', '3P1', '3P2', '1S0']

# Or use command line
term-symbols
# Enter configuration: 2p2

Features

  • Calculate total number of microstates for any electron configuration
  • Generate all possible term symbols from electron configurations
  • Support for s, p, d, and f orbitals
  • Handles multiple electron shells and mixed configurations
  • Applies Pauli exclusion principle and Hund's rules
  • Calculates J quantum numbers using Russell-Saunders coupling
  • Flexible input format (space or dot separated orbitals)

Installation

Install the latest stable version from PyPI:

pip install term-symbols

To upgrade to the latest version:

pip install --upgrade term-symbols

From Source

  1. Clone the repository:
git clone https://github.com/ccheung93/atomic-term-symbol-calculator.git
cd atomic-term-symbol-calculator
  1. Create a virtual environment (recommended):
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install the package in development mode:
pip install -e .
  1. To install with testing dependencies:
pip install -e .[test]

Requirements

  • Python ≥ 3.8
  • numpy
  • pandas
  • fractions (built-in)
  • itertools (built-in)
  • re (built-in)

Usage

After installation, you can use the package in several ways:

As a Python Module

from term_symbols.terms import calc_term_symbols, calc_microstates

# Calculate term symbols for carbon (2p2)
terms = calc_term_symbols("2p2")
print(terms)
# Output: ['3P0', '3P1', '3P2', '1D2', '1S0']

# Calculate microstates for p2 configuration
microstates = calc_microstates(6, 2)  # 6 positions, 2 electrons
print(microstates)
# Output: 15

# Mixed orbital configurations
terms = calc_term_symbols("2s1.2p1")
print(terms)
# Output: ['3P0', '3P1', '3P2', '1P1']

# d orbital configurations
terms = calc_term_symbols("3d2")
print(terms)

Command Line Usage

term-symbols
# Enter configuration when prompted: 2p3

Input Format

Electron configurations can be specified in two formats:

  1. Dot separated: 2s1.2p3.3d2
  2. Space separated: 2s1 2p3 3d2

The occupancy number can be omitted if it's 1:

  • 2p1 is equivalent to 2p
  • 3d1 is equivalent to 3d

Examples

Configuration Description Example Terms
1s1 Hydrogen 2S1/2
2p1 Boron 2P1/2, 2P3/2
2p2 Carbon 3P0, 3P1, 3P2, 1D2, 1S0
2p3 Nitrogen 4S3/2, 2D3/2, 2D5/2, 2P1/2, 2P3/2
3d1 Sc²⁺ 2D3/2, 2D5/2
3d5 Mn²⁺ Multiple terms (high-spin d5)

Testing

Run the test suite:

pytest

Run tests with verbose output:

pytest -v

Run tests for a specific file:

pytest tests/test_terms.py

Run tests with coverage:

pytest --cov=term_symbols

Development

Project Structure

atomic-term-symbol-calculator/
├── src/
│   └── term_symbols/
│       ├── __init__.py          # Version info
│       └── terms.py             # Main calculation functions
├── tests/
│   └── test_terms.py           # Comprehensive test suite
├── pyproject.toml              # Project configuration
├── README.md                   # This file
└── CLAUDE.md                   # Development guidance

Algorithm Overview

The calculator follows these steps:

  1. Parse Configuration: Extract orbital types and electron counts
  2. Generate Microstates: Create all possible electron arrangements
  3. Apply Quantum Rules: Filter using Pauli exclusion principle
  4. Tabulate States: Create ML vs MS quantum number table
  5. Extract Terms: Systematically remove term symbols from table
  6. Calculate J Values: Apply |L-S| ≤ J ≤ |L+S| coupling rules

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass
  5. Submit a pull request

Changelog

See CHANGELOG.md for detailed version history and release notes.

License

MIT License - see LICENSE file for details.

References

  • Term Symbols Notes
  • Russell-Saunders coupling theory
  • Quantum mechanical principles of atomic structure

Author

Charles Cheung (ccheung@udel.edu)

Metadata

Release files for term-symbols 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for term-symbols 0.1.6
File Size Uploaded Provenance Actions
term_symbols-0.1.6.tar.gz 17.4 kB Without provenance Details for term_symbols-0.1.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for term-symbols 0.1.6
File Interpreter ABI Platform Actions
term_symbols-0.1.6-py3-none-any.whl Python 3 none any Details for term_symbols-0.1.6-py3-none-any.whl

Total release size: 25.3 kB

Release files / term_symbols-0.1.6.tar.gz

Download URL term_symbols-0.1.6.tar.gz
Size 17.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b7760499f2ea8c8d6f62c8b34cd2806b00f91f7839e5059b1d7d230179d67b2e
BLAKE2b-256 checksum
How to use checksums
470365bd7c01bdbe883f77eac58959d2039dfb45552e61df97e70c5a685b5e21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.1

Release files / term_symbols-0.1.6-py3-none-any.whl

Download URL term_symbols-0.1.6-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c134f212ea84fac842342e0e83e8af8b92423fe0d0acdbb32b2d2bfa208e4fda
BLAKE2b-256 checksum
How to use checksums
4879691a99b5d1d2f1499027e844c7e525ac44dc1f62f2b6d005c5d7a1817e9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.1

Security for term-symbols 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page