Skip to main content

Analytic hydrogen orbital slice visualizer

Project description

H-orbital

H-orbital is a small Python package and CLI tool that plots 2D slices of hydrogen atomic orbitals from quantum numbers (n, l, m).

This project is a teaching utility for Zhuang Lin's Structural Chemistry course.

H-orbital UI Example

The implementation uses the analytic quantum-mechanical solution:

[ \psi_{n,l,m}(r,\theta,\phi)=R_{n,l}(r)Y_l^m(\theta,\phi) ]

No numerical Schrodinger solver is used.

Features

  • CLI input with 1 to 3 quantum numbers: n [l] [m]
  • Missing quantum numbers default to zero
  • Rendering modes:
    • density for (|\psi|^2)
    • real for (\Re(\psi))
    • imag for (\Im(\psi))
    • real_imag for side-by-side real/imag plots
    • radial_distribution for (r^2|R_{n,l}(r)|^2) vs (r)
    • spherical_harmonic for side-by-side (\Re(Y_l^m)) and (\Im(Y_l^m))
  • Smart defaults for plane, value, and range if omitted
  • Default color scaling is linear (--scale linear)
  • Optional manual slice plane control by CLI:
    • --plane x --value c (plane x=c)
    • --plane y --value c (plane y=c)
    • --plane z --value c (plane z=c)
  • Select colormap (--cmap), default is RdYlBu_r
  • Optional contour-only line rendering via --line-mode
    • signed fields: positive solid lines and negative dashed lines
    • line colors come from the selected colormap's positive/negative ends
    • density fields: solid contour lines only (no filled surface)
  • Density mode uses the positive-value half of the selected colormap, so zero stays near blank and higher values become progressively darker.
  • Colorbar toggle: --colorbar / --no-colorbar (default: off)

Install Dependencies

Create and activate a virtual environment, then install:

python -m pip install -e .

This installs required libraries from pyproject.toml.

Usage

Run from repository root:

./H-orbital 2 1 0

GUI Usage

Launch the graphical interface:

./H-orbital-ui

GUI layout:

  • Top panel: common parameters (n, l, m, mode, plane, value) and Plot
  • Top panel: includes a Colorbar toggle switch
  • Advanced dialog: finer controls (points, colormap, scale, Draw nodal lines) with common colormap options and custom Matplotlib names
    • Line mode (contours only) toggle is available below colormap
    • in density mode, symlog is disabled
  • Middle area: interactive Matplotlib plot canvas
  • Bottom slider: range control in units of a0
  • Export button: choose PNG, SVG, or PDF in one save dialog (default PNG)

If you run without arguments, the command prints full help:

./H-orbital

Examples:

# 1s orbital, defaults l=0, m=0
./H-orbital 1

# Real part of 2p(m=0) on z=0 plane
./H-orbital 2 1 0 --mode real --plane z --value 0

# Probability density of 3d(m=1) on y=0.5 a0 plane
./H-orbital 3 2 1 --mode density --plane y --value 0.5 --scale log

# Two-panel real and imaginary parts
./H-orbital 3 2 2 --mode real_imag --plane z --value 0 --cmap RdYlBu_r --scale symlog

# Contour-only line mode with colormap endpoint colors
./H-orbital 4 2 0 --mode real --line-mode --cmap coolwarm

# Radial distribution (independent of plane/value)
./H-orbital 3 0 0 --mode radial_distribution

# Spherical harmonic map (angles only, independent of plane/value)
./H-orbital 3 2 1 --mode spherical_harmonic --scale symlog

Output Naming

If --output is not provided, a filename is generated automatically, e.g.:

orbital_n2_l1_m0_real_z0p0.png

Notes on Units

  • Input --value and --range are in units of Bohr radius a0.
  • --value means the constant coordinate of the selected slicing plane.
    • Example: --plane x --value 0 means plotting the plane x = 0 * a0.
  • If --plane is omitted (default auto), the tool picks a central plane (x=0, y=0, or z=0) that best reveals structure for the selected mode.
  • If --value is omitted, the tool uses 0 in the selected plane.
  • If --range is omitted, the tool estimates a range from radial probability support and mode-aware heuristics to avoid clipping while preventing excessive zoom-out.
  • In radial_distribution and spherical_harmonic modes, --plane and --value are not used.
  • If --scale is omitted, the default is linear.
  • You can still choose --scale log (good for density) or --scale symlog (good for signed fields).
  • Internal wavefunction formulas are evaluated in SI meters.

Development

Run tests:

pytest

Run a single test:

pytest tests/test_quantum_numbers.py::test_parse_single_value_defaults_l_and_m

Version

Current stable version: 1.5.1.

License

This project is distributed under the MIT License. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

h_orbital-1.5.1.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

h_orbital-1.5.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file h_orbital-1.5.1.tar.gz.

File metadata

  • Download URL: h_orbital-1.5.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for h_orbital-1.5.1.tar.gz
Algorithm Hash digest
SHA256 c4d86eb7ae321df4af954def21e182adf1731a2a4e1238288518176981ae3fe6
MD5 9d4aab96118d7a2f50dde883230422e2
BLAKE2b-256 3513d7d269415d50a1b3d79634862e88fee0bdb6069e57e576d99a20993679a0

See more details on using hashes here.

File details

Details for the file h_orbital-1.5.1-py3-none-any.whl.

File metadata

  • Download URL: h_orbital-1.5.1-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for h_orbital-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bbcab3a8eb84276889535ef529bebeacbc7da72421e17ce6317f1737be8d9069
MD5 2dbd00cf19025cc9950c1aa255e1d75f
BLAKE2b-256 6a48c134591c578a793a7292f3966e2f4770d839c2b041d68e71bf07f47792b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page