Metadata-Version: 2.3
Name: janus-core-ux
Version: 0.1.2
Summary: Modern Qt6 / PySide6 desktop UX for STFC janus-core with Chemiscope 3D visualization, interactive graphs, and multi-MLIP support
Keywords: atomistic,simulation,mlip,mace,sevennet,chemiscope,pyside6,qt6,materials-science
Author: Janus UX Team
License: BSD-3-Clause
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: pyside6>=6.8.0
Requires-Dist: ase>=3.23.0
Requires-Dist: janus-core>=0.9.0
Requires-Dist: chemiscope>=1.0.0
Requires-Dist: plotly>=5.0.0
Requires-Dist: numpy
Requires-Dist: typer>=0.9.0
Requires-Dist: pytest>=7.0.0 ; extra == 'dev'
Requires-Dist: pytest-qt>=4.4.0 ; extra == 'dev'
Requires-Dist: ruff>=0.8.0 ; extra == 'dev'
Requires-Dist: pre-commit>=4.0.0 ; extra == 'dev'
Requires-Python: >=3.11
Project-URL: Homepage, https://github.com/stfc/janus-core
Project-URL: Repository, https://github.com/stfc/janus-core
Project-URL: Documentation, https://context7.com/stfc/janus-core
Provides-Extra: dev
Description-Content-Type: text/markdown

# Janus-Core Desktop UX

A desktop graphical user interface for **STFC `janus-core`** built with **Qt6** and **PySide6**.

![Janus UX](https://img.shields.io/badge/GUI-PySide6%20%2F%20Qt6-blue.svg)
![Python](https://img.shields.io/badge/Python-3.12-brightgreen.svg)
![MLIP](https://img.shields.io/badge/MLIP-MACE%20%7C%20SevenNet%20%7C%20CHGNet-orange.svg)
![Visualization](https://img.shields.io/badge/3D%20Visualizer-Chemiscope-purple.svg)

---

## Features

- **Dedicated Tabs for All Janus-Core Calculations**:
  - ⚙️ **MLIP Environments & Potentials Setup**: Manage multiple micromamba/conda/virtual environments with incompatible dependencies. Auto-detect installed models (MACE, SevenNet, CHGNet, FairChem, NequIP, ORB, MatterSim), install/upgrade potentials directly via `uv`, and choose target execution environments per calculation.
  - ⚡ **Geometry Optimization**: Atomic coordinate relaxation and crystal unit cell optimization (`FrechetCellFilter`, `ExpCellFilter`), convergence curves, and trajectory playback.
  - 🎯 **Single Point**: Potential energy, atomic forces, stress tensor, and Hessian matrix.
  - 🌊 **Molecular Dynamics**: NVE, NVT, and NPT ensembles with Langevin or Nosé-Hoover thermostats, temperature ramping, thermodynamic curves (T, Epot, Pressure vs Time), and trajectory player.
  - 🎵 **Phonons**: Supercell generation, finite displacement, phonon band structures, DOS/PDOS, and vibrational heat capacity / entropy curves.
  - 📈 **Equation of State (EOS)**: Birch-Murnaghan, Murnaghan, and Vinet E(V) curve fitting, bulk modulus $B_0$, and interactive strained cell inspector.
  - 💎 **Elasticity**: Full $6 \times 6$ elastic stiffness matrix $C_{ij}$, compliance matrix $S_{ij}$, and Voigt-Reuss-Hill bulk, shear, and Young's moduli.
  - ⛰️ **NEB Reaction Pathways**: Climbing-image Nudged Elastic Band (CI-NEB) for transition state search and activation energy barriers $\Delta E^\ddagger$.
  - 🧬 **MLIP Descriptors**: Atomic and system-level MLIP representations and invariants.

- **Chemiscope 3D Atomistic Visualizer**:
  - Embedded via `QWebEngineView` using local offline Chemiscope JavaScript libraries.
  - Interactive camera rotation, zoom, panning, unit cell boundary toggling, atomic bonds, and measurement tools.
  - Trajectory playback and frame scrubber.

- **Interactive 2D/3D Linked Graphs with Point Picking**:
  - Click any point on a geometry optimization convergence curve, EOS $E(V)$ curve, or NEB reaction path to **immediately update the 3D Chemiscope visualizer to that specific structure/frame**.

- **Asynchronous Background Execution**:
  - Calculations run in background `QThread` workers without freezing the interface.
  - Live colorized terminal log streaming with search filtering.
  - Cancel button for long simulations.

---

## Installation & Environment

Install from PyPI or editable source using `uv`:

```bash
# Install with uv
uv pip install -e . --python /opt/micromamba/envs/janus/bin/python

# Or install desktop shortcut and system icon
janus-core-ux --install-desktop
```

---

## Launching the Application

Run directly from the command line using any of the installed entry points:

```bash
janus-core-ux
```

You can also launch it directly from your Linux system desktop application launcher (GNOME, KDE Plasma, XFCE).

---

## Desktop Shortcut & Icon

To register the desktop application shortcut and system icon to `~/.local/share/applications` and `~/.local/share/icons`:

- Run CLI flag: `janus-core-ux --install-desktop`
- Or from inside the GUI: Navigate to **Help -> Install Desktop Shortcut**.

---

## Running Tests

Run the test suite with `uv` and `pytest`:

```bash
uv run --no-project --python /opt/micromamba/envs/janus/bin/python -m pytest tests/
```
