matterviz 0.4.1 → 0.4.3
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 +48 -60
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/api/optimade.js +10 -7
- package/dist/app.css +68 -0
- package/dist/brillouin/BrillouinZone.svelte +90 -91
- package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
- package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
- package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
- package/dist/brillouin/BrillouinZoneScene.svelte +46 -68
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/brillouin/compute.js +10 -16
- package/dist/brillouin/geometry.js +2 -2
- package/dist/chempot-diagram/ChemPotDiagram.svelte +48 -50
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +61 -169
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +559 -755
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/async-compute.svelte.js +13 -14
- package/dist/chempot-diagram/color.d.ts +21 -1
- package/dist/chempot-diagram/color.js +70 -1
- package/dist/chempot-diagram/compute.d.ts +7 -0
- package/dist/chempot-diagram/compute.js +85 -26
- package/dist/chempot-diagram/controls-state.svelte.js +1 -1
- package/dist/chempot-diagram/export.js +1 -6
- package/dist/chempot-diagram/temperature.js +9 -10
- package/dist/colors/index.d.ts +0 -4
- package/dist/colors/index.js +19 -20
- package/dist/composition/BarChart.svelte +30 -26
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +10 -19
- package/dist/composition/Formula.svelte +20 -27
- package/dist/composition/FormulaFilter.svelte +115 -184
- package/dist/composition/PieChart.svelte +55 -41
- package/dist/composition/format.js +7 -9
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +2 -2
- package/dist/composition/parse.js +61 -115
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +17 -26
- package/dist/convex-hull/ConvexHull.svelte +12 -15
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull2D.svelte +93 -94
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +127 -186
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +131 -180
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
- package/dist/convex-hull/ConvexHullControls.svelte +46 -48
- package/dist/convex-hull/ConvexHullStats.svelte +193 -195
- package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
- package/dist/convex-hull/GasPressureControls.svelte +5 -12
- package/dist/convex-hull/StructurePopup.svelte +18 -22
- package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
- package/dist/convex-hull/TemperatureSlider.svelte +4 -10
- package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
- package/dist/convex-hull/gas-thermodynamics.js +21 -53
- package/dist/convex-hull/helpers.d.ts +8 -10
- package/dist/convex-hull/helpers.js +37 -43
- package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
- package/dist/convex-hull/thermodynamics.js +37 -44
- package/dist/coordination/CoordinationBarPlot.svelte +49 -53
- 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 +5 -9
- 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 +44 -67
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +3 -2
- package/dist/element/data.js +5 -1
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +2 -5
- package/dist/element/index.js +4 -19
- package/dist/feedback/DragOverlay.svelte +5 -5
- package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
- package/dist/feedback/StatusMessage.svelte +7 -4
- package/dist/fermi-surface/FermiSlice.svelte +21 -18
- package/dist/fermi-surface/FermiSurface.svelte +35 -44
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +7 -13
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +64 -136
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +25 -58
- package/dist/fermi-surface/parse.js +54 -88
- package/dist/file-viewer/JsonBrowser.svelte +1043 -0
- package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
- package/dist/file-viewer/PlotPanel.svelte +350 -0
- package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
- package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
- package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
- package/dist/file-viewer/detect.d.ts +11 -0
- package/dist/file-viewer/detect.js +381 -0
- package/dist/file-viewer/eligibility.d.ts +4 -0
- package/dist/file-viewer/eligibility.js +53 -0
- package/dist/file-viewer/host-protocol.d.ts +50 -0
- package/dist/file-viewer/host-transfer.d.ts +25 -0
- package/dist/file-viewer/host-transfer.js +42 -0
- package/dist/file-viewer/index.d.ts +5 -0
- package/dist/file-viewer/index.js +5 -0
- package/dist/file-viewer/main.d.ts +44 -0
- package/dist/file-viewer/main.js +535 -0
- package/dist/file-viewer/parse.d.ts +9 -0
- package/dist/file-viewer/parse.js +170 -0
- package/dist/file-viewer/plot-utils.d.ts +24 -0
- package/dist/file-viewer/plot-utils.js +191 -0
- package/dist/file-viewer/types.d.ts +4 -0
- package/dist/file-viewer/types.js +5 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +153 -219
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
- package/dist/heatmap-matrix/index.d.ts +5 -0
- package/dist/icons.d.ts +4 -0
- package/dist/icons.js +4 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/io/ExportPane.svelte +11 -7
- package/dist/io/decompress.d.ts +4 -1
- package/dist/io/decompress.js +24 -36
- package/dist/io/export.d.ts +11 -4
- package/dist/io/export.js +75 -19
- package/dist/io/fetch.d.ts +0 -3
- package/dist/io/fetch.js +0 -11
- package/dist/io/file-drop.js +60 -35
- package/dist/io/index.d.ts +0 -1
- package/dist/io/index.js +2 -9
- package/dist/io/is-binary.d.ts +9 -0
- package/dist/io/is-binary.js +45 -1
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +40 -40
- package/dist/isosurface/Isosurface.svelte +700 -215
- package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
- package/dist/isosurface/IsosurfaceControls.svelte +590 -116
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
- package/dist/isosurface/VolumeSlice.svelte +224 -0
- package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
- package/dist/isosurface/coloring.d.ts +20 -0
- package/dist/isosurface/coloring.js +118 -0
- package/dist/isosurface/geometry-worker-types.d.ts +38 -0
- package/dist/isosurface/geometry.worker.d.ts +1 -0
- package/dist/isosurface/geometry.worker.js +59 -0
- package/dist/isosurface/grid.d.ts +10 -0
- package/dist/isosurface/grid.js +31 -0
- package/dist/isosurface/index.d.ts +4 -0
- package/dist/isosurface/index.js +4 -0
- package/dist/isosurface/parse-vaspwave.d.ts +3 -0
- package/dist/isosurface/parse-vaspwave.js +138 -0
- package/dist/isosurface/parse.js +6 -6
- package/dist/isosurface/profile.d.ts +12 -0
- package/dist/isosurface/profile.js +19 -0
- package/dist/isosurface/sampling.d.ts +34 -0
- package/dist/isosurface/sampling.js +408 -0
- package/dist/isosurface/slice-rendering.d.ts +13 -0
- package/dist/isosurface/slice-rendering.js +79 -0
- package/dist/isosurface/slice.d.ts +22 -2
- package/dist/isosurface/slice.js +200 -116
- package/dist/isosurface/types.d.ts +24 -1
- package/dist/isosurface/types.js +120 -8
- package/dist/json-path.d.ts +4 -0
- package/dist/json-path.js +89 -0
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +44 -14
- package/dist/layout/FullscreenButton.svelte +2 -1
- package/dist/layout/FullscreenToggle.svelte +10 -4
- package/dist/layout/InfoCard.svelte +8 -21
- 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 +57 -62
- package/dist/layout/SettingsSection.svelte.d.ts +6 -7
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +16 -11
- package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
- package/dist/layout/fullscreen.js +3 -5
- package/dist/layout/fullscreen.svelte.js +1 -2
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.js +1 -0
- package/dist/layout/json-tree/JsonNode.svelte +22 -59
- package/dist/layout/json-tree/JsonTree.svelte +101 -172
- package/dist/layout/json-tree/JsonValue.svelte +9 -32
- package/dist/layout/json-tree/utils.d.ts +0 -3
- package/dist/layout/json-tree/utils.js +50 -188
- package/dist/marching-cubes.d.ts +8 -1
- package/dist/marching-cubes.js +115 -48
- package/dist/math.d.ts +5 -2
- package/dist/math.js +48 -38
- package/dist/overlays/ContextMenu.svelte +19 -34
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +110 -74
- package/dist/overlays/DraggablePane.svelte.d.ts +2 -1
- package/dist/overlays/GlassChip.svelte +32 -0
- package/dist/overlays/GlassChip.svelte.d.ts +8 -0
- package/dist/overlays/InfoPaneCards.svelte +11 -23
- package/dist/overlays/index.d.ts +7 -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 +113 -145
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
- package/dist/periodic-table/PeriodicTableControls.svelte +37 -115
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +68 -105
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
- package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
- package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
- package/dist/phase-diagram/build-diagram.js +4 -9
- package/dist/phase-diagram/diagram-input.d.ts +1 -2
- package/dist/phase-diagram/parse.js +15 -15
- package/dist/phase-diagram/svg-to-diagram.js +28 -27
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +461 -426
- package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
- package/dist/plot/bar/BarPlotControls.svelte +1 -3
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
- package/dist/plot/bar/SpacegroupBarPlot.svelte +46 -77
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +322 -226
- package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
- package/dist/plot/box/Violin.svelte.d.ts +1 -0
- package/dist/plot/box/box-plot.js +1 -1
- package/dist/plot/core/auto-place.d.ts +1 -1
- package/dist/plot/core/auto-place.js +2 -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 +101 -106
- 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 +18 -9
- package/dist/plot/core/components/Line.svelte.d.ts +2 -0
- package/dist/plot/core/components/PlotAxis.svelte +40 -17
- package/dist/plot/core/components/PlotControls.svelte +65 -41
- 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 +54 -57
- package/dist/plot/core/components/ReferencePlane.svelte +7 -8
- 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 +27 -474
- package/dist/plot/core/data-transform.d.ts +1 -2
- package/dist/plot/core/data-transform.js +9 -15
- package/dist/plot/core/fill-utils.d.ts +3 -1
- package/dist/plot/core/fill-utils.js +28 -6
- package/dist/plot/core/index.d.ts +1 -0
- package/dist/plot/core/index.js +1 -0
- package/dist/plot/core/interactions.js +0 -2
- package/dist/plot/core/layout.d.ts +15 -6
- package/dist/plot/core/layout.js +57 -38
- 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 +2 -4
- package/dist/plot/core/pan-zoom.svelte.js +34 -17
- package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
- package/dist/plot/core/placed-tween.svelte.js +68 -21
- package/dist/plot/core/reference-line.js +1 -1
- package/dist/plot/core/scales.d.ts +23 -0
- package/dist/plot/core/scales.js +39 -13
- package/dist/plot/core/svg.js +0 -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 +29 -324
- package/dist/plot/core/types.js +23 -20
- package/dist/plot/core/utils/hierarchy-chart.d.ts +52 -0
- package/dist/plot/core/utils/hierarchy-chart.js +191 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +100 -0
- package/dist/plot/core/utils/label-placement.js +2 -2
- package/dist/plot/histogram/Histogram.svelte +314 -340
- package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
- package/dist/plot/histogram/HistogramControls.svelte +30 -28
- 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 +78 -69
- package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
- package/dist/plot/sankey/SankeyControls.svelte +22 -16
- package/dist/plot/sankey/sankey.js +13 -9
- package/dist/plot/scatter/BinnedScatterPlot.svelte +311 -141
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +517 -410
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
- 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/adaptive-density.d.ts +1 -1
- package/dist/plot/scatter/adaptive-density.js +36 -20
- package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
- package/dist/plot/scatter/binned-scatter-types.js +6 -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 +25 -34
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
- package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
- package/dist/plot/sunburst/Sunburst.svelte +269 -347
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
- 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 +10 -3
- package/dist/plot/treemap/Treemap.svelte +1022 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +90 -0
- package/dist/plot/treemap/index.d.ts +4 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/labels.d.ts +38 -0
- package/dist/plot/treemap/labels.js +80 -0
- package/dist/plot/treemap/treemap.d.ts +28 -0
- package/dist/plot/treemap/treemap.js +102 -0
- package/dist/rdf/RdfPlot.svelte +37 -59
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +63 -52
- package/dist/rdf/index.d.ts +0 -1
- package/dist/sanitize.js +85 -27
- package/dist/scene/SceneCamera.svelte +1 -1
- package/dist/scene/SceneCamera.svelte.d.ts +1 -1
- package/dist/scene/bind-renderer.svelte.js +14 -6
- package/dist/scene/index.d.ts +1 -2
- package/dist/scene/index.js +1 -1
- package/dist/scene/{props.js → props.svelte.js} +15 -1
- package/dist/settings.d.ts +19 -9
- package/dist/settings.js +229 -525
- package/dist/spectral/Bands.svelte +207 -221
- package/dist/spectral/BandsAndDos.svelte +11 -9
- package/dist/spectral/BrillouinBandsDos.svelte +19 -42
- package/dist/spectral/Dos.svelte +92 -93
- package/dist/spectral/helpers.d.ts +3 -3
- package/dist/spectral/helpers.js +65 -140
- package/dist/state.svelte.js +5 -18
- package/dist/structure/Arrow.svelte +5 -18
- package/dist/structure/ArrowInstances.svelte +160 -0
- package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
- package/dist/structure/AtomLegend.svelte +120 -85
- package/dist/structure/AtomLegend.svelte.d.ts +2 -3
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +15 -3
- package/dist/structure/CellSelect.svelte +45 -35
- 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 +636 -504
- package/dist/structure/Structure.svelte.d.ts +4 -2
- package/dist/structure/StructureCarousel.svelte +637 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +165 -425
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +17 -21
- package/dist/structure/StructureInfoPane.svelte +128 -133
- package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
- package/dist/structure/StructureScene.svelte +535 -578
- package/dist/structure/StructureScene.svelte.d.ts +6 -2
- package/dist/structure/StructureViewport.svelte +451 -0
- package/dist/structure/StructureViewport.svelte.d.ts +65 -0
- package/dist/structure/atom-label-placement.d.ts +16 -12
- package/dist/structure/atom-label-placement.js +70 -37
- package/dist/structure/atom-properties.d.ts +2 -0
- package/dist/structure/atom-properties.js +105 -38
- package/dist/structure/bond-order-perception.js +3 -8
- package/dist/structure/bonding.d.ts +9 -3
- package/dist/structure/bonding.js +95 -46
- package/dist/structure/edit-history.d.ts +6 -0
- package/dist/structure/edit-history.js +27 -0
- package/dist/structure/export.d.ts +1 -0
- package/dist/structure/export.js +89 -105
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +20 -0
- package/dist/structure/geometry.d.ts +9 -0
- package/dist/structure/geometry.js +27 -0
- package/dist/structure/index.d.ts +16 -1
- package/dist/structure/index.js +15 -10
- package/dist/structure/measure.d.ts +1 -1
- package/dist/structure/measure.js +6 -12
- package/dist/structure/parse.d.ts +2 -1
- package/dist/structure/parse.js +272 -313
- package/dist/structure/partial-occupancy.js +10 -5
- package/dist/structure/pbc.js +85 -107
- package/dist/structure/polyhedra.d.ts +0 -1
- package/dist/structure/polyhedra.js +7 -21
- package/dist/structure/prop-groups.d.ts +85 -0
- package/dist/structure/prop-groups.js +18 -0
- package/dist/structure/supercell.d.ts +1 -2
- package/dist/structure/supercell.js +7 -13
- package/dist/symmetry/SymmetryElements.svelte +11 -15
- package/dist/symmetry/SymmetryStats.svelte +55 -71
- package/dist/symmetry/WyckoffTable.svelte +10 -28
- package/dist/symmetry/cell-transform.js +6 -14
- package/dist/symmetry/index.d.ts +1 -0
- package/dist/symmetry/index.js +13 -10
- package/dist/symmetry/spacegroups.js +3 -2
- package/dist/table/HeatmapTable.svelte +1142 -447
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +168 -53
- package/dist/table/ToggleMenu.svelte.d.ts +1 -1
- 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/embedded.d.ts +18 -0
- package/dist/theme/embedded.js +206 -0
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.js +5 -12
- package/dist/theme/themes.mjs +44 -66
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +3 -6
- package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
- package/dist/tooltip/index.d.ts +8 -1
- package/dist/trajectory/Trajectory.svelte +613 -386
- package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryError.svelte +12 -74
- package/dist/trajectory/TrajectoryExportPane.svelte +14 -32
- package/dist/trajectory/TrajectoryInfoPane.svelte +127 -164
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
- package/dist/trajectory/extract.js +61 -49
- package/dist/trajectory/format-detect.d.ts +2 -0
- package/dist/trajectory/format-detect.js +17 -13
- package/dist/trajectory/frame-reader.d.ts +2 -0
- package/dist/trajectory/frame-reader.js +35 -32
- package/dist/trajectory/helpers.d.ts +2 -0
- package/dist/trajectory/helpers.js +34 -56
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +5 -8
- package/dist/trajectory/parse/ase.js +1 -1
- 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 +6 -6
- package/dist/trajectory/parse/index.js +25 -33
- package/dist/trajectory/parse/lammps.js +8 -12
- package/dist/trajectory/parse/vasp.js +10 -7
- 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 +4 -0
- package/dist/trajectory/parse/vaspout-h5.js +281 -0
- package/dist/trajectory/parse/xyz.js +59 -9
- package/dist/trajectory/plotting.d.ts +8 -9
- package/dist/trajectory/plotting.js +113 -64
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +7 -0
- package/dist/xrd/XrdPlot.svelte +79 -118
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +24 -62
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +69 -95
- package/package.json +94 -34
- package/readme.md +6 -5
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
- package/dist/scene/types.d.ts +0 -26
- package/dist/tooltip/types.d.ts +0 -8
- package/dist/trajectory/constants.d.ts +0 -6
- package/dist/trajectory/constants.js +0 -11
- /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
- /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
|
@@ -44,10 +44,12 @@
|
|
|
44
44
|
const bands_default_axis = (range = shared_frequency_range): AxisConfig =>
|
|
45
45
|
shared_y_axis ? axis_with_range(bands_props.y_axis, range) : { ...bands_props.y_axis }
|
|
46
46
|
const dos_default_axis = (range = shared_frequency_range): AxisConfig =>
|
|
47
|
-
shared_y_axis
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
shared_y_axis
|
|
48
|
+
? axis_with_range(dos_props.y_axis, range, ``)
|
|
49
|
+
: {
|
|
50
|
+
label: ``,
|
|
51
|
+
...dos_props.y_axis,
|
|
52
|
+
}
|
|
51
53
|
|
|
52
54
|
let synced_zoom_range = $state<Vec2 | null>(null)
|
|
53
55
|
let bands_y_axis = $state<AxisConfig>(bands_default_axis())
|
|
@@ -88,14 +90,14 @@
|
|
|
88
90
|
$effect(() =>
|
|
89
91
|
propagate_synced_range(
|
|
90
92
|
untrack(() => bands_y_axis.range) as Vec2 | undefined,
|
|
91
|
-
(base_range) => bands_y_axis = bands_default_axis(base_range),
|
|
92
|
-
)
|
|
93
|
+
(base_range) => (bands_y_axis = bands_default_axis(base_range)),
|
|
94
|
+
),
|
|
93
95
|
)
|
|
94
96
|
$effect(() =>
|
|
95
97
|
propagate_synced_range(
|
|
96
98
|
untrack(() => dos_y_axis.range) as Vec2 | undefined,
|
|
97
|
-
(base_range) => dos_y_axis = dos_default_axis(base_range),
|
|
98
|
-
)
|
|
99
|
+
(base_range) => (dos_y_axis = dos_default_axis(base_range)),
|
|
100
|
+
),
|
|
99
101
|
)
|
|
100
102
|
|
|
101
103
|
let hovered_frequency = $state<number | null>(null)
|
|
@@ -106,7 +108,7 @@
|
|
|
106
108
|
|
|
107
109
|
<div
|
|
108
110
|
{...rest}
|
|
109
|
-
class=
|
|
111
|
+
class={[`bands-and-dos`, rest.class]}
|
|
110
112
|
style={`display: grid; grid-template-columns: 1fr 200px; gap: 0;` + (rest.style ?? ``)}
|
|
111
113
|
>
|
|
112
114
|
{@render children?.({ hovered_frequency })}
|
|
@@ -44,24 +44,12 @@
|
|
|
44
44
|
) as BaseBandStructure | null
|
|
45
45
|
|
|
46
46
|
// Compute shared frequency/energy range from both bands and DOS data
|
|
47
|
-
let shared_frequency_range = $derived(
|
|
48
|
-
helpers.compute_frequency_range(band_structs, doses),
|
|
49
|
-
)
|
|
47
|
+
let shared_frequency_range = $derived(helpers.compute_frequency_range(band_structs, doses))
|
|
50
48
|
|
|
51
49
|
// Extract Fermi level from electronic band structure or DOS data
|
|
52
|
-
let fermi_level = $derived
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
? band_structs
|
|
56
|
-
: Object.values(band_structs)[0]
|
|
57
|
-
const bs_efermi = (bs_source as Record<string, unknown>)?.efermi
|
|
58
|
-
if (typeof bs_efermi === `number`) return bs_efermi
|
|
59
|
-
|
|
60
|
-
// Check DOS for efermi
|
|
61
|
-
const dos_source = `efermi` in (doses as object) ? doses : Object.values(doses)[0]
|
|
62
|
-
const dos_efermi = (dos_source as Record<string, unknown>)?.efermi
|
|
63
|
-
return typeof dos_efermi === `number` ? dos_efermi : undefined
|
|
64
|
-
})
|
|
50
|
+
let fermi_level = $derived(
|
|
51
|
+
helpers.extract_efermi(band_structs) ?? helpers.extract_efermi(doses),
|
|
52
|
+
)
|
|
65
53
|
|
|
66
54
|
// Convert fractional k-point coordinates to Cartesian reciprocal space
|
|
67
55
|
// using the structure's reciprocal lattice (consistent with BZ computation)
|
|
@@ -75,13 +63,12 @@
|
|
|
75
63
|
let hovered_band_point = $state<InternalPoint | null>(null)
|
|
76
64
|
let bands_x_positions = $state<Record<string, Vec2>>({})
|
|
77
65
|
let hovered_qpoint_index = $derived(
|
|
78
|
-
hovered_band_point && first_band_struct &&
|
|
79
|
-
Object.keys(bands_x_positions).length > 0
|
|
66
|
+
hovered_band_point && first_band_struct && Object.keys(bands_x_positions).length > 0
|
|
80
67
|
? helpers.find_qpoint_at_rescaled_x(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
68
|
+
first_band_struct,
|
|
69
|
+
hovered_band_point.x,
|
|
70
|
+
bands_x_positions,
|
|
71
|
+
)
|
|
85
72
|
: null,
|
|
86
73
|
)
|
|
87
74
|
// Q-point hovered directly on the BZ k-path (reverse direction: BZ -> bands/DOS)
|
|
@@ -89,21 +76,13 @@
|
|
|
89
76
|
// Unified hovered q-point: a band-point hover takes priority, else a BZ k-path hover
|
|
90
77
|
let active_qpoint_index = $derived(hovered_qpoint_index ?? bz_hovered_qpoint_index)
|
|
91
78
|
let hovered_k_point = $derived(
|
|
92
|
-
active_qpoint_index !== null
|
|
93
|
-
? (k_path_points[active_qpoint_index] as Vec3)
|
|
94
|
-
: null,
|
|
79
|
+
active_qpoint_index !== null ? (k_path_points[active_qpoint_index] as Vec3) : null,
|
|
95
80
|
)
|
|
96
81
|
const [desktop_width, tablet_width] = [1200, 600]
|
|
97
82
|
let clientWidth = $state(desktop_width)
|
|
98
83
|
let is_desktop = $derived(clientWidth >= desktop_width)
|
|
99
84
|
let is_mobile = $derived(clientWidth < tablet_width)
|
|
100
|
-
let screen_class = $derived(
|
|
101
|
-
clientWidth >= desktop_width
|
|
102
|
-
? `desktop`
|
|
103
|
-
: clientWidth >= tablet_width
|
|
104
|
-
? `tablet`
|
|
105
|
-
: `phone`,
|
|
106
|
-
)
|
|
85
|
+
let screen_class = $derived(is_desktop ? `desktop` : is_mobile ? `phone` : `tablet`)
|
|
107
86
|
|
|
108
87
|
const bands_default_axis = (range = shared_frequency_range): AxisConfig =>
|
|
109
88
|
helpers.axis_with_range(bands_props.y_axis, range)
|
|
@@ -169,11 +148,7 @@
|
|
|
169
148
|
let hovered_frequency = $state<number | null>(null)
|
|
170
149
|
</script>
|
|
171
150
|
|
|
172
|
-
<div
|
|
173
|
-
{...rest}
|
|
174
|
-
class="bands-dos-brillouin {screen_class} {rest.class ?? ``}"
|
|
175
|
-
bind:clientWidth
|
|
176
|
-
>
|
|
151
|
+
<div {...rest} class={[`bands-dos-brillouin`, screen_class, rest.class]} bind:clientWidth>
|
|
177
152
|
{@render children?.({
|
|
178
153
|
hovered_frequency,
|
|
179
154
|
hovered_band_point,
|
|
@@ -201,11 +176,13 @@
|
|
|
201
176
|
{k_path_points}
|
|
202
177
|
k_path_labels={first_band_struct?.qpoints?.flatMap((qpoint, idx) =>
|
|
203
178
|
k_path_points[idx]
|
|
204
|
-
? [
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
179
|
+
? [
|
|
180
|
+
{
|
|
181
|
+
position: k_path_points[idx],
|
|
182
|
+
label: qpoint.label ? helpers.pretty_sym_point(qpoint.label) : null,
|
|
183
|
+
},
|
|
184
|
+
]
|
|
185
|
+
: [],
|
|
209
186
|
) ?? []}
|
|
210
187
|
{hovered_k_point}
|
|
211
188
|
hovered_qpoint_index={active_qpoint_index}
|
package/dist/spectral/Dos.svelte
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { Vec2 } from '../math'
|
|
6
6
|
import ScatterPlot from '../plot/scatter/ScatterPlot.svelte'
|
|
7
7
|
import type { AxisConfig, DataSeries } from '../plot/core/types'
|
|
8
|
+
import { extent } from 'd3-array'
|
|
8
9
|
import type { ComponentProps } from 'svelte'
|
|
9
10
|
import { tooltip as attach_tooltip } from 'svelte-multiselect/attachments'
|
|
10
11
|
import {
|
|
@@ -175,17 +176,18 @@
|
|
|
175
176
|
}
|
|
176
177
|
|
|
177
178
|
// Check for spin-down data (only for electronic DOS)
|
|
178
|
-
const has_spin_down =
|
|
179
|
-
dos.spin_down_densities?.length === dos.densities.length
|
|
179
|
+
const has_spin_down =
|
|
180
|
+
dos.type === `electronic` && dos.spin_down_densities?.length === dos.densities.length
|
|
180
181
|
const should_show_spin_up = effective_spin_mode !== `down_only`
|
|
181
|
-
const should_show_spin_down =
|
|
182
|
-
effective_spin_mode !== `up_only` && effective_spin_mode !== null
|
|
182
|
+
const should_show_spin_down =
|
|
183
|
+
has_spin_down && effective_spin_mode !== `up_only` && effective_spin_mode !== null
|
|
183
184
|
|
|
184
185
|
// Process spin-up (or total) densities
|
|
185
186
|
if (should_show_spin_up) {
|
|
186
|
-
let densities_up =
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
let densities_up =
|
|
188
|
+
sigma > 0
|
|
189
|
+
? apply_gaussian_smearing(x_values, dos.densities, sigma)
|
|
190
|
+
: [...dos.densities]
|
|
189
191
|
|
|
190
192
|
densities_up = normalize_densities(densities_up, x_values, normalize)
|
|
191
193
|
|
|
@@ -194,8 +196,8 @@
|
|
|
194
196
|
|
|
195
197
|
// For stacked plots, accumulate densities (only if array lengths match)
|
|
196
198
|
if (stack && cumulative_spin_up?.length === densities_up.length) {
|
|
197
|
-
densities_up = densities_up.map(
|
|
198
|
-
density + (cumulative_spin_up?.[idx] ?? 0)
|
|
199
|
+
densities_up = densities_up.map(
|
|
200
|
+
(density, idx) => density + (cumulative_spin_up?.[idx] ?? 0),
|
|
199
201
|
)
|
|
200
202
|
} else if (stack && cumulative_spin_up) {
|
|
201
203
|
console.warn(`DOS stacking: length mismatch for "${label}"`)
|
|
@@ -212,9 +214,10 @@
|
|
|
212
214
|
cumulative_spin_up = densities_up
|
|
213
215
|
}
|
|
214
216
|
|
|
215
|
-
const spin_label =
|
|
216
|
-
|
|
217
|
-
|
|
217
|
+
const spin_label =
|
|
218
|
+
has_spin_down && effective_spin_mode
|
|
219
|
+
? `${label || `DOS ${dos_idx + 1}`} (↑)`
|
|
220
|
+
: label || `DOS ${dos_idx + 1}`
|
|
218
221
|
|
|
219
222
|
const series_up: DataSeries = {
|
|
220
223
|
x: is_horizontal ? densities_up : x_values,
|
|
@@ -228,13 +231,11 @@
|
|
|
228
231
|
}
|
|
229
232
|
|
|
230
233
|
// Process spin-down densities if available
|
|
231
|
-
if (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
? apply_gaussian_smearing(x_values, dos.spin_down_densities, sigma)
|
|
237
|
-
: [...dos.spin_down_densities]
|
|
234
|
+
if (should_show_spin_down && dos.type === `electronic` && dos.spin_down_densities) {
|
|
235
|
+
let densities_down =
|
|
236
|
+
sigma > 0
|
|
237
|
+
? apply_gaussian_smearing(x_values, dos.spin_down_densities, sigma)
|
|
238
|
+
: [...dos.spin_down_densities]
|
|
238
239
|
|
|
239
240
|
densities_down = normalize_densities(densities_down, x_values, normalize)
|
|
240
241
|
|
|
@@ -246,12 +247,10 @@
|
|
|
246
247
|
// For stacked plots with overlay mode, use separate spin-down cumulative
|
|
247
248
|
// This prevents spin-down from stacking on top of spin-up within the same DOS
|
|
248
249
|
if (stack && effective_spin_mode === `overlay`) {
|
|
249
|
-
const prev_spin_down = cumulative_spin_down
|
|
250
|
-
? [...cumulative_spin_down]
|
|
251
|
-
: null
|
|
250
|
+
const prev_spin_down = cumulative_spin_down ? [...cumulative_spin_down] : null
|
|
252
251
|
if (cumulative_spin_down?.length === densities_down.length) {
|
|
253
|
-
densities_down = densities_down.map(
|
|
254
|
-
density + (cumulative_spin_down?.[idx] ?? 0)
|
|
252
|
+
densities_down = densities_down.map(
|
|
253
|
+
(density, idx) => density + (cumulative_spin_down?.[idx] ?? 0),
|
|
255
254
|
)
|
|
256
255
|
} else if (cumulative_spin_down) {
|
|
257
256
|
console.warn(`DOS stacking (spin-down): length mismatch for "${label}"`)
|
|
@@ -268,9 +267,10 @@
|
|
|
268
267
|
}
|
|
269
268
|
|
|
270
269
|
// Use a slightly different shade for spin-down in overlay mode
|
|
271
|
-
const spin_down_color =
|
|
272
|
-
|
|
273
|
-
|
|
270
|
+
const spin_down_color =
|
|
271
|
+
effective_spin_mode === `overlay`
|
|
272
|
+
? PLOT_COLORS[(dos_idx * 2 + 1) % PLOT_COLORS.length]
|
|
273
|
+
: color
|
|
274
274
|
|
|
275
275
|
const series_down: DataSeries = {
|
|
276
276
|
x: is_horizontal ? densities_down : x_values,
|
|
@@ -291,55 +291,51 @@
|
|
|
291
291
|
},
|
|
292
292
|
)
|
|
293
293
|
|
|
294
|
-
let all_freqs = $derived(
|
|
294
|
+
let all_freqs = $derived(
|
|
295
|
+
// for clamping phonon noise
|
|
295
296
|
Object.values(doses_dict).flatMap((dos) =>
|
|
296
|
-
dos.type === `phonon` ? dos.frequencies : dos.energies
|
|
297
|
+
dos.type === `phonon` ? dos.frequencies : dos.energies,
|
|
297
298
|
),
|
|
298
299
|
)
|
|
299
300
|
let clamp_to_zero = $derived(
|
|
300
301
|
is_phonon &&
|
|
301
302
|
all_freqs.length > 0 &&
|
|
302
|
-
|
|
303
|
+
(extent(all_freqs)[0] ?? 0) < 0 &&
|
|
303
304
|
negative_fraction(all_freqs) < IMAGINARY_MODE_NOISE_THRESHOLD,
|
|
304
305
|
)
|
|
305
306
|
|
|
306
307
|
// Check if we have mirrored spin-down data (negative densities)
|
|
307
|
-
let has_mirrored_spin = $derived(
|
|
308
|
-
|
|
308
|
+
let has_mirrored_spin = $derived(effective_spin_mode === `mirror` && has_spin_polarized)
|
|
309
|
+
|
|
310
|
+
// Density axis starts at 0 (unless mirror mode needs negative values); frequency axis
|
|
311
|
+
// clamps to 0 only when negative phonon frequencies are numerical noise.
|
|
312
|
+
// Prefer d3 extent over Math.min/max(...arr) — large DOS grids can blow the call stack.
|
|
313
|
+
const compute_range = (values: number[], is_density_axis: boolean): Vec2 | undefined => {
|
|
314
|
+
if (values.length === 0) return undefined
|
|
315
|
+
const [min_val, max_val] = extent(values) as [number, number]
|
|
316
|
+
if (is_density_axis && has_mirrored_spin) return [min_val, max_val]
|
|
317
|
+
if (is_density_axis || clamp_to_zero) return [0, max_val]
|
|
318
|
+
return [min_val, max_val]
|
|
319
|
+
}
|
|
320
|
+
let x_range = $derived(
|
|
321
|
+
compute_range(
|
|
322
|
+
series_data.flatMap((srs) => srs.x),
|
|
323
|
+
is_horizontal,
|
|
324
|
+
),
|
|
325
|
+
)
|
|
326
|
+
let y_range = $derived(
|
|
327
|
+
compute_range(
|
|
328
|
+
series_data.flatMap((srs) => srs.y),
|
|
329
|
+
!is_horizontal,
|
|
330
|
+
),
|
|
309
331
|
)
|
|
310
|
-
|
|
311
|
-
let x_range = $derived.by((): Vec2 | undefined => {
|
|
312
|
-
if (series_data.length === 0) return undefined
|
|
313
|
-
const all_x = series_data.flatMap((srs) => srs.x)
|
|
314
|
-
const min_x = Math.min(...all_x), max_x = Math.max(...all_x)
|
|
315
|
-
// For horizontal orientation with mirror mode, allow negative values (mirrored densities)
|
|
316
|
-
if (is_horizontal && has_mirrored_spin) return [min_x, max_x]
|
|
317
|
-
if (is_horizontal || clamp_to_zero) return [0, max_x]
|
|
318
|
-
return [min_x, max_x]
|
|
319
|
-
})
|
|
320
|
-
|
|
321
|
-
let y_range = $derived.by((): Vec2 | undefined => {
|
|
322
|
-
if (series_data.length === 0) return undefined
|
|
323
|
-
const all_y = series_data.flatMap((srs) => srs.y)
|
|
324
|
-
const min_y = Math.min(...all_y), max_y = Math.max(...all_y)
|
|
325
|
-
// For vertical orientation with mirror mode, allow negative values (mirrored densities)
|
|
326
|
-
if (!is_horizontal && has_mirrored_spin) return [min_y, max_y]
|
|
327
|
-
if (!is_horizontal || clamp_to_zero) return [0, max_y]
|
|
328
|
-
return [min_y, max_y]
|
|
329
|
-
})
|
|
330
332
|
|
|
331
333
|
// Get axis labels based on orientation
|
|
332
334
|
let x_label = $derived(
|
|
333
|
-
is_horizontal
|
|
334
|
-
? `Density of States`
|
|
335
|
-
: is_phonon
|
|
336
|
-
? `Frequency (${units})`
|
|
337
|
-
: `Energy (eV)`,
|
|
335
|
+
is_horizontal ? `Density of States` : is_phonon ? `Frequency (${units})` : `Energy (eV)`,
|
|
338
336
|
)
|
|
339
337
|
let y_label = $derived(
|
|
340
|
-
is_horizontal
|
|
341
|
-
? (is_phonon ? `Frequency (${units})` : `Energy (eV)`)
|
|
342
|
-
: `Density of States`,
|
|
338
|
+
is_horizontal ? (is_phonon ? `Frequency (${units})` : `Energy (eV)`) : `Density of States`,
|
|
343
339
|
)
|
|
344
340
|
|
|
345
341
|
// Compute final axis configurations with default labels
|
|
@@ -359,7 +355,6 @@
|
|
|
359
355
|
range: y_range,
|
|
360
356
|
...y_axis,
|
|
361
357
|
})
|
|
362
|
-
|
|
363
358
|
// Sync zoom changes from ScatterPlot back to parent via bindable y_axis
|
|
364
359
|
// Also clears parent range when internal range becomes invalid (auto-range reset)
|
|
365
360
|
$effect(() => {
|
|
@@ -381,9 +376,9 @@
|
|
|
381
376
|
let effective_sigma_range = $derived.by((): Vec2 => {
|
|
382
377
|
if (sigma_range) return sigma_range
|
|
383
378
|
if (all_freqs.length === 0) return [0, 1]
|
|
384
|
-
const
|
|
379
|
+
const [min_freq, max_freq] = extent(all_freqs) as [number, number]
|
|
385
380
|
// Reasonable sigma range: 0 to ~5% of total range
|
|
386
|
-
const max_sigma = Math.max(0.1,
|
|
381
|
+
const max_sigma = Math.max(0.1, (max_freq - min_freq) * 0.05)
|
|
387
382
|
return [0, max_sigma]
|
|
388
383
|
})
|
|
389
384
|
|
|
@@ -420,9 +415,13 @@
|
|
|
420
415
|
lower_coords.push(`${lower_x.toFixed(2)},${lower_y.toFixed(2)}`)
|
|
421
416
|
}
|
|
422
417
|
// Trace upper edge forward, lower edge backward, close path
|
|
423
|
-
return `M${upper_coords[0]} ${
|
|
424
|
-
|
|
425
|
-
|
|
418
|
+
return `M${upper_coords[0]} ${upper_coords
|
|
419
|
+
.slice(1)
|
|
420
|
+
.map((coord) => `L${coord}`)
|
|
421
|
+
.join(` `)} ${lower_coords
|
|
422
|
+
.toReversed()
|
|
423
|
+
.map((coord) => `L${coord}`)
|
|
424
|
+
.join(` `)} Z`
|
|
426
425
|
}
|
|
427
426
|
</script>
|
|
428
427
|
|
|
@@ -436,24 +435,22 @@
|
|
|
436
435
|
hover_config={{ threshold_px: 50 }}
|
|
437
436
|
controls={{ show: show_controls }}
|
|
438
437
|
on_point_hover={(event) => {
|
|
439
|
-
hovered_frequency = is_horizontal
|
|
440
|
-
? (event?.point?.y ?? null)
|
|
441
|
-
: (event?.point?.x ?? null)
|
|
438
|
+
hovered_frequency = is_horizontal ? (event?.point?.y ?? null) : (event?.point?.x ?? null)
|
|
442
439
|
}}
|
|
443
440
|
{...{ range_padding: 0, ...rest }}
|
|
444
441
|
>
|
|
445
442
|
{#snippet tooltip({ x_formatted, y_formatted, label })}
|
|
446
443
|
{@const tooltip_data = format_dos_tooltip(
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
444
|
+
x_formatted,
|
|
445
|
+
y_formatted,
|
|
446
|
+
label ?? null,
|
|
447
|
+
is_horizontal,
|
|
448
|
+
is_phonon,
|
|
449
|
+
units,
|
|
450
|
+
final_x_axis.label ?? ``,
|
|
451
|
+
internal_y_axis.label ?? ``,
|
|
452
|
+
Object.keys(doses_dict).length,
|
|
453
|
+
)}
|
|
457
454
|
{#if tooltip_data.title}<strong>{tooltip_data.title}</strong><br />{/if}
|
|
458
455
|
{#each tooltip_data.lines as line, line_idx (line_idx)}
|
|
459
456
|
{line}{#if line_idx < tooltip_data.lines.length - 1}<br />{/if}
|
|
@@ -559,15 +556,16 @@
|
|
|
559
556
|
{/if}
|
|
560
557
|
|
|
561
558
|
<!-- Fermi level line for electronic DOS -->
|
|
562
|
-
{@const fermi_pos =
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
559
|
+
{@const fermi_pos =
|
|
560
|
+
effective_fermi_level !== undefined
|
|
561
|
+
? is_horizontal
|
|
562
|
+
? y_scale_fn(effective_fermi_level)
|
|
563
|
+
: x_scale_fn(effective_fermi_level)
|
|
564
|
+
: NaN}
|
|
567
565
|
{#if Number.isFinite(fermi_pos)}
|
|
568
566
|
{@const [x1, x2, y1, y2] = is_horizontal
|
|
569
|
-
|
|
570
|
-
|
|
567
|
+
? [pad.l, width - pad.r, fermi_pos, fermi_pos]
|
|
568
|
+
: [fermi_pos, fermi_pos, pad.t, height - pad.b]}
|
|
571
569
|
<line
|
|
572
570
|
class="fermi-level-line"
|
|
573
571
|
{x1}
|
|
@@ -608,15 +606,16 @@
|
|
|
608
606
|
{/if}
|
|
609
607
|
|
|
610
608
|
<!-- Reference frequency line -->
|
|
611
|
-
{@const ref_pos =
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
609
|
+
{@const ref_pos =
|
|
610
|
+
reference_frequency !== null
|
|
611
|
+
? is_horizontal
|
|
612
|
+
? y_scale_fn(reference_frequency)
|
|
613
|
+
: x_scale_fn(reference_frequency)
|
|
614
|
+
: NaN}
|
|
616
615
|
{#if Number.isFinite(ref_pos)}
|
|
617
616
|
{@const [x1, x2, y1, y2] = is_horizontal
|
|
618
|
-
|
|
619
|
-
|
|
617
|
+
? [pad.l, width - pad.r, ref_pos, ref_pos]
|
|
618
|
+
: [ref_pos, ref_pos, pad.t, height - pad.b]}
|
|
620
619
|
<line
|
|
621
620
|
{x1}
|
|
622
621
|
{x2}
|
|
@@ -34,14 +34,14 @@ export declare function qpoint_x_position(band_struct: types.BaseBandStructure,
|
|
|
34
34
|
export declare function find_qpoint_at_rescaled_x(band_struct: types.BaseBandStructure, rescaled_x: number, x_positions: Record<string, Vec2>): number | null;
|
|
35
35
|
type SpinDensities = Record<string, number[]>;
|
|
36
36
|
export interface PymatgenDos {
|
|
37
|
-
'@class'
|
|
38
|
-
'@module'
|
|
37
|
+
'@class'?: string;
|
|
38
|
+
'@module'?: string;
|
|
39
39
|
energies: number[];
|
|
40
40
|
densities: SpinDensities | number[];
|
|
41
41
|
efermi: number;
|
|
42
42
|
}
|
|
43
43
|
export interface PymatgenCompleteDos extends PymatgenDos {
|
|
44
|
-
'@class'
|
|
44
|
+
'@class'?: `CompleteDos` | `LobsterCompleteDos`;
|
|
45
45
|
structure?: Record<string, unknown>;
|
|
46
46
|
pdos?: Record<string, SpinDensities>[];
|
|
47
47
|
atom_dos?: Record<string, PymatgenDos>;
|