################################################################### LATEST EMAIL UPDATE: 06 Mar 2015 ################################################################### A few new functions, interface improvements, docs, bug fixes. See UPDATES.txt excerpt below for details. ASCII surfaces Reading and writing of ASCII surfaces (e.g., ASCII GIFTI export) is minimally supported. The expected ASCII file format is: ASCII Triangle Surface File Format (ASCII): -------------- header --------------------- #!ascii ... [triangles] ... vertexcount facecount ---------- vertex positions --------------- [vertex triples are implicitly numbered] x y z x y z ... [x,y,z triples up to vertex count] ---- vertex numbers around each face ------ [faces are implicitly numbered] corner1 corner2 corner3 corner1 corner2 corner3 ... [triples up to face count] ------------------------------------------- Reading MGH annotation files (*.annot) The "label:" line "D" button now reads MGH annotation files. These combine a vertexwise color overlay with a color-to-brain-structure lookup table that MGH freesurfer characteristically uses in reverse -- that is, for a given unique color at a vertex, look up the structure name and ID number. These multi-labels can now be used to extract surface data (real or complex) for one of the labels inside it as follows: 1) load vertex data of interest to .val(.val2) 2) select MGH annotation file in "label:" dropdown 3) left-click the "D" (label display) button 4) click vertex in colored label to load r,g,b color 5) reset name in "label:" entry to output label file 6) Shift-left-click-"W" Once an annotation is loaded, the csurf log will report the brain structure of each vertex. The transparency of the MGH labels can be controlled with "tran" at upper left. Morph target In recon-all, buckner40 is the default spherical morph target. For hand reconstructed surfaces (e.g., hi-res) the MGHTools -> Register Surface now defaults to buckner40 (there was a bug preventing its use, now fixed; can select old FreeSurfer0.8 target instead in Expert Preferences -> SphereReg). F5 tkmedit interface For editing large complex surfaces (think cerebellum) it helps to have a tkmedit interface that doesn't take up much screen space. [fn]-F5 makes tkmedit have a long thin horizontal interface useful for this purpose. ### 06 Mar 2015 (read/write ASCII surf, disp/use MGH annotation) 1) read/write GIFTI ASCII surface (e.g., export from MIPAV) 2) display MGH annotation file, can use to extract labelwise surfdata 3) MGHTools->RegisterSurf default morph target now buckner40 (recon-all) 4) longthin F5 tkmedit interface + many sm interface, R-click-help updates ################################################################### To install the new csurf: cd mv csurf csurf-YYMMDD tar xvfz csurf0.8-{mac,linux}-YYMMDD.tgz cheers, marty ######################################### Latest addition to $CSURF_DIR/UPDATES.txt ######################################### ---------------- 06Mar2015 FreeSurfer0.8/csurf0.8 tarballs ------------------- --lib/help/tksurfer/{label,label_read,label_readcut,label_clear,label_write} --lib/help/tksurfer/{meshr,meshg,meshb,smooth_steps,cuts} --tksurfer.tcl: label buttons chk suff, then setfile, check{read,write}labeldir --tksurfer.tcl: shift-left-"W" overload to get: write_val_annotedcol_vertices --tksurfer.c: recog subj root if cmdline started in label dir, better indents --wrappers.tcl: use join to flatten list of args passed by testreplace --tksurfer.c: write_val_annoted{col}_vertices write complex if complexvalflag --tksurfer.c: write_annoted_vertices renamed to write_val_annoted_vertices --tksurfer.c: clear_annot also clears/frees brainregions --tksurfer.c: if MGH annot loaded, update r/g/b entries with current annot col --tksurfer.tcl: add $anlabel to setfile list (rm unused $annot) --tksurfer.tcl: labelentry/D now also load/use .annot files as well as .label --tksurfer.c: write_val_annotedcol_vertices: dump out vtx data from 1 MGH annot --tksurfer.c: click prints annotname by rev lookup annot color in MGH 'LUT' --tksurfer.c: read_mgh_annot: read MGH .annot to brainregion struct, load color --tkmedit.tcl dup "surf" tick F5 panel (N.B.: must load surf before goto F5) --tksurfer.tcl: scroll entry to useful end of filename after select val/val3d --tksurfer.c: fix funct name: rightclick_vertex -> middleclick_vertex (!) --lib/help/tksurfer/{label,val3d_read,val3d_clust}: update --tksurfer.tcl: add copy of S/V button to val3d for read/paint/swap 3d stats --tkregister.tcl: bigger Linux putbelowtkwin gap startup interface size change --tkregister.c: add 10 to Linux TKGL_YGAP avoid Ubuntu startup overlap problem --tksurfer.tcl: val3d: warn/fix colscale mismatch, help (PNT to see, samp ctrls) --lib/help/csurf/tkmedit: document F5 interface, rm stale cmdline example --tkmedit.tcl: add long/thin fn-F5 micro interface --lib/help/tksurfer/isocont: thicken isocont hot key --lib/help/tksurfer/val_ltw: new file (update help list in mk0) --lib/help/tksurfer/val2rgb: update complex phase vs. amp color LUT --lib/help/tksurfer/val_jt: emphasize jet scale limits set by truncphase --tksurfer.c: rm JET colscale return/cache so parallel to other colscale cases --tksurfer.c: make read_ascii_surface tcl synonym for read_binary_surface --csurf: change def morphtarg to buckner40 (MGHTools->Reg) to match recon-all --csurf: load surf combo with orig? for import hacking (was orig,orig1,orig2) --tksurfer.tcl: add "R" button on F3 "insurf:" for consistency --copy surface format specs from lib/help/csurf/csurf to lib/help/tksurfer/surf --lib/help/csurf/csurf: document ASCII surface format --lib/help/tksurfer/{surf,hemisurf}: cleanup after interface code untangle --tksurfer.tcl: allow full path in F2 "surf:" surface extension entry --tksurfer.tcl: fix/rename/untangle select_surfext from fullpath F3 entry --tksurfer.c: read_binary_surface detects/accepts #!ascii tri/quad/quad2tri --csurf: fix inflate's'cycles typo blocking non-hi-res smooth/inflate --mk0: add outsurfasc_write helpfile to list --lib/help/tksurfer/outsurfasc_write: new helpfile --tksurfer.tcl: add W-ASCII button on F3 interface for write_ascii_surface --tksurfer.c: write_ascii_surface (tri or quad depending on ExpertPref flags) --tkmedit.c: rm Tcl_Eval sendupdate (was no longer defined in tkmedit.tcl!) --tksurfer.c: flush remaining queued click-drag xforms by lookahead to up-click --tksurfer.tcl: expose phase LUT (lutw) in fn-F3 --tksurfer.c: glFlush in openglx to start w/black window (2x glFinish ignored) ---------------- 20Feb2015 FreeSurfer0.8/csurf0.8 tarballs ------------------- --tksurfer.tcl: shift-mid-click on "w1" -> switch to "w3" without needing fn-F3 --csurf: allow config/save 'w2' RGBY wheel colscale View Functional Data panel --tksurfer.tcl: label combo listcmd live reread labeldir (man reabbrev->sm log) --tksurfer.tcl: clear rgb combo on listcmd live re-read rgbdir (was appending!) ... ...