Loading
Add Spectroscopy workflow to Control Generator Step
Summary
This MR adds the Spectroscopy workflow to GIMS, backed by a new FHI-vibes input file generator, and includes a set of dependency upgrades and infrastructure improvements made along the way.
Spectroscopy workflow (frontend)
- New Spectroscopy workflow option with a dedicated icon
- New fields in Fields_FHIaims.js: phonon method, MD settings, spectroscopy type, output polarization (grouped field), and related constraints
- Workflow sections in ControlGeneratorMod now follow a two-level form JSON structure (form.basic, form.md, form.spectroscopy, form.phonopy, form.md_vibes) that makes section membership explicit and simplifies backend parsing
- Section visibility is driven by constraints so that e.g. the phonopy or md_vibes section appears only when the matching phonon method is selected
FHI-vibes backend (app/gims/inputs/FHIVibes.py)
- New FHIVibes input class that generates fhi-vibes task files (geometry, calculator, phonopy/MD sections) from the submitted form JSON
- Registered in
__init__.pyand wired intoprepare_input.py - 97 backend tests covering phonopy and MD sub-workflows
FHI-aims output parser (frontend, client/src/output-analyzer-mod/parser/)
- JS port of the FHI-aims output parser (previously Python-only): parsers.js, converters.js, abc.js, utils.js
- Enables in-browser parsing of aims.out files without a round-trip to the server
Structure viewer — three.js r184 upgrade
- Upgraded three.js from 0.130 to 0.184
- Restored original lighting: opted out of the r152+ colour management changes (ColorManagement.enabled = false, outputColorSpace = LinearSRGBColorSpace) and compensated for the r155 physical BRDF π factor on all light intensities
- Fixed pointer-event handling broken by TrackballControls switching from mouse to pointer events in r152: moved hover/click/drag listeners to the right elements and used setPointerCapture to prevent TrackballControls from stealing clicks on UI overlay elements (Switch, dropdowns, 2D canvas legend)
Dependency and test infrastructure
- Jest upgraded to 30, canvas to v3 (removes the tar audit vulnerability)
structuredClonepolyfill added to setupTest.js for jsdom compatibility- New frontend test suites: controlGenerator.test.js (29 tests covering all workflow variants), workflows.test.js, parseAimsOutput.test.js
- CI Python version updated; ASE pinned to 3.26