BrainVoyager 23.0 Release Notes

 

New Features


 

High-Quality Volume RendererA new volume renderer has been implemented in this release with state-of-the-art rendering performance. Because of improved rendering quality, ease of use, and a richer feature set, the new Volume Renderer replaces the previously offered real-time volume rendering tool. The new renderer can be called via the 'Real-Time Volume Rendering' item in the 'Volumes' menu. More conveniently, it can be invoked directly from the context menu of a VMR View or the context menu of its title bar. The renderer reads the VMR dataset from the referenced file and renders it using default parameters. Sliders and options allow to influence the rendering, including the level of light absorption, affecting transparency, and the range of intensity values mapped on an intensity look-up table. The volume can be sliced along cardinal planes (transversal, sagittal, coronal) as well as in any oblique orientation. The displayed viewpoint can be influenced in a similar way as in the 3D Viewer by using mouse / touch navigation and a 'Viewpoint Navigation' panel. The shaded appearance of the rendered volume can be influenced using various light sources, including diffuse and specular light. The volume renderer supports overlay of volume-ROIs (VOIs) and volume maps (VMPs) that are displayed automatically if the respective files are linked to the current VMR, but any (fitting) file can also be loaded explicitly. The overlay possibilities combined with advanced display options create high-quality visualizations that may aid in understanding complex datasets. For more details, consult the 'Volume Rendering' chapter of the User's Guide.
Native Apple Silicon ImplementationWhile previous macOS versions of BrainVoyager were running on Apple Silicon (M1, M2 systems), they were compiled for Intel processors and ran only in emulation mode (Rosetta 2). BrainVoyager 23 is also available on Intel, this release supports, for the first time, Apple Silicon natively providing maximal CPU performance and energy-efficiency. Instead of OpenGL, Apple's 'Metal' GPU is now used for graphics rendering in the 3D Viewer (also for the Intel version). Furthermore, BrainVoyager uses Apple's Metal Compute interface replacing OpenCL code with newly developed Metal compute shaders that provide optimal performance for compute-intensive operations such as sinc or Lanczos (see below) interpolation and 3D filtering. These Metal compute shaders are used, for example, for spatial smoothing, sigma filtering, MNI transformation, motion correction and VTC creation. Instead of Intel's MKL math library (not available on Apple Silicon), Apple's 'Accelerate' framework is used for fast matrix multiplication and matrix inversion. The Apple Silicon version comes also with native compilations of BV plugins and supports native (arm64) Python versions (Python 3.8 and 3.10). Overall BrainVoyager exploits both parallelized CPU and GPU capabilities of Apple Silicon to provide workstation-class performance with minimal energy consumption by relying on Apple-specific future-proof frameworks instead of OpenGL, OpenCL and Intel MKL.
Lanczos InterpolationBrainVoyager's windowed sinc interpolation provides high-quality data resampling with acceptable compute time because of parallelized GPU implementation. It therefore has been recommended as the default option for critical spatial transformations, including VMR transformations, FMR motion correction and VTC creation. Since version 23, BrainVoyager offers 'Lanczos interpolation', which is a windowed sinc interpolation variant that produces at least as good results as windowed sinc but with reduced computation time on CPU and GPU. The macOS version of BrainVoyager uses both a parallelized CPU and Metal GPU implementation. Because of its high performance Lanczos interpolation is recommended as the default resampling method on this platform. On Windows and Linux, Lanczos interpolation is only available as a multi-threaded CPU implementation but a OpenCL version is planned for BV 23.2 [maybe already in 23.0].


 

Enhancements


 

Enhanced Python SupportThe approach to embed the Python interpreter has been fundamentally changed (in technical terms from 'PythonQt' to 'PySide6') to provide more integrated, powerful and future-proof Python support. Except for new functionality, the previous commands of the BrainVoyager API have not changed (besides a few exceptions). Custom Python scripts and BV notebook code cells might need, however, small adjustments as documented in the Python Developer Guide. For the bundled Python scripts and notebooks, those adjustments have been made relating mainly to the import statements for building graphical user interfaces with the 'Qt' framework (if used). Consistent with the BrainVoyager Python API, also the provided Qt GUI methods now use pythonic 'snake_case' method names instead of 'camelCase' names. BrainVoyager 23.0 fully supports Python 3.8 and 3.10. It is now possible to interrupt Python scripts by pressing the ESCAPE key as long as Python print commands are used, e.g. in loops, which allow BrainVoyager to capture 'Escape' button presses. It is also possible to use the new BV API method 'bv.escape()' to check in Python scripts whether the user wants to interrupt processing, which can then be handled with custom code. Calls of shell commands are now also provided using the new 'run_cmd(str) -> str' method (see notebook 'call_shell.bvnb' for examples). For a description of all changes and improvements consult the 'Python Developer Guide'.
Python IDEThe Python IDE has been improved substantially, both in appearance (e.g., new elegant toolbar) and functionality. It is, for example, now possible to use standard keyboard shortcuts to activate common functions to open, save and run Python scripts (in previous versions, these commands were send to the BrainVoyager main window). This and more functionality is also provided by the new menu of the IDE that offers additional functions including side-by-side editing of two open files, text zooming and a Find / Replace dialog. The Find / Replace feature is also directly available from the new toolbar and via standard keyboard shortcuts. It is now also possible to indent / unindent a selected section of code using the Tab / Alt-Tab key combination. Besides the two standard 'Scripts' and 'Plugins' directories for Python scripts in the 'Documents/BrainVoyager' folder, a custom folder is now also supported in the user interface. After opening a Python file or after selecting a folder (using the 'Select Folder' item in the 'Files' menu), the Python files in the respective folder are shown in the 'Files' pane on the left side of the IDE window. The 'Custom' folder selection button will change its name to the currently selected custom folder and its tool tip text will show the full path to that folder. As with notebooks, completion of properties and methods of objects is available, both in the Python console and Python editors as long as the code that defines variables and modules has been evaluated (the properties and methods of the 'bv' object are always available). The center section at the bottom of the editor(s) informs about the Python version that is currently in use when running scripts. For further details, consult the 'Python Developer Guide'
Notebook ImprovementsThe possibility to interrupt (long-running) Python routines as described in the item above is also working for Python code cells in BV Notebooks. Furthermore, the output section in Python code cells can now be limited to a maximum number of text lines (default: 20) to avoid the need to scroll over potentially very large output text. If the produced output reaches the maximum number of lines, an output pane automatically reveales a vertical scrollbar that can be used to inspect contents. The default number of maximum text lines can be changed using the 'Max Code Cells Output Lines' item in the 'Cells' menu. The embedded notebook 3D viewer has been enhanced now supporting the inspection of surface maps including the possibility to change a map's threshold and to browse through all available maps of the SMP file of a mesh using the new 'Map Panel' (see below). For more details about all changes and improvements, consult the 'BV Notebooks' chapter of the User's Guide.
Javascript and QML GUI ScriptsBrainVoyager 23 supports a new Javascript engine and a new future-proof development approach for GUI scripts based on the elegant declarative 'QML' language. Non-GUI scripting code is not (or only minimally) affected by this change but dialogs used for user interface scripts need to be rewritten as QML / Javascript code. The new approach is also used to develop user interfaces (frontends) for C++ GUI plugins. As opposed to the previous approach, the GUI QML / JavaScript code can be directly created and tested inside the 'QML / JS Script Development' window of BrainVoyager without external tools. As compared to the old 'Script Editor' , the 'QML / JS Script Development' window comes with enhanced usability features in the same way as the Python IDE described above, including features such as 'Find / Replace', multi-line tab indentation, side-by-side editing, and text zooming. Example code provided in the standard 'Scripts' folder demonstrate how GUI scripts can be easily created using the QML language. An introduction can be found in the new 'Scripts and Plugins' chapter of the User's Guide. Updates of the BrainVoyager scripting API are also provided in the scripting guides located in the 'Documents/BrainVoyager/GettingStartedGuides' folder.
BrainVoyager APIThe Python and JavaScript BrainVoyager APIs have been further extended. The BrainVoyager object is now available directly via the 'bv' symbol also for JavaScript scripts (next to 'BrainVoyager' or 'brainvoyager' for Python). Document objects can now test directly which type they represent using the 'is_vmr()', 'is_fmr()' and 'is_dmr()' methods ('IsVMR()', 'IsFMR()', 'IsDMR()' for JavaScript). It is now possible to coregister diffusion-weighted (DMR) files with anatomical (VMR) volumes using the 'coregister_dmr_to_vmr()' method. The possibility to create parametric protocols for parametric GLM analyses has been added: The new property 'protocol_parametric' enables or disables parametric protocol creation mode and the 'add_interval' method now has a 4th optional argument to set the parametric weight for each interval of conditions. Note that the 'connect' method of the Python project object ('ProjectPyBV') connecting two workflows has been renamed to 'connect_from_to' to avoid confusion with the 'connect' keyword as used in Python (PySide) user interface code. JavaScript scripts can now use convenient document creation functions ('CreateVMRFromDICOM()', 'CreateFMRFromDICOM()', 'CreateDMRFromDICOM)') as well as storing new documents as nifti datawets in BIDS project directory trees (e.g., 'CreateFMRFromDICOMAsNIFTIBIDS()') in the same way as with the Python API.
GIFTI SupportGIFTI files are now supported as a native format (instead as via conversion using plugin). A GIFTI mesh file can be loaded directly from the 'Meshes' menu using the 'Load GIFTI Mesh' or 'Add GIFTI Mesh' item. GIFTI functional map ('.func.gii') files are supported and converted into surface maps. They can be loaded like a BrainVoyager SMP by using the 'Load' button in the 'Surface Maps' dialog. GIFTI 'Label' and 'Border' files are alos supported and converted into POIs. They can be loaded by selecting the file type 'GIFTI label files (*.label.gii)' or 'GIFTI border files (*.border)' in the 'File Type' selection box of standard 'Open File' dialogs that appear when clicking the 'Load' button in the 'Patches-Of-Interest' dialog.
Improved Wireframe and Voxel RenderingIt is now possible to use transparent and 'closed' wireframe mode. Transparency can be toggled using the 'Wireframe Transparency' option in the 'Mesh Transparency and Shading Options' panel that can be called from the 'Tools' toolbar of the 3D Viewer. Most importantly the displayed wireframe meshes are created without vertex sharing as used in normal meshes for efficiency reasons. Using different vertices for all triangles a (logically same) vertex participates allows more realistic shading of non-smooth surface patches such as sharp edges. This strongly improves, for example, the rendering of reconstructed ('RECO.srf') meshes that look realistic and 'blocky' when using the non-transparent wireframe mode.
Map Panel in Embedded 3D ViewerA simple 'Map Panel' has been added to the embedded notebook 3D viewer as well as to the standard 3D viewer. The panel allows to browse through all maps available in a loaded VMP file; next to 'forward' and 'backward' advance buttons, the panel also displays the name of the currently selected map. While in the standard 3D viewer (outside BV notebooks) the full-fledged 'Overlay Maps' dialog can be called, the embedded Map Panel is often sufficient for viewing purposes in combination with the 'Threshold and Color Panel'.
Geodesic Path CalculationVia the new 'Calculate Shortest Path' in the 'Meshes' menu, the geodesic path can be computed between the last two selected vertices using the Dijkstra algorithm. The calculated shortest path will be created as a line POI as default (or optionally shown by changing color values of the mesh itself (not recommended)). The calculated path length is printed in the BV Log and it can be shown also using the 'Edit POI' dialog. The last two clicked vertices are not highlighted except one enters 'Draw POI' mode by clicking the 'Draw / Cut Mesh Mode' icon in the 'Tools' panel. This functionality and the 'Shortest Path' dialog were available already in an older (pre-21) version and is now made available again with this release.
Enhanced Theming SupportThe support for theming has been substantially improved allowing to set a Dark or Light Mode that looks similar on all platforms as well as an operating system specific mode on some platforms. The 'Display Theme' section in the 'GUI' tab of the 'Settings' dialog can be used to turn on the 'BV theme' or 'OS theme' option as well as the 'Dark', 'LIght' and 'Auto' option. The new 'Auto' option aims to follow the current operating system-level 'dark' or 'light' appearance setting. While BV tries to adjust immediately when changing these settings, it is recommended to restart the program to get best results. The enhanced theming support works best on macOS, for more details of platform-specific behaviour consult the User's Guide.
VMR Document Titlebar and Context MenuA convenient way to quickly access document-specific functionality is available by the context menu that can be involked by right-clicking the title of a document window. In this release, the '3D Volume Tools' and 'Coregister FMR To VMR' entries have been added for VMR document windows providing quick access to the '3D Volume Tools' and 'FMR-VMR Coregistration' dialogs. In addiiton, the entry 'Volume Renderer' has been added to launch the new Volume Renderer (see above). Entries for the 'Volume Renderer' and '3D Volume Tools' have also been added to the VMR view context menu that can be invoked by right-clicking inside a VMR document window.
Session LogsSession log files were saved in a 'App Support' location not usually accessed by most users. To support finding the log files easier for inspection outside of BrainVoyager, the session log files have been moved in the user's Documents folder: '[user]/Documents/BrainVoyager/SessionLogs'.


 

Bug Fixes


 

Iso-Voxelation on macOS (Apple Silicon)23.0.9 patch release. Iso-voxelation using Metal shaders on Apple Silicon did not work. This issue has been fixed.
Average VTC Volumes23.0.9 patch release. The option 'Average VTC Over Time And Convert To VMR' in the 'Options' menu can be used to average all volumes of a VTC to create a VMR (and V16) file. This function resulted in empty files in version 22.4 and 23.0.8. This issue has been fixed.
Gradient-Based FA CoregistrationIn some cases with larger across-slice dimension (Z) than in-plane dimensions (X, Y), the gradient-based coregistration (FA) step could crash. This issue has been fixed in this release.
Cortical Thickness MeasurementIn case a volume was used for the Cortical Thickness Measurement function where grey matter voxels extended to the first or last voxels of the volume's dimensions, the program crashed. This could be solved in the past by 'framing' the VMR volume. This is, however, no longer necessary since this situation is now handled properly.
GLM Serial Correlation CorrectionWhen running a multi-study GLM that uses AR(2) correction (default), the saved GLM file stored this appropriately. In case one re-saved teh file from the "Overlay GLM" dialog and saves the GLM (again), the program stored AR(1) as the serial correlation correction instead of AR(2). When later reopening it, the p values were presented slightly differently because of this error. This issue has been corrected in this release.
Opening DMR FilesOpening DMR files could result in program crashes. This issue has been fixed.
Region Growing for Highres Data (BBR)When automatically creating a cortex mesh for subsequent BBR coregistration, a region growing step is performed on the respective VMR data. When using high-resolution sub-millimeter data, this step often failed. This issue has been addressed in this release and automatic GM / WM mesh creation for BBR should work in nearly all cases now.
Script CBA FunctionsCalling the (Python) CBA function 'set_standard_sphere_to_folded_mesh(mesh)' of a 'MeshScene' object resulted in a crash. This issue has been fixed. Also other minior issues with CBA functions have been resolved.
Non-Essential Values in Saved NIfTI HeaderWhen saving BV files as NIfTI files, BV stored intensity range values in the 'cal_min' and 'cal_max' values that were not correct for functional data (FMRs / VTCs). To avoid confusion, either correct range values or '0' (for both entries) are now stored in the NIfTI header to comply with the NIfTI standard.



 

New Features


 

High-Quality Volume RendererA new volume renderer has been implemented in this release with state-of-the-art rendering performance. Because of improved rendering quality, ease of use, and a richer feature set, the new Volume Renderer replaces the previously offered real-time volume rendering tool. The new renderer can be called via the 'Real-Time Volume Rendering' item in the 'Volumes' menu. More conveniently, it can be invoked directly from the context menu of a VMR View or the context menu of its title bar. The renderer reads the VMR dataset from the referenced file and renders it using default parameters. Sliders and options allow to influence the rendering, including the level of light absorption, affecting transparency, and the range of intensity values mapped on an intensity look-up table. The volume can be sliced along cardinal planes (transversal, sagittal, coronal) as well as in any oblique orientation. The displayed viewpoint can be influenced in a similar way as in the 3D Viewer by using mouse / touch navigation and a 'Viewpoint Navigation' panel. The shaded appearance of the rendered volume can be influenced using various light sources, including diffuse and specular light. The volume renderer supports overlay of volume-ROIs (VOIs) and volume maps (VMPs) that are displayed automatically if the respective files are linked to the current VMR, but any (fitting) file can also be loaded explicitly. The overlay possibilities combined with advanced display options create high-quality visualizations that may aid in understanding complex datasets. For more details, consult the 'Volume Rendering' chapter of the User's Guide.
Native Apple Silicon ImplementationWhile previous macOS versions of BrainVoyager were running on Apple Silicon (M1, M2 systems), they were compiled for Intel processors and ran only in emulation mode (Rosetta 2). BrainVoyager 23 is also available on Intel, this release supports, for the first time, Apple Silicon natively providing maximal CPU performance and energy-efficiency. Instead of OpenGL, Apple's 'Metal' GPU is now used for graphics rendering in the 3D Viewer (also for the Intel version). Furthermore, BrainVoyager uses Apple's Metal Compute interface replacing OpenCL code with newly developed Metal compute shaders that provide optimal performance for compute-intensive operations such as sinc or Lanczos (see below) interpolation and 3D filtering. These Metal compute shaders are used, for example, for spatial smoothing, sigma filtering, MNI transformation, motion correction and VTC creation. Instead of Intel's MKL math library (not available on Apple Silicon), Apple's 'Accelerate' framework is used for fast matrix multiplication and matrix inversion. The Apple Silicon version comes also with native compilations of BV plugins and supports native (arm64) Python versions (Python 3.8 and 3.10). Overall BrainVoyager exploits both parallelized CPU and GPU capabilities of Apple Silicon to provide workstation-class performance with minimal energy consumption by relying on Apple-specific future-proof frameworks instead of OpenGL, OpenCL and Intel MKL.
Lanczos InterpolationBrainVoyager's windowed sinc interpolation provides high-quality data resampling with acceptable compute time because of parallelized GPU implementation. It therefore has been recommended as the default option for critical spatial transformations, including VMR transformations, FMR motion correction and VTC creation. Since version 23, BrainVoyager offers 'Lanczos interpolation', which is a windowed sinc interpolation variant that produces at least as good results as windowed sinc but with reduced computation time on CPU and GPU. The macOS version of BrainVoyager uses both a parallelized CPU and Metal GPU implementation. Because of its high performance Lanczos interpolation is recommended as the default resampling method on this platform. On Windows and Linux, Lanczos interpolation is only available as a multi-threaded CPU implementation but a OpenCL version is planned for BV 23.2 [maybe already in 23.0].


 

Enhancements


 

Enhanced Python SupportThe approach to embed the Python interpreter has been fundamentally changed (in technical terms from 'PythonQt' to 'PySide6') to provide more integrated, powerful and future-proof Python support. Except for new functionality, the previous commands of the BrainVoyager API have not changed (besides a few exceptions). Custom Python scripts and BV notebook code cells might need, however, small adjustments as documented in the Python Developer Guide. For the bundled Python scripts and notebooks, those adjustments have been made relating mainly to the import statements for building graphical user interfaces with the 'Qt' framework (if used). Consistent with the BrainVoyager Python API, also the provided Qt GUI methods now use pythonic 'snake_case' method names instead of 'camelCase' names. BrainVoyager 23.0 fully supports Python 3.8 and 3.10. It is now possible to interrupt Python scripts by pressing the ESCAPE key as long as Python print commands are used, e.g. in loops, which allow BrainVoyager to capture 'Escape' button presses. It is also possible to use the new BV API method 'bv.escape()' to check in Python scripts whether the user wants to interrupt processing, which can then be handled with custom code. Calls of shell commands are now also provided using the new 'run_cmd(str) -> str' method (see notebook 'call_shell.bvnb' for examples). For a description of all changes and improvements consult the 'Python Developer Guide'.
Python IDEThe Python IDE has been improved substantially, both in appearance (e.g., new elegant toolbar) and functionality. It is, for example, now possible to use standard keyboard shortcuts to activate common functions to open, save and run Python scripts (in previous versions, these commands were send to the BrainVoyager main window). This and more functionality is also provided by the new menu of the IDE that offers additional functions including side-by-side editing of two open files, text zooming and a Find / Replace dialog. The Find / Replace feature is also directly available from the new toolbar and via standard keyboard shortcuts. It is now also possible to indent / unindent a selected section of code using the Tab / Alt-Tab key combination. Besides the two standard 'Scripts' and 'Plugins' directories for Python scripts in the 'Documents/BrainVoyager' folder, a custom folder is now also supported in the user interface. After opening a Python file or after selecting a folder (using the 'Select Folder' item in the 'Files' menu), the Python files in the respective folder are shown in the 'Files' pane on the left side of the IDE window. The 'Custom' folder selection button will change its name to the currently selected custom folder and its tool tip text will show the full path to that folder. As with notebooks, completion of properties and methods of objects is available, both in the Python console and Python editors as long as the code that defines variables and modules has been evaluated (the properties and methods of the 'bv' object are always available). The center section at the bottom of the editor(s) informs about the Python version that is currently in use when running scripts. For further details, consult the 'Python Developer Guide'
Notebook ImprovementsThe possibility to interrupt (long-running) Python routines as described in the item above is also working for Python code cells in BV Notebooks. Furthermore, the output section in Python code cells can now be limited to a maximum number of text lines (default: 20) to avoid the need to scroll over potentially very large output text. If the produced output reaches the maximum number of lines, an output pane automatically reveales a vertical scrollbar that can be used to inspect contents. The default number of maximum text lines can be changed using the 'Max Code Cells Output Lines' item in the 'Cells' menu. The embedded notebook 3D viewer has been enhanced now supporting the inspection of surface maps including the possibility to change a map's threshold and to browse through all available maps of the SMP file of a mesh using the new 'Map Panel' (see below). For more details about all changes and improvements, consult the 'BV Notebooks' chapter of the User's Guide.
Javascript and QML GUI ScriptsBrainVoyager 23 supports a new Javascript engine and a new future-proof development approach for GUI scripts based on the elegant declarative 'QML' language. Non-GUI scripting code is not (or only minimally) affected by this change but dialogs used for user interface scripts need to be rewritten as QML / Javascript code. The new approach is also used to develop user interfaces (frontends) for C++ GUI plugins. As opposed to the previous approach, the GUI QML / JavaScript code can be directly created and tested inside the 'QML / JS Script Development' window of BrainVoyager without external tools. As compared to the old 'Script Editor' , the 'QML / JS Script Development' window comes with enhanced usability features in the same way as the Python IDE described above, including features such as 'Find / Replace', multi-line tab indentation, side-by-side editing, and text zooming. Example code provided in the standard 'Scripts' folder demonstrate how GUI scripts can be easily created using the QML language. An introduction can be found in the new 'Scripts and Plugins' chapter of the User's Guide. Updates of the BrainVoyager scripting API are also provided in the scripting guides located in the 'Documents/BrainVoyager/GettingStartedGuides' folder.
BrainVoyager APIThe Python and JavaScript BrainVoyager APIs have been further extended. The BrainVoyager object is now available directly via the 'bv' symbol also for JavaScript scripts (next to 'BrainVoyager' or 'brainvoyager' for Python). Document objects can now test directly which type they represent using the 'is_vmr()', 'is_fmr()' and 'is_dmr()' methods ('IsVMR()', 'IsFMR()', 'IsDMR()' for JavaScript). It is now possible to coregister diffusion-weighted (DMR) files with anatomical (VMR) volumes using the 'coregister_dmr_to_vmr()' method. The possibility to create parametric protocols for parametric GLM analyses has been added: The new property 'protocol_parametric' enables or disables parametric protocol creation mode and the 'add_interval' method now has a 4th optional argument to set the parametric weight for each interval of conditions. Note that the 'connect' method of the Python project object ('ProjectPyBV') connecting two workflows has been renamed to 'connect_from_to' to avoid confusion with the 'connect' keyword as used in Python (PySide) user interface code. JavaScript scripts can now use convenient document creation functions ('CreateVMRFromDICOM()', 'CreateFMRFromDICOM()', 'CreateDMRFromDICOM)') as well as storing new documents as nifti datawets in BIDS project directory trees (e.g., 'CreateFMRFromDICOMAsNIFTIBIDS()') in the same way as with the Python API.
GIFTI SupportGIFTI files are now supported as a native format (instead as via conversion using plugin). A GIFTI mesh file can be loaded directly from the 'Meshes' menu using the 'Load GIFTI Mesh' or 'Add GIFTI Mesh' item. GIFTI functional map ('.func.gii') files are supported and converted into surface maps. They can be loaded like a BrainVoyager SMP by using the 'Load' button in the 'Surface Maps' dialog. GIFTI 'Label' and 'Border' files are alos supported and converted into POIs. They can be loaded by selecting the file type 'GIFTI label files (*.label.gii)' or 'GIFTI border files (*.border)' in the 'File Type' selection box of standard 'Open File' dialogs that appear when clicking the 'Load' button in the 'Patches-Of-Interest' dialog.
Improved Wireframe and Voxel RenderingIt is now possible to use transparent and 'closed' wireframe mode. Transparency can be toggled using the 'Wireframe Transparency' option in the 'Mesh Transparency and Shading Options' panel that can be called from the 'Tools' toolbar of the 3D Viewer. Most importantly the displayed wireframe meshes are created without vertex sharing as used in normal meshes for efficiency reasons. Using different vertices for all triangles a (logically same) vertex participates allows more realistic shading of non-smooth surface patches such as sharp edges. This strongly improves, for example, the rendering of reconstructed ('RECO.srf') meshes that look realistic and 'blocky' when using the non-transparent wireframe mode.
Map Panel in Embedded 3D ViewerA simple 'Map Panel' has been added to the embedded notebook 3D viewer as well as to the standard 3D viewer. The panel allows to browse through all maps available in a loaded VMP file; next to 'forward' and 'backward' advance buttons, the panel also displays the name of the currently selected map. While in the standard 3D viewer (outside BV notebooks) the full-fledged 'Overlay Maps' dialog can be called, the embedded Map Panel is often sufficient for viewing purposes in combination with the 'Threshold and Color Panel'.
Geodesic Path CalculationVia the new 'Calculate Shortest Path' in the 'Meshes' menu, the geodesic path can be computed between the last two selected vertices using the Dijkstra algorithm. The calculated shortest path will be created as a line POI as default (or optionally shown by changing color values of the mesh itself (not recommended)). The calculated path length is printed in the BV Log and it can be shown also using the 'Edit POI' dialog. The last two clicked vertices are not highlighted except one enters 'Draw POI' mode by clicking the 'Draw / Cut Mesh Mode' icon in the 'Tools' panel. This functionality and the 'Shortest Path' dialog were available already in an older (pre-21) version and is now made available again with this release.
Enhanced Theming SupportThe support for theming has been substantially improved allowing to set a Dark or Light Mode that looks similar on all platforms as well as an operating system specific mode on some platforms. The 'Display Theme' section in the 'GUI' tab of the 'Settings' dialog can be used to turn on the 'BV theme' or 'OS theme' option as well as the 'Dark', 'LIght' and 'Auto' option. The new 'Auto' option aims to follow the current operating system-level 'dark' or 'light' appearance setting. While BV tries to adjust immediately when changing these settings, it is recommended to restart the program to get best results. The enhanced theming support works best on macOS, for more details of platform-specific behaviour consult the User's Guide.
VMR Document Titlebar and Context MenuA convenient way to quickly access document-specific functionality is available by the context menu that can be involked by right-clicking the title of a document window. In this release, the '3D Volume Tools' and 'Coregister FMR To VMR' entries have been added for VMR document windows providing quick access to the '3D Volume Tools' and 'FMR-VMR Coregistration' dialogs. In addiiton, the entry 'Volume Renderer' has been added to launch the new Volume Renderer (see above). Entries for the 'Volume Renderer' and '3D Volume Tools' have also been added to the VMR view context menu that can be invoked by right-clicking inside a VMR document window.
Session LogsSession log files were saved in a 'App Support' location not usually accessed by most users. To support finding the log files easier for inspection outside of BrainVoyager, the session log files have been moved in the user's Documents folder: '[user]/Documents/BrainVoyager/SessionLogs'.


 

Bug Fixes


 

Iso-Voxelation on macOS (Apple Silicon)23.0.9 patch release. Iso-voxelation using Metal shaders on Apple Silicon did not work. This issue has been fixed.
Average VTC Volumes23.0.9 patch release. The option 'Average VTC Over Time And Convert To VMR' in the 'Options' menu can be used to average all volumes of a VTC to create a VMR (and V16) file. This function resulted in empty files in version 22.4 and 23.0.8. This issue has been fixed.
Gradient-Based FA CoregistrationIn some cases with larger across-slice dimension (Z) than in-plane dimensions (X, Y), the gradient-based coregistration (FA) step could crash. This issue has been fixed in this release.
Cortical Thickness MeasurementIn case a volume was used for the Cortical Thickness Measurement function where grey matter voxels extended to the first or last voxels of the volume's dimensions, the program crashed. This could be solved in the past by 'framing' the VMR volume. This is, however, no longer necessary since this situation is now handled properly.
GLM Serial Correlation CorrectionWhen running a multi-study GLM that uses AR(2) correction (default), the saved GLM file stored this appropriately. In case one re-saved teh file from the "Overlay GLM" dialog and saves the GLM (again), the program stored AR(1) as the serial correlation correction instead of AR(2). When later reopening it, the p values were presented slightly differently because of this error. This issue has been corrected in this release.
Opening DMR FilesOpening DMR files could result in program crashes. This issue has been fixed.
Region Growing for Highres Data (BBR)When automatically creating a cortex mesh for subsequent BBR coregistration, a region growing step is performed on the respective VMR data. When using high-resolution sub-millimeter data, this step often failed. This issue has been addressed in this release and automatic GM / WM mesh creation for BBR should work in nearly all cases now.
Script CBA FunctionsCalling the (Python) CBA function 'set_standard_sphere_to_folded_mesh(mesh)' of a 'MeshScene' object resulted in a crash. This issue has been fixed. Also other minior issues with CBA functions have been resolved.
Non-Essential Values in Saved NIfTI HeaderWhen saving BV files as NIfTI files, BV stored intensity range values in the 'cal_min' and 'cal_max' values that were not correct for functional data (FMRs / VTCs). To avoid confusion, either correct range values or '0' (for both entries) are now stored in the NIfTI header to comply with the NIfTI standard.