diff options
author | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
---|---|---|
committer | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
commit | 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch) | |
tree | 4464880c571602d54f6ae114729bf62a89518057 /pkg/images/tv/imexamine/iestatistics.x | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/images/tv/imexamine/iestatistics.x')
-rw-r--r-- | pkg/images/tv/imexamine/iestatistics.x | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/pkg/images/tv/imexamine/iestatistics.x b/pkg/images/tv/imexamine/iestatistics.x new file mode 100644 index 00000000..a3ac5f22 --- /dev/null +++ b/pkg/images/tv/imexamine/iestatistics.x @@ -0,0 +1,84 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include <error.h> +include "imexam.h" + + +# IE_STATISTICS -- Compute and print statistics. + +procedure ie_statistics (ie, x, y) + +pointer ie # IMEXAM structure +real x, y # Aperture coordinates + +double mean, median, std +int ncstat, nlstat, x1, x2,y1, y2, npts, clgeti() +pointer sp, imname, im, data, sortdata, ie_gimage(), ie_gdata() +string label "\ +# SECTION NPIX MEAN MEDIAN STDDEV MIN MAX\n" + +begin + iferr (im = ie_gimage (ie, NO)) { + call erract (EA_WARN) + return + } + + ncstat = clgeti ("ncstat") + nlstat = clgeti ("nlstat") + x1 = x - (ncstat-1) / 2 + 0.5 + x2 = x + ncstat / 2 + 0.5 + y1 = y - (nlstat-1) / 2 + 0.5 + y2 = y + nlstat / 2 + 0.5 + iferr (data = ie_gdata (im, x1, x2, y1, y2)) { + call erract (EA_WARN) + return + } + npts = (x2-x1+1) * (y2-y1+1) + + call smark (sp) + call salloc (imname, SZ_FNAME, TY_CHAR) + call salloc (sortdata, npts, TY_DOUBLE) + + call achtrd (Memr[data], Memd[sortdata], npts) + call asrtd (Memd[sortdata], Memd[sortdata], npts) + call aavgd (Memd[sortdata], npts, mean, std) + if (mod (npts, 2) == 0) + median = (Memd[sortdata+npts/2-1] + Memd[sortdata+npts/2]) / 2 + else + median = Memd[sortdata+npts/2] + + call sprintf (Memc[imname], SZ_FNAME, "[%d:%d,%d:%d]") + call pargi (x1) + call pargi (x2) + call pargi (y1) + call pargi (y2) + + if (IE_LASTKEY(ie) != 'm') + call printf (label) + + call printf ("%20s %8d %8.4g %8.4g %8.4g %8.4g %8.4g\n") + call pargstr (Memc[imname]) + call pargi (npts) + call pargd (mean) + call pargd (median) + call pargd (std) + call pargd (Memd[sortdata]) + call pargd (Memd[sortdata+npts-1]) + + if (IE_LOGFD(ie) != NULL) { + if (IE_LASTKEY(ie) != 'm') + call fprintf (IE_LOGFD(ie), label) + + call fprintf (IE_LOGFD(ie), + "%20s %8d %8.4g %8.4g %8.4g %8.4g %8.4g\n") + call pargstr (Memc[imname]) + call pargi (npts) + call pargd (mean) + call pargd (median) + call pargd (std) + call pargd (Memd[sortdata]) + call pargd (Memd[sortdata+npts-1]) + } + + call sfree (sp) +end |