quantui 0.8.1__tar.gz → 0.8.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {quantui-0.8.1 → quantui-0.8.2}/CHANGELOG.md +47 -0
- {quantui-0.8.1/quantui.egg-info → quantui-0.8.2}/PKG-INFO +7 -6
- {quantui-0.8.1 → quantui-0.8.2}/README.md +4 -4
- {quantui-0.8.1 → quantui-0.8.2}/pyproject.toml +4 -3
- {quantui-0.8.1 → quantui-0.8.2}/quantui/__init__.py +1 -1
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app.py +860 -218
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_analysis.py +47 -15
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_builders.py +478 -118
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_exports.py +40 -10
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_formatters.py +218 -154
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_history.py +13 -2
- quantui-0.8.2/quantui/app_launcher.py +375 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_measurement.py +3 -3
- quantui-0.8.2/quantui/app_pes_pick.py +134 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_runflow.py +611 -71
- quantui-0.8.2/quantui/app_slurm.py +667 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_visualization.py +269 -48
- {quantui-0.8.1 → quantui-0.8.2}/quantui/app_xyz_input.py +3 -3
- quantui-0.8.2/quantui/backends/__init__.py +37 -0
- quantui-0.8.2/quantui/backends/base.py +111 -0
- quantui-0.8.2/quantui/backends/cluster_config.py +159 -0
- quantui-0.8.2/quantui/backends/cluster_security.py +149 -0
- quantui-0.8.2/quantui/backends/dispatch.py +193 -0
- quantui-0.8.2/quantui/backends/local.py +46 -0
- quantui-0.8.2/quantui/backends/registry.py +206 -0
- quantui-0.8.2/quantui/backends/slurm.py +642 -0
- quantui-0.8.2/quantui/backends/slurm_errors.py +205 -0
- quantui-0.8.2/quantui/backends/slurm_ingest.py +242 -0
- quantui-0.8.2/quantui/backends/slurm_utils.py +184 -0
- quantui-0.8.2/quantui/backends/worker.py +479 -0
- quantui-0.8.2/quantui/backends/worker_payload.py +287 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/benchmarks.py +1 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/calc_log.py +122 -19
- {quantui-0.8.1 → quantui-0.8.2}/quantui/checkpoint.py +35 -8
- {quantui-0.8.1 → quantui-0.8.2}/quantui/cli.py +59 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/descriptor_cards.py +15 -11
- {quantui-0.8.1 → quantui-0.8.2}/quantui/estimator_eval.py +2 -3
- {quantui-0.8.1 → quantui-0.8.2}/quantui/freq_calc.py +194 -13
- {quantui-0.8.1 → quantui-0.8.2}/quantui/freq_ir_workers.py +50 -20
- quantui-0.8.2/quantui/freq_raman_workers.py +103 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/help_content.py +120 -16
- {quantui-0.8.1 → quantui-0.8.2}/quantui/ir_plot.py +2 -1
- {quantui-0.8.1 → quantui-0.8.2}/quantui/live_log.py +1 -1
- {quantui-0.8.1 → quantui-0.8.2}/quantui/log_utils.py +0 -1
- {quantui-0.8.1 → quantui-0.8.2}/quantui/nmr_calc.py +4 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/orbital_visualization.py +43 -15
- {quantui-0.8.1 → quantui-0.8.2}/quantui/pes_scan.py +15 -1
- quantui-0.8.2/quantui/pes_scan_ui.py +384 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/populations_overlay.py +27 -9
- {quantui-0.8.1 → quantui-0.8.2}/quantui/progress.py +5 -3
- quantui-0.8.2/quantui/raman_calc.py +403 -0
- quantui-0.8.2/quantui/raman_plot.py +110 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/results_storage.py +82 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/session_calc.py +8 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/tddft_calc.py +2 -2
- quantui-0.8.2/quantui/theme.py +742 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/user_settings.py +96 -1
- {quantui-0.8.1 → quantui-0.8.2}/quantui/visualization_py3dmol.py +103 -30
- {quantui-0.8.1 → quantui-0.8.2/quantui.egg-info}/PKG-INFO +7 -6
- {quantui-0.8.1 → quantui-0.8.2}/quantui.egg-info/SOURCES.txt +20 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui.egg-info/requires.txt +2 -1
- quantui-0.8.1/quantui/theme.py +0 -232
- {quantui-0.8.1 → quantui-0.8.2}/LICENSE +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/MANIFEST.in +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/SECURITY.md +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/analytics.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/ase_bridge.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/c_stderr.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/cactus.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/calculator.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/cancellation.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/comparison.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/config.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/connectivity.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/js/3Dmol-min.js +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/js/3Dmol-min.js.LICENSE.txt +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/library/library.sqlite +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/manifests/bulk_qm9.json +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/manifests/curated.json +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/manifests/inorganic.json +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/data/manifests/presets.json +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/density_fitting.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/gpu_offload.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/inorganic_guards.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/issue_tracker.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/measurement.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/molecule.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/molecule_library.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/mulliken_plot.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/nmr_plot.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/optimizer.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/preopt.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/pubchem.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/reorganization_energy.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/security.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/spin_presets.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/structure_providers.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/utils.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/vib_cache.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/viz_assets.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/viz_backend_router.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui/xyz_input.py +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui.egg-info/dependency_links.txt +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui.egg-info/entry_points.txt +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/quantui.egg-info/top_level.txt +0 -0
- {quantui-0.8.1 → quantui-0.8.2}/setup.cfg +0 -0
|
@@ -7,6 +7,53 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.8.2] - 2026-08-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **SLURM batch execution (M-CLUSTER2)** — optional cluster backend when
|
|
15
|
+
`QUANTUI_ENABLE_SLURM=1` and `sbatch` is on PATH: submit from the same UI,
|
|
16
|
+
monitor on the **Cluster Jobs** tab, hybrid `squeue`/`sacct` polling, submit
|
|
17
|
+
cooldown, and stale-registry cleanup. All Calculate-tab calc types supported
|
|
18
|
+
on the batch worker path.
|
|
19
|
+
- **`QUANTUI_ENABLE_SLURM` site gate** — SLURM batch stays hidden and
|
|
20
|
+
undispatchable until an operator sets this environment variable. Student CPU
|
|
21
|
+
images and JupyterHub profiles can omit it (default off); instructors enable
|
|
22
|
+
cluster testing with `QUANTUI_ENABLE_SLURM=1` without any extra student
|
|
23
|
+
command.
|
|
24
|
+
- **`quantui setup` and `quantui run app`** — writes `~/QuantUI.ipynb` for
|
|
25
|
+
NCShare/JupyterLab (Render with Voilà). `run app` detects Apptainer +
|
|
26
|
+
Jupyter and exits with Voilà instructions instead of opening an unreachable
|
|
27
|
+
second port.
|
|
28
|
+
- **Parallel IR intensity displacements (CPU)** — Settings checkbox
|
|
29
|
+
(`compute.freq_parallel`) plus `QUANTUI_FREQ_PARALLEL` env override fans out
|
|
30
|
+
the 6N finite-difference SCF loop on hosts with ≥4 cores and ≥2 atoms. The
|
|
31
|
+
**CPU teaching SIF** sets `QUANTUI_FREQ_PARALLEL=1` by default; the checkbox
|
|
32
|
+
reflects the deployment value and locks while the env var is set.
|
|
33
|
+
- **Imaginary-mode perturbation** for Frequency reruns seeded from History.
|
|
34
|
+
- **Stage-aware frequency cost estimate** and per-phase run status labels (NMR,
|
|
35
|
+
Hessian, post-HF).
|
|
36
|
+
- **Preset theme palettes** replacing the invert filter (M-THEME THEME.6).
|
|
37
|
+
- **Quantum engine registry** (`quantui/engines/`) and
|
|
38
|
+
`ComputeSettings.quantum_engine` field (M-PYFOCK PYF.1 groundwork).
|
|
39
|
+
- **Static Raman spectrum** on the Analysis tab (M-SPECTRA2).
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- **Mulliken 3D viewer** could render blank after geometry persistence and lazy
|
|
44
|
+
panel activation (#103).
|
|
45
|
+
- **`apptainer/quantui-gpu.def` never installed the `xtb` extra**, so GFN-FF
|
|
46
|
+
metal-capable classical pre-optimization (DEC-018) was unavailable in every
|
|
47
|
+
GPU/HPC image — the app correctly reported the honest-failure message
|
|
48
|
+
("RDKit could not perceive bonds ... and the GFN-FF (xtb) metal backend is
|
|
49
|
+
not installed"), but the underlying cause was a container gap, not a
|
|
50
|
+
missing local install. Fixed by pinning the image's Python to 3.11 via the
|
|
51
|
+
deadsnakes PPA (Ubuntu 24.04's own repos ship 3.12 only, and `xtb`'s PyPI
|
|
52
|
+
wheels stop at `cp311`) and adding `xtb` to the pip extras. `quantui.def`
|
|
53
|
+
(the CPU teaching image) gained the equivalent `xtb-python` conda-forge
|
|
54
|
+
package, which it had also been missing despite `local-setup/environment.yml`
|
|
55
|
+
already carrying it for local conda installs.
|
|
56
|
+
|
|
10
57
|
## [0.8.1] - 2026-08-26
|
|
11
58
|
|
|
12
59
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quantui
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.2
|
|
4
4
|
Summary: An open-source frontend for DFT and post-HF quantum chemistry with PySCF
|
|
5
5
|
Author-email: Jonathan Schultz <nccu-schultz-lab@users.noreply.github.com>
|
|
6
6
|
License: MIT License
|
|
@@ -55,8 +55,9 @@ Requires-Dist: numpy<3,>=1.24.0
|
|
|
55
55
|
Requires-Dist: requests<3,>=2.28.0
|
|
56
56
|
Requires-Dist: py3Dmol<3,>=2.0.0
|
|
57
57
|
Requires-Dist: matplotlib<4,>=3.7.0
|
|
58
|
-
Requires-Dist: plotly<
|
|
58
|
+
Requires-Dist: plotly<8,>=5.0.0
|
|
59
59
|
Requires-Dist: plotlymol<1,>=0.2.1
|
|
60
|
+
Requires-Dist: kaleido<2,>=0.2.1
|
|
60
61
|
Provides-Extra: pyscf
|
|
61
62
|
Requires-Dist: pyscf<3,>=2.13.0; extra == "pyscf"
|
|
62
63
|
Requires-Dist: pyscf-properties; extra == "pyscf"
|
|
@@ -119,24 +120,24 @@ Real output from QuantUI, straight from the app:
|
|
|
119
120
|
<table>
|
|
120
121
|
<tr>
|
|
121
122
|
<td width="50%" align="center" valign="top">
|
|
122
|
-
<img src="docs/images/cisplatin_lumo.png" alt="Cisplatin LUMO isosurface" width="400"><br>
|
|
123
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/cisplatin_lumo.png" alt="Cisplatin LUMO isosurface" width="400"><br>
|
|
123
124
|
<b>Cisplatin LUMO</b><br>
|
|
124
125
|
<sub>Molecular-orbital isosurface · B3LYP/LANL2DZ (ECP on Pt & Cl)</sub>
|
|
125
126
|
</td>
|
|
126
127
|
<td width="50%" align="center" valign="top">
|
|
127
|
-
<img src="docs/images/aspartame_orbital_diagram.png" alt="Aspartame orbital energy-level diagram" width="300"><br>
|
|
128
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/aspartame_orbital_diagram.png" alt="Aspartame orbital energy-level diagram" width="300"><br>
|
|
128
129
|
<b>Aspartame orbital energies</b><br>
|
|
129
130
|
<sub>Occupied/virtual levels · HOMO–LUMO gap 6.09 eV · B3LYP/6-31G*</sub>
|
|
130
131
|
</td>
|
|
131
132
|
</tr>
|
|
132
133
|
<tr>
|
|
133
134
|
<td width="50%" align="center" valign="top">
|
|
134
|
-
<img src="docs/images/benzene_ir_spectrum.png" alt="Benzene IR spectrum" width="400"><br>
|
|
135
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/benzene_ir_spectrum.png" alt="Benzene IR spectrum" width="400"><br>
|
|
135
136
|
<b>Benzene IR spectrum</b><br>
|
|
136
137
|
<sub>Analytical Hessian · ωB97X-D/6-31G · the four IR-active bands</sub>
|
|
137
138
|
</td>
|
|
138
139
|
<td width="50%" align="center" valign="top">
|
|
139
|
-
<img src="docs/images/cisplatin_optimization.png" alt="Cisplatin geometry-optimization energy convergence" width="400"><br>
|
|
140
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/cisplatin_optimization.png" alt="Cisplatin geometry-optimization energy convergence" width="400"><br>
|
|
140
141
|
<b>Geometry optimization</b><br>
|
|
141
142
|
<sub>Cisplatin relaxing over 21 BFGS steps · B3LYP/LANL2DZ</sub>
|
|
142
143
|
</td>
|
|
@@ -25,24 +25,24 @@ Real output from QuantUI, straight from the app:
|
|
|
25
25
|
<table>
|
|
26
26
|
<tr>
|
|
27
27
|
<td width="50%" align="center" valign="top">
|
|
28
|
-
<img src="docs/images/cisplatin_lumo.png" alt="Cisplatin LUMO isosurface" width="400"><br>
|
|
28
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/cisplatin_lumo.png" alt="Cisplatin LUMO isosurface" width="400"><br>
|
|
29
29
|
<b>Cisplatin LUMO</b><br>
|
|
30
30
|
<sub>Molecular-orbital isosurface · B3LYP/LANL2DZ (ECP on Pt & Cl)</sub>
|
|
31
31
|
</td>
|
|
32
32
|
<td width="50%" align="center" valign="top">
|
|
33
|
-
<img src="docs/images/aspartame_orbital_diagram.png" alt="Aspartame orbital energy-level diagram" width="300"><br>
|
|
33
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/aspartame_orbital_diagram.png" alt="Aspartame orbital energy-level diagram" width="300"><br>
|
|
34
34
|
<b>Aspartame orbital energies</b><br>
|
|
35
35
|
<sub>Occupied/virtual levels · HOMO–LUMO gap 6.09 eV · B3LYP/6-31G*</sub>
|
|
36
36
|
</td>
|
|
37
37
|
</tr>
|
|
38
38
|
<tr>
|
|
39
39
|
<td width="50%" align="center" valign="top">
|
|
40
|
-
<img src="docs/images/benzene_ir_spectrum.png" alt="Benzene IR spectrum" width="400"><br>
|
|
40
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/benzene_ir_spectrum.png" alt="Benzene IR spectrum" width="400"><br>
|
|
41
41
|
<b>Benzene IR spectrum</b><br>
|
|
42
42
|
<sub>Analytical Hessian · ωB97X-D/6-31G · the four IR-active bands</sub>
|
|
43
43
|
</td>
|
|
44
44
|
<td width="50%" align="center" valign="top">
|
|
45
|
-
<img src="docs/images/cisplatin_optimization.png" alt="Cisplatin geometry-optimization energy convergence" width="400"><br>
|
|
45
|
+
<img src="https://raw.githubusercontent.com/The-Schultz-Lab/QuantUI/main/docs/images/cisplatin_optimization.png" alt="Cisplatin geometry-optimization energy convergence" width="400"><br>
|
|
46
46
|
<b>Geometry optimization</b><br>
|
|
47
47
|
<sub>Cisplatin relaxing over 21 BFGS steps · B3LYP/LANL2DZ</sub>
|
|
48
48
|
</td>
|
|
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "quantui"
|
|
11
|
-
version = "0.8.
|
|
11
|
+
version = "0.8.2"
|
|
12
12
|
description = "An open-source frontend for DFT and post-HF quantum chemistry with PySCF"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
requires-python = ">=3.9"
|
|
@@ -62,8 +62,9 @@ dependencies = [
|
|
|
62
62
|
"requests>=2.28.0,<3",
|
|
63
63
|
"py3Dmol>=2.0.0,<3",
|
|
64
64
|
"matplotlib>=3.7.0,<4",
|
|
65
|
-
"plotly>=5.0.0,<
|
|
65
|
+
"plotly>=5.0.0,<8",
|
|
66
66
|
"plotlymol>=0.2.1,<1",
|
|
67
|
+
"kaleido>=0.2.1,<2",
|
|
67
68
|
]
|
|
68
69
|
|
|
69
70
|
[project.urls]
|
|
@@ -82,7 +83,7 @@ Issues = "https://github.com/The-Schultz-Lab/QuantUI/issues"
|
|
|
82
83
|
quantui = "quantui.cli:main"
|
|
83
84
|
|
|
84
85
|
[tool.setuptools]
|
|
85
|
-
packages = ["quantui"]
|
|
86
|
+
packages = ["quantui", "quantui.backends"]
|
|
86
87
|
|
|
87
88
|
[tool.setuptools.package-data]
|
|
88
89
|
# Bundled molecule library (M-STRUCT): the indexed SQLite store + the
|
|
@@ -7,7 +7,7 @@ Calculations run locally in the Jupyter session — no cluster or SLURM required
|
|
|
7
7
|
PySCF requires Linux/macOS/WSL. Windows users should use the Apptainer container.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
__version__ = "0.8.
|
|
10
|
+
__version__ = "0.8.2"
|
|
11
11
|
|
|
12
12
|
import logging
|
|
13
13
|
from typing import Any
|