End users and the SUIT need to be able to determine a variety of relationships between columns in the tabular data products produced by LSST. The particular example motivating this ticket is the need to answer the question "where in the table is the uncertainty data for column 'x'?".
The answer could be:
- "there isn't any"
- "a symmetric Gaussian uncertainty is in column 'sigma_x'"
- "asymmetric Gaussian uncertainties are in columns 'sigmaplus_x' and 'sigmaminus_x'"
- "'x' is correlated with 'y' and the covariance matrix is in 'covar_xx', 'covar_xy', and 'covar_yy'"
Ideally we would find a way for these relationships to be defined when the Apps code generates its afw.table outputs, discoverable through an API usable in the afw.table context, exportable to the database, and made available to end users and the SUIT. It should be usable whether the data are delivered to end users as reconstituted afw.table objects or as tables in common Python formats (at least Astropy tables).
It should assist the SUIT in determining how to (automatically, though optionally) display uncertainty data when the primary data are requested.
This ticket expresses the idea that a solution that consists purely of a documented convention about prefixes to the string names of columns is inadequate. We would like to avoid having to write code implementing that convention in, potentially, hundreds of places, and we would like to avoid requiring that end users know these conventions in order to see proper displays with error bars.