The WEAS package is a JavaScript library designed to visualize and edit atomic structures (molecule, crystal, nanoparticle) in the web environments.
Features:
- Model: space-filling, ball-stick, polyhedral.
- Supported File types: cif, xyz, cube, xsf, POSCAR.
- Edit structure: move, rotate, delete, and replace atoms.
- Atom groups for tagging and selection by group.
- Support periodic boundary conditions.
- Animation (view and edit).
- Volumetric data (isosurface).
- Vector fields, e.g., magnetic moment.
- Import structures and export image/JSON/XYZ/CIF (and animation when available) from the GUI.
Here are some demo pages:
- Codepen Demo
- ...
Please visit: WEAS Documentation
WEAS separates viewer state changes from operations that record undo/redo.
// Apply state changes without history, with deferred redraws.
viewer.avr.transaction(() => {
viewer.avr.applyState({ modelStyle: 1, colorBy: "Element" });
});
// Apply state changes with history.
viewer.avr.setState({ colorBy: "Index" }, { record: true, redraw: "full" });You can export the full viewer state (atoms, plugins, viewer settings, camera) to JSON and import it later.
const snapshot = viewer.exportState();
// persist snapshot as JSON
const payload = JSON.stringify(snapshot);
// restore later
viewer.importState(JSON.parse(payload));The GUI includes import/export buttons for JSON/XYZ/CIF. You can also use the helpers programmatically:
import { parseStructureText, applyStructurePayload, buildExportPayload, downloadText } from "weas";
const parsed = parseStructureText(text, ".cif");
applyStructurePayload(viewer, parsed.data);
const payload = buildExportPayload(viewer, "xyz");
downloadText(payload.text, payload.filename, payload.mimeType);Clone the repository,
npm install
npm startThen go to the demo site.
npm install
npm testUse playwright for the e2e test.
For the first time, one needs to install the dependence.
npx playwright install
Then run
npm run build
npx playwright test
Run the test with the title
npx playwright test -g "Animation"
If the snapshots need to be updated:
npx playwright test --update-snapshots
- Xing Wang [email protected]





