matterviz 0.3.6 → 0.4.0
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.d.ts +9 -0
- package/dist/FilePicker.svelte +360 -0
- package/dist/FilePicker.svelte.d.ts +17 -0
- package/dist/Icon.svelte +44 -0
- package/dist/Icon.svelte.d.ts +13 -0
- package/dist/MillerIndexInput.svelte +66 -0
- package/dist/MillerIndexInput.svelte.d.ts +7 -0
- package/dist/api/mp.d.ts +6 -0
- package/dist/api/mp.js +22 -0
- package/dist/api/optimade.d.ts +45 -0
- package/dist/api/optimade.js +141 -0
- package/dist/app.css +244 -0
- package/dist/brillouin/BrillouinZone.svelte +554 -0
- package/dist/brillouin/BrillouinZone.svelte.d.ts +84 -0
- package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
- package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
- package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
- package/dist/brillouin/BrillouinZoneScene.svelte +522 -0
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +49 -0
- package/dist/brillouin/BrillouinZoneTooltip.svelte +83 -0
- package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
- package/dist/brillouin/compute.d.ts +17 -0
- package/dist/brillouin/compute.js +422 -0
- package/dist/brillouin/index.d.ts +8 -0
- package/dist/brillouin/index.js +7 -0
- package/dist/brillouin/types.d.ts +43 -0
- package/dist/brillouin/types.js +1 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte +328 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +843 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3191 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
- package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
- package/dist/chempot-diagram/async-compute.svelte.js +80 -0
- package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
- package/dist/chempot-diagram/chempot-worker.js +12 -0
- package/dist/chempot-diagram/color.d.ts +10 -0
- package/dist/chempot-diagram/color.js +32 -0
- package/dist/chempot-diagram/compute.d.ts +48 -0
- package/dist/chempot-diagram/compute.js +804 -0
- package/dist/chempot-diagram/index.d.ts +6 -0
- package/dist/chempot-diagram/index.js +6 -0
- package/dist/chempot-diagram/pointer.d.ts +16 -0
- package/dist/chempot-diagram/pointer.js +40 -0
- package/dist/chempot-diagram/temperature.d.ts +15 -0
- package/dist/chempot-diagram/temperature.js +34 -0
- package/dist/chempot-diagram/types.d.ts +81 -0
- package/dist/chempot-diagram/types.js +28 -0
- package/dist/colors/index.d.ts +47 -0
- package/dist/colors/index.js +204 -0
- package/dist/composition/BarChart.svelte +297 -0
- package/dist/composition/BarChart.svelte.d.ts +39 -0
- package/dist/composition/BubbleChart.svelte +218 -0
- package/dist/composition/BubbleChart.svelte.d.ts +28 -0
- package/dist/composition/Composition.svelte +165 -0
- package/dist/composition/Composition.svelte.d.ts +15 -0
- package/dist/composition/Formula.svelte +268 -0
- package/dist/composition/Formula.svelte.d.ts +19 -0
- package/dist/composition/FormulaFilter.svelte +1263 -0
- package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
- package/dist/composition/PieChart.svelte +324 -0
- package/dist/composition/PieChart.svelte.d.ts +37 -0
- package/dist/composition/chem-sys.d.ts +8 -0
- package/dist/composition/chem-sys.js +85 -0
- package/dist/composition/format.d.ts +15 -0
- package/dist/composition/format.js +111 -0
- package/dist/composition/index.d.ts +21 -0
- package/dist/composition/index.js +15 -0
- package/dist/composition/parse.d.ts +56 -0
- package/dist/composition/parse.js +486 -0
- package/dist/constants.d.ts +29 -0
- package/dist/constants.js +99 -0
- package/dist/controls.d.ts +14 -0
- package/dist/controls.js +30 -0
- package/dist/convex-hull/ConvexHull.svelte +157 -0
- package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
- package/dist/convex-hull/ConvexHull2D.svelte +827 -0
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
- package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
- package/dist/convex-hull/ConvexHull4D.svelte +1394 -0
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
- package/dist/convex-hull/ConvexHullControls.svelte +535 -0
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
- package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
- package/dist/convex-hull/ConvexHullStats.svelte +929 -0
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
- package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
- package/dist/convex-hull/GasPressureControls.svelte +247 -0
- package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
- package/dist/convex-hull/StructurePopup.svelte +151 -0
- package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
- package/dist/convex-hull/TemperatureSlider.svelte +140 -0
- package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
- package/dist/convex-hull/barycentric-coords.d.ts +18 -0
- package/dist/convex-hull/barycentric-coords.js +182 -0
- package/dist/convex-hull/demo-temperature.d.ts +6 -0
- package/dist/convex-hull/demo-temperature.js +38 -0
- package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
- package/dist/convex-hull/gas-thermodynamics.js +306 -0
- package/dist/convex-hull/helpers.d.ts +117 -0
- package/dist/convex-hull/helpers.js +718 -0
- package/dist/convex-hull/index.d.ts +119 -0
- package/dist/convex-hull/index.js +58 -0
- package/dist/convex-hull/thermodynamics.d.ts +67 -0
- package/dist/convex-hull/thermodynamics.js +1757 -0
- package/dist/convex-hull/types.d.ts +162 -0
- package/dist/convex-hull/types.js +36 -0
- package/dist/coordination/CoordinationBarPlot.svelte +311 -0
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
- package/dist/coordination/calc-coordination.d.ts +15 -0
- package/dist/coordination/calc-coordination.js +63 -0
- package/dist/coordination/index.d.ts +8 -0
- package/dist/coordination/index.js +7 -0
- package/dist/effects.svelte.d.ts +12 -0
- package/dist/effects.svelte.js +37 -0
- package/dist/element/BohrAtom.svelte.d.ts +20 -0
- package/dist/element/ElementHeading.svelte +26 -0
- package/dist/element/ElementHeading.svelte.d.ts +8 -0
- package/dist/element/ElementPhoto.svelte +57 -0
- package/dist/element/ElementPhoto.svelte.d.ts +9 -0
- package/dist/element/ElementStats.svelte +80 -0
- package/dist/element/ElementStats.svelte.d.ts +8 -0
- package/dist/element/ElementTile.svelte +484 -0
- package/dist/element/ElementTile.svelte.d.ts +29 -0
- package/dist/element/Nucleus.svelte.d.ts +17 -0
- package/dist/element/data.d.ts +2 -0
- package/dist/element/data.js +2 -0
- package/dist/element/index.d.ts +8 -0
- package/dist/element/index.js +7 -0
- package/dist/element/types.d.ts +57 -0
- package/dist/element/types.js +1 -0
- package/dist/feedback/ClickFeedback.svelte +58 -0
- package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
- package/dist/feedback/DragOverlay.svelte +42 -0
- package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
- package/dist/feedback/Spinner.svelte.d.ts +7 -0
- package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
- package/dist/feedback/index.d.ts +4 -0
- package/dist/feedback/index.js +4 -0
- package/dist/fermi-surface/FermiSlice.svelte +197 -0
- package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
- package/dist/fermi-surface/FermiSurface.svelte +606 -0
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
- package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
- package/dist/fermi-surface/FermiSurfaceScene.svelte +797 -0
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +85 -0
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
- package/dist/fermi-surface/compute.d.ts +5 -0
- package/dist/fermi-surface/compute.js +538 -0
- package/dist/fermi-surface/constants.d.ts +9 -0
- package/dist/fermi-surface/constants.js +27 -0
- package/dist/fermi-surface/export.d.ts +5 -0
- package/dist/fermi-surface/export.js +51 -0
- package/dist/fermi-surface/index.d.ts +12 -0
- package/dist/fermi-surface/index.js +13 -0
- package/dist/fermi-surface/marching-cubes.d.ts +2 -0
- package/dist/fermi-surface/marching-cubes.js +2 -0
- package/dist/fermi-surface/parse.d.ts +2 -0
- package/dist/fermi-surface/parse.js +494 -0
- package/dist/fermi-surface/symmetry.d.ts +3 -0
- package/dist/fermi-surface/symmetry.js +46 -0
- package/dist/fermi-surface/types.d.ts +111 -0
- package/dist/fermi-surface/types.js +4 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +1547 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
- package/dist/heatmap-matrix/index.d.ts +53 -0
- package/dist/heatmap-matrix/index.js +100 -0
- package/dist/heatmap-matrix/shared.d.ts +2 -0
- package/dist/heatmap-matrix/shared.js +4 -0
- package/dist/icons.d.ts +569 -0
- package/dist/icons.js +648 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +39 -0
- package/dist/io/decompress.d.ts +11 -0
- package/dist/io/decompress.js +76 -0
- package/dist/io/export.d.ts +16 -0
- package/dist/io/export.js +338 -0
- package/dist/io/fetch.d.ts +5 -0
- package/dist/io/fetch.js +43 -0
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +42 -0
- package/dist/io/index.d.ts +7 -0
- package/dist/io/index.js +6 -0
- package/dist/io/is-binary.d.ts +1 -0
- package/dist/io/is-binary.js +20 -0
- package/dist/io/types.d.ts +8 -0
- package/dist/io/types.js +1 -0
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +154 -0
- package/dist/isosurface/Isosurface.svelte +285 -0
- package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
- package/dist/isosurface/IsosurfaceControls.svelte +277 -0
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
- package/dist/isosurface/index.d.ts +5 -0
- package/dist/isosurface/index.js +6 -0
- package/dist/isosurface/parse.d.ts +6 -0
- package/dist/isosurface/parse.js +552 -0
- package/dist/isosurface/slice.d.ts +11 -0
- package/dist/isosurface/slice.js +141 -0
- package/dist/isosurface/types.d.ts +56 -0
- package/dist/isosurface/types.js +227 -0
- package/dist/keyboard.d.ts +3 -0
- package/dist/keyboard.js +23 -0
- package/dist/labels.d.ts +53 -0
- package/dist/labels.js +278 -0
- package/dist/layout/FullscreenToggle.svelte +50 -0
- package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
- package/dist/layout/InfoCard.svelte +120 -0
- package/dist/layout/InfoCard.svelte.d.ts +21 -0
- package/dist/layout/InfoTag.svelte +185 -0
- package/dist/layout/InfoTag.svelte.d.ts +19 -0
- package/dist/layout/PropertyFilter.svelte +247 -0
- package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
- package/dist/layout/SettingsSection.svelte +148 -0
- package/dist/layout/SettingsSection.svelte.d.ts +17 -0
- package/dist/layout/SubpageGrid.svelte +82 -0
- package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
- package/dist/layout/fullscreen.d.ts +9 -0
- package/dist/layout/fullscreen.js +53 -0
- package/dist/layout/index.d.ts +10 -0
- package/dist/layout/index.js +8 -0
- package/dist/layout/json-tree/JsonNode.svelte +548 -0
- package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
- package/dist/layout/json-tree/JsonTree.svelte +1230 -0
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
- package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
- package/dist/layout/json-tree/index.d.ts +3 -0
- package/dist/layout/json-tree/index.js +3 -0
- package/dist/layout/json-tree/types.d.ts +74 -0
- package/dist/layout/json-tree/types.js +2 -0
- package/dist/layout/json-tree/utils.d.ts +29 -0
- package/dist/layout/json-tree/utils.js +642 -0
- package/dist/marching-cubes.d.ts +14 -0
- package/dist/marching-cubes.js +535 -0
- package/dist/math.d.ts +105 -0
- package/dist/math.js +920 -0
- package/dist/overlays/ContextMenu.svelte +162 -0
- package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
- package/dist/overlays/CopyButton.svelte +45 -0
- package/dist/overlays/CopyButton.svelte.d.ts +8 -0
- package/dist/overlays/DragControlTab.svelte +98 -0
- package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
- package/dist/overlays/DraggablePane.svelte +487 -0
- package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
- package/dist/overlays/InfoPaneCards.svelte +149 -0
- package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
- package/dist/overlays/index.d.ts +3 -0
- package/dist/overlays/index.js +3 -0
- package/dist/periodic-table/PeriodicTable.svelte +480 -0
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
- package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
- package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
- package/dist/periodic-table/PropertySelect.svelte +38 -0
- package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
- package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
- package/dist/periodic-table/index.d.ts +10 -0
- package/dist/periodic-table/index.js +4 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1092 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
- package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +127 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
- package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
- package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
- package/dist/phase-diagram/build-diagram.d.ts +11 -0
- package/dist/phase-diagram/build-diagram.js +160 -0
- package/dist/phase-diagram/colors.d.ts +35 -0
- package/dist/phase-diagram/colors.js +51 -0
- package/dist/phase-diagram/diagram-input.d.ts +29 -0
- package/dist/phase-diagram/diagram-input.js +3 -0
- package/dist/phase-diagram/index.d.ts +13 -0
- package/dist/phase-diagram/index.js +11 -0
- package/dist/phase-diagram/parse.d.ts +55 -0
- package/dist/phase-diagram/parse.js +273 -0
- package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
- package/dist/phase-diagram/svg-to-diagram.js +867 -0
- package/dist/phase-diagram/types.d.ts +93 -0
- package/dist/phase-diagram/types.js +1 -0
- package/dist/phase-diagram/utils.d.ts +118 -0
- package/dist/phase-diagram/utils.js +600 -0
- package/dist/plot/bar/BarPlot.svelte +1755 -0
- package/dist/plot/bar/BarPlot.svelte.d.ts +84 -0
- package/dist/plot/bar/BarPlotControls.svelte +67 -0
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +18 -0
- package/dist/plot/bar/SpacegroupBarPlot.svelte +293 -0
- package/dist/plot/bar/SpacegroupBarPlot.svelte.d.ts +9 -0
- package/dist/plot/bar/data.d.ts +40 -0
- package/dist/plot/bar/data.js +154 -0
- package/dist/plot/bar/geometry.d.ts +39 -0
- package/dist/plot/bar/geometry.js +60 -0
- package/dist/plot/bar/index.d.ts +3 -0
- package/dist/plot/bar/index.js +3 -0
- package/dist/plot/box/BoxPlot.svelte +1462 -0
- package/dist/plot/box/BoxPlot.svelte.d.ts +94 -0
- package/dist/plot/box/BoxPlotControls.svelte +109 -0
- package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
- package/dist/plot/box/Violin.svelte +14 -0
- package/dist/plot/box/Violin.svelte.d.ts +70 -0
- package/dist/plot/box/box-plot.d.ts +55 -0
- package/dist/plot/box/box-plot.js +126 -0
- package/dist/plot/box/index.d.ts +5 -0
- package/dist/plot/box/index.js +5 -0
- package/dist/plot/box/kde.d.ts +16 -0
- package/dist/plot/box/kde.js +160 -0
- package/dist/plot/box/quantile.d.ts +3 -0
- package/dist/plot/box/quantile.js +53 -0
- package/dist/plot/core/auto-place.d.ts +43 -0
- package/dist/plot/core/auto-place.js +122 -0
- package/dist/plot/core/axis-utils.d.ts +46 -0
- package/dist/plot/core/axis-utils.js +110 -0
- package/dist/plot/core/components/AxisLabel.svelte +51 -0
- package/dist/plot/core/components/AxisLabel.svelte.d.ts +16 -0
- package/dist/plot/core/components/ColorBar.svelte +724 -0
- package/dist/plot/core/components/ColorBar.svelte.d.ts +31 -0
- package/dist/plot/core/components/ColorScaleSelect.svelte +55 -0
- package/dist/plot/core/components/ColorScaleSelect.svelte.d.ts +15 -0
- package/dist/plot/core/components/ControlPane.svelte +46 -0
- package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
- package/dist/plot/core/components/FillArea.svelte +234 -0
- package/dist/plot/core/components/FillArea.svelte.d.ts +21 -0
- package/dist/plot/core/components/InteractiveAxisLabel.svelte +96 -0
- package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +14 -0
- package/dist/plot/core/components/Line.svelte +101 -0
- package/dist/plot/core/components/Line.svelte.d.ts +15 -0
- package/dist/plot/core/components/PlotAxis.svelte +171 -0
- package/dist/plot/core/components/PlotAxis.svelte.d.ts +25 -0
- package/dist/plot/core/components/PlotControls.svelte +525 -0
- package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
- package/dist/plot/core/components/PlotLegend.svelte +580 -0
- package/dist/plot/core/components/PlotLegend.svelte.d.ts +30 -0
- package/dist/plot/core/components/PlotTooltip.svelte +83 -0
- package/dist/plot/core/components/PlotTooltip.svelte.d.ts +25 -0
- package/dist/plot/core/components/PortalSelect.svelte +257 -0
- package/dist/plot/core/components/PortalSelect.svelte.d.ts +16 -0
- package/dist/plot/core/components/ReferenceLine.svelte +204 -0
- package/dist/plot/core/components/ReferenceLine.svelte.d.ts +20 -0
- package/dist/plot/core/components/ReferenceLine3D.svelte +156 -0
- package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +14 -0
- package/dist/plot/core/components/ReferencePlane.svelte +175 -0
- package/dist/plot/core/components/ReferencePlane.svelte.d.ts +14 -0
- package/dist/plot/core/components/ZeroLines.svelte +97 -0
- package/dist/plot/core/components/ZeroLines.svelte.d.ts +33 -0
- package/dist/plot/core/components/ZoomRect.svelte +23 -0
- package/dist/plot/core/components/ZoomRect.svelte.d.ts +8 -0
- package/dist/plot/core/components/index.d.ts +17 -0
- package/dist/plot/core/components/index.js +17 -0
- package/dist/plot/core/data-cleaning.d.ts +107 -0
- package/dist/plot/core/data-cleaning.js +853 -0
- package/dist/plot/core/data-transform.d.ts +16 -0
- package/dist/plot/core/data-transform.js +45 -0
- package/dist/plot/core/fill-utils.d.ts +33 -0
- package/dist/plot/core/fill-utils.js +388 -0
- package/dist/plot/core/hover-lock.svelte.d.ts +14 -0
- package/dist/plot/core/hover-lock.svelte.js +45 -0
- package/dist/plot/core/index.d.ts +10 -0
- package/dist/plot/core/index.js +11 -0
- package/dist/plot/core/interactions.d.ts +35 -0
- package/dist/plot/core/interactions.js +195 -0
- package/dist/plot/core/layout.d.ts +79 -0
- package/dist/plot/core/layout.js +281 -0
- package/dist/plot/core/reference-line.d.ts +60 -0
- package/dist/plot/core/reference-line.js +301 -0
- package/dist/plot/core/scales.d.ts +48 -0
- package/dist/plot/core/scales.js +480 -0
- package/dist/plot/core/svg.d.ts +2 -0
- package/dist/plot/core/svg.js +41 -0
- package/dist/plot/core/types.d.ts +771 -0
- package/dist/plot/core/types.js +99 -0
- package/dist/plot/core/utils/label-placement.d.ts +68 -0
- package/dist/plot/core/utils/label-placement.js +326 -0
- package/dist/plot/core/utils/series-visibility.d.ts +26 -0
- package/dist/plot/core/utils/series-visibility.js +112 -0
- package/dist/plot/core/utils.d.ts +11 -0
- package/dist/plot/core/utils.js +27 -0
- package/dist/plot/histogram/Histogram.svelte +1418 -0
- package/dist/plot/histogram/Histogram.svelte.d.ts +50 -0
- package/dist/plot/histogram/HistogramControls.svelte +212 -0
- package/dist/plot/histogram/HistogramControls.svelte.d.ts +22 -0
- package/dist/plot/histogram/index.d.ts +2 -0
- package/dist/plot/histogram/index.js +2 -0
- package/dist/plot/index.d.ts +8 -0
- package/dist/plot/index.js +10 -0
- package/dist/plot/sankey/Sankey.svelte +700 -0
- package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
- package/dist/plot/sankey/SankeyControls.svelte +98 -0
- package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
- package/dist/plot/sankey/index.d.ts +4 -0
- package/dist/plot/sankey/index.js +3 -0
- package/dist/plot/sankey/sankey-types.d.ts +42 -0
- package/dist/plot/sankey/sankey-types.js +4 -0
- package/dist/plot/sankey/sankey.d.ts +52 -0
- package/dist/plot/sankey/sankey.js +187 -0
- package/dist/plot/scatter/BinnedScatterPlot.svelte +1116 -0
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +66 -0
- package/dist/plot/scatter/ElementScatter.svelte +63 -0
- package/dist/plot/scatter/ElementScatter.svelte.d.ts +14 -0
- package/dist/plot/scatter/ScatterPlot.svelte +2357 -0
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +96 -0
- package/dist/plot/scatter/ScatterPlotControls.svelte +307 -0
- package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +17 -0
- package/dist/plot/scatter/ScatterPoint.svelte +182 -0
- package/dist/plot/scatter/ScatterPoint.svelte.d.ts +22 -0
- package/dist/plot/scatter/adaptive-density.d.ts +79 -0
- package/dist/plot/scatter/adaptive-density.js +217 -0
- package/dist/plot/scatter/binned-scatter-types.d.ts +59 -0
- package/dist/plot/scatter/binned-scatter-types.js +1 -0
- package/dist/plot/scatter/index.d.ts +7 -0
- package/dist/plot/scatter/index.js +5 -0
- package/dist/plot/scatter/scatter-data.d.ts +19 -0
- package/dist/plot/scatter/scatter-data.js +212 -0
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte +531 -0
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +95 -0
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +438 -0
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +20 -0
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +912 -0
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +74 -0
- package/dist/plot/scatter-3d/Surface3D.svelte +197 -0
- package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +13 -0
- package/dist/plot/scatter-3d/index.d.ts +4 -0
- package/dist/plot/scatter-3d/index.js +4 -0
- package/dist/plot/sunburst/Sunburst.svelte +1045 -0
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +96 -0
- package/dist/plot/sunburst/SunburstControls.svelte +200 -0
- package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
- package/dist/plot/sunburst/index.d.ts +4 -0
- package/dist/plot/sunburst/index.js +4 -0
- package/dist/plot/sunburst/render.d.ts +34 -0
- package/dist/plot/sunburst/render.js +122 -0
- package/dist/plot/sunburst/sunburst.d.ts +62 -0
- package/dist/plot/sunburst/sunburst.js +266 -0
- package/dist/rdf/RdfPlot.svelte +248 -0
- package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
- package/dist/rdf/calc-rdf.d.ts +4 -0
- package/dist/rdf/calc-rdf.js +98 -0
- package/dist/rdf/index.d.ts +23 -0
- package/dist/rdf/index.js +2 -0
- package/dist/sanitize.d.ts +6 -0
- package/dist/sanitize.js +116 -0
- package/dist/settings.d.ts +319 -0
- package/dist/settings.js +1394 -0
- package/dist/spectral/Bands.svelte +1050 -0
- package/dist/spectral/Bands.svelte.d.ts +39 -0
- package/dist/spectral/BandsAndDos.svelte +134 -0
- package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
- package/dist/spectral/BrillouinBandsDos.svelte +264 -0
- package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
- package/dist/spectral/Dos.svelte +688 -0
- package/dist/spectral/Dos.svelte.d.ts +29 -0
- package/dist/spectral/helpers.d.ts +121 -0
- package/dist/spectral/helpers.js +1098 -0
- package/dist/spectral/index.d.ts +6 -0
- package/dist/spectral/index.js +6 -0
- package/dist/spectral/types.d.ts +84 -0
- package/dist/spectral/types.js +2 -0
- package/dist/state.svelte.d.ts +25 -0
- package/dist/state.svelte.js +45 -0
- package/dist/structure/Arrow.svelte +72 -0
- package/dist/structure/Arrow.svelte.d.ts +15 -0
- package/dist/structure/AtomLegend.svelte +814 -0
- package/dist/structure/AtomLegend.svelte.d.ts +35 -0
- package/dist/structure/Bond.svelte +140 -0
- package/dist/structure/Bond.svelte.d.ts +9 -0
- package/dist/structure/CanvasTooltip.svelte +33 -0
- package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
- package/dist/structure/CellSelect.svelte +348 -0
- package/dist/structure/CellSelect.svelte.d.ts +13 -0
- package/dist/structure/Cylinder.svelte +49 -0
- package/dist/structure/Cylinder.svelte.d.ts +13 -0
- package/dist/structure/Lattice.svelte +196 -0
- package/dist/structure/Lattice.svelte.d.ts +17 -0
- package/dist/structure/Structure.svelte +2254 -0
- package/dist/structure/Structure.svelte.d.ts +89 -0
- package/dist/structure/StructureControls.svelte +1273 -0
- package/dist/structure/StructureControls.svelte.d.ts +31 -0
- package/dist/structure/StructureExportPane.svelte +252 -0
- package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
- package/dist/structure/StructureInfoPane.svelte +736 -0
- package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
- package/dist/structure/StructureScene.svelte +2256 -0
- package/dist/structure/StructureScene.svelte.d.ts +111 -0
- package/dist/structure/atom-properties.d.ts +37 -0
- package/dist/structure/atom-properties.js +200 -0
- package/dist/structure/bond-order-perception.d.ts +13 -0
- package/dist/structure/bond-order-perception.js +384 -0
- package/dist/structure/bonding.d.ts +69 -0
- package/dist/structure/bonding.js +724 -0
- package/dist/structure/export.d.ts +20 -0
- package/dist/structure/export.js +731 -0
- package/dist/structure/index.d.ts +124 -0
- package/dist/structure/index.js +167 -0
- package/dist/structure/label-placement.d.ts +14 -0
- package/dist/structure/label-placement.js +72 -0
- package/dist/structure/measure.d.ts +7 -0
- package/dist/structure/measure.js +30 -0
- package/dist/structure/parse.d.ts +66 -0
- package/dist/structure/parse.js +1410 -0
- package/dist/structure/partial-occupancy.d.ts +25 -0
- package/dist/structure/partial-occupancy.js +99 -0
- package/dist/structure/pbc.d.ts +9 -0
- package/dist/structure/pbc.js +127 -0
- package/dist/structure/supercell.d.ts +8 -0
- package/dist/structure/supercell.js +170 -0
- package/dist/structure/validation.d.ts +2 -0
- package/dist/structure/validation.js +10 -0
- package/dist/symmetry/SymmetryStats.svelte +226 -0
- package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
- package/dist/symmetry/WyckoffTable.svelte +120 -0
- package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
- package/dist/symmetry/cell-transform.d.ts +12 -0
- package/dist/symmetry/cell-transform.js +91 -0
- package/dist/symmetry/index.d.ts +43 -0
- package/dist/symmetry/index.js +226 -0
- package/dist/symmetry/spacegroups.d.ts +16 -0
- package/dist/symmetry/spacegroups.js +429 -0
- package/dist/table/HeatmapTable.svelte +1885 -0
- package/dist/table/HeatmapTable.svelte.d.ts +49 -0
- package/dist/table/ToggleMenu.svelte +385 -0
- package/dist/table/ToggleMenu.svelte.d.ts +11 -0
- package/dist/table/index.d.ts +72 -0
- package/dist/table/index.js +38 -0
- package/dist/theme/ThemeControl.svelte +53 -0
- package/dist/theme/ThemeControl.svelte.d.ts +9 -0
- package/dist/theme/index.d.ts +29 -0
- package/dist/theme/index.js +79 -0
- package/dist/time.d.ts +4 -0
- package/dist/time.js +70 -0
- package/dist/tooltip/KCoords.svelte +45 -0
- package/dist/tooltip/KCoords.svelte.d.ts +8 -0
- package/dist/tooltip/TooltipContent.svelte +58 -0
- package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
- package/dist/tooltip/index.d.ts +3 -0
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/types.d.ts +8 -0
- package/dist/tooltip/types.js +1 -0
- package/dist/trajectory/Trajectory.svelte +1571 -0
- package/dist/trajectory/Trajectory.svelte.d.ts +78 -0
- package/dist/trajectory/TrajectoryError.svelte +128 -0
- package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
- package/dist/trajectory/TrajectoryExportPane.svelte +358 -0
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
- package/dist/trajectory/TrajectoryInfoPane.svelte +314 -0
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
- package/dist/trajectory/constants.d.ts +6 -0
- package/dist/trajectory/constants.js +7 -0
- package/dist/trajectory/extract.d.ts +5 -0
- package/dist/trajectory/extract.js +162 -0
- package/dist/trajectory/format-detect.d.ts +10 -0
- package/dist/trajectory/format-detect.js +90 -0
- package/dist/trajectory/frame-reader.d.ts +17 -0
- package/dist/trajectory/frame-reader.js +299 -0
- package/dist/trajectory/helpers.d.ts +15 -0
- package/dist/trajectory/helpers.js +164 -0
- package/dist/trajectory/index.d.ts +63 -0
- package/dist/trajectory/index.js +126 -0
- package/dist/trajectory/parse/ase.d.ts +2 -0
- package/dist/trajectory/parse/ase.js +73 -0
- package/dist/trajectory/parse/hdf5.d.ts +2 -0
- package/dist/trajectory/parse/hdf5.js +127 -0
- package/dist/trajectory/parse/index.d.ts +12 -0
- package/dist/trajectory/parse/index.js +306 -0
- package/dist/trajectory/parse/lammps.d.ts +5 -0
- package/dist/trajectory/parse/lammps.js +179 -0
- package/dist/trajectory/parse/vasp.d.ts +2 -0
- package/dist/trajectory/parse/vasp.js +87 -0
- package/dist/trajectory/parse/xyz.d.ts +26 -0
- package/dist/trajectory/parse/xyz.js +123 -0
- package/dist/trajectory/plotting.d.ts +28 -0
- package/dist/trajectory/plotting.js +423 -0
- package/dist/trajectory/types.d.ts +11 -0
- package/dist/trajectory/types.js +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.js +47 -0
- package/dist/xrd/XrdPlot.svelte +616 -0
- package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
- package/dist/xrd/broadening.d.ts +20 -0
- package/dist/xrd/broadening.js +97 -0
- package/dist/xrd/calc-xrd.d.ts +37 -0
- package/dist/xrd/calc-xrd.js +339 -0
- package/dist/xrd/index.d.ts +37 -0
- package/dist/xrd/index.js +4 -0
- package/dist/xrd/parse.d.ts +13 -0
- package/dist/xrd/parse.js +749 -0
- package/license +1 -1
- package/package.json +237 -1458
- package/readme.md +98 -171
- package/.vscode/launch.json +0 -13
- package/.vscodeignore +0 -7
- package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
- package/dist/assets/browser-DdDecX_W.js +0 -1
- package/dist/assets/export-qgn-H9y6.js +0 -2
- package/dist/assets/main-DiKYzti2.css +0 -1
- package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
- package/dist/extension.js +0 -31293
- package/dist/src/lib/FilePicker.svelte +0 -360
- package/dist/src/lib/Icon.svelte +0 -41
- package/dist/src/lib/MillerIndexInput.svelte +0 -66
- package/dist/src/lib/api/mp.ts +0 -26
- package/dist/src/lib/api/optimade.ts +0 -204
- package/dist/src/lib/app.css +0 -247
- package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
- package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
- package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
- package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
- package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
- package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
- package/dist/src/lib/brillouin/compute.ts +0 -529
- package/dist/src/lib/brillouin/index.ts +0 -8
- package/dist/src/lib/brillouin/types.ts +0 -51
- package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
- package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
- package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
- package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
- package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
- package/dist/src/lib/chempot-diagram/color.ts +0 -42
- package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
- package/dist/src/lib/chempot-diagram/index.ts +0 -6
- package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
- package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
- package/dist/src/lib/chempot-diagram/types.ts +0 -130
- package/dist/src/lib/colors/index.ts +0 -249
- package/dist/src/lib/composition/BarChart.svelte +0 -297
- package/dist/src/lib/composition/BubbleChart.svelte +0 -218
- package/dist/src/lib/composition/Composition.svelte +0 -165
- package/dist/src/lib/composition/Formula.svelte +0 -268
- package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
- package/dist/src/lib/composition/PieChart.svelte +0 -323
- package/dist/src/lib/composition/format.ts +0 -155
- package/dist/src/lib/composition/index.ts +0 -37
- package/dist/src/lib/composition/parse.ts +0 -605
- package/dist/src/lib/constants.ts +0 -134
- package/dist/src/lib/controls.ts +0 -42
- package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
- package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
- package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
- package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
- package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
- package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
- package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
- package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
- package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
- package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
- package/dist/src/lib/convex-hull/TemperatureSlider.svelte +0 -140
- package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
- package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
- package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
- package/dist/src/lib/convex-hull/helpers.ts +0 -932
- package/dist/src/lib/convex-hull/index.ts +0 -202
- package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
- package/dist/src/lib/convex-hull/types.ts +0 -267
- package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
- package/dist/src/lib/coordination/calc-coordination.ts +0 -93
- package/dist/src/lib/coordination/index.ts +0 -9
- package/dist/src/lib/effects.svelte.ts +0 -48
- package/dist/src/lib/element/ElementHeading.svelte +0 -26
- package/dist/src/lib/element/ElementPhoto.svelte +0 -57
- package/dist/src/lib/element/ElementStats.svelte +0 -80
- package/dist/src/lib/element/ElementTile.svelte +0 -484
- package/dist/src/lib/element/data.ts +0 -14
- package/dist/src/lib/element/index.ts +0 -8
- package/dist/src/lib/element/types.ts +0 -62
- package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
- package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
- package/dist/src/lib/feedback/index.ts +0 -4
- package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
- package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
- package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
- package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
- package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
- package/dist/src/lib/fermi-surface/compute.ts +0 -728
- package/dist/src/lib/fermi-surface/constants.ts +0 -32
- package/dist/src/lib/fermi-surface/export.ts +0 -64
- package/dist/src/lib/fermi-surface/index.ts +0 -14
- package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
- package/dist/src/lib/fermi-surface/parse.ts +0 -574
- package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
- package/dist/src/lib/fermi-surface/types.ts +0 -159
- package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
- package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
- package/dist/src/lib/heatmap-matrix/index.ts +0 -167
- package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
- package/dist/src/lib/icons.ts +0 -650
- package/dist/src/lib/index.ts +0 -61
- package/dist/src/lib/io/decompress.ts +0 -92
- package/dist/src/lib/io/export.ts +0 -385
- package/dist/src/lib/io/fetch.ts +0 -46
- package/dist/src/lib/io/file-drop.ts +0 -51
- package/dist/src/lib/io/index.ts +0 -7
- package/dist/src/lib/io/is-binary.ts +0 -24
- package/dist/src/lib/io/types.ts +0 -8
- package/dist/src/lib/io/url-drop.ts +0 -141
- package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
- package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
- package/dist/src/lib/isosurface/index.ts +0 -7
- package/dist/src/lib/isosurface/parse.ts +0 -656
- package/dist/src/lib/isosurface/slice.ts +0 -175
- package/dist/src/lib/isosurface/types.ts +0 -309
- package/dist/src/lib/labels.ts +0 -320
- package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
- package/dist/src/lib/layout/InfoCard.svelte +0 -120
- package/dist/src/lib/layout/InfoTag.svelte +0 -185
- package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
- package/dist/src/lib/layout/SettingsSection.svelte +0 -148
- package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
- package/dist/src/lib/layout/fullscreen.ts +0 -65
- package/dist/src/lib/layout/index.ts +0 -11
- package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
- package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
- package/dist/src/lib/layout/json-tree/index.ts +0 -3
- package/dist/src/lib/layout/json-tree/types.ts +0 -126
- package/dist/src/lib/layout/json-tree/utils.ts +0 -682
- package/dist/src/lib/marching-cubes.ts +0 -614
- package/dist/src/lib/math.ts +0 -1081
- package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
- package/dist/src/lib/overlays/CopyButton.svelte +0 -45
- package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
- package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
- package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
- package/dist/src/lib/overlays/index.ts +0 -3
- package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
- package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
- package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
- package/dist/src/lib/periodic-table/index.ts +0 -12
- package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
- package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
- package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
- package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
- package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
- package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
- package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
- package/dist/src/lib/phase-diagram/colors.ts +0 -58
- package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
- package/dist/src/lib/phase-diagram/index.ts +0 -13
- package/dist/src/lib/phase-diagram/parse.ts +0 -348
- package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
- package/dist/src/lib/phase-diagram/types.ts +0 -144
- package/dist/src/lib/phase-diagram/utils.ts +0 -775
- package/dist/src/lib/plot/AxisLabel.svelte +0 -51
- package/dist/src/lib/plot/BarPlot.svelte +0 -2113
- package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
- package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
- package/dist/src/lib/plot/ColorBar.svelte +0 -721
- package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
- package/dist/src/lib/plot/ElementScatter.svelte +0 -63
- package/dist/src/lib/plot/FillArea.svelte +0 -223
- package/dist/src/lib/plot/Histogram.svelte +0 -1558
- package/dist/src/lib/plot/HistogramControls.svelte +0 -212
- package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
- package/dist/src/lib/plot/Line.svelte +0 -84
- package/dist/src/lib/plot/PlotAxis.svelte +0 -169
- package/dist/src/lib/plot/PlotControls.svelte +0 -537
- package/dist/src/lib/plot/PlotLegend.svelte +0 -569
- package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
- package/dist/src/lib/plot/PortalSelect.svelte +0 -253
- package/dist/src/lib/plot/ReferenceLine.svelte +0 -204
- package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
- package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
- package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
- package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
- package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
- package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
- package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
- package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
- package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
- package/dist/src/lib/plot/Surface3D.svelte +0 -197
- package/dist/src/lib/plot/ZeroLines.svelte +0 -97
- package/dist/src/lib/plot/ZoomRect.svelte +0 -23
- package/dist/src/lib/plot/adaptive-density.ts +0 -316
- package/dist/src/lib/plot/auto-place.ts +0 -184
- package/dist/src/lib/plot/axis-utils.ts +0 -122
- package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
- package/dist/src/lib/plot/data-cleaning.ts +0 -1069
- package/dist/src/lib/plot/data-transform.ts +0 -69
- package/dist/src/lib/plot/defaults.ts +0 -9
- package/dist/src/lib/plot/fill-utils.ts +0 -494
- package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
- package/dist/src/lib/plot/index.ts +0 -53
- package/dist/src/lib/plot/interactions.ts +0 -119
- package/dist/src/lib/plot/layout.ts +0 -425
- package/dist/src/lib/plot/reference-line.ts +0 -426
- package/dist/src/lib/plot/scales.ts +0 -654
- package/dist/src/lib/plot/svg.ts +0 -23
- package/dist/src/lib/plot/types.ts +0 -1144
- package/dist/src/lib/plot/utils/label-placement.ts +0 -541
- package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
- package/dist/src/lib/plot/utils.ts +0 -11
- package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
- package/dist/src/lib/rdf/calc-rdf.ts +0 -167
- package/dist/src/lib/rdf/index.ts +0 -27
- package/dist/src/lib/sanitize.ts +0 -126
- package/dist/src/lib/settings.ts +0 -1479
- package/dist/src/lib/spectral/Bands.svelte +0 -1040
- package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
- package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
- package/dist/src/lib/spectral/Dos.svelte +0 -697
- package/dist/src/lib/spectral/helpers.ts +0 -1381
- package/dist/src/lib/spectral/index.ts +0 -8
- package/dist/src/lib/spectral/types.ts +0 -112
- package/dist/src/lib/state.svelte.ts +0 -64
- package/dist/src/lib/structure/Arrow.svelte +0 -72
- package/dist/src/lib/structure/AtomLegend.svelte +0 -815
- package/dist/src/lib/structure/Bond.svelte +0 -140
- package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
- package/dist/src/lib/structure/CellSelect.svelte +0 -349
- package/dist/src/lib/structure/Cylinder.svelte +0 -45
- package/dist/src/lib/structure/Lattice.svelte +0 -196
- package/dist/src/lib/structure/Structure.svelte +0 -2248
- package/dist/src/lib/structure/StructureControls.svelte +0 -1273
- package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
- package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
- package/dist/src/lib/structure/StructureScene.svelte +0 -2255
- package/dist/src/lib/structure/atom-properties.ts +0 -316
- package/dist/src/lib/structure/bond-order-perception.ts +0 -447
- package/dist/src/lib/structure/bonding.ts +0 -944
- package/dist/src/lib/structure/export.ts +0 -861
- package/dist/src/lib/structure/index.ts +0 -291
- package/dist/src/lib/structure/label-placement.ts +0 -130
- package/dist/src/lib/structure/measure.ts +0 -45
- package/dist/src/lib/structure/parse.ts +0 -1705
- package/dist/src/lib/structure/partial-occupancy.ts +0 -183
- package/dist/src/lib/structure/pbc.ts +0 -164
- package/dist/src/lib/structure/supercell.ts +0 -226
- package/dist/src/lib/structure/validation.ts +0 -11
- package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
- package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
- package/dist/src/lib/symmetry/cell-transform.ts +0 -118
- package/dist/src/lib/symmetry/index.ts +0 -348
- package/dist/src/lib/symmetry/spacegroups.ts +0 -404
- package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
- package/dist/src/lib/table/ToggleMenu.svelte +0 -385
- package/dist/src/lib/table/index.ts +0 -139
- package/dist/src/lib/theme/ThemeControl.svelte +0 -53
- package/dist/src/lib/theme/index.ts +0 -107
- package/dist/src/lib/time.ts +0 -71
- package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
- package/dist/src/lib/tooltip/index.ts +0 -2
- package/dist/src/lib/tooltip/types.ts +0 -13
- package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
- package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
- package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
- package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
- package/dist/src/lib/trajectory/constants.ts +0 -7
- package/dist/src/lib/trajectory/extract.ts +0 -196
- package/dist/src/lib/trajectory/format-detect.ts +0 -96
- package/dist/src/lib/trajectory/frame-reader.ts +0 -456
- package/dist/src/lib/trajectory/helpers.ts +0 -217
- package/dist/src/lib/trajectory/index.ts +0 -218
- package/dist/src/lib/trajectory/parse/ase.ts +0 -109
- package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
- package/dist/src/lib/trajectory/parse/index.ts +0 -411
- package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
- package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
- package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
- package/dist/src/lib/trajectory/plotting.ts +0 -599
- package/dist/src/lib/trajectory/types.ts +0 -13
- package/dist/src/lib/utils.ts +0 -56
- package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
- package/dist/src/lib/xrd/broadening.ts +0 -130
- package/dist/src/lib/xrd/calc-xrd.ts +0 -397
- package/dist/src/lib/xrd/index.ts +0 -38
- package/dist/src/lib/xrd/parse.ts +0 -858
- package/dist/webview.js +0 -29421
- package/icon.png +0 -0
- package/matterviz-0.3.2.vsix +0 -0
- package/matterviz-0.3.4.vsix +0 -0
- package/matterviz-0.3.5.vsix +0 -0
- package/scripts/sync-config.ts +0 -101
- package/src/declarations.d.ts +0 -2
- package/src/extension.ts +0 -972
- package/src/node-io.ts +0 -65
- package/src/types.ts +0 -17
- package/src/webview/JsonBrowser.svelte +0 -1079
- package/src/webview/PlotPanel.svelte +0 -346
- package/src/webview/detect.ts +0 -444
- package/src/webview/main.ts +0 -764
- package/src/webview/plot-utils.ts +0 -250
- package/test-fixtures/all-viz-types.json.gz +0 -0
- package/test-fixtures/plot-demo-data.json.gz +0 -0
- package/tests/detect.test.ts +0 -604
- package/tests/extension.test.ts +0 -2041
- package/tests/node-io.test.ts +0 -39
- package/tests/plot-utils.test.ts +0 -302
- package/tests/vite-plugin-json-gz.test.ts +0 -114
- package/tests/vscode-mock.ts +0 -18
- package/tests/webview.test.ts +0 -231
- package/tsconfig.json +0 -20
- package/vite-plugin-json-gz.ts +0 -29
- package/vite.config.ts +0 -34
- package/vite.extension.config.ts +0 -34
- /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
- /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
- /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
- /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
- /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
- /package/dist/{src/lib/element → element}/data.json +0 -0
- /package/dist/{src/lib/element → element}/data.json.gz +0 -0
- /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
- /package/dist/{src/lib/element → element}/data.schema.json +0 -0
- /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
- /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
- /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
- /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
- /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
- /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
- /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import type { XrdPattern } from './index'
|
|
2
|
-
|
|
3
|
-
const LOG_2 = Math.log(2)
|
|
4
|
-
|
|
5
|
-
// Broadening parameters for simulated XRD pattern.
|
|
6
|
-
// U, V, W are Caglioti parameters.
|
|
7
|
-
// shape_factor (eta) is the Pseudo-Voigt mixing parameter (0 = Gaussian, 1 = Lorentzian).
|
|
8
|
-
export type BroadeningParams = {
|
|
9
|
-
U: number
|
|
10
|
-
V: number
|
|
11
|
-
W: number
|
|
12
|
-
shape_factor: number
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const DEFAULT_BROADENING: BroadeningParams = {
|
|
16
|
-
U: 0.04,
|
|
17
|
-
V: -0.02,
|
|
18
|
-
W: 0.02,
|
|
19
|
-
shape_factor: 0.5, // Mixed Gaussian/Lorentzian
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Calculates the Full Width at Half Maximum (FWHM) at a given theta angle
|
|
23
|
-
// using the Caglioti formula: FWHM^2 = U * tan^2(theta) + V * tan(theta) + W
|
|
24
|
-
export function caglioti_fwhm(
|
|
25
|
-
two_theta: number, // Angle in degrees (2θ)
|
|
26
|
-
U: number, // Caglioti parameter U
|
|
27
|
-
V: number, // Caglioti parameter V
|
|
28
|
-
W: number, // Caglioti parameter W
|
|
29
|
-
): number {
|
|
30
|
-
// FWHM in degrees (2θ)
|
|
31
|
-
const theta_rad = (two_theta / 2) * (Math.PI / 180)
|
|
32
|
-
const tan_theta = Math.tan(theta_rad)
|
|
33
|
-
const fwhm_sq = U * tan_theta ** 2 + V * tan_theta + W
|
|
34
|
-
// Ensure non-negative squared width
|
|
35
|
-
return Math.sqrt(Math.max(1e-9, fwhm_sq))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Normalized Gaussian profile. x: position, x0: peak center, fwhm: Full Width at Half Maximum
|
|
39
|
-
function gaussian(x: number, x0: number, fwhm: number): number {
|
|
40
|
-
// Intensity at x
|
|
41
|
-
const safe_fwhm = Math.max(fwhm, 1e-9)
|
|
42
|
-
const sigma = safe_fwhm / (2 * Math.sqrt(2 * LOG_2))
|
|
43
|
-
const prefactor = 1 / (sigma * Math.sqrt(2 * Math.PI))
|
|
44
|
-
const exponent = -((x - x0) ** 2) / (2 * sigma ** 2)
|
|
45
|
-
return prefactor * Math.exp(exponent)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Normalized Lorentzian profile. x: position, x0: peak center, fwhm: Full Width at Half Maximum
|
|
49
|
-
function lorentzian(x: number, x0: number, fwhm: number): number {
|
|
50
|
-
// Intensity at x
|
|
51
|
-
const safe_fwhm = Math.max(fwhm, 1e-9)
|
|
52
|
-
const gamma = safe_fwhm / 2
|
|
53
|
-
const prefactor = 1 / (Math.PI * gamma)
|
|
54
|
-
const denominator = 1 + ((x - x0) / gamma) ** 2
|
|
55
|
-
return prefactor / denominator
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Pseudo-Voigt profile (linear combination of Gaussian and Lorentzian).
|
|
59
|
-
export function pseudo_voigt(
|
|
60
|
-
x: number, // Position
|
|
61
|
-
x0: number, // Peak center
|
|
62
|
-
fwhm: number, // Full Width at Half Maximum
|
|
63
|
-
eta: number, // Mixing parameter (0 = Gaussian, 1 = Lorentzian)
|
|
64
|
-
): number {
|
|
65
|
-
// Intensity at x
|
|
66
|
-
// Clamp eta to [0, 1]
|
|
67
|
-
const safe_eta = Math.max(0, Math.min(1, eta))
|
|
68
|
-
return safe_eta * lorentzian(x, x0, fwhm) + (1 - safe_eta) * gaussian(x, x0, fwhm)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Computes a broadened XRD pattern from discrete peaks.
|
|
72
|
-
export function compute_broadened_pattern(
|
|
73
|
-
pattern: XrdPattern, // Discrete XRD pattern (peaks)
|
|
74
|
-
params: BroadeningParams, // Broadening parameters (U, V, W, shape_factor)
|
|
75
|
-
range: [number, number], // Angular range [min, max] in degrees
|
|
76
|
-
step_size: number = 0.02, // Step size in degrees (default 0.02)
|
|
77
|
-
): XrdPattern {
|
|
78
|
-
// Continuous broadened pattern
|
|
79
|
-
if (!Number.isFinite(step_size) || step_size <= 0) {
|
|
80
|
-
throw new Error(`step_size must be > 0 and finite`)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const [min_angle, max_angle] = range
|
|
84
|
-
if (!Number.isFinite(min_angle) || !Number.isFinite(max_angle) || max_angle <= min_angle) {
|
|
85
|
-
throw new Error(`range must be finite and max > min`)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const { U, V, W, shape_factor } = params
|
|
89
|
-
|
|
90
|
-
// Create x grid
|
|
91
|
-
const n_steps = Math.ceil((max_angle - min_angle) / step_size)
|
|
92
|
-
const xs = new Float32Array(n_steps)
|
|
93
|
-
const ys = new Float32Array(n_steps)
|
|
94
|
-
|
|
95
|
-
for (let idx = 0; idx < n_steps; idx++) {
|
|
96
|
-
xs[idx] = min_angle + idx * step_size
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const { x: peak_pos, y: peak_int } = pattern
|
|
100
|
-
|
|
101
|
-
// Optimization: Process each peak and add to grid
|
|
102
|
-
for (let peak_idx = 0; peak_idx < peak_pos.length; peak_idx++) {
|
|
103
|
-
const x0 = peak_pos[peak_idx]
|
|
104
|
-
const intensity = peak_int[peak_idx]
|
|
105
|
-
|
|
106
|
-
// Skip negligible peaks
|
|
107
|
-
if (intensity < 1e-5) continue
|
|
108
|
-
// Skip peaks outside range (with some buffer)
|
|
109
|
-
if (x0 < min_angle - 5 || x0 > max_angle + 5) continue
|
|
110
|
-
|
|
111
|
-
const fwhm = caglioti_fwhm(x0, U, V, W)
|
|
112
|
-
|
|
113
|
-
// Define window for calculation (e.g. +/- 10 * FWHM or fixed reasonable range)
|
|
114
|
-
// Lorentzian tails are long, so we need a decent window.
|
|
115
|
-
// 20 * FWHM is usually sufficient for visual purposes.
|
|
116
|
-
const window = 20 * fwhm
|
|
117
|
-
const start_idx = Math.max(0, Math.floor((x0 - window - min_angle) / step_size))
|
|
118
|
-
const end_idx = Math.min(n_steps - 1, Math.ceil((x0 + window - min_angle) / step_size))
|
|
119
|
-
|
|
120
|
-
for (let idx = start_idx; idx <= end_idx; idx++) {
|
|
121
|
-
const x = xs[idx]
|
|
122
|
-
ys[idx] += intensity * pseudo_voigt(x, x0, fwhm, shape_factor)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Convert back to number[]
|
|
127
|
-
// We don't map hkls to continuous profile points usually,
|
|
128
|
-
// or we could try to map them to the nearest peak, but for now leave undefined.
|
|
129
|
-
return { x: Array.from(xs), y: Array.from(ys) }
|
|
130
|
-
}
|
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
import type { CompositionType } from '$lib/composition'
|
|
2
|
-
import type { ElementSymbol } from '$lib/element'
|
|
3
|
-
import { element_data } from '$lib/element'
|
|
4
|
-
import * as math from '$lib/math'
|
|
5
|
-
import type { Crystal } from '$lib/structure/index'
|
|
6
|
-
import { parse_any_structure } from '$lib/structure/parse'
|
|
7
|
-
import { is_crystal } from '$lib/structure/validation'
|
|
8
|
-
// Single source of truth for atomic scattering params
|
|
9
|
-
import ATOMIC_SCATTERING_PARAMS from './atomic_scattering_params.json' with { type: 'json' }
|
|
10
|
-
import type { Hkl, HklObj, PatternEntry, RecipPoint, XrdOptions, XrdPattern } from './index'
|
|
11
|
-
import { is_xrd_data_file, parse_xrd_file } from './parse'
|
|
12
|
-
|
|
13
|
-
// JSON import yields Record<string, number[][]>; type for element-keyed scattering params
|
|
14
|
-
type ScatteringParamsRecord = Partial<
|
|
15
|
-
Record<ElementSymbol, number[][] | { a: number[]; b: number[]; c?: number }>
|
|
16
|
-
>
|
|
17
|
-
|
|
18
|
-
// XRD wavelengths in Angstrom (Å)
|
|
19
|
-
export const WAVELENGTHS = {
|
|
20
|
-
CuKa: 1.54184,
|
|
21
|
-
CuKa2: 1.54439,
|
|
22
|
-
CuKa1: 1.54056,
|
|
23
|
-
CuKb1: 1.39222,
|
|
24
|
-
MoKa: 0.71073,
|
|
25
|
-
MoKa2: 0.71359,
|
|
26
|
-
MoKa1: 0.7093,
|
|
27
|
-
MoKb1: 0.63229,
|
|
28
|
-
CrKa: 2.291,
|
|
29
|
-
CrKa2: 2.29361,
|
|
30
|
-
CrKa1: 2.2897,
|
|
31
|
-
CrKb1: 2.08487,
|
|
32
|
-
FeKa: 1.93735,
|
|
33
|
-
FeKa2: 1.93998,
|
|
34
|
-
FeKa1: 1.93604,
|
|
35
|
-
FeKb1: 1.75661,
|
|
36
|
-
CoKa: 1.79026,
|
|
37
|
-
CoKa2: 1.79285,
|
|
38
|
-
CoKa1: 1.78896,
|
|
39
|
-
CoKb1: 1.63079,
|
|
40
|
-
AgKa: 0.560885,
|
|
41
|
-
AgKa2: 0.563813,
|
|
42
|
-
AgKa1: 0.559421,
|
|
43
|
-
AgKb1: 0.497082,
|
|
44
|
-
} as const
|
|
45
|
-
|
|
46
|
-
export type RadiationKey = keyof typeof WAVELENGTHS
|
|
47
|
-
|
|
48
|
-
// Type guard to safely check if a string is a valid RadiationKey
|
|
49
|
-
const is_radiation_key = (key: string): key is RadiationKey => key in WAVELENGTHS
|
|
50
|
-
|
|
51
|
-
// Tolerances from pymatgen.analysis.diffraction.core
|
|
52
|
-
const TWO_THETA_TOL = 1e-5
|
|
53
|
-
const SCALED_INTENSITY_TOL = 1e-3
|
|
54
|
-
|
|
55
|
-
const ELEMENT_Z = Object.fromEntries(
|
|
56
|
-
element_data.map((entry) => [entry.symbol, entry.number]),
|
|
57
|
-
) as CompositionType
|
|
58
|
-
|
|
59
|
-
function get_unique_families(hkls: Hkl[]): Map<string, number> {
|
|
60
|
-
// Port of pymatgen's get_unique_families: group Miller indices by absolute-value permutations
|
|
61
|
-
const key_map = new Map<string, Hkl[]>()
|
|
62
|
-
for (const hkl of hkls) {
|
|
63
|
-
const abs_sorted = hkl.map((val) => Math.abs(val)).sort((x, y) => x - y)
|
|
64
|
-
const key = abs_sorted.join(`,`)
|
|
65
|
-
const list = key_map.get(key)
|
|
66
|
-
if (list) list.push(hkl)
|
|
67
|
-
else key_map.set(key, [hkl])
|
|
68
|
-
}
|
|
69
|
-
// Choose representative with max tuple (lexicographic) like numpy max(val)
|
|
70
|
-
const family_map = new Map<string, number>()
|
|
71
|
-
for (const group of key_map.values()) {
|
|
72
|
-
let representative: Hkl = group[0]
|
|
73
|
-
for (const candidate of group) {
|
|
74
|
-
const better =
|
|
75
|
-
candidate[0] > representative[0] ||
|
|
76
|
-
(candidate[0] === representative[0] &&
|
|
77
|
-
(candidate[1] > representative[1] ||
|
|
78
|
-
(candidate[1] === representative[1] && candidate[2] > representative[2])))
|
|
79
|
-
if (better) representative = candidate
|
|
80
|
-
}
|
|
81
|
-
family_map.set(representative.join(`,`), group.length)
|
|
82
|
-
}
|
|
83
|
-
return family_map
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function compute_reciprocal_lattice_rows(structure: Crystal): number[][] {
|
|
87
|
-
// For row-wise lattice matrix A (rows are a, b, c), reciprocal rows are inv(A)^T
|
|
88
|
-
const direct = structure.lattice.matrix
|
|
89
|
-
const inv = math.matrix_inverse_3x3(direct)
|
|
90
|
-
const recip = math.transpose_3x3_matrix(inv)
|
|
91
|
-
return recip
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function enumerate_reciprocal_points(
|
|
95
|
-
recip_rows: number[][],
|
|
96
|
-
max_radius: number,
|
|
97
|
-
min_radius: number,
|
|
98
|
-
): RecipPoint[] {
|
|
99
|
-
const recip_b1 = recip_rows[0]
|
|
100
|
-
const recip_b2 = recip_rows[1]
|
|
101
|
-
const recip_b3 = recip_rows[2]
|
|
102
|
-
const n1 = Math.max(Math.hypot(...recip_b1), 1e-12)
|
|
103
|
-
const n2 = Math.max(Math.hypot(...recip_b2), 1e-12)
|
|
104
|
-
const n3 = Math.max(Math.hypot(...recip_b3), 1e-12)
|
|
105
|
-
const h_max = Math.ceil(max_radius / n1 + 2)
|
|
106
|
-
const k_max = Math.ceil(max_radius / n2 + 2)
|
|
107
|
-
const l_max = Math.ceil(max_radius / n3 + 2)
|
|
108
|
-
// Safety cap to avoid pathological enumeration volume
|
|
109
|
-
const CAP = 512
|
|
110
|
-
if (Math.max(h_max, k_max, l_max) > CAP) {
|
|
111
|
-
throw new Error(`enumerate_reciprocal_points: max(h,k,l) exceeds cap ${CAP}`)
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const points: RecipPoint[] = []
|
|
115
|
-
for (let h_idx = -h_max; h_idx <= h_max; h_idx++) {
|
|
116
|
-
for (let k_idx = -k_max; k_idx <= k_max; k_idx++) {
|
|
117
|
-
for (let l_idx = -l_max; l_idx <= l_max; l_idx++) {
|
|
118
|
-
if (h_idx === 0 && k_idx === 0 && l_idx === 0) continue
|
|
119
|
-
const h_mul_b1 = math.scale(recip_b1, h_idx)
|
|
120
|
-
const k_mul_b2 = math.scale(recip_b2, k_idx)
|
|
121
|
-
const l_mul_b3 = math.scale(recip_b3, l_idx)
|
|
122
|
-
const g_vec = math.add(h_mul_b1, k_mul_b2, l_mul_b3)
|
|
123
|
-
const g_norm = Math.hypot(...g_vec)
|
|
124
|
-
if (g_norm < min_radius || g_norm > max_radius) continue
|
|
125
|
-
points.push({ hkl: [h_idx, k_idx, l_idx], g_norm })
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// Sort by (g_norm asc, -h, -k, -l) to mimic pymatgen ordering
|
|
130
|
-
points.sort((p1, p2) =>
|
|
131
|
-
p1.g_norm !== p2.g_norm
|
|
132
|
-
? p1.g_norm - p2.g_norm
|
|
133
|
-
: p2.hkl[0] !== p1.hkl[0]
|
|
134
|
-
? p2.hkl[0] - p1.hkl[0]
|
|
135
|
-
: p2.hkl[1] !== p1.hkl[1]
|
|
136
|
-
? p2.hkl[1] - p1.hkl[1]
|
|
137
|
-
: p2.hkl[2] - p1.hkl[2],
|
|
138
|
-
)
|
|
139
|
-
return points
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export function compute_xrd_pattern(structure: Crystal, options: XrdOptions = {}): XrdPattern {
|
|
143
|
-
const wl_input = options.wavelength ?? `CuKa`
|
|
144
|
-
let wavelength: number
|
|
145
|
-
if (typeof wl_input === `number`) {
|
|
146
|
-
if (!Number.isFinite(wl_input) || wl_input <= 0) {
|
|
147
|
-
throw new Error(`Invalid wavelength: ${wl_input}. Must be a finite positive number.`)
|
|
148
|
-
}
|
|
149
|
-
wavelength = wl_input
|
|
150
|
-
} else {
|
|
151
|
-
if (!is_radiation_key(wl_input)) {
|
|
152
|
-
throw new Error(`Unknown radiation key: ${wl_input}`)
|
|
153
|
-
}
|
|
154
|
-
wavelength = WAVELENGTHS[wl_input]
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Symmetry refinement (symprec > 0) is not implemented in TS version.
|
|
158
|
-
// Option retained for API parity.
|
|
159
|
-
// const symprec = options.symprec ?? 0
|
|
160
|
-
|
|
161
|
-
const recip_rows = compute_reciprocal_lattice_rows(structure)
|
|
162
|
-
|
|
163
|
-
// Bragg condition bounds: reciprocal vector length r = 2 sin(theta) / lambda
|
|
164
|
-
const two_theta_range =
|
|
165
|
-
options.two_theta_range === null ? null : (options.two_theta_range ?? [0, 180])
|
|
166
|
-
const [min_radius, max_radius] =
|
|
167
|
-
two_theta_range === null
|
|
168
|
-
? [0, 2 / wavelength]
|
|
169
|
-
: (([t_min, t_max]: [number, number]) => {
|
|
170
|
-
const r_min = (2 * Math.sin((t_min / 2) * (Math.PI / 180))) / wavelength
|
|
171
|
-
const r_max = (2 * Math.sin((t_max / 2) * (Math.PI / 180))) / wavelength
|
|
172
|
-
return [r_min, r_max]
|
|
173
|
-
})(two_theta_range)
|
|
174
|
-
|
|
175
|
-
const recip_points = enumerate_reciprocal_points(recip_rows, max_radius, min_radius)
|
|
176
|
-
|
|
177
|
-
// Flatten species with occupancies; gather coeffs, frac coords, occu, DW factors.
|
|
178
|
-
type ScatteringCoeffs = { a: number[]; b: number[]; c?: number }
|
|
179
|
-
const coeffs: ScatteringCoeffs[] = []
|
|
180
|
-
const frac_coords: math.Vec3[] = []
|
|
181
|
-
const occus: number[] = []
|
|
182
|
-
const dw_factors: number[] = []
|
|
183
|
-
|
|
184
|
-
const debye_waller_factors = options.debye_waller_factors ?? {}
|
|
185
|
-
|
|
186
|
-
for (const site of structure.sites) {
|
|
187
|
-
for (const species of site.species) {
|
|
188
|
-
const element_symbol = species.element
|
|
189
|
-
if (ELEMENT_Z[element_symbol] === undefined) {
|
|
190
|
-
throw new Error(`Unknown atomic number for element ${element_symbol}`)
|
|
191
|
-
}
|
|
192
|
-
const raw_coeff = (ATOMIC_SCATTERING_PARAMS as ScatteringParamsRecord)[element_symbol]
|
|
193
|
-
if (!raw_coeff) {
|
|
194
|
-
throw new Error(
|
|
195
|
-
`No atomic scattering coefficients for ${element_symbol}. Extend ATOMIC_SCATTERING_PARAMS.`,
|
|
196
|
-
)
|
|
197
|
-
}
|
|
198
|
-
let coeff_entry: ScatteringCoeffs
|
|
199
|
-
if (Array.isArray(raw_coeff)) {
|
|
200
|
-
const a_arr = raw_coeff.map(([a]) => a)
|
|
201
|
-
const b_arr = raw_coeff.map(([_, b]) => b)
|
|
202
|
-
coeff_entry = { a: a_arr, b: b_arr }
|
|
203
|
-
} else {
|
|
204
|
-
coeff_entry = { a: raw_coeff.a.slice(), b: raw_coeff.b.slice(), c: raw_coeff.c }
|
|
205
|
-
}
|
|
206
|
-
coeffs.push(coeff_entry)
|
|
207
|
-
frac_coords.push(site.abc)
|
|
208
|
-
occus.push(species.occu)
|
|
209
|
-
dw_factors.push(debye_waller_factors[element_symbol] ?? 0)
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// Accumulate peaks by merging two_thetas within tolerance
|
|
214
|
-
const peaks = new Map<number, { intensity: number; hkls: Hkl[]; d_hkl: number }>()
|
|
215
|
-
const two_thetas: number[] = []
|
|
216
|
-
const merge_tol = options.peak_merge_tol ?? TWO_THETA_TOL
|
|
217
|
-
const scaled_tol = options.scaled_intensity_tol ?? SCALED_INTENSITY_TOL
|
|
218
|
-
|
|
219
|
-
for (const entry of recip_points) {
|
|
220
|
-
const hkl = entry.hkl
|
|
221
|
-
const g_norm = entry.g_norm
|
|
222
|
-
if (g_norm === 0) continue
|
|
223
|
-
|
|
224
|
-
const asin_arg = (wavelength * g_norm) / 2
|
|
225
|
-
// asin domain can exceed 1 by FP error — clamp to avoid NaN
|
|
226
|
-
const clamped_asin_arg = Math.min(1, Math.max(-1, asin_arg))
|
|
227
|
-
const theta = Math.asin(clamped_asin_arg)
|
|
228
|
-
const sin_theta_over_lambda = g_norm / 2
|
|
229
|
-
const sin_theta_over_lambda_sq = sin_theta_over_lambda * sin_theta_over_lambda
|
|
230
|
-
|
|
231
|
-
// g.r for all fractional coords
|
|
232
|
-
const g_dot_r_all = frac_coords.map((frac_coord) => math.dot(frac_coord, hkl))
|
|
233
|
-
|
|
234
|
-
// Atomic scattering factors (vectorized style)
|
|
235
|
-
const f_scattering: number[] = coeffs.map((coeff_entry) => {
|
|
236
|
-
const { a: a_arr, b: b_arr } = coeff_entry
|
|
237
|
-
const num_terms = Math.min(a_arr.length, b_arr.length)
|
|
238
|
-
const sum_terms = a_arr
|
|
239
|
-
.slice(0, num_terms)
|
|
240
|
-
.reduce(
|
|
241
|
-
(sum, a_i, term_idx) =>
|
|
242
|
-
sum + a_i * Math.exp(-b_arr[term_idx] * sin_theta_over_lambda_sq),
|
|
243
|
-
0,
|
|
244
|
-
)
|
|
245
|
-
return sum_terms + (coeff_entry.c ?? 0)
|
|
246
|
-
})
|
|
247
|
-
|
|
248
|
-
const dw_corr: number[] = dw_factors.map((dw_b) =>
|
|
249
|
-
Math.exp(-dw_b * sin_theta_over_lambda_sq),
|
|
250
|
-
)
|
|
251
|
-
|
|
252
|
-
// Structure factor sum: sum(fs * occu * exp(2πi g·r) * DW)
|
|
253
|
-
const { real: f_real, imag: f_imag } = f_scattering.reduce(
|
|
254
|
-
(acc, fs, idx) => {
|
|
255
|
-
const phase = 2 * Math.PI * g_dot_r_all[idx]
|
|
256
|
-
const weight = fs * occus[idx] * dw_corr[idx]
|
|
257
|
-
const real = acc.real + weight * Math.cos(phase)
|
|
258
|
-
const imag = acc.imag + weight * Math.sin(phase)
|
|
259
|
-
return { real, imag }
|
|
260
|
-
},
|
|
261
|
-
{ real: 0, imag: 0 },
|
|
262
|
-
)
|
|
263
|
-
|
|
264
|
-
const sin_theta = Math.sin(theta)
|
|
265
|
-
const cos_theta = Math.cos(theta)
|
|
266
|
-
const denom_raw = sin_theta * sin_theta * Math.abs(cos_theta)
|
|
267
|
-
// Clamp denominator away from zero to avoid Inf/NaN when 2θ → 180° (cosθ → 0)
|
|
268
|
-
const denom = Math.max(denom_raw, 1e-12)
|
|
269
|
-
const lorentz = (1 + Math.cos(2 * theta) ** 2) / denom
|
|
270
|
-
const intensity_hkl = (f_real * f_real + f_imag * f_imag) * lorentz
|
|
271
|
-
const two_theta = math.to_degrees(2 * theta)
|
|
272
|
-
|
|
273
|
-
// Use (h, k, l) always. For hexagonal systems, pymatgen presents Miller–Bravais (h, k, i, l),
|
|
274
|
-
// but downstream components expect 3-index HKL. Keep 3-index form to match types/consumers.
|
|
275
|
-
const hkl_to_store: Hkl = [hkl[0], hkl[1], hkl[2]]
|
|
276
|
-
|
|
277
|
-
// Merge peaks within tolerance
|
|
278
|
-
let found_index: number | null = null
|
|
279
|
-
for (let idx = 0; idx < two_thetas.length; idx++) {
|
|
280
|
-
if (Math.abs(two_thetas[idx] - two_theta) < merge_tol) {
|
|
281
|
-
found_index = idx
|
|
282
|
-
break
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
if (found_index !== null) {
|
|
287
|
-
const key = two_thetas[found_index]
|
|
288
|
-
const item = peaks.get(key)
|
|
289
|
-
if (item) {
|
|
290
|
-
item.intensity += intensity_hkl
|
|
291
|
-
item.hkls.push(hkl_to_store)
|
|
292
|
-
}
|
|
293
|
-
} else {
|
|
294
|
-
const d_hkl = 1 / g_norm
|
|
295
|
-
peaks.set(two_theta, { intensity: intensity_hkl, hkls: [hkl_to_store], d_hkl })
|
|
296
|
-
two_thetas.push(two_theta)
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
if (peaks.size === 0) return { x: [], y: [] }
|
|
301
|
-
|
|
302
|
-
// Scale intensities so that the max intensity is 100, and filter by scaled tol
|
|
303
|
-
const max_intensity = Math.max(...Array.from(peaks.values()).map((peak) => peak.intensity))
|
|
304
|
-
|
|
305
|
-
const xs: number[] = []
|
|
306
|
-
const ys: number[] = []
|
|
307
|
-
const hkls_out: HklObj[][] = []
|
|
308
|
-
const d_out: number[] = []
|
|
309
|
-
|
|
310
|
-
const sorted_two_thetas = Array.from(peaks.keys()).sort((a, b) => a - b)
|
|
311
|
-
for (const angle of sorted_two_thetas) {
|
|
312
|
-
const item = peaks.get(angle)
|
|
313
|
-
if (!item) continue
|
|
314
|
-
const scaled_val = (item.intensity / max_intensity) * 100
|
|
315
|
-
if (scaled_val > scaled_tol) {
|
|
316
|
-
xs.push(angle)
|
|
317
|
-
ys.push(item.intensity)
|
|
318
|
-
const fam = get_unique_families(item.hkls)
|
|
319
|
-
const fam_array: HklObj[] = []
|
|
320
|
-
for (const [repr_key, multiplicity] of fam.entries()) {
|
|
321
|
-
const repr = repr_key.split(`,`).map((num_str) => parseInt(num_str, 10)) as Hkl
|
|
322
|
-
fam_array.push({ hkl: repr, multiplicity })
|
|
323
|
-
}
|
|
324
|
-
hkls_out.push(fam_array)
|
|
325
|
-
d_out.push(item.d_hkl)
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// Final scaling if requested
|
|
330
|
-
if (options.scaled ?? true) {
|
|
331
|
-
const max_y = Math.max(1, ...ys)
|
|
332
|
-
for (let idx = 0; idx < ys.length; idx++) ys[idx] = (ys[idx] / max_y) * 100
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
return { x: xs, y: ys, hkls: hkls_out, d_hkls: d_out }
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
// Process dropped file content and return an XRD pattern.
|
|
339
|
-
// Supports both direct XRD data files (.xy, .brml) and structure files
|
|
340
|
-
// (which are used to compute theoretical XRD patterns).
|
|
341
|
-
export async function add_xrd_pattern(
|
|
342
|
-
content: string | ArrayBufferLike, // File content as string or ArrayBuffer
|
|
343
|
-
filename: string, // Name of the file (used to detect format)
|
|
344
|
-
wavelength: number | null, // X-ray wavelength for structure-based XRD calculation
|
|
345
|
-
): Promise<{ pattern?: PatternEntry; error?: string }> {
|
|
346
|
-
// Object with pattern entry or error message
|
|
347
|
-
try {
|
|
348
|
-
// Check if file is a direct XRD data file (.xy, .brml)
|
|
349
|
-
if (is_xrd_data_file(filename)) {
|
|
350
|
-
// Convert ArrayBufferLike to ArrayBuffer if needed (handles SharedArrayBuffer)
|
|
351
|
-
let buffer_content: string | ArrayBuffer
|
|
352
|
-
if (typeof content === `string`) {
|
|
353
|
-
buffer_content = content
|
|
354
|
-
} else {
|
|
355
|
-
buffer_content =
|
|
356
|
-
content instanceof ArrayBuffer ? content : new Uint8Array(content).slice().buffer
|
|
357
|
-
}
|
|
358
|
-
const pattern = await parse_xrd_file(buffer_content, filename)
|
|
359
|
-
if (pattern && pattern.x.length > 0) {
|
|
360
|
-
return { pattern: { label: filename || `XRD data`, pattern } }
|
|
361
|
-
}
|
|
362
|
-
// Get base extension (strip .gz if present) for error message
|
|
363
|
-
const base_name = filename.toLowerCase().replace(/\.gz$/, ``)
|
|
364
|
-
const ext = base_name.split(`.`).pop()?.toUpperCase() || `XRD`
|
|
365
|
-
const format_hints: Record<string, string> = {
|
|
366
|
-
XY: `Expected 2-column format: "2theta intensity" (space/tab/comma separated)`,
|
|
367
|
-
XYE: `Expected 3-column format: "2theta intensity error" (space/tab/comma separated)`,
|
|
368
|
-
BRML: `Expected Bruker RAW/BRML ZIP archive with RawData XML`,
|
|
369
|
-
XRDML: `Expected PANalytical XRDML format with dataPoints section`,
|
|
370
|
-
}
|
|
371
|
-
const hint = format_hints[ext] || `Check file format and encoding`
|
|
372
|
-
return { error: `Failed to parse ${ext} file: no valid data found. ${hint}` }
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
// Otherwise, try to parse as a structure file and compute XRD pattern
|
|
376
|
-
const text_content =
|
|
377
|
-
typeof content === `string` ? content : new TextDecoder().decode(content as BufferSource)
|
|
378
|
-
const parsed_structure = parse_any_structure(text_content, filename)
|
|
379
|
-
if (is_crystal(parsed_structure)) {
|
|
380
|
-
const pattern = compute_xrd_pattern(parsed_structure, {
|
|
381
|
-
wavelength: typeof wavelength === `number` ? wavelength : undefined,
|
|
382
|
-
})
|
|
383
|
-
return { pattern: { label: filename || `Dropped structure`, pattern } }
|
|
384
|
-
}
|
|
385
|
-
return {
|
|
386
|
-
error:
|
|
387
|
-
`Cannot compute XRD: structure must have a lattice and atomic sites. ` +
|
|
388
|
-
`Supported formats: CIF, POSCAR, JSON, XYZ`,
|
|
389
|
-
}
|
|
390
|
-
} catch (exc) {
|
|
391
|
-
return {
|
|
392
|
-
error: `Failed to compute XRD pattern: ${exc instanceof Error ? exc.message : String(exc)}`,
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
export const AVAILABLE_RADIATION = Object.keys(WAVELENGTHS) as RadiationKey[]
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { CompositionType } from '$lib/composition'
|
|
2
|
-
import type { Vec3 } from '$lib/math'
|
|
3
|
-
import type { RadiationKey } from './calc-xrd'
|
|
4
|
-
export * from './broadening'
|
|
5
|
-
export * from './calc-xrd'
|
|
6
|
-
export * from './parse'
|
|
7
|
-
export { default as XrdPlot } from './XrdPlot.svelte'
|
|
8
|
-
|
|
9
|
-
export type Hkl = Vec3
|
|
10
|
-
export type HklObj = { hkl: Hkl; multiplicity?: number }
|
|
11
|
-
export type RecipPoint = { hkl: Hkl; g_norm: number }
|
|
12
|
-
export type HklFormat = `compact` | `full` | null
|
|
13
|
-
|
|
14
|
-
export type XrdPattern = {
|
|
15
|
-
x: number[]
|
|
16
|
-
y: number[]
|
|
17
|
-
hkls?: HklObj[][]
|
|
18
|
-
d_hkls?: number[]
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export type XrdOptions = {
|
|
22
|
-
wavelength?: number | RadiationKey
|
|
23
|
-
symprec?: number
|
|
24
|
-
debye_waller_factors?: CompositionType
|
|
25
|
-
scaled?: boolean
|
|
26
|
-
// When null, treat as unbounded up to 2/λ (Bragg maximum); when omitted, default [0, 180]
|
|
27
|
-
two_theta_range?: [number, number] | null
|
|
28
|
-
// Merge tolerance for peaks in degrees (default = TWO_THETA_TOL)
|
|
29
|
-
peak_merge_tol?: number
|
|
30
|
-
// Scaled intensity threshold (% of max) to include a peak (default = SCALED_INTENSITY_TOL)
|
|
31
|
-
scaled_intensity_tol?: number
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface PatternEntry {
|
|
35
|
-
label: string
|
|
36
|
-
pattern: XrdPattern
|
|
37
|
-
color?: string
|
|
38
|
-
}
|