Differences between revisions 3 and 4
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
== tcl script ==
Line 16: Line 17:
# tkmedit_surfposn_makeimages.tcl
Line 17: Line 19:
Sample source? set subject [GetSubjectName 0]
#set subjectdir [GetSubjectDir 0] # FS bug -- this returns path to main volume, not SubjectDir
Line 19: Line 22:
global env
set subjectsdir $env(SUBJECTS_DIR)
set subjectdir "${subjectsdir}/${subject}"

set imagedir "$subjectdir/screencaps_surfpos"

puts "Subject : $subject"
puts "Subject Dir: $subjectdir"

#----------------------------------
# Prep
#----------------------------------
# 0 Main vertices
# 1 Inflated vertices
# 2 White vertices
# 3 Pial vertices
# 4 Orig vertices

#-------------------------------------
# Load T1.mgz to main volume -- already done by original command

#-------------------------------------
# Load surfaces:
#
#LoadMainSurface [0=main; 1=Aux] [filename]

puts "Load main surfaces"
LoadMainSurface 0 lh.white
LoadPialSurface 0 lh.pial
LoadOriginalSurface 0 lh.orig

puts "Load aux surfaces"
LoadMainSurface 1 rh.white
LoadPialSurface 1 rh.pial
LoadOriginalSurface 1 rh.orig

puts "SetDisplayFlags"
# SetDisplayFlag 2 1
SetDisplayFlag 4 1
SetDisplayFlag 5 1
SetDisplayFlag 6 1
SetDisplayFlag 22 1

#---------------------------
proc do_one_view {orient slicenum} {
#---------------------------
global imagedir
global subject

  switch -exact -- $orient {
    0 { set viewname cor }
    1 { set viewname axl }
    2 { set viewname sag }
  }

  set slicestr [format "%03d" $slicenum]

  SetOrientation $orient
  SetSlice $slicenum

  puts "RedrawScreen"
  RedrawScreen
  RedrawAll
  RedrawScreen
  RedrawAll
  RedrawScreen
  RedrawAll
  RedrawScreen
  RedrawAll

  # Use braces to avoid tcl's utterly brain-dead catenation inadequacies...
  set imagepath "${imagedir}/${subject}_${viewname}_${slicestr}.tif"

  puts "SaveTIFF ${imagepath}"
  SaveTIFF $imagepath
}

#-----------------------------
# coronal
#-----------------------------
foreach slicenum { 95 120 150 160 170 200 } {
  do_one_view 0 $slicenum
}

#-----------------------------
# axial
#-----------------------------
foreach slicenum { 120 150 160 170 180 190 } {
  do_one_view 1 $slicenum
}

puts "QuitMedit"
QuitMedit

# exit(0)

#=============================================
Line 22: Line 122:
== bash shell script ==
Line 23: Line 124:
{{{
#!/bin/bash
# tkmedit_surfposn_mass_images_20070917.bash
# mass images

subjectsdir=/brain-RAID2C/freesurfer_gw/MMIL_Download/20070917/Subjects
  scriptdir=/brain-RAID2C/freesurfer_gw/MMIL_Download/20070917/scripts


function onesubject() {
  sbjid=$1

  echo "========================================"
  echo " "$sbjid
  echo "========================================"
  subjectdir=$subjectsdir"/FS_"$sbjid
  screencapdir=$subjectdir"/screencaps_surfpos"
  mkdir $screencapdir

  tkmedit "FS_"$sbjid T1.mgz -tcl $scriptdir"/tkmedit_surfposn_makeimages.tcl"
}

onesubject 10419
onesubject 12009
onesubject 12378
[... etc ...]
}}}

Introduction

Sample scripts demonstrating how to produce screen-cap images from tkmedit and tksurfer.

The basic ideas:

1. A tcl script run from within tkmedit (or tksurfer) instructing it to load particular files, set up a particular view, and save images.

2. A shell script to launch tkmedit (or tksurfer) and tell it to run the tcl script.

3. Optional: some mechanism to view the saved image files en masse, convert them to gif or jpg and possibly generate html pages to allow users to access them in an organized and annotated manner.

tkmedit example

tcl script

# tkmedit_surfposn_makeimages.tcl

set subject    [GetSubjectName 0]
#set subjectdir [GetSubjectDir  0]  # FS bug -- this returns path to main volume, not SubjectDir

global env
set subjectsdir $env(SUBJECTS_DIR)
set subjectdir "${subjectsdir}/${subject}"

set    imagedir "$subjectdir/screencaps_surfpos"

puts "Subject    : $subject"
puts "Subject Dir: $subjectdir"

#----------------------------------
# Prep
#----------------------------------
# 0 Main vertices 
# 1 Inflated vertices 
# 2 White vertices 
# 3 Pial vertices 
# 4 Orig vertices 

#-------------------------------------
# Load T1.mgz to main volume -- already done by original command

#-------------------------------------
# Load surfaces:
# 
#LoadMainSurface [0=main; 1=Aux] [filename] 

puts "Load main surfaces"
LoadMainSurface      0 lh.white
LoadPialSurface      0 lh.pial
LoadOriginalSurface  0 lh.orig

puts "Load aux surfaces"
LoadMainSurface      1 rh.white
LoadPialSurface      1 rh.pial
LoadOriginalSurface  1 rh.orig

puts "SetDisplayFlags"
# SetDisplayFlag  2 1
SetDisplayFlag    4 1
SetDisplayFlag    5 1
SetDisplayFlag    6 1
SetDisplayFlag   22 1

#---------------------------
proc do_one_view {orient  slicenum} {
#---------------------------
global imagedir
global subject

  switch -exact -- $orient {
    0 { set viewname cor }
    1 { set viewname axl }
    2 { set viewname sag }
  }

  set slicestr [format "%03d" $slicenum]

  SetOrientation $orient
  SetSlice $slicenum

  puts "RedrawScreen"
  RedrawScreen
  RedrawAll
  RedrawScreen
  RedrawAll
  RedrawScreen
  RedrawAll
  RedrawScreen
  RedrawAll

  # Use braces to avoid tcl's utterly brain-dead catenation inadequacies...
  set imagepath "${imagedir}/${subject}_${viewname}_${slicestr}.tif"

  puts "SaveTIFF ${imagepath}"
  SaveTIFF $imagepath
}

#-----------------------------
# coronal
#-----------------------------
foreach slicenum { 95 120 150 160 170 200 } {
  do_one_view 0 $slicenum
}

#-----------------------------
# axial
#-----------------------------
foreach slicenum { 120 150 160 170 180 190 } {
  do_one_view 1 $slicenum
}

puts "QuitMedit"
QuitMedit

# exit(0)

#=============================================

bash shell script

# tkmedit_surfposn_mass_images_20070917.bash
# mass images

subjectsdir=/brain-RAID2C/freesurfer_gw/MMIL_Download/20070917/Subjects
  scriptdir=/brain-RAID2C/freesurfer_gw/MMIL_Download/20070917/scripts


function onesubject() {
  sbjid=$1

  echo "========================================"
  echo "            "$sbjid
  echo "========================================"
  subjectdir=$subjectsdir"/FS_"$sbjid
  screencapdir=$subjectdir"/screencaps_surfpos"
  mkdir $screencapdir

  tkmedit "FS_"$sbjid T1.mgz  -tcl $scriptdir"/tkmedit_surfposn_makeimages.tcl"
}

onesubject 10419
onesubject 12009
onesubject 12378
[... etc ...]

QaImageScripts (last edited 2013-05-31 01:24:34 by GrahamWideman)