matterviz 0.4.0 → 0.4.2
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/EmptyState.svelte +10 -4
- package/dist/FilePicker.svelte +12 -14
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/app.css +53 -0
- package/dist/brillouin/BrillouinZone.svelte +132 -219
- package/dist/brillouin/BrillouinZone.svelte.d.ts +9 -20
- package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
- package/dist/brillouin/BrillouinZoneExportPane.svelte +47 -96
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +15 -42
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
- package/dist/brillouin/BrillouinZoneScene.svelte +63 -230
- 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 +33 -38
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +143 -246
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +652 -976
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
- package/dist/chempot-diagram/async-compute.svelte.js +1 -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.d.ts +0 -4
- package/dist/colors/index.js +21 -22
- package/dist/composition/BarChart.svelte +37 -31
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +7 -11
- package/dist/composition/Formula.svelte +18 -25
- package/dist/composition/FormulaFilter.svelte +96 -98
- package/dist/composition/PieChart.svelte +60 -46
- package/dist/composition/chem-sys.js +3 -2
- package/dist/composition/format.js +4 -3
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +2 -3
- package/dist/composition/parse.js +27 -28
- package/dist/constants.js +11 -9
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +0 -1
- package/dist/convex-hull/ConvexHull.svelte +20 -25
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
- package/dist/convex-hull/ConvexHull2D.svelte +176 -256
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +269 -804
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +236 -755
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +264 -0
- package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
- package/dist/convex-hull/ConvexHullControls.svelte +128 -49
- 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 +210 -351
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +16 -14
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
- package/dist/convex-hull/GasPressureControls.svelte +5 -12
- package/dist/convex-hull/StructurePopup.svelte +17 -21
- package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
- package/dist/convex-hull/TemperatureSlider.svelte +4 -10
- 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 +279 -0
- package/dist/convex-hull/helpers.d.ts +47 -17
- package/dist/convex-hull/helpers.js +186 -101
- 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 +109 -937
- package/dist/convex-hull/types.d.ts +12 -4
- package/dist/convex-hull/types.js +12 -0
- package/dist/coordination/CoordinationBarPlot.svelte +41 -43
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
- package/dist/coordination/calc-coordination.d.ts +1 -1
- package/dist/coordination/calc-coordination.js +28 -25
- package/dist/element/BohrAtom.svelte +6 -8
- package/dist/element/ElementHeading.svelte +4 -1
- package/dist/element/ElementPhoto.svelte +11 -9
- package/dist/element/ElementStats.svelte +12 -10
- package/dist/element/ElementTile.svelte +24 -29
- package/dist/element/ElementTile.svelte.d.ts +1 -1
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +1 -2
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +1 -0
- package/dist/element/index.js +3 -0
- package/dist/feedback/DragOverlay.svelte +5 -3
- package/dist/feedback/DragOverlay.svelte.d.ts +2 -1
- package/dist/feedback/StatusMessage.svelte +20 -7
- package/dist/fermi-surface/FermiSlice.svelte +21 -18
- package/dist/fermi-surface/FermiSurface.svelte +78 -165
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +9 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceScene.svelte +93 -272
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +14 -13
- 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 +84 -97
- package/dist/fermi-surface/types.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +161 -185
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +6 -5
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +12 -9
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
- package/dist/heatmap-matrix/index.d.ts +8 -2
- package/dist/icons.d.ts +4 -0
- package/dist/icons.js +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/io/ExportPane.svelte +170 -0
- package/dist/io/ExportPane.svelte.d.ts +17 -0
- package/dist/io/decompress.d.ts +2 -1
- package/dist/io/decompress.js +22 -36
- package/dist/io/export.d.ts +9 -1
- package/dist/io/export.js +37 -29
- package/dist/io/fetch.d.ts +2 -4
- package/dist/io/fetch.js +0 -11
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +13 -0
- package/dist/io/index.d.ts +1 -0
- package/dist/io/index.js +3 -0
- package/dist/io/is-binary.d.ts +9 -0
- package/dist/io/is-binary.js +45 -1
- package/dist/io/types.d.ts +13 -0
- package/dist/io/url-drop.js +13 -25
- package/dist/isosurface/Isosurface.svelte +17 -23
- package/dist/isosurface/IsosurfaceControls.svelte +37 -42
- package/dist/isosurface/parse-vaspwave.d.ts +3 -0
- package/dist/isosurface/parse-vaspwave.js +138 -0
- package/dist/isosurface/parse.js +50 -48
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +44 -14
- package/dist/layout/FullscreenButton.svelte +34 -0
- package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
- package/dist/layout/FullscreenToggle.svelte +12 -12
- package/dist/layout/InfoCard.svelte +7 -18
- package/dist/layout/InfoTag.svelte +1 -3
- package/dist/layout/NumberRangeInput.svelte +46 -0
- package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
- package/dist/layout/PropertyFilter.svelte +2 -6
- package/dist/layout/SettingsSection.svelte +21 -17
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +115 -0
- package/dist/layout/ViewerChrome.svelte.d.ts +18 -0
- package/dist/layout/fullscreen.d.ts +4 -0
- package/dist/layout/fullscreen.js +3 -5
- package/dist/layout/fullscreen.svelte.d.ts +8 -0
- package/dist/layout/fullscreen.svelte.js +36 -0
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/json-tree/JsonNode.svelte +8 -11
- package/dist/layout/json-tree/JsonTree.svelte +53 -77
- package/dist/layout/json-tree/JsonValue.svelte +7 -15
- package/dist/layout/json-tree/utils.js +14 -23
- package/dist/math.d.ts +9 -3
- package/dist/math.js +37 -21
- package/dist/overlays/ContextMenu.svelte +4 -2
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +81 -26
- package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
- package/dist/overlays/GlassChip.svelte +30 -0
- package/dist/overlays/GlassChip.svelte.d.ts +8 -0
- package/dist/overlays/InfoPaneCards.svelte +11 -23
- package/dist/overlays/index.d.ts +11 -0
- package/dist/overlays/index.js +26 -0
- package/dist/overlays/portal.d.ts +2 -0
- package/dist/overlays/portal.js +14 -0
- package/dist/periodic-table/PeriodicTable.svelte +115 -146
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
- package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
- package/dist/phase-diagram/PhaseDiagramControls.svelte +73 -96
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +49 -134
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
- package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
- package/dist/phase-diagram/build-diagram.js +3 -3
- package/dist/phase-diagram/colors.js +1 -1
- package/dist/phase-diagram/diagram-input.d.ts +1 -2
- package/dist/phase-diagram/parse.d.ts +2 -1
- package/dist/phase-diagram/parse.js +15 -15
- package/dist/phase-diagram/svg-to-diagram.js +21 -15
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +494 -692
- package/dist/plot/bar/BarPlot.svelte.d.ts +9 -15
- package/dist/plot/bar/BarPlotControls.svelte +1 -3
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +5 -7
- package/dist/plot/bar/SpacegroupBarPlot.svelte +31 -37
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +361 -439
- package/dist/plot/box/BoxPlot.svelte.d.ts +6 -3
- package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
- package/dist/plot/box/Violin.svelte.d.ts +2 -1
- package/dist/plot/box/box-plot.d.ts +3 -2
- package/dist/plot/box/box-plot.js +6 -3
- 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 +5 -2
- package/dist/plot/core/axis-utils.d.ts +12 -7
- package/dist/plot/core/axis-utils.js +48 -48
- package/dist/plot/core/components/AxisLabel.svelte +82 -20
- package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
- package/dist/plot/core/components/ColorBar.svelte +106 -111
- package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
- package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
- package/dist/plot/core/components/FillArea.svelte +10 -17
- package/dist/plot/core/components/HierarchyControls.svelte +249 -0
- package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
- package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
- package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/core/components/Line.svelte +21 -11
- package/dist/plot/core/components/Line.svelte.d.ts +5 -2
- package/dist/plot/core/components/PlotAxis.svelte +42 -18
- package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
- package/dist/plot/core/components/PlotControls.svelte +65 -41
- package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/core/components/PlotLegend.svelte +31 -35
- package/dist/plot/core/components/PlotMarginals.svelte +616 -0
- package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
- package/dist/plot/core/components/PlotTooltip.svelte +1 -1
- package/dist/plot/core/components/PortalSelect.svelte +4 -8
- package/dist/plot/core/components/ReferenceLine.svelte +27 -24
- package/dist/plot/core/components/ReferenceLine3D.svelte +56 -59
- package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
- package/dist/plot/core/components/ReferencePlane.svelte +9 -10
- package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
- package/dist/plot/core/components/ZeroLines.svelte +4 -8
- package/dist/plot/core/components/ZoomRect.svelte +1 -2
- package/dist/plot/core/components/index.d.ts +1 -0
- package/dist/plot/core/components/index.js +1 -0
- package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
- package/dist/plot/core/data-cleaning-signal.js +467 -0
- package/dist/plot/core/data-cleaning.d.ts +2 -42
- package/dist/plot/core/data-cleaning.js +29 -476
- package/dist/plot/core/data-transform.js +9 -5
- package/dist/plot/core/fill-utils.d.ts +7 -4
- package/dist/plot/core/fill-utils.js +34 -9
- package/dist/plot/core/index.d.ts +1 -0
- package/dist/plot/core/index.js +1 -0
- package/dist/plot/core/interactions.d.ts +5 -1
- package/dist/plot/core/interactions.js +14 -2
- package/dist/plot/core/layout.d.ts +3 -1
- package/dist/plot/core/layout.js +22 -13
- package/dist/plot/core/marginals.d.ts +170 -0
- package/dist/plot/core/marginals.js +436 -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 +7 -7
- package/dist/plot/core/scales.d.ts +40 -25
- package/dist/plot/core/scales.js +49 -21
- package/dist/plot/core/svg.d.ts +2 -1
- package/dist/plot/core/types/fills.d.ts +101 -0
- package/dist/plot/core/types/fills.js +15 -0
- package/dist/plot/core/types/plot-3d.d.ts +87 -0
- package/dist/plot/core/types/plot-3d.js +4 -0
- package/dist/plot/core/types/reference-lines.d.ts +140 -0
- package/dist/plot/core/types/reference-lines.js +9 -0
- package/dist/plot/core/types.d.ts +47 -331
- package/dist/plot/core/types.js +23 -20
- package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
- package/dist/plot/core/utils/hierarchy-chart.js +179 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +99 -0
- package/dist/plot/core/utils/label-placement.d.ts +1 -1
- package/dist/plot/core/utils/label-placement.js +5 -5
- package/dist/plot/core/utils.d.ts +2 -1
- package/dist/plot/histogram/Histogram.svelte +373 -631
- package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
- package/dist/plot/histogram/HistogramControls.svelte +30 -28
- package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
- package/dist/plot/histogram/histogram.d.ts +31 -0
- package/dist/plot/histogram/histogram.js +70 -0
- package/dist/plot/histogram/index.d.ts +1 -0
- package/dist/plot/histogram/index.js +1 -0
- package/dist/plot/index.d.ts +1 -0
- package/dist/plot/index.js +1 -0
- package/dist/plot/sankey/Sankey.svelte +79 -73
- package/dist/plot/sankey/Sankey.svelte.d.ts +3 -3
- package/dist/plot/sankey/SankeyControls.svelte +22 -16
- package/dist/plot/sankey/sankey.js +3 -1
- package/dist/plot/scatter/BinnedScatterPlot.svelte +264 -112
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +11 -4
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +623 -821
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +9 -15
- package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
- package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/scatter/ScatterPoint.svelte +16 -9
- package/dist/plot/scatter/binned-scatter-types.d.ts +6 -12
- package/dist/plot/scatter/binned-scatter-types.js +6 -1
- package/dist/plot/scatter/index.d.ts +1 -1
- package/dist/plot/scatter/scatter-data.d.ts +1 -1
- package/dist/plot/scatter/scatter-data.js +8 -7
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte +40 -60
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +17 -15
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +232 -234
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
- package/dist/plot/scatter-3d/Surface3D.svelte +9 -17
- package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
- package/dist/plot/sunburst/Sunburst.svelte +256 -338
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
- package/dist/plot/sunburst/index.d.ts +1 -1
- package/dist/plot/sunburst/index.js +2 -1
- package/dist/plot/sunburst/render.d.ts +2 -2
- package/dist/plot/sunburst/render.js +47 -22
- package/dist/plot/sunburst/sunburst.d.ts +5 -1
- package/dist/plot/sunburst/sunburst.js +14 -4
- package/dist/plot/treemap/Treemap.svelte +907 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
- package/dist/plot/treemap/index.d.ts +3 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/treemap.d.ts +26 -0
- package/dist/plot/treemap/treemap.js +99 -0
- package/dist/rdf/RdfPlot.svelte +22 -26
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +4 -8
- package/dist/sanitize.js +14 -3
- 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 +22 -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 +33 -11
- package/dist/settings.js +136 -51
- package/dist/spectral/Bands.svelte +231 -237
- package/dist/spectral/Bands.svelte.d.ts +3 -2
- package/dist/spectral/BandsAndDos.svelte +29 -29
- package/dist/spectral/BrillouinBandsDos.svelte +21 -29
- package/dist/spectral/Dos.svelte +75 -77
- package/dist/spectral/Dos.svelte.d.ts +2 -1
- package/dist/spectral/helpers.d.ts +9 -9
- package/dist/spectral/helpers.js +66 -70
- package/dist/state.svelte.d.ts +0 -7
- package/dist/state.svelte.js +5 -24
- package/dist/structure/Arrow.svelte +6 -21
- package/dist/structure/ArrowInstances.svelte +160 -0
- package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
- package/dist/structure/AtomLegend.svelte +115 -75
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +16 -3
- package/dist/structure/CellSelect.svelte +22 -29
- package/dist/structure/CellSelect.svelte.d.ts +2 -1
- package/dist/structure/Cylinder.svelte +24 -40
- package/dist/structure/InstancedAtoms.svelte +114 -0
- package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
- package/dist/structure/Lattice.svelte +85 -149
- package/dist/structure/SiteLabels.svelte +122 -0
- package/dist/structure/SiteLabels.svelte.d.ts +18 -0
- package/dist/structure/Structure.svelte +725 -735
- package/dist/structure/Structure.svelte.d.ts +8 -16
- package/dist/structure/StructureCarousel.svelte +630 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +298 -325
- package/dist/structure/StructureControls.svelte.d.ts +5 -3
- package/dist/structure/StructureExportPane.svelte +62 -168
- package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
- package/dist/structure/StructureInfoPane.svelte +77 -69
- package/dist/structure/StructureInfoPane.svelte.d.ts +6 -6
- package/dist/structure/StructureScene.svelte +758 -600
- package/dist/structure/StructureScene.svelte.d.ts +24 -20
- package/dist/structure/StructureViewport.svelte +386 -0
- package/dist/structure/StructureViewport.svelte.d.ts +63 -0
- package/dist/structure/atom-label-placement.d.ts +18 -0
- package/dist/structure/atom-label-placement.js +115 -0
- package/dist/structure/atom-properties.d.ts +3 -1
- package/dist/structure/atom-properties.js +115 -54
- package/dist/structure/bond-order-perception.js +2 -4
- package/dist/structure/bonding.d.ts +12 -2
- package/dist/structure/bonding.js +172 -73
- package/dist/structure/edit-history.d.ts +6 -0
- package/dist/structure/edit-history.js +27 -0
- package/dist/structure/export.d.ts +25 -4
- package/dist/structure/export.js +103 -153
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +22 -0
- package/dist/structure/geometry.d.ts +9 -0
- package/dist/structure/geometry.js +27 -0
- package/dist/structure/index.d.ts +18 -1
- package/dist/structure/index.js +15 -2
- package/dist/structure/measure.d.ts +1 -1
- package/dist/structure/measure.js +6 -12
- package/dist/structure/parse.d.ts +5 -3
- package/dist/structure/parse.js +551 -567
- package/dist/structure/partial-occupancy.d.ts +0 -1
- package/dist/structure/partial-occupancy.js +5 -3
- package/dist/structure/pbc.d.ts +1 -1
- package/dist/structure/pbc.js +204 -51
- package/dist/structure/polyhedra.d.ts +40 -0
- package/dist/structure/polyhedra.js +587 -0
- package/dist/structure/site.d.ts +4 -0
- package/dist/structure/site.js +1 -0
- package/dist/structure/supercell.d.ts +1 -2
- package/dist/structure/supercell.js +10 -15
- 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 +350 -0
- package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
- package/dist/symmetry/SymmetryStats.svelte +142 -49
- package/dist/symmetry/WyckoffTable.svelte +58 -16
- package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
- package/dist/symmetry/cell-transform.js +8 -14
- package/dist/symmetry/index.d.ts +15 -4
- package/dist/symmetry/index.js +308 -81
- package/dist/symmetry/spacegroups.d.ts +5 -1
- package/dist/symmetry/spacegroups.js +18 -3
- 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 +1104 -378
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +5 -12
- package/dist/table/index.d.ts +21 -6
- package/dist/table/index.js +34 -21
- package/dist/theme/ThemeControl.svelte +16 -8
- package/dist/theme/index.d.ts +1 -5
- package/dist/theme/index.js +4 -10
- package/dist/theme/themes.mjs +14 -7
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +2 -5
- package/dist/trajectory/Trajectory.svelte +556 -352
- package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
- package/dist/trajectory/TrajectoryError.svelte +11 -8
- package/dist/trajectory/TrajectoryExportPane.svelte +28 -54
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
- package/dist/trajectory/TrajectoryInfoPane.svelte +88 -99
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
- package/dist/trajectory/constants.js +6 -2
- package/dist/trajectory/extract.js +73 -71
- package/dist/trajectory/format-detect.d.ts +0 -1
- package/dist/trajectory/format-detect.js +13 -17
- package/dist/trajectory/frame-reader.d.ts +2 -1
- package/dist/trajectory/frame-reader.js +74 -136
- package/dist/trajectory/helpers.d.ts +12 -2
- package/dist/trajectory/helpers.js +68 -37
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +3 -0
- 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/h5-utils.d.ts +13 -0
- package/dist/trajectory/parse/h5-utils.js +109 -0
- package/dist/trajectory/parse/hdf5.d.ts +1 -1
- package/dist/trajectory/parse/hdf5.js +116 -106
- package/dist/trajectory/parse/index.d.ts +3 -4
- package/dist/trajectory/parse/index.js +68 -119
- package/dist/trajectory/parse/lammps.d.ts +0 -2
- package/dist/trajectory/parse/lammps.js +14 -16
- package/dist/trajectory/parse/pymatgen.d.ts +2 -0
- package/dist/trajectory/parse/pymatgen.js +74 -0
- package/dist/trajectory/parse/vasp.js +13 -9
- package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
- package/dist/trajectory/parse/vaspout-electronic.js +207 -0
- package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
- package/dist/trajectory/parse/vaspout-h5.js +284 -0
- package/dist/trajectory/parse/xyz.d.ts +9 -21
- package/dist/trajectory/parse/xyz.js +38 -39
- package/dist/trajectory/plotting.d.ts +8 -10
- package/dist/trajectory/plotting.js +102 -127
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +8 -1
- package/dist/xrd/XrdPlot.svelte +56 -85
- package/dist/xrd/broadening.d.ts +2 -1
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +8 -15
- package/dist/xrd/index.d.ts +2 -2
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +56 -73
- package/package.json +77 -36
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- 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
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
- package/dist/structure/label-placement.d.ts +0 -14
- package/dist/structure/label-placement.js +0 -72
|
@@ -5,7 +5,15 @@
|
|
|
5
5
|
import type { HTMLAttributes } from 'svelte/elements'
|
|
6
6
|
import { SETTINGS_CONFIG } from '../settings'
|
|
7
7
|
import type { SymmetrySettings } from './index'
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
count_structure_free_params,
|
|
10
|
+
default_sym_settings,
|
|
11
|
+
enrich_wyckoff_rows,
|
|
12
|
+
spacegroup_settings,
|
|
13
|
+
spacegroup_wyckoff_positions,
|
|
14
|
+
wyckoff_positions_from_moyo,
|
|
15
|
+
wyckoff_sequence,
|
|
16
|
+
} from './index'
|
|
9
17
|
import * as spg from './spacegroups'
|
|
10
18
|
|
|
11
19
|
type SymmetrySnippet = Snippet<
|
|
@@ -29,10 +37,34 @@
|
|
|
29
37
|
header?: SymmetrySnippet
|
|
30
38
|
} = $props()
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
// Space-group Wyckoff database + all settings (empty when WASM is not initialized,
|
|
41
|
+
// e.g. SSR or unit tests — the stats below degrade gracefully)
|
|
42
|
+
const wyckoff_db = $derived(
|
|
43
|
+
sym_data ? spacegroup_wyckoff_positions(sym_data.hall_number) : [],
|
|
34
44
|
)
|
|
45
|
+
const settings_entries = $derived(sym_data ? spacegroup_settings(sym_data.number) : [])
|
|
46
|
+
const current_setting = $derived(
|
|
47
|
+
settings_entries.find((entry) => entry.hall_number === sym_data?.hall_number),
|
|
48
|
+
)
|
|
49
|
+
const occupied_rows = $derived(
|
|
50
|
+
sym_data ? enrich_wyckoff_rows(wyckoff_positions_from_moyo(sym_data), wyckoff_db) : [],
|
|
51
|
+
)
|
|
52
|
+
const wyckoff_count = $derived(occupied_rows.length)
|
|
53
|
+
const wyckoff_seq = $derived(wyckoff_sequence(occupied_rows))
|
|
54
|
+
// Internal degrees of freedom (null when ITA coordinates are unavailable)
|
|
55
|
+
const free_params = $derived(count_structure_free_params(occupied_rows))
|
|
35
56
|
const display_hm_symbol = $derived(sym_data?.hm_symbol?.replaceAll(/\s+/g, ``) ?? `?`)
|
|
57
|
+
// Crystal system, plus the lattice system in parens when it differs (e.g. trigonal
|
|
58
|
+
// space groups split into rhombohedral R-centered and hexagonal P lattices)
|
|
59
|
+
const crystal_system_label = $derived.by(() => {
|
|
60
|
+
if (!sym_data) return `?`
|
|
61
|
+
const crystal_sys = spg.spacegroup_to_crystal_sys(sym_data.number)
|
|
62
|
+
const lattice_sys = spg.spacegroup_num_to_lattice_system(sym_data.number)
|
|
63
|
+
if (!crystal_sys) return `?`
|
|
64
|
+
const suffix =
|
|
65
|
+
lattice_sys && lattice_sys !== crystal_sys ? ` (${lattice_sys} lattice)` : ``
|
|
66
|
+
return `${crystal_sys}${suffix}`
|
|
67
|
+
})
|
|
36
68
|
|
|
37
69
|
const sym_ops_counts = $derived.by(() => {
|
|
38
70
|
const EPS = 1e-10
|
|
@@ -56,24 +88,18 @@
|
|
|
56
88
|
})
|
|
57
89
|
|
|
58
90
|
const titles = {
|
|
59
|
-
symprec:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
pearson_symbol:
|
|
72
|
-
`Pearson symbol. Format: Crystal system + Number of atoms per unit cell. Example: tP2 = tetragonal primitive with 2 atoms`,
|
|
73
|
-
symmetry_operations:
|
|
74
|
-
`Total symmetry operations that map the crystal structure onto itself. Includes rotations, translations, and combinations.`,
|
|
75
|
-
distinct_orbits:
|
|
76
|
-
`Number of unique Wyckoff positions (symmetry-equivalent atomic sites) in the crystal structure.`,
|
|
91
|
+
symprec: `Symmetry precision control in spglib/moyo. Lower values (e.g. 1e-4, the default) are more strict, higher values (e.g. 1e-1) are more tolerant of numerical errors in atomic positions.`,
|
|
92
|
+
algo: `Symmetry detection algorithm: Moyo uses moyo's newer recommended settings, Spglib is useful if you need compatible results to an existing set of spglib-detected symmetries.`,
|
|
93
|
+
space_group: `International Tables Space group number (1-230) - unique identifier for each space group. Higher numbers indicate more symmetries in the crystal.`,
|
|
94
|
+
crystal_system: `Crystal system classification based on the unit cell symmetry. Seven systems: triclinic, monoclinic, orthorhombic, tetragonal, trigonal, hexagonal, and cubic. For trigonal space groups, the lattice system (rhombohedral for R-centered groups, hexagonal otherwise) is shown in parentheses when it differs from the crystal system.`,
|
|
95
|
+
hermann_mauguin: `Hermann-Mauguin symbol describes symmetry operations. Format: Lattice type + Point group symmetry. Example: P4/mmm = Primitive + 4-fold rotation + mirror planes`,
|
|
96
|
+
hall_number: `Hall number: alternative numbering system for space groups. Useful for crystallographic software compatibility.`,
|
|
97
|
+
pearson_symbol: `Pearson symbol. Format: Crystal system + Number of atoms per unit cell. Example: tP2 = tetragonal primitive with 2 atoms`,
|
|
98
|
+
symmetry_operations: `Total symmetry operations that map the crystal structure onto itself. Includes rotations, translations, and combinations.`,
|
|
99
|
+
distinct_orbits: `Number of unique Wyckoff positions (symmetry-equivalent atomic sites) in the crystal structure.`,
|
|
100
|
+
wyckoff_sequence: `Wyckoff sequence: letters of all occupied Wyckoff positions in descending alphabetical order, with superscript counts for letters occupied by multiple orbits. A standard structure-type fingerprint (complements the Pearson symbol).`,
|
|
101
|
+
free_params: `Internal degrees of freedom: number of free fractional-coordinate parameters (x, y, z in the ITA representative coordinates) summed over occupied Wyckoff orbits. 0 means all atomic positions are fully fixed by symmetry.`,
|
|
102
|
+
settings: `All settings of this space group in the International Tables (origin choices, unique axes, cell choices, hexagonal vs rhombohedral axes). The setting detected for this structure is highlighted.`,
|
|
77
103
|
translations: `Number of translations in the crystal structure.`,
|
|
78
104
|
rotations: `Number of rotations in the crystal structure.`,
|
|
79
105
|
roto_translations: `Number of roto-translations in the crystal structure.`,
|
|
@@ -89,7 +115,7 @@
|
|
|
89
115
|
const symprec_step = $derived(get_step_from_order_of_magnitude(settings.symprec))
|
|
90
116
|
</script>
|
|
91
117
|
|
|
92
|
-
<div {...rest} class=
|
|
118
|
+
<div {...rest} class={[`symmetry-stats`, rest.class]}>
|
|
93
119
|
{#if sym_data}
|
|
94
120
|
{@render header?.({ sym_data, settings })}
|
|
95
121
|
{/if}
|
|
@@ -129,10 +155,10 @@
|
|
|
129
155
|
<select
|
|
130
156
|
value={settings.algo}
|
|
131
157
|
onchange={(evt) =>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
158
|
+
(settings = {
|
|
159
|
+
...settings,
|
|
160
|
+
algo: evt.currentTarget.value as `Moyo` | `Spglib`,
|
|
161
|
+
})}
|
|
136
162
|
>
|
|
137
163
|
{#each Object.keys(SETTINGS_CONFIG.symmetry.algo.enum ?? {}) as value (value)}
|
|
138
164
|
<option {value}>{value}</option>
|
|
@@ -143,36 +169,85 @@
|
|
|
143
169
|
|
|
144
170
|
{@render children?.({ sym_data, settings })}
|
|
145
171
|
{#if sym_data}
|
|
172
|
+
{@const stat_tiles = [
|
|
173
|
+
{
|
|
174
|
+
label: `Space Group`,
|
|
175
|
+
title: `${tooltips?.space_group} at ${settings.symprec} (using ${settings.algo} algo). ${tooltips?.hermann_mauguin}`,
|
|
176
|
+
value: `${sym_data.number} (${display_hm_symbol})`,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
label: `Crystal System`,
|
|
180
|
+
title: tooltips?.crystal_system,
|
|
181
|
+
value: crystal_system_label,
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
label: `Hall Number`,
|
|
185
|
+
title: tooltips?.hall_number,
|
|
186
|
+
value: `${sym_data.hall_number}${
|
|
187
|
+
current_setting ? ` (${current_setting.hall_symbol})` : ``
|
|
188
|
+
}`,
|
|
189
|
+
},
|
|
190
|
+
{ label: `Pearson`, title: tooltips?.pearson_symbol, value: sym_data.pearson_symbol },
|
|
191
|
+
{ label: `Wyckoff Positions`, title: tooltips?.distinct_orbits, value: wyckoff_count },
|
|
192
|
+
wyckoff_seq && {
|
|
193
|
+
label: `Wyckoff Sequence`,
|
|
194
|
+
title: tooltips?.wyckoff_sequence,
|
|
195
|
+
value: wyckoff_seq,
|
|
196
|
+
},
|
|
197
|
+
free_params !== null && {
|
|
198
|
+
label: `Free Parameters`,
|
|
199
|
+
title: tooltips?.free_params,
|
|
200
|
+
value: free_params,
|
|
201
|
+
},
|
|
202
|
+
].filter((tile) => typeof tile === `object`)}
|
|
146
203
|
<div class="stats-grid">
|
|
147
|
-
|
|
148
|
-
title=
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
</div>
|
|
153
|
-
<div title={tooltips?.crystal_system} {@attach tooltip()}>
|
|
154
|
-
Crystal System <strong>{spg.spacegroup_to_crystal_sys(sym_data.number)}</strong>
|
|
155
|
-
</div>
|
|
156
|
-
<div title={tooltips?.hall_number} {@attach tooltip()}>
|
|
157
|
-
Hall Number <strong>{sym_data.hall_number}</strong>
|
|
158
|
-
</div>
|
|
159
|
-
<div title={tooltips?.pearson_symbol} {@attach tooltip()}>
|
|
160
|
-
Pearson <strong>{sym_data.pearson_symbol}</strong>
|
|
161
|
-
</div>
|
|
162
|
-
<div title={tooltips?.distinct_orbits} {@attach tooltip()}>
|
|
163
|
-
Wyckoff Positions <strong>{wyckoff_count}</strong>
|
|
164
|
-
</div>
|
|
204
|
+
{#each stat_tiles as tile (tile.label)}
|
|
205
|
+
<div title={tile.title} {@attach tooltip()}>
|
|
206
|
+
{tile.label} <strong>{tile.value}</strong>
|
|
207
|
+
</div>
|
|
208
|
+
{/each}
|
|
165
209
|
<div
|
|
166
210
|
class="sym-ops-summary"
|
|
167
211
|
title="{sym_ops_counts.translations} translations + {sym_ops_counts.rotations} rotations + {sym_ops_counts.roto_translations} roto-translations"
|
|
168
212
|
{@attach tooltip()}
|
|
169
213
|
>
|
|
170
214
|
Total sym ops: <strong>{sym_data.operations.length}</strong>
|
|
171
|
-
({sym_ops_counts.translations}T + {sym_ops_counts.rotations}R + {
|
|
172
|
-
sym_ops_counts.roto_translations
|
|
173
|
-
}RT)
|
|
215
|
+
({sym_ops_counts.translations}T + {sym_ops_counts.rotations}R + {sym_ops_counts.roto_translations}RT)
|
|
174
216
|
</div>
|
|
175
217
|
</div>
|
|
218
|
+
{#if settings_entries.length > 1}
|
|
219
|
+
<details class="settings-explorer">
|
|
220
|
+
<summary title={tooltips?.settings} {@attach tooltip()}>
|
|
221
|
+
{settings_entries.length} settings of space group {sym_data.number}
|
|
222
|
+
</summary>
|
|
223
|
+
<table>
|
|
224
|
+
<thead>
|
|
225
|
+
<tr>
|
|
226
|
+
<th>Hall #</th>
|
|
227
|
+
<th>H-M full</th>
|
|
228
|
+
<th>Hall symbol</th>
|
|
229
|
+
<th>Setting</th>
|
|
230
|
+
<th>Centering</th>
|
|
231
|
+
</tr>
|
|
232
|
+
</thead>
|
|
233
|
+
<tbody>
|
|
234
|
+
{#each settings_entries as entry (entry.hall_number)}
|
|
235
|
+
{@const is_current = entry.hall_number === sym_data.hall_number}
|
|
236
|
+
<tr
|
|
237
|
+
class:current={is_current}
|
|
238
|
+
title={is_current ? `Setting detected for this structure` : null}
|
|
239
|
+
>
|
|
240
|
+
<td>{entry.hall_number}</td>
|
|
241
|
+
<td>{entry.hm_full}</td>
|
|
242
|
+
<td>{entry.hall_symbol}</td>
|
|
243
|
+
<td>{entry.setting || `—`}</td>
|
|
244
|
+
<td>{entry.centering}</td>
|
|
245
|
+
</tr>
|
|
246
|
+
{/each}
|
|
247
|
+
</tbody>
|
|
248
|
+
</table>
|
|
249
|
+
</details>
|
|
250
|
+
{/if}
|
|
176
251
|
{:else}
|
|
177
252
|
<div class="no-data">
|
|
178
253
|
<p>No symmetry data available</p>
|
|
@@ -201,8 +276,7 @@
|
|
|
201
276
|
}
|
|
202
277
|
.stats-grid {
|
|
203
278
|
display: var(--sym-stats-display, grid);
|
|
204
|
-
grid-template-columns:
|
|
205
|
-
var(--sym-stats-grid-columns, repeat(auto-fit, minmax(275px, 1fr)));
|
|
279
|
+
grid-template-columns: var(--sym-stats-grid-columns, repeat(auto-fit, minmax(275px, 1fr)));
|
|
206
280
|
gap: var(--sym-stats-grid-gap, 1ex 1em);
|
|
207
281
|
margin-block: var(--sym-stats-grid-margin-block, 1ex);
|
|
208
282
|
align-items: var(--sym-stats-grid-align, start);
|
|
@@ -210,6 +284,25 @@
|
|
|
210
284
|
.stats-grid strong {
|
|
211
285
|
margin: var(--sym-stats-strong-margin, 0 0 0 3pt);
|
|
212
286
|
}
|
|
287
|
+
.settings-explorer {
|
|
288
|
+
margin-block: var(--sym-stats-grid-margin-block, 1ex);
|
|
289
|
+
}
|
|
290
|
+
.settings-explorer summary {
|
|
291
|
+
cursor: pointer;
|
|
292
|
+
color: var(--text-muted, #666);
|
|
293
|
+
}
|
|
294
|
+
.settings-explorer table {
|
|
295
|
+
margin-top: 1ex;
|
|
296
|
+
border-collapse: collapse;
|
|
297
|
+
}
|
|
298
|
+
.settings-explorer :is(th, td) {
|
|
299
|
+
padding: 1px 8px;
|
|
300
|
+
text-align: left;
|
|
301
|
+
}
|
|
302
|
+
.settings-explorer tr.current {
|
|
303
|
+
background: color-mix(in srgb, var(--accent-color, #0066cc) 18%, transparent);
|
|
304
|
+
font-weight: bold;
|
|
305
|
+
}
|
|
213
306
|
.no-data {
|
|
214
307
|
display: flex;
|
|
215
308
|
align-items: center;
|
|
@@ -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(
|
|
43
|
+
(pos_1, pos_2) =>
|
|
44
|
+
pos_1.multiplicity - pos_2.multiplicity || 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,28 +64,17 @@
|
|
|
33
64
|
})
|
|
34
65
|
</script>
|
|
35
66
|
|
|
36
|
-
{#if
|
|
37
|
-
<table {...rest} class=
|
|
67
|
+
{#if rows.length > 0 || unoccupied_rows.length > 0}
|
|
68
|
+
<table {...rest} class={[`wyckoff-table`, rest.class]}>
|
|
38
69
|
<thead>
|
|
39
70
|
<tr>
|
|
40
|
-
{#each [
|
|
41
|
-
[`Wyckoff`, `Wyckoff position: Multiplicity + Letter`],
|
|
42
|
-
[`Element`, `Chemical element symbol`],
|
|
43
|
-
[`Fractional Coords`, `Fractional coordinates within the unit cell`],
|
|
44
|
-
] as
|
|
45
|
-
[col, title]
|
|
46
|
-
(col)
|
|
47
|
-
}
|
|
71
|
+
{#each [[`Wyckoff`, `Wyckoff position: Multiplicity + Letter`], [`Element`, `Chemical element symbol`], [`Fractional Coords`, `Fractional coordinates within the unit cell`], ...(has_ita_coords ? [[`ITA Coords`, `Representative coordinates from the International Tables: x/y/z mark free parameters, fractions mark symmetry-fixed coordinates`]] : []), ...(has_site_symmetry ? [[`Site Symm.`, `Site symmetry: point group of operations leaving the site invariant`]] : [])] as [col, title] (col)}
|
|
48
72
|
<th {title}>{col}</th>
|
|
49
73
|
{/each}
|
|
50
74
|
</tr>
|
|
51
75
|
</thead>
|
|
52
76
|
<tbody>
|
|
53
|
-
{#each
|
|
54
|
-
wyckoff_pos,
|
|
55
|
-
row_idx
|
|
56
|
-
(get_row_key(wyckoff_pos, row_idx))
|
|
57
|
-
}
|
|
77
|
+
{#each rows as wyckoff_pos, row_idx (get_row_key(wyckoff_pos, row_idx))}
|
|
58
78
|
{@const { wyckoff, elem, abc, site_indices } = wyckoff_pos}
|
|
59
79
|
{@const row_key = get_row_key(wyckoff_pos, row_idx)}
|
|
60
80
|
{@const is_selected = selected_key === row_key}
|
|
@@ -89,6 +109,25 @@
|
|
|
89
109
|
</span>
|
|
90
110
|
</td>
|
|
91
111
|
<td>({abc?.map(format_fractional).join(` , `) ?? `N/A`})</td>
|
|
112
|
+
{#if has_ita_coords}
|
|
113
|
+
<td>{wyckoff_pos.coordinates ? `(${wyckoff_pos.coordinates})` : ``}</td>
|
|
114
|
+
{/if}
|
|
115
|
+
{#if has_site_symmetry}
|
|
116
|
+
<td>{wyckoff_pos.site_symmetry ?? ``}</td>
|
|
117
|
+
{/if}
|
|
118
|
+
</tr>
|
|
119
|
+
{/each}
|
|
120
|
+
{#each unoccupied_rows as db_pos (db_pos.letter)}
|
|
121
|
+
<tr class="unoccupied" title="Wyckoff position not occupied in this structure">
|
|
122
|
+
<td>{db_pos.multiplicity}{db_pos.letter}</td>
|
|
123
|
+
<td>—</td>
|
|
124
|
+
<td>—</td>
|
|
125
|
+
{#if has_ita_coords}
|
|
126
|
+
<td>({db_pos.coordinates})</td>
|
|
127
|
+
{/if}
|
|
128
|
+
{#if has_site_symmetry}
|
|
129
|
+
<td>{db_pos.site_symmetry}</td>
|
|
130
|
+
{/if}
|
|
92
131
|
</tr>
|
|
93
132
|
{/each}
|
|
94
133
|
</tbody>
|
|
@@ -117,4 +156,7 @@
|
|
|
117
156
|
.wyckoff-row.selected:hover {
|
|
118
157
|
background-color: color-mix(in srgb, var(--active-color) 35%, transparent);
|
|
119
158
|
}
|
|
159
|
+
.unoccupied {
|
|
160
|
+
opacity: 0.5;
|
|
161
|
+
}
|
|
120
162
|
</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,8 @@
|
|
|
1
|
+
// Cell transformation utilities for converting between original, conventional, and primitive cells
|
|
1
2
|
import { ATOMIC_NUMBER_TO_SYMBOL } from '../composition/parse';
|
|
2
3
|
import * as math from '../math';
|
|
3
4
|
import { wrap_to_unit_cell } from '../structure/pbc';
|
|
5
|
+
import { make_site } from '../structure/site';
|
|
4
6
|
const transferable_properties = (properties) => {
|
|
5
7
|
if (properties === undefined)
|
|
6
8
|
return undefined;
|
|
@@ -13,17 +15,10 @@ const transferable_properties = (properties) => {
|
|
|
13
15
|
// the full Crystal with lattice parameters and element symbols.
|
|
14
16
|
export function moyo_cell_to_structure(cell, // The MoyoCell from symmetry analysis (std_cell or prim_std_cell)
|
|
15
17
|
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
|
-
];
|
|
18
|
+
// Convert flat 9-element basis to 3x3 matrix. moyo-wasm uses the same row-major
|
|
19
|
+
// serialization for both input and output (see to_cell_json: column-major(B) ==
|
|
20
|
+
// row-major(RB)), so the flat array is row-major with each row a lattice vector.
|
|
21
|
+
const lattice_matrix = math.vec9_to_mat3x3([...cell.lattice.basis]);
|
|
27
22
|
// Calculate lattice parameters from matrix
|
|
28
23
|
const lattice_params = math.calc_lattice_params(lattice_matrix);
|
|
29
24
|
const frac_to_cart = math.create_frac_to_cart(lattice_matrix);
|
|
@@ -40,8 +35,7 @@ original_structure) {
|
|
|
40
35
|
// Oxidation state is set to 0 (unknown) because moyo-wasm only provides atomic numbers.
|
|
41
36
|
// transformed cell may have different/reordered sites, making it non-trivial to
|
|
42
37
|
// map oxidation states from original structure.
|
|
43
|
-
|
|
44
|
-
return { species, abc: wrapped_abc, xyz, label: element, properties: {} };
|
|
38
|
+
return make_site(element, wrapped_abc, xyz, element);
|
|
45
39
|
});
|
|
46
40
|
const lattice = {
|
|
47
41
|
matrix: lattice_matrix,
|
|
@@ -86,6 +80,6 @@ sym_data) {
|
|
|
86
80
|
if (cell_type === `primitive`) {
|
|
87
81
|
return get_primitive_cell(structure, sym_data);
|
|
88
82
|
}
|
|
89
|
-
//
|
|
83
|
+
// Unknown cell_type at runtime (e.g. from stale persisted settings): leave unchanged
|
|
90
84
|
return structure;
|
|
91
85
|
}
|
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,23 @@ 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;
|
|
51
|
+
export declare const wyckoff_multiplicity: (label: string) => number;
|
|
41
52
|
export declare function wyckoff_positions_from_moyo(sym_data: SymmetryDataset | null): WyckoffPos[];
|
|
42
|
-
export declare function apply_symmetry_operations(position: Vec3, operations: MoyoDataset[`operations`]
|
|
53
|
+
export declare function apply_symmetry_operations(position: Vec3, operations: MoyoDataset[`operations`]): Vec3[];
|
|
43
54
|
export declare function map_wyckoff_to_all_atoms(wyckoff_positions: WyckoffPos[], displayed_structure: Crystal, orig_structure: Crystal, sym_data: MoyoDataset | null, tolerance?: number): WyckoffPos[];
|