12 Comparison with Wright-Giddings proposals
The term “structure” in the Wright-Giddings (WG) proposals meant a collection of related data
objects, so that one level of the hierarchy could contain more than one “structure”, e.g. GLOBAL and
[DATA_ARRAY].
Of the GLOBAL structure only [TITLE] has been copied into the
NDF
structure.
Table 29: Comparison of NDF
and the Wright-Giddings “DATA_ARRAY structure”
|
|
|
Wright-Giddings | NDF name | Comments |
|
|
|
| [TITLE] | same name in WG GLOBAL |
| [VARIANT] | no counterpart in WG |
[DATA_ARRAY] | [DATA_ARRAY] | unchanged in name or meaning |
[DATA_MIN] | | no counterpart in NDF |
[DATA_MAX] | | no counterpart in NDF |
[DATA_BLANK] | | no counterpart in NDF |
[DATA_SCALE] | | [SCALE] in scaled narray |
[DATA_ZERO] | | [ZERO] in scaled narray |
[DATA_LABEL] | [LABEL] | unchanged in meaning |
[DATA_UNITS] | [UNITS] | unchanged in meaning |
[DATA_QUALITY] | [QUALITY] | unchanged in meaning |
| [BAD_PIXEL] | no counterpart in WG |
[DATA_ERROR] | [VARIANCE] | variance rather than |
[AXIS_CALIB] | | no counterpart in NDF |
[AXISn_DATA] | [AXIS(n).DATA_ARRAY] | [DATA_ARRAY] for consistency |
[AXISn_UNITS] | [AXIS(n).UNITS] | unchanged in meaning |
[AXISn_LABEL] | [AXIS(n).LABEL] | unchanged in meaning |
[AXISn_ERROR] | [AXIS(n).VARIANCE] | variance rather than |
[AXISn_CALIB] | | no counterpart in NDF |
| [HISTORY] | no counterpart in WG |
| [MORE] | no counterpart though it can |
| | store WG GLOBAL objects |
|
|
|
|
WG components no longer used in
NDF
:
-
[DATA_MIN], [DATA_MAX]
- Following the precept of making life easier for applications programmers
forces their exclusion. Principally they are used for scaling for display, yet they often fail
to produce the desired result, especially for data with a wide dynamic range (as is often
found in astronomy), because the extrema only give information about two pixels and
are therefore unrepresentative. What often happens is that the display process is repeated
several times (albeit more efficiently if [DATA_MIN] and [DATA_MAX] are stored), each
time guessing the correct range more accurately. Even in those cases where the maximum
and minimum provide a good scaling, their computation accounts for only about 20 per
cent of the total time taken by the display process. A more-sophisticated approach at
the outset pays off because the data need only be displayed once. The most successful
methods are related to the distribution of pixel values. Histogram equalisation, central
per cent, or minus
to plus
standard deviations all work well.
Although there might be some hope that a min-max system could work if all algorithmic
access to the datasets were through Starlink-supplied routines, it is inevitable that some
programmers/users would forget to call the subroutines or fail to realise that their
application may have affected the extrema.
-
[DATA_BLANK]
- This has been superseded by system-defined magic values, available to
applications.
-
[DATA_LABEL], [DATA_UNITS] and [DATA_QUALITY]
- These have changed to allow standard
subroutines to work on different labels, units and quality, e.g. in AXIS,
and not be tied into a naming scheme, e.g. [AXIS_LABEL]. The interpretation of [DATA_QUALITY]
has also changed for general-purpose applications.
-
[DATA_ERROR]
- This has changed as for [DATA_LABEL] etc., but also because the
interpretation has changed to variance.
-
[AXIS_CALIB] and [AXISn_CALIB]
-
These are too specialised and the processing rules are unknown for general-purpose
applications. Calibration data should be situated in [MORE] within an extension, perhaps
which shadows the main [AXIS] structures.