diff options
Diffstat (limited to 'ds9/library/markeranalysisplot3d.tcl')
-rw-r--r-- | ds9/library/markeranalysisplot3d.tcl | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/ds9/library/markeranalysisplot3d.tcl b/ds9/library/markeranalysisplot3d.tcl new file mode 100644 index 0000000..1e9263a --- /dev/null +++ b/ds9/library/markeranalysisplot3d.tcl @@ -0,0 +1,231 @@ +# Copyright (C) 1999-2016 +# Smithsonian Astrophysical Observatory, Cambridge, MA, USA +# For conditions of distribution and use, see copyright notice in "copyright" + +package provide DS9 1.0 + +proc MarkerAnalysisPlot3dDialog {varname} { + upvar #0 $varname var + global $varname + + global imarker + + set id $var(id) + set frame $var(frame) + + set vvarname ${imarker(prefix,plot3d)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + set var(plot3d) [info exists ${vvarname}(top)] + set var(method) average + + $var(mb).analysis add checkbutton -label [msgcat::mc {Plot 3D}] \ + -variable ${varname}(plot3d) \ + -command "MarkerAnalysisPlot3dCmd $varname" + $var(mb).analysis add separator + $var(mb).analysis add cascade \ + -label [msgcat::mc {Method}] \ + -menu $var(mb).analysis.method + + menu $var(mb).analysis.method + $var(mb).analysis.method add radiobutton \ + -label [msgcat::mc {Average}] \ + -variable ${varname}(method) -value average \ + -command "MarkerAnalysisPlot3dMethod $varname" + $var(mb).analysis.method add radiobutton \ + -label [msgcat::mc {Sum}] \ + -variable ${varname}(method) -value sum \ + -command "MarkerAnalysisPlot3dMethod $varname" +} + +# support + +proc MarkerAnalysisPlot3dCmd {varname} { + upvar #0 $varname var + global $varname + + MarkerAnalysisPlot3d $var(frame) $var(id) $var(plot3d) +} + +proc MarkerAnalysisPlot3d {frame id plot} { + global imarker + + $frame marker $id analysis plot3d $plot + if {$plot} { + MarkerAnalysisPlot3dCB $frame $id + + set vvarname ${imarker(prefix,plot3d)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + PlotRaise $vvarname + } else { + MarkerAnalysisPlot3dDeleteCB $frame $id + } +} + +proc MarkerAnalysisPlot3dMethod {varname} { + upvar #0 $varname var + global $varname + + global imarker + + set frame $var(frame) + set id $var(id) + + set vvarname ${imarker(prefix,plot3d)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + if {[info exists var(plot3d)]} { + if {$var(plot3d)} { + MarkerAnalysisPlot3dCB $frame $id + MarkerAnalysisPlot3dYAxisTitle $vvarname + } + } +} + +proc MarkerAnalysisPlot3dSystem {varname} { + upvar #0 $varname var + global $varname + + global imarker + + set frame $var(frame) + set id $var(id) + + set vvarname ${imarker(prefix,plot3d)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + if {[info exists var(plot3d)]} { + if {$var(plot3d)} { + MarkerAnalysisPlot3dCB $frame $id + MarkerAnalysisPlot3dXAxisTitle $vvarname + } + } +} + +# hardcoded marker.C +proc MarkerAnalysisPlot3dCB {frame id} { + global imarker + + set varname ${imarker(prefix,dialog)}${id}${frame} + global $varname + upvar #0 $varname var + + set vvarname ${imarker(prefix,plot3d)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + set vvar(frame) $frame + set vvar(id) $id + + if {[info exists var(system)]} { + set vvar(system) $var(system) + set sys $var(system) + } elseif {[info exists vvar(system)]} { + set sys $vvar(system) + } else { + global wcs + set vvar(system) $wcs(system) + set sys $wcs(system) + } + + if {[info exists var(method)]} { + set vvar(method) $var(method) + set method $var(method) + } elseif {[info exists vvar(method)]} { + set method $vvar(method) + } else { + set vvar(method) average + set method average + } + + set xdata ${vvarname}x + set ydata ${vvarname}y + global $xdata $ydata + + set ping [PlotPing $vvarname] + + if {!$ping} { + set tt [string totitle [$frame get marker $id type]] + PlotLineDialog $vvarname $tt Plot3D $sys Counts + MarkerAnalysisPlot3dXAxisTitle $vvarname + MarkerAnalysisPlot3dYAxisTitle $vvarname + + set vvar(manage) 0 + set vvar(dim) xy + set vvar(xdata) $xdata + set vvar(ydata) $ydata + blt::vector create $xdata $ydata + } + + $frame get marker $id analysis plot3d $xdata $ydata $sys $method + + if {!$ping} { + PlotExternal $vvarname + $vvar(proc,updateelement) $vvarname + $vvar(proc,updategraph) $vvarname + } + + PlotStats $vvarname + PlotList $vvarname +} + +# hardcoded marker.C +proc MarkerAnalysisPlot3dDeleteCB {frame id} { + # this routine could be called by the region + # after the dialog has been deleted + + global imarker + + set vvarname ${imarker(prefix,plot3d)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + # clear any errors + global errorInfo + set errorInfo {} + + PlotDestroy $vvarname +} + +proc MarkerAnalysisPlot3dXAxisTitle {vvarname} { + upvar #0 $vvarname vvar + global $vvarname + + switch -- $vvar(system) { + image - + physical - + amplifier - + detector {set xtitle "$vvar(system)"} + default { + set w [string range $vvar(system) 3 3] + set tt [string trim [$vvar(frame) get fits header keyword \{CTYPE3$w\}]] + if {$tt != {}} { + set xtitle "$tt" + } else { + set xtitle "$vvar(system)" + } + } + } + + # set for plot code + set vvar(axis,x,title) $xtitle + + # update now (may not make it into plot code) + $vvar(graph) xaxis configure -title $xtitle +} + +proc MarkerAnalysisPlot3dYAxisTitle {vvarname} { + upvar #0 $vvarname vvar + global $vvarname + + # set for plot code + set vvar(axis,y,title) "Counts [string totitle $vvar(method)]" + + # update now (may not make it into plot code) + $vvar(graph) yaxis configure -title $vvar(axis,y,title) +} |