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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ColorScaleType, D3InterpolateName } from '../colors';
|
|
2
|
+
import { type CoordinationData } from '../coordination/calc-coordination';
|
|
2
3
|
import type { AtomColorMode } from '../settings';
|
|
3
4
|
import type { AnyStructure, Site } from './';
|
|
4
5
|
import type { BondingStrategy } from './bonding';
|
|
@@ -17,7 +18,7 @@ export interface AtomPropertyColors {
|
|
|
17
18
|
unique_values?: (number | string)[];
|
|
18
19
|
}
|
|
19
20
|
type SymmetryDataWithOrigMap = MoyoDataset & {
|
|
20
|
-
|
|
21
|
+
orig_site_indices_by_input_idx?: number[][];
|
|
21
22
|
};
|
|
22
23
|
export declare const get_d3_color_scales: () => string[];
|
|
23
24
|
export declare function apply_color_scale(vals: number[], scale?: string, type?: ColorScaleType): {
|
|
@@ -29,6 +30,7 @@ export declare const apply_categorical_color_scale: (vals: string[], scale?: str
|
|
|
29
30
|
unique_values: string[];
|
|
30
31
|
};
|
|
31
32
|
export declare const get_orig_site_idx: (site: Site | undefined, site_idx: number) => number;
|
|
33
|
+
export declare function calc_structure_coordination(structure: AnyStructure, strategy?: BondingStrategy): CoordinationData;
|
|
32
34
|
export declare function get_coordination_colors(structure: AnyStructure, strategy?: BondingStrategy, scale?: string, type?: ColorScaleType): AtomPropertyColors;
|
|
33
35
|
export declare function get_wyckoff_colors(structure: AnyStructure, sym_data: SymmetryDataWithOrigMap | null, scale?: string): AtomPropertyColors;
|
|
34
36
|
export declare function get_custom_colors(structure: AnyStructure, fn: (site: Site, idx: number) => number | string, scale?: string, type?: ColorScaleType): AtomPropertyColors;
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
// Utility functions for computing atom properties and applying color scales
|
|
2
|
-
import {
|
|
2
|
+
import { get_d3_interpolator } from '../colors';
|
|
3
|
+
import { calc_coordination_nums, } from '../coordination/calc-coordination';
|
|
3
4
|
import * as math from '../math';
|
|
4
|
-
import {
|
|
5
|
+
import { element_lookup, get_majority_element } from './bonding';
|
|
6
|
+
import { wrap_frac_coord } from './pbc';
|
|
5
7
|
import { rgb } from 'd3-color';
|
|
6
8
|
import * as d3_sc from 'd3-scale-chromatic';
|
|
7
9
|
const GRAY = `#808080`;
|
|
8
10
|
const DEFAULT_COLOR_SCALE = `interpolateViridis`;
|
|
11
|
+
// Cap on periodic image shells per axis when expanding for coordination. Guards
|
|
12
|
+
// against image explosion in very thin / highly oblique cells (coordination is ~O(n²)).
|
|
13
|
+
const MAX_IMAGE_SHELLS = 3;
|
|
14
|
+
// Max bond distance each strategy can form, mirroring the defaults in bonding.ts
|
|
15
|
+
// (electroneg_ratio.max_distance_ratio, solid_angle.max_distance). Used to size PBC
|
|
16
|
+
// image expansion just tightly enough that coordination never misses a bonded neighbor.
|
|
17
|
+
const ELECTRONEG_MAX_RATIO = 2;
|
|
18
|
+
const SOLID_ANGLE_MAX_DIST = 5; // Å
|
|
9
19
|
export const get_d3_color_scales = () => Object.keys(d3_sc).filter((key) => key.startsWith(`interpolate`));
|
|
10
|
-
const
|
|
11
|
-
const interp_fn = d3_sc[scale];
|
|
12
|
-
if (typeof interp_fn !== `function`) {
|
|
13
|
-
console.warn(`Unknown D3 scale: ${scale}, using ${DEFAULT_COLOR_SCALE}`);
|
|
14
|
-
return d3_sc.interpolateViridis;
|
|
15
|
-
}
|
|
16
|
-
return interp_fn;
|
|
17
|
-
};
|
|
18
|
-
const to_hex = (interp_fn, t) => rgb(interp_fn(t)).formatHex();
|
|
20
|
+
const to_hex = (interp_fn, frac) => rgb(interp_fn(frac)).formatHex();
|
|
19
21
|
const build_image_site = (site, frac_to_cart, offset, orig_idx) => {
|
|
20
22
|
const img_abc = [
|
|
21
23
|
site.abc[0] + offset[0],
|
|
@@ -29,14 +31,8 @@ const build_image_site = (site, frac_to_cart, offset, orig_idx) => {
|
|
|
29
31
|
properties: { ...site.properties, orig_site_idx: orig_idx },
|
|
30
32
|
};
|
|
31
33
|
};
|
|
32
|
-
const get_all_offsets = (pbc) => [-1, 0, 1]
|
|
33
|
-
.flatMap((dx) => [-1, 0, 1].flatMap((dy) => [-1, 0, 1].map((dz) => [dx, dy, dz])))
|
|
34
|
-
.filter(([dx, dy, dz]) => !(dx === 0 && dy === 0 && dz === 0) &&
|
|
35
|
-
(pbc[0] || dx === 0) &&
|
|
36
|
-
(pbc[1] || dy === 0) &&
|
|
37
|
-
(pbc[2] || dz === 0));
|
|
38
34
|
const make_categorical = (vals, scale, sort_fn) => {
|
|
39
|
-
const interp_fn =
|
|
35
|
+
const interp_fn = get_d3_interpolator(scale);
|
|
40
36
|
const uniq = sort_fn
|
|
41
37
|
? [...new Set(vals)].sort(sort_fn)
|
|
42
38
|
: [...new Set(vals)].sort((val_a, val_b) => String(val_a).localeCompare(String(val_b)));
|
|
@@ -61,7 +57,7 @@ export function apply_color_scale(vals, scale = DEFAULT_COLOR_SCALE, type = `con
|
|
|
61
57
|
const result = make_categorical(vals, scale, (val_a, val_b) => val_a - val_b);
|
|
62
58
|
return { colors: result.colors, unique_values: result.unique_values };
|
|
63
59
|
}
|
|
64
|
-
const interp_fn =
|
|
60
|
+
const interp_fn = get_d3_interpolator(scale);
|
|
65
61
|
// Compute min/max in single pass to avoid spreading large arrays
|
|
66
62
|
let [min, max] = [vals[0], vals[0]];
|
|
67
63
|
for (const val of vals) {
|
|
@@ -82,46 +78,109 @@ export const get_orig_site_idx = (site, site_idx) => typeof site?.properties?.or
|
|
|
82
78
|
: typeof site?.properties?.orig_site_idx === `number`
|
|
83
79
|
? site.properties.orig_site_idx
|
|
84
80
|
: site_idx;
|
|
85
|
-
// Expand structure with
|
|
86
|
-
|
|
81
|
+
// Expand a periodic structure with the neighbor images needed for correct
|
|
82
|
+
// coordination. Each atom's `reach` (the largest bond `strategy` can form for it —
|
|
83
|
+
// electroneg_ratio's (r + r_max)·ratio or solid_angle's flat cap) sizes how many whole
|
|
84
|
+
// cells to image per periodic axis, measured over the perpendicular cell height (not
|
|
85
|
+
// the lattice vector length, so oblique cells work), keeping only images within `reach`
|
|
86
|
+
// of the [0,1] cell and capping at MAX_IMAGE_SHELLS/axis (warns + may undercount beyond
|
|
87
|
+
// that — near-degenerate cells only). Smaller atoms image less; atoms with no covalent
|
|
88
|
+
// radius form no bonds and get no images.
|
|
89
|
+
function expand_structure_for_pbc(structure, strategy) {
|
|
87
90
|
if (!(`lattice` in structure) || !structure.lattice || structure.sites.length === 0) {
|
|
88
91
|
return structure;
|
|
89
92
|
}
|
|
90
93
|
const { sites, lattice } = structure;
|
|
91
|
-
const frac_to_cart = math.create_frac_to_cart(lattice.matrix);
|
|
92
94
|
const pbc = lattice.pbc ?? [true, true, true];
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
//
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return all_offsets
|
|
104
|
-
.filter(([dx, dy, dz]) => (dx === 0 || (dx === -1 ? norm[0] <= cutoff[0] : norm[0] >= 1 - cutoff[0])) &&
|
|
105
|
-
(dy === 0 || (dy === -1 ? norm[1] <= cutoff[1] : norm[1] >= 1 - cutoff[1])) &&
|
|
106
|
-
(dz === 0 || (dz === -1 ? norm[2] <= cutoff[2] : norm[2] >= 1 - cutoff[2])))
|
|
107
|
-
.map((offset) => build_image_site(site, frac_to_cart, offset, orig_idx));
|
|
95
|
+
if (!pbc.some(Boolean))
|
|
96
|
+
return structure;
|
|
97
|
+
const frac_to_cart = math.create_frac_to_cart(lattice.matrix);
|
|
98
|
+
// Wrap into [0,1) along PERIODIC axes only so the near-cell filter and image
|
|
99
|
+
// building share one position (else boundary atoms image on the wrong side and lose
|
|
100
|
+
// neighbors). Vacuum axes keep their real coord — wrapping would fold apart atoms
|
|
101
|
+
// together and invent bonds.
|
|
102
|
+
const cell_sites = sites.map((site) => {
|
|
103
|
+
const abc = site.abc.map((coord, axis) => pbc[axis] ? wrap_frac_coord(coord) : coord);
|
|
104
|
+
return { ...site, abc, xyz: frac_to_cart(abc) };
|
|
108
105
|
});
|
|
109
|
-
|
|
106
|
+
// Covalent radius per atom (0 = unknown → forms no bonds → needs no images)
|
|
107
|
+
const radii = cell_sites.map((site) => {
|
|
108
|
+
const elem = get_majority_element(site);
|
|
109
|
+
return (elem ? element_lookup.get(elem)?.covalent_radius : undefined) ?? 0;
|
|
110
|
+
});
|
|
111
|
+
let max_radius = 0;
|
|
112
|
+
for (const radius of radii)
|
|
113
|
+
if (radius > max_radius)
|
|
114
|
+
max_radius = radius;
|
|
115
|
+
const reach_of = (radius) => strategy === `solid_angle`
|
|
116
|
+
? SOLID_ANGLE_MAX_DIST
|
|
117
|
+
: (radius + max_radius) * ELECTRONEG_MAX_RATIO;
|
|
118
|
+
const heights = math.cell_heights(lattice.matrix);
|
|
119
|
+
// Axes we image along: periodic and non-degenerate (finite height). Non-live axes
|
|
120
|
+
// (vacuum or degenerate) contribute no images — 0 shells + ∞ cutoff so their only
|
|
121
|
+
// copy (shift 0) always passes the near-cell filter. Loop-invariant, so hoisted out.
|
|
122
|
+
const live_axis = heights.map((height, axis) => pbc[axis] && Number.isFinite(height));
|
|
123
|
+
const image_near_cell = (frac, shift, axis_cutoff) => {
|
|
124
|
+
const shifted = frac + shift;
|
|
125
|
+
return shifted >= -axis_cutoff && shifted <= 1 + axis_cutoff;
|
|
126
|
+
};
|
|
127
|
+
let capped = false;
|
|
128
|
+
const image_sites = [];
|
|
129
|
+
for (const [orig_idx, site] of cell_sites.entries()) {
|
|
130
|
+
const radius = radii[orig_idx];
|
|
131
|
+
if (radius === 0)
|
|
132
|
+
continue; // no covalent radius → no bonds → no images
|
|
133
|
+
const reach = reach_of(radius);
|
|
134
|
+
// `cutoff` = fractional reach for the near-cell filter (keep an image shifted by `s`
|
|
135
|
+
// iff abc+s lands within `cutoff` of [0,1]); `n_shells` bounds the loop so no
|
|
136
|
+
// in-reach copy is missed.
|
|
137
|
+
const cutoff = heights.map((height, axis) => (live_axis[axis] ? reach / height : Infinity));
|
|
138
|
+
const n_shells = heights.map((height, axis) => {
|
|
139
|
+
if (!live_axis[axis])
|
|
140
|
+
return 0;
|
|
141
|
+
const shells = Math.floor(1 + reach / height);
|
|
142
|
+
if (shells > MAX_IMAGE_SHELLS)
|
|
143
|
+
capped = true;
|
|
144
|
+
return Math.min(MAX_IMAGE_SHELLS, shells);
|
|
145
|
+
});
|
|
146
|
+
const [frac_a, frac_b, frac_c] = site.abc; // periodic axes wrapped into [0, 1)
|
|
147
|
+
for (let dx = -n_shells[0]; dx <= n_shells[0]; dx++) {
|
|
148
|
+
if (!image_near_cell(frac_a, dx, cutoff[0]))
|
|
149
|
+
continue;
|
|
150
|
+
for (let dy = -n_shells[1]; dy <= n_shells[1]; dy++) {
|
|
151
|
+
if (!image_near_cell(frac_b, dy, cutoff[1]))
|
|
152
|
+
continue;
|
|
153
|
+
for (let dz = -n_shells[2]; dz <= n_shells[2]; dz++) {
|
|
154
|
+
if (dx === 0 && dy === 0 && dz === 0)
|
|
155
|
+
continue;
|
|
156
|
+
if (!image_near_cell(frac_c, dz, cutoff[2]))
|
|
157
|
+
continue;
|
|
158
|
+
image_sites.push(build_image_site(site, frac_to_cart, [dx, dy, dz], orig_idx));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (capped) {
|
|
164
|
+
console.warn(`[coordination] cell is very thin or oblique relative to bond reach; capping ` +
|
|
165
|
+
`PBC images at ${MAX_IMAGE_SHELLS} shells/axis, coordination near cell ` +
|
|
166
|
+
`boundaries may be undercounted`);
|
|
167
|
+
}
|
|
168
|
+
return { ...structure, sites: [...cell_sites, ...image_sites] };
|
|
110
169
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
170
|
+
// PBC-aware coordination: expand periodic cells with image atoms (so boundary atoms get
|
|
171
|
+
// full coordination), counting only original atoms as centers. Shared by the 3D viewer and
|
|
172
|
+
// CoordinationBarPlot so both report identical numbers.
|
|
173
|
+
export function calc_structure_coordination(structure, strategy = `electroneg_ratio`) {
|
|
114
174
|
const has_lattice = `lattice` in structure && structure.lattice !== undefined;
|
|
115
175
|
const pbc = has_lattice ? structure.lattice.pbc : undefined;
|
|
116
176
|
const has_pbc = has_lattice && (pbc === undefined || pbc.some(Boolean));
|
|
117
|
-
//
|
|
118
|
-
const coord_structure = has_pbc ? expand_structure_for_pbc(structure) : structure;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
.map((site) => site.coordination_num);
|
|
177
|
+
// Image atoms still count as neighbors but aren't iterated as centers (big speedup)
|
|
178
|
+
const coord_structure = has_pbc ? expand_structure_for_pbc(structure, strategy) : structure;
|
|
179
|
+
return calc_coordination_nums(coord_structure, strategy, structure.sites.length);
|
|
180
|
+
}
|
|
181
|
+
export function get_coordination_colors(structure, strategy = `electroneg_ratio`, scale = DEFAULT_COLOR_SCALE, type = `continuous`) {
|
|
182
|
+
// sites is already limited to the original atoms (calc_coordination_nums center_count)
|
|
183
|
+
const coord_nums = calc_structure_coordination(structure, strategy).sites.map((site) => site.coordination_num);
|
|
125
184
|
const { colors, unique_values } = apply_color_scale(coord_nums, scale, type);
|
|
126
185
|
return build_prop_colors(coord_nums, colors, unique_values);
|
|
127
186
|
}
|
|
@@ -134,12 +193,14 @@ export function get_wyckoff_colors(structure, sym_data, scale = DEFAULT_COLOR_SC
|
|
|
134
193
|
unique_values: [`unknown`],
|
|
135
194
|
};
|
|
136
195
|
}
|
|
196
|
+
// moyo's wyckoffs array is indexed by INPUT cell sites (the merged moyo input cell),
|
|
197
|
+
// so map letters to original sites through orig_site_indices_by_input_idx
|
|
137
198
|
const wyckoff_by_orig_idx = new Map();
|
|
138
|
-
const
|
|
139
|
-
if (
|
|
140
|
-
for (let
|
|
141
|
-
const wyckoff = sym_data.wyckoffs[
|
|
142
|
-
for (const orig_idx of
|
|
199
|
+
const mapping_by_input_idx = sym_data.orig_site_indices_by_input_idx;
|
|
200
|
+
if (mapping_by_input_idx) {
|
|
201
|
+
for (let input_idx = 0; input_idx < sym_data.wyckoffs.length; input_idx += 1) {
|
|
202
|
+
const wyckoff = sym_data.wyckoffs[input_idx];
|
|
203
|
+
for (const orig_idx of mapping_by_input_idx[input_idx] ?? []) {
|
|
143
204
|
if (!wyckoff_by_orig_idx.has(orig_idx))
|
|
144
205
|
wyckoff_by_orig_idx.set(orig_idx, wyckoff);
|
|
145
206
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { get_bond_key } from './bonding';
|
|
2
|
-
const primary_element = (site) =>
|
|
3
|
-
return (site.species?.reduce((best_species, species) => (species.occu > best_species.occu ? species : best_species), site.species[0])?.element ?? ``);
|
|
4
|
-
};
|
|
1
|
+
import { get_bond_key, get_majority_element } from './bonding';
|
|
2
|
+
const primary_element = (site) => get_majority_element(site) ?? ``;
|
|
5
3
|
// xyz2mol atomic_valence. Valence combinations are re-sorted by total
|
|
6
4
|
// valence sum so the least-saturated solution is tried first.
|
|
7
5
|
const ATOMIC_VALENCE = {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import type { ElementSymbol } from '../element';
|
|
1
2
|
import type { Vec3 } from '../math';
|
|
2
3
|
import type { AnyStructure, BondOrder, BondPair, Site, StructureBond } from './';
|
|
4
|
+
export declare const element_lookup: Map<"Ac" | "Ag" | "Al" | "Am" | "Ar" | "As" | "At" | "Au" | "B" | "Ba" | "Be" | "Bh" | "Bi" | "Bk" | "Br" | "C" | "Ca" | "Cd" | "Ce" | "Cf" | "Cl" | "Cm" | "Co" | "Cr" | "Cs" | "Cu" | "Db" | "Dy" | "Er" | "Es" | "Eu" | "F" | "Fe" | "Fm" | "Fr" | "Ga" | "Gd" | "Ge" | "H" | "He" | "Hf" | "Hg" | "Ho" | "Hs" | "I" | "In" | "Ir" | "K" | "Kr" | "La" | "Li" | "Lr" | "Lu" | "Md" | "Mg" | "Mn" | "Mo" | "Mt" | "N" | "Na" | "Nb" | "Nd" | "Ne" | "Ni" | "No" | "Np" | "O" | "Os" | "P" | "Pa" | "Pb" | "Pd" | "Pm" | "Po" | "Pr" | "Pt" | "Pu" | "Ra" | "Rb" | "Re" | "Rf" | "Rh" | "Rn" | "Ru" | "S" | "Sb" | "Sc" | "Se" | "Sg" | "Si" | "Sm" | "Sn" | "Sr" | "Ta" | "Tb" | "Tc" | "Te" | "Th" | "Ti" | "Tl" | "Tm" | "U" | "V" | "W" | "Xe" | "Y" | "Yb" | "Zn" | "Zr" | "Ds" | "Rg" | "Cn" | "Nh" | "Fl" | "Mc" | "Lv" | "Ts" | "Og", import("../element").ChemicalElement>;
|
|
5
|
+
export declare const get_majority_element: (site: Site | undefined) => ElementSymbol | null;
|
|
6
|
+
export declare const is_spectator_center: (element: string) => boolean;
|
|
7
|
+
export declare function has_framework_potential(elements: Iterable<string>): boolean;
|
|
3
8
|
export declare const normalize_structure_bond: (site_idx_1: number, site_idx_2: number, order: BondOrder, cell_shift?: Vec3) => StructureBond;
|
|
4
9
|
export declare const get_bond_key: (idx_1: number, idx_2: number, cell_shift?: Vec3) => string;
|
|
5
10
|
export declare function remap_bonds_after_deletion(bonds: readonly StructureBond[], deleted_indices: ReadonlySet<number>): StructureBond[];
|
|
@@ -36,12 +41,14 @@ export declare function apply_explicit_bond_metadata(structure: AnyStructure, bo
|
|
|
36
41
|
export declare function scale_and_offset_bond_matrix(transform_matrix: Float32Array, offset: number, radius_scale: number): Float32Array;
|
|
37
42
|
export declare function get_bond_render_matrices(bond: BondPair, bond_thickness: number): Float32Array[];
|
|
38
43
|
export declare function compute_bond_transform(pos_1: Vec3, pos_2: Vec3): Float32Array;
|
|
44
|
+
export declare const pack_cell_key: (x: number, y: number, z: number) => number;
|
|
39
45
|
export declare const BONDING_STRATEGIES: {
|
|
40
46
|
readonly electroneg_ratio: typeof electroneg_ratio;
|
|
41
47
|
readonly solid_angle: typeof solid_angle;
|
|
42
48
|
};
|
|
43
49
|
export type BondingStrategy = keyof typeof BONDING_STRATEGIES;
|
|
44
50
|
export type BondingAlgo = (typeof BONDING_STRATEGIES)[BondingStrategy];
|
|
51
|
+
export declare function compute_bonds(structure: AnyStructure, strategy: BondingStrategy, options?: Record<string, unknown>): BondPair[];
|
|
45
52
|
export declare function electroneg_ratio(structure: AnyStructure, { electronegativity_threshold, // Max electronegativity difference for bonding
|
|
46
53
|
max_distance_ratio, // Max distance as multiple of sum of covalent radii
|
|
47
54
|
min_bond_dist, // Minimum bond distance in Angstroms
|
|
@@ -49,7 +56,8 @@ metal_metal_penalty, // Strength penalty for metal-metal bonds
|
|
|
49
56
|
metal_nonmetal_bonus, // Strength bonus for metal-nonmetal bonds
|
|
50
57
|
similar_electronegativity_bonus, // Bonus for similar electronegativity
|
|
51
58
|
same_species_penalty, // Penalty for bonds between same element
|
|
52
|
-
strength_threshold,
|
|
59
|
+
strength_threshold, // Minimum bond strength to include in results
|
|
60
|
+
center_count, }?: {
|
|
53
61
|
electronegativity_threshold?: number | undefined;
|
|
54
62
|
max_distance_ratio?: number | undefined;
|
|
55
63
|
min_bond_dist?: number | undefined;
|
|
@@ -58,12 +66,14 @@ strength_threshold, }?: {
|
|
|
58
66
|
similar_electronegativity_bonus?: number | undefined;
|
|
59
67
|
same_species_penalty?: number | undefined;
|
|
60
68
|
strength_threshold?: number | undefined;
|
|
69
|
+
center_count?: number | undefined;
|
|
61
70
|
}): BondPair[];
|
|
62
|
-
export declare function solid_angle(structure: AnyStructure, { min_solid_angle, min_face_area, max_distance, min_bond_dist, strength_threshold, }?: {
|
|
71
|
+
export declare function solid_angle(structure: AnyStructure, { min_solid_angle, min_face_area, max_distance, min_bond_dist, strength_threshold, center_count, }?: {
|
|
63
72
|
min_solid_angle?: number | undefined;
|
|
64
73
|
min_face_area?: number | undefined;
|
|
65
74
|
max_distance?: number | undefined;
|
|
66
75
|
min_bond_dist?: number | undefined;
|
|
67
76
|
strength_threshold?: number | undefined;
|
|
77
|
+
center_count?: number | undefined;
|
|
68
78
|
}): BondPair[];
|
|
69
79
|
export {};
|