Skip to content

Commit 1fc27a2

Browse files
Merge pull request #11 from The-Schultz-Lab/expansion
Expansion
2 parents 626eb3d + f0cecfc commit 1fc27a2

59 files changed

Lines changed: 10839 additions & 887 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/copilot-instructions.md

Lines changed: 195 additions & 74 deletions
Large diffs are not rendered by default.

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# Dev launcher stamp (written by launch-native.bat to skip redundant pip install)
2+
.dev_install_stamp
3+
14
# Python
25
__pycache__/
36
*.py[cod]
@@ -54,3 +57,6 @@ Thumbs.db
5457
*.swo
5558

5659
planning/
60+
nul
61+
/.claude/
62+
/temp - untracked/

README.md

Lines changed: 77 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# QuantUI-local
1+
# QuantUI
22

3-
[![CI](https://github.com/The-Schultz-Lab/QuantUI-local/actions/workflows/ci.yml/badge.svg)](https://github.com/The-Schultz-Lab/QuantUI-local/actions/workflows/ci.yml)
4-
[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://the-schultz-lab.github.io/QuantUI-local/)
3+
[![CI](https://github.com/The-Schultz-Lab/QuantUI/actions/workflows/ci.yml/badge.svg)](https://github.com/The-Schultz-Lab/QuantUI/actions/workflows/ci.yml)
4+
[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://the-schultz-lab.github.io/QuantUI/)
55
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
66
[![Python](https://img.shields.io/badge/python-3.9%20|%203.10%20|%203.11-blue)](https://www.python.org)
77

@@ -17,18 +17,30 @@ Built for classroom teaching at the
1717

1818
## What it does
1919

20-
- **Molecule input** — paste XYZ coordinates, draw from a preset library, or
21-
search PubChem by name or SMILES
22-
- **3D visualization** — interactive py3Dmol viewer, directly in the notebook
23-
- **In-session calculations** — RHF and UHF via PySCF, running in your Python
24-
kernel (no batch submission)
25-
- **Results** — total energy, HOMO-LUMO gap, convergence status, and a
26-
side-by-side comparison table for multiple calculations
20+
- **Molecule input** — paste XYZ coordinates, draw from a 20+ preset library,
21+
or search PubChem by name or SMILES
22+
- **3D visualization** — interactive py3Dmol or PlotlyMol viewer with a live
23+
backend toggle when both are installed; post-calculation structure rendered
24+
automatically in the results panel
25+
- **In-session calculations** — RHF, UHF, 9 DFT functionals, MP2, and NMR
26+
shielding via PySCF, running in your Python kernel (no batch submission)
27+
- **Implicit solvent** — PCM solvation (Water, Ethanol, THF, DMSO,
28+
Acetonitrile) via a single checkbox
29+
- **Rich results** — total energy, HOMO-LUMO gap, Mulliken charges, dipole
30+
moment, thermochemistry (H, S, G at 298 K), IR spectrum chart (stick and
31+
Lorentzian-broadened), ¹H/¹³C NMR chemical shifts, orbital energy-level
32+
diagram, HOMO/LUMO isosurface (cube-file rendering with toggle for HOMO-1,
33+
HOMO, LUMO, LUMO+1), and a side-by-side comparison table for multiple
34+
calculations
35+
- **Geometry optimization** — BFGS optimizer with step-by-step trajectory
36+
animation; vibrational frequency analysis with animated normal modes
2737
- **Results persistence** — every calculation is saved automatically to a
2838
timestamped directory; a built-in browser lets students reload past results
29-
after a kernel restart
30-
- **Script export** — download a standalone `.py` file to run or study outside
31-
the notebook
39+
after a kernel restart; the full `pyscf.log` is shown inline
40+
- **Structure exports** — download XYZ, MOL/SDF, or PDB files alongside the
41+
saved results; script export for a standalone `.py` file
42+
- **Timing calibration** — one-click benchmark suite populates the time
43+
estimator with real machine data so predictions are accurate from the first run
3244
- **Voilà app mode** — serve the notebook as a polished widget-only UI (no code
3345
visible) for classroom demos, with dark mode toggle and dedicated output log
3446

@@ -45,7 +57,7 @@ Built for classroom teaching at the
4557
### Windows users: Apptainer container
4658

4759
PySCF does not install on Windows natively. The
48-
[`apptainer/quantui-local.def`](apptainer/quantui-local.def) container bundles
60+
[`apptainer/quantui.def`](apptainer/quantui.def) container bundles
4961
the complete environment and runs anywhere Apptainer/Singularity is available.
5062
See [`apptainer/README.md`](apptainer/README.md) for build and run instructions.
5163

@@ -57,8 +69,8 @@ See [`apptainer/README.md`](apptainer/README.md) for build and run instructions.
5769

5870
```bash
5971
# Create a dedicated environment
60-
conda create -n quantui-local python=3.11
61-
conda activate quantui-local
72+
conda create -n quantui python=3.11
73+
conda activate quantui
6274

6375
# Install with PySCF and ASE
6476
pip install -e ".[pyscf,ase,app]"
@@ -67,7 +79,7 @@ pip install -e ".[pyscf,ase,app]"
6779
### Option B — pip only
6880

6981
```bash
70-
python -m pip install quantui-local[pyscf,ase,app]
82+
python -m pip install quantui[pyscf,ase,app]
7183
```
7284

7385
### Option C — Apptainer container (Windows / reproducible deployment)
@@ -80,7 +92,7 @@ See [apptainer/README.md](apptainer/README.md).
8092

8193
```bash
8294
# Activate your environment
83-
conda activate quantui-local
95+
conda activate quantui
8496

8597
# JupyterLab (full IDE — shows code)
8698
jupyter lab notebooks/molecule_computations.ipynb
@@ -110,13 +122,37 @@ Five step-by-step notebooks in [`notebooks/tutorials/`](notebooks/tutorials/):
110122

111123
## Supported calculations
112124

113-
| Method | When to use |
125+
### Methods
126+
127+
| Method | Type | Best for |
128+
| --- | --- | --- |
129+
| RHF | Hartree-Fock | Closed-shell molecules; baseline reference |
130+
| UHF | Hartree-Fock | Radicals and open-shell systems |
131+
| B3LYP | DFT hybrid | General organic chemistry (default DFT choice) |
132+
| PBE | DFT GGA | Large molecules; metals; when speed matters |
133+
| PBE0 | DFT hybrid | Charge-transfer, band gaps |
134+
| M06-2X | DFT meta-hybrid | Thermochemistry, barrier heights |
135+
| wB97X-D | DFT range-sep. + D3 | Non-covalent interactions, excited states |
136+
| CAM-B3LYP | DFT range-sep. | Charge-transfer UV-Vis, Rydberg states |
137+
| M06-L | DFT local meta-GGA | Large molecules; transition metals |
138+
| HSE06 | DFT screened hybrid | Band gaps, large molecules |
139+
| PBE-D3 | DFT GGA + dispersion | Van der Waals complexes, stacking |
140+
| MP2 | Post-HF | Accurate energetics for small molecules (O(N⁵)) |
141+
142+
### Calculation types
143+
144+
| Type | Output |
114145
| --- | --- |
115-
| RHF | Closed-shell molecules — all electrons paired |
116-
| UHF | Open-shell molecules — radicals or unpaired electrons |
146+
| Single Point | Energy, HOMO-LUMO gap, Mulliken charges, dipole moment |
147+
| Geometry Opt | Optimised structure, trajectory animation |
148+
| Frequency | Vibrational frequencies, ZPVE, IR intensities, thermochemistry (H/S/G at 298 K), animated normal modes, IR spectrum chart (stick / Lorentzian broadened) |
149+
| UV-Vis (TD-DFT) | Excitation energies, oscillator strengths, UV-Vis spectrum plot |
150+
| NMR Shielding | ¹H and ¹³C chemical shifts relative to TMS via GIAO; tabulated by element |
151+
152+
### Basis sets
117153

118-
**Basis sets:** STO-3G (fast, good for learning) → 6-31G (common research
119-
choice) → cc-pVTZ (high accuracy)
154+
STO-3G (fast, good for learning) → 3-21G → 6-31G / 6-31G\* / 6-31G\*\*
155+
cc-pVDZ / cc-pVTZ → def2-SVP / def2-TZVP
120156

121157
---
122158

@@ -141,18 +177,27 @@ pytest -m "not network" \
141177

142178
```text
143179
quantui/ Main package
180+
app.py QuantUIApp widget class (all tabs, UI logic)
144181
molecule.py Molecule input and validation
145-
session_calc.py In-session PySCF runner
146-
visualization_py3dmol.py 3D viewer
182+
session_calc.py In-session PySCF runner (RHF/UHF/DFT/MP2/PCM)
183+
freq_calc.py Vibrational frequency + thermochemistry analysis
184+
ir_plot.py IR spectrum chart (stick and Lorentzian broadened)
185+
tddft_calc.py TD-DFT UV-Vis excited-state calculations
186+
nmr_calc.py NMR shielding + ¹H/¹³C chemical shift prediction
187+
optimizer.py QM geometry optimization with trajectory
188+
visualization_py3dmol.py 3D viewer (py3Dmol + PlotlyMol backends)
147189
pubchem.py PubChem molecule search
148190
comparison.py Side-by-side result tables
191+
results_storage.py Timestamped result persistence
192+
calc_log.py Performance logging and time estimation
193+
benchmarks.py Timing calibration benchmark suite
194+
config.py Methods, basis sets, solvent/NMR options, presets
149195
ase_bridge.py ASE structure I/O
150-
optimizer.py QM geometry optimization
151-
...
196+
preopt.py LJ force-field pre-optimization
152197
notebooks/
153198
molecule_computations.ipynb Main student-facing interface
154-
tutorials/ Step-by-step guided notebooks
155-
tests/ pytest test suite (439 tests)
199+
tutorials/ Step-by-step guided notebooks (01–05)
200+
tests/ pytest test suite (575+ tests)
156201
apptainer/ Container definition for reproducible deployment
157202
local-setup/ Conda environment definition
158203
pyproject.toml Package metadata and tool config
@@ -162,10 +207,10 @@ pyproject.toml Package metadata and tool config
162207

163208
## Relationship to the cluster version
164209

165-
QuantUI-local is a downstream port of the cluster-based
166-
[QuantUI](https://github.com/The-Schultz-Lab/QuantUI) repository. All SLURM
210+
QuantUI (this repo) is a downstream port of the cluster-based
211+
[QuantUI-cluster](https://github.com/The-Schultz-Lab/QuantUI) repository. All SLURM
167212
infrastructure (job manager, job storage, batch templates) has been removed.
168-
Bug fixes flow `QuantUI → QuantUI-local`, not the other way around.
213+
Bug fixes flow from the cluster repo into this one, not the other way around.
169214

170215
---
171216

SECURITY.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Security Policy
22

3-
QuantUI-local is an educational teaching tool designed for classroom and local
3+
QuantUI is an educational teaching tool designed for classroom and local
44
research use. It runs calculations inside your own Python session — there is
55
no server, no user accounts, and no data stored outside your local machine.
66

@@ -19,7 +19,7 @@ GitHub issue**.
1919
Instead, report it privately via one of these channels:
2020

2121
- **GitHub private vulnerability reporting** — use the
22-
[Security tab](https://github.com/The-Schultz-Lab/QuantUI-local/security/advisories/new)
22+
[Security tab](https://github.com/The-Schultz-Lab/QuantUI/security/advisories/new)
2323
on this repository (preferred).
2424
- **Email** — contact the lab maintainer through the GitHub profile
2525
[@The-Schultz-Lab](https://github.com/The-Schultz-Lab).
@@ -28,7 +28,7 @@ Please include:
2828

2929
1. A short description of the issue and its potential impact
3030
2. Steps to reproduce (or a minimal proof-of-concept)
31-
3. The version of QuantUI-local affected
31+
3. The version of QuantUI affected
3232
4. Your suggested fix, if you have one
3333

3434
We aim to acknowledge reports within **5 business days** and to release a fix
@@ -55,7 +55,7 @@ Issues that are explicitly **out of scope**:
5555

5656
## Dependencies
5757

58-
QuantUI-local relies on PySCF, ASE, NumPy, Matplotlib, ipywidgets, and
58+
QuantUI relies on PySCF, ASE, NumPy, Matplotlib, ipywidgets, and
5959
py3Dmol. Security advisories for these packages are tracked automatically
6060
via Dependabot. If you become aware of a critical CVE in one of these
6161
dependencies before Dependabot picks it up, please report it using the

0 commit comments

Comments
 (0)