An interactive Jupyter interface for running quantum chemistry calculations locally — no cluster account, no SLURM, no queueing. Students design molecules, launch PySCF calculations in their own Python session, and visualize results in minutes.
Built for classroom teaching at the Schultz Lab, North Carolina Central University.
- Molecule input — paste XYZ coordinates, draw from a 20+ preset library, or search PubChem by name or SMILES
- 3D visualization — interactive py3Dmol or PlotlyMol viewer with a live backend toggle when both are installed; post-calculation structure rendered automatically in the results panel
- In-session calculations — RHF, UHF, 9 DFT functionals, MP2, NMR shielding, TD-DFT UV-Vis, and 1D PES scans via PySCF, running in your Python kernel (no batch submission)
- Implicit solvent — PCM solvation (Water, Ethanol, THF, DMSO, Acetonitrile) via a single checkbox
- Rich results — total energy, HOMO-LUMO gap, Mulliken charges, dipole moment, thermochemistry (H, S, G at 298 K), IR spectrum chart (stick and Lorentzian-broadened), ¹H/¹³C NMR chemical shifts, orbital energy-level diagram, HOMO/LUMO isosurface (cube-file rendering with toggle for HOMO-1, HOMO, LUMO, LUMO+1), and a side-by-side comparison table for multiple calculations
- Geometry optimization — BFGS optimizer with step-by-step trajectory animation; vibrational frequency analysis with animated normal modes
- Results persistence — every calculation is saved automatically to a
timestamped directory; a built-in browser lets students reload past results
after a kernel restart; the full
pyscf.logis shown inline - Structure exports — download XYZ, MOL/SDF, or PDB files alongside the
saved results; script export for a standalone
.pyfile - Timing calibration — one-click benchmark suite populates the time estimator with real machine data so predictions are accurate from the first run
- Voilà app mode — serve the notebook as a polished widget-only UI (no code visible) for classroom demos, with dark mode toggle and dedicated output log
| Platform | Works? | Notes |
|---|---|---|
| Linux / macOS | Full | PySCF installs natively |
| WSL (Windows) | Full | Use an Ubuntu WSL environment |
| Windows (native) | Partial | All UI and visualization features work; PySCF calculations require the Apptainer container |
PySCF does not install on Windows natively. The
apptainer/quantui.def container bundles
the complete environment and runs anywhere Apptainer/Singularity is available.
See apptainer/README.md for build and run instructions.
# Create a dedicated environment
conda create -n quantui python=3.11
conda activate quantui
# Install with PySCF and ASE
pip install -e ".[pyscf,ase,app]"python -m pip install quantui[pyscf,ase,app]See apptainer/README.md.
# Activate your environment
conda activate quantui
# JupyterLab (full IDE — shows code)
jupyter lab notebooks/molecule_computations.ipynb
# Voilà app mode (widget-only — for classroom demos)
voila notebooks/molecule_computations.ipynbOpen the notebook, pick a molecule, choose a method and basis set, and click Run Calculation. Results appear directly in the notebook.
Five step-by-step notebooks in notebooks/tutorials/:
| Notebook | Topic |
|---|---|
| 01_first_calculation.ipynb | Your first RHF calculation |
| 02_basis_set_study.ipynb | Comparing STO-3G, 6-31G, cc-pVDZ |
| 03_multiplicity_radicals.ipynb | Open-shell molecules and UHF |
| 04_charged_species.ipynb | Ions and charged systems |
| 05_comparing_results.ipynb | Side-by-side result analysis |
| Method | Type | Best for |
|---|---|---|
| RHF | Hartree-Fock | Closed-shell molecules; baseline reference |
| UHF | Hartree-Fock | Radicals and open-shell systems |
| B3LYP | DFT hybrid | General organic chemistry (default DFT choice) |
| PBE | DFT GGA | Large molecules; metals; when speed matters |
| PBE0 | DFT hybrid | Charge-transfer, band gaps |
| M06-2X | DFT meta-hybrid | Thermochemistry, barrier heights |
| wB97X-D | DFT range-sep. + D3 | Non-covalent interactions, excited states |
| CAM-B3LYP | DFT range-sep. | Charge-transfer UV-Vis, Rydberg states |
| M06-L | DFT local meta-GGA | Large molecules; transition metals |
| HSE06 | DFT screened hybrid | Band gaps, large molecules |
| PBE-D3 | DFT GGA + dispersion | Van der Waals complexes, stacking |
| MP2 | Post-HF | Accurate energetics for small molecules (O(N⁵)) |
| Type | Output |
|---|---|
| Single Point | Energy, HOMO-LUMO gap, Mulliken charges, dipole moment |
| Geometry Opt | Optimised structure, trajectory animation |
| Frequency | Vibrational frequencies, ZPVE, IR intensities, thermochemistry (H/S/G at 298 K), animated normal modes, IR spectrum chart (stick / Lorentzian broadened) |
| UV-Vis (TD-DFT) | Excitation energies, oscillator strengths, UV-Vis spectrum plot |
| NMR Shielding | ¹H and ¹³C chemical shifts relative to TMS via GIAO; tabulated by element |
| PES Scan | 1D potential energy surface along a bond, angle, or dihedral; energy profile chart; geometry animation at each scan point |
STO-3G (fast, good for learning) → 3-21G → 6-31G / 6-31G* / 6-31G** → cc-pVDZ / cc-pVTZ → def2-SVP / def2-TZVP
pip install -e ".[dev]"
# All tests (Linux/macOS — PySCF available)
pytest -m "not network"
# Skip PySCF-dependent tests (Windows without container)
pytest -m "not network" \
--ignore=tests/test_session_calc.py \
--ignore=tests/test_optimizer.py \
--ignore=tests/test_preopt.pyquantui/ Main package
app.py QuantUIApp widget class (all tabs, UI logic)
molecule.py Molecule input and validation
session_calc.py In-session PySCF runner (RHF/UHF/DFT/MP2/PCM)
freq_calc.py Vibrational frequency + thermochemistry analysis
ir_plot.py IR spectrum chart (stick and Lorentzian broadened)
tddft_calc.py TD-DFT UV-Vis excited-state calculations
nmr_calc.py NMR shielding + ¹H/¹³C chemical shift prediction
pes_scan.py 1D potential energy surface scan
optimizer.py QM geometry optimization with trajectory
visualization_py3dmol.py 3D viewer (py3Dmol + PlotlyMol backends)
pubchem.py PubChem molecule search
comparison.py Side-by-side result tables
results_storage.py Timestamped result persistence
calc_log.py Performance logging and time estimation
benchmarks.py Timing calibration benchmark suite
config.py Methods, basis sets, solvent/NMR options, presets
ase_bridge.py ASE structure I/O
preopt.py LJ force-field pre-optimization
notebooks/
molecule_computations.ipynb Main student-facing interface
tutorials/ Step-by-step guided notebooks (01–05)
tests/ pytest test suite (860+ tests)
apptainer/ Container definition for reproducible deployment
local-setup/ Conda environment definition
pyproject.toml Package metadata and tool config
QuantUI (this repo) is a downstream port of the cluster-based QuantUI-cluster repository. All SLURM infrastructure (job manager, job storage, batch templates) has been removed. Bug fixes flow from the cluster repo into this one, not the other way around.
MIT — Copyright 2026 The Schultz Lab, North Carolina Central University