Index: /trunk/ippTasks/survey.pro
===================================================================
--- /trunk/ippTasks/survey.pro	(revision 26923)
+++ /trunk/ippTasks/survey.pro	(revision 26924)
@@ -24,4 +24,6 @@
 if (not($?haveSurveyBooks))
  book create SURVEY_DIFF
+ book create SURVEY_DIFF_WARPSTACK
+ book create SURVEY_DIFF_STACKSTACK
  book create SURVEY_MAGIC
  book create SURVEY_DESTREAK
@@ -32,4 +34,6 @@
 
 $SURVEY_DIFF_DB = 0
+$SURVEY_DIFF_WARPSTACK_DB = 0
+$SURVEY_DIFF_STACKSTACK_DB = 0
 $SURVEY_MAGIC_DB = 0
 $SURVEY_DESTREAK_DB = 0
@@ -67,4 +71,62 @@
   end
   book listbook SURVEY_DIFF
+end
+
+# user functions to manipulate warp/stack diff labels
+macro survey.add.WSdiff
+  if ($0 != 5)
+    echo "USAGE: survey.add.WSdiff (warp label) (stack label) (dist_group) (workdir base)"
+    break
+  end
+  book newpage SURVEY_DIFF_WARPSTACK $1
+  book setword SURVEY_DIFF_WARPSTACK $1 STACK_LABEL $2
+  book setword SURVEY_DIFF_WARPSTACK $1 DIST_GROUP $3
+  book setword SURVEY_DIFF_WARPSTACK $1 WORKDIR $4
+  book setword SURVEY_DIFF_WARPSTACK $1 STATE PENDING
+end
+
+macro survey.del.WSdiff
+  if ($0 != 2)
+    echo "USAGE: survey.del.WSdiff (warp label)"
+    break
+  end
+  book delpage SURVEY_DIFF_WARPSTACK $1
+end
+
+macro survey.show.WSdiff
+  if ($0 != 1) 
+    echo "USAGE: survey.show.WSdiff"
+    break
+  end
+  book listbook SURVEY_DIFF_WARPSTACK $1
+end
+
+# user functions to manipulate stack/stack diff labels
+macro survey.add.SSdiff
+  if ($0 != 5)
+    echo "USAGE: survey.add.SSdiff (stack label) (template label) (dist_group) (workdir base)"
+    break
+  end
+  book newpage SURVEY_DIFF_STACKSTACK $1
+  book setword SURVEY_DIFF_STACKSTACK $1 STACK_LABEL $2
+  book setword SURVEY_DIFF_STACKSTACK $1 DIST_GROUP $3
+  book setword SURVEY_DIFF_STACKSTACK $1 WORKDIR $4
+  book setword SURVEY_DIFF_STACKSTACK $1 STATE PENDING
+end
+
+macro survey.del.WSdiff
+  if ($0 != 2)
+    echo "USAGE: survey.del.SSdiff (stack label)"
+    break
+  end
+  book delpage SURVEY_DIFF_STACKSTACK $1
+end
+
+macro survey.show.SSdiff
+  if ($0 != 1) 
+    echo "USAGE: survey.show.SSdiff"
+    break
+  end
+  book listbook SURVEY_DIFF_STACKSTACK $1
 end
 
@@ -252,4 +314,160 @@
 end
 
+task survey.warpstack.diff
+  host local
+ 
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
+  npending     1
+
+  stdout $LOGDIR/survey.WSdiff.log
+  stderr $LOGDIR/survey.WSdiff.log
+
+  # generate diff warp-stack runs
+  task.exec
+    book npages SURVEY_DIFF_WARPSTACK -var N
+    if ($N == 0)
+#      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_DIFF_WARPSTACK 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+#      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_DIFF_WARPSTACK $i -var label
+	book setword SURVEY_DIFF_WARPSTACK $label STATE NEW
+      end
+      book getpage SURVEY_DIFF_WARPSTACK 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_DIFF_WARPSTACK_DB ++
+      if ($SURVEY_DIFF_WARPSTACK_DB >= $DB:n) set SURVEY_DIFF_WARPSTACK_DB = 0
+    end
+
+    book setword SURVEY_DIFF_WARPSTACK $label STATE DONE
+    book getword SURVEY_DIFF_WARPSTACK $label STACK_LABEL -var stack_label
+    book getword SURVEY_DIFF_WARPSTACK $label WORKDIR -var workdir
+    book getword SURVEY_DIFF_WARPSTACK $label DIST_GROUP -var dist_group
+
+# Do we need anything else here? 
+    $run = difftool -definewarpstack -distance 0.1 -good_frac 0.2 # -timediff 3600
+    $run = $run -warp_label $label
+    $run = $run -stack_label $stack_label
+    $run = $run -set_dist_group $dist_group
+    $run = $run -set_label $label
+    $run = $run -set_workdir $workdir/$label/
+#    $run = $run -available
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_DIFF_WARPSTACK_DB
+      option $DB:$SURVEY_DIFF_WARPSTACK_DB
+    end
+    
+#    echo $run
+    command $run
+  end
+
+  # success
+  task.exit    0
+#    echo "Success"
+  end
+
+  # locked list
+  task.exit    default
+    showcommand failure
+  end
+
+  task.exit    crash
+    showcommand crash
+  end
+
+  # operation times out?
+  task.exit    timeout
+    showcommand timeout
+  end
+end
+
+task survey.stackstack.diff
+  host local
+ 
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
+  npending     1
+  active       false
+  stdout $LOGDIR/survey.SSdiff.log
+  stderr $LOGDIR/survey.SSdiff.log
+
+  # generate diff stack-stack runs
+  task.exec
+    book npages SURVEY_DIFF_STACKSTACK -var N
+    if ($N == 0)
+#      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_DIFF_STACKSTACK 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+#      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_DIFF_STACKSTACK $i -var label
+	book setword SURVEY_DIFF_STACKSTACK $label STATE NEW
+      end
+      book getpage SURVEY_DIFF_STACKSTACK 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_DIFF_STACKSTACK_DB ++
+      if ($SURVEY_DIFF_STACKSTACK_DB >= $DB:n) set SURVEY_DIFF_STACKSTACK_DB = 0
+    end
+
+    book setword SURVEY_DIFF_STACKSTACK $label STATE DONE
+    book getword SURVEY_DIFF_STACKSTACK $label STACK_LABEL -var stack_label
+    book getword SURVEY_DIFF_STACKSTACK $label WORKDIR -var workdir
+    book getword SURVEY_DIFF_STACKSTACK $label DIST_GROUP -var dist_group
+
+# Do we need anything else here? 
+    $run = difftool -definestackstack -good_frac 0.2 # -timediff 3600
+    $run = $run -input_label $label
+    $run = $run -template_label $stack_label
+    $run = $run -set_dist_group $dist_group
+    $run = $run -set_label $label
+    $run = $run -set_workdir $workdir/$label/
+#    $run = $run -available
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_DIFF_STACKSTACK_DB
+      option $DB:$SURVEY_DIFF_STACKSTACK_DB
+    end
+    
+#    echo $run
+    command $run
+  end
+
+  # success
+  task.exit    0
+#    echo "Success"
+  end
+
+  # locked list
+  task.exit    default
+    showcommand failure
+  end
+
+  task.exit    crash
+    showcommand crash
+  end
+
+  # operation times out?
+  task.exit    timeout
+    showcommand timeout
+  end
+end
+
 
 
