matterviz 0.3.4 → 0.3.6
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/.vscode/launch.json +13 -0
- package/.vscodeignore +7 -0
- package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
- package/dist/assets/browser-DdDecX_W.js +1 -0
- package/dist/assets/export-qgn-H9y6.js +2 -0
- package/dist/assets/main-DiKYzti2.css +1 -0
- package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
- package/dist/extension.js +31293 -0
- package/dist/src/lib/FilePicker.svelte +360 -0
- package/dist/src/lib/MillerIndexInput.svelte +66 -0
- package/dist/src/lib/api/mp.ts +26 -0
- package/dist/src/lib/api/optimade.ts +204 -0
- package/dist/src/lib/app.css +247 -0
- package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
- package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
- package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
- package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
- package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
- package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
- package/dist/src/lib/brillouin/compute.ts +529 -0
- package/dist/src/lib/brillouin/index.ts +8 -0
- package/dist/src/lib/brillouin/types.ts +51 -0
- package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
- package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
- package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
- package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
- package/dist/src/lib/chempot-diagram/color.ts +42 -0
- package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
- package/dist/src/lib/chempot-diagram/index.ts +6 -0
- package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
- package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
- package/dist/src/lib/chempot-diagram/types.ts +130 -0
- package/dist/src/lib/colors/index.ts +249 -0
- package/dist/src/lib/composition/BarChart.svelte +297 -0
- package/dist/src/lib/composition/BubbleChart.svelte +218 -0
- package/dist/src/lib/composition/Composition.svelte +165 -0
- package/dist/src/lib/composition/Formula.svelte +268 -0
- package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
- package/dist/src/lib/composition/PieChart.svelte +323 -0
- package/dist/src/lib/composition/format.ts +155 -0
- package/dist/src/lib/composition/index.ts +37 -0
- package/dist/src/lib/composition/parse.ts +605 -0
- package/dist/src/lib/constants.ts +134 -0
- package/dist/src/lib/controls.ts +42 -0
- package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
- package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
- package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
- package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
- package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
- package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
- package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
- package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
- package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
- package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
- package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
- package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
- package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
- package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
- package/dist/src/lib/convex-hull/helpers.ts +932 -0
- package/dist/src/lib/convex-hull/index.ts +202 -0
- package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
- package/dist/src/lib/convex-hull/types.ts +267 -0
- package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
- package/dist/src/lib/coordination/calc-coordination.ts +93 -0
- package/dist/src/lib/coordination/index.ts +9 -0
- package/dist/src/lib/effects.svelte.ts +48 -0
- package/dist/src/lib/element/BohrAtom.svelte +147 -0
- package/dist/src/lib/element/ElementHeading.svelte +26 -0
- package/dist/src/lib/element/ElementPhoto.svelte +57 -0
- package/dist/src/lib/element/ElementStats.svelte +80 -0
- package/dist/src/lib/element/ElementTile.svelte +484 -0
- package/dist/src/lib/element/data.json.gz.d.ts +4 -0
- package/dist/src/lib/element/data.ts +14 -0
- package/dist/src/lib/element/index.ts +8 -0
- package/dist/src/lib/element/types.ts +62 -0
- package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
- package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
- package/dist/src/lib/feedback/index.ts +4 -0
- package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
- package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
- package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
- package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
- package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
- package/dist/src/lib/fermi-surface/compute.ts +728 -0
- package/dist/src/lib/fermi-surface/constants.ts +32 -0
- package/dist/src/lib/fermi-surface/export.ts +64 -0
- package/dist/src/lib/fermi-surface/index.ts +14 -0
- package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
- package/dist/src/lib/fermi-surface/parse.ts +574 -0
- package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
- package/dist/src/lib/fermi-surface/types.ts +159 -0
- package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
- package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/src/lib/heatmap-matrix/index.ts +167 -0
- package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
- package/dist/src/lib/icons.ts +650 -0
- package/dist/src/lib/index.ts +61 -0
- package/dist/src/lib/io/decompress.ts +92 -0
- package/dist/src/lib/io/export.ts +385 -0
- package/dist/src/lib/io/fetch.ts +46 -0
- package/dist/src/lib/io/file-drop.ts +51 -0
- package/dist/src/lib/io/index.ts +7 -0
- package/dist/src/lib/io/is-binary.ts +24 -0
- package/dist/src/lib/io/types.ts +8 -0
- package/dist/src/lib/io/url-drop.ts +141 -0
- package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
- package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
- package/dist/src/lib/isosurface/index.ts +7 -0
- package/dist/src/lib/isosurface/parse.ts +656 -0
- package/dist/src/lib/isosurface/slice.ts +175 -0
- package/dist/src/lib/isosurface/types.ts +309 -0
- package/dist/src/lib/labels.ts +320 -0
- package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
- package/dist/src/lib/layout/InfoCard.svelte +120 -0
- package/dist/src/lib/layout/InfoTag.svelte +185 -0
- package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
- package/dist/src/lib/layout/SettingsSection.svelte +148 -0
- package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
- package/dist/src/lib/layout/fullscreen.ts +65 -0
- package/dist/src/lib/layout/index.ts +11 -0
- package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
- package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
- package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
- package/dist/src/lib/layout/json-tree/index.ts +3 -0
- package/dist/src/lib/layout/json-tree/types.ts +126 -0
- package/dist/src/lib/layout/json-tree/utils.ts +682 -0
- package/dist/src/lib/marching-cubes.ts +614 -0
- package/dist/src/lib/math.ts +1081 -0
- package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
- package/dist/src/lib/overlays/CopyButton.svelte +45 -0
- package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
- package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
- package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
- package/dist/src/lib/overlays/index.ts +3 -0
- package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
- package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
- package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
- package/dist/src/lib/periodic-table/index.ts +12 -0
- package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
- package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
- package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
- package/dist/src/lib/phase-diagram/colors.ts +58 -0
- package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
- package/dist/src/lib/phase-diagram/index.ts +13 -0
- package/dist/src/lib/phase-diagram/parse.ts +348 -0
- package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
- package/dist/src/lib/phase-diagram/types.ts +144 -0
- package/dist/src/lib/phase-diagram/utils.ts +775 -0
- package/dist/src/lib/plot/AxisLabel.svelte +51 -0
- package/dist/src/lib/plot/BarPlot.svelte +2113 -0
- package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
- package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
- package/dist/src/lib/plot/ColorBar.svelte +721 -0
- package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
- package/dist/src/lib/plot/ElementScatter.svelte +63 -0
- package/dist/src/lib/plot/FillArea.svelte +223 -0
- package/dist/src/lib/plot/Histogram.svelte +1558 -0
- package/dist/src/lib/plot/HistogramControls.svelte +212 -0
- package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
- package/dist/src/lib/plot/Line.svelte +84 -0
- package/dist/src/lib/plot/PlotAxis.svelte +169 -0
- package/dist/src/lib/plot/PlotControls.svelte +537 -0
- package/dist/src/lib/plot/PlotLegend.svelte +569 -0
- package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
- package/dist/src/lib/plot/PortalSelect.svelte +253 -0
- package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
- package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
- package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
- package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
- package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
- package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
- package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
- package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
- package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
- package/dist/src/lib/plot/Surface3D.svelte +197 -0
- package/dist/src/lib/plot/ZeroLines.svelte +97 -0
- package/dist/src/lib/plot/ZoomRect.svelte +23 -0
- package/dist/src/lib/plot/adaptive-density.ts +316 -0
- package/dist/src/lib/plot/auto-place.ts +184 -0
- package/dist/src/lib/plot/axis-utils.ts +122 -0
- package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
- package/dist/src/lib/plot/data-cleaning.ts +1069 -0
- package/dist/src/lib/plot/data-transform.ts +69 -0
- package/dist/src/lib/plot/defaults.ts +9 -0
- package/dist/src/lib/plot/fill-utils.ts +494 -0
- package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
- package/dist/src/lib/plot/index.ts +53 -0
- package/dist/src/lib/plot/interactions.ts +119 -0
- package/dist/src/lib/plot/layout.ts +425 -0
- package/dist/src/lib/plot/reference-line.ts +426 -0
- package/dist/src/lib/plot/scales.ts +654 -0
- package/dist/src/lib/plot/svg.ts +23 -0
- package/dist/src/lib/plot/types.ts +1144 -0
- package/dist/src/lib/plot/utils/label-placement.ts +541 -0
- package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
- package/dist/src/lib/plot/utils.ts +11 -0
- package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
- package/dist/src/lib/rdf/calc-rdf.ts +167 -0
- package/dist/src/lib/rdf/index.ts +27 -0
- package/dist/src/lib/sanitize.ts +126 -0
- package/dist/src/lib/settings.ts +1479 -0
- package/dist/src/lib/spectral/Bands.svelte +1040 -0
- package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
- package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
- package/dist/src/lib/spectral/Dos.svelte +697 -0
- package/dist/src/lib/spectral/helpers.ts +1381 -0
- package/dist/src/lib/spectral/index.ts +8 -0
- package/dist/src/lib/spectral/types.ts +112 -0
- package/dist/src/lib/state.svelte.ts +64 -0
- package/dist/src/lib/structure/Arrow.svelte +72 -0
- package/dist/src/lib/structure/AtomLegend.svelte +815 -0
- package/dist/src/lib/structure/Bond.svelte +140 -0
- package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
- package/dist/src/lib/structure/CellSelect.svelte +349 -0
- package/dist/src/lib/structure/Cylinder.svelte +45 -0
- package/dist/src/lib/structure/Lattice.svelte +196 -0
- package/dist/src/lib/structure/Structure.svelte +2248 -0
- package/dist/src/lib/structure/StructureControls.svelte +1273 -0
- package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
- package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
- package/dist/src/lib/structure/StructureScene.svelte +2255 -0
- package/dist/src/lib/structure/atom-properties.ts +316 -0
- package/dist/src/lib/structure/bond-order-perception.ts +447 -0
- package/dist/src/lib/structure/bonding.ts +944 -0
- package/dist/src/lib/structure/export.ts +861 -0
- package/dist/src/lib/structure/index.ts +291 -0
- package/dist/src/lib/structure/label-placement.ts +130 -0
- package/dist/src/lib/structure/measure.ts +45 -0
- package/dist/src/lib/structure/parse.ts +1705 -0
- package/dist/src/lib/structure/partial-occupancy.ts +183 -0
- package/dist/src/lib/structure/pbc.ts +164 -0
- package/dist/src/lib/structure/supercell.ts +226 -0
- package/dist/src/lib/structure/validation.ts +11 -0
- package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
- package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
- package/dist/src/lib/symmetry/cell-transform.ts +118 -0
- package/dist/src/lib/symmetry/index.ts +348 -0
- package/dist/src/lib/symmetry/spacegroups.ts +404 -0
- package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
- package/dist/src/lib/table/ToggleMenu.svelte +385 -0
- package/dist/src/lib/table/index.ts +139 -0
- package/dist/src/lib/theme/ThemeControl.svelte +53 -0
- package/dist/src/lib/theme/index.ts +107 -0
- package/dist/src/lib/theme/themes.mjs +297 -0
- package/dist/src/lib/time.ts +71 -0
- package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
- package/dist/src/lib/tooltip/index.ts +2 -0
- package/dist/src/lib/tooltip/types.ts +13 -0
- package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
- package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
- package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
- package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
- package/dist/src/lib/trajectory/constants.ts +7 -0
- package/dist/src/lib/trajectory/extract.ts +196 -0
- package/dist/src/lib/trajectory/format-detect.ts +96 -0
- package/dist/src/lib/trajectory/frame-reader.ts +456 -0
- package/dist/src/lib/trajectory/helpers.ts +217 -0
- package/dist/src/lib/trajectory/index.ts +218 -0
- package/dist/src/lib/trajectory/parse/ase.ts +109 -0
- package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
- package/dist/src/lib/trajectory/parse/index.ts +411 -0
- package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
- package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
- package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
- package/dist/src/lib/trajectory/plotting.ts +599 -0
- package/dist/src/lib/trajectory/types.ts +13 -0
- package/dist/src/lib/utils.ts +56 -0
- package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
- package/dist/src/lib/xrd/broadening.ts +130 -0
- package/dist/src/lib/xrd/calc-xrd.ts +397 -0
- package/dist/src/lib/xrd/index.ts +38 -0
- package/dist/src/lib/xrd/parse.ts +858 -0
- package/dist/webview.js +29421 -0
- package/icon.png +0 -0
- package/license +1 -1
- 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/package.json +1461 -231
- package/readme.md +171 -98
- package/scripts/sync-config.ts +101 -0
- package/src/declarations.d.ts +2 -0
- package/src/extension.ts +972 -0
- package/src/node-io.ts +65 -0
- package/src/types.ts +17 -0
- package/src/webview/JsonBrowser.svelte +1079 -0
- package/src/webview/PlotPanel.svelte +346 -0
- package/src/webview/detect.ts +444 -0
- package/src/webview/main.ts +764 -0
- package/src/webview/plot-utils.ts +250 -0
- 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 +604 -0
- package/tests/extension.test.ts +2041 -0
- package/tests/node-io.test.ts +39 -0
- package/tests/plot-utils.test.ts +302 -0
- package/tests/vite-plugin-json-gz.test.ts +114 -0
- package/tests/vscode-mock.ts +18 -0
- package/tests/webview.test.ts +231 -0
- package/tsconfig.json +20 -0
- package/vite-plugin-json-gz.ts +29 -0
- package/vite.config.ts +34 -0
- package/vite.extension.config.ts +34 -0
- package/dist/EmptyState.svelte.d.ts +0 -9
- package/dist/FilePicker.svelte +0 -360
- package/dist/FilePicker.svelte.d.ts +0 -17
- package/dist/Icon.svelte.d.ts +0 -13
- package/dist/MillerIndexInput.svelte +0 -66
- package/dist/MillerIndexInput.svelte.d.ts +0 -7
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/api/optimade.d.ts +0 -45
- package/dist/api/optimade.js +0 -135
- package/dist/app.css +0 -240
- package/dist/brillouin/BrillouinZone.svelte +0 -543
- package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
- package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
- package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
- package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
- package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
- package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
- package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
- package/dist/brillouin/compute.d.ts +0 -17
- package/dist/brillouin/compute.js +0 -422
- package/dist/brillouin/index.d.ts +0 -8
- package/dist/brillouin/index.js +0 -8
- package/dist/brillouin/types.d.ts +0 -48
- package/dist/brillouin/types.js +0 -1
- package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
- package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
- package/dist/chempot-diagram/async-compute.svelte.js +0 -77
- package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
- package/dist/chempot-diagram/chempot-worker.js +0 -11
- package/dist/chempot-diagram/color.d.ts +0 -10
- package/dist/chempot-diagram/color.js +0 -32
- package/dist/chempot-diagram/compute.d.ts +0 -48
- package/dist/chempot-diagram/compute.js +0 -812
- package/dist/chempot-diagram/index.d.ts +0 -6
- package/dist/chempot-diagram/index.js +0 -6
- package/dist/chempot-diagram/pointer.d.ts +0 -16
- package/dist/chempot-diagram/pointer.js +0 -40
- package/dist/chempot-diagram/temperature.d.ts +0 -15
- package/dist/chempot-diagram/temperature.js +0 -36
- package/dist/chempot-diagram/types.d.ts +0 -86
- package/dist/chempot-diagram/types.js +0 -28
- package/dist/colors/index.d.ts +0 -47
- package/dist/colors/index.js +0 -203
- package/dist/composition/BarChart.svelte +0 -297
- package/dist/composition/BarChart.svelte.d.ts +0 -39
- package/dist/composition/BubbleChart.svelte +0 -218
- package/dist/composition/BubbleChart.svelte.d.ts +0 -28
- package/dist/composition/Composition.svelte +0 -164
- package/dist/composition/Composition.svelte.d.ts +0 -15
- package/dist/composition/Formula.svelte +0 -265
- package/dist/composition/Formula.svelte.d.ts +0 -19
- package/dist/composition/FormulaFilter.svelte +0 -1259
- package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
- package/dist/composition/PieChart.svelte +0 -323
- package/dist/composition/PieChart.svelte.d.ts +0 -37
- package/dist/composition/format.d.ts +0 -15
- package/dist/composition/format.js +0 -109
- package/dist/composition/index.d.ts +0 -20
- package/dist/composition/index.js +0 -14
- package/dist/composition/parse.d.ts +0 -55
- package/dist/composition/parse.js +0 -459
- package/dist/constants.d.ts +0 -29
- package/dist/constants.js +0 -105
- package/dist/controls.d.ts +0 -14
- package/dist/controls.js +0 -30
- package/dist/convex-hull/ConvexHull.svelte +0 -157
- package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
- package/dist/convex-hull/ConvexHull2D.svelte +0 -813
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
- package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
- package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
- package/dist/convex-hull/ConvexHullControls.svelte +0 -546
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
- package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
- package/dist/convex-hull/ConvexHullStats.svelte +0 -905
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
- package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
- package/dist/convex-hull/GasPressureControls.svelte +0 -247
- package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
- package/dist/convex-hull/StructurePopup.svelte +0 -116
- package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
- package/dist/convex-hull/TemperatureSlider.svelte +0 -137
- package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
- package/dist/convex-hull/barycentric-coords.d.ts +0 -18
- package/dist/convex-hull/barycentric-coords.js +0 -182
- package/dist/convex-hull/demo-temperature.d.ts +0 -6
- package/dist/convex-hull/demo-temperature.js +0 -40
- package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
- package/dist/convex-hull/gas-thermodynamics.js +0 -316
- package/dist/convex-hull/helpers.d.ts +0 -103
- package/dist/convex-hull/helpers.js +0 -671
- package/dist/convex-hull/index.d.ts +0 -118
- package/dist/convex-hull/index.js +0 -57
- package/dist/convex-hull/thermodynamics.d.ts +0 -66
- package/dist/convex-hull/thermodynamics.js +0 -1752
- package/dist/convex-hull/types.d.ts +0 -162
- package/dist/convex-hull/types.js +0 -36
- package/dist/coordination/CoordinationBarPlot.svelte +0 -311
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
- package/dist/coordination/calc-coordination.d.ts +0 -15
- package/dist/coordination/calc-coordination.js +0 -63
- package/dist/coordination/index.d.ts +0 -8
- package/dist/coordination/index.js +0 -7
- package/dist/element/BohrAtom.svelte +0 -149
- package/dist/element/BohrAtom.svelte.d.ts +0 -20
- package/dist/element/ElementHeading.svelte +0 -26
- package/dist/element/ElementHeading.svelte.d.ts +0 -8
- package/dist/element/ElementPhoto.svelte +0 -57
- package/dist/element/ElementPhoto.svelte.d.ts +0 -9
- package/dist/element/ElementStats.svelte +0 -80
- package/dist/element/ElementStats.svelte.d.ts +0 -8
- package/dist/element/ElementTile.svelte +0 -484
- package/dist/element/ElementTile.svelte.d.ts +0 -29
- package/dist/element/Nucleus.svelte.d.ts +0 -17
- package/dist/element/data.d.ts +0 -3
- package/dist/element/data.js +0 -2
- package/dist/element/data.json.gz.d.ts +0 -2
- package/dist/element/index.d.ts +0 -8
- package/dist/element/index.js +0 -8
- package/dist/element/types.d.ts +0 -57
- package/dist/element/types.js +0 -1
- package/dist/feedback/ClickFeedback.svelte +0 -58
- package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
- package/dist/feedback/DragOverlay.svelte +0 -42
- package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
- package/dist/feedback/Spinner.svelte.d.ts +0 -7
- package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
- package/dist/feedback/index.d.ts +0 -4
- package/dist/feedback/index.js +0 -4
- package/dist/fermi-surface/FermiSlice.svelte +0 -189
- package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
- package/dist/fermi-surface/FermiSurface.svelte +0 -597
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
- package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
- package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
- package/dist/fermi-surface/compute.d.ts +0 -5
- package/dist/fermi-surface/compute.js +0 -538
- package/dist/fermi-surface/constants.d.ts +0 -9
- package/dist/fermi-surface/constants.js +0 -27
- package/dist/fermi-surface/export.d.ts +0 -5
- package/dist/fermi-surface/export.js +0 -63
- package/dist/fermi-surface/index.d.ts +0 -12
- package/dist/fermi-surface/index.js +0 -13
- package/dist/fermi-surface/marching-cubes.d.ts +0 -2
- package/dist/fermi-surface/marching-cubes.js +0 -2
- package/dist/fermi-surface/parse.d.ts +0 -2
- package/dist/fermi-surface/parse.js +0 -495
- package/dist/fermi-surface/symmetry.d.ts +0 -3
- package/dist/fermi-surface/symmetry.js +0 -46
- package/dist/fermi-surface/types.d.ts +0 -113
- package/dist/fermi-surface/types.js +0 -4
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
- package/dist/heatmap-matrix/index.d.ts +0 -53
- package/dist/heatmap-matrix/index.js +0 -100
- package/dist/heatmap-matrix/shared.d.ts +0 -2
- package/dist/heatmap-matrix/shared.js +0 -4
- package/dist/icons.d.ts +0 -569
- package/dist/icons.js +0 -648
- package/dist/index.d.ts +0 -39
- package/dist/index.js +0 -39
- package/dist/io/decompress.d.ts +0 -10
- package/dist/io/decompress.js +0 -69
- package/dist/io/export.d.ts +0 -16
- package/dist/io/export.js +0 -312
- package/dist/io/fetch.d.ts +0 -5
- package/dist/io/fetch.js +0 -39
- package/dist/io/file-drop.d.ts +0 -7
- package/dist/io/file-drop.js +0 -43
- package/dist/io/index.d.ts +0 -7
- package/dist/io/index.js +0 -7
- package/dist/io/is-binary.d.ts +0 -1
- package/dist/io/is-binary.js +0 -5
- package/dist/io/types.d.ts +0 -8
- package/dist/io/types.js +0 -1
- package/dist/io/url-drop.d.ts +0 -2
- package/dist/io/url-drop.js +0 -117
- package/dist/isosurface/Isosurface.svelte +0 -285
- package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
- package/dist/isosurface/IsosurfaceControls.svelte +0 -291
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
- package/dist/isosurface/index.d.ts +0 -5
- package/dist/isosurface/index.js +0 -6
- package/dist/isosurface/parse.d.ts +0 -6
- package/dist/isosurface/parse.js +0 -553
- package/dist/isosurface/slice.d.ts +0 -11
- package/dist/isosurface/slice.js +0 -140
- package/dist/isosurface/types.d.ts +0 -56
- package/dist/isosurface/types.js +0 -227
- package/dist/labels.d.ts +0 -53
- package/dist/labels.js +0 -274
- package/dist/layout/FullscreenToggle.svelte +0 -50
- package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
- package/dist/layout/InfoCard.svelte +0 -120
- package/dist/layout/InfoCard.svelte.d.ts +0 -21
- package/dist/layout/InfoTag.svelte +0 -183
- package/dist/layout/InfoTag.svelte.d.ts +0 -19
- package/dist/layout/PropertyFilter.svelte +0 -244
- package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
- package/dist/layout/SettingsSection.svelte +0 -148
- package/dist/layout/SettingsSection.svelte.d.ts +0 -17
- package/dist/layout/SubpageGrid.svelte +0 -82
- package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
- package/dist/layout/fullscreen.d.ts +0 -9
- package/dist/layout/fullscreen.js +0 -53
- package/dist/layout/index.d.ts +0 -10
- package/dist/layout/index.js +0 -8
- package/dist/layout/json-tree/JsonNode.svelte +0 -547
- package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
- package/dist/layout/json-tree/JsonTree.svelte +0 -1222
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
- package/dist/layout/json-tree/JsonValue.svelte +0 -334
- package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
- package/dist/layout/json-tree/index.d.ts +0 -3
- package/dist/layout/json-tree/index.js +0 -3
- package/dist/layout/json-tree/types.d.ts +0 -73
- package/dist/layout/json-tree/types.js +0 -3
- package/dist/layout/json-tree/utils.d.ts +0 -29
- package/dist/layout/json-tree/utils.js +0 -648
- package/dist/marching-cubes.d.ts +0 -14
- package/dist/marching-cubes.js +0 -542
- package/dist/math.d.ts +0 -91
- package/dist/math.js +0 -896
- package/dist/overlays/ContextMenu.svelte +0 -162
- package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
- package/dist/overlays/DraggablePane.svelte +0 -564
- package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
- package/dist/overlays/index.d.ts +0 -2
- package/dist/overlays/index.js +0 -2
- package/dist/periodic-table/PeriodicTable.svelte +0 -469
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
- package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
- package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
- package/dist/periodic-table/PropertySelect.svelte +0 -37
- package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
- package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
- package/dist/periodic-table/index.d.ts +0 -10
- package/dist/periodic-table/index.js +0 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
- package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
- package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
- package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
- package/dist/phase-diagram/build-diagram.d.ts +0 -11
- package/dist/phase-diagram/build-diagram.js +0 -167
- package/dist/phase-diagram/colors.d.ts +0 -35
- package/dist/phase-diagram/colors.js +0 -51
- package/dist/phase-diagram/diagram-input.d.ts +0 -33
- package/dist/phase-diagram/diagram-input.js +0 -3
- package/dist/phase-diagram/index.d.ts +0 -13
- package/dist/phase-diagram/index.js +0 -13
- package/dist/phase-diagram/parse.d.ts +0 -55
- package/dist/phase-diagram/parse.js +0 -276
- package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
- package/dist/phase-diagram/svg-to-diagram.js +0 -869
- package/dist/phase-diagram/types.d.ts +0 -99
- package/dist/phase-diagram/types.js +0 -1
- package/dist/phase-diagram/utils.d.ts +0 -118
- package/dist/phase-diagram/utils.js +0 -606
- package/dist/plot/AxisLabel.svelte +0 -51
- package/dist/plot/AxisLabel.svelte.d.ts +0 -16
- package/dist/plot/BarPlot.svelte +0 -2256
- package/dist/plot/BarPlot.svelte.d.ts +0 -82
- package/dist/plot/BarPlotControls.svelte +0 -66
- package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
- package/dist/plot/ColorBar.svelte +0 -719
- package/dist/plot/ColorBar.svelte.d.ts +0 -31
- package/dist/plot/ColorScaleSelect.svelte +0 -54
- package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
- package/dist/plot/ElementScatter.svelte +0 -63
- package/dist/plot/ElementScatter.svelte.d.ts +0 -14
- package/dist/plot/FillArea.svelte +0 -226
- package/dist/plot/FillArea.svelte.d.ts +0 -20
- package/dist/plot/Histogram.svelte +0 -1654
- package/dist/plot/Histogram.svelte.d.ts +0 -50
- package/dist/plot/HistogramControls.svelte +0 -212
- package/dist/plot/HistogramControls.svelte.d.ts +0 -22
- package/dist/plot/InteractiveAxisLabel.svelte +0 -94
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
- package/dist/plot/Line.svelte +0 -85
- package/dist/plot/Line.svelte.d.ts +0 -15
- package/dist/plot/PlotControls.svelte +0 -537
- package/dist/plot/PlotControls.svelte.d.ts +0 -4
- package/dist/plot/PlotLegend.svelte +0 -498
- package/dist/plot/PlotLegend.svelte.d.ts +0 -25
- package/dist/plot/PlotTooltip.svelte +0 -67
- package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
- package/dist/plot/PortalSelect.svelte +0 -253
- package/dist/plot/PortalSelect.svelte.d.ts +0 -16
- package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
- package/dist/plot/ReferenceLine3D.svelte +0 -154
- package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
- package/dist/plot/ReferencePlane.svelte +0 -178
- package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
- package/dist/plot/ScatterPlot.svelte +0 -2831
- package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
- package/dist/plot/ScatterPlot3D.svelte +0 -499
- package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
- package/dist/plot/ScatterPlot3DControls.svelte +0 -437
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
- package/dist/plot/ScatterPlot3DScene.svelte +0 -912
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
- package/dist/plot/ScatterPlotControls.svelte +0 -307
- package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
- package/dist/plot/ScatterPoint.svelte +0 -185
- package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
- package/dist/plot/SpacegroupBarPlot.svelte +0 -292
- package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
- package/dist/plot/Surface3D.svelte +0 -200
- package/dist/plot/Surface3D.svelte.d.ts +0 -13
- package/dist/plot/ZeroLines.svelte +0 -96
- package/dist/plot/ZeroLines.svelte.d.ts +0 -32
- package/dist/plot/ZoomRect.svelte +0 -23
- package/dist/plot/ZoomRect.svelte.d.ts +0 -8
- package/dist/plot/axis-utils.d.ts +0 -19
- package/dist/plot/axis-utils.js +0 -80
- package/dist/plot/data-cleaning.d.ts +0 -37
- package/dist/plot/data-cleaning.js +0 -855
- package/dist/plot/data-transform.d.ts +0 -16
- package/dist/plot/data-transform.js +0 -45
- package/dist/plot/defaults.d.ts +0 -19
- package/dist/plot/defaults.js +0 -9
- package/dist/plot/fill-utils.d.ts +0 -51
- package/dist/plot/fill-utils.js +0 -337
- package/dist/plot/hover-lock.svelte.d.ts +0 -14
- package/dist/plot/hover-lock.svelte.js +0 -46
- package/dist/plot/index.d.ts +0 -43
- package/dist/plot/index.js +0 -37
- package/dist/plot/interactions.d.ts +0 -12
- package/dist/plot/interactions.js +0 -100
- package/dist/plot/layout.d.ts +0 -60
- package/dist/plot/layout.js +0 -230
- package/dist/plot/reference-line.d.ts +0 -60
- package/dist/plot/reference-line.js +0 -316
- package/dist/plot/scales.d.ts +0 -48
- package/dist/plot/scales.js +0 -484
- package/dist/plot/svg.d.ts +0 -1
- package/dist/plot/svg.js +0 -11
- package/dist/plot/types.d.ts +0 -863
- package/dist/plot/types.js +0 -103
- package/dist/plot/utils/label-placement.d.ts +0 -47
- package/dist/plot/utils/label-placement.js +0 -256
- package/dist/plot/utils/series-visibility.d.ts +0 -9
- package/dist/plot/utils/series-visibility.js +0 -67
- package/dist/plot/utils.d.ts +0 -1
- package/dist/plot/utils.js +0 -14
- package/dist/rdf/RdfPlot.svelte +0 -247
- package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
- package/dist/rdf/calc-rdf.d.ts +0 -4
- package/dist/rdf/calc-rdf.js +0 -111
- package/dist/rdf/index.d.ts +0 -23
- package/dist/rdf/index.js +0 -2
- package/dist/sanitize.d.ts +0 -4
- package/dist/sanitize.js +0 -107
- package/dist/settings.d.ts +0 -253
- package/dist/settings.js +0 -1123
- package/dist/spectral/Bands.svelte +0 -1040
- package/dist/spectral/Bands.svelte.d.ts +0 -40
- package/dist/spectral/BandsAndDos.svelte +0 -128
- package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
- package/dist/spectral/BrillouinBandsDos.svelte +0 -248
- package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
- package/dist/spectral/Dos.svelte +0 -697
- package/dist/spectral/Dos.svelte.d.ts +0 -29
- package/dist/spectral/helpers.d.ts +0 -117
- package/dist/spectral/helpers.js +0 -1023
- package/dist/spectral/index.d.ts +0 -6
- package/dist/spectral/index.js +0 -7
- package/dist/spectral/types.d.ts +0 -84
- package/dist/spectral/types.js +0 -2
- package/dist/state.svelte.d.ts +0 -25
- package/dist/state.svelte.js +0 -45
- package/dist/structure/Arrow.svelte +0 -72
- package/dist/structure/Arrow.svelte.d.ts +0 -15
- package/dist/structure/AtomLegend.svelte +0 -798
- package/dist/structure/AtomLegend.svelte.d.ts +0 -34
- package/dist/structure/Bond.svelte +0 -140
- package/dist/structure/Bond.svelte.d.ts +0 -9
- package/dist/structure/CanvasTooltip.svelte +0 -33
- package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
- package/dist/structure/CellSelect.svelte +0 -351
- package/dist/structure/CellSelect.svelte.d.ts +0 -13
- package/dist/structure/Cylinder.svelte +0 -45
- package/dist/structure/Cylinder.svelte.d.ts +0 -10
- package/dist/structure/Lattice.svelte +0 -196
- package/dist/structure/Lattice.svelte.d.ts +0 -17
- package/dist/structure/Structure.svelte +0 -1857
- package/dist/structure/Structure.svelte.d.ts +0 -83
- package/dist/structure/StructureControls.svelte +0 -1184
- package/dist/structure/StructureControls.svelte.d.ts +0 -31
- package/dist/structure/StructureExportPane.svelte +0 -251
- package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
- package/dist/structure/StructureInfoPane.svelte +0 -434
- package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
- package/dist/structure/StructureScene.svelte +0 -1574
- package/dist/structure/StructureScene.svelte.d.ts +0 -104
- package/dist/structure/atom-properties.d.ts +0 -37
- package/dist/structure/atom-properties.js +0 -198
- package/dist/structure/bonding.d.ts +0 -33
- package/dist/structure/bonding.js +0 -304
- package/dist/structure/export.d.ts +0 -20
- package/dist/structure/export.js +0 -725
- package/dist/structure/ferrox-wasm-types.d.ts +0 -46
- package/dist/structure/ferrox-wasm-types.js +0 -18
- package/dist/structure/ferrox-wasm.d.ts +0 -94
- package/dist/structure/ferrox-wasm.js +0 -249
- package/dist/structure/index.d.ts +0 -110
- package/dist/structure/index.js +0 -168
- package/dist/structure/measure.d.ts +0 -6
- package/dist/structure/measure.js +0 -29
- package/dist/structure/parse.d.ts +0 -65
- package/dist/structure/parse.js +0 -1374
- package/dist/structure/partial-occupancy.d.ts +0 -25
- package/dist/structure/partial-occupancy.js +0 -99
- package/dist/structure/pbc.d.ts +0 -9
- package/dist/structure/pbc.js +0 -123
- package/dist/structure/supercell.d.ts +0 -8
- package/dist/structure/supercell.js +0 -137
- package/dist/structure/validation.d.ts +0 -2
- package/dist/structure/validation.js +0 -10
- package/dist/symmetry/SymmetryStats.svelte +0 -226
- package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
- package/dist/symmetry/WyckoffTable.svelte +0 -113
- package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
- package/dist/symmetry/cell-transform.d.ts +0 -12
- package/dist/symmetry/cell-transform.js +0 -77
- package/dist/symmetry/index.d.ts +0 -43
- package/dist/symmetry/index.js +0 -229
- package/dist/symmetry/spacegroups.d.ts +0 -9
- package/dist/symmetry/spacegroups.js +0 -394
- package/dist/table/HeatmapTable.svelte +0 -1854
- package/dist/table/HeatmapTable.svelte.d.ts +0 -49
- package/dist/table/ToggleMenu.svelte +0 -376
- package/dist/table/ToggleMenu.svelte.d.ts +0 -11
- package/dist/table/index.d.ts +0 -74
- package/dist/table/index.js +0 -38
- package/dist/theme/ThemeControl.svelte +0 -53
- package/dist/theme/ThemeControl.svelte.d.ts +0 -9
- package/dist/theme/index.d.ts +0 -29
- package/dist/theme/index.js +0 -79
- package/dist/theme/themes.mjs +0 -285
- package/dist/time.d.ts +0 -4
- package/dist/time.js +0 -70
- package/dist/tooltip/TooltipContent.svelte +0 -58
- package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
- package/dist/tooltip/index.d.ts +0 -2
- package/dist/tooltip/index.js +0 -2
- package/dist/tooltip/types.d.ts +0 -8
- package/dist/tooltip/types.js +0 -1
- package/dist/trajectory/Trajectory.svelte +0 -1517
- package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
- package/dist/trajectory/TrajectoryError.svelte +0 -128
- package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
- package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
- package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
- package/dist/trajectory/constants.d.ts +0 -6
- package/dist/trajectory/constants.js +0 -7
- package/dist/trajectory/extract.d.ts +0 -5
- package/dist/trajectory/extract.js +0 -162
- package/dist/trajectory/format-detect.d.ts +0 -9
- package/dist/trajectory/format-detect.js +0 -76
- package/dist/trajectory/frame-reader.d.ts +0 -17
- package/dist/trajectory/frame-reader.js +0 -332
- package/dist/trajectory/helpers.d.ts +0 -14
- package/dist/trajectory/helpers.js +0 -172
- package/dist/trajectory/index.d.ts +0 -63
- package/dist/trajectory/index.js +0 -126
- package/dist/trajectory/parse/ase.d.ts +0 -2
- package/dist/trajectory/parse/ase.js +0 -77
- package/dist/trajectory/parse/hdf5.d.ts +0 -2
- package/dist/trajectory/parse/hdf5.js +0 -129
- package/dist/trajectory/parse/index.d.ts +0 -12
- package/dist/trajectory/parse/index.js +0 -299
- package/dist/trajectory/parse/lammps.d.ts +0 -5
- package/dist/trajectory/parse/lammps.js +0 -179
- package/dist/trajectory/parse/vasp.d.ts +0 -2
- package/dist/trajectory/parse/vasp.js +0 -68
- package/dist/trajectory/parse/xyz.d.ts +0 -2
- package/dist/trajectory/parse/xyz.js +0 -110
- package/dist/trajectory/plotting.d.ts +0 -28
- package/dist/trajectory/plotting.js +0 -423
- package/dist/trajectory/types.d.ts +0 -11
- package/dist/trajectory/types.js +0 -1
- package/dist/utils.d.ts +0 -5
- package/dist/utils.js +0 -36
- package/dist/xrd/XrdPlot.svelte +0 -615
- package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
- package/dist/xrd/broadening.d.ts +0 -20
- package/dist/xrd/broadening.js +0 -97
- package/dist/xrd/calc-xrd.d.ts +0 -37
- package/dist/xrd/calc-xrd.js +0 -337
- package/dist/xrd/index.d.ts +0 -37
- package/dist/xrd/index.js +0 -4
- package/dist/xrd/parse.d.ts +0 -13
- package/dist/xrd/parse.js +0 -749
- /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
- /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
- /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
- /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
- /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
- /package/dist/{element → src/lib/element}/data.json +0 -0
- /package/dist/{element → src/lib/element}/data.json.gz +0 -0
- /package/dist/{element → src/lib/element}/data.schema.json +0 -0
- /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
- /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
- /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
- /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
- /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
- /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import type { D3InterpolateName } from '../colors';
|
|
2
|
-
import type { ElementSymbol } from '../element';
|
|
3
|
-
import type { IsosurfaceSettings, VolumetricData } from '../isosurface/types';
|
|
4
|
-
import type { Vec3 } from '../math';
|
|
5
|
-
import type { CameraProjection, ShowBonds, VectorColorMode, VectorLayerConfig } from '../settings';
|
|
6
|
-
import type { AnyStructure, MeasureMode, Site } from './';
|
|
7
|
-
import { Lattice } from './';
|
|
8
|
-
import type { AtomColorConfig } from './atom-properties';
|
|
9
|
-
import type { MoyoDataset } from '@spglib/moyo-wasm';
|
|
10
|
-
import * as extras from '@threlte/extras';
|
|
11
|
-
import { type ComponentProps, type Snippet } from 'svelte';
|
|
12
|
-
import { SvelteMap } from 'svelte/reactivity';
|
|
13
|
-
import { type Camera, type Scene } from 'three';
|
|
14
|
-
import type { BondingStrategy } from './bonding';
|
|
15
|
-
type $$ComponentProps = {
|
|
16
|
-
structure?: AnyStructure;
|
|
17
|
-
base_structure?: AnyStructure;
|
|
18
|
-
atom_radius?: number;
|
|
19
|
-
same_size_atoms?: boolean;
|
|
20
|
-
camera_position?: [x: number, y: number, z: number];
|
|
21
|
-
camera_target?: Vec3;
|
|
22
|
-
camera_projection?: CameraProjection;
|
|
23
|
-
rotation_damping?: number;
|
|
24
|
-
max_zoom?: number;
|
|
25
|
-
min_zoom?: number;
|
|
26
|
-
rotate_speed?: number;
|
|
27
|
-
zoom_speed?: number;
|
|
28
|
-
pan_speed?: number;
|
|
29
|
-
zoom_to_cursor?: boolean;
|
|
30
|
-
show_atoms?: boolean;
|
|
31
|
-
show_bonds?: ShowBonds;
|
|
32
|
-
show_site_labels?: boolean;
|
|
33
|
-
show_site_indices?: boolean;
|
|
34
|
-
vector_configs?: Record<string, VectorLayerConfig>;
|
|
35
|
-
vector_scale?: number;
|
|
36
|
-
vector_color?: string;
|
|
37
|
-
vector_color_mode?: VectorColorMode;
|
|
38
|
-
vector_color_scale?: D3InterpolateName;
|
|
39
|
-
vector_normalize?: boolean;
|
|
40
|
-
vector_uniform_thickness?: boolean;
|
|
41
|
-
vector_origin_gap?: number;
|
|
42
|
-
vector_shaft_radius?: number;
|
|
43
|
-
vector_arrow_head_radius?: number;
|
|
44
|
-
vector_arrow_head_length?: number;
|
|
45
|
-
gizmo?: boolean | ComponentProps<typeof extras.Gizmo>;
|
|
46
|
-
hovered_idx?: number | null;
|
|
47
|
-
hovered_site?: Site | null;
|
|
48
|
-
float_fmt?: string;
|
|
49
|
-
auto_rotate?: number;
|
|
50
|
-
initial_zoom?: number;
|
|
51
|
-
bond_thickness?: number;
|
|
52
|
-
bond_color?: string;
|
|
53
|
-
bonding_strategy?: BondingStrategy;
|
|
54
|
-
bonding_options?: Record<string, unknown>;
|
|
55
|
-
fov?: number;
|
|
56
|
-
ambient_light?: number;
|
|
57
|
-
directional_light?: number;
|
|
58
|
-
sphere_segments?: number;
|
|
59
|
-
lattice_props?: ComponentProps<typeof Lattice>;
|
|
60
|
-
atom_label?: Snippet<[{
|
|
61
|
-
site: Site;
|
|
62
|
-
site_idx: number;
|
|
63
|
-
}]>;
|
|
64
|
-
site_label_size?: number;
|
|
65
|
-
site_label_offset?: Vec3;
|
|
66
|
-
site_label_bg_color?: string;
|
|
67
|
-
site_label_color?: string;
|
|
68
|
-
site_label_padding?: number;
|
|
69
|
-
camera_is_moving?: boolean;
|
|
70
|
-
width?: number;
|
|
71
|
-
height?: number;
|
|
72
|
-
measure_mode?: MeasureMode;
|
|
73
|
-
selected_sites?: number[];
|
|
74
|
-
measured_sites?: number[];
|
|
75
|
-
added_bonds?: [number, number][];
|
|
76
|
-
removed_bonds?: [number, number][];
|
|
77
|
-
selection_highlight_color?: string;
|
|
78
|
-
active_sites?: number[];
|
|
79
|
-
active_highlight_color?: string;
|
|
80
|
-
rotation?: Vec3;
|
|
81
|
-
scene?: Scene;
|
|
82
|
-
camera?: Camera;
|
|
83
|
-
orbit_controls?: ComponentProps<typeof extras.OrbitControls>[`ref`];
|
|
84
|
-
rotation_target_ref?: Vec3;
|
|
85
|
-
initial_computed_zoom?: number;
|
|
86
|
-
hidden_elements?: Set<ElementSymbol>;
|
|
87
|
-
hidden_prop_vals?: Set<number | string>;
|
|
88
|
-
element_radius_overrides?: Partial<Record<ElementSymbol, number>>;
|
|
89
|
-
site_radius_overrides?: Map<number, number> | SvelteMap<number, number>;
|
|
90
|
-
atom_color_config?: Partial<AtomColorConfig>;
|
|
91
|
-
sym_data?: MoyoDataset | null;
|
|
92
|
-
on_sites_moved?: (scene_indices: number[], delta: Vec3) => void;
|
|
93
|
-
on_operation_start?: () => void;
|
|
94
|
-
on_add_atom?: (xyz: Vec3, element: ElementSymbol) => void;
|
|
95
|
-
add_atom_mode?: boolean;
|
|
96
|
-
add_element?: ElementSymbol;
|
|
97
|
-
cursor?: string;
|
|
98
|
-
dragging_atoms?: boolean;
|
|
99
|
-
volumetric_data?: VolumetricData;
|
|
100
|
-
isosurface_settings?: IsosurfaceSettings;
|
|
101
|
-
};
|
|
102
|
-
declare const StructureScene: import("svelte").Component<$$ComponentProps, {}, "cursor" | "site_label_offset" | "vector_configs" | "camera" | "scene" | "orbit_controls" | "hidden_elements" | "hidden_prop_vals" | "element_radius_overrides" | "site_radius_overrides" | "selected_sites" | "hovered_idx" | "hovered_site" | "camera_is_moving" | "measured_sites" | "added_bonds" | "removed_bonds" | "active_sites" | "rotation_target_ref" | "initial_computed_zoom" | "add_atom_mode" | "add_element" | "dragging_atoms">;
|
|
103
|
-
type StructureScene = ReturnType<typeof StructureScene>;
|
|
104
|
-
export default StructureScene;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { ColorScaleType, D3InterpolateName } from '../colors';
|
|
2
|
-
import type { AtomColorMode } from '../settings';
|
|
3
|
-
import type { AnyStructure, Site } from './';
|
|
4
|
-
import type { BondingStrategy } from './bonding';
|
|
5
|
-
import type { MoyoDataset } from '@spglib/moyo-wasm';
|
|
6
|
-
export interface AtomColorConfig {
|
|
7
|
-
mode: AtomColorMode;
|
|
8
|
-
scale?: D3InterpolateName;
|
|
9
|
-
scale_type: ColorScaleType;
|
|
10
|
-
color_fn?: (site: Site, idx: number) => number | string;
|
|
11
|
-
}
|
|
12
|
-
export interface AtomPropertyColors {
|
|
13
|
-
colors: string[];
|
|
14
|
-
values: (number | string)[];
|
|
15
|
-
min_value?: number;
|
|
16
|
-
max_value?: number;
|
|
17
|
-
unique_values?: (number | string)[];
|
|
18
|
-
}
|
|
19
|
-
type SymmetryDataWithOrigMap = MoyoDataset & {
|
|
20
|
-
orig_site_indices_by_std_idx?: number[][];
|
|
21
|
-
};
|
|
22
|
-
export declare const get_d3_color_scales: () => string[];
|
|
23
|
-
export declare function apply_color_scale(vals: number[], scale?: string, type?: ColorScaleType): {
|
|
24
|
-
colors: string[];
|
|
25
|
-
unique_values?: number[];
|
|
26
|
-
};
|
|
27
|
-
export declare const apply_categorical_color_scale: (vals: string[], scale?: string) => {
|
|
28
|
-
colors: string[];
|
|
29
|
-
unique_values: string[];
|
|
30
|
-
};
|
|
31
|
-
export declare const get_orig_site_idx: (site: Site | undefined, site_idx: number) => number;
|
|
32
|
-
export declare function get_coordination_colors(structure: AnyStructure, strategy?: BondingStrategy, scale?: string, type?: ColorScaleType): AtomPropertyColors;
|
|
33
|
-
export declare function get_wyckoff_colors(structure: AnyStructure, sym_data: SymmetryDataWithOrigMap | null, scale?: string): AtomPropertyColors;
|
|
34
|
-
export declare function get_custom_colors(structure: AnyStructure, fn: (site: Site, idx: number) => number | string, scale?: string, type?: ColorScaleType): AtomPropertyColors;
|
|
35
|
-
export declare function get_atom_colors(structure: AnyStructure, config: Partial<AtomColorConfig>, bonding_strategy?: BondingStrategy, sym_data?: MoyoDataset | null): AtomPropertyColors;
|
|
36
|
-
export declare function get_property_colors(structure: AnyStructure | undefined, config: Partial<AtomColorConfig>, bonding_strategy: BondingStrategy, sym_data: MoyoDataset | null): AtomPropertyColors | null;
|
|
37
|
-
export {};
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
// Utility functions for computing atom properties and applying color scales
|
|
2
|
-
import { calc_coordination_nums } from '../coordination';
|
|
3
|
-
import * as math from '../math';
|
|
4
|
-
import { wrap_to_unit_cell } from './pbc';
|
|
5
|
-
import { rgb } from 'd3-color';
|
|
6
|
-
import * as d3_sc from 'd3-scale-chromatic';
|
|
7
|
-
const GRAY = `#808080`;
|
|
8
|
-
const DEFAULT_COLOR_SCALE = `interpolateViridis`;
|
|
9
|
-
export const get_d3_color_scales = () => Object.keys(d3_sc).filter((key) => key.startsWith(`interpolate`));
|
|
10
|
-
const get_interpolator = (scale) => {
|
|
11
|
-
const interp_fn = d3_sc[scale];
|
|
12
|
-
if (typeof interp_fn !== `function`) {
|
|
13
|
-
console.warn(`Unknown D3 scale: ${scale}, using ${DEFAULT_COLOR_SCALE}`);
|
|
14
|
-
return d3_sc.interpolateViridis;
|
|
15
|
-
}
|
|
16
|
-
return interp_fn;
|
|
17
|
-
};
|
|
18
|
-
const to_hex = (interp_fn, t) => rgb(interp_fn(t)).formatHex();
|
|
19
|
-
const build_image_site = (site, frac_to_cart, offset, orig_idx) => {
|
|
20
|
-
const img_abc = [
|
|
21
|
-
site.abc[0] + offset[0],
|
|
22
|
-
site.abc[1] + offset[1],
|
|
23
|
-
site.abc[2] + offset[2],
|
|
24
|
-
];
|
|
25
|
-
return {
|
|
26
|
-
...site,
|
|
27
|
-
abc: img_abc,
|
|
28
|
-
xyz: frac_to_cart(img_abc),
|
|
29
|
-
properties: { ...site.properties, orig_site_idx: orig_idx },
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
const get_all_offsets = (pbc) => [-1, 0, 1]
|
|
33
|
-
.flatMap((dx) => [-1, 0, 1].flatMap((dy) => [-1, 0, 1].map((dz) => [dx, dy, dz])))
|
|
34
|
-
.filter(([dx, dy, dz]) => !(dx === 0 && dy === 0 && dz === 0) &&
|
|
35
|
-
(pbc[0] || dx === 0) &&
|
|
36
|
-
(pbc[1] || dy === 0) &&
|
|
37
|
-
(pbc[2] || dz === 0));
|
|
38
|
-
const make_categorical = (vals, scale, sort_fn) => {
|
|
39
|
-
const interp_fn = get_interpolator(scale);
|
|
40
|
-
const uniq = sort_fn ? [...new Set(vals)].sort(sort_fn) : [...new Set(vals)].sort();
|
|
41
|
-
const colors = uniq.map((_, idx) => to_hex(interp_fn, uniq.length === 1 ? 0.5 : idx / (uniq.length - 1)));
|
|
42
|
-
const map = new Map(uniq.map((val, idx) => [val, colors[idx]]));
|
|
43
|
-
return {
|
|
44
|
-
colors: vals.map((val) => map.get(val) ?? GRAY),
|
|
45
|
-
unique_values: uniq,
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
const build_prop_colors = (vals, colors, unique_values) => {
|
|
49
|
-
const uniq = unique_values ?? [...new Set(vals)].sort((val_a, val_b) => val_a - val_b);
|
|
50
|
-
// Use sorted uniq array to avoid spreading large arrays into Math.min/max
|
|
51
|
-
const min_value = uniq.length > 0 ? uniq[0] : undefined;
|
|
52
|
-
const max_value = uniq.at(-1);
|
|
53
|
-
return { colors, values: vals, min_value, max_value, unique_values: uniq };
|
|
54
|
-
};
|
|
55
|
-
export function apply_color_scale(vals, scale = DEFAULT_COLOR_SCALE, type = `continuous`) {
|
|
56
|
-
if (!vals.length)
|
|
57
|
-
return { colors: [] };
|
|
58
|
-
if (type === `categorical`) {
|
|
59
|
-
const result = make_categorical(vals, scale, (val_a, val_b) => val_a - val_b);
|
|
60
|
-
return { colors: result.colors, unique_values: result.unique_values };
|
|
61
|
-
}
|
|
62
|
-
const interp_fn = get_interpolator(scale);
|
|
63
|
-
// Compute min/max in single pass to avoid spreading large arrays
|
|
64
|
-
let [min, max] = [vals[0], vals[0]];
|
|
65
|
-
for (const val of vals) {
|
|
66
|
-
if (val < min)
|
|
67
|
-
min = val;
|
|
68
|
-
if (val > max)
|
|
69
|
-
max = val;
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
colors: vals.map((val) => to_hex(interp_fn, max === min ? 0.5 : (val - min) / (max - min))),
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
export const apply_categorical_color_scale = (vals, scale = DEFAULT_COLOR_SCALE) => vals.length ? make_categorical(vals, scale) : { colors: [], unique_values: [] };
|
|
76
|
-
// Get original site index for property color lookup.
|
|
77
|
-
// Supercell atoms use orig_unit_cell_idx, image atoms use orig_site_idx, otherwise use site_idx.
|
|
78
|
-
export const get_orig_site_idx = (site, site_idx) => typeof site?.properties?.orig_unit_cell_idx === `number`
|
|
79
|
-
? site.properties.orig_unit_cell_idx
|
|
80
|
-
: typeof site?.properties?.orig_site_idx === `number`
|
|
81
|
-
? site.properties.orig_site_idx
|
|
82
|
-
: site_idx;
|
|
83
|
-
// Expand structure with PBC images - use minimal expansion based on atom positions
|
|
84
|
-
function expand_structure_for_pbc(structure) {
|
|
85
|
-
if (!(`lattice` in structure) || !structure.lattice || !structure.sites.length) {
|
|
86
|
-
return structure;
|
|
87
|
-
}
|
|
88
|
-
const { sites, lattice } = structure;
|
|
89
|
-
const frac_to_cart = math.create_frac_to_cart(lattice.matrix);
|
|
90
|
-
const pbc = lattice.pbc ?? [true, true, true];
|
|
91
|
-
const all_offsets = get_all_offsets(pbc);
|
|
92
|
-
// Small structures: expand all atoms
|
|
93
|
-
if (sites.length < 20 || !pbc.some((periodic) => periodic)) {
|
|
94
|
-
const image_sites = sites.flatMap((site, orig_idx) => all_offsets.map((offset) => build_image_site(site, frac_to_cart, offset, orig_idx)));
|
|
95
|
-
return { ...structure, sites: [...sites, ...image_sites] };
|
|
96
|
-
}
|
|
97
|
-
// Large structures: only expand atoms near boundaries (within 5Å bond distance)
|
|
98
|
-
const cutoff = [5.0 / lattice.a, 5.0 / lattice.b, 5.0 / lattice.c];
|
|
99
|
-
const image_sites = sites.flatMap((site, orig_idx) => {
|
|
100
|
-
const norm = wrap_to_unit_cell(site.abc);
|
|
101
|
-
return all_offsets
|
|
102
|
-
.filter(([dx, dy, dz]) => (dx === 0 || (dx === -1 ? norm[0] <= cutoff[0] : norm[0] >= 1 - cutoff[0])) &&
|
|
103
|
-
(dy === 0 || (dy === -1 ? norm[1] <= cutoff[1] : norm[1] >= 1 - cutoff[1])) &&
|
|
104
|
-
(dz === 0 || (dz === -1 ? norm[2] <= cutoff[2] : norm[2] >= 1 - cutoff[2])))
|
|
105
|
-
.map((offset) => build_image_site(site, frac_to_cart, offset, orig_idx));
|
|
106
|
-
});
|
|
107
|
-
return { ...structure, sites: [...sites, ...image_sites] };
|
|
108
|
-
}
|
|
109
|
-
export function get_coordination_colors(structure, strategy = `electroneg_ratio`, scale = DEFAULT_COLOR_SCALE, type = `continuous`) {
|
|
110
|
-
const orig_site_count = structure.sites.length;
|
|
111
|
-
// Check if structure has periodic boundary conditions
|
|
112
|
-
const has_lattice = `lattice` in structure && structure.lattice !== undefined;
|
|
113
|
-
const pbc = has_lattice ? structure.lattice.pbc : undefined;
|
|
114
|
-
const has_pbc = has_lattice && (pbc === undefined || pbc.some((is_periodic) => is_periodic));
|
|
115
|
-
// For PBC structures, expand with images from neighboring cells for accurate coordination
|
|
116
|
-
const coord_structure = has_pbc ? expand_structure_for_pbc(structure) : structure;
|
|
117
|
-
// Calculate coordination numbers on the (potentially expanded) structure
|
|
118
|
-
const all_coord_data = calc_coordination_nums(coord_structure, strategy);
|
|
119
|
-
// Extract coordination numbers only for the original sites (not image atoms)
|
|
120
|
-
const coord_nums = all_coord_data.sites
|
|
121
|
-
.slice(0, orig_site_count)
|
|
122
|
-
.map((site) => site.coordination_num);
|
|
123
|
-
const { colors, unique_values } = apply_color_scale(coord_nums, scale, type);
|
|
124
|
-
return build_prop_colors(coord_nums, colors, unique_values);
|
|
125
|
-
}
|
|
126
|
-
export function get_wyckoff_colors(structure, sym_data, scale = DEFAULT_COLOR_SCALE) {
|
|
127
|
-
const n = structure.sites.length;
|
|
128
|
-
if (!sym_data?.wyckoffs || sym_data.wyckoffs.length === 0) {
|
|
129
|
-
return {
|
|
130
|
-
colors: Array(n).fill(GRAY),
|
|
131
|
-
values: Array(n).fill(`unknown`),
|
|
132
|
-
unique_values: [`unknown`],
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
const wyckoff_by_orig_idx = new Map();
|
|
136
|
-
const mapping_by_std_idx = sym_data.orig_site_indices_by_std_idx;
|
|
137
|
-
if (mapping_by_std_idx) {
|
|
138
|
-
for (let std_idx = 0; std_idx < sym_data.wyckoffs.length; std_idx += 1) {
|
|
139
|
-
const wyckoff = sym_data.wyckoffs[std_idx];
|
|
140
|
-
for (const orig_idx of mapping_by_std_idx[std_idx] ?? []) {
|
|
141
|
-
if (!wyckoff_by_orig_idx.has(orig_idx))
|
|
142
|
-
wyckoff_by_orig_idx.set(orig_idx, wyckoff);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
// Create unique orbit identifiers: Wyckoff position + element symbol
|
|
147
|
-
const orbit_ids = structure.sites.map((site, idx) => {
|
|
148
|
-
const sym_idx = get_orig_site_idx(site, idx);
|
|
149
|
-
const mapped_wyckoff = wyckoff_by_orig_idx.get(sym_idx);
|
|
150
|
-
if (mapped_wyckoff !== undefined) {
|
|
151
|
-
const element = site.species[0]?.element ?? `?`;
|
|
152
|
-
return mapped_wyckoff ? `${mapped_wyckoff}|${element}` : `unknown`;
|
|
153
|
-
}
|
|
154
|
-
if (sym_idx >= sym_data.wyckoffs.length) {
|
|
155
|
-
console.error(`[get_wyckoff_colors] Site ${idx} (maps to ${sym_idx}) has no Wyckoff data. ` +
|
|
156
|
-
`Structure has ${n} sites but symmetry data only has ${sym_data.wyckoffs.length}.`);
|
|
157
|
-
return `unknown`;
|
|
158
|
-
}
|
|
159
|
-
const wyckoff = sym_data.wyckoffs[sym_idx];
|
|
160
|
-
const element = site.species[0]?.element ?? `?`;
|
|
161
|
-
return wyckoff ? `${wyckoff}|${element}` : `unknown`;
|
|
162
|
-
});
|
|
163
|
-
const { colors, unique_values } = apply_categorical_color_scale(orbit_ids, scale);
|
|
164
|
-
return { colors, values: orbit_ids, unique_values };
|
|
165
|
-
}
|
|
166
|
-
export function get_custom_colors(structure, fn, scale = DEFAULT_COLOR_SCALE, type = `continuous`) {
|
|
167
|
-
const vals = structure.sites.map((site, idx) => fn(site, idx));
|
|
168
|
-
const is_num = vals.every((val) => typeof val === `number`);
|
|
169
|
-
if (is_num) {
|
|
170
|
-
const nums = vals;
|
|
171
|
-
const { colors, unique_values } = apply_color_scale(nums, scale, type);
|
|
172
|
-
return build_prop_colors(nums, colors, unique_values);
|
|
173
|
-
}
|
|
174
|
-
const strs = vals.map(String);
|
|
175
|
-
const { colors, unique_values } = apply_categorical_color_scale(strs, scale);
|
|
176
|
-
return { colors, values: strs, unique_values };
|
|
177
|
-
}
|
|
178
|
-
export function get_atom_colors(structure, config, bonding_strategy = `electroneg_ratio`, sym_data = null) {
|
|
179
|
-
const { mode = `element`, scale = DEFAULT_COLOR_SCALE, scale_type = `continuous` } = config;
|
|
180
|
-
if (mode === `coordination`) {
|
|
181
|
-
return get_coordination_colors(structure, bonding_strategy, scale, scale_type);
|
|
182
|
-
}
|
|
183
|
-
if (mode === `wyckoff`)
|
|
184
|
-
return get_wyckoff_colors(structure, sym_data, scale);
|
|
185
|
-
if (mode === `custom` && config.color_fn) {
|
|
186
|
-
return get_custom_colors(structure, config.color_fn, scale, scale_type);
|
|
187
|
-
}
|
|
188
|
-
// Element mode or custom without function, no property colors needed
|
|
189
|
-
return { colors: [], values: [] };
|
|
190
|
-
}
|
|
191
|
-
// Helper: Get property colors with null safety check
|
|
192
|
-
// Returns null if structure is missing, mode is element, or no colors computed
|
|
193
|
-
export function get_property_colors(structure, config, bonding_strategy, sym_data) {
|
|
194
|
-
if (!structure || config.mode === `element`)
|
|
195
|
-
return null;
|
|
196
|
-
const result = get_atom_colors(structure, config, bonding_strategy, sym_data);
|
|
197
|
-
return result.colors.length ? result : null;
|
|
198
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { Vec3 } from '../math';
|
|
2
|
-
import type { AnyStructure, BondPair } from './';
|
|
3
|
-
export declare function compute_bond_transform(pos_1: Vec3, pos_2: Vec3): Float32Array;
|
|
4
|
-
export declare const BONDING_STRATEGIES: {
|
|
5
|
-
readonly electroneg_ratio: typeof electroneg_ratio;
|
|
6
|
-
readonly solid_angle: typeof solid_angle;
|
|
7
|
-
};
|
|
8
|
-
export type BondingStrategy = keyof typeof BONDING_STRATEGIES;
|
|
9
|
-
export type BondingAlgo = (typeof BONDING_STRATEGIES)[BondingStrategy];
|
|
10
|
-
export declare function electroneg_ratio(structure: AnyStructure, { electronegativity_threshold, // Max electronegativity difference for bonding
|
|
11
|
-
max_distance_ratio, // Max distance as multiple of sum of covalent radii
|
|
12
|
-
min_bond_dist, // Minimum bond distance in Angstroms
|
|
13
|
-
metal_metal_penalty, // Strength penalty for metal-metal bonds
|
|
14
|
-
metal_nonmetal_bonus, // Strength bonus for metal-nonmetal bonds
|
|
15
|
-
similar_electronegativity_bonus, // Bonus for similar electronegativity
|
|
16
|
-
same_species_penalty, // Penalty for bonds between same element
|
|
17
|
-
strength_threshold, }?: {
|
|
18
|
-
electronegativity_threshold?: number | undefined;
|
|
19
|
-
max_distance_ratio?: number | undefined;
|
|
20
|
-
min_bond_dist?: number | undefined;
|
|
21
|
-
metal_metal_penalty?: number | undefined;
|
|
22
|
-
metal_nonmetal_bonus?: number | undefined;
|
|
23
|
-
similar_electronegativity_bonus?: number | undefined;
|
|
24
|
-
same_species_penalty?: number | undefined;
|
|
25
|
-
strength_threshold?: number | undefined;
|
|
26
|
-
}): BondPair[];
|
|
27
|
-
export declare function solid_angle(structure: AnyStructure, { min_solid_angle, min_face_area, max_distance, min_bond_dist, strength_threshold, }?: {
|
|
28
|
-
min_solid_angle?: number | undefined;
|
|
29
|
-
min_face_area?: number | undefined;
|
|
30
|
-
max_distance?: number | undefined;
|
|
31
|
-
min_bond_dist?: number | undefined;
|
|
32
|
-
strength_threshold?: number | undefined;
|
|
33
|
-
}): BondPair[];
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
// Bonding algorithms for structure visualization
|
|
2
|
-
import { element_data } from '../element';
|
|
3
|
-
import * as math from '../math';
|
|
4
|
-
const element_lookup = new Map(element_data.map((el) => [el.symbol, el]));
|
|
5
|
-
const covalent_radii = new Map(element_data
|
|
6
|
-
.filter((el) => el.covalent_radius !== null)
|
|
7
|
-
.map((el) => [el.symbol, el.covalent_radius]));
|
|
8
|
-
// Get the species with highest occupancy from a site.
|
|
9
|
-
const get_majority_species = (site) => (site.species ?? []).reduce((max_species, species) => (species.occu > max_species.occu ? species : max_species), site.species?.[0] ?? { element: ``, occu: -1 });
|
|
10
|
-
// Helper to extract numeric index from site properties
|
|
11
|
-
function get_orig_idx(site, fallback) {
|
|
12
|
-
const props = site.properties;
|
|
13
|
-
if (!props)
|
|
14
|
-
return fallback;
|
|
15
|
-
const raw = props.orig_unit_cell_idx ?? props.orig_site_idx;
|
|
16
|
-
if (raw === undefined)
|
|
17
|
-
return fallback;
|
|
18
|
-
const num = Number(raw);
|
|
19
|
-
return Number.isFinite(num) ? num : fallback;
|
|
20
|
-
}
|
|
21
|
-
// Compute 4x4 transformation matrix for bond cylinder between two positions.
|
|
22
|
-
// Uses Y-up, right-handed coordinate system convention for Three.js compatibility.
|
|
23
|
-
export function compute_bond_transform(pos_1, pos_2) {
|
|
24
|
-
const [dx, dy, dz] = math.subtract(pos_2, pos_1);
|
|
25
|
-
const height = Math.hypot(dx, dy, dz);
|
|
26
|
-
if (height < 1e-10) {
|
|
27
|
-
return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
|
28
|
-
}
|
|
29
|
-
const [dir_x, dir_y, dir_z] = [dx / height, dy / height, dz / height];
|
|
30
|
-
let [m00, m01, m02, m10, m11, m12, m20, m21, m22] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
31
|
-
// Special case: bond pointing straight up (+Y)
|
|
32
|
-
if (Math.abs(dir_y - 1.0) < 1e-10) {
|
|
33
|
-
;
|
|
34
|
-
[m00, m01, m02, m10, m11, m12, m20, m21, m22] = [1, 0, 0, 0, 1, 0, 0, 0, 1];
|
|
35
|
-
}
|
|
36
|
-
else if (Math.abs(dir_y + 1.0) < 1e-10) {
|
|
37
|
-
// Special case: bond pointing straight down (-Y)
|
|
38
|
-
;
|
|
39
|
-
[m00, m01, m02, m10, m11, m12, m20, m21, m22] = [1, 0, 0, 0, -1, 0, 0, 0, 1];
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
// General case: construct orthonormal basis (right, dir, up)
|
|
43
|
-
// Right vector: perpendicular to dir in XZ plane
|
|
44
|
-
const [rx, rz] = [-dir_z, dir_x];
|
|
45
|
-
const r_len = Math.hypot(rx, rz);
|
|
46
|
-
const [right_x, right_z] = [rx / r_len, rz / r_len];
|
|
47
|
-
// Up vector: cross product of dir and right
|
|
48
|
-
const [up_x, up_y, up_z] = [
|
|
49
|
-
dir_y * right_z,
|
|
50
|
-
dir_z * right_x - dir_x * right_z,
|
|
51
|
-
-dir_y * right_x,
|
|
52
|
-
];
|
|
53
|
-
[m00, m01, m02, m10, m11, m12, m20, m21, m22] = [
|
|
54
|
-
right_x,
|
|
55
|
-
dir_x,
|
|
56
|
-
up_x,
|
|
57
|
-
0,
|
|
58
|
-
dir_y,
|
|
59
|
-
up_y,
|
|
60
|
-
right_z,
|
|
61
|
-
dir_z,
|
|
62
|
-
up_z,
|
|
63
|
-
];
|
|
64
|
-
}
|
|
65
|
-
// Position at midpoint between the two atoms
|
|
66
|
-
const [px, py, pz] = [
|
|
67
|
-
(pos_1[0] + pos_2[0]) / 2,
|
|
68
|
-
(pos_1[1] + pos_2[1]) / 2,
|
|
69
|
-
(pos_1[2] + pos_2[2]) / 2,
|
|
70
|
-
];
|
|
71
|
-
return new Float32Array([
|
|
72
|
-
// Return flattened column-major 4x4 matrix for Three.js
|
|
73
|
-
...[m00, m10, m20, 0],
|
|
74
|
-
...[m01 * height, m11 * height, m21 * height, 0],
|
|
75
|
-
...[m02, m12, m22, 0],
|
|
76
|
-
...[px, py, pz, 1],
|
|
77
|
-
]);
|
|
78
|
-
}
|
|
79
|
-
// Build spatial grid by dividing 3D space into cubic cells.
|
|
80
|
-
function build_spatial_grid(sites, cell_size) {
|
|
81
|
-
const grid = new Map();
|
|
82
|
-
for (let idx = 0; idx < sites.length; idx++) {
|
|
83
|
-
const [x, y, z] = sites[idx].xyz.map((coord) => Math.floor(coord / cell_size));
|
|
84
|
-
const key = `${x},${y},${z}`;
|
|
85
|
-
const cell = grid.get(key);
|
|
86
|
-
if (cell)
|
|
87
|
-
cell.push(idx);
|
|
88
|
-
else
|
|
89
|
-
grid.set(key, [idx]);
|
|
90
|
-
}
|
|
91
|
-
return grid;
|
|
92
|
-
}
|
|
93
|
-
// Get all site indices in 3x3x3 cube of cells around position.
|
|
94
|
-
function get_neighbors_from_grid(pos, grid, cell_size) {
|
|
95
|
-
const [cx, cy, cz] = [
|
|
96
|
-
Math.floor(pos[0] / cell_size),
|
|
97
|
-
Math.floor(pos[1] / cell_size),
|
|
98
|
-
Math.floor(pos[2] / cell_size),
|
|
99
|
-
];
|
|
100
|
-
const neighbors = [];
|
|
101
|
-
for (let dx = -1; dx <= 1; dx++) {
|
|
102
|
-
for (let dy = -1; dy <= 1; dy++) {
|
|
103
|
-
for (let dz = -1; dz <= 1; dz++) {
|
|
104
|
-
const cell = grid.get(`${cx + dx},${cy + dy},${cz + dz}`);
|
|
105
|
-
if (cell)
|
|
106
|
-
neighbors.push(...cell);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return neighbors;
|
|
111
|
-
}
|
|
112
|
-
// Setup spatial decomposition for structures with >50 atoms.
|
|
113
|
-
function setup_spatial_grid(sites, cutoff) {
|
|
114
|
-
const use_grid = sites.length > 50;
|
|
115
|
-
return use_grid ? { grid: build_spatial_grid(sites, cutoff), cell_size: cutoff } : null;
|
|
116
|
-
}
|
|
117
|
-
// Get candidate neighbor indices using spatial grid or all sites.
|
|
118
|
-
const get_candidates = (pos, sites, spatial) => spatial
|
|
119
|
-
? get_neighbors_from_grid(pos, spatial.grid, spatial.cell_size)
|
|
120
|
-
: Array.from({ length: sites.length }, (_, idx) => idx);
|
|
121
|
-
export const BONDING_STRATEGIES = { electroneg_ratio, solid_angle };
|
|
122
|
-
// Electronegativity-based bonding with chemical preferences.
|
|
123
|
-
// This algorithm considers electronegativity differences between atoms, metal/nonmetal
|
|
124
|
-
// properties, and distance to determine bond strength. Bonds are only created if the
|
|
125
|
-
// computed strength exceeds the strength_threshold parameter (default: 0.3).
|
|
126
|
-
export function electroneg_ratio(structure, { electronegativity_threshold = 1.7, // Max electronegativity difference for bonding
|
|
127
|
-
max_distance_ratio = 2.0, // Max distance as multiple of sum of covalent radii
|
|
128
|
-
min_bond_dist = 0.4, // Minimum bond distance in Angstroms
|
|
129
|
-
metal_metal_penalty = 0.7, // Strength penalty for metal-metal bonds
|
|
130
|
-
metal_nonmetal_bonus = 1.5, // Strength bonus for metal-nonmetal bonds
|
|
131
|
-
similar_electronegativity_bonus = 1.2, // Bonus for similar electronegativity
|
|
132
|
-
same_species_penalty = 0.5, // Penalty for bonds between same element
|
|
133
|
-
strength_threshold = 0.3, // Minimum bond strength to include in results
|
|
134
|
-
} = {}) {
|
|
135
|
-
const { sites } = structure;
|
|
136
|
-
if (sites.length < 2)
|
|
137
|
-
return [];
|
|
138
|
-
const bonds = [];
|
|
139
|
-
const min_dist_sq = min_bond_dist ** 2;
|
|
140
|
-
const closest = new Map();
|
|
141
|
-
const props = sites.map((site) => {
|
|
142
|
-
const majority = get_majority_species(site);
|
|
143
|
-
const elem = majority.element;
|
|
144
|
-
const data = element_lookup.get(elem);
|
|
145
|
-
return {
|
|
146
|
-
element: elem,
|
|
147
|
-
electroneg: data?.electronegativity ?? 2.0,
|
|
148
|
-
is_metal: data?.metal ?? false,
|
|
149
|
-
is_nonmetal: data?.nonmetal ?? false,
|
|
150
|
-
radius: elem ? covalent_radii.get(elem) : undefined,
|
|
151
|
-
};
|
|
152
|
-
});
|
|
153
|
-
let max_radius = 0;
|
|
154
|
-
for (const radius of covalent_radii.values()) {
|
|
155
|
-
if (radius > max_radius)
|
|
156
|
-
max_radius = radius;
|
|
157
|
-
}
|
|
158
|
-
const max_cutoff = max_radius * 2 * max_distance_ratio;
|
|
159
|
-
const spatial = setup_spatial_grid(sites, max_cutoff);
|
|
160
|
-
const potential_bonds = [];
|
|
161
|
-
for (let idx_a = 0; idx_a < sites.length - 1; idx_a++) {
|
|
162
|
-
const [x1, y1, z1] = sites[idx_a].xyz;
|
|
163
|
-
const props_a = props[idx_a];
|
|
164
|
-
for (const idx_b of get_candidates(sites[idx_a].xyz, sites, spatial)) {
|
|
165
|
-
if (idx_b <= idx_a)
|
|
166
|
-
continue;
|
|
167
|
-
const [x2, y2, z2] = sites[idx_b].xyz;
|
|
168
|
-
const props_b = props[idx_b];
|
|
169
|
-
const [dx, dy, dz] = [x2 - x1, y2 - y1, z2 - z1];
|
|
170
|
-
const dist_sq = dx * dx + dy * dy + dz * dz;
|
|
171
|
-
const dist = Math.sqrt(dist_sq);
|
|
172
|
-
if (dist_sq < min_dist_sq || !props_a.radius || !props_b.radius)
|
|
173
|
-
continue;
|
|
174
|
-
const expected = props_a.radius + props_b.radius;
|
|
175
|
-
if (dist > expected * max_distance_ratio)
|
|
176
|
-
continue;
|
|
177
|
-
const electroneg_diff = Math.abs(props_a.electroneg - props_b.electroneg);
|
|
178
|
-
const electroneg_ratio = electroneg_diff / (props_a.electroneg + props_b.electroneg);
|
|
179
|
-
let bond_strength = 1.0;
|
|
180
|
-
if (props_a.is_metal && props_b.is_metal) {
|
|
181
|
-
bond_strength *= metal_metal_penalty;
|
|
182
|
-
}
|
|
183
|
-
else if ((props_a.is_metal && props_b.is_nonmetal) ||
|
|
184
|
-
(props_a.is_nonmetal && props_b.is_metal)) {
|
|
185
|
-
bond_strength *= metal_nonmetal_bonus;
|
|
186
|
-
if (electroneg_diff > electronegativity_threshold)
|
|
187
|
-
bond_strength *= 1.3;
|
|
188
|
-
}
|
|
189
|
-
else if (electroneg_diff < 0.5) {
|
|
190
|
-
bond_strength *= similar_electronegativity_bonus;
|
|
191
|
-
}
|
|
192
|
-
const dist_weight = Math.exp(-((dist / expected - 1) ** 2) / 0.18);
|
|
193
|
-
const electroneg_weight = 1.0 - 0.3 * electroneg_ratio;
|
|
194
|
-
let strength = bond_strength * dist_weight * electroneg_weight;
|
|
195
|
-
if (props_a.element === props_b.element)
|
|
196
|
-
strength *= same_species_penalty;
|
|
197
|
-
// If raw strength is already too low, we can skip early
|
|
198
|
-
// (penalty will only reduce it further)
|
|
199
|
-
if (strength <= strength_threshold)
|
|
200
|
-
continue;
|
|
201
|
-
// Use helper logic to handle both supercell and image atoms with robust normalization
|
|
202
|
-
const orig_idx_a = get_orig_idx(sites[idx_a], idx_a);
|
|
203
|
-
const orig_idx_b = get_orig_idx(sites[idx_b], idx_b);
|
|
204
|
-
// Update closest known normalized distance (dist / expected) for original atoms
|
|
205
|
-
// Normalized distance handles atoms of different sizes better than raw distance
|
|
206
|
-
// (e.g. C-H is short but C-C is longer; we don't want C-H to penalize C-C just because H is small)
|
|
207
|
-
const norm_dist = dist / expected;
|
|
208
|
-
const closest_dist_a = closest.get(orig_idx_a) ?? Infinity;
|
|
209
|
-
if (norm_dist < closest_dist_a)
|
|
210
|
-
closest.set(orig_idx_a, norm_dist);
|
|
211
|
-
const closest_dist_b = closest.get(orig_idx_b) ?? Infinity;
|
|
212
|
-
if (norm_dist < closest_dist_b)
|
|
213
|
-
closest.set(orig_idx_b, norm_dist);
|
|
214
|
-
potential_bonds.push({
|
|
215
|
-
site_idx_1: idx_a,
|
|
216
|
-
site_idx_2: idx_b,
|
|
217
|
-
dist,
|
|
218
|
-
expected_dist: expected,
|
|
219
|
-
base_strength: strength,
|
|
220
|
-
orig_idx_a,
|
|
221
|
-
orig_idx_b,
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
// Second pass: Apply penalties and filter
|
|
226
|
-
for (const bond of potential_bonds) {
|
|
227
|
-
const { site_idx_1, site_idx_2, dist, expected_dist, base_strength, orig_idx_a, orig_idx_b, } = bond;
|
|
228
|
-
const closest_dist_a = closest.get(orig_idx_a) ?? Infinity;
|
|
229
|
-
const closest_dist_b = closest.get(orig_idx_b) ?? Infinity;
|
|
230
|
-
const norm_dist = dist / expected_dist;
|
|
231
|
-
let strength = base_strength;
|
|
232
|
-
// Apply penalty if this bond is much longer (relative to radii) than the closest known bond
|
|
233
|
-
if (norm_dist > closest_dist_a) {
|
|
234
|
-
strength *= Math.exp(-(norm_dist / closest_dist_a - 1) / 0.5);
|
|
235
|
-
}
|
|
236
|
-
if (orig_idx_b !== orig_idx_a && norm_dist > closest_dist_b) {
|
|
237
|
-
strength *= Math.exp(-(norm_dist / closest_dist_b - 1) / 0.5);
|
|
238
|
-
}
|
|
239
|
-
if (strength > strength_threshold) {
|
|
240
|
-
bonds.push({
|
|
241
|
-
pos_1: sites[site_idx_1].xyz,
|
|
242
|
-
pos_2: sites[site_idx_2].xyz,
|
|
243
|
-
site_idx_1,
|
|
244
|
-
site_idx_2,
|
|
245
|
-
bond_length: dist,
|
|
246
|
-
strength,
|
|
247
|
-
transform_matrix: compute_bond_transform(sites[site_idx_1].xyz, sites[site_idx_2].xyz),
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
return bonds;
|
|
252
|
-
}
|
|
253
|
-
// Solid angle-based bonding using geometric proximity heuristics.
|
|
254
|
-
// Inspired by Voronoi tessellation without having to actually compute Voronoi cells.
|
|
255
|
-
// This algorithm computes bond strength based on the solid angle subtended by atoms
|
|
256
|
-
// and their distance penalty. Bonds are only created if the computed strength exceeds
|
|
257
|
-
// the strength_threshold parameter.
|
|
258
|
-
export function solid_angle(structure, { min_solid_angle = 0.01, min_face_area = 0.05, max_distance = 5.0, min_bond_dist = 0.4, strength_threshold = 0.05, } = {}) {
|
|
259
|
-
const { sites } = structure;
|
|
260
|
-
if (sites.length < 2)
|
|
261
|
-
return [];
|
|
262
|
-
const bonds = [];
|
|
263
|
-
const min_dist_sq = min_bond_dist ** 2;
|
|
264
|
-
const max_dist_sq = max_distance ** 2;
|
|
265
|
-
const spatial = setup_spatial_grid(sites, max_distance);
|
|
266
|
-
for (let idx_a = 0; idx_a < sites.length - 1; idx_a++) {
|
|
267
|
-
const [x1, y1, z1] = sites[idx_a].xyz;
|
|
268
|
-
const majority_a = get_majority_species(sites[idx_a]);
|
|
269
|
-
const radius_a = majority_a.element ? covalent_radii.get(majority_a.element) : undefined;
|
|
270
|
-
for (const idx_b of get_candidates(sites[idx_a].xyz, sites, spatial)) {
|
|
271
|
-
if (idx_b <= idx_a)
|
|
272
|
-
continue;
|
|
273
|
-
const [x2, y2, z2] = sites[idx_b].xyz;
|
|
274
|
-
const majority_b = get_majority_species(sites[idx_b]);
|
|
275
|
-
const radius_b = majority_b.element ? covalent_radii.get(majority_b.element) : undefined;
|
|
276
|
-
const [dx, dy, dz] = [x2 - x1, y2 - y1, z2 - z1];
|
|
277
|
-
const dist_sq = dx * dx + dy * dy + dz * dz;
|
|
278
|
-
const dist = Math.sqrt(dist_sq);
|
|
279
|
-
if (dist_sq < min_dist_sq || dist_sq > max_dist_sq || !radius_a || !radius_b) {
|
|
280
|
-
continue;
|
|
281
|
-
}
|
|
282
|
-
const avg_radius = (radius_a + radius_b) / 2.0;
|
|
283
|
-
const face_area = Math.PI * avg_radius * avg_radius;
|
|
284
|
-
const solid_angle = face_area / dist_sq;
|
|
285
|
-
if (solid_angle < min_solid_angle || face_area < min_face_area)
|
|
286
|
-
continue;
|
|
287
|
-
const dist_penalty = Math.exp(-((dist / (radius_a + radius_b) - 1) ** 2) / 0.4);
|
|
288
|
-
const angle_strength = Math.min(solid_angle / (4.0 * Math.PI), 1.0);
|
|
289
|
-
const strength = angle_strength * dist_penalty;
|
|
290
|
-
if (strength > strength_threshold) {
|
|
291
|
-
bonds.push({
|
|
292
|
-
pos_1: sites[idx_a].xyz,
|
|
293
|
-
pos_2: sites[idx_b].xyz,
|
|
294
|
-
site_idx_1: idx_a,
|
|
295
|
-
site_idx_2: idx_b,
|
|
296
|
-
bond_length: dist,
|
|
297
|
-
strength,
|
|
298
|
-
transform_matrix: compute_bond_transform(sites[idx_a].xyz, sites[idx_b].xyz),
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
return bonds;
|
|
304
|
-
}
|