fsbrain Changes =============== Version 0.6.1 ------------- - NEW: Add automatic fallback for screenshot export on systems without working X11 (e.g., recent macOS versions like Tahoe 26.x and Sonoma 14.x). When X11 is not available, fsbrain now automatically exports the 3D scene as PDF and converts it to PNG using ImageMagick, allowing publication-ready plots with colorbars to be created even without XQuartz. This addresses the rgl/XQuartz compatibility issues tracked in rgl issues #488 and #423. - FIX: Handle blank images gracefully in `image_trim()` calls to prevent errors when rendering produces uniform-color images on headless systems. - Add README_MACOS_TAHOE.md with detailed explanation and workarounds for macOS users affected by X11/OpenGL issues. Version 0.6.0 ------------- - NEW: Add `vis.volume.on.surface()` function that renders a mesh and a volume in the same 3D space simultaneously. - NEW: Add `volvis.lb.with.surface()` function that renders volume lightbox slices with mesh surface contours overlaid. Supports per-hemisphere surface colors and is great for QA. - NEW: Add `volvis.slices.with.surface()` function that exports individual volume slices with surface contours as separate image files, ideal for browsing through slices. Supports optional slice index labelling on images and automatic skipping of empty slices. Shares core logic with `volvis.lb.with.surface()` via internal helper. - FIX: `alphablend()` now preserves computed alpha values in output colors. The old code used `rgb(matrix, alpha=TRUE)` which ignored the alpha column and forced all output to fully opaque. Fixes #28. - FIX: `annot.outline()` now strips the alpha channel from FreeSurfer annotation colors (which often store alpha=0), so that annotation region outlines remain visible instead of blending to invisibility. - SEC: Default to https when downloading optional data Version 0.5.6 ------------- - Fix all links in the documentation strings to functions from external packages by adding the package to the link - Update usage of the now deprecated igraph::is.igraph function to the replacement igraph::is_igraph Version 0.5.5 ------------- - Change some minor docstring issues in internal functions (requested by CRAN team) Version 0.5.4 ------------- - FIX: Change usage of rgl functions that were recently deprectated to current API. This ensures that fsbrain is compatible with the latest rgl version. Thanks to @dmurdoch for the patch. Fixes #52. - Add 'delete_colorbar_img' parameter to 'combine.colorbar.with.brainview.image()' function. This is TRUE by default, meaning that the merged cbar image file (fsbrain_cbar.png by default) will be deleted after the merge operation by default. This changes the old behaviour, in which the file was left behind in the current working directory. - Rename some internal functions and fix various small complaints from the latest version of R CMD CHECK, from r-base 4.3. (Required for CRAN upload.) - NEW: Support plotting colorbar with log scale, implements feature request #44 - FIX: Fix broken hemis on 9 view with inflated surfaces, see issue #50 Version 0.5.3 ------------------------ - Add vis.seg.legend() function to visualize legend for a segmented volume based on color lookup table. - Replace all 'donttest' instructions in examples with 'dontrun', because CRAN runs the 'donttest' stuff and fails on it. Version 0.5.2 ------------- - Fix: set the example for write.group.morph.standard.sf() to dontrun to prevent creation of files in user home when it is run. Version 0.5.1 ------------- - Add clip_fun as an alternative to clip.data for rglactions. This makes the API more consistent, see limit_fun. - More links between function documentation, especially to rglactions. Makes it easier to find navigate the docs. - Tests: explicitely use testthat namespace in more tests for easier copy and pasting of test code. - Add some functions for working with FreeSurfer longitudinal preprocessing pipelines and QDEC tables. - Expose geodesic functions as part of public API. - Data loading: support aggregating atlas over hemis separately. - Support drawing region borders with function vis.region.values on.subject - Docs: more links between docs for easier navigation in help browser, fix various typos. Version 0.5.0 ------------- - Breaking change: remove long deprecated parameter 'colormap' from all vis functions. Use the 'makecmap_options' parameter instead. - The function vis.color.on.subject now supports the 'style' parameter supported by other vis functions. - Add new highlight.* functions which are useful mainly for debugging. - Fix accidental printing of rglactions to console when calling vis functions. - Add new 'export' function, an alias for 'vis.export.from.coloredmeshes' so you have to type less. Updated vignettes and example notebooks accordingly. - Add new entry on vector graphics conversion to the 'fsbrain FAQ' vignette. - Add surface.curvatures function that can compute k1 and k2 (requires optional dependency package 'Rvcg'). - Add functions to write group standard space per-vertex data: write.group.morph.standard and write.group.morph.standard.mf - Add new and more convenient volume visualization function: volvis.lb is a convenient wrapper around volvis.lightbox. - Add new function demographics.to.qdec.table.dat that can convert a demographics dataframe from an Excel or CSV file to qdec.table.dat format and write the additional factor level files. - Add new sjd.demo() function, a shortcut to download optional demonstration data and get the path to the downloaded subjects dir. - Add vis.subject.pre function, a new high-level function for visualizing preloaded data (see #31) Version 0.4.3 ------------- - Add support for exporting figures with transparent background in `vis.export.from.coloredmeshes` function, see parameter 'transparency_color' and docs. A usage example is in the fsbrain FAQ vignette. - Change default value for the NA-color in 'mkco.*' functions from white (#FFFFFF) to very light gray (#FEFEFE). - Support custom background color in various visualization functions, including `vis.export.from.coloredmeshes`. See the docs for the new parameter 'background_color'. - One can now suppress rendering of a colorbar with the `vis.export.from.coloredmeshes` function by passing 'NULL' for the colorbar orientation parameter 'horizontal'. - Add new R live notebook that illustrates how to use the Export API to produce publication-ready plots. It is linked on the GitHub page, see the Documentation section. - Disable all unit tests that require extra data on CRAN, downloading them is not possible anymore. We still test on Travis CI and Appveyor CI so that should not make much of a difference. - Add new 'highlight.vertices.on.subject' function, it does what the name says. Very handy for debugging stuff like coordinate transformations and illustrating things in presentations and bug reports. Version 0.4.2 ------------- - Fix bug in makecmap_options 'range' handling, see #19 and #20 - Improve documentation for makecmap_options 'range' handling: new entry in fsbrain FAQ vignette - Expose 'grid_like' parameter in vis.export.from.coloredmeshes to allow plotting a horizontal strip of images Version 0.4.1 ------------- - Support for visualizing TRK and TCK files (Fiber track files from Diffusion Tensor Imaging) created in Diffusion Toolkit and MRtrix3, see function 'vis.dti.trk'. - Delete all unit test data after tests have been run if on CRAN. Version 0.4.0 ------------- - Support passing a single data vector for both hemis combined to vis.data.on.subject and vis.symmetric.data.on.subject - Add subject.num.verts function to easily retrieve the vertex counts of the meshes for a subject - Support new background color layers 'curv_light' and 'sulc_light' - The function vis.symmetric.data.on.subject defaults to a new colormap. - The metadata IO function to read subjects files and demographics files no longer have a default for the 'header' parameter. This is to prevent people from accidently skipping the first subject. - Add functions for reading and writing morph data to and from a single MGH or MGZ file: group.morph.standard.sf and write.group.morph.standard.sf - Add function for writing FSGD files from demographics table (demographics.to.fsgd.file), and to read subjects list from FSGD files (read.md.subjects.from.fsgd) - new method to set default resolution, and more consistent usage of defaults: fsbrain.set.default.figsize() - Add group.surface function to load surfaces for a group of subjects - Add functions for visualization of groups of subjects at once: vis.group.morph.native, vis.group.morph.standard, vis.group.annot, ... - Extend advanced live notebook with group level plotting examples - Better support for limiting the plotted data range - Add new rendering style 'edges', expose style argument for more vis functions - Fix bug in coloredmesh.from.morph.standard: custom template subject was ignored - Add option to download a few files from fsaverage3 under FreeSurfer license. User needs to accept license. Version 0.3.0 ------------- - Fix reading standard space data from template subjects other than fsaverage - Add new cbry colormap and related mkco.cluster function, great for visualizing clusters - Support pushing hemispheres apart to prevent overlapping inflated surfaces, fixes #7 - Remove rotate2D, flip2D, and readable.files functions, they have been moved to the freesurferformats package - requires freesurferformats version >= 0.1.11 (up from 0.1.10) - default to using rglot() as rgloptions parameter (instead of empty list) for vis functions, i.e., increase default plot resolution Version 0.2.1 ------------- - Fix a bug in colorbar drawing that lead to wrong colors (see #6) - Change defaults in functions for drawing a separate colorbar and combining it with arranged images - Support combining both horizontal and vertical cbars with a brainview image - Suggest viridis and RColorBrewer packages for great colors, use them if available Version 0.2.0 ------------- - Breaking: move rotate3D and flid3D function to freesurferformats. To update your code, replace fsbrain::rotate3D with freesurferformats::rotate3D. - Support export of coloredmeshes to PLY format - Add new vignette, a Frequently Askes Questions (FAQ) format - Add R notebook with code and live examples (web) - Improve documentation in docstrings - Improve colormap computation and handling, especially drawing of colorbars - Remove plyr dependendency, require freesurferformats 0.1.10 - The 'colormap' argument to all vis functions is deprecated, use makecmap_options instead. See the vis function docs for an example. Version 0.1.0 ------------- - Add many new volume manipulation and rendering functions, e.g., lightbox view in volvis.lightbox - Support cortex_only parameter also in morph concat functions - Fix bug #2: cortex_only parameter was ignored by group.agg.morph.native and group.agg.morph.standard - Add subject.mask function to compute medial wall mask (or other masks) for a subject Version 0.0.3 ------------- - Add function to visualize arbitrary vertices and label data (vis.labeldata.on.subject) and a function to compute the neighbors of a vertex (mesh.vertex.neighbors) - The vis.data.on.subject function now accepts a character string for the lh_morphdata and rh_morphdata arguments. If a string, it is treated as a filepath and the data is loaded from that file. - Add the logical parameter 'cortex_only' to various native space morphometry functions (including subject.morph.native, group.morph.native, group.morph.agg.native na group.multimorph.agg.native). When set to TRUE, this parameter will limit the data to vertices which are part of the cortex (as defined by the label file label//h.cortex.label for the respective subject). This allows one to ignore the data from the medial wall in all of these functions. - Also add 'cortex_only' parameter for the equivalent standard space functions and the morphometry visualization functions. - Add more examples to various functions, extend the vignette with latest changes and new functionality. - Remove unused dependencies - Add function vislayout.from.coloredmeshes which allows one to create a tight layout visualization from arbitrary angle sets Version 0.0.2 -------------- - Support rglactions and rgloptions to conveniently increase output resolution and create screenshots - Scale colormaps over several meshes where appropriate. This ensures that the same color in the left and right hemisphere represents the exact same data value. - Improve doc strings of many functions - Add helper function to clip data at percentile (clip.data) - Require freesurferformats version >= 0.1.4 for surface loading fix, adapt mesh visualization to fix - Introduce masks - Add functions to visualize labels (vis.subject.label) and masks (vis.mask.on.subject) - Tons of work on the vignette Version 0.0.1 -------------- - First release submitted to CRAN.