Spatial selection of object groups
- Dominant language
- TypeScript
- Stars
- 1.5k
- Forks
- 389
- Avg merge
- 3d 21h
- Merged PRs (30d)
- 3
Description
It's sometimes useful to simultaneously select many objects which densely a pack a particular region of the 2D view. The specific case I'm thinking of is bundle tracts. [Here's an example.][1] But I can think of other use-cases, too.
Currently, the only way to select many objects like that is to double-click on each one individually. (Is that correct?) It would be wonderful if there were some way to select many objects via a "lasso" tool or something similar. Even a minimal version that supports only rectangular selections (instead of arbitrary closed loops) would still be quite valuable.
Heck, perhaps the simplest thing to implement would be a button in the segmentation selection panel named "select all in frame", which selects every segment which is currently visible in the 2D viewer(s). Then no special cursor behavior is needed; I can just zoom and pan as needed to add objects to my selected set. It's simple, but it would be a huge time-saver in specific use-cases. (If a mouse-based solution might be tricky, then I don't want to disregard a simple solution that would still provide 95% of the value.)
For the use-cases I have in mind, it might be desirable to select dozens, hundreds, or even (sometimes) thousands of objects at once. For example, [here's a much larger bundle tract than my example above.][2] Selecting all of those neurons individually would require a lot of double-clicking!

[1]: https://neuroglancer-demo.appspot.com/#!%7B%22dimensions%22:%7B%22x%22:%5B8e-9%2C%22m%22%5D%2C%22y%22:%5B8e-9%2C%22m%22%5D%2C%22z%22:%5B8e-9%2C%22m%22%5D%7D%2C%22position%22:%5B14445.3125%2C22345.583984375%2C23331.888671875%5D%2C%22crossSectionOrientation%22:%5B-0.09738385677337646%2C0.07918980717658997%2C-0.46120578050613403%2C0.8783704042434692%5D%2C%22crossSectionScale%22:1.344299218080046%2C%22crossSectionDepth%22:-37.62185354999912%2C%22projectionOrientation%22:%5B-0.4580816924571991%2C-0.679581344127655%2C-0.26367050409317017%2C0.5087319612503052%5D%2C%22projectionScale%22:180071.98633918303%2C%22layers%22:%5B%7B%22type%22:%22image%22%2C%22source%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/emdata/clahe_yz/jpeg%22%2C%22name%22:%22emdata%22%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/segmentation%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22segments%22:%5B%221009578838%22%2C%221013636956%22%2C%221019556103%22%2C%221042366365%22%2C%221050249353%22%2C%221070651567%22%2C%221073314797%22%2C%221104790425%22%2C%221199565117%22%2C%221204063702%22%2C%221416805841%22%2C%221597908742%22%2C%221629625638%22%2C%221662381948%22%2C%22297217528%22%2C%22298603633%22%2C%22328244591%22%2C%22328939480%22%2C%22329646990%22%2C%22361955066%22%2C%22422056477%22%2C%22422056521%22%2C%22454001950%22%2C%22514816333%22%2C%22549158040%22%2C%22549161688%22%2C%22549269622%22%2C%22550953198%22%2C%225812980109%22%2C%225812982994%22%2C%225813010212%22%2C%225813015068%22%2C%225813019560%22%2C%225813019862%22%2C%225813020800%22%2C%225813020857%22%2C%225813022160%22%2C%225813039962%22%2C%225813065300%22%2C%225813094811%22%2C%225813097634%22%2C%225813104190%22%2C%225901196319%22%2C%22607899687%22%2C%22635890732%22%2C%22670297553%22%2C%22671660941%22%2C%22672697926%22%2C%22705787638%22%2C%22734754585%22%2C%22736109737%22%2C%22766126400%22%2C%22826136822%22%2C%22861683024%22%2C%22862697175%22%2C%22888146447%22%2C%22920869856%22%2C%22920873167%22%2C%22924737391%22%2C%22951934694%22%5D%2C%22name%22:%22segmentation%22%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/mito-objects-grouped%22%2C%22subsources%22:%7B%22default%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22selectedAlpha%22:0%2C%22saturation%22:0%2C%22linkedSegmentationGroup%22:%22segmentation%22%2C%22name%22:%22mito-grouped%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22annotation%22%2C%22source%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/synapses%22%2C%22tab%22:%22rendering%22%2C%22ignoreNullSegmentFilter%22:false%2C%22shader%22:%22#uicontrol%20bool%20showPsds%20checkbox%28default=true%29%5Cn#uicontrol%20vec3%20preColor%20color%28default=%5C%22red%5C%22%29%5Cn#uicontrol%20vec3%20postColor%20color%28default=%5C%22blue%5C%22%29%5Cn#uicontrol%20float%20preConfidence%20slider%28min=0%2C%20max=1%2C%20default=0%29%5Cn#uicontrol%20float%20postConfidence%20slider%28min=0%2C%20max=1%2C%20default=0%29%5Cn%5Cnvoid%20main%28%29%20%7B%5Cn%20%20setColor%28defaultColor%28%29%29%3B%5Cn%20%20%5Cn%20%20setEndpointMarkerColor%28%5Cn%20%20%20%20vec4%28preColor%2C%200.5%29%2C%5Cn%20%20%20%20vec4%28postColor%2C%200.5%29%29%3B%5Cn%20%20%5Cn%20%20if%20%28showPsds%29%20%7B%5Cn%20%20%20%20setEndpointMarkerSize%288.0%2C%204.0%29%3B%5Cn%20%20%7D%5Cn%20%20else%20%7B%5Cn%20%20%20%20setLineWidth%280.0%29%3B%5Cn%20%20%20%20setEndpointMarkerSize%288.0%2C%200.0%29%3B%5Cn%20%20%7D%5Cn%20%20%5Cn%20%20if%20%28prop_pre_synaptic_confidence%28%29%3C%20preConfidence%20%7C%7C%5Cn%20%20%20%20%20%20prop_post_synaptic_confidence%28%29%3C%20postConfidence%29%20discard%3B%5Cn%7D%5Cn%22%2C%22shaderControls%22:%7B%22showPsds%22:false%7D%2C%22linkedSegmentationLayer%22:%7B%22pre_synaptic_cell%22:%22segmentation%22%2C%22post_synaptic_cell%22:%22segmentation%22%7D%2C%22filterBySegmentation%22:%5B%22pre_synaptic_cell%22%5D%2C%22name%22:%22synapse%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/rois%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22selectedAlpha%22:0%2C%22saturation%22:0%2C%22objectAlpha%22:0.8%2C%22ignoreNullVisibleSet%22:false%2C%22meshSilhouetteRendering%22:3%2C%22name%22:%22roi%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/mito-classes%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22segmentColors%22:%7B%224%22:%22#000000%22%7D%2C%22name%22:%22mito-classes%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/mask_normalized_round6%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22selectedAlpha%22:0.53%2C%22segmentColors%22:%7B%227%22:%22#000000%22%7D%2C%22name%22:%22mask%22%2C%22visible%22:false%7D%5D%2C%22showSlices%22:false%2C%22selectedLayer%22:%7B%22layer%22:%22segmentation%22%2C%22visible%22:true%2C%22size%22:290%7D%2C%22layout%22:%22xz-3d%22%7D
[2]: https://neuroglancer-demo.appspot.com/#!%7B%22dimensions%22:%7B%22x%22:%5B8e-9%2C%22m%22%5D%2C%22y%22:%5B8e-9%2C%22m%22%5D%2C%22z%22:%5B8e-9%2C%22m%22%5D%7D%2C%22position%22:%5B13407.9931640625%2C21062%2C17258.494140625%5D%2C%22crossSectionScale%22:3.306442539115531%2C%22crossSectionDepth%22:-37.62185354999912%2C%22projectionScale%22:109219.18067006872%2C%22layers%22:%5B%7B%22type%22:%22image%22%2C%22source%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/emdata/clahe_yz/jpeg%22%2C%22name%22:%22emdata%22%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/segmentation%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22objectAlpha%22:0.3%2C%22name%22:%22segmentation%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/mito-objects-grouped%22%2C%22subsources%22:%7B%22default%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22selectedAlpha%22:0%2C%22saturation%22:0%2C%22linkedSegmentationGroup%22:%22segmentation%22%2C%22name%22:%22mito-grouped%22%7D%2C%7B%22type%22:%22annotation%22%2C%22source%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/synapses%22%2C%22tab%22:%22rendering%22%2C%22ignoreNullSegmentFilter%22:false%2C%22shader%22:%22#uicontrol%20bool%20showPsds%20checkbox%28default=true%29%5Cn#uicontrol%20vec3%20preColor%20color%28default=%5C%22red%5C%22%29%5Cn#uicontrol%20vec3%20postColor%20color%28default=%5C%22blue%5C%22%29%5Cn#uicontrol%20float%20preConfidence%20slider%28min=0%2C%20max=1%2C%20default=0%29%5Cn#uicontrol%20float%20postConfidence%20slider%28min=0%2C%20max=1%2C%20default=0%29%5Cn%5Cnvoid%20main%28%29%20%7B%5Cn%20%20setColor%28defaultColor%28%29%29%3B%5Cn%20%20%5Cn%20%20setEndpointMarkerColor%28%5Cn%20%20%20%20vec4%28preColor%2C%200.5%29%2C%5Cn%20%20%20%20vec4%28postColor%2C%200.5%29%29%3B%5Cn%20%20%5Cn%20%20if%20%28showPsds%29%20%7B%5Cn%20%20%20%20setEndpointMarkerSize%288.0%2C%204.0%29%3B%5Cn%20%20%7D%5Cn%20%20else%20%7B%5Cn%20%20%20%20setLineWidth%280.0%29%3B%5Cn%20%20%20%20setEndpointMarkerSize%288.0%2C%200.0%29%3B%5Cn%20%20%7D%5Cn%20%20%5Cn%20%20if%20%28prop_pre_synaptic_confidence%28%29%3C%20preConfidence%20%7C%7C%5Cn%20%20%20%20%20%20prop_post_synaptic_confidence%28%29%3C%20postConfidence%29%20discard%3B%5Cn%7D%5Cn%22%2C%22shaderControls%22:%7B%22showPsds%22:false%7D%2C%22linkedSegmentationLayer%22:%7B%22pre_synaptic_cell%22:%22segmentation%22%2C%22post_synaptic_cell%22:%22segmentation%22%7D%2C%22filterBySegmentation%22:%5B%22pre_synaptic_cell%22%5D%2C%22name%22:%22synapse%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/rois%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22selectedAlpha%22:0%2C%22saturation%22:0%2C%22objectAlpha%22:0.8%2C%22ignoreNullVisibleSet%22:false%2C%22meshSilhouetteRendering%22:3%2C%22name%22:%22roi%22%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.2/mito-classes%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%2C%22mesh%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22segmentColors%22:%7B%224%22:%22#000000%22%7D%2C%22name%22:%22mito-classes%22%2C%22visible%22:false%7D%2C%7B%22type%22:%22segmentation%22%2C%22source%22:%7B%22url%22:%22precomputed://gs://neuroglancer-janelia-flyem-hemibrain/mask_normalized_round6%22%2C%22subsources%22:%7B%22default%22:true%2C%22properties%22:true%7D%2C%22enableDefaultSubsources%22:false%7D%2C%22tab%22:%22segments%22%2C%22pick%22:false%2C%22selectedAlpha%22:0.53%2C%22segmentColors%22:%7B%227%22:%22#000000%22%7D%2C%22name%22:%22mask%22%2C%22visible%22:false%7D%5D%2C%22showSlices%22:false%2C%22selectedLayer%22:%7B%22layer%22:%22segmentation%22%2C%22visible%22:true%2C%22size%22:290%7D%2C%22layout%22:%22xz%22%7D
Contributor guide
Assessment
This issue has not been assessed yet.