matterviz 0.4.0 → 0.4.1
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.
- package/dist/brillouin/BrillouinZone.svelte +68 -145
- package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -14
- package/dist/brillouin/BrillouinZoneExportPane.svelte +43 -96
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +9 -32
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
- package/dist/brillouin/BrillouinZoneScene.svelte +49 -203
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
- package/dist/brillouin/ReciprocalVectors.svelte +39 -0
- package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
- package/dist/brillouin/compute.d.ts +2 -0
- package/dist/brillouin/compute.js +80 -77
- package/dist/brillouin/geometry.d.ts +8 -0
- package/dist/brillouin/geometry.js +57 -0
- package/dist/brillouin/index.d.ts +2 -0
- package/dist/brillouin/index.js +2 -0
- package/dist/brillouin/types.d.ts +2 -2
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +100 -191
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +176 -464
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
- package/dist/chempot-diagram/color.d.ts +3 -6
- package/dist/chempot-diagram/color.js +5 -5
- package/dist/chempot-diagram/compute.d.ts +3 -3
- package/dist/chempot-diagram/compute.js +3 -1
- package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
- package/dist/chempot-diagram/controls-state.svelte.js +42 -0
- package/dist/chempot-diagram/export.d.ts +47 -0
- package/dist/chempot-diagram/export.js +133 -0
- package/dist/chempot-diagram/index.d.ts +1 -0
- package/dist/chempot-diagram/index.js +1 -0
- package/dist/chempot-diagram/pointer.d.ts +0 -10
- package/dist/chempot-diagram/pointer.js +4 -4
- package/dist/chempot-diagram/types.d.ts +3 -3
- package/dist/colors/index.js +2 -2
- package/dist/composition/FormulaFilter.svelte +6 -5
- package/dist/composition/PieChart.svelte +5 -5
- package/dist/composition/chem-sys.js +3 -2
- package/dist/composition/format.js +3 -2
- package/dist/composition/parse.d.ts +0 -1
- package/dist/composition/parse.js +17 -19
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +0 -1
- package/dist/convex-hull/ConvexHull.svelte +8 -10
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
- package/dist/convex-hull/ConvexHull2D.svelte +94 -175
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +176 -680
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +180 -680
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +268 -0
- package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
- package/dist/convex-hull/ConvexHullControls.svelte +88 -7
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
- package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
- package/dist/convex-hull/ConvexHullStats.svelte +29 -168
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +11 -2
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
- package/dist/convex-hull/barycentric-coords.d.ts +2 -4
- package/dist/convex-hull/barycentric-coords.js +6 -33
- package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
- package/dist/convex-hull/canvas-interactions.svelte.js +278 -0
- package/dist/convex-hull/helpers.d.ts +39 -7
- package/dist/convex-hull/helpers.js +154 -69
- package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
- package/dist/convex-hull/hull-state.svelte.js +124 -0
- package/dist/convex-hull/index.d.ts +9 -7
- package/dist/convex-hull/index.js +7 -2
- package/dist/convex-hull/thermodynamics.js +91 -920
- package/dist/convex-hull/types.d.ts +12 -4
- package/dist/convex-hull/types.js +12 -0
- package/dist/coordination/CoordinationBarPlot.svelte +4 -11
- package/dist/element/BohrAtom.svelte +2 -1
- package/dist/element/ElementTile.svelte.d.ts +1 -1
- package/dist/element/index.d.ts +4 -0
- package/dist/element/index.js +18 -0
- package/dist/feedback/DragOverlay.svelte +3 -1
- package/dist/feedback/DragOverlay.svelte.d.ts +1 -0
- package/dist/feedback/StatusMessage.svelte +13 -3
- package/dist/fermi-surface/FermiSurface.svelte +67 -146
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -14
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +72 -224
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
- package/dist/fermi-surface/compute.js +11 -10
- package/dist/fermi-surface/export.js +4 -15
- package/dist/fermi-surface/index.d.ts +0 -1
- package/dist/fermi-surface/index.js +0 -1
- package/dist/fermi-surface/parse.d.ts +1 -1
- package/dist/fermi-surface/parse.js +64 -75
- package/dist/fermi-surface/types.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +55 -40
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +4 -3
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +3 -2
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
- package/dist/heatmap-matrix/index.d.ts +3 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/io/ExportPane.svelte +166 -0
- package/dist/io/ExportPane.svelte.d.ts +17 -0
- package/dist/io/decompress.js +1 -2
- package/dist/io/export.d.ts +5 -1
- package/dist/io/export.js +32 -28
- package/dist/io/fetch.d.ts +2 -1
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +13 -0
- package/dist/io/index.d.ts +2 -0
- package/dist/io/index.js +10 -0
- package/dist/io/types.d.ts +13 -0
- package/dist/isosurface/parse.js +46 -44
- package/dist/labels.js +1 -1
- package/dist/layout/FullscreenButton.svelte +33 -0
- package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
- package/dist/layout/FullscreenToggle.svelte +8 -14
- package/dist/layout/ViewerChrome.svelte +116 -0
- package/dist/layout/ViewerChrome.svelte.d.ts +17 -0
- package/dist/layout/fullscreen.d.ts +4 -0
- package/dist/layout/fullscreen.svelte.d.ts +8 -0
- package/dist/layout/fullscreen.svelte.js +37 -0
- package/dist/layout/index.d.ts +3 -0
- package/dist/layout/index.js +3 -0
- package/dist/math.d.ts +7 -3
- package/dist/math.js +18 -21
- package/dist/overlays/index.d.ts +4 -0
- package/dist/periodic-table/PeriodicTable.svelte +9 -8
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramControls.svelte +3 -2
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +47 -132
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
- package/dist/phase-diagram/colors.js +1 -1
- package/dist/phase-diagram/parse.d.ts +2 -1
- package/dist/plot/bar/BarPlot.svelte +79 -316
- package/dist/plot/bar/BarPlot.svelte.d.ts +7 -15
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +1 -1
- package/dist/plot/bar/SpacegroupBarPlot.svelte +2 -1
- package/dist/plot/box/BoxPlot.svelte +76 -246
- package/dist/plot/box/BoxPlot.svelte.d.ts +4 -3
- package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
- package/dist/plot/box/Violin.svelte.d.ts +1 -1
- package/dist/plot/box/box-plot.d.ts +3 -2
- package/dist/plot/box/box-plot.js +5 -2
- package/dist/plot/box/kde.d.ts +2 -1
- package/dist/plot/box/kde.js +4 -4
- package/dist/plot/core/auto-place.d.ts +1 -1
- package/dist/plot/core/auto-place.js +4 -1
- package/dist/plot/core/components/ColorBar.svelte +5 -5
- package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
- package/dist/plot/core/components/Line.svelte +3 -2
- package/dist/plot/core/components/Line.svelte.d.ts +3 -2
- package/dist/plot/core/components/PlotAxis.svelte +2 -1
- package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
- package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/core/components/ReferenceLine3D.svelte +2 -2
- package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
- package/dist/plot/core/components/ReferencePlane.svelte +2 -2
- package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
- package/dist/plot/core/data-cleaning.js +18 -18
- package/dist/plot/core/fill-utils.d.ts +4 -3
- package/dist/plot/core/fill-utils.js +6 -3
- package/dist/plot/core/interactions.d.ts +5 -1
- package/dist/plot/core/interactions.js +14 -0
- package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
- package/dist/plot/core/pan-zoom.svelte.js +221 -0
- package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
- package/dist/plot/core/placed-tween.svelte.js +68 -0
- package/dist/plot/core/reference-line.d.ts +10 -10
- package/dist/plot/core/reference-line.js +6 -6
- package/dist/plot/core/scales.d.ts +17 -25
- package/dist/plot/core/scales.js +10 -8
- package/dist/plot/core/svg.d.ts +2 -1
- package/dist/plot/core/types.d.ts +18 -7
- package/dist/plot/core/utils/label-placement.d.ts +1 -1
- package/dist/plot/core/utils/label-placement.js +3 -3
- package/dist/plot/core/utils.d.ts +2 -1
- package/dist/plot/histogram/Histogram.svelte +77 -314
- package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
- package/dist/plot/sankey/Sankey.svelte +2 -5
- package/dist/plot/sankey/Sankey.svelte.d.ts +1 -1
- package/dist/plot/sankey/sankey.js +3 -1
- package/dist/plot/scatter/BinnedScatterPlot.svelte +3 -5
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +4 -4
- package/dist/plot/scatter/ScatterPlot.svelte +160 -450
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +7 -15
- package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/scatter/binned-scatter-types.d.ts +4 -11
- package/dist/plot/scatter/index.d.ts +1 -1
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte +15 -26
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +9 -10
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +122 -121
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
- package/dist/plot/scatter-3d/Surface3D.svelte +6 -5
- package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
- package/dist/plot/sunburst/Sunburst.svelte +16 -20
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
- package/dist/plot/sunburst/SunburstControls.svelte.d.ts +1 -1
- package/dist/plot/sunburst/sunburst.js +4 -1
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/sanitize.js +13 -2
- package/dist/scene/SceneCamera.svelte +62 -0
- package/dist/scene/SceneCamera.svelte.d.ts +19 -0
- package/dist/scene/bind-renderer.svelte.d.ts +2 -0
- package/dist/scene/bind-renderer.svelte.js +14 -0
- package/dist/scene/index.d.ts +4 -0
- package/dist/scene/index.js +5 -0
- package/dist/scene/props.js +52 -0
- package/dist/scene/types.d.ts +26 -0
- package/dist/scene/types.js +1 -0
- package/dist/settings.d.ts +14 -2
- package/dist/settings.js +59 -1
- package/dist/spectral/Bands.svelte +8 -7
- package/dist/spectral/Bands.svelte.d.ts +3 -2
- package/dist/spectral/BandsAndDos.svelte +22 -24
- package/dist/spectral/BrillouinBandsDos.svelte +3 -3
- package/dist/spectral/Dos.svelte +5 -4
- package/dist/spectral/Dos.svelte.d.ts +2 -1
- package/dist/spectral/helpers.d.ts +6 -6
- package/dist/spectral/helpers.js +43 -37
- package/dist/state.svelte.d.ts +0 -7
- package/dist/state.svelte.js +0 -6
- package/dist/structure/Arrow.svelte +2 -4
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/CanvasTooltip.svelte +1 -0
- package/dist/structure/CellSelect.svelte +11 -3
- package/dist/structure/CellSelect.svelte.d.ts +2 -1
- package/dist/structure/Lattice.svelte +2 -2
- package/dist/structure/Structure.svelte +291 -355
- package/dist/structure/Structure.svelte.d.ts +5 -15
- package/dist/structure/StructureControls.svelte +217 -2
- package/dist/structure/StructureControls.svelte.d.ts +5 -3
- package/dist/structure/StructureExportPane.svelte +54 -156
- package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
- package/dist/structure/StructureInfoPane.svelte +5 -3
- package/dist/structure/StructureInfoPane.svelte.d.ts +5 -5
- package/dist/structure/StructureScene.svelte +365 -198
- package/dist/structure/StructureScene.svelte.d.ts +22 -20
- package/dist/structure/{label-placement.d.ts → atom-label-placement.d.ts} +3 -3
- package/dist/structure/{label-placement.js → atom-label-placement.js} +12 -2
- package/dist/structure/atom-properties.d.ts +1 -1
- package/dist/structure/atom-properties.js +11 -16
- package/dist/structure/bond-order-perception.js +2 -4
- package/dist/structure/bonding.d.ts +3 -0
- package/dist/structure/bonding.js +91 -48
- package/dist/structure/export.d.ts +24 -4
- package/dist/structure/export.js +64 -122
- package/dist/structure/index.d.ts +2 -0
- package/dist/structure/index.js +2 -0
- package/dist/structure/parse.d.ts +3 -2
- package/dist/structure/parse.js +333 -370
- package/dist/structure/partial-occupancy.d.ts +0 -1
- package/dist/structure/partial-occupancy.js +1 -1
- package/dist/structure/pbc.d.ts +1 -1
- package/dist/structure/pbc.js +186 -13
- package/dist/structure/polyhedra.d.ts +41 -0
- package/dist/structure/polyhedra.js +602 -0
- package/dist/structure/site.d.ts +4 -0
- package/dist/structure/site.js +1 -0
- package/dist/structure/supercell.js +3 -2
- package/dist/structure/validation.js +5 -6
- package/dist/symmetry/SymmetryElementControls.svelte +69 -0
- package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
- package/dist/symmetry/SymmetryElements.svelte +354 -0
- package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
- package/dist/symmetry/SymmetryStats.svelte +111 -6
- package/dist/symmetry/WyckoffTable.svelte +68 -7
- package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
- package/dist/symmetry/cell-transform.js +7 -14
- package/dist/symmetry/index.d.ts +14 -4
- package/dist/symmetry/index.js +301 -80
- package/dist/symmetry/spacegroups.d.ts +5 -1
- package/dist/symmetry/spacegroups.js +15 -1
- package/dist/symmetry/symmetry-elements.d.ts +33 -0
- package/dist/symmetry/symmetry-elements.js +521 -0
- package/dist/symmetry/wyckoff-db.d.ts +9 -0
- package/dist/symmetry/wyckoff-db.js +87 -0
- package/dist/table/HeatmapTable.svelte +4 -15
- package/dist/table/HeatmapTable.svelte.d.ts +1 -1
- package/dist/trajectory/Trajectory.svelte +58 -61
- package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
- package/dist/trajectory/TrajectoryExportPane.svelte +15 -24
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
- package/dist/trajectory/TrajectoryInfoPane.svelte +3 -2
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
- package/dist/trajectory/constants.js +6 -2
- package/dist/trajectory/extract.js +17 -37
- package/dist/trajectory/format-detect.d.ts +0 -1
- package/dist/trajectory/format-detect.js +3 -9
- package/dist/trajectory/frame-reader.d.ts +0 -1
- package/dist/trajectory/frame-reader.js +62 -128
- package/dist/trajectory/helpers.d.ts +10 -2
- package/dist/trajectory/helpers.js +56 -36
- package/dist/trajectory/parse/ase.d.ts +9 -1
- package/dist/trajectory/parse/ase.js +47 -32
- package/dist/trajectory/parse/diagnostics.d.ts +3 -0
- package/dist/trajectory/parse/diagnostics.js +14 -0
- package/dist/trajectory/parse/index.d.ts +1 -1
- package/dist/trajectory/parse/index.js +54 -102
- package/dist/trajectory/parse/lammps.d.ts +0 -2
- package/dist/trajectory/parse/lammps.js +8 -6
- package/dist/trajectory/parse/pymatgen.d.ts +2 -0
- package/dist/trajectory/parse/pymatgen.js +74 -0
- package/dist/trajectory/parse/vasp.js +4 -3
- package/dist/trajectory/parse/xyz.d.ts +9 -21
- package/dist/trajectory/parse/xyz.js +28 -33
- package/dist/trajectory/plotting.d.ts +0 -1
- package/dist/trajectory/plotting.js +3 -100
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +1 -1
- package/dist/xrd/XrdPlot.svelte +14 -29
- package/dist/xrd/broadening.d.ts +2 -1
- package/dist/xrd/calc-xrd.js +6 -11
- package/dist/xrd/index.d.ts +2 -2
- package/package.json +29 -16
- package/dist/element/data.json +0 -11864
- package/dist/fermi-surface/marching-cubes.d.ts +0 -2
- package/dist/fermi-surface/marching-cubes.js +0 -2
- package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
- package/dist/plot/core/hover-lock.svelte.js +0 -45
|
@@ -2,17 +2,27 @@
|
|
|
2
2
|
import { contrast_color } from '../colors'
|
|
3
3
|
import { format_fractional } from '../labels'
|
|
4
4
|
import { colors } from '../state.svelte'
|
|
5
|
+
import type { MoyoWyckoffPosition } from '@spglib/moyo-wasm'
|
|
6
|
+
import { SvelteSet } from 'svelte/reactivity'
|
|
5
7
|
import type { HTMLAttributes } from 'svelte/elements'
|
|
6
8
|
import type { WyckoffPos } from '.'
|
|
9
|
+
import { enrich_wyckoff_rows, wyckoff_letter } from '.'
|
|
7
10
|
|
|
8
11
|
let {
|
|
9
12
|
wyckoff_positions,
|
|
13
|
+
// Full Wyckoff-position database of the space group (from
|
|
14
|
+
// spacegroup_wyckoff_positions). When given, occupied rows gain an ITA coordinates
|
|
15
|
+
// column and unoccupied positions can be listed via show_unoccupied.
|
|
16
|
+
db_positions = [],
|
|
17
|
+
show_unoccupied = false,
|
|
10
18
|
on_hover,
|
|
11
19
|
on_click,
|
|
12
20
|
active_color = `#2563eb`,
|
|
13
21
|
...rest
|
|
14
22
|
}: HTMLAttributes<HTMLTableElement> & {
|
|
15
23
|
wyckoff_positions: WyckoffPos[]
|
|
24
|
+
db_positions?: MoyoWyckoffPosition[]
|
|
25
|
+
show_unoccupied?: boolean
|
|
16
26
|
on_hover?: (site_indices: number[] | null) => void
|
|
17
27
|
on_click?: (site_indices: number[] | null) => void
|
|
18
28
|
active_color?: string
|
|
@@ -20,12 +30,33 @@
|
|
|
20
30
|
|
|
21
31
|
let selected_key = $state<string | null>(null)
|
|
22
32
|
|
|
33
|
+
// Occupied orbits enriched with ITA representative coordinates + site symmetry
|
|
34
|
+
const rows = $derived(enrich_wyckoff_rows(wyckoff_positions ?? [], db_positions))
|
|
35
|
+
// Wyckoff positions of the space group not occupied by any atom, smallest
|
|
36
|
+
// multiplicity first (matches the ascending sort of occupied rows)
|
|
37
|
+
const unoccupied_rows = $derived.by(() => {
|
|
38
|
+
if (!show_unoccupied) return []
|
|
39
|
+
const occupied_letters = new SvelteSet(rows.map((row) => wyckoff_letter(row.wyckoff)))
|
|
40
|
+
return db_positions
|
|
41
|
+
.filter((pos) => !occupied_letters.has(pos.letter))
|
|
42
|
+
.toSorted((pos_1, pos_2) =>
|
|
43
|
+
pos_1.multiplicity - pos_2.multiplicity ||
|
|
44
|
+
pos_1.letter.localeCompare(pos_2.letter)
|
|
45
|
+
)
|
|
46
|
+
})
|
|
47
|
+
const has_ita_coords = $derived(
|
|
48
|
+
rows.some((pos) => pos.coordinates) || unoccupied_rows.length > 0,
|
|
49
|
+
)
|
|
50
|
+
const has_site_symmetry = $derived(
|
|
51
|
+
rows.some((pos) => pos.site_symmetry) || unoccupied_rows.length > 0,
|
|
52
|
+
)
|
|
53
|
+
|
|
23
54
|
const get_row_key = (wyckoff_pos: WyckoffPos, row_idx: number) =>
|
|
24
55
|
`${wyckoff_pos.wyckoff}-${wyckoff_pos.elem}-${
|
|
25
56
|
wyckoff_pos.site_indices?.join(`,`) ?? `none`
|
|
26
57
|
}-${row_idx}`
|
|
27
58
|
$effect(() => {
|
|
28
|
-
if (!selected_key ||
|
|
59
|
+
if (!selected_key || rows.some((pos, idx) => get_row_key(pos, idx) === selected_key)) {
|
|
29
60
|
return
|
|
30
61
|
}
|
|
31
62
|
selected_key = null
|
|
@@ -33,7 +64,7 @@
|
|
|
33
64
|
})
|
|
34
65
|
</script>
|
|
35
66
|
|
|
36
|
-
{#if
|
|
67
|
+
{#if rows.length > 0 || unoccupied_rows.length > 0}
|
|
37
68
|
<table {...rest} class="wyckoff-table {rest.class ?? ``}">
|
|
38
69
|
<thead>
|
|
39
70
|
<tr>
|
|
@@ -41,6 +72,18 @@
|
|
|
41
72
|
[`Wyckoff`, `Wyckoff position: Multiplicity + Letter`],
|
|
42
73
|
[`Element`, `Chemical element symbol`],
|
|
43
74
|
[`Fractional Coords`, `Fractional coordinates within the unit cell`],
|
|
75
|
+
...(has_ita_coords
|
|
76
|
+
? [[
|
|
77
|
+
`ITA Coords`,
|
|
78
|
+
`Representative coordinates from the International Tables: x/y/z mark free parameters, fractions mark symmetry-fixed coordinates`,
|
|
79
|
+
]]
|
|
80
|
+
: []),
|
|
81
|
+
...(has_site_symmetry
|
|
82
|
+
? [[
|
|
83
|
+
`Site Symm.`,
|
|
84
|
+
`Site symmetry: point group of operations leaving the site invariant`,
|
|
85
|
+
]]
|
|
86
|
+
: []),
|
|
44
87
|
] as
|
|
45
88
|
[col, title]
|
|
46
89
|
(col)
|
|
@@ -50,11 +93,7 @@
|
|
|
50
93
|
</tr>
|
|
51
94
|
</thead>
|
|
52
95
|
<tbody>
|
|
53
|
-
{#each
|
|
54
|
-
wyckoff_pos,
|
|
55
|
-
row_idx
|
|
56
|
-
(get_row_key(wyckoff_pos, row_idx))
|
|
57
|
-
}
|
|
96
|
+
{#each rows as wyckoff_pos, row_idx (get_row_key(wyckoff_pos, row_idx))}
|
|
58
97
|
{@const { wyckoff, elem, abc, site_indices } = wyckoff_pos}
|
|
59
98
|
{@const row_key = get_row_key(wyckoff_pos, row_idx)}
|
|
60
99
|
{@const is_selected = selected_key === row_key}
|
|
@@ -89,6 +128,25 @@
|
|
|
89
128
|
</span>
|
|
90
129
|
</td>
|
|
91
130
|
<td>({abc?.map(format_fractional).join(` , `) ?? `N/A`})</td>
|
|
131
|
+
{#if has_ita_coords}
|
|
132
|
+
<td>{wyckoff_pos.coordinates ? `(${wyckoff_pos.coordinates})` : ``}</td>
|
|
133
|
+
{/if}
|
|
134
|
+
{#if has_site_symmetry}
|
|
135
|
+
<td>{wyckoff_pos.site_symmetry ?? ``}</td>
|
|
136
|
+
{/if}
|
|
137
|
+
</tr>
|
|
138
|
+
{/each}
|
|
139
|
+
{#each unoccupied_rows as db_pos (db_pos.letter)}
|
|
140
|
+
<tr class="unoccupied" title="Wyckoff position not occupied in this structure">
|
|
141
|
+
<td>{db_pos.multiplicity}{db_pos.letter}</td>
|
|
142
|
+
<td>—</td>
|
|
143
|
+
<td>—</td>
|
|
144
|
+
{#if has_ita_coords}
|
|
145
|
+
<td>({db_pos.coordinates})</td>
|
|
146
|
+
{/if}
|
|
147
|
+
{#if has_site_symmetry}
|
|
148
|
+
<td>{db_pos.site_symmetry}</td>
|
|
149
|
+
{/if}
|
|
92
150
|
</tr>
|
|
93
151
|
{/each}
|
|
94
152
|
</tbody>
|
|
@@ -117,4 +175,7 @@
|
|
|
117
175
|
.wyckoff-row.selected:hover {
|
|
118
176
|
background-color: color-mix(in srgb, var(--active-color) 35%, transparent);
|
|
119
177
|
}
|
|
178
|
+
.unoccupied {
|
|
179
|
+
opacity: 0.5;
|
|
180
|
+
}
|
|
120
181
|
</style>
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import type { MoyoWyckoffPosition } from '@spglib/moyo-wasm';
|
|
1
2
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
3
|
import type { WyckoffPos } from '.';
|
|
3
4
|
type $$ComponentProps = HTMLAttributes<HTMLTableElement> & {
|
|
4
5
|
wyckoff_positions: WyckoffPos[];
|
|
6
|
+
db_positions?: MoyoWyckoffPosition[];
|
|
7
|
+
show_unoccupied?: boolean;
|
|
5
8
|
on_hover?: (site_indices: number[] | null) => void;
|
|
6
9
|
on_click?: (site_indices: number[] | null) => void;
|
|
7
10
|
active_color?: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ATOMIC_NUMBER_TO_SYMBOL } from '../composition/parse';
|
|
2
2
|
import * as math from '../math';
|
|
3
3
|
import { wrap_to_unit_cell } from '../structure/pbc';
|
|
4
|
+
import { make_site } from '../structure/site';
|
|
4
5
|
const transferable_properties = (properties) => {
|
|
5
6
|
if (properties === undefined)
|
|
6
7
|
return undefined;
|
|
@@ -13,17 +14,10 @@ const transferable_properties = (properties) => {
|
|
|
13
14
|
// the full Crystal with lattice parameters and element symbols.
|
|
14
15
|
export function moyo_cell_to_structure(cell, // The MoyoCell from symmetry analysis (std_cell or prim_std_cell)
|
|
15
16
|
original_structure) {
|
|
16
|
-
// Convert flat 9-element basis to 3x3 matrix
|
|
17
|
-
//
|
|
18
|
-
// (
|
|
19
|
-
|
|
20
|
-
// where each row is a lattice vector in the pymatgen convention
|
|
21
|
-
const basis = cell.lattice.basis;
|
|
22
|
-
const lattice_matrix = [
|
|
23
|
-
[basis[0], basis[1], basis[2]], // First lattice vector (a)
|
|
24
|
-
[basis[3], basis[4], basis[5]], // Second lattice vector (b)
|
|
25
|
-
[basis[6], basis[7], basis[8]], // Third lattice vector (c)
|
|
26
|
-
];
|
|
17
|
+
// Convert flat 9-element basis to 3x3 matrix. moyo-wasm uses the same row-major
|
|
18
|
+
// serialization for both input and output (see to_cell_json: column-major(B) ==
|
|
19
|
+
// row-major(RB)), so the flat array is row-major with each row a lattice vector.
|
|
20
|
+
const lattice_matrix = math.vec9_to_mat3x3([...cell.lattice.basis]);
|
|
27
21
|
// Calculate lattice parameters from matrix
|
|
28
22
|
const lattice_params = math.calc_lattice_params(lattice_matrix);
|
|
29
23
|
const frac_to_cart = math.create_frac_to_cart(lattice_matrix);
|
|
@@ -40,8 +34,7 @@ original_structure) {
|
|
|
40
34
|
// Oxidation state is set to 0 (unknown) because moyo-wasm only provides atomic numbers.
|
|
41
35
|
// transformed cell may have different/reordered sites, making it non-trivial to
|
|
42
36
|
// map oxidation states from original structure.
|
|
43
|
-
|
|
44
|
-
return { species, abc: wrapped_abc, xyz, label: element, properties: {} };
|
|
37
|
+
return make_site(element, wrapped_abc, xyz, element);
|
|
45
38
|
});
|
|
46
39
|
const lattice = {
|
|
47
40
|
matrix: lattice_matrix,
|
|
@@ -86,6 +79,6 @@ sym_data) {
|
|
|
86
79
|
if (cell_type === `primitive`) {
|
|
87
80
|
return get_primitive_cell(structure, sym_data);
|
|
88
81
|
}
|
|
89
|
-
//
|
|
82
|
+
// Unknown cell_type at runtime (e.g. from stale persisted settings): leave unchanged
|
|
90
83
|
return structure;
|
|
91
84
|
}
|
package/dist/symmetry/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { Vec3 } from '../math';
|
|
2
2
|
import type { AnyStructure, Crystal } from '../structure';
|
|
3
|
-
import type { MoyoDataset } from '@spglib/moyo-wasm';
|
|
3
|
+
import type { MoyoCell, MoyoDataset } from '@spglib/moyo-wasm';
|
|
4
4
|
export * from './cell-transform';
|
|
5
5
|
export * from './spacegroups';
|
|
6
|
+
export * from './symmetry-elements';
|
|
7
|
+
export * from './wyckoff-db';
|
|
8
|
+
export { default as SymmetryElementControls } from './SymmetryElementControls.svelte';
|
|
9
|
+
export { default as SymmetryElements } from './SymmetryElements.svelte';
|
|
6
10
|
export { default as SymmetryStats } from './SymmetryStats.svelte';
|
|
7
11
|
export { default as WyckoffTable } from './WyckoffTable.svelte';
|
|
8
12
|
export declare const BRAVAIS_LATTICES: {
|
|
@@ -28,16 +32,22 @@ export type WyckoffPos = {
|
|
|
28
32
|
elem: string;
|
|
29
33
|
abc: Vec3;
|
|
30
34
|
site_indices?: number[];
|
|
35
|
+
site_symmetry?: string;
|
|
36
|
+
coordinates?: string;
|
|
31
37
|
};
|
|
32
38
|
export type SymmetryDataset = MoyoDataset & {
|
|
33
|
-
orig_indices?: number[];
|
|
34
39
|
orig_site_indices_by_std_idx?: number[][];
|
|
40
|
+
input_cell?: Pick<MoyoCell, `positions` | `numbers`>;
|
|
41
|
+
orig_site_indices_by_input_idx?: number[][];
|
|
35
42
|
};
|
|
36
43
|
export declare function ensure_moyo_wasm_ready(wasm_url?: string): Promise<void>;
|
|
37
44
|
export declare function to_cell_json(structure: Crystal): string;
|
|
38
|
-
export declare const map_std_to_orig_site_indices: (std_positions: Vec3[], std_numbers: number[], input_positions: Vec3[], input_numbers: number[], orig_site_indices_by_input_idx: number[][]
|
|
45
|
+
export declare const map_std_to_orig_site_indices: (std_positions: Vec3[], std_numbers: number[], input_positions: Vec3[], input_numbers: number[], orig_site_indices_by_input_idx: number[][], transform?: {
|
|
46
|
+
std_linear: readonly number[];
|
|
47
|
+
std_origin_shift: readonly number[];
|
|
48
|
+
}, tol?: number) => number[][];
|
|
39
49
|
export declare function analyze_structure_symmetry(struct_or_mol: AnyStructure, settings: Partial<SymmetrySettings>): Promise<SymmetryDataset>;
|
|
40
50
|
export declare function simplicity_score(vec: number[]): number;
|
|
41
51
|
export declare function wyckoff_positions_from_moyo(sym_data: SymmetryDataset | null): WyckoffPos[];
|
|
42
|
-
export declare function apply_symmetry_operations(position: Vec3, operations: MoyoDataset[`operations`]
|
|
52
|
+
export declare function apply_symmetry_operations(position: Vec3, operations: MoyoDataset[`operations`]): Vec3[];
|
|
43
53
|
export declare function map_wyckoff_to_all_atoms(wyckoff_positions: WyckoffPos[], displayed_structure: Crystal, orig_structure: Crystal, sym_data: MoyoDataset | null, tolerance?: number): WyckoffPos[];
|