matterviz 0.4.0 → 0.4.1

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.
Files changed (326) hide show
  1. package/dist/brillouin/BrillouinZone.svelte +68 -145
  2. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -14
  3. package/dist/brillouin/BrillouinZoneExportPane.svelte +43 -96
  4. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  5. package/dist/brillouin/BrillouinZoneInfoPane.svelte +9 -32
  6. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
  7. package/dist/brillouin/BrillouinZoneScene.svelte +49 -203
  8. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
  9. package/dist/brillouin/ReciprocalVectors.svelte +39 -0
  10. package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
  11. package/dist/brillouin/compute.d.ts +2 -0
  12. package/dist/brillouin/compute.js +80 -77
  13. package/dist/brillouin/geometry.d.ts +8 -0
  14. package/dist/brillouin/geometry.js +57 -0
  15. package/dist/brillouin/index.d.ts +2 -0
  16. package/dist/brillouin/index.js +2 -0
  17. package/dist/brillouin/types.d.ts +2 -2
  18. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
  19. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +100 -191
  20. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
  21. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +176 -464
  22. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
  23. package/dist/chempot-diagram/color.d.ts +3 -6
  24. package/dist/chempot-diagram/color.js +5 -5
  25. package/dist/chempot-diagram/compute.d.ts +3 -3
  26. package/dist/chempot-diagram/compute.js +3 -1
  27. package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
  28. package/dist/chempot-diagram/controls-state.svelte.js +42 -0
  29. package/dist/chempot-diagram/export.d.ts +47 -0
  30. package/dist/chempot-diagram/export.js +133 -0
  31. package/dist/chempot-diagram/index.d.ts +1 -0
  32. package/dist/chempot-diagram/index.js +1 -0
  33. package/dist/chempot-diagram/pointer.d.ts +0 -10
  34. package/dist/chempot-diagram/pointer.js +4 -4
  35. package/dist/chempot-diagram/types.d.ts +3 -3
  36. package/dist/colors/index.js +2 -2
  37. package/dist/composition/FormulaFilter.svelte +6 -5
  38. package/dist/composition/PieChart.svelte +5 -5
  39. package/dist/composition/chem-sys.js +3 -2
  40. package/dist/composition/format.js +3 -2
  41. package/dist/composition/parse.d.ts +0 -1
  42. package/dist/composition/parse.js +17 -19
  43. package/dist/controls.d.ts +1 -0
  44. package/dist/controls.js +0 -1
  45. package/dist/convex-hull/ConvexHull.svelte +8 -10
  46. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
  47. package/dist/convex-hull/ConvexHull2D.svelte +94 -175
  48. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  49. package/dist/convex-hull/ConvexHull3D.svelte +176 -680
  50. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  51. package/dist/convex-hull/ConvexHull4D.svelte +180 -680
  52. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  53. package/dist/convex-hull/ConvexHullChrome.svelte +268 -0
  54. package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
  55. package/dist/convex-hull/ConvexHullControls.svelte +88 -7
  56. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
  57. package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
  58. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
  59. package/dist/convex-hull/ConvexHullStats.svelte +29 -168
  60. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
  61. package/dist/convex-hull/ConvexHullTooltip.svelte +11 -2
  62. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
  63. package/dist/convex-hull/barycentric-coords.d.ts +2 -4
  64. package/dist/convex-hull/barycentric-coords.js +6 -33
  65. package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
  66. package/dist/convex-hull/canvas-interactions.svelte.js +278 -0
  67. package/dist/convex-hull/helpers.d.ts +39 -7
  68. package/dist/convex-hull/helpers.js +154 -69
  69. package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
  70. package/dist/convex-hull/hull-state.svelte.js +124 -0
  71. package/dist/convex-hull/index.d.ts +9 -7
  72. package/dist/convex-hull/index.js +7 -2
  73. package/dist/convex-hull/thermodynamics.js +91 -920
  74. package/dist/convex-hull/types.d.ts +12 -4
  75. package/dist/convex-hull/types.js +12 -0
  76. package/dist/coordination/CoordinationBarPlot.svelte +4 -11
  77. package/dist/element/BohrAtom.svelte +2 -1
  78. package/dist/element/ElementTile.svelte.d.ts +1 -1
  79. package/dist/element/index.d.ts +4 -0
  80. package/dist/element/index.js +18 -0
  81. package/dist/feedback/DragOverlay.svelte +3 -1
  82. package/dist/feedback/DragOverlay.svelte.d.ts +1 -0
  83. package/dist/feedback/StatusMessage.svelte +13 -3
  84. package/dist/fermi-surface/FermiSurface.svelte +67 -146
  85. package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -14
  86. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  87. package/dist/fermi-surface/FermiSurfaceScene.svelte +72 -224
  88. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
  89. package/dist/fermi-surface/compute.js +11 -10
  90. package/dist/fermi-surface/export.js +4 -15
  91. package/dist/fermi-surface/index.d.ts +0 -1
  92. package/dist/fermi-surface/index.js +0 -1
  93. package/dist/fermi-surface/parse.d.ts +1 -1
  94. package/dist/fermi-surface/parse.js +64 -75
  95. package/dist/fermi-surface/types.d.ts +2 -2
  96. package/dist/heatmap-matrix/HeatmapMatrix.svelte +55 -40
  97. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +4 -3
  98. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +3 -2
  99. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
  100. package/dist/heatmap-matrix/index.d.ts +3 -2
  101. package/dist/index.d.ts +1 -0
  102. package/dist/index.js +1 -0
  103. package/dist/io/ExportPane.svelte +166 -0
  104. package/dist/io/ExportPane.svelte.d.ts +17 -0
  105. package/dist/io/decompress.js +1 -2
  106. package/dist/io/export.d.ts +5 -1
  107. package/dist/io/export.js +32 -28
  108. package/dist/io/fetch.d.ts +2 -1
  109. package/dist/io/file-drop.d.ts +7 -0
  110. package/dist/io/file-drop.js +13 -0
  111. package/dist/io/index.d.ts +2 -0
  112. package/dist/io/index.js +10 -0
  113. package/dist/io/types.d.ts +13 -0
  114. package/dist/isosurface/parse.js +46 -44
  115. package/dist/labels.js +1 -1
  116. package/dist/layout/FullscreenButton.svelte +33 -0
  117. package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
  118. package/dist/layout/FullscreenToggle.svelte +8 -14
  119. package/dist/layout/ViewerChrome.svelte +116 -0
  120. package/dist/layout/ViewerChrome.svelte.d.ts +17 -0
  121. package/dist/layout/fullscreen.d.ts +4 -0
  122. package/dist/layout/fullscreen.svelte.d.ts +8 -0
  123. package/dist/layout/fullscreen.svelte.js +37 -0
  124. package/dist/layout/index.d.ts +3 -0
  125. package/dist/layout/index.js +3 -0
  126. package/dist/math.d.ts +7 -3
  127. package/dist/math.js +18 -21
  128. package/dist/overlays/index.d.ts +4 -0
  129. package/dist/periodic-table/PeriodicTable.svelte +9 -8
  130. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
  131. package/dist/phase-diagram/PhaseDiagramControls.svelte +3 -2
  132. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
  133. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  134. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
  135. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +47 -132
  136. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
  137. package/dist/phase-diagram/colors.js +1 -1
  138. package/dist/phase-diagram/parse.d.ts +2 -1
  139. package/dist/plot/bar/BarPlot.svelte +79 -316
  140. package/dist/plot/bar/BarPlot.svelte.d.ts +7 -15
  141. package/dist/plot/bar/BarPlotControls.svelte.d.ts +1 -1
  142. package/dist/plot/bar/SpacegroupBarPlot.svelte +2 -1
  143. package/dist/plot/box/BoxPlot.svelte +76 -246
  144. package/dist/plot/box/BoxPlot.svelte.d.ts +4 -3
  145. package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
  146. package/dist/plot/box/Violin.svelte.d.ts +1 -1
  147. package/dist/plot/box/box-plot.d.ts +3 -2
  148. package/dist/plot/box/box-plot.js +5 -2
  149. package/dist/plot/box/kde.d.ts +2 -1
  150. package/dist/plot/box/kde.js +4 -4
  151. package/dist/plot/core/auto-place.d.ts +1 -1
  152. package/dist/plot/core/auto-place.js +4 -1
  153. package/dist/plot/core/components/ColorBar.svelte +5 -5
  154. package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
  155. package/dist/plot/core/components/Line.svelte +3 -2
  156. package/dist/plot/core/components/Line.svelte.d.ts +3 -2
  157. package/dist/plot/core/components/PlotAxis.svelte +2 -1
  158. package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
  159. package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
  160. package/dist/plot/core/components/ReferenceLine3D.svelte +2 -2
  161. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
  162. package/dist/plot/core/components/ReferencePlane.svelte +2 -2
  163. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
  164. package/dist/plot/core/data-cleaning.js +18 -18
  165. package/dist/plot/core/fill-utils.d.ts +4 -3
  166. package/dist/plot/core/fill-utils.js +6 -3
  167. package/dist/plot/core/interactions.d.ts +5 -1
  168. package/dist/plot/core/interactions.js +14 -0
  169. package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
  170. package/dist/plot/core/pan-zoom.svelte.js +221 -0
  171. package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
  172. package/dist/plot/core/placed-tween.svelte.js +68 -0
  173. package/dist/plot/core/reference-line.d.ts +10 -10
  174. package/dist/plot/core/reference-line.js +6 -6
  175. package/dist/plot/core/scales.d.ts +17 -25
  176. package/dist/plot/core/scales.js +10 -8
  177. package/dist/plot/core/svg.d.ts +2 -1
  178. package/dist/plot/core/types.d.ts +18 -7
  179. package/dist/plot/core/utils/label-placement.d.ts +1 -1
  180. package/dist/plot/core/utils/label-placement.js +3 -3
  181. package/dist/plot/core/utils.d.ts +2 -1
  182. package/dist/plot/histogram/Histogram.svelte +77 -314
  183. package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
  184. package/dist/plot/sankey/Sankey.svelte +2 -5
  185. package/dist/plot/sankey/Sankey.svelte.d.ts +1 -1
  186. package/dist/plot/sankey/sankey.js +3 -1
  187. package/dist/plot/scatter/BinnedScatterPlot.svelte +3 -5
  188. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +4 -4
  189. package/dist/plot/scatter/ScatterPlot.svelte +160 -450
  190. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +7 -15
  191. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  192. package/dist/plot/scatter/binned-scatter-types.d.ts +4 -11
  193. package/dist/plot/scatter/index.d.ts +1 -1
  194. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +15 -26
  195. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
  196. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +9 -10
  197. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
  198. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +122 -121
  199. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
  200. package/dist/plot/scatter-3d/Surface3D.svelte +6 -5
  201. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
  202. package/dist/plot/sunburst/Sunburst.svelte +16 -20
  203. package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
  204. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +1 -1
  205. package/dist/plot/sunburst/sunburst.js +4 -1
  206. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  207. package/dist/sanitize.js +13 -2
  208. package/dist/scene/SceneCamera.svelte +62 -0
  209. package/dist/scene/SceneCamera.svelte.d.ts +19 -0
  210. package/dist/scene/bind-renderer.svelte.d.ts +2 -0
  211. package/dist/scene/bind-renderer.svelte.js +14 -0
  212. package/dist/scene/index.d.ts +4 -0
  213. package/dist/scene/index.js +5 -0
  214. package/dist/scene/props.js +52 -0
  215. package/dist/scene/types.d.ts +26 -0
  216. package/dist/scene/types.js +1 -0
  217. package/dist/settings.d.ts +14 -2
  218. package/dist/settings.js +59 -1
  219. package/dist/spectral/Bands.svelte +8 -7
  220. package/dist/spectral/Bands.svelte.d.ts +3 -2
  221. package/dist/spectral/BandsAndDos.svelte +22 -24
  222. package/dist/spectral/BrillouinBandsDos.svelte +3 -3
  223. package/dist/spectral/Dos.svelte +5 -4
  224. package/dist/spectral/Dos.svelte.d.ts +2 -1
  225. package/dist/spectral/helpers.d.ts +6 -6
  226. package/dist/spectral/helpers.js +43 -37
  227. package/dist/state.svelte.d.ts +0 -7
  228. package/dist/state.svelte.js +0 -6
  229. package/dist/structure/Arrow.svelte +2 -4
  230. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  231. package/dist/structure/CanvasTooltip.svelte +1 -0
  232. package/dist/structure/CellSelect.svelte +11 -3
  233. package/dist/structure/CellSelect.svelte.d.ts +2 -1
  234. package/dist/structure/Lattice.svelte +2 -2
  235. package/dist/structure/Structure.svelte +291 -355
  236. package/dist/structure/Structure.svelte.d.ts +5 -15
  237. package/dist/structure/StructureControls.svelte +217 -2
  238. package/dist/structure/StructureControls.svelte.d.ts +5 -3
  239. package/dist/structure/StructureExportPane.svelte +54 -156
  240. package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
  241. package/dist/structure/StructureInfoPane.svelte +5 -3
  242. package/dist/structure/StructureInfoPane.svelte.d.ts +5 -5
  243. package/dist/structure/StructureScene.svelte +365 -198
  244. package/dist/structure/StructureScene.svelte.d.ts +22 -20
  245. package/dist/structure/{label-placement.d.ts → atom-label-placement.d.ts} +3 -3
  246. package/dist/structure/{label-placement.js → atom-label-placement.js} +12 -2
  247. package/dist/structure/atom-properties.d.ts +1 -1
  248. package/dist/structure/atom-properties.js +11 -16
  249. package/dist/structure/bond-order-perception.js +2 -4
  250. package/dist/structure/bonding.d.ts +3 -0
  251. package/dist/structure/bonding.js +91 -48
  252. package/dist/structure/export.d.ts +24 -4
  253. package/dist/structure/export.js +64 -122
  254. package/dist/structure/index.d.ts +2 -0
  255. package/dist/structure/index.js +2 -0
  256. package/dist/structure/parse.d.ts +3 -2
  257. package/dist/structure/parse.js +333 -370
  258. package/dist/structure/partial-occupancy.d.ts +0 -1
  259. package/dist/structure/partial-occupancy.js +1 -1
  260. package/dist/structure/pbc.d.ts +1 -1
  261. package/dist/structure/pbc.js +186 -13
  262. package/dist/structure/polyhedra.d.ts +41 -0
  263. package/dist/structure/polyhedra.js +602 -0
  264. package/dist/structure/site.d.ts +4 -0
  265. package/dist/structure/site.js +1 -0
  266. package/dist/structure/supercell.js +3 -2
  267. package/dist/structure/validation.js +5 -6
  268. package/dist/symmetry/SymmetryElementControls.svelte +69 -0
  269. package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
  270. package/dist/symmetry/SymmetryElements.svelte +354 -0
  271. package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
  272. package/dist/symmetry/SymmetryStats.svelte +111 -6
  273. package/dist/symmetry/WyckoffTable.svelte +68 -7
  274. package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
  275. package/dist/symmetry/cell-transform.js +7 -14
  276. package/dist/symmetry/index.d.ts +14 -4
  277. package/dist/symmetry/index.js +301 -80
  278. package/dist/symmetry/spacegroups.d.ts +5 -1
  279. package/dist/symmetry/spacegroups.js +15 -1
  280. package/dist/symmetry/symmetry-elements.d.ts +33 -0
  281. package/dist/symmetry/symmetry-elements.js +521 -0
  282. package/dist/symmetry/wyckoff-db.d.ts +9 -0
  283. package/dist/symmetry/wyckoff-db.js +87 -0
  284. package/dist/table/HeatmapTable.svelte +4 -15
  285. package/dist/table/HeatmapTable.svelte.d.ts +1 -1
  286. package/dist/trajectory/Trajectory.svelte +58 -61
  287. package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
  288. package/dist/trajectory/TrajectoryExportPane.svelte +15 -24
  289. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
  290. package/dist/trajectory/TrajectoryInfoPane.svelte +3 -2
  291. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
  292. package/dist/trajectory/constants.js +6 -2
  293. package/dist/trajectory/extract.js +17 -37
  294. package/dist/trajectory/format-detect.d.ts +0 -1
  295. package/dist/trajectory/format-detect.js +3 -9
  296. package/dist/trajectory/frame-reader.d.ts +0 -1
  297. package/dist/trajectory/frame-reader.js +62 -128
  298. package/dist/trajectory/helpers.d.ts +10 -2
  299. package/dist/trajectory/helpers.js +56 -36
  300. package/dist/trajectory/parse/ase.d.ts +9 -1
  301. package/dist/trajectory/parse/ase.js +47 -32
  302. package/dist/trajectory/parse/diagnostics.d.ts +3 -0
  303. package/dist/trajectory/parse/diagnostics.js +14 -0
  304. package/dist/trajectory/parse/index.d.ts +1 -1
  305. package/dist/trajectory/parse/index.js +54 -102
  306. package/dist/trajectory/parse/lammps.d.ts +0 -2
  307. package/dist/trajectory/parse/lammps.js +8 -6
  308. package/dist/trajectory/parse/pymatgen.d.ts +2 -0
  309. package/dist/trajectory/parse/pymatgen.js +74 -0
  310. package/dist/trajectory/parse/vasp.js +4 -3
  311. package/dist/trajectory/parse/xyz.d.ts +9 -21
  312. package/dist/trajectory/parse/xyz.js +28 -33
  313. package/dist/trajectory/plotting.d.ts +0 -1
  314. package/dist/trajectory/plotting.js +3 -100
  315. package/dist/utils.d.ts +1 -0
  316. package/dist/utils.js +1 -1
  317. package/dist/xrd/XrdPlot.svelte +14 -29
  318. package/dist/xrd/broadening.d.ts +2 -1
  319. package/dist/xrd/calc-xrd.js +6 -11
  320. package/dist/xrd/index.d.ts +2 -2
  321. package/package.json +29 -16
  322. package/dist/element/data.json +0 -11864
  323. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  324. package/dist/fermi-surface/marching-cubes.js +0 -2
  325. package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
  326. package/dist/plot/core/hover-lock.svelte.js +0 -45
@@ -2,17 +2,27 @@
2
2
  import { contrast_color } from '../colors'
3
3
  import { format_fractional } from '../labels'
4
4
  import { colors } from '../state.svelte'
5
+ import type { MoyoWyckoffPosition } from '@spglib/moyo-wasm'
6
+ import { SvelteSet } from 'svelte/reactivity'
5
7
  import type { HTMLAttributes } from 'svelte/elements'
6
8
  import type { WyckoffPos } from '.'
9
+ import { enrich_wyckoff_rows, wyckoff_letter } from '.'
7
10
 
8
11
  let {
9
12
  wyckoff_positions,
13
+ // Full Wyckoff-position database of the space group (from
14
+ // spacegroup_wyckoff_positions). When given, occupied rows gain an ITA coordinates
15
+ // column and unoccupied positions can be listed via show_unoccupied.
16
+ db_positions = [],
17
+ show_unoccupied = false,
10
18
  on_hover,
11
19
  on_click,
12
20
  active_color = `#2563eb`,
13
21
  ...rest
14
22
  }: HTMLAttributes<HTMLTableElement> & {
15
23
  wyckoff_positions: WyckoffPos[]
24
+ db_positions?: MoyoWyckoffPosition[]
25
+ show_unoccupied?: boolean
16
26
  on_hover?: (site_indices: number[] | null) => void
17
27
  on_click?: (site_indices: number[] | null) => void
18
28
  active_color?: string
@@ -20,12 +30,33 @@
20
30
 
21
31
  let selected_key = $state<string | null>(null)
22
32
 
33
+ // Occupied orbits enriched with ITA representative coordinates + site symmetry
34
+ const rows = $derived(enrich_wyckoff_rows(wyckoff_positions ?? [], db_positions))
35
+ // Wyckoff positions of the space group not occupied by any atom, smallest
36
+ // multiplicity first (matches the ascending sort of occupied rows)
37
+ const unoccupied_rows = $derived.by(() => {
38
+ if (!show_unoccupied) return []
39
+ const occupied_letters = new SvelteSet(rows.map((row) => wyckoff_letter(row.wyckoff)))
40
+ return db_positions
41
+ .filter((pos) => !occupied_letters.has(pos.letter))
42
+ .toSorted((pos_1, pos_2) =>
43
+ pos_1.multiplicity - pos_2.multiplicity ||
44
+ pos_1.letter.localeCompare(pos_2.letter)
45
+ )
46
+ })
47
+ const has_ita_coords = $derived(
48
+ rows.some((pos) => pos.coordinates) || unoccupied_rows.length > 0,
49
+ )
50
+ const has_site_symmetry = $derived(
51
+ rows.some((pos) => pos.site_symmetry) || unoccupied_rows.length > 0,
52
+ )
53
+
23
54
  const get_row_key = (wyckoff_pos: WyckoffPos, row_idx: number) =>
24
55
  `${wyckoff_pos.wyckoff}-${wyckoff_pos.elem}-${
25
56
  wyckoff_pos.site_indices?.join(`,`) ?? `none`
26
57
  }-${row_idx}`
27
58
  $effect(() => {
28
- if (!selected_key || wyckoff_positions?.some((pos, idx) => get_row_key(pos, idx) === selected_key)) {
59
+ if (!selected_key || rows.some((pos, idx) => get_row_key(pos, idx) === selected_key)) {
29
60
  return
30
61
  }
31
62
  selected_key = null
@@ -33,7 +64,7 @@
33
64
  })
34
65
  </script>
35
66
 
36
- {#if wyckoff_positions && wyckoff_positions.length > 0}
67
+ {#if rows.length > 0 || unoccupied_rows.length > 0}
37
68
  <table {...rest} class="wyckoff-table {rest.class ?? ``}">
38
69
  <thead>
39
70
  <tr>
@@ -41,6 +72,18 @@
41
72
  [`Wyckoff`, `Wyckoff position: Multiplicity + Letter`],
42
73
  [`Element`, `Chemical element symbol`],
43
74
  [`Fractional Coords`, `Fractional coordinates within the unit cell`],
75
+ ...(has_ita_coords
76
+ ? [[
77
+ `ITA Coords`,
78
+ `Representative coordinates from the International Tables: x/y/z mark free parameters, fractions mark symmetry-fixed coordinates`,
79
+ ]]
80
+ : []),
81
+ ...(has_site_symmetry
82
+ ? [[
83
+ `Site Symm.`,
84
+ `Site symmetry: point group of operations leaving the site invariant`,
85
+ ]]
86
+ : []),
44
87
  ] as
45
88
  [col, title]
46
89
  (col)
@@ -50,11 +93,7 @@
50
93
  </tr>
51
94
  </thead>
52
95
  <tbody>
53
- {#each wyckoff_positions as
54
- wyckoff_pos,
55
- row_idx
56
- (get_row_key(wyckoff_pos, row_idx))
57
- }
96
+ {#each rows as wyckoff_pos, row_idx (get_row_key(wyckoff_pos, row_idx))}
58
97
  {@const { wyckoff, elem, abc, site_indices } = wyckoff_pos}
59
98
  {@const row_key = get_row_key(wyckoff_pos, row_idx)}
60
99
  {@const is_selected = selected_key === row_key}
@@ -89,6 +128,25 @@
89
128
  </span>
90
129
  </td>
91
130
  <td>({abc?.map(format_fractional).join(` , `) ?? `N/A`})</td>
131
+ {#if has_ita_coords}
132
+ <td>{wyckoff_pos.coordinates ? `(${wyckoff_pos.coordinates})` : ``}</td>
133
+ {/if}
134
+ {#if has_site_symmetry}
135
+ <td>{wyckoff_pos.site_symmetry ?? ``}</td>
136
+ {/if}
137
+ </tr>
138
+ {/each}
139
+ {#each unoccupied_rows as db_pos (db_pos.letter)}
140
+ <tr class="unoccupied" title="Wyckoff position not occupied in this structure">
141
+ <td>{db_pos.multiplicity}{db_pos.letter}</td>
142
+ <td>&mdash;</td>
143
+ <td>&mdash;</td>
144
+ {#if has_ita_coords}
145
+ <td>({db_pos.coordinates})</td>
146
+ {/if}
147
+ {#if has_site_symmetry}
148
+ <td>{db_pos.site_symmetry}</td>
149
+ {/if}
92
150
  </tr>
93
151
  {/each}
94
152
  </tbody>
@@ -117,4 +175,7 @@
117
175
  .wyckoff-row.selected:hover {
118
176
  background-color: color-mix(in srgb, var(--active-color) 35%, transparent);
119
177
  }
178
+ .unoccupied {
179
+ opacity: 0.5;
180
+ }
120
181
  </style>
@@ -1,7 +1,10 @@
1
+ import type { MoyoWyckoffPosition } from '@spglib/moyo-wasm';
1
2
  import type { HTMLAttributes } from 'svelte/elements';
2
3
  import type { WyckoffPos } from '.';
3
4
  type $$ComponentProps = HTMLAttributes<HTMLTableElement> & {
4
5
  wyckoff_positions: WyckoffPos[];
6
+ db_positions?: MoyoWyckoffPosition[];
7
+ show_unoccupied?: boolean;
5
8
  on_hover?: (site_indices: number[] | null) => void;
6
9
  on_click?: (site_indices: number[] | null) => void;
7
10
  active_color?: string;
@@ -1,6 +1,7 @@
1
1
  import { ATOMIC_NUMBER_TO_SYMBOL } from '../composition/parse';
2
2
  import * as math from '../math';
3
3
  import { wrap_to_unit_cell } from '../structure/pbc';
4
+ import { make_site } from '../structure/site';
4
5
  const transferable_properties = (properties) => {
5
6
  if (properties === undefined)
6
7
  return undefined;
@@ -13,17 +14,10 @@ const transferable_properties = (properties) => {
13
14
  // the full Crystal with lattice parameters and element symbols.
14
15
  export function moyo_cell_to_structure(cell, // The MoyoCell from symmetry analysis (std_cell or prim_std_cell)
15
16
  original_structure) {
16
- // Convert flat 9-element basis to 3x3 matrix
17
- // moyo-wasm uses the same row-major serialization for both input and output
18
- // (see to_cell_json comment: column-major(B) == row-major(RB))
19
- // So the flat array is row-major: [a1, a2, a3, b1, b2, b3, c1, c2, c3]
20
- // where each row is a lattice vector in the pymatgen convention
21
- const basis = cell.lattice.basis;
22
- const lattice_matrix = [
23
- [basis[0], basis[1], basis[2]], // First lattice vector (a)
24
- [basis[3], basis[4], basis[5]], // Second lattice vector (b)
25
- [basis[6], basis[7], basis[8]], // Third lattice vector (c)
26
- ];
17
+ // Convert flat 9-element basis to 3x3 matrix. moyo-wasm uses the same row-major
18
+ // serialization for both input and output (see to_cell_json: column-major(B) ==
19
+ // row-major(RB)), so the flat array is row-major with each row a lattice vector.
20
+ const lattice_matrix = math.vec9_to_mat3x3([...cell.lattice.basis]);
27
21
  // Calculate lattice parameters from matrix
28
22
  const lattice_params = math.calc_lattice_params(lattice_matrix);
29
23
  const frac_to_cart = math.create_frac_to_cart(lattice_matrix);
@@ -40,8 +34,7 @@ original_structure) {
40
34
  // Oxidation state is set to 0 (unknown) because moyo-wasm only provides atomic numbers.
41
35
  // transformed cell may have different/reordered sites, making it non-trivial to
42
36
  // map oxidation states from original structure.
43
- const species = [{ element, occu: 1, oxidation_state: 0 }];
44
- return { species, abc: wrapped_abc, xyz, label: element, properties: {} };
37
+ return make_site(element, wrapped_abc, xyz, element);
45
38
  });
46
39
  const lattice = {
47
40
  matrix: lattice_matrix,
@@ -86,6 +79,6 @@ sym_data) {
86
79
  if (cell_type === `primitive`) {
87
80
  return get_primitive_cell(structure, sym_data);
88
81
  }
89
- // Fallback to original (should never reach here with proper typing)
82
+ // Unknown cell_type at runtime (e.g. from stale persisted settings): leave unchanged
90
83
  return structure;
91
84
  }
@@ -1,8 +1,12 @@
1
1
  import type { Vec3 } from '../math';
2
2
  import type { AnyStructure, Crystal } from '../structure';
3
- import type { MoyoDataset } from '@spglib/moyo-wasm';
3
+ import type { MoyoCell, MoyoDataset } from '@spglib/moyo-wasm';
4
4
  export * from './cell-transform';
5
5
  export * from './spacegroups';
6
+ export * from './symmetry-elements';
7
+ export * from './wyckoff-db';
8
+ export { default as SymmetryElementControls } from './SymmetryElementControls.svelte';
9
+ export { default as SymmetryElements } from './SymmetryElements.svelte';
6
10
  export { default as SymmetryStats } from './SymmetryStats.svelte';
7
11
  export { default as WyckoffTable } from './WyckoffTable.svelte';
8
12
  export declare const BRAVAIS_LATTICES: {
@@ -28,16 +32,22 @@ export type WyckoffPos = {
28
32
  elem: string;
29
33
  abc: Vec3;
30
34
  site_indices?: number[];
35
+ site_symmetry?: string;
36
+ coordinates?: string;
31
37
  };
32
38
  export type SymmetryDataset = MoyoDataset & {
33
- orig_indices?: number[];
34
39
  orig_site_indices_by_std_idx?: number[][];
40
+ input_cell?: Pick<MoyoCell, `positions` | `numbers`>;
41
+ orig_site_indices_by_input_idx?: number[][];
35
42
  };
36
43
  export declare function ensure_moyo_wasm_ready(wasm_url?: string): Promise<void>;
37
44
  export declare function to_cell_json(structure: Crystal): string;
38
- export declare const map_std_to_orig_site_indices: (std_positions: Vec3[], std_numbers: number[], input_positions: Vec3[], input_numbers: number[], orig_site_indices_by_input_idx: number[][]) => number[][];
45
+ export declare const map_std_to_orig_site_indices: (std_positions: Vec3[], std_numbers: number[], input_positions: Vec3[], input_numbers: number[], orig_site_indices_by_input_idx: number[][], transform?: {
46
+ std_linear: readonly number[];
47
+ std_origin_shift: readonly number[];
48
+ }, tol?: number) => number[][];
39
49
  export declare function analyze_structure_symmetry(struct_or_mol: AnyStructure, settings: Partial<SymmetrySettings>): Promise<SymmetryDataset>;
40
50
  export declare function simplicity_score(vec: number[]): number;
41
51
  export declare function wyckoff_positions_from_moyo(sym_data: SymmetryDataset | null): WyckoffPos[];
42
- export declare function apply_symmetry_operations(position: Vec3, operations: MoyoDataset[`operations`], _tolerance?: number): Vec3[];
52
+ export declare function apply_symmetry_operations(position: Vec3, operations: MoyoDataset[`operations`]): Vec3[];
43
53
  export declare function map_wyckoff_to_all_atoms(wyckoff_positions: WyckoffPos[], displayed_structure: Crystal, orig_structure: Crystal, sym_data: MoyoDataset | null, tolerance?: number): WyckoffPos[];