VAST Lite Version 1.5.0 (c) May 9th, 2024 by Daniel R. Berger, Lichtman Lab, Harvard VAST is a Volume Annotation and Segmentation Tool for microscopic image stacks. It runs on PCs with 64-bit Windows 7 or later. This version of VAST is free of charge and may be distributed freely, but not sold. Commercial usage is allowed. You are using this software at your own risk. Version 1.5.0 implements the following improvements over version 1.4.1: MAJOR NEW FUNCTIONS -------------------- - Support for up to four main window panels - New Node Tool (Annotation Objects menu / 'Node Tool') which lets you select specific nodes and perform different actions using just those nodes - New raymarching 3D viewer (work in progress) - Segmentations can be generated from tool layers by filling at skeleton nodes added (Segment Colors menu / 'Add Segments From Other Layers ...') - VSVI data can now be cached on the local disk OTHER NEW AND IMPROVED FUNCTIONS --------------------------------- - Control button text is now remembered when the Control Buttons window is closed and reopened - 'Remove Node Label' added to control button functions - White transparent background behind node labels in 2D view added, configurable in Preferences; label underline adjusts to text length (in 2d window) - Added 'Go to parent node', 'Go to child node 1', 'Go to child node 2' to control buttons - F3 'search again' now also works in move mode in the 2D window - Search term is now remembered after 'Save As' of annotation layers - Improved memory allocation in image class - Added View / Cursor Information Overlay, showing mouse cursor coordinates and information about the moused pixel in the selected layer - Extended .vsvi format to allow loading of datasets with cut-to-data-size upper boundary tiles - Added 'Count Node Labels' also to node context menu - Added 'Select node but undo move' to node menu - Added 'Don't save black tiles' to screenshot exporting - Node tool can now select branch nodes and leaf nodes - Node find function can now find nodes selected in node tool - Improved disk cacheing during segmentation import from images - Most parameters of the dialog for importing segmentation from images should now remembered, even if the dialog was closed with 'Cancel' - 'Guess' button added to the dialog for importing segmentation from images, to automatically format the filename template - Node Tool can now replace text in node labels - Control Buttons now have functions to 'Find Node Again (F3)' and 'Go to Selected Node' - 'Import from other layers' to segmentation layers by filling at nodes now creates correct bounding boxes and supports filling a different segment per node - Keypad 5 pressed now allows scrolling in depth with the mouse (left-click and hold, move up and down) - Node tool now allows selecting/deselecting root nodes - Add skeletons from other layers: copying skeletons from another annotation layer with root nodes only is now supported - Segmentation paint cursor can now be up to 1023 pixels in diameter (up from 511) - 'Import images in the order selected' added to segmentation import from images - Clamped the initial zoom to reasonable volumes in case the window size is 0 - Added 'Reset View and Zoom' to main menu - Added 'Nodes with name starting with in subtree ...' and 'Nodes with name ending with in subtree ...' to Nodetool - Added functionality to nodetool to select nodes from either selected subtrees or whole skeletons, and to add/remove nodes within spatial bounding boxes - VAST now checks and fixes some .vsseg segment hierarchy problems upon loading - Copy-pasting skeletons from one annotation layer to another now also copies edge properties (type and weight) - Added saving/copying raw EXTs of selected nodes to Nodetool - Changed scrolling bahavior at lower resolutions (higher mip levels) to match the texture resolution - The selected node in the schematic viewer now has a black ring to enhance visibility - 'Annotation Layer Information' now also returns the number of folders and skeletons in the annotation layer - Added ext2 to nodes to store the segmentation id via tool layers - Added support for ext2 in node data export to file and node information dialog - Removed looping when using keypad+ and shift-keypad+ - Improved progress bar updating when saving large .vsanno files - Added 'Go to Root Node' to node context menu - Annotation space backend changed to improve memory handling - Updated profiler - added annotation layer processing and multipanel support - Default input mode is now to not distinguish between finger and pen since many displays treat all as finger (change in Preferences) - Key Zscroll now also works in fill, pick, collect, and split modes - Added a warning when VSVR or VSVI files specify an incorrect number of MipMapZScaling values - Added a right-click non-node context menu to the schematic viewer which duplicates the functions in the menu bar - Added segmentation caching of the most recent requested cube in some cases to speed up segmentation layers - Added importing of node labels for .csv skeleton files as exported by VAST - Added loading of annotation layer metadata from .csv files as exported by VAST - Changed translayer filling at skeleton nodes with 'new segment per node' so that segments are only added if the fill seed is on background (fillable) - Added immediate texture refresh if segmentation blend mode is changed to masking, also from API - Default number of image targets for .vsvi files is now 16. Added configurable parameter "NumberOfImageTargets" to .vsvi files - Added save and save-as of annotation and segmentation layers to the layers toolwindow context menu - Added check for corrupted header in incompletely saved .vsseg segmentation files - If editability of an annotation layer is switched off in the Layers window, a different mouse cursor is shown and skeleton node dragging, deleting and adding nodes by mouse click is disabled BUG FIXES ---------- - Added thread exit checks in destructors of annotation schematics and 3d viewer - Cleaned up right-click context menu behavior - Added error handling to public Google shard and minishard loading - Addressed a potential deadlock with main thread and 3d viewer thread loading at the same time - Loading from Google 'Neuroglancer precomputed sharded' archives can now deal with missing shard files and missing minishards - Fixed a problem with computing coordinates when loading data with XY/XYZ mipmaps from Google Brainmaps with OffsetMip>0 - Fixed disk cache usage during segmentation merging - Fixed a crash when the parent edge type was set via control buttons but the root node was selected - Fixed a crash when refresh (R) was used with a tool layer present - Fixed a bug in section number calculation for mip maps in XYZ-mipmapped vsvi image stacks - Fixed a bug which prevented loading Google presharded data at very large coordinates (> 262144) - Small bugfix in Nodetool where selecting nodes in all annotation objects in a folder crashed VAST when the folder was at the end of the tree - Fixed a bug in Node Tool which caused crashes if annotation objects were involved which had never been selected after loading - Tried to fix a bug where loading data from precomputed sharded repositories can stall randomly (I hope it's fixed) - Fixed a bug causing progress windows not to show up in some cases - Fixed a bug in Nodetool where appending text to node labels didn't work - Fixed a bug where multithreaded loading from sharded precomputed online databases could stall when minishards were incomplete - Fixed a bug where deleting annotation objects through the API would crash VAST if the annotation objects window isn't open - Fixed a small bug which crashed VAST when a tool layer was created and used on an empty annotation layer - Attempted to mitigate a crash that happened after an annotation layer was saved, when the selected annoobject number exceeded the number of objects (maybe after delete?) - Fixed a hang when the user closes VAST while the 3D viewer is still updating - Bug fixed which caused VAST to crash when loading 'precomputed' image stacks in which the actual image size was inconsistent with the specified image size - Fixed a memory leak in annotation space initialization - Fixed a bug in memory calculation for segmentation splitting which caused excessive memory use - Fixed a bug in 'Collect segments by name into folder' which caused the program to hang under certain conditions - Fixed a bug which caused VAST to crash when an annotation layer was removed - Node Tool - 'Include selected nodes in agglomeration' and 'Exclude selected nodes from agglomeration' was swapped; fixed - Fixed a bug in which moving through the dataset by using the schematic viewer caused crashes if a segmentation layer was loaded - Fixed a crash when a panel content was changed from schematic viewer to slice view with a segmentation layer present - Attempted to fix a bug in segmentation merging where previously overpainted data was revealed during merging - Fixed a memory leak in skeleton importing when file parsing failed - Fixed 'go to root node' executed from schematic viewer panel - Fixed bounding box computation for segments generated by filling skeleton nodes via a tool layer - Fixed a bug where deleting annotation objects could lead to the ROOT object being deleted - Fixed displayed segmentation masking after saving segmentation layer 3D VIEWER ---------- - Added options to change colors of linecube and crosshairs in 3d viewer - Raymarching 3D viewer: Implemented partial functionality to 'Lock blend params' - Raymarching 3D viewer: CTRL-left click (without dragging) now jumps to the clicked location - 3D viewer can now show center/crosshair coordinates and view bounding box coordinates - Improved speed of skeleton geometry preparation for new 3D viewer - Reworked node and edge generation for new 3D viewer; now also shows nodes with no parent edge - Fixed selection of skeletons displayed in raymarching 3D viewer - Added 'Raymarcher 2 Tool' mode to 3D viewer - Improved 3D viewer updating speed - keypad+ to switch annotation objects or segments now works in 3d viewer in 'Raymarcher 2 Tool' mode - Fixed 3D viewer mode 'Screenshot Rendering, Segmentations Only', cleaned up menu API ---- - Layer blendmode can now be set to 5 (black transparent) via the API function setlayerinfo - Added API functions getaonodeparams and setaonodeparams - Added 'getpopupsenabled' and 'setpopupsenabled' to API (can switch off progress window popups) - Fixed a bug in the API for functions removeselectedaonode, swapselectedaonodechildren and makeselectedaonoderoot - API: fixed that setselectedaonodebydfsnr and setselectedaonodebycoords did not update the selected node shown in the 2D view and schematics viewer - API: setuimode(3) now enables annotation window switching in the 'Window' main menu - API: Fixed a bug where settoolparameters() wouldn't update the linked tool layer in the annotation layer - API: Added parameters clientwindowwidth and clientwindowheight to API function getcurrentuistate() - Fixed API function splitselectedskeleton() - Fixed an API bug concerning parsing of variable types in structs - Added support for ext2 to API functions getannoobject, setannoobject, addannoobject, getaonodeparams, setaonodeparams VASTTOOLS ---------- - VastTools: Nodetool-selected nodes can now be included as point annotations in H01 Neuroglancer link exports - VastTools: Box OBJ exports and H01 Neuroglancer link exports remember target folder and file name (except filenames for 2d plane exports) - VastTools: Small bugfix in 'Export Skeleton 3D Models' when choosing 'Selected object and children' - Vasttools: Added 'Export particle clouds' option to place 3D objects at skeleton nodes selected in VAST's Nodetool - VastTools: Model mesh exporting: Added exporting of single isosurface at 50% - VastTools: Model mesh exporting: Added lower-mip masking of export region - VastTools: Fixed particle exporting from segmentations in XY/XYZ mipmapped datasets