@openbraininstitute/morphoviewer 0.0.1 → 0.24.16
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/LICENSE +201 -0
- package/README.md +35 -0
- package/lib/dist/abstract-canvas.d.ts +37 -0
- package/lib/dist/abstract-canvas.d.ts.map +1 -0
- package/lib/dist/abstract-canvas.js +131 -0
- package/lib/dist/colors.d.ts +34 -0
- package/lib/dist/colors.d.ts.map +1 -0
- package/lib/dist/colors.js +125 -0
- package/lib/dist/components/button-reset-camera/button-reset-camera.d.ts +10 -0
- package/lib/dist/components/button-reset-camera/button-reset-camera.d.ts.map +1 -0
- package/lib/dist/components/button-reset-camera/button-reset-camera.js +10 -0
- package/lib/dist/components/button-reset-camera/button-reset-camera.module.css +10 -0
- package/lib/dist/components/button-reset-camera/index.d.ts +2 -0
- package/lib/dist/components/button-reset-camera/index.d.ts.map +1 -0
- package/lib/dist/components/button-reset-camera/index.js +2 -0
- package/lib/dist/components/icons/3d.d.ts +8 -0
- package/lib/dist/components/icons/3d.d.ts.map +1 -0
- package/lib/dist/components/icons/3d.js +5 -0
- package/lib/dist/components/icons/center.d.ts +8 -0
- package/lib/dist/components/icons/center.d.ts.map +1 -0
- package/lib/dist/components/icons/center.js +5 -0
- package/lib/dist/components/icons/close.d.ts +8 -0
- package/lib/dist/components/icons/close.d.ts.map +1 -0
- package/lib/dist/components/icons/close.js +5 -0
- package/lib/dist/components/icons/copy.d.ts +2 -0
- package/lib/dist/components/icons/copy.d.ts.map +1 -0
- package/lib/dist/components/icons/copy.js +5 -0
- package/lib/dist/components/icons/dendrogram-circular.d.ts +2 -0
- package/lib/dist/components/icons/dendrogram-circular.d.ts.map +1 -0
- package/lib/dist/components/icons/dendrogram-circular.js +5 -0
- package/lib/dist/components/icons/dendrogram-straight.d.ts +2 -0
- package/lib/dist/components/icons/dendrogram-straight.d.ts.map +1 -0
- package/lib/dist/components/icons/dendrogram-straight.js +5 -0
- package/lib/dist/components/icons/fullscreen.d.ts +8 -0
- package/lib/dist/components/icons/fullscreen.d.ts.map +1 -0
- package/lib/dist/components/icons/fullscreen.js +5 -0
- package/lib/dist/components/icons/minimize.d.ts +8 -0
- package/lib/dist/components/icons/minimize.d.ts.map +1 -0
- package/lib/dist/components/icons/minimize.js +5 -0
- package/lib/dist/components/icons/pause.d.ts +8 -0
- package/lib/dist/components/icons/pause.d.ts.map +1 -0
- package/lib/dist/components/icons/pause.js +5 -0
- package/lib/dist/components/icons/play.d.ts +8 -0
- package/lib/dist/components/icons/play.d.ts.map +1 -0
- package/lib/dist/components/icons/play.js +5 -0
- package/lib/dist/components/icons/zoom-in.d.ts +8 -0
- package/lib/dist/components/icons/zoom-in.d.ts.map +1 -0
- package/lib/dist/components/icons/zoom-in.js +5 -0
- package/lib/dist/components/icons/zoom-out.d.ts +8 -0
- package/lib/dist/components/icons/zoom-out.d.ts.map +1 -0
- package/lib/dist/components/icons/zoom-out.js +5 -0
- package/lib/dist/components/morpho-viewer-octree/index.d.ts +4 -0
- package/lib/dist/components/morpho-viewer-octree/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-octree/index.js +3 -0
- package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +31 -0
- package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.module.css +70 -0
- package/lib/dist/components/morpho-viewer-octree/painter/camera.d.ts +12 -0
- package/lib/dist/components/morpho-viewer-octree/painter/camera.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-octree/painter/camera.js +23 -0
- package/lib/dist/components/morpho-viewer-octree/painter/manager.d.ts +23 -0
- package/lib/dist/components/morpho-viewer-octree/painter/manager.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-octree/painter/manager.js +180 -0
- package/lib/dist/components/morpho-viewer-octree/tools.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-octree/tools.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-octree/tools.js +9 -0
- package/lib/dist/components/morpho-viewer-octree/types.d.ts +19 -0
- package/lib/dist/components/morpho-viewer-octree/types.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-octree/types.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/colors.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/colors.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/colors.js +24 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.d.ts +7 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.js +12 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.module.css +25 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.js +50 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.module.css +115 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/hooks.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/hooks.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/hooks.js +12 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/hint.d.ts +8 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/hint.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/hint.js +57 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/hint.module.css +23 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/hint/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.d.ts +5 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.js +34 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.module.css +5 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.d.ts +19 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.js +209 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.js +21 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.module.css +20 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.js +12 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.module.css +21 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts +8 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.js +19 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.module.css +52 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.js +20 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.module.css +69 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.js +13 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.d.ts +7 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.js +13 -0
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.module.css +60 -0
- package/lib/dist/components/morpho-viewer-simul/contants.d.ts +9 -0
- package/lib/dist/components/morpho-viewer-simul/contants.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/contants.js +9 -0
- package/lib/dist/components/morpho-viewer-simul/hooks.d.ts +9 -0
- package/lib/dist/components/morpho-viewer-simul/hooks.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/hooks.js +34 -0
- package/lib/dist/components/morpho-viewer-simul/index.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-simul/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/index.js +3 -0
- package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +42 -0
- package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.module.css +94 -0
- package/lib/dist/components/morpho-viewer-simul/painter/camera.d.ts +18 -0
- package/lib/dist/components/morpho-viewer-simul/painter/camera.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/camera.js +17 -0
- package/lib/dist/components/morpho-viewer-simul/painter/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/initializer.d.ts +14 -0
- package/lib/dist/components/morpho-viewer-simul/painter/initializer.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/initializer.js +35 -0
- package/lib/dist/components/morpho-viewer-simul/painter/manager.d.ts +99 -0
- package/lib/dist/components/morpho-viewer-simul/painter/manager.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/manager.js +566 -0
- package/lib/dist/components/morpho-viewer-simul/painter/math.d.ts +4 -0
- package/lib/dist/components/morpho-viewer-simul/painter/math.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/math.js +33 -0
- package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.d.ts +12 -0
- package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.js +40 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.d.ts +5 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.js +14 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts +23 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.js +84 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.js +12 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/highlight.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/highlight.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/highlight.js +29 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.d.ts +12 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.js +34 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.d.ts +15 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.js +85 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.js +20 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.d.ts +20 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.js +114 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts +24 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.js +127 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.d.ts +28 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.js +136 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.d.ts +26 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.js +116 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/synapses.d.ts +12 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/synapses.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/painters/synapses.js +87 -0
- package/lib/dist/components/morpho-viewer-simul/painter/segments.d.ts +5 -0
- package/lib/dist/components/morpho-viewer-simul/painter/segments.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/segments.js +58 -0
- package/lib/dist/components/morpho-viewer-simul/painter/soma.d.ts +9 -0
- package/lib/dist/components/morpho-viewer-simul/painter/soma.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/soma.js +44 -0
- package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.d.ts +44 -0
- package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.js +164 -0
- package/lib/dist/components/morpho-viewer-simul/painter/structure.d.ts +59 -0
- package/lib/dist/components/morpho-viewer-simul/painter/structure.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/structure.js +175 -0
- package/lib/dist/components/morpho-viewer-simul/painter/transition.d.ts +41 -0
- package/lib/dist/components/morpho-viewer-simul/painter/transition.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/transition.js +152 -0
- package/lib/dist/components/morpho-viewer-simul/painter/tree.d.ts +7 -0
- package/lib/dist/components/morpho-viewer-simul/painter/tree.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/painter/tree.js +96 -0
- package/lib/dist/components/morpho-viewer-simul/types/private.d.ts +33 -0
- package/lib/dist/components/morpho-viewer-simul/types/private.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/types/private.js +2 -0
- package/lib/dist/components/morpho-viewer-simul/types/public.d.ts +91 -0
- package/lib/dist/components/morpho-viewer-simul/types/public.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/types/public.js +13 -0
- package/lib/dist/components/morpho-viewer-simul/utils.d.ts +4 -0
- package/lib/dist/components/morpho-viewer-simul/utils.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-simul/utils.js +25 -0
- package/lib/dist/components/morpho-viewer-small-circuit/index.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-small-circuit/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/index.js +3 -0
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +32 -0
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +63 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts +13 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.js +39 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/index.js +2 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +49 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.js +347 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.js +2 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +22 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +61 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts +4 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +42 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.js +2 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +19 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +105 -0
- package/lib/dist/components/morpho-viewer-small-circuit/types.d.ts +23 -0
- package/lib/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/types.js +2 -0
- package/lib/dist/components/tooltip/index.d.ts +2 -0
- package/lib/dist/components/tooltip/index.d.ts.map +1 -0
- package/lib/dist/components/tooltip/index.js +2 -0
- package/lib/dist/components/tooltip/tooltip.d.ts +14 -0
- package/lib/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/lib/dist/components/tooltip/tooltip.js +10 -0
- package/lib/dist/components/tooltip/tooltip.module.css +74 -0
- package/lib/dist/gizmo/gizmo-canvas.d.ts +17 -0
- package/lib/dist/gizmo/gizmo-canvas.d.ts.map +1 -0
- package/lib/dist/gizmo/gizmo-canvas.js +98 -0
- package/lib/dist/gizmo/index.d.ts +2 -0
- package/lib/dist/gizmo/index.d.ts.map +1 -0
- package/lib/dist/gizmo/index.js +2 -0
- package/lib/dist/gizmo/painter/shader.frag.d.ts +2 -0
- package/lib/dist/gizmo/painter/shader.frag.d.ts.map +1 -0
- package/lib/dist/gizmo/painter/shader.frag.js +19 -0
- package/lib/dist/gizmo/painter/shader.vert.d.ts +2 -0
- package/lib/dist/gizmo/painter/shader.vert.d.ts.map +1 -0
- package/lib/dist/gizmo/painter/shader.vert.js +26 -0
- package/lib/dist/gizmo/painter/tips.d.ts +13 -0
- package/lib/dist/gizmo/painter/tips.d.ts.map +1 -0
- package/lib/dist/gizmo/painter/tips.js +85 -0
- package/lib/dist/index.d.ts +16 -0
- package/lib/dist/index.d.ts.map +1 -0
- package/lib/dist/index.js +14 -0
- package/lib/dist/morphology/morphology-canvas.d.ts +64 -0
- package/lib/dist/morphology/morphology-canvas.d.ts.map +1 -0
- package/lib/dist/morphology/morphology-canvas.js +275 -0
- package/lib/dist/morphology/painter/factory.d.ts +7 -0
- package/lib/dist/morphology/painter/factory.d.ts.map +1 -0
- package/lib/dist/morphology/painter/factory.js +22 -0
- package/lib/dist/morphology/painter/index.d.ts +2 -0
- package/lib/dist/morphology/painter/index.d.ts.map +1 -0
- package/lib/dist/morphology/painter/index.js +2 -0
- package/lib/dist/morphology/painter/nodes.d.ts +21 -0
- package/lib/dist/morphology/painter/nodes.d.ts.map +1 -0
- package/lib/dist/morphology/painter/nodes.js +134 -0
- package/lib/dist/morphology/painter/painter.d.ts +31 -0
- package/lib/dist/morphology/painter/painter.d.ts.map +1 -0
- package/lib/dist/morphology/painter/painter.js +104 -0
- package/lib/dist/morphology/painter/segments.d.ts +23 -0
- package/lib/dist/morphology/painter/segments.d.ts.map +1 -0
- package/lib/dist/morphology/painter/segments.js +96 -0
- package/lib/dist/morphology/painter/textures.d.ts +10 -0
- package/lib/dist/morphology/painter/textures.d.ts.map +1 -0
- package/lib/dist/morphology/painter/textures.js +53 -0
- package/lib/dist/nrrd/get-header-length.d.ts +2 -0
- package/lib/dist/nrrd/get-header-length.d.ts.map +1 -0
- package/lib/dist/nrrd/get-header-length.js +48 -0
- package/lib/dist/nrrd/header.d.ts +28 -0
- package/lib/dist/nrrd/header.d.ts.map +1 -0
- package/lib/dist/nrrd/header.js +122 -0
- package/lib/dist/nrrd/index.d.ts +3 -0
- package/lib/dist/nrrd/index.d.ts.map +1 -0
- package/lib/dist/nrrd/index.js +33 -0
- package/lib/dist/nrrd/volume.d.ts +29 -0
- package/lib/dist/nrrd/volume.d.ts.map +1 -0
- package/lib/dist/nrrd/volume.js +129 -0
- package/lib/dist/package.json +83 -0
- package/lib/dist/parser/for-each-line.d.ts +2 -0
- package/lib/dist/parser/for-each-line.d.ts.map +1 -0
- package/lib/dist/parser/for-each-line.js +14 -0
- package/lib/dist/parser/swc.d.ts +14 -0
- package/lib/dist/parser/swc.d.ts.map +1 -0
- package/lib/dist/parser/swc.js +49 -0
- package/lib/dist/scalebar.d.ts +11 -0
- package/lib/dist/scalebar.d.ts.map +1 -0
- package/lib/dist/scalebar.js +25 -0
- package/lib/dist/tools/cache-lru.d.ts +18 -0
- package/lib/dist/tools/cache-lru.d.ts.map +1 -0
- package/lib/dist/tools/cache-lru.js +53 -0
- package/lib/dist/tools/morphology-to-tree.d.ts +4 -0
- package/lib/dist/tools/morphology-to-tree.d.ts.map +1 -0
- package/lib/dist/tools/morphology-to-tree.js +89 -0
- package/lib/dist/types.d.ts +9 -0
- package/lib/dist/types.d.ts.map +1 -0
- package/lib/dist/types.js +9 -0
- package/lib/dist/utils.d.ts +16 -0
- package/lib/dist/utils.d.ts.map +1 -0
- package/lib/dist/utils.js +56 -0
- package/package.json +40 -15
- package/package.json~ +0 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synapses.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-simul/painter/painters/synapses.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EACf,eAAe,EAOhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;gBAE1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc;IAsB1F,IAAI,GAAG,IAGM,MAAM,CADlB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAElB;IAED,MAAM,IAAI,IAAI;CAIf"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { TgdPainterGroup, TgdPainterPointsCloudMorphing, TgdTexture2D, TgdVec3, tgdCalcMix, tgdCanvasCreateFill, } from "@tolokoban/tgd";
|
|
2
|
+
export class PainterSynapses extends TgdPainterGroup {
|
|
3
|
+
constructor(context, synapses, data) {
|
|
4
|
+
super({ name: "PainterSynapses" });
|
|
5
|
+
this.textures = [];
|
|
6
|
+
const texture = new TgdTexture2D(context).loadBitmap(tgdCanvasCreateFill(1, 1, synapses.color));
|
|
7
|
+
this.textures.push(texture);
|
|
8
|
+
const dataPoint3D = makeDataPoint(synapses.sections, data.structure, data.segments3D);
|
|
9
|
+
const dataPointDendrogram = makeDataPoint(synapses.sections, data.structure, data.segmentsDendrogram);
|
|
10
|
+
const cloud = new TgdPainterPointsCloudMorphing(context, {
|
|
11
|
+
name: `TgdPainterPointsCloud[${synapses.color}]`,
|
|
12
|
+
data: [[dataPoint3D, dataPointDendrogram]],
|
|
13
|
+
minSizeInPixels: 4,
|
|
14
|
+
radiusMultiplier: 0.5,
|
|
15
|
+
texture,
|
|
16
|
+
});
|
|
17
|
+
this.cloud = cloud;
|
|
18
|
+
this.add(cloud);
|
|
19
|
+
}
|
|
20
|
+
get mix() {
|
|
21
|
+
return this.cloud.mix;
|
|
22
|
+
}
|
|
23
|
+
set mix(mix) {
|
|
24
|
+
this.cloud.mix = mix;
|
|
25
|
+
}
|
|
26
|
+
delete() {
|
|
27
|
+
super.delete();
|
|
28
|
+
this.textures.forEach((texture) => texture.delete());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function makeDataPoint(sections, structure, segments) {
|
|
32
|
+
let counter = 0;
|
|
33
|
+
const dataPoint = [];
|
|
34
|
+
for (const [sectionName, offsets] of Object.entries(sections)) {
|
|
35
|
+
for (const offsetInSection of offsets) {
|
|
36
|
+
const item = structure.getSegmentOfSectionAtOffset(sectionName, offsetInSection);
|
|
37
|
+
if (!item)
|
|
38
|
+
continue;
|
|
39
|
+
const { segment, offset } = item;
|
|
40
|
+
const targetSegment = segments.get(segment.index);
|
|
41
|
+
if (!targetSegment)
|
|
42
|
+
continue;
|
|
43
|
+
const [x, y, z] = computePositionOnSegmentSurface(targetSegment.getXYZR0(0), targetSegment.getXYZR1(0), offset, counter++);
|
|
44
|
+
dataPoint.push(x, y, z, 1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return { point: new Float32Array(dataPoint) };
|
|
48
|
+
}
|
|
49
|
+
function computePositionOnSegmentSurface(start, end, offset, randomSeed) {
|
|
50
|
+
const [x0, y0, z0, r0] = start;
|
|
51
|
+
const [x1, y1, z1, r1] = end;
|
|
52
|
+
const vecZ = new TgdVec3(x1, y1, z1).subtract([x0, y0, z0]);
|
|
53
|
+
const lengthZ = vecZ.size;
|
|
54
|
+
if (lengthZ < 1e-6) {
|
|
55
|
+
return computePositionOnSphereSurface(x0, y0, z0, r0, randomSeed);
|
|
56
|
+
}
|
|
57
|
+
const x = tgdCalcMix(x0, x1, offset);
|
|
58
|
+
const y = tgdCalcMix(y0, y1, offset);
|
|
59
|
+
const z = tgdCalcMix(z0, z1, offset);
|
|
60
|
+
const radius = tgdCalcMix(r0, r1, offset);
|
|
61
|
+
const angle = randomSeed;
|
|
62
|
+
vecZ.normalize();
|
|
63
|
+
const vecX = computeVecX(vecZ);
|
|
64
|
+
const vecY = vecZ.cross(vecX);
|
|
65
|
+
vecX.scale(radius * Math.cos(angle));
|
|
66
|
+
vecY.scale(radius * Math.sin(angle));
|
|
67
|
+
const [xx, yy, zz] = new TgdVec3(x, y, z).add(vecX).add(vecY);
|
|
68
|
+
return [xx, yy, zz];
|
|
69
|
+
}
|
|
70
|
+
function computePositionOnSphereSurface(x, y, z, r, randomSeed) {
|
|
71
|
+
const lat = randomSeed;
|
|
72
|
+
const lng = randomSeed * 7.4656519;
|
|
73
|
+
const Z = Math.sin(lat);
|
|
74
|
+
const R = Math.cos(lat);
|
|
75
|
+
const xx = r * R * Math.cos(lng);
|
|
76
|
+
const yy = r * R * Math.sin(lng);
|
|
77
|
+
const zz = r * Z;
|
|
78
|
+
const result = [x + xx, y + yy, z + zz];
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
function computeVecX(vecZ) {
|
|
82
|
+
const vecX = new TgdVec3(0, 1, 0).cross(vecZ);
|
|
83
|
+
if (vecX.dot(vecX) > 1e-9)
|
|
84
|
+
return vecX;
|
|
85
|
+
return new TgdVec3(1, 0, 0).cross(vecZ);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYXBzZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNpbXVsL3BhaW50ZXIvcGFpbnRlcnMvc3luYXBzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlMLGVBQWUsRUFDZiw2QkFBNkIsRUFFN0IsWUFBWSxFQUNaLE9BQU8sRUFDUCxVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUlsRCxZQUFZLE9BQW1CLEVBQUUsUUFBbUMsRUFBRSxJQUFvQjtRQUN4RixLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBSnBCLGFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBSzdDLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUN2QyxRQUFRLENBQUMsUUFBUSxFQUNqQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksNkJBQTZCLENBQUMsT0FBTyxFQUFFO1lBQ3ZELElBQUksRUFBRSx5QkFBeUIsUUFBUSxDQUFDLEtBQUssR0FBRztZQUNoRCxJQUFJLEVBQUUsQ0FBQyxD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LE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQztJQUN6QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakIsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQ3JDLENBQVMsRUFDVCxDQUFTLEVBQ1QsQ0FBUyxFQUNULENBQVMsRUFDVCxVQUFrQjtJQUVsQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDdkIsTUFBTSxHQUFHLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sTUFBTSxHQUFpQixDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQWE7SUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN2QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TgdPainterSegmentsData } from "@tolokoban/tgd";
|
|
2
|
+
import type { Structure } from "./structure";
|
|
3
|
+
export declare function makeSegments3D(structure: Structure, map: Map<number, TgdPainterSegmentsData>): TgdPainterSegmentsData;
|
|
4
|
+
export declare function makeSegmentsDendrogram(structure: Structure, map: Map<number, TgdPainterSegmentsData>): TgdPainterSegmentsData;
|
|
5
|
+
//# sourceMappingURL=segments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/segments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAI9F,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AAI5D,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,0BAO5F;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,0BAWzC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { TgdPainterSegmentsData } from "@tolokoban/tgd";
|
|
2
|
+
import { MorphoViewerTreeItemType } from "../types/public.js";
|
|
3
|
+
const HIGHLIGHT_RADIUS_MULTIPLIER = 1.5;
|
|
4
|
+
export function makeSegments3D(structure, map) {
|
|
5
|
+
const segments = new TgdPainterSegmentsData();
|
|
6
|
+
structure.forEach((item) => {
|
|
7
|
+
const { start, end } = item;
|
|
8
|
+
processSegment(item, structure, segments, start, end, map);
|
|
9
|
+
});
|
|
10
|
+
return segments;
|
|
11
|
+
}
|
|
12
|
+
export function makeSegmentsDendrogram(structure, map) {
|
|
13
|
+
const width = Math.abs(structure.bboxDendrites.max[0] - structure.bboxDendrites.min[0]);
|
|
14
|
+
const height = Math.abs(structure.bboxDendrites.max[1] - structure.bboxDendrites.min[1]);
|
|
15
|
+
const segments = new TgdPainterSegmentsData();
|
|
16
|
+
structure.forEach((item) => {
|
|
17
|
+
const start = computeDendrogramStart(item, width, height);
|
|
18
|
+
const end = computeDendrogramEnd(item, width, height);
|
|
19
|
+
processSegment(item, structure, segments, start, end, map);
|
|
20
|
+
});
|
|
21
|
+
return segments;
|
|
22
|
+
}
|
|
23
|
+
function processSegment(item, structure, segments, start, end, map) {
|
|
24
|
+
const uv = [
|
|
25
|
+
(item.type + 0.5) / (MorphoViewerTreeItemType.Unknown + 1),
|
|
26
|
+
(item.index + 1.5) / (structure.length + 2),
|
|
27
|
+
];
|
|
28
|
+
segments.add([...start, structure.useStraightCylinders ? item.radiusEnd : item.radiusStart], [...end, item.radiusEnd], uv, uv);
|
|
29
|
+
const singleton = new TgdPainterSegmentsData();
|
|
30
|
+
const radiusStart = item.radiusStart * HIGHLIGHT_RADIUS_MULTIPLIER;
|
|
31
|
+
const radiusEnd = item.radiusEnd * HIGHLIGHT_RADIUS_MULTIPLIER;
|
|
32
|
+
singleton.add([...start, radiusStart], [...end, radiusEnd], uv, uv);
|
|
33
|
+
if (item.type !== MorphoViewerTreeItemType.Liaison) {
|
|
34
|
+
map.set(item.index, singleton);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const DENDROGRAM_CENTER_Y = 0.4;
|
|
38
|
+
function computeDendrogramStart(item, width, height) {
|
|
39
|
+
var _a;
|
|
40
|
+
if (item.type === MorphoViewerTreeItemType.Liaison) {
|
|
41
|
+
return computeDendrogramEnd((_a = item.parent) !== null && _a !== void 0 ? _a : item, width, height);
|
|
42
|
+
}
|
|
43
|
+
const x = item.rank * width;
|
|
44
|
+
const y = item.distanceFromSoma - height * DENDROGRAM_CENTER_Y;
|
|
45
|
+
const z = 0;
|
|
46
|
+
return [x, y, z];
|
|
47
|
+
}
|
|
48
|
+
function computeDendrogramEnd(item, width, height) {
|
|
49
|
+
if (item.type === MorphoViewerTreeItemType.Liaison) {
|
|
50
|
+
const [child] = item.children;
|
|
51
|
+
return computeDendrogramStart(child !== null && child !== void 0 ? child : item, width, height);
|
|
52
|
+
}
|
|
53
|
+
const x = item.rank * width;
|
|
54
|
+
const y = item.distanceFromSoma + item.segmentLength - height * DENDROGRAM_CENTER_Y;
|
|
55
|
+
const z = 0;
|
|
56
|
+
return [x, y, z];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNpbXVsL3BhaW50ZXIvc2VnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QyxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTNELE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBRXhDLE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBb0IsRUFBRSxHQUF3QztJQUMzRixNQUFNLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDOUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsU0FBb0IsRUFDcEIsR0FBd0M7SUFFeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TgdVec3 } from "@tolokoban/tgd";
|
|
2
|
+
import { type MorphoViewerTree, type MorphoViewerTreeItem } from "../types/public";
|
|
3
|
+
export declare function findSoma(tree: MorphoViewerTree): {
|
|
4
|
+
somaTreeItem: MorphoViewerTreeItem | null;
|
|
5
|
+
somaCenter: TgdVec3;
|
|
6
|
+
somaCount: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function parentOrphansToSoma(morphology: MorphoViewerTree, somaTreeItem: MorphoViewerTreeItem | null): MorphoViewerTreeItem | undefined;
|
|
9
|
+
//# sourceMappingURL=soma.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soma.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/soma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;;;;EAsB9C;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,oBAAoB,GAAG,IAAI,oCAc1C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TgdVec3 } from "@tolokoban/tgd";
|
|
2
|
+
import { MorphoViewerTreeItemType, } from "../types/public.js";
|
|
3
|
+
export function findSoma(tree) {
|
|
4
|
+
let somaTreeItem = null;
|
|
5
|
+
const somaCenter = new TgdVec3(0, 0, 0);
|
|
6
|
+
let somaCount = 0;
|
|
7
|
+
const fringe = tree.roots.slice();
|
|
8
|
+
while (fringe.length > 0) {
|
|
9
|
+
const item = fringe.shift();
|
|
10
|
+
if (!item)
|
|
11
|
+
continue;
|
|
12
|
+
if (item === null || item === void 0 ? void 0 : item.children)
|
|
13
|
+
fringe.push(...item.children);
|
|
14
|
+
if (item.type === MorphoViewerTreeItemType.Soma) {
|
|
15
|
+
if (!somaTreeItem)
|
|
16
|
+
somaTreeItem = item;
|
|
17
|
+
somaCenter.add([item.x, item.y, item.z]);
|
|
18
|
+
somaCount++;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (somaCount > 0)
|
|
22
|
+
somaCenter.scale(1 / somaCount);
|
|
23
|
+
return {
|
|
24
|
+
somaTreeItem,
|
|
25
|
+
somaCenter: new TgdVec3(),
|
|
26
|
+
somaCount,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function parentOrphansToSoma(morphology, somaTreeItem) {
|
|
30
|
+
var _a;
|
|
31
|
+
const singleRoot = somaTreeItem !== null && somaTreeItem !== void 0 ? somaTreeItem : morphology.roots[0];
|
|
32
|
+
if (!singleRoot)
|
|
33
|
+
return;
|
|
34
|
+
const children = (_a = singleRoot.children) !== null && _a !== void 0 ? _a : [];
|
|
35
|
+
for (const root of morphology.roots) {
|
|
36
|
+
if (root !== singleRoot) {
|
|
37
|
+
children.push(root);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
singleRoot.children = children;
|
|
41
|
+
morphology.roots = [singleRoot];
|
|
42
|
+
return singleRoot;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29tYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvcGFpbnRlci9zb21hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBR0wsd0JBQXdCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFzQjtJQUM3QyxJQUFJLFlBQVksR0FBZ0MsSUFBSSxDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSTtZQUFFLFNBQVM7UUFFcEIsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUTtZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZO2dCQUFFLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDdkMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxTQUFTLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQztRQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE9BQU87UUFDTCxZQUFZO1FBQ1osVUFBVSxFQUFFLElBQUksT0FBTyxFQUFFO1FBQ3pCLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsVUFBNEIsRUFDNUIsWUFBeUM7O0lBRXpDLE1BQU0sVUFBVSxHQUFHLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPO0lBRXhCLE1BQU0sUUFBUSxHQUFHLE1BQUEsVUFBVSxDQUFDLFFBQVEsbUNBQUksRUFBRSxDQUFDO0lBQzNDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFDRCxVQUFVLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMvQixVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyJ9
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TgdContext, TgdEvent, TgdVec4 } from "@tolokoban/tgd";
|
|
2
|
+
import { MorphoViewerSpikeRecord } from "../types/public";
|
|
3
|
+
export declare class SpikingManager {
|
|
4
|
+
readonly context: TgdContext;
|
|
5
|
+
private static ID;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly eventProgressChange: TgdEvent<number>;
|
|
8
|
+
readonly eventSpikesChange: TgdEvent<MorphoViewerSpikeRecord[]>;
|
|
9
|
+
readonly eventSpikeChange: TgdEvent<MorphoViewerSpikeRecord | undefined>;
|
|
10
|
+
readonly eventSpikeIndexChange: TgdEvent<number>;
|
|
11
|
+
private readonly _color;
|
|
12
|
+
private _spikes;
|
|
13
|
+
private _spike;
|
|
14
|
+
private _spikeIndex;
|
|
15
|
+
private _spikingRadiusTime;
|
|
16
|
+
private _speed;
|
|
17
|
+
private readonly virtualTime;
|
|
18
|
+
constructor(context: TgdContext);
|
|
19
|
+
delete(): void;
|
|
20
|
+
get speed(): number;
|
|
21
|
+
set speed(speed: number);
|
|
22
|
+
get time(): number;
|
|
23
|
+
usePlaying(): [playing: boolean, setPlaying: (playing: boolean) => void];
|
|
24
|
+
get color(): {
|
|
25
|
+
R: number;
|
|
26
|
+
G: number;
|
|
27
|
+
B: number;
|
|
28
|
+
A: number;
|
|
29
|
+
toVec4: () => TgdVec4;
|
|
30
|
+
toString: () => string;
|
|
31
|
+
};
|
|
32
|
+
get progress(): number;
|
|
33
|
+
set progress(progress: number);
|
|
34
|
+
get playing(): boolean;
|
|
35
|
+
get intensity(): number;
|
|
36
|
+
get spikes(): MorphoViewerSpikeRecord[];
|
|
37
|
+
set spikes(spikes: MorphoViewerSpikeRecord[]);
|
|
38
|
+
get spike(): MorphoViewerSpikeRecord | undefined;
|
|
39
|
+
private set spike(value);
|
|
40
|
+
get spikeIndex(): number;
|
|
41
|
+
set spikeIndex(spikeIndex: number);
|
|
42
|
+
private readonly dispatchProgress;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=spiking-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spiking-manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/spiking-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAE,QAAQ,EAAW,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,qBAAa,cAAc;aAiBG,OAAO,EAAE,UAAU;IAhB/C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAK;IAEtB,SAAgB,IAAI,SAA2C;IAC/D,SAAgB,mBAAmB,mBAA0B;IAC7D,SAAgB,iBAAiB,sCAA6C;IAC9E,SAAgB,gBAAgB,gDAAuD;IACvF,SAAgB,qBAAqB,mBAA0B;IAE/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,MAAM,CAAkD;IAChE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAEV,OAAO,EAAE,UAAU;IAM/C,MAAM;IAIN,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAED,IAAI,IAAI,WAEP;IAED,UAAU,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAkBxE,IAAI,KAAK,IAAI;QACX,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,MAAM,EAAE,MAAM,OAAO,CAAC;QACtB,QAAQ,EAAE,MAAM,MAAM,CAAC;KACxB,CAEA;IAKD,IAAI,QAAQ,IAeW,MAAM,CAD5B;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAQ5B;IAED,IAAI,OAAO,YAEV;IAKD,IAAI,SAAS,IAAI,MAAM,CAkCtB;IAED,IAAI,MAAM,IAAI,uBAAuB,EAAE,CAEtC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,EAM3C;IAED,IAAI,KAAK,IAAI,uBAAuB,GAAG,SAAS,CAE/C;IACD,OAAO,KAAK,KAAK,QAOhB;IAED,IAAI,UAAU,IAGa,MAAM,CADhC;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAWhC;IAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;CACH"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { TgdColor, TgdEvent, TgdTime } from "@tolokoban/tgd";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { SPIKING_TIME_RADIUS } from "../contants.js";
|
|
4
|
+
export class SpikingManager {
|
|
5
|
+
constructor(context) {
|
|
6
|
+
this.context = context;
|
|
7
|
+
this.name = `SpikingManager#${SpikingManager.ID++}`;
|
|
8
|
+
this.eventProgressChange = new TgdEvent();
|
|
9
|
+
this.eventSpikesChange = new TgdEvent();
|
|
10
|
+
this.eventSpikeChange = new TgdEvent();
|
|
11
|
+
this.eventSpikeIndexChange = new TgdEvent();
|
|
12
|
+
this._color = new TgdColor(1, 1, 1, 1);
|
|
13
|
+
this._spikes = [];
|
|
14
|
+
this._spike = undefined;
|
|
15
|
+
this._spikeIndex = 0;
|
|
16
|
+
this._spikingRadiusTime = SPIKING_TIME_RADIUS;
|
|
17
|
+
this._speed = 0;
|
|
18
|
+
this.dispatchProgress = () => {
|
|
19
|
+
this.eventProgressChange.dispatch(this.progress);
|
|
20
|
+
};
|
|
21
|
+
this.virtualTime = new TgdTime({ context });
|
|
22
|
+
context.eventPaint.addListener(this.dispatchProgress);
|
|
23
|
+
this.speed = 0.1;
|
|
24
|
+
}
|
|
25
|
+
delete() {
|
|
26
|
+
this.context.eventPaint.removeListener(this.dispatchProgress);
|
|
27
|
+
}
|
|
28
|
+
get speed() {
|
|
29
|
+
return this._speed;
|
|
30
|
+
}
|
|
31
|
+
set speed(speed) {
|
|
32
|
+
if (this._speed === speed)
|
|
33
|
+
return;
|
|
34
|
+
this._speed = speed;
|
|
35
|
+
this.virtualTime.speed = speed;
|
|
36
|
+
}
|
|
37
|
+
get time() {
|
|
38
|
+
return this.virtualTime.seconds;
|
|
39
|
+
}
|
|
40
|
+
usePlaying() {
|
|
41
|
+
const { context } = this;
|
|
42
|
+
const [playing, setPlaying] = React.useState(false);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
const handler = () => setPlaying(context.playing);
|
|
45
|
+
context.eventPlayingChange.addListener(handler);
|
|
46
|
+
return () => context.eventPlayingChange.removeListener(handler);
|
|
47
|
+
}, []);
|
|
48
|
+
return [
|
|
49
|
+
playing,
|
|
50
|
+
(v) => {
|
|
51
|
+
if (v)
|
|
52
|
+
context.play();
|
|
53
|
+
else
|
|
54
|
+
context.pause();
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
get color() {
|
|
59
|
+
return this._color;
|
|
60
|
+
}
|
|
61
|
+
get progress() {
|
|
62
|
+
var _a;
|
|
63
|
+
const { spike } = this;
|
|
64
|
+
if (!spike)
|
|
65
|
+
return 0;
|
|
66
|
+
const { time } = this;
|
|
67
|
+
const duration = spike.timeMaxInSeconds - spike.timeMinInSeconds;
|
|
68
|
+
const progress = time / duration;
|
|
69
|
+
if (progress > 1) {
|
|
70
|
+
this.virtualTime.reset();
|
|
71
|
+
(_a = this.context) === null || _a === void 0 ? void 0 : _a.pause();
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
return Math.max(progress, 0);
|
|
75
|
+
}
|
|
76
|
+
set progress(progress) {
|
|
77
|
+
const { spike } = this;
|
|
78
|
+
if (!spike)
|
|
79
|
+
return;
|
|
80
|
+
const duration = spike.timeMaxInSeconds - spike.timeMinInSeconds;
|
|
81
|
+
const seconds = duration * progress;
|
|
82
|
+
this.virtualTime.seconds = seconds;
|
|
83
|
+
this.context.paint();
|
|
84
|
+
}
|
|
85
|
+
get playing() {
|
|
86
|
+
var _a, _b;
|
|
87
|
+
return (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.playing) !== null && _b !== void 0 ? _b : false;
|
|
88
|
+
}
|
|
89
|
+
get intensity() {
|
|
90
|
+
const { spike } = this;
|
|
91
|
+
if (!spike)
|
|
92
|
+
return 0;
|
|
93
|
+
const { progress } = this;
|
|
94
|
+
if (progress <= 0)
|
|
95
|
+
return 0;
|
|
96
|
+
const t = progress * (spike.timeMaxInSeconds - spike.timeMinInSeconds) + spike.timeMinInSeconds;
|
|
97
|
+
let a = 0;
|
|
98
|
+
const data = spike.spikesInSeconds;
|
|
99
|
+
let b = data.length - 1;
|
|
100
|
+
let m = 0;
|
|
101
|
+
let loops = Math.ceil(Math.log2(data.length));
|
|
102
|
+
while (loops-- > 0) {
|
|
103
|
+
m = Math.floor((a + b) / 2);
|
|
104
|
+
const value = data[m];
|
|
105
|
+
if (value === t) {
|
|
106
|
+
a = m;
|
|
107
|
+
b = m;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
else if (value > t) {
|
|
111
|
+
b = m;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
a = m;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
m = Math.floor((a + b) / 2);
|
|
118
|
+
const factor = 1 / (this.speed * this._spikingRadiusTime);
|
|
119
|
+
const computeIntensity = (index) => 1 - Math.min(Math.abs(data[index] - t) * factor, 1);
|
|
120
|
+
let intensity = computeIntensity(m);
|
|
121
|
+
if (m < data.length - 1) {
|
|
122
|
+
intensity += computeIntensity(m + 1);
|
|
123
|
+
}
|
|
124
|
+
return intensity;
|
|
125
|
+
}
|
|
126
|
+
get spikes() {
|
|
127
|
+
return this._spikes;
|
|
128
|
+
}
|
|
129
|
+
set spikes(spikes) {
|
|
130
|
+
if (this._spikes === spikes)
|
|
131
|
+
return;
|
|
132
|
+
this._spikes = spikes;
|
|
133
|
+
this.spikeIndex = spikes.length - 1;
|
|
134
|
+
this.eventSpikesChange.dispatch(spikes);
|
|
135
|
+
}
|
|
136
|
+
get spike() {
|
|
137
|
+
return this._spikes[this._spikeIndex];
|
|
138
|
+
}
|
|
139
|
+
set spike(spike) {
|
|
140
|
+
if (spike === this._spike)
|
|
141
|
+
return;
|
|
142
|
+
this._spike = spike;
|
|
143
|
+
spike === null || spike === void 0 ? void 0 : spike.spikesInSeconds.sort((a, b) => a - b);
|
|
144
|
+
this.virtualTime.reset();
|
|
145
|
+
this.eventSpikeChange.dispatch(spike);
|
|
146
|
+
}
|
|
147
|
+
get spikeIndex() {
|
|
148
|
+
return this._spikeIndex;
|
|
149
|
+
}
|
|
150
|
+
set spikeIndex(spikeIndex) {
|
|
151
|
+
if (spikeIndex === this._spikeIndex)
|
|
152
|
+
return;
|
|
153
|
+
this._spikeIndex = spikeIndex;
|
|
154
|
+
this.spike = this.spikes[spikeIndex];
|
|
155
|
+
const { spike } = this;
|
|
156
|
+
if (spike) {
|
|
157
|
+
this._color.parse(spike.color);
|
|
158
|
+
}
|
|
159
|
+
this.eventSpikeIndexChange.dispatch(spikeIndex);
|
|
160
|
+
this.eventSpikeChange.dispatch(this.spike);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
SpikingManager.ID = 1;
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpa2luZy1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zaW11bC9wYWludGVyL3NwaWtpbmctbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFjLFFBQVEsRUFBRSxPQUFPLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sT0FBTyxjQUFjO0lBaUJ6QixZQUE0QixPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBZC9CLFNBQUksR0FBRyxrQkFBa0IsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDL0Msd0JBQW1CLEdBQUcsSUFBSSxRQUFRLEVBQVUsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxJQUFJLFFBQVEsRUFBNkIsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBRyxJQUFJLFFBQVEsRUFBdUMsQ0FBQztRQUN2RSwwQkFBcUIsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFDO1FBRTlDLFdBQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxZQUFPLEdBQThCLEVBQUUsQ0FBQztRQUN4QyxXQUFNLEdBQXdDLFNBQVMsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQix1QkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztRQUN6QyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBc0tGLHFCQUFnQixHQUFHLEdBQUcsRUFBRTtZQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUM7UUFw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
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type ArrayNumber3, TgdBoundingBox } from "@tolokoban/tgd";
|
|
2
|
+
import { type MorphoViewerTree, type MorphoViewerTreeItem, MorphoViewerTreeItemType } from "../types/public";
|
|
3
|
+
export interface StructureItem {
|
|
4
|
+
parent?: StructureItem;
|
|
5
|
+
children: StructureItem[];
|
|
6
|
+
index: number;
|
|
7
|
+
name: string;
|
|
8
|
+
sectionName: string;
|
|
9
|
+
sectionIndex: number;
|
|
10
|
+
segmentIndex: number;
|
|
11
|
+
segmentsCount: number;
|
|
12
|
+
start: ArrayNumber3;
|
|
13
|
+
end: ArrayNumber3;
|
|
14
|
+
radiusStart: number;
|
|
15
|
+
radiusEnd: number;
|
|
16
|
+
type: MorphoViewerTreeItemType;
|
|
17
|
+
segmentLength: number;
|
|
18
|
+
sectionLength: number;
|
|
19
|
+
distanceFromSoma: number;
|
|
20
|
+
leavesCount: number;
|
|
21
|
+
maxLength: number;
|
|
22
|
+
rank: number;
|
|
23
|
+
node: MorphoViewerTreeItem;
|
|
24
|
+
}
|
|
25
|
+
export interface StructureBoundingBox {
|
|
26
|
+
min: ArrayNumber3;
|
|
27
|
+
max: ArrayNumber3;
|
|
28
|
+
center: ArrayNumber3;
|
|
29
|
+
}
|
|
30
|
+
export declare class Structure {
|
|
31
|
+
readonly cellId: string;
|
|
32
|
+
readonly root: StructureItem;
|
|
33
|
+
readonly bboxDendrites: TgdBoundingBox;
|
|
34
|
+
readonly zoomMin: number;
|
|
35
|
+
readonly zoomMax: number;
|
|
36
|
+
readonly center: Readonly<ArrayNumber3>;
|
|
37
|
+
readonly useStraightCylinders: boolean;
|
|
38
|
+
private readonly bbox;
|
|
39
|
+
private readonly bboxSoma;
|
|
40
|
+
private readonly items;
|
|
41
|
+
private readonly segmentsPerSection;
|
|
42
|
+
private _hasApicalDendrites;
|
|
43
|
+
constructor(morphology: MorphoViewerTree);
|
|
44
|
+
private computeSectionsLengths;
|
|
45
|
+
private createAllSegments;
|
|
46
|
+
private computeDistancesFromSoma;
|
|
47
|
+
get hasApicalDendrites(): boolean;
|
|
48
|
+
private registerBranch;
|
|
49
|
+
getSegmentsOfSection(sectionName: string): StructureItem[];
|
|
50
|
+
getSegmentOfSectionAtOffset(sectionName: string, offset: number): {
|
|
51
|
+
segment: StructureItem;
|
|
52
|
+
offset: number;
|
|
53
|
+
} | null;
|
|
54
|
+
get length(): number;
|
|
55
|
+
get(index: number): StructureItem;
|
|
56
|
+
forEach(callback: (item: StructureItem, index: number) => void): void;
|
|
57
|
+
private createSegment;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAMlB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,qBAAa,SAAS;IACpB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,aAAa,CAAC;IAKpC,SAAgB,aAAa,iBAAwB;IACrD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAI7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsC;IACzE,OAAO,CAAC,mBAAmB,CAAkB;gBAEjC,UAAU,EAAE,gBAAgB;IAmBxC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,wBAAwB;IAKhC,IAAI,kBAAkB,YAErB;IAED,OAAO,CAAC,cAAc;IAmCtB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1D,2BAA2B,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA8BpD,IAAI,MAAM,WAET;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAOjC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAI9D,OAAO,CAAC,aAAa;CAgCtB"}
|