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
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const MAX_TRIANGLES_FOR_TILING = 50000;
|
|
2
|
+
export declare const HOVER_THROTTLE_MS = 16;
|
|
3
|
+
export declare const CLOSED_CONTOUR_TOLERANCE = 0.000001;
|
|
4
|
+
export declare const IRREDUCIBLE_BZ_TOLERANCE = 0.01;
|
|
5
|
+
export declare const IRREDUCIBLE_BZ_MIN_VERTICES = 10;
|
|
6
|
+
export declare const SPANNING_THRESHOLD = 0.8;
|
|
7
|
+
export declare const BOHR_TO_ANGSTROM = 0.529177;
|
|
8
|
+
export declare const HARTREE_TO_EV = 27.2114;
|
|
9
|
+
export declare const BAND_COLORS: readonly ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999", "#66c2a5"];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Constants and thresholds for Fermi surface computation
|
|
2
|
+
// Maximum triangles for BZ symmetry tiling (48x for Oh symmetry)
|
|
3
|
+
// Above this, tiling is auto-disabled for performance
|
|
4
|
+
export const MAX_TRIANGLES_FOR_TILING = 50_000;
|
|
5
|
+
// Throttle interval (ms) for pointer move events during hover
|
|
6
|
+
// Prevents expensive nearest-vertex O(n) lookups from causing UI jank
|
|
7
|
+
export const HOVER_THROTTLE_MS = 16; // ~60fps
|
|
8
|
+
// Numerical tolerances
|
|
9
|
+
export const CLOSED_CONTOUR_TOLERANCE = 1e-6; // Distance threshold for detecting closed contours
|
|
10
|
+
export const IRREDUCIBLE_BZ_TOLERANCE = 0.01; // Threshold for detecting irreducible BZ (vertices in positive octant)
|
|
11
|
+
export const IRREDUCIBLE_BZ_MIN_VERTICES = 10; // Minimum significant vertex count for irreducible BZ detection
|
|
12
|
+
export const SPANNING_THRESHOLD = 0.8; // Fraction of BZ extent a surface must cover to be considered "spanning" that direction
|
|
13
|
+
export const BOHR_TO_ANGSTROM = 0.529177; // 1 Bohr = 0.529177 Angstrom
|
|
14
|
+
export const HARTREE_TO_EV = 27.2114; // 1 Hartree = 27.2114 eV
|
|
15
|
+
// Band colors (ColorBrewer Set1 palette for categorical data)
|
|
16
|
+
export const BAND_COLORS = [
|
|
17
|
+
`#e41a1c`, // red
|
|
18
|
+
`#377eb8`, // blue
|
|
19
|
+
`#4daf4a`, // green
|
|
20
|
+
`#984ea3`, // purple
|
|
21
|
+
`#ff7f00`, // orange
|
|
22
|
+
`#ffff33`, // yellow
|
|
23
|
+
`#a65628`, // brown
|
|
24
|
+
`#f781bf`, // pink
|
|
25
|
+
`#999999`, // gray
|
|
26
|
+
`#66c2a5`, // teal
|
|
27
|
+
];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Scene } from 'three';
|
|
2
|
+
export declare function export_to_stl(scene: Scene, filename: string): Promise<void>;
|
|
3
|
+
export declare function export_to_obj(scene: Scene, filename: string): Promise<void>;
|
|
4
|
+
export declare function export_to_gltf(scene: Scene, filename: string): Promise<void>;
|
|
5
|
+
export declare function export_scene(scene: Scene, format: `stl` | `obj` | `gltf`, filename: string): Promise<void>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { to_error } from '../utils';
|
|
2
|
+
// Helper to trigger file download
|
|
3
|
+
function download_file(content, filename, mime_type) {
|
|
4
|
+
const blob = new Blob([content], { type: mime_type });
|
|
5
|
+
const url = URL.createObjectURL(blob);
|
|
6
|
+
const link = document.createElement(`a`);
|
|
7
|
+
link.href = url;
|
|
8
|
+
link.download = filename;
|
|
9
|
+
document.body.append(link);
|
|
10
|
+
link.click();
|
|
11
|
+
document.body.removeChild(link);
|
|
12
|
+
URL.revokeObjectURL(url);
|
|
13
|
+
}
|
|
14
|
+
// Export scene to STL format (good for 3D printing)
|
|
15
|
+
export async function export_to_stl(scene, filename) {
|
|
16
|
+
const { STLExporter } = await import(`three/addons/exporters/STLExporter.js`);
|
|
17
|
+
const exporter = new STLExporter();
|
|
18
|
+
const result = exporter.parse(scene, { binary: true });
|
|
19
|
+
// Binary STL returns DataView, convert to ArrayBuffer for Blob
|
|
20
|
+
const buffer = result instanceof DataView ? result.buffer : result;
|
|
21
|
+
download_file(buffer, `${filename}.stl`, `application/octet-stream`);
|
|
22
|
+
}
|
|
23
|
+
// Export scene to OBJ format (widely compatible)
|
|
24
|
+
export async function export_to_obj(scene, filename) {
|
|
25
|
+
const { OBJExporter } = await import(`three/addons/exporters/OBJExporter.js`);
|
|
26
|
+
const exporter = new OBJExporter();
|
|
27
|
+
const result = exporter.parse(scene);
|
|
28
|
+
download_file(result, `${filename}.obj`, `text/plain`);
|
|
29
|
+
}
|
|
30
|
+
// Export scene to GLTF format (modern web/AR standard)
|
|
31
|
+
export async function export_to_gltf(scene, filename) {
|
|
32
|
+
const { GLTFExporter } = await import(`three/addons/exporters/GLTFExporter.js`);
|
|
33
|
+
const exporter = new GLTFExporter();
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
exporter.parse(scene, (gltf) => {
|
|
36
|
+
const output = JSON.stringify(gltf, null, 2);
|
|
37
|
+
download_file(output, `${filename}.gltf`, `application/json`);
|
|
38
|
+
resolve();
|
|
39
|
+
}, (error) => reject(to_error(error)), { binary: false });
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// Main export function that dispatches to the appropriate format
|
|
43
|
+
export function export_scene(scene, format, filename) {
|
|
44
|
+
if (format === `stl`)
|
|
45
|
+
return export_to_stl(scene, filename);
|
|
46
|
+
if (format === `obj`)
|
|
47
|
+
return export_to_obj(scene, filename);
|
|
48
|
+
if (format === `gltf`)
|
|
49
|
+
return export_to_gltf(scene, filename);
|
|
50
|
+
return Promise.reject(new Error(`Unsupported export format: ${format}`));
|
|
51
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default as FermiSlice } from './FermiSlice.svelte';
|
|
2
|
+
export { default as FermiSurface } from './FermiSurface.svelte';
|
|
3
|
+
export { default as FermiSurfaceControls } from './FermiSurfaceControls.svelte';
|
|
4
|
+
export { default as FermiSurfaceScene } from './FermiSurfaceScene.svelte';
|
|
5
|
+
export { default as FermiSurfaceTooltip } from './FermiSurfaceTooltip.svelte';
|
|
6
|
+
export * from './compute';
|
|
7
|
+
export * from './constants';
|
|
8
|
+
export * from './export';
|
|
9
|
+
export * from './marching-cubes';
|
|
10
|
+
export * from './parse';
|
|
11
|
+
export * from './symmetry';
|
|
12
|
+
export * from './types';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Fermi surface visualization module
|
|
2
|
+
export { default as FermiSlice } from './FermiSlice.svelte';
|
|
3
|
+
export { default as FermiSurface } from './FermiSurface.svelte';
|
|
4
|
+
export { default as FermiSurfaceControls } from './FermiSurfaceControls.svelte';
|
|
5
|
+
export { default as FermiSurfaceScene } from './FermiSurfaceScene.svelte';
|
|
6
|
+
export { default as FermiSurfaceTooltip } from './FermiSurfaceTooltip.svelte';
|
|
7
|
+
export * from './compute';
|
|
8
|
+
export * from './constants';
|
|
9
|
+
export * from './export';
|
|
10
|
+
export * from './marching-cubes';
|
|
11
|
+
export * from './parse';
|
|
12
|
+
export * from './symmetry';
|
|
13
|
+
export * from './types';
|
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import * as constants from './constants';
|
|
2
|
+
import { compute_vertex_normals } from './marching-cubes';
|
|
3
|
+
const parse_number_tokens = (line) => line.split(/\s+/).filter(Boolean);
|
|
4
|
+
// Parse whitespace-separated floats from a line (optimized with unary +)
|
|
5
|
+
const parse_floats = (line) => parse_number_tokens(line).map(Number);
|
|
6
|
+
// Parse whitespace-separated integers from a line
|
|
7
|
+
const parse_ints = (line) => parse_number_tokens(line).map((part) => parseInt(part, 10));
|
|
8
|
+
// Parse BXSF (Band-XSF) format used by XCrySDen, Quantum ESPRESSO, etc.
|
|
9
|
+
// Format specification: http://www.xcrysden.org/doc/XSF.html
|
|
10
|
+
function parse_bxsf(content) {
|
|
11
|
+
const lines = content.split(/\r?\n/).map((line) => line.trim());
|
|
12
|
+
let line_idx = 0;
|
|
13
|
+
// Helper to get next non-empty, non-comment line
|
|
14
|
+
const next_line = () => {
|
|
15
|
+
while (line_idx < lines.length) {
|
|
16
|
+
const line = lines[line_idx++];
|
|
17
|
+
if (line && !line.startsWith(`#`))
|
|
18
|
+
return line;
|
|
19
|
+
}
|
|
20
|
+
throw new Error(`Unexpected end of BXSF file`);
|
|
21
|
+
};
|
|
22
|
+
// Find BEGIN_BLOCK_BANDGRID_3D
|
|
23
|
+
while (line_idx < lines.length) {
|
|
24
|
+
if (lines[line_idx].includes(`BEGIN_BLOCK_BANDGRID_3D`)) {
|
|
25
|
+
line_idx++;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
line_idx++;
|
|
29
|
+
}
|
|
30
|
+
if (line_idx >= lines.length) {
|
|
31
|
+
throw new Error(`BXSF file missing BEGIN_BLOCK_BANDGRID_3D`);
|
|
32
|
+
}
|
|
33
|
+
// Skip block identifier line (e.g. "band_energies")
|
|
34
|
+
next_line();
|
|
35
|
+
// Parse BEGIN_BANDGRID_3D or BANDGRID_3D_BANDS (both variants exist)
|
|
36
|
+
const bandgrid_line = next_line();
|
|
37
|
+
if (!bandgrid_line.includes(`BANDGRID_3D`)) {
|
|
38
|
+
throw new Error(`Expected BANDGRID_3D header, got: ${bandgrid_line}`);
|
|
39
|
+
}
|
|
40
|
+
// Parse number of bands
|
|
41
|
+
const n_bands = parseInt(next_line(), 10);
|
|
42
|
+
if (isNaN(n_bands) || n_bands <= 0) {
|
|
43
|
+
throw new Error(`Invalid number of bands in BXSF file`);
|
|
44
|
+
}
|
|
45
|
+
// Parse grid dimensions (nx ny nz)
|
|
46
|
+
const grid_dims = parse_ints(next_line());
|
|
47
|
+
if (grid_dims.length !== 3) {
|
|
48
|
+
throw new Error(`Expected 3 grid dimensions, got ${grid_dims.length}`);
|
|
49
|
+
}
|
|
50
|
+
const k_grid = [grid_dims[0], grid_dims[1], grid_dims[2]];
|
|
51
|
+
// Parse origin
|
|
52
|
+
const origin_vals = parse_floats(next_line());
|
|
53
|
+
if (origin_vals.length !== 3) {
|
|
54
|
+
throw new Error(`Expected 3 origin values, got ${origin_vals.length}`);
|
|
55
|
+
}
|
|
56
|
+
const origin = [origin_vals[0], origin_vals[1], origin_vals[2]];
|
|
57
|
+
// Parse 3 spanning vectors (reciprocal lattice)
|
|
58
|
+
const spanning_vectors = [
|
|
59
|
+
parse_floats(next_line()).slice(0, 3),
|
|
60
|
+
parse_floats(next_line()).slice(0, 3),
|
|
61
|
+
parse_floats(next_line()).slice(0, 3),
|
|
62
|
+
];
|
|
63
|
+
// Validate spanning vectors
|
|
64
|
+
for (const vec of spanning_vectors) {
|
|
65
|
+
if (vec.length !== 3 || vec.some(isNaN)) {
|
|
66
|
+
throw new Error(`Invalid spanning vector in BXSF file`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Parse band data
|
|
70
|
+
// Format: BAND: band_number followed by energy values on grid
|
|
71
|
+
const energies = [[]]; // [spin=1][band][kx][ky][kz]
|
|
72
|
+
const [nx, ny, nz] = k_grid;
|
|
73
|
+
const total_points = nx * ny * nz;
|
|
74
|
+
for (let band_idx = 0; band_idx < n_bands; band_idx++) {
|
|
75
|
+
// Find BAND: line
|
|
76
|
+
let band_line = next_line();
|
|
77
|
+
while (!band_line.startsWith(`BAND:`)) {
|
|
78
|
+
band_line = next_line();
|
|
79
|
+
}
|
|
80
|
+
// Read energy values for this band
|
|
81
|
+
const energy_values = [];
|
|
82
|
+
while (energy_values.length < total_points) {
|
|
83
|
+
const line = next_line();
|
|
84
|
+
if (line.startsWith(`END_BANDGRID`) || line.startsWith(`BAND:`)) {
|
|
85
|
+
// Unread this line: after next_line() returns, line_idx points past the
|
|
86
|
+
// returned line, so decrementing by 1 restores to the line just read
|
|
87
|
+
line_idx--;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
energy_values.push(...parse_floats(line));
|
|
91
|
+
}
|
|
92
|
+
if (energy_values.length < total_points) {
|
|
93
|
+
throw new Error(`Band ${band_idx}: expected ${total_points} values, got ${energy_values.length}`);
|
|
94
|
+
}
|
|
95
|
+
// Reshape into 3D grid [kx][ky][kz] (preallocated for speed)
|
|
96
|
+
const band_grid = Array(nx);
|
|
97
|
+
let val_idx = 0;
|
|
98
|
+
for (let ix = 0; ix < nx; ix++) {
|
|
99
|
+
const iy_arr = Array(ny);
|
|
100
|
+
for (let iy = 0; iy < ny; iy++) {
|
|
101
|
+
const iz_arr = energy_values.slice(val_idx, val_idx + nz);
|
|
102
|
+
val_idx += nz;
|
|
103
|
+
iy_arr[iy] = iz_arr;
|
|
104
|
+
}
|
|
105
|
+
band_grid[ix] = iy_arr;
|
|
106
|
+
}
|
|
107
|
+
energies[0].push(band_grid);
|
|
108
|
+
}
|
|
109
|
+
// Try to find Fermi energy (often in a comment or as FERMI_ENERGY keyword)
|
|
110
|
+
let fermi_energy = 0;
|
|
111
|
+
for (const line of lines) {
|
|
112
|
+
const lower = line.toLowerCase();
|
|
113
|
+
if (lower.includes(`fermi`) && lower.includes(`energy`)) {
|
|
114
|
+
// Match patterns like "Fermi Energy = 5.123" or "fermi_energy: -0.5"
|
|
115
|
+
const match = /(?:=|:)\s*([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/i.exec(line);
|
|
116
|
+
if (match) {
|
|
117
|
+
fermi_energy = parseFloat(match[1]);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
energies,
|
|
124
|
+
k_grid,
|
|
125
|
+
k_lattice: spanning_vectors,
|
|
126
|
+
fermi_energy,
|
|
127
|
+
n_bands,
|
|
128
|
+
n_spins: 1,
|
|
129
|
+
origin,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// Parse FRMSF format used by FermiSurfer
|
|
133
|
+
// Format: https://mitsuaki1987.github.io/fermisurfer/en/_build/html/ops.html
|
|
134
|
+
function parse_frmsf(content) {
|
|
135
|
+
const lines = content
|
|
136
|
+
.split(/\r?\n/)
|
|
137
|
+
.map((line) => line.trim())
|
|
138
|
+
.filter(Boolean);
|
|
139
|
+
let line_idx = 0;
|
|
140
|
+
// Line 1: grid dimensions (ng[0] ng[1] ng[2])
|
|
141
|
+
const grid_dims = parse_ints(lines[line_idx++]);
|
|
142
|
+
if (grid_dims.length !== 3) {
|
|
143
|
+
throw new Error(`FRMSF: Expected 3 grid dimensions`);
|
|
144
|
+
}
|
|
145
|
+
const k_grid = [grid_dims[0], grid_dims[1], grid_dims[2]];
|
|
146
|
+
// Line 2: lshift (grid shift type)
|
|
147
|
+
// 0 = Monkhorst-Pack grid (shifted)
|
|
148
|
+
// 1 = Gamma-centered grid
|
|
149
|
+
// 2 = Gamma + half grid shift
|
|
150
|
+
const lshift = parseInt(lines[line_idx++], 10);
|
|
151
|
+
if (isNaN(lshift) || lshift < 0 || lshift > 2) {
|
|
152
|
+
throw new Error(`FRMSF: Invalid lshift value (expected 0, 1, or 2)`);
|
|
153
|
+
}
|
|
154
|
+
// Line 3: number of bands
|
|
155
|
+
const n_bands = parseInt(lines[line_idx++], 10);
|
|
156
|
+
if (isNaN(n_bands) || n_bands <= 0) {
|
|
157
|
+
throw new Error(`FRMSF: Invalid number of bands`);
|
|
158
|
+
}
|
|
159
|
+
// FRMSF format has single spin channel (no spin-polarized support in standard format)
|
|
160
|
+
const n_spins = 1;
|
|
161
|
+
// Lines 4-6: reciprocal lattice vectors (in Bohr^-1, convert to Å^-1)
|
|
162
|
+
const inv_bohr = 1 / constants.BOHR_TO_ANGSTROM;
|
|
163
|
+
const k_lattice = [
|
|
164
|
+
parse_floats(lines[line_idx++])
|
|
165
|
+
.slice(0, 3)
|
|
166
|
+
.map((val) => val * inv_bohr),
|
|
167
|
+
parse_floats(lines[line_idx++])
|
|
168
|
+
.slice(0, 3)
|
|
169
|
+
.map((val) => val * inv_bohr),
|
|
170
|
+
parse_floats(lines[line_idx++])
|
|
171
|
+
.slice(0, 3)
|
|
172
|
+
.map((val) => val * inv_bohr),
|
|
173
|
+
];
|
|
174
|
+
const [nx, ny, nz] = k_grid;
|
|
175
|
+
const total_points = nx * ny * nz;
|
|
176
|
+
// Parse band energies for each spin and band
|
|
177
|
+
// FRMSF format: one energy value per line per grid point. Any additional columns
|
|
178
|
+
// (e.g. auxiliary color/velocity data) are ignored to prevent grid corruption.
|
|
179
|
+
const energies = [];
|
|
180
|
+
for (let spin_idx = 0; spin_idx < n_spins; spin_idx++) {
|
|
181
|
+
energies[spin_idx] = [];
|
|
182
|
+
for (let band_idx = 0; band_idx < n_bands; band_idx++) {
|
|
183
|
+
const energy_values = [];
|
|
184
|
+
// Read energy values (first value per line only, ignore auxiliary columns)
|
|
185
|
+
while (energy_values.length < total_points && line_idx < lines.length) {
|
|
186
|
+
const line = lines[line_idx];
|
|
187
|
+
const first_token = line?.split(/\s+/)[0];
|
|
188
|
+
if (first_token && !isNaN(parseFloat(first_token))) {
|
|
189
|
+
energy_values.push(parseFloat(first_token));
|
|
190
|
+
line_idx++;
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (energy_values.length < total_points) {
|
|
197
|
+
throw new Error(`FRMSF spin ${spin_idx} band ${band_idx}: expected ${total_points} values, got ${energy_values.length}`);
|
|
198
|
+
}
|
|
199
|
+
// Reshape into 3D grid [kx][ky][kz]
|
|
200
|
+
const band_grid = [];
|
|
201
|
+
let val_idx = 0;
|
|
202
|
+
for (let ix = 0; ix < nx; ix++) {
|
|
203
|
+
band_grid[ix] = [];
|
|
204
|
+
for (let iy = 0; iy < ny; iy++) {
|
|
205
|
+
band_grid[ix][iy] = [];
|
|
206
|
+
for (let iz = 0; iz < nz; iz++) {
|
|
207
|
+
// FRMSF uses Hartree, convert to eV
|
|
208
|
+
band_grid[ix][iy][iz] = energy_values[val_idx++] * constants.HARTREE_TO_EV;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
energies[spin_idx].push(band_grid);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
energies,
|
|
217
|
+
k_grid,
|
|
218
|
+
k_lattice,
|
|
219
|
+
fermi_energy: 0, // FRMSF typically expects Fermi level at 0
|
|
220
|
+
n_bands,
|
|
221
|
+
n_spins,
|
|
222
|
+
periodic: true, // FRMSF stores k=i/n with no duplicated endpoint (unlike BXSF)
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// Validate that an object has the required Isosurface shape
|
|
226
|
+
function is_valid_isosurface(obj) {
|
|
227
|
+
if (!obj || typeof obj !== `object`)
|
|
228
|
+
return false;
|
|
229
|
+
const isosurface_obj = obj;
|
|
230
|
+
const vertices = isosurface_obj.vertices;
|
|
231
|
+
const faces = isosurface_obj.faces;
|
|
232
|
+
const normals = isosurface_obj.normals;
|
|
233
|
+
const band_index = isosurface_obj.band_index;
|
|
234
|
+
const spin = isosurface_obj.spin;
|
|
235
|
+
if (!Array.isArray(vertices) || vertices.length === 0)
|
|
236
|
+
return false;
|
|
237
|
+
if (!Array.isArray(faces))
|
|
238
|
+
return false;
|
|
239
|
+
if (!Array.isArray(normals))
|
|
240
|
+
return false;
|
|
241
|
+
if (typeof band_index !== `number` || !Number.isFinite(band_index))
|
|
242
|
+
return false;
|
|
243
|
+
if (spin !== null && spin !== `up` && spin !== `down`)
|
|
244
|
+
return false;
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
// Validate FermiSurfaceData shape
|
|
248
|
+
function is_valid_fermi_surface_data(obj) {
|
|
249
|
+
if (!obj || typeof obj !== `object`)
|
|
250
|
+
return false;
|
|
251
|
+
const data = obj;
|
|
252
|
+
// Check required fields
|
|
253
|
+
if (!Array.isArray(data.isosurfaces))
|
|
254
|
+
return false;
|
|
255
|
+
if (!Array.isArray(data.k_lattice) || data.k_lattice.length !== 3)
|
|
256
|
+
return false;
|
|
257
|
+
if (typeof data.fermi_energy !== `number`)
|
|
258
|
+
return false;
|
|
259
|
+
if (data.reciprocal_cell !== `wigner_seitz` && data.reciprocal_cell !== `parallelepiped`) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
if (!data.metadata || typeof data.metadata !== `object`)
|
|
263
|
+
return false;
|
|
264
|
+
// Validate each isosurface
|
|
265
|
+
for (const iso of data.isosurfaces) {
|
|
266
|
+
if (!is_valid_isosurface(iso))
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
// Parse Matterviz/IFermi JSON format for Fermi surface data
|
|
272
|
+
// Throws on invalid input; returns parsed data on success
|
|
273
|
+
function parse_fermi_json(content) {
|
|
274
|
+
const data = JSON.parse(content);
|
|
275
|
+
// Check if it's already in our FermiSurfaceData format with full validation
|
|
276
|
+
if (data.isosurfaces && Array.isArray(data.isosurfaces)) {
|
|
277
|
+
if (is_valid_fermi_surface_data(data)) {
|
|
278
|
+
return data;
|
|
279
|
+
}
|
|
280
|
+
throw new Error(`Invalid FermiSurfaceData JSON: isosurfaces array present but missing required fields`);
|
|
281
|
+
}
|
|
282
|
+
// Check if it's IFermi format (isosurfaces is an object keyed by band index)
|
|
283
|
+
if (data[`@class`] === `FermiSurface` &&
|
|
284
|
+
data.isosurfaces &&
|
|
285
|
+
typeof data.isosurfaces === `object`) {
|
|
286
|
+
return parse_ifermi_surface(data);
|
|
287
|
+
}
|
|
288
|
+
// Check if it's BandGridData (raw grid data)
|
|
289
|
+
if (data.energies && data.k_grid && data.k_lattice) {
|
|
290
|
+
// Minimal validation of required fields
|
|
291
|
+
if (!Array.isArray(data.energies) ||
|
|
292
|
+
!Array.isArray(data.k_grid) ||
|
|
293
|
+
data.k_grid.length !== 3 ||
|
|
294
|
+
!Array.isArray(data.k_lattice) ||
|
|
295
|
+
data.k_lattice.length !== 3)
|
|
296
|
+
throw new Error(`Invalid BandGridData JSON: malformed required fields`);
|
|
297
|
+
return data;
|
|
298
|
+
}
|
|
299
|
+
// Try to extract from nested structure (e.g. IFermi output)
|
|
300
|
+
if (data.fermi_surface) {
|
|
301
|
+
return data.fermi_surface;
|
|
302
|
+
}
|
|
303
|
+
if (data.band_structure?.energies || data.bands?.energies) {
|
|
304
|
+
const bs = data.band_structure ?? data.bands;
|
|
305
|
+
return {
|
|
306
|
+
energies: bs.energies,
|
|
307
|
+
k_grid: bs.k_grid ?? bs.kgrid,
|
|
308
|
+
k_lattice: bs.k_lattice ?? bs.reciprocal_lattice,
|
|
309
|
+
fermi_energy: bs.fermi_energy ?? bs.efermi ?? 0,
|
|
310
|
+
// oxlint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- numeric fallback chain (0 falls through)
|
|
311
|
+
n_bands: (bs.n_bands ?? bs.nbands) || bs.energies[0]?.length || 0,
|
|
312
|
+
// oxlint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- numeric fallback chain (0 falls through)
|
|
313
|
+
n_spins: (bs.n_spins ?? bs.nspins) || bs.energies.length || 1,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
// Check for pymatgen BandStructure format (k-path, not k-grid)
|
|
317
|
+
// These files cannot be used for Fermi surface visualization directly
|
|
318
|
+
if (data.bs?.[`@class`] === `BandStructure` || data[`@class`] === `BandStructure`) {
|
|
319
|
+
throw new Error(`This is a pymatgen BandStructure file (band data along k-path). ` +
|
|
320
|
+
`Fermi surface visualization requires a uniform 3D k-grid of eigenvalues. ` +
|
|
321
|
+
`Use IFermi or a BXSF/FRMSF file instead.`);
|
|
322
|
+
}
|
|
323
|
+
throw new Error(`Unrecognized JSON format: missing required fields for Fermi surface data`);
|
|
324
|
+
}
|
|
325
|
+
// Parse IFermi's JSON output format
|
|
326
|
+
function parse_ifermi_surface(data) {
|
|
327
|
+
const isosurfaces_obj = data.isosurfaces;
|
|
328
|
+
const reciprocal_space = data.reciprocal_space;
|
|
329
|
+
// Extract reciprocal lattice
|
|
330
|
+
const k_lattice = reciprocal_space?.reciprocal_lattice
|
|
331
|
+
? reciprocal_space.reciprocal_lattice
|
|
332
|
+
: [
|
|
333
|
+
[1, 0, 0],
|
|
334
|
+
[0, 1, 0],
|
|
335
|
+
[0, 0, 1],
|
|
336
|
+
];
|
|
337
|
+
// Convert IFermi isosurfaces to our format
|
|
338
|
+
const isosurfaces = [];
|
|
339
|
+
const band_indices = new Set();
|
|
340
|
+
let has_spin = false;
|
|
341
|
+
for (const [band_key, iso_list] of Object.entries(isosurfaces_obj)) {
|
|
342
|
+
const band_index = parseInt(band_key, 10);
|
|
343
|
+
// spin is determined by sign: positive = up, negative = down
|
|
344
|
+
const spin = band_index < 0 ? `down` : `up`;
|
|
345
|
+
const abs_band_idx = Math.abs(band_index);
|
|
346
|
+
band_indices.add(abs_band_idx);
|
|
347
|
+
if (band_index < 0)
|
|
348
|
+
has_spin = true;
|
|
349
|
+
for (const ifermi_iso of iso_list) {
|
|
350
|
+
const vertices = ifermi_iso.vertices;
|
|
351
|
+
const faces = ifermi_iso.faces;
|
|
352
|
+
// Compute vertex normals from faces
|
|
353
|
+
const normals = compute_vertex_normals(vertices, faces);
|
|
354
|
+
// Extract properties if available
|
|
355
|
+
let properties;
|
|
356
|
+
if (ifermi_iso.properties) {
|
|
357
|
+
// IFermi stores properties like fermi_velocity, spin, etc.
|
|
358
|
+
const prop_keys = Object.keys(ifermi_iso.properties);
|
|
359
|
+
if (prop_keys.length > 0) {
|
|
360
|
+
// Use first available property as vertex colors
|
|
361
|
+
properties = ifermi_iso.properties[prop_keys[0]];
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// Parse dimensionality
|
|
365
|
+
let dimensionality;
|
|
366
|
+
if (ifermi_iso.dimensionality) {
|
|
367
|
+
const dim = ifermi_iso.dimensionality.toLowerCase();
|
|
368
|
+
if (dim.includes(`1d`) || dim === `1d`)
|
|
369
|
+
dimensionality = `1D`;
|
|
370
|
+
else if (dim.includes(`quasi`) || dim === `quasi-2d`)
|
|
371
|
+
dimensionality = `quasi-2D`;
|
|
372
|
+
else if (dim.includes(`2d`) || dim === `2d`)
|
|
373
|
+
dimensionality = `2D`;
|
|
374
|
+
else if (dim.includes(`3d`) || dim === `3d`)
|
|
375
|
+
dimensionality = `3D`;
|
|
376
|
+
}
|
|
377
|
+
// Compute area for this isosurface using fan triangulation for N-gons
|
|
378
|
+
let area = 0;
|
|
379
|
+
for (const face of faces) {
|
|
380
|
+
if (face.length < 3)
|
|
381
|
+
continue;
|
|
382
|
+
// Validate face indices are within bounds to prevent NaN from undefined vertices
|
|
383
|
+
if (face.some((idx) => idx < 0 || idx >= vertices.length))
|
|
384
|
+
continue;
|
|
385
|
+
// Fan triangulation: for N vertices, create N-2 triangles (0,1,2), (0,2,3), ...
|
|
386
|
+
const v0 = vertices[face[0]];
|
|
387
|
+
for (let fan_idx = 1; fan_idx < face.length - 1; fan_idx++) {
|
|
388
|
+
const v1 = vertices[face[fan_idx]];
|
|
389
|
+
const v2 = vertices[face[fan_idx + 1]];
|
|
390
|
+
const e1 = [v1[0] - v0[0], v1[1] - v0[1], v1[2] - v0[2]];
|
|
391
|
+
const e2 = [v2[0] - v0[0], v2[1] - v0[1], v2[2] - v0[2]];
|
|
392
|
+
const cross = [
|
|
393
|
+
e1[1] * e2[2] - e1[2] * e2[1],
|
|
394
|
+
e1[2] * e2[0] - e1[0] * e2[2],
|
|
395
|
+
e1[0] * e2[1] - e1[1] * e2[0],
|
|
396
|
+
];
|
|
397
|
+
area += 0.5 * Math.hypot(cross[0], cross[1], cross[2]);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
isosurfaces.push({
|
|
401
|
+
vertices,
|
|
402
|
+
faces,
|
|
403
|
+
normals,
|
|
404
|
+
properties,
|
|
405
|
+
band_index: abs_band_idx,
|
|
406
|
+
spin,
|
|
407
|
+
area,
|
|
408
|
+
dimensionality,
|
|
409
|
+
orientation: ifermi_iso.orientation,
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Compute total surface area
|
|
414
|
+
const total_area = isosurfaces.reduce((sum, iso) => sum + (iso.area ?? 0), 0);
|
|
415
|
+
return {
|
|
416
|
+
isosurfaces,
|
|
417
|
+
k_lattice,
|
|
418
|
+
fermi_energy: 0, // IFermi surfaces are typically relative to Fermi level
|
|
419
|
+
reciprocal_cell: `wigner_seitz`, // IFermi typically uses Wigner-Seitz cells
|
|
420
|
+
metadata: {
|
|
421
|
+
n_bands: band_indices.size,
|
|
422
|
+
n_surfaces: isosurfaces.length,
|
|
423
|
+
total_area,
|
|
424
|
+
source_format: `ifermi-json`,
|
|
425
|
+
has_spin,
|
|
426
|
+
has_velocities: isosurfaces.some((iso) => iso.properties !== undefined),
|
|
427
|
+
},
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
// Auto-detect file format and parse accordingly
|
|
431
|
+
export function parse_fermi_file(content, filename) {
|
|
432
|
+
const lower_name = filename?.toLowerCase() ?? ``;
|
|
433
|
+
// Detect by filename extension
|
|
434
|
+
if (lower_name.endsWith(`.bxsf`) || lower_name.endsWith(`.bxsf.gz`)) {
|
|
435
|
+
try {
|
|
436
|
+
return parse_bxsf(content);
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
console.error(`BXSF parse error:`, error);
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
if (lower_name.endsWith(`.frmsf`) || lower_name.endsWith(`.frmsf.gz`)) {
|
|
444
|
+
try {
|
|
445
|
+
return parse_frmsf(content);
|
|
446
|
+
}
|
|
447
|
+
catch (error) {
|
|
448
|
+
console.error(`FRMSF parse error:`, error);
|
|
449
|
+
return null;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
if (lower_name.endsWith(`.json`) || lower_name.endsWith(`.json.gz`)) {
|
|
453
|
+
try {
|
|
454
|
+
return parse_fermi_json(content);
|
|
455
|
+
}
|
|
456
|
+
catch (error) {
|
|
457
|
+
console.error(`JSON parse error:`, error);
|
|
458
|
+
return null;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
// Try auto-detection based on content
|
|
462
|
+
const trimmed = content.trim();
|
|
463
|
+
// BXSF format detection
|
|
464
|
+
if (trimmed.includes(`BEGIN_BLOCK_BANDGRID_3D`) || trimmed.includes(`BEGIN_BANDGRID_3D`)) {
|
|
465
|
+
try {
|
|
466
|
+
return parse_bxsf(content);
|
|
467
|
+
}
|
|
468
|
+
catch (error) {
|
|
469
|
+
console.error(`BXSF auto-detect parse error:`, error);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
// JSON format detection
|
|
473
|
+
if (trimmed.startsWith(`{`) || trimmed.startsWith(`[`)) {
|
|
474
|
+
try {
|
|
475
|
+
return parse_fermi_json(content);
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
console.error(`JSON auto-detect parse error:`, error);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
// FRMSF format detection (starts with grid dimensions)
|
|
482
|
+
const first_line = trimmed.split(/\r?\n/)[0];
|
|
483
|
+
const first_tokens = first_line.split(/\s+/).filter(Boolean);
|
|
484
|
+
if (first_tokens.length === 3 && first_tokens.every((token) => /^\d+$/.test(token))) {
|
|
485
|
+
try {
|
|
486
|
+
return parse_frmsf(content);
|
|
487
|
+
}
|
|
488
|
+
catch (error) {
|
|
489
|
+
console.error(`FRMSF auto-detect parse error:`, error);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
console.warn(`Could not detect Fermi surface file format for: ${filename}`);
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Identity 4x4 matrix (column-major for Three.js)
|
|
2
|
+
// oxfmt-ignore
|
|
3
|
+
export const IDENTITY_4x4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
4
|
+
// All permutations of (0, 1, 2) for axis swaps
|
|
5
|
+
const AXIS_PERMUTATIONS = [
|
|
6
|
+
[0, 1, 2],
|
|
7
|
+
[0, 2, 1],
|
|
8
|
+
[1, 0, 2],
|
|
9
|
+
[1, 2, 0],
|
|
10
|
+
[2, 0, 1],
|
|
11
|
+
[2, 1, 0],
|
|
12
|
+
];
|
|
13
|
+
// All sign combinations for coordinate flips
|
|
14
|
+
const SIGN_COMBINATIONS = [
|
|
15
|
+
[1, 1, 1],
|
|
16
|
+
[1, 1, -1],
|
|
17
|
+
[1, -1, 1],
|
|
18
|
+
[1, -1, -1],
|
|
19
|
+
[-1, 1, 1],
|
|
20
|
+
[-1, 1, -1],
|
|
21
|
+
[-1, -1, 1],
|
|
22
|
+
[-1, -1, -1],
|
|
23
|
+
];
|
|
24
|
+
// Generate the 48 symmetry operations of the cubic Oh point group.
|
|
25
|
+
// These are all combinations of axis permutations (6) and sign flips (8).
|
|
26
|
+
// Used to tile the irreducible BZ to fill the full first Brillouin zone.
|
|
27
|
+
function generate_oh_symmetry_matrices() {
|
|
28
|
+
const matrices = [];
|
|
29
|
+
for (const perm of AXIS_PERMUTATIONS) {
|
|
30
|
+
for (const sign of SIGN_COMBINATIONS) {
|
|
31
|
+
// Column-major 4x4 matrix: element at (row, col) is at index col*4 + row
|
|
32
|
+
const mat = Array(16).fill(0);
|
|
33
|
+
mat[15] = 1; // w component
|
|
34
|
+
// Build 3x3 rotation part: M[row][col] = sign[row] if perm[row] === col
|
|
35
|
+
for (let col = 0; col < 3; col++) {
|
|
36
|
+
for (let row = 0; row < 3; row++) {
|
|
37
|
+
mat[col * 4 + row] = perm[row] === col ? sign[row] : 0;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
matrices.push(mat);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return matrices;
|
|
44
|
+
}
|
|
45
|
+
// Pre-computed Oh symmetry matrices (48 operations)
|
|
46
|
+
export const OH_SYMMETRY_MATRICES = generate_oh_symmetry_matrices();
|