################################################################### LATEST EMAIL UPDATE: 10 Oct 2015 ################################################################### Csurf.app for Mac I embedded the Mac csurf distribution inside an applescript wrapper, Csurf.app, so that it acts like a regular Mac Application (even has an icon). It is a easier to install/update (drag to Applications) and start (double-click). The functionality and code in the csurf directory: /Applications/Csurf.app/Contents/MacOS/csurf is exactly identical, and can be moved out of there and used as before. Since Csurf.app can't see your current shell variables environment, if csurf detects it's inside the wrapper, another csurf Preferences menu item gets added: Preferences -> Save Curr Subj/Sess Dirs for Startup which can save the current subjects and sessions directory to ~/.csurfrc, which will be read, if there, on (next) Csurf.app startup. This file is ignored with the regular csurf install (since it would override the bashrc/cshrc/env settings of SUBJECTS_DIR and FUNCTIONALS_DIR). On Mac OS X 10.9+, The very first time you start Csurf.app, you will have to temporarily set your System Preferences -> Security & Privacy "Allow apps downloaded from:" setting to "Anywhere". Open Csurf.app and say "OK to use app downloaded from internet". After the first open, you can put your Security & Privacy preferences back to restrictive (e.g., just "App Store"), and Csurf.app will always reopen. If you start Csurf.app with a restrictive settings without having done this once, you will get an extremely misleading error message: "Csurf.app is damaged and can't be opened. You should move it to the Trash" (fix by following instructions above). This intentionally misleading 'damaged' message is a plot by Apple to try to force independent developers to pay Apple a 'developers tax' (I didn't pay). Tksurfer reads multiframe .mgh vtxlist files Freesurfer and FSL sometimes use the .mgh volume format to store surface vertex list data as a pseudo-volume. Previously, the tksurfer "val:" entry line could read ("R") one-frame float .mgh vtxlist files with width equal to number of vertices and height and depth equal 1. Now it can read .mgh vtxlist files with height and depth not equal to 1 (FSL-style). Also, if there is more than one frame in the .mgh file, an "R" makes a pop-up to allow selecting which frame to read. Surfclust can filter .mgh vtxlist input The surface-based cluster exclusion filter, surfclust, can now read .mgh format, including multi-frame .mgh files. For now, output remains a *.w file. Fixed nmovie crash on Ubuntu, Yosemite On some Ubuntu 14.* and Yosemite installations, nmovie would crash with an XSetInputFocus error. Real-valued Color Lookup Table Options (8-way) Previously there was one tickbox ("intplut") that controlled how a real-valued color look-up table was interpreted (interpolate vs. non-interpolate). Now there are three, "intp" -> $interpolatelutflag "bot" -> $botedgelutflag "sym" -> $zerosymmfadeflag which results in 8 different possible combinations. These flags only affect LUT's for real-valued data or complex-valued amplitude. If "intp" is ticked, the r,g,b entries in the table are linearly interpolated to the next table entry for intermediate data val's. If unticked, the r,g,b color stays constant until the next, possibly unevenly spaced, table entry. If "bot" is ticked, the r,g,b entries in the table specify the data value for the bottom of the range of a color. If unticked, the r,g,b entries in the table specify the data value for the center of a color. Center-defined colors are more intuitive, esp. when interpolated, but bottom-edge defined colors are easier to use when you want to define/mark specific contours. Finally, if "sym" is ticked, (s)fthresh and (s)fmid will cut into the color scale symmetrically in both directions from zero, instead of only from the bottom. Ticking "sym" with "bot" ticked also flips the meaning of bottom for negative values -- that is, the 'bottom' of a color is redefined as nearest zero, from either above or below. ######################################### Latest addition to $CSURF_DIR/UPDATES.txt ######################################### ### UPDATE: 10 Oct 2015 --csurf: Render panel: add/cpprev botedgelutflag,zerosymmfadeflag --mk0{.csh}: add new helpfiles --csurf: add new LUT flag helpfiles, add all-help curvtick/offset/cvfact line --lib/help/tksurfer/{botedge,zerosymm,val2rgb,curv_tick}: new helpfiles, update --tksurfer.tcl: intplut->intp, bot/$botedgelutflag, sym/$zerosymmfadeflag ticks --tksurfer.tcl: F2 panel: replace "none" and "curv" radios with "curv" tick --tksurfer.c: clamp hi/lo non-interpolated center-defined colors (was trunc) --tksurfer.c: 8 LUT cases: interpolateflag x botedgelutflag x zerosymmfadeflag --lib/help/tksurfer/val2rgb: fix doc fabs fthresh, add zerosymfadeflag --csurf: sphavglists(00,clustsurf) to pick surf used by surfclust for area calc --tksurfer.c: disp window keyboard pose changes now logged (like tk window) --tksurfer.tcl: fmid/fslope/angle_cycles/angleoffset keyboard shortcuts logcmd's --tksurfer.c: R-click clear vertices does logcmd --csurf: env-overriding dotcsurfrc read/write Csurf.app only (it can't see env) --tksurfer.tcl: DIST and Dijk also return pop-ups (was just log) --tksurfer.c: use genstrret_1k to return Euclidean dist --tksurfer.tcl label-line binds: if notdivider => if divider break (OK in bind) --tksurfer.tcl: brainpose by sliders reports C/tcl cmds to tcllog (vs tcl procs) --csurf: fixswfileprefs: ImportStats no-match-mask-err popup->log, rm 10.10 hack --csurf: menu item to write .csurfrc using current state of subj/sess/FSURF dirs --csurf: if ~/.csurfrc exists, read "export name=val" to tcl env if exist tclvar --applescript/Csurf.app: make applet.icns (flat, darken red) --mk0{.csh}: include applescript in "dist", make Csurf.app if Darwin "insttmp" --applescript/Csurf.app: source .csurfrc else mkdir fsdata/{subjects,sessions} --tksurfer.tcl: "val:" line "R" choose frame popup if .mgh fileheader nframes>1 --tksurfer.c: new/exported funct, read_mgh_header (partial, uncompressed only) --tksurfer.c: new/exported var, mghvalframe: choose later frame in .mgh valfile --nmovie.c: rm XSetInputFocus (was X crash on Ubuntu14 laptop, some 10.9) --surfclust.cpp: read given frame .mgh file if instem suff .mgh, wfile out only --surfclust.cpp: readmgh (e.g. lh.cope1.mgh 1974x1x83=163842 w/2 frames) --tkmedit.tcl: force show "roi" tick on read upsamp roi --csurf: SetupFunct panel "SubjectDir Target Image Set" controls stats underlay --lib/help/csurf/HOWTO: new section on disp 3D retinotopy, revise fourier/surf --tksurfer.tcl: warn/help bad non-integer SMOOTH args --tksurfer.tcl: warn ROI fill ignores truncphase, return --wrappers.tcl: helpwin -inactiveselectbackground $bgcol to avoid black --csurf: change reconall/avgsurf script to req. tcsh (maybe tcsh inst'd w/o csh) --csurf: check tcsh installed also for reconallcmd, avgsurfcmd w/start anyway --csurf: startup check tcsh installed (for recon-all), warn/allow start anyway --csurf: better error msg on refuse to overwrite NIFTI already conv from BRIK ### UPDATE: 22 Sep 2015 --cleanup csurf startup (warn no $CSURF_DIR before try load tix) --Mac: add yosemite hack to help panel --lib/help/*/*: major update/cleanup/regularization of 320+ help panels --tksurfer.tcl: cmd-ctrl-left/right arrow rotates brain in plane --tksurfer.c: ctrl-left/right arrow rotates brain in plane --mk0{.csh}: renamed helpfiles, new helpfiles, include forgotten rot/trans help --tksurfer.tcl: new help for "%:" scale entry --csurf: clickable table-of-contents of ~320 helppanes in one clearable helpwin ...