matterviz 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EmptyState.svelte +10 -4
- package/dist/FilePicker.svelte +12 -14
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/app.css +53 -0
- package/dist/brillouin/BrillouinZone.svelte +132 -219
- package/dist/brillouin/BrillouinZone.svelte.d.ts +9 -20
- package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
- package/dist/brillouin/BrillouinZoneExportPane.svelte +47 -96
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +15 -42
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
- package/dist/brillouin/BrillouinZoneScene.svelte +63 -230
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
- package/dist/brillouin/ReciprocalVectors.svelte +39 -0
- package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
- package/dist/brillouin/compute.d.ts +2 -0
- package/dist/brillouin/compute.js +80 -77
- package/dist/brillouin/geometry.d.ts +8 -0
- package/dist/brillouin/geometry.js +57 -0
- package/dist/brillouin/index.d.ts +2 -0
- package/dist/brillouin/index.js +2 -0
- package/dist/brillouin/types.d.ts +2 -2
- package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +143 -246
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +652 -976
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
- package/dist/chempot-diagram/async-compute.svelte.js +1 -1
- package/dist/chempot-diagram/color.d.ts +3 -6
- package/dist/chempot-diagram/color.js +5 -5
- package/dist/chempot-diagram/compute.d.ts +3 -3
- package/dist/chempot-diagram/compute.js +3 -1
- package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
- package/dist/chempot-diagram/controls-state.svelte.js +42 -0
- package/dist/chempot-diagram/export.d.ts +47 -0
- package/dist/chempot-diagram/export.js +133 -0
- package/dist/chempot-diagram/index.d.ts +1 -0
- package/dist/chempot-diagram/index.js +1 -0
- package/dist/chempot-diagram/pointer.d.ts +0 -10
- package/dist/chempot-diagram/pointer.js +4 -4
- package/dist/chempot-diagram/types.d.ts +3 -3
- package/dist/colors/index.d.ts +0 -4
- package/dist/colors/index.js +21 -22
- package/dist/composition/BarChart.svelte +37 -31
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +7 -11
- package/dist/composition/Formula.svelte +18 -25
- package/dist/composition/FormulaFilter.svelte +96 -98
- package/dist/composition/PieChart.svelte +60 -46
- package/dist/composition/chem-sys.js +3 -2
- package/dist/composition/format.js +4 -3
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +2 -3
- package/dist/composition/parse.js +27 -28
- package/dist/constants.js +11 -9
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +0 -1
- package/dist/convex-hull/ConvexHull.svelte +20 -25
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
- package/dist/convex-hull/ConvexHull2D.svelte +176 -256
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +269 -804
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +236 -755
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +264 -0
- package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
- package/dist/convex-hull/ConvexHullControls.svelte +128 -49
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
- package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
- package/dist/convex-hull/ConvexHullStats.svelte +210 -351
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +16 -14
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
- package/dist/convex-hull/GasPressureControls.svelte +5 -12
- package/dist/convex-hull/StructurePopup.svelte +17 -21
- package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
- package/dist/convex-hull/TemperatureSlider.svelte +4 -10
- package/dist/convex-hull/barycentric-coords.d.ts +2 -4
- package/dist/convex-hull/barycentric-coords.js +6 -33
- package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
- package/dist/convex-hull/canvas-interactions.svelte.js +279 -0
- package/dist/convex-hull/helpers.d.ts +47 -17
- package/dist/convex-hull/helpers.js +186 -101
- package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
- package/dist/convex-hull/hull-state.svelte.js +124 -0
- package/dist/convex-hull/index.d.ts +9 -7
- package/dist/convex-hull/index.js +7 -2
- package/dist/convex-hull/thermodynamics.js +109 -937
- package/dist/convex-hull/types.d.ts +12 -4
- package/dist/convex-hull/types.js +12 -0
- package/dist/coordination/CoordinationBarPlot.svelte +41 -43
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
- package/dist/coordination/calc-coordination.d.ts +1 -1
- package/dist/coordination/calc-coordination.js +28 -25
- package/dist/element/BohrAtom.svelte +6 -8
- package/dist/element/ElementHeading.svelte +4 -1
- package/dist/element/ElementPhoto.svelte +11 -9
- package/dist/element/ElementStats.svelte +12 -10
- package/dist/element/ElementTile.svelte +24 -29
- package/dist/element/ElementTile.svelte.d.ts +1 -1
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +1 -2
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +1 -0
- package/dist/element/index.js +3 -0
- package/dist/feedback/DragOverlay.svelte +5 -3
- package/dist/feedback/DragOverlay.svelte.d.ts +2 -1
- package/dist/feedback/StatusMessage.svelte +20 -7
- package/dist/fermi-surface/FermiSlice.svelte +21 -18
- package/dist/fermi-surface/FermiSurface.svelte +78 -165
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +9 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceScene.svelte +93 -272
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +14 -13
- package/dist/fermi-surface/export.js +4 -15
- package/dist/fermi-surface/index.d.ts +0 -1
- package/dist/fermi-surface/index.js +0 -1
- package/dist/fermi-surface/parse.d.ts +1 -1
- package/dist/fermi-surface/parse.js +84 -97
- package/dist/fermi-surface/types.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +161 -185
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +6 -5
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +12 -9
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
- package/dist/heatmap-matrix/index.d.ts +8 -2
- package/dist/icons.d.ts +4 -0
- package/dist/icons.js +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/io/ExportPane.svelte +170 -0
- package/dist/io/ExportPane.svelte.d.ts +17 -0
- package/dist/io/decompress.d.ts +2 -1
- package/dist/io/decompress.js +22 -36
- package/dist/io/export.d.ts +9 -1
- package/dist/io/export.js +37 -29
- package/dist/io/fetch.d.ts +2 -4
- package/dist/io/fetch.js +0 -11
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +13 -0
- package/dist/io/index.d.ts +1 -0
- package/dist/io/index.js +3 -0
- package/dist/io/is-binary.d.ts +9 -0
- package/dist/io/is-binary.js +45 -1
- package/dist/io/types.d.ts +13 -0
- package/dist/io/url-drop.js +13 -25
- package/dist/isosurface/Isosurface.svelte +17 -23
- package/dist/isosurface/IsosurfaceControls.svelte +37 -42
- package/dist/isosurface/parse-vaspwave.d.ts +3 -0
- package/dist/isosurface/parse-vaspwave.js +138 -0
- package/dist/isosurface/parse.js +50 -48
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +44 -14
- package/dist/layout/FullscreenButton.svelte +34 -0
- package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
- package/dist/layout/FullscreenToggle.svelte +12 -12
- package/dist/layout/InfoCard.svelte +7 -18
- package/dist/layout/InfoTag.svelte +1 -3
- package/dist/layout/NumberRangeInput.svelte +46 -0
- package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
- package/dist/layout/PropertyFilter.svelte +2 -6
- package/dist/layout/SettingsSection.svelte +21 -17
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +115 -0
- package/dist/layout/ViewerChrome.svelte.d.ts +18 -0
- package/dist/layout/fullscreen.d.ts +4 -0
- package/dist/layout/fullscreen.js +3 -5
- package/dist/layout/fullscreen.svelte.d.ts +8 -0
- package/dist/layout/fullscreen.svelte.js +36 -0
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/json-tree/JsonNode.svelte +8 -11
- package/dist/layout/json-tree/JsonTree.svelte +53 -77
- package/dist/layout/json-tree/JsonValue.svelte +7 -15
- package/dist/layout/json-tree/utils.js +14 -23
- package/dist/math.d.ts +9 -3
- package/dist/math.js +37 -21
- package/dist/overlays/ContextMenu.svelte +4 -2
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +81 -26
- package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
- package/dist/overlays/GlassChip.svelte +30 -0
- package/dist/overlays/GlassChip.svelte.d.ts +8 -0
- package/dist/overlays/InfoPaneCards.svelte +11 -23
- package/dist/overlays/index.d.ts +11 -0
- package/dist/overlays/index.js +26 -0
- package/dist/overlays/portal.d.ts +2 -0
- package/dist/overlays/portal.js +14 -0
- package/dist/periodic-table/PeriodicTable.svelte +115 -146
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
- package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
- package/dist/phase-diagram/PhaseDiagramControls.svelte +73 -96
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +49 -134
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
- package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
- package/dist/phase-diagram/build-diagram.js +3 -3
- package/dist/phase-diagram/colors.js +1 -1
- package/dist/phase-diagram/diagram-input.d.ts +1 -2
- package/dist/phase-diagram/parse.d.ts +2 -1
- package/dist/phase-diagram/parse.js +15 -15
- package/dist/phase-diagram/svg-to-diagram.js +21 -15
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +494 -692
- package/dist/plot/bar/BarPlot.svelte.d.ts +9 -15
- package/dist/plot/bar/BarPlotControls.svelte +1 -3
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +5 -7
- package/dist/plot/bar/SpacegroupBarPlot.svelte +31 -37
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +361 -439
- package/dist/plot/box/BoxPlot.svelte.d.ts +6 -3
- package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
- package/dist/plot/box/Violin.svelte.d.ts +2 -1
- package/dist/plot/box/box-plot.d.ts +3 -2
- package/dist/plot/box/box-plot.js +6 -3
- package/dist/plot/box/kde.d.ts +2 -1
- package/dist/plot/box/kde.js +4 -4
- package/dist/plot/core/auto-place.d.ts +1 -1
- package/dist/plot/core/auto-place.js +5 -2
- package/dist/plot/core/axis-utils.d.ts +12 -7
- package/dist/plot/core/axis-utils.js +48 -48
- package/dist/plot/core/components/AxisLabel.svelte +82 -20
- package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
- package/dist/plot/core/components/ColorBar.svelte +106 -111
- package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
- package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
- package/dist/plot/core/components/FillArea.svelte +10 -17
- package/dist/plot/core/components/HierarchyControls.svelte +249 -0
- package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
- package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
- package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/core/components/Line.svelte +21 -11
- package/dist/plot/core/components/Line.svelte.d.ts +5 -2
- package/dist/plot/core/components/PlotAxis.svelte +42 -18
- package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
- package/dist/plot/core/components/PlotControls.svelte +65 -41
- package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/core/components/PlotLegend.svelte +31 -35
- package/dist/plot/core/components/PlotMarginals.svelte +616 -0
- package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
- package/dist/plot/core/components/PlotTooltip.svelte +1 -1
- package/dist/plot/core/components/PortalSelect.svelte +4 -8
- package/dist/plot/core/components/ReferenceLine.svelte +27 -24
- package/dist/plot/core/components/ReferenceLine3D.svelte +56 -59
- package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
- package/dist/plot/core/components/ReferencePlane.svelte +9 -10
- package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
- package/dist/plot/core/components/ZeroLines.svelte +4 -8
- package/dist/plot/core/components/ZoomRect.svelte +1 -2
- package/dist/plot/core/components/index.d.ts +1 -0
- package/dist/plot/core/components/index.js +1 -0
- package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
- package/dist/plot/core/data-cleaning-signal.js +467 -0
- package/dist/plot/core/data-cleaning.d.ts +2 -42
- package/dist/plot/core/data-cleaning.js +29 -476
- package/dist/plot/core/data-transform.js +9 -5
- package/dist/plot/core/fill-utils.d.ts +7 -4
- package/dist/plot/core/fill-utils.js +34 -9
- package/dist/plot/core/index.d.ts +1 -0
- package/dist/plot/core/index.js +1 -0
- package/dist/plot/core/interactions.d.ts +5 -1
- package/dist/plot/core/interactions.js +14 -2
- package/dist/plot/core/layout.d.ts +3 -1
- package/dist/plot/core/layout.js +22 -13
- package/dist/plot/core/marginals.d.ts +170 -0
- package/dist/plot/core/marginals.js +436 -0
- package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
- package/dist/plot/core/pan-zoom.svelte.js +221 -0
- package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
- package/dist/plot/core/placed-tween.svelte.js +68 -0
- package/dist/plot/core/reference-line.d.ts +10 -10
- package/dist/plot/core/reference-line.js +7 -7
- package/dist/plot/core/scales.d.ts +40 -25
- package/dist/plot/core/scales.js +49 -21
- package/dist/plot/core/svg.d.ts +2 -1
- package/dist/plot/core/types/fills.d.ts +101 -0
- package/dist/plot/core/types/fills.js +15 -0
- package/dist/plot/core/types/plot-3d.d.ts +87 -0
- package/dist/plot/core/types/plot-3d.js +4 -0
- package/dist/plot/core/types/reference-lines.d.ts +140 -0
- package/dist/plot/core/types/reference-lines.js +9 -0
- package/dist/plot/core/types.d.ts +47 -331
- package/dist/plot/core/types.js +23 -20
- package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
- package/dist/plot/core/utils/hierarchy-chart.js +179 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +99 -0
- package/dist/plot/core/utils/label-placement.d.ts +1 -1
- package/dist/plot/core/utils/label-placement.js +5 -5
- package/dist/plot/core/utils.d.ts +2 -1
- package/dist/plot/histogram/Histogram.svelte +373 -631
- package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
- package/dist/plot/histogram/HistogramControls.svelte +30 -28
- package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
- package/dist/plot/histogram/histogram.d.ts +31 -0
- package/dist/plot/histogram/histogram.js +70 -0
- package/dist/plot/histogram/index.d.ts +1 -0
- package/dist/plot/histogram/index.js +1 -0
- package/dist/plot/index.d.ts +1 -0
- package/dist/plot/index.js +1 -0
- package/dist/plot/sankey/Sankey.svelte +79 -73
- package/dist/plot/sankey/Sankey.svelte.d.ts +3 -3
- package/dist/plot/sankey/SankeyControls.svelte +22 -16
- package/dist/plot/sankey/sankey.js +3 -1
- package/dist/plot/scatter/BinnedScatterPlot.svelte +264 -112
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +11 -4
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +623 -821
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +9 -15
- package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
- package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/scatter/ScatterPoint.svelte +16 -9
- package/dist/plot/scatter/binned-scatter-types.d.ts +6 -12
- package/dist/plot/scatter/binned-scatter-types.js +6 -1
- package/dist/plot/scatter/index.d.ts +1 -1
- package/dist/plot/scatter/scatter-data.d.ts +1 -1
- package/dist/plot/scatter/scatter-data.js +8 -7
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte +40 -60
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +17 -15
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +232 -234
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
- package/dist/plot/scatter-3d/Surface3D.svelte +9 -17
- package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
- package/dist/plot/sunburst/Sunburst.svelte +256 -338
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
- package/dist/plot/sunburst/index.d.ts +1 -1
- package/dist/plot/sunburst/index.js +2 -1
- package/dist/plot/sunburst/render.d.ts +2 -2
- package/dist/plot/sunburst/render.js +47 -22
- package/dist/plot/sunburst/sunburst.d.ts +5 -1
- package/dist/plot/sunburst/sunburst.js +14 -4
- package/dist/plot/treemap/Treemap.svelte +907 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
- package/dist/plot/treemap/index.d.ts +3 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/treemap.d.ts +26 -0
- package/dist/plot/treemap/treemap.js +99 -0
- package/dist/rdf/RdfPlot.svelte +22 -26
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +4 -8
- package/dist/sanitize.js +14 -3
- package/dist/scene/SceneCamera.svelte +62 -0
- package/dist/scene/SceneCamera.svelte.d.ts +19 -0
- package/dist/scene/bind-renderer.svelte.d.ts +2 -0
- package/dist/scene/bind-renderer.svelte.js +22 -0
- package/dist/scene/index.d.ts +4 -0
- package/dist/scene/index.js +5 -0
- package/dist/scene/props.js +52 -0
- package/dist/scene/types.d.ts +26 -0
- package/dist/scene/types.js +1 -0
- package/dist/settings.d.ts +33 -11
- package/dist/settings.js +136 -51
- package/dist/spectral/Bands.svelte +231 -237
- package/dist/spectral/Bands.svelte.d.ts +3 -2
- package/dist/spectral/BandsAndDos.svelte +29 -29
- package/dist/spectral/BrillouinBandsDos.svelte +21 -29
- package/dist/spectral/Dos.svelte +75 -77
- package/dist/spectral/Dos.svelte.d.ts +2 -1
- package/dist/spectral/helpers.d.ts +9 -9
- package/dist/spectral/helpers.js +66 -70
- package/dist/state.svelte.d.ts +0 -7
- package/dist/state.svelte.js +5 -24
- package/dist/structure/Arrow.svelte +6 -21
- package/dist/structure/ArrowInstances.svelte +160 -0
- package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
- package/dist/structure/AtomLegend.svelte +115 -75
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +16 -3
- package/dist/structure/CellSelect.svelte +22 -29
- package/dist/structure/CellSelect.svelte.d.ts +2 -1
- package/dist/structure/Cylinder.svelte +24 -40
- package/dist/structure/InstancedAtoms.svelte +114 -0
- package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
- package/dist/structure/Lattice.svelte +85 -149
- package/dist/structure/SiteLabels.svelte +122 -0
- package/dist/structure/SiteLabels.svelte.d.ts +18 -0
- package/dist/structure/Structure.svelte +725 -735
- package/dist/structure/Structure.svelte.d.ts +8 -16
- package/dist/structure/StructureCarousel.svelte +630 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +298 -325
- package/dist/structure/StructureControls.svelte.d.ts +5 -3
- package/dist/structure/StructureExportPane.svelte +62 -168
- package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
- package/dist/structure/StructureInfoPane.svelte +77 -69
- package/dist/structure/StructureInfoPane.svelte.d.ts +6 -6
- package/dist/structure/StructureScene.svelte +758 -600
- package/dist/structure/StructureScene.svelte.d.ts +24 -20
- package/dist/structure/StructureViewport.svelte +386 -0
- package/dist/structure/StructureViewport.svelte.d.ts +63 -0
- package/dist/structure/atom-label-placement.d.ts +18 -0
- package/dist/structure/atom-label-placement.js +115 -0
- package/dist/structure/atom-properties.d.ts +3 -1
- package/dist/structure/atom-properties.js +115 -54
- package/dist/structure/bond-order-perception.js +2 -4
- package/dist/structure/bonding.d.ts +12 -2
- package/dist/structure/bonding.js +172 -73
- package/dist/structure/edit-history.d.ts +6 -0
- package/dist/structure/edit-history.js +27 -0
- package/dist/structure/export.d.ts +25 -4
- package/dist/structure/export.js +103 -153
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +22 -0
- package/dist/structure/geometry.d.ts +9 -0
- package/dist/structure/geometry.js +27 -0
- package/dist/structure/index.d.ts +18 -1
- package/dist/structure/index.js +15 -2
- package/dist/structure/measure.d.ts +1 -1
- package/dist/structure/measure.js +6 -12
- package/dist/structure/parse.d.ts +5 -3
- package/dist/structure/parse.js +551 -567
- package/dist/structure/partial-occupancy.d.ts +0 -1
- package/dist/structure/partial-occupancy.js +5 -3
- package/dist/structure/pbc.d.ts +1 -1
- package/dist/structure/pbc.js +204 -51
- package/dist/structure/polyhedra.d.ts +40 -0
- package/dist/structure/polyhedra.js +587 -0
- package/dist/structure/site.d.ts +4 -0
- package/dist/structure/site.js +1 -0
- package/dist/structure/supercell.d.ts +1 -2
- package/dist/structure/supercell.js +10 -15
- package/dist/structure/validation.js +5 -6
- package/dist/symmetry/SymmetryElementControls.svelte +69 -0
- package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
- package/dist/symmetry/SymmetryElements.svelte +350 -0
- package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
- package/dist/symmetry/SymmetryStats.svelte +142 -49
- package/dist/symmetry/WyckoffTable.svelte +58 -16
- package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
- package/dist/symmetry/cell-transform.js +8 -14
- package/dist/symmetry/index.d.ts +15 -4
- package/dist/symmetry/index.js +308 -81
- package/dist/symmetry/spacegroups.d.ts +5 -1
- package/dist/symmetry/spacegroups.js +18 -3
- package/dist/symmetry/symmetry-elements.d.ts +33 -0
- package/dist/symmetry/symmetry-elements.js +521 -0
- package/dist/symmetry/wyckoff-db.d.ts +9 -0
- package/dist/symmetry/wyckoff-db.js +87 -0
- package/dist/table/HeatmapTable.svelte +1104 -378
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +5 -12
- package/dist/table/index.d.ts +21 -6
- package/dist/table/index.js +34 -21
- package/dist/theme/ThemeControl.svelte +16 -8
- package/dist/theme/index.d.ts +1 -5
- package/dist/theme/index.js +4 -10
- package/dist/theme/themes.mjs +14 -7
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +2 -5
- package/dist/trajectory/Trajectory.svelte +556 -352
- package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
- package/dist/trajectory/TrajectoryError.svelte +11 -8
- package/dist/trajectory/TrajectoryExportPane.svelte +28 -54
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
- package/dist/trajectory/TrajectoryInfoPane.svelte +88 -99
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
- package/dist/trajectory/constants.js +6 -2
- package/dist/trajectory/extract.js +73 -71
- package/dist/trajectory/format-detect.d.ts +0 -1
- package/dist/trajectory/format-detect.js +13 -17
- package/dist/trajectory/frame-reader.d.ts +2 -1
- package/dist/trajectory/frame-reader.js +74 -136
- package/dist/trajectory/helpers.d.ts +12 -2
- package/dist/trajectory/helpers.js +68 -37
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +3 -0
- package/dist/trajectory/parse/ase.d.ts +9 -1
- package/dist/trajectory/parse/ase.js +47 -32
- package/dist/trajectory/parse/diagnostics.d.ts +3 -0
- package/dist/trajectory/parse/diagnostics.js +14 -0
- package/dist/trajectory/parse/h5-utils.d.ts +13 -0
- package/dist/trajectory/parse/h5-utils.js +109 -0
- package/dist/trajectory/parse/hdf5.d.ts +1 -1
- package/dist/trajectory/parse/hdf5.js +116 -106
- package/dist/trajectory/parse/index.d.ts +3 -4
- package/dist/trajectory/parse/index.js +68 -119
- package/dist/trajectory/parse/lammps.d.ts +0 -2
- package/dist/trajectory/parse/lammps.js +14 -16
- package/dist/trajectory/parse/pymatgen.d.ts +2 -0
- package/dist/trajectory/parse/pymatgen.js +74 -0
- package/dist/trajectory/parse/vasp.js +13 -9
- package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
- package/dist/trajectory/parse/vaspout-electronic.js +207 -0
- package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
- package/dist/trajectory/parse/vaspout-h5.js +284 -0
- package/dist/trajectory/parse/xyz.d.ts +9 -21
- package/dist/trajectory/parse/xyz.js +38 -39
- package/dist/trajectory/plotting.d.ts +8 -10
- package/dist/trajectory/plotting.js +102 -127
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +8 -1
- package/dist/xrd/XrdPlot.svelte +56 -85
- package/dist/xrd/broadening.d.ts +2 -1
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +8 -15
- package/dist/xrd/index.d.ts +2 -2
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +56 -73
- package/package.json +77 -36
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/element/data.json +0 -11864
- package/dist/fermi-surface/marching-cubes.d.ts +0 -2
- package/dist/fermi-surface/marching-cubes.js +0 -2
- package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
- package/dist/plot/core/hover-lock.svelte.js +0 -45
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
- package/dist/structure/label-placement.d.ts +0 -14
- package/dist/structure/label-placement.js +0 -72
package/dist/xrd/parse.js
CHANGED
|
@@ -20,13 +20,24 @@ const parse_number_list = (text) => text
|
|
|
20
20
|
.split(/\s+/)
|
|
21
21
|
.map(parseFloat)
|
|
22
22
|
.filter((val) => !isNaN(val));
|
|
23
|
+
// Return the first parseable number from the text content of any of `tags`
|
|
24
|
+
// (in order) that also passes the optional `ok` predicate. Null when none match.
|
|
25
|
+
const query_first_number = (doc, tags, ok = () => true) => {
|
|
26
|
+
for (const tag of tags) {
|
|
27
|
+
const text = doc.querySelector(tag)?.textContent?.trim();
|
|
28
|
+
const val = text ? Number(text) : NaN;
|
|
29
|
+
if (!isNaN(val) && ok(val))
|
|
30
|
+
return val;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
23
34
|
// Extract numeric value from header line matching "KEY=VALUE" or "KEY VALUE" pattern.
|
|
24
35
|
// Returns null if not found or not a valid number.
|
|
25
36
|
function extract_header_value(lines, key_pattern) {
|
|
26
37
|
for (const line of lines) {
|
|
27
38
|
const match = line.match(key_pattern);
|
|
28
39
|
if (match?.[1]) {
|
|
29
|
-
const val =
|
|
40
|
+
const val = Number(match[1]);
|
|
30
41
|
if (!isNaN(val))
|
|
31
42
|
return val;
|
|
32
43
|
}
|
|
@@ -53,17 +64,17 @@ function normalize_and_subsample(x_values, y_values) {
|
|
|
53
64
|
}
|
|
54
65
|
// Subsample data while preserving peaks (local maxima).
|
|
55
66
|
// Uses a combination of uniform sampling and peak preservation.
|
|
56
|
-
function subsample_preserve_peaks(
|
|
57
|
-
const num_points =
|
|
67
|
+
function subsample_preserve_peaks(x_vals, y_vals, target_points) {
|
|
68
|
+
const num_points = x_vals.length;
|
|
58
69
|
if (num_points <= target_points)
|
|
59
|
-
return { x:
|
|
70
|
+
return { x: x_vals, y: y_vals };
|
|
60
71
|
// Find peaks (local maxima with significant height)
|
|
61
72
|
const peaks = [];
|
|
62
|
-
const threshold = Math.max(...
|
|
73
|
+
const threshold = Math.max(...y_vals) * 0.05; // 5% of max as significance threshold
|
|
63
74
|
for (let idx = 1; idx < num_points - 1; idx++) {
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
|
|
75
|
+
if (y_vals[idx] > y_vals[idx - 1] &&
|
|
76
|
+
y_vals[idx] > y_vals[idx + 1] &&
|
|
77
|
+
y_vals[idx] > threshold) {
|
|
67
78
|
peaks.push(idx);
|
|
68
79
|
}
|
|
69
80
|
}
|
|
@@ -72,7 +83,7 @@ function subsample_preserve_peaks(x_values, y_values, target_points) {
|
|
|
72
83
|
const uniform_slots = target_points - peak_slots;
|
|
73
84
|
// Select top peaks by height
|
|
74
85
|
const top_peaks = peaks
|
|
75
|
-
.map((idx) => ({ idx, y:
|
|
86
|
+
.map((idx) => ({ idx, y: y_vals[idx] }))
|
|
76
87
|
.sort((a, b) => b.y - a.y)
|
|
77
88
|
.slice(0, peak_slots)
|
|
78
89
|
.map((peak) => peak.idx);
|
|
@@ -90,8 +101,8 @@ function subsample_preserve_peaks(x_values, y_values, target_points) {
|
|
|
90
101
|
// Merge and sort all selected indices
|
|
91
102
|
const selected = [...new Set([...uniform_indices, ...top_peaks])].sort((a, b) => a - b);
|
|
92
103
|
return {
|
|
93
|
-
x: selected.map((idx) =>
|
|
94
|
-
y: selected.map((idx) =>
|
|
104
|
+
x: selected.map((idx) => x_vals[idx]),
|
|
105
|
+
y: selected.map((idx) => y_vals[idx]),
|
|
95
106
|
};
|
|
96
107
|
}
|
|
97
108
|
// Parse a two-column ASCII file containing XRD data (2θ, intensity).
|
|
@@ -110,8 +121,8 @@ export function parse_xy_file(content) {
|
|
|
110
121
|
const parts = trimmed.split(/[\s,]+/).filter(Boolean);
|
|
111
122
|
if (parts.length < 2)
|
|
112
123
|
continue;
|
|
113
|
-
const two_theta =
|
|
114
|
-
const intensity =
|
|
124
|
+
const two_theta = Number(parts[0]);
|
|
125
|
+
const intensity = Number(parts[1]);
|
|
115
126
|
if (!isNaN(two_theta) && !isNaN(intensity)) {
|
|
116
127
|
x_values.push(two_theta);
|
|
117
128
|
y_values.push(intensity);
|
|
@@ -122,24 +133,17 @@ export function parse_xy_file(content) {
|
|
|
122
133
|
const normalized = normalize_and_subsample(x_values, y_values);
|
|
123
134
|
return { x: normalized.x, y: normalized.y };
|
|
124
135
|
}
|
|
125
|
-
// Parse a .xye file containing three-column XRD data (2θ, intensity, error).
|
|
126
|
-
// Same as .xy but with an optional third column for uncertainties (ignored for plotting).
|
|
127
|
-
export function parse_xye_file(content) {
|
|
128
|
-
// XYE is just XY with an extra error column - reuse parse_xy_file which already
|
|
129
|
-
// handles extra columns by only taking the first two
|
|
130
|
-
return parse_xy_file(content);
|
|
131
|
-
}
|
|
132
136
|
// Parse a Rigaku .ras file (ASCII format with structured header).
|
|
133
137
|
// Format: *RAS_HEADER_START ... *RAS_HEADER_END followed by *RAS_INT_START ... *RAS_INT_END
|
|
134
138
|
// Data can be single-column (intensity only) or multi-column (2-theta, intensity, [error])
|
|
135
139
|
export function parse_ras_file(content) {
|
|
136
140
|
const lines = content.split(/\r?\n/);
|
|
137
141
|
// Extract header values (used as fallback for single-column data)
|
|
138
|
-
const header_start = extract_header_value(lines, /\*MEAS_SCAN_START\s*=\s*([\d.+-]+)/i) ??
|
|
139
|
-
extract_header_value(lines, /\*SCAN_START\s*=\s*([\d.+-]+)/i) ??
|
|
142
|
+
const header_start = extract_header_value(lines, /\*MEAS_SCAN_START\s*=\s*(?<value>[\d.+-]+)/i) ??
|
|
143
|
+
extract_header_value(lines, /\*SCAN_START\s*=\s*(?<value>[\d.+-]+)/i) ??
|
|
140
144
|
0;
|
|
141
|
-
const header_step = extract_header_value(lines, /\*MEAS_SCAN_STEP\s*=\s*([\d.+-]+)/i) ??
|
|
142
|
-
extract_header_value(lines, /\*SCAN_STEP\s*=\s*([\d.+-]+)/i) ??
|
|
145
|
+
const header_step = extract_header_value(lines, /\*MEAS_SCAN_STEP\s*=\s*(?<value>[\d.+-]+)/i) ??
|
|
146
|
+
extract_header_value(lines, /\*SCAN_STEP\s*=\s*(?<value>[\d.+-]+)/i) ??
|
|
143
147
|
DEFAULT_STEP_SIZE;
|
|
144
148
|
// Find intensity data section between *RAS_INT_START and *RAS_INT_END
|
|
145
149
|
// Also handle older format with *RAS_DATA_START
|
|
@@ -204,11 +208,11 @@ export function parse_ras_file(content) {
|
|
|
204
208
|
export function parse_uxd_file(content) {
|
|
205
209
|
const lines = content.split(/\r?\n/);
|
|
206
210
|
// Extract header values (underscore-prefixed keys)
|
|
207
|
-
const start = extract_header_value(lines, /_2THETA_?START\s*=?\s*([\d.+-]+)/i) ??
|
|
208
|
-
extract_header_value(lines, /_START\s*=?\s*([\d.+-]+)/i) ??
|
|
211
|
+
const start = extract_header_value(lines, /_2THETA_?START\s*=?\s*(?<value>[\d.+-]+)/i) ??
|
|
212
|
+
extract_header_value(lines, /_START\s*=?\s*(?<value>[\d.+-]+)/i) ??
|
|
209
213
|
0;
|
|
210
|
-
const step = extract_header_value(lines, /_STEP_?SIZE\s*=?\s*([\d.+-]+)/i) ??
|
|
211
|
-
extract_header_value(lines, /_STEPWIDTH\s*=?\s*([\d.+-]+)/i) ??
|
|
214
|
+
const step = extract_header_value(lines, /_STEP_?SIZE\s*=?\s*(?<value>[\d.+-]+)/i) ??
|
|
215
|
+
extract_header_value(lines, /_STEPWIDTH\s*=?\s*(?<value>[\d.+-]+)/i) ??
|
|
212
216
|
DEFAULT_STEP_SIZE;
|
|
213
217
|
// Find intensity data after _COUNTS marker
|
|
214
218
|
let in_data_section = false;
|
|
@@ -247,13 +251,13 @@ export function parse_gsas_file(content) {
|
|
|
247
251
|
let bin_type = `CONST`; // CONST, RALF, or others
|
|
248
252
|
let found_bank = false;
|
|
249
253
|
for (const line of lines) {
|
|
250
|
-
const bank_match = /BANK\s+\d+\s+(
|
|
254
|
+
const bank_match = /BANK\s+\d+\s+(?<npts>\d+)\s+\d+\s+(?<bin_type>\w+)\s+(?<bcoef1>[\d.+-]+)\s+(?<bcoef2>[\d.+-]+)/i.exec(line);
|
|
251
255
|
if (bank_match) {
|
|
252
256
|
bin_type = bank_match[2].toUpperCase();
|
|
253
257
|
// For CONST type: BCOEF1 is start*100 (centidegrees), BCOEF2 is step*100
|
|
254
258
|
if (bin_type === `CONST`) {
|
|
255
|
-
start =
|
|
256
|
-
step =
|
|
259
|
+
start = Number(bank_match[3]) / 100; // Convert centidegrees to degrees
|
|
260
|
+
step = Number(bank_match[4]) / 100;
|
|
257
261
|
}
|
|
258
262
|
else if (bin_type !== `FXYE`) {
|
|
259
263
|
// Other bin types like RALF (time-of-flight) are not fully supported
|
|
@@ -335,15 +339,15 @@ function parse_bruker_raw_v1(view, bytes) {
|
|
|
335
339
|
// V1 has ASCII header with scan parameters followed by binary data
|
|
336
340
|
const header_text = String.fromCharCode(...bytes.slice(0, 512));
|
|
337
341
|
// Try to find scan parameters in ASCII header
|
|
338
|
-
const start_match = /START\s*=\s*([\d.+-]+)/i.exec(header_text);
|
|
339
|
-
const step_match = /STEP\s*=\s*([\d.+-]+)/i.exec(header_text);
|
|
340
|
-
const count_match = /(?:COUNT|POINTS|NPTS)\s*=\s*(
|
|
341
|
-
const start = start_match ?
|
|
342
|
-
const step = step_match ?
|
|
342
|
+
const start_match = /START\s*=\s*(?<value>[\d.+-]+)/i.exec(header_text);
|
|
343
|
+
const step_match = /STEP\s*=\s*(?<value>[\d.+-]+)/i.exec(header_text);
|
|
344
|
+
const count_match = /(?:COUNT|POINTS|NPTS)\s*=\s*(?<value>\d+)/i.exec(header_text);
|
|
345
|
+
const start = start_match ? Number(start_match[1]) : 0;
|
|
346
|
+
const step = step_match ? Number(step_match[1]) : DEFAULT_STEP_SIZE;
|
|
343
347
|
// Find where binary data starts (after header)
|
|
344
348
|
let data_offset = 512;
|
|
345
349
|
if (count_match) {
|
|
346
|
-
const expected_count =
|
|
350
|
+
const expected_count = Math.trunc(Number(count_match[1]));
|
|
347
351
|
// Binary data is typically 4 bytes per intensity (float32)
|
|
348
352
|
data_offset = bytes.length - expected_count * 4;
|
|
349
353
|
}
|
|
@@ -399,14 +403,14 @@ function parse_rigaku_raw_file(data) {
|
|
|
399
403
|
const bytes = new Uint8Array(data);
|
|
400
404
|
// Try to find ASCII header section with scan parameters
|
|
401
405
|
const header_text = String.fromCharCode(...bytes.slice(0, Math.min(2048, bytes.length)));
|
|
402
|
-
const start_match = /(?:START|2THETA_START|SCAN_START)\s*[:=]?\s*([\d.+-]+)/i.exec(header_text);
|
|
403
|
-
const step_match = /(?:STEP|STEP_SIZE|SCAN_STEP)\s*[:=]?\s*([\d.+-]+)/i.exec(header_text);
|
|
404
|
-
const count_match = /(?:COUNT|POINTS|NPTS|STEPS)\s*[:=]?\s*(
|
|
406
|
+
const start_match = /(?:START|2THETA_START|SCAN_START)\s*[:=]?\s*(?<value>[\d.+-]+)/i.exec(header_text);
|
|
407
|
+
const step_match = /(?:STEP|STEP_SIZE|SCAN_STEP)\s*[:=]?\s*(?<value>[\d.+-]+)/i.exec(header_text);
|
|
408
|
+
const count_match = /(?:COUNT|POINTS|NPTS|STEPS)\s*[:=]?\s*(?<value>\d+)/i.exec(header_text);
|
|
405
409
|
if (!start_match && !step_match && !count_match)
|
|
406
410
|
return null; // Not a recognizable Rigaku format
|
|
407
|
-
const start = start_match ?
|
|
408
|
-
const step = step_match ?
|
|
409
|
-
const expected_count = count_match ?
|
|
411
|
+
const start = start_match ? Number(start_match[1]) : 0;
|
|
412
|
+
const step = step_match ? Number(step_match[1]) : DEFAULT_STEP_SIZE;
|
|
413
|
+
const expected_count = count_match ? Math.trunc(Number(count_match[1])) : 0;
|
|
410
414
|
// Find binary data section
|
|
411
415
|
// Rigaku typically stores intensities as 32-bit floats or integers
|
|
412
416
|
let data_offset = 0;
|
|
@@ -538,7 +542,7 @@ function extract_scan_parameters_xml(doc) {
|
|
|
538
542
|
const intensity_elements = doc.querySelectorAll(`I, Count`);
|
|
539
543
|
if (intensity_elements.length > 0) {
|
|
540
544
|
intensities = Array.from(intensity_elements)
|
|
541
|
-
.map((el) =>
|
|
545
|
+
.map((el) => Number(el.textContent?.trim() || NaN))
|
|
542
546
|
.filter((val) => !isNaN(val));
|
|
543
547
|
}
|
|
544
548
|
}
|
|
@@ -559,9 +563,9 @@ function extract_scan_parameters_xml(doc) {
|
|
|
559
563
|
const parts = text.split(`,`);
|
|
560
564
|
// Need at least 5 columns: time, flag, 2Theta, Theta/Omega, Intensity
|
|
561
565
|
if (parts.length >= 5) {
|
|
562
|
-
const two_theta =
|
|
566
|
+
const two_theta = Number(parts[2]);
|
|
563
567
|
// Intensity is always the last column
|
|
564
|
-
const intensity =
|
|
568
|
+
const intensity = Number(parts[parts.length - 1]);
|
|
565
569
|
if (!isNaN(two_theta) && !isNaN(intensity)) {
|
|
566
570
|
two_theta_values.push(two_theta);
|
|
567
571
|
intensities.push(intensity);
|
|
@@ -582,9 +586,7 @@ function extract_scan_parameters_xml(doc) {
|
|
|
582
586
|
if (!intensities?.length)
|
|
583
587
|
return null;
|
|
584
588
|
// Extract scan range parameters
|
|
585
|
-
|
|
586
|
-
let step_size = DEFAULT_STEP_SIZE;
|
|
587
|
-
// Try to find start angle - multiple possible locations
|
|
589
|
+
// Try multiple possible tag names, returning the first that parses (and passes `ok`)
|
|
588
590
|
const start_candidates = [
|
|
589
591
|
`Start`,
|
|
590
592
|
`TwoThetaStart`,
|
|
@@ -593,17 +595,6 @@ function extract_scan_parameters_xml(doc) {
|
|
|
593
595
|
`ScanAxisBeginPosition`,
|
|
594
596
|
`Begin`,
|
|
595
597
|
];
|
|
596
|
-
for (const tag of start_candidates) {
|
|
597
|
-
const el = doc.querySelector(tag);
|
|
598
|
-
if (el?.textContent) {
|
|
599
|
-
const val = parseFloat(el.textContent);
|
|
600
|
-
if (!isNaN(val)) {
|
|
601
|
-
start_angle = val;
|
|
602
|
-
break;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
// Try to find step size - multiple possible locations
|
|
607
598
|
const step_candidates = [
|
|
608
599
|
`Step`,
|
|
609
600
|
`StepSize`,
|
|
@@ -612,23 +603,15 @@ function extract_scan_parameters_xml(doc) {
|
|
|
612
603
|
`ScanAxisIncrement`,
|
|
613
604
|
`StepWidth`,
|
|
614
605
|
];
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
if (el?.textContent) {
|
|
618
|
-
const val = parseFloat(el.textContent);
|
|
619
|
-
if (!isNaN(val) && val > 0) {
|
|
620
|
-
step_size = val;
|
|
621
|
-
break;
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
}
|
|
606
|
+
const start_angle = query_first_number(doc, start_candidates) ?? 0;
|
|
607
|
+
let step_size = query_first_number(doc, step_candidates, (val) => val > 0) ?? DEFAULT_STEP_SIZE;
|
|
625
608
|
// Alternative: calculate step from start/end and count
|
|
626
609
|
if (step_size === DEFAULT_STEP_SIZE) {
|
|
627
610
|
const end_candidates = [`Stop`, `TwoThetaEnd`, `EndPosition`, `2ThetaEnd`, `End`];
|
|
628
611
|
for (const tag of end_candidates) {
|
|
629
612
|
const el = doc.querySelector(tag);
|
|
630
613
|
if (el?.textContent) {
|
|
631
|
-
const end_val =
|
|
614
|
+
const end_val = Number(el.textContent);
|
|
632
615
|
if (!isNaN(end_val) && end_val > start_angle && intensities.length > 1) {
|
|
633
616
|
step_size = (end_val - start_angle) / (intensities.length - 1);
|
|
634
617
|
break;
|
|
@@ -660,8 +643,8 @@ export function parse_xrdml_file(content) {
|
|
|
660
643
|
const end_el = two_theta_positions.querySelector(`endPosition`);
|
|
661
644
|
if (!start_el?.textContent || !end_el?.textContent)
|
|
662
645
|
return null;
|
|
663
|
-
const start_angle =
|
|
664
|
-
const end_angle =
|
|
646
|
+
const start_angle = Number(start_el.textContent);
|
|
647
|
+
const end_angle = Number(end_el.textContent);
|
|
665
648
|
if (isNaN(start_angle) || isNaN(end_angle))
|
|
666
649
|
return null;
|
|
667
650
|
// Extract intensities
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterviz",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Interactive visualizations for materials science: periodic tables, 3D structures, MD trajectories, heatmaps, scatter plots.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chemistry",
|
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
21
|
"type": "module",
|
|
22
|
+
"sideEffects": [
|
|
23
|
+
"**/*.css"
|
|
24
|
+
],
|
|
22
25
|
"exports": {
|
|
23
26
|
".": {
|
|
24
27
|
"types": "./dist/index.d.ts",
|
|
@@ -30,7 +33,6 @@
|
|
|
30
33
|
"default": "./dist/element/data.js"
|
|
31
34
|
},
|
|
32
35
|
"./app.css": {
|
|
33
|
-
"types": "./dist/app.css.d.ts",
|
|
34
36
|
"default": "./dist/app.css"
|
|
35
37
|
},
|
|
36
38
|
"./brillouin": {
|
|
@@ -109,10 +111,18 @@
|
|
|
109
111
|
"types": "./dist/plot/index.d.ts",
|
|
110
112
|
"default": "./dist/plot/index.js"
|
|
111
113
|
},
|
|
114
|
+
"./plot/*": {
|
|
115
|
+
"types": "./dist/plot/*/index.d.ts",
|
|
116
|
+
"default": "./dist/plot/*/index.js"
|
|
117
|
+
},
|
|
112
118
|
"./rdf": {
|
|
113
119
|
"types": "./dist/rdf/index.d.ts",
|
|
114
120
|
"default": "./dist/rdf/index.js"
|
|
115
121
|
},
|
|
122
|
+
"./scene": {
|
|
123
|
+
"types": "./dist/scene/index.d.ts",
|
|
124
|
+
"default": "./dist/scene/index.js"
|
|
125
|
+
},
|
|
116
126
|
"./spectral": {
|
|
117
127
|
"types": "./dist/spectral/index.d.ts",
|
|
118
128
|
"default": "./dist/spectral/index.js"
|
|
@@ -138,7 +148,6 @@
|
|
|
138
148
|
"default": "./dist/theme/index.js"
|
|
139
149
|
},
|
|
140
150
|
"./theme/themes": {
|
|
141
|
-
"types": "./dist/theme/themes.d.ts",
|
|
142
151
|
"default": "./dist/theme/themes.mjs"
|
|
143
152
|
},
|
|
144
153
|
"./tooltip": {
|
|
@@ -168,15 +177,16 @@
|
|
|
168
177
|
},
|
|
169
178
|
"scripts": {
|
|
170
179
|
"test": "vp test --run && playwright test",
|
|
171
|
-
"knip": "knip --include dependencies,
|
|
180
|
+
"knip": "knip --include dependencies,exports,types,nsExports",
|
|
181
|
+
"publint": "publint",
|
|
172
182
|
"package-dist-assets": "node scripts/package-dist-assets.ts",
|
|
173
183
|
"package:dist": "svelte-package && pnpm run package-dist-assets",
|
|
174
184
|
"prepare": "svelte-kit sync && pnpm run package:dist",
|
|
175
185
|
"prepublishOnly": "pnpm run package:dist"
|
|
176
186
|
},
|
|
177
187
|
"dependencies": {
|
|
178
|
-
"@spglib/moyo-wasm": "^0.
|
|
179
|
-
"@sveltejs/kit": "2.
|
|
188
|
+
"@spglib/moyo-wasm": "^0.14.0",
|
|
189
|
+
"@sveltejs/kit": "2.69.2",
|
|
180
190
|
"@threlte/core": "^8.5.16",
|
|
181
191
|
"@threlte/extras": "^9.21.0",
|
|
182
192
|
"d3-array": "^3.2.4",
|
|
@@ -189,19 +199,19 @@
|
|
|
189
199
|
"d3-scale-chromatic": "^3.1.0",
|
|
190
200
|
"d3-shape": "^3.2.0",
|
|
191
201
|
"d3-time-format": "^4.1.0",
|
|
192
|
-
"dompurify": "3.4.
|
|
202
|
+
"dompurify": "3.4.7",
|
|
193
203
|
"fflate": "^0.8.3",
|
|
194
|
-
"h5wasm": "^0.10.
|
|
195
|
-
"js-yaml": "^
|
|
196
|
-
"svelte-multiselect": "^11.
|
|
197
|
-
"three": "^0.
|
|
204
|
+
"h5wasm": "^0.10.3",
|
|
205
|
+
"js-yaml": "^5.2.1",
|
|
206
|
+
"svelte-multiselect": "^11.8.0",
|
|
207
|
+
"three": "^0.185.1"
|
|
198
208
|
},
|
|
199
209
|
"devDependencies": {
|
|
200
210
|
"@janosh/vite-config": "github:janosh/dotfiles",
|
|
201
|
-
"@playwright/test": "^1.
|
|
211
|
+
"@playwright/test": "^1.61.1",
|
|
202
212
|
"@sveltejs/adapter-static": "3.0.10",
|
|
203
213
|
"@sveltejs/package": "^2.5.8",
|
|
204
|
-
"@sveltejs/vite-plugin-svelte": "^7.
|
|
214
|
+
"@sveltejs/vite-plugin-svelte": "^7.2.0",
|
|
205
215
|
"@types/d3-array": "^3.2.2",
|
|
206
216
|
"@types/d3-color": "^3.1.3",
|
|
207
217
|
"@types/d3-format": "^3.0.4",
|
|
@@ -212,23 +222,21 @@
|
|
|
212
222
|
"@types/d3-scale-chromatic": "^3.1.0",
|
|
213
223
|
"@types/d3-shape": "^3.1.8",
|
|
214
224
|
"@types/d3-time-format": "^4.0.3",
|
|
215
|
-
"@types/
|
|
216
|
-
"@
|
|
217
|
-
"@
|
|
218
|
-
"
|
|
219
|
-
"
|
|
220
|
-
"@wooorm/starry-night": "^3.9.0",
|
|
221
|
-
"happy-dom": "^20.10.1",
|
|
222
|
-
"knip": "^6.16.0",
|
|
225
|
+
"@types/three": "^0.185.1",
|
|
226
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
227
|
+
"@wooorm/starry-night": "^3.10.0",
|
|
228
|
+
"happy-dom": "^20.10.6",
|
|
229
|
+
"knip": "^6.25.0",
|
|
223
230
|
"mdsvex": "^0.12.7",
|
|
231
|
+
"publint": "^0.3.21",
|
|
224
232
|
"rehype-katex": "^7.0.1",
|
|
225
233
|
"remark-math": "3.0.1",
|
|
226
|
-
"svelte": "^5.56.
|
|
227
|
-
"svelte-check
|
|
228
|
-
"typescript": "6.0.3",
|
|
229
|
-
"vite": "^8.
|
|
230
|
-
"vite-plus": "
|
|
231
|
-
"vitest": "4.1.
|
|
234
|
+
"svelte": "^5.56.4",
|
|
235
|
+
"svelte-check": "^4.7.2",
|
|
236
|
+
"typescript": "^6.0.3",
|
|
237
|
+
"vite": "^8.1.4",
|
|
238
|
+
"vite-plus": "^0.2.4",
|
|
239
|
+
"vitest": "4.1.10"
|
|
232
240
|
},
|
|
233
241
|
"peerDependencies": {
|
|
234
242
|
"svelte": "^5.0.0"
|
|
@@ -238,15 +246,48 @@
|
|
|
238
246
|
},
|
|
239
247
|
"packageManager": "pnpm@11.5.0",
|
|
240
248
|
"knip": {
|
|
241
|
-
"entry": [
|
|
242
|
-
"svelte.config.ts"
|
|
243
|
-
],
|
|
244
|
-
"ignore": [
|
|
245
|
-
"extensions/**"
|
|
246
|
-
],
|
|
247
249
|
"ignoreDependencies": [
|
|
248
|
-
"
|
|
249
|
-
|
|
250
|
-
|
|
250
|
+
"svelte-check"
|
|
251
|
+
],
|
|
252
|
+
"workspaces": {
|
|
253
|
+
".": {
|
|
254
|
+
"entry": [
|
|
255
|
+
"svelte.config.ts",
|
|
256
|
+
"src/site/**/*.{js,ts,svelte}"
|
|
257
|
+
],
|
|
258
|
+
"paths": {
|
|
259
|
+
"$lib": [
|
|
260
|
+
"./src/lib"
|
|
261
|
+
],
|
|
262
|
+
"$lib/*": [
|
|
263
|
+
"./src/lib/*"
|
|
264
|
+
],
|
|
265
|
+
"$site": [
|
|
266
|
+
"./src/site"
|
|
267
|
+
],
|
|
268
|
+
"$site/*": [
|
|
269
|
+
"./src/site/*"
|
|
270
|
+
]
|
|
271
|
+
},
|
|
272
|
+
"ignore": [
|
|
273
|
+
"extensions/anywidget/**",
|
|
274
|
+
"extensions/dash/**"
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
"extensions/vscode": {
|
|
278
|
+
"entry": [
|
|
279
|
+
"src/extension.ts",
|
|
280
|
+
"src/webview/main.ts"
|
|
281
|
+
],
|
|
282
|
+
"paths": {
|
|
283
|
+
"$lib": [
|
|
284
|
+
"../../src/lib"
|
|
285
|
+
],
|
|
286
|
+
"$lib/*": [
|
|
287
|
+
"../../src/lib/*"
|
|
288
|
+
]
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
251
292
|
}
|
|
252
293
|
}
|
package/dist/api/mp.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare const mp_bucket = "https://materialsproject-build.s3.amazonaws.com/collections/2022-10-28";
|
|
2
|
-
export declare function fetch_material_data<T extends Record<string, unknown>>(material_id: string, bucket?: string): Promise<{
|
|
3
|
-
summary: T | null;
|
|
4
|
-
similarity: T | null;
|
|
5
|
-
robocrys: T | null;
|
|
6
|
-
}>;
|
package/dist/api/mp.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { fetch_zipped } from '../io/fetch';
|
|
2
|
-
// Materials Project S3 bucket for pre-computed data (may be outdated)
|
|
3
|
-
export const mp_bucket = `https://materialsproject-build.s3.amazonaws.com/collections/2022-10-28`;
|
|
4
|
-
// Fetch all material data in parallel
|
|
5
|
-
export async function fetch_material_data(material_id, bucket = mp_bucket) {
|
|
6
|
-
try {
|
|
7
|
-
const results = await Promise.allSettled([
|
|
8
|
-
fetch_zipped(`${bucket}/summary/${material_id}.json.gz`),
|
|
9
|
-
fetch_zipped(`${bucket}/similarity/${material_id}.json.gz`),
|
|
10
|
-
fetch_zipped(`${bucket}/robocrys/${material_id}.json.gz`),
|
|
11
|
-
]);
|
|
12
|
-
return {
|
|
13
|
-
summary: results[0].status === `fulfilled` ? results[0].value : null,
|
|
14
|
-
similarity: results[1].status === `fulfilled` ? results[1].value : null,
|
|
15
|
-
robocrys: results[2].status === `fulfilled` ? results[2].value : null,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
catch (err) {
|
|
19
|
-
console.error(`Failed to fetch material data:`, err);
|
|
20
|
-
return { summary: null, similarity: null, robocrys: null };
|
|
21
|
-
}
|
|
22
|
-
}
|