Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In the next major release of the LSST stack, the system for measuring the properties of sources will be replaced by a new one, housed mostly in the new meas_base package.  In addition to providing new Task classes and a new plugin interface for measurement algorithms, this overhaul also includes changes to the schemas of the catalogs produced by the measurement framework.  The new framework will not be entirely complete as of the next releto a schema, you follow the naming conventions for the schema version of the framework you are using.ase, but it will have sufficient functionality to replace the old framework as the default.  The old system will remain available via config on the S14 final release, but will be removed entirely before the W15 release.

New Tasks

The main entry point for the new measurement framework is the new SingleFrameMeasurementTask class (in meas_base), which is intended as an almost drop-in replacement for the current SourceMeasurementTask (in meas_algorithms).  It's not drop-in replacement, because it has different plugins, a slightly different slot system, and an entirely different output schema - so we will use it everywhere SourceMeasurementTask was used before, but when changing other configuration settings from their defaults - particularly those that deal with the measurement algorithms or their outputs, you'll need to be careful to use configuration values that are consistent with the measurement tasks you're useing.  We've provided configuration instructions to make that easy, as described in the next section.

SingleFrameMeasurementTask combines the work previously done by two classes, the old SourceMeasurementTask and the C++ MeasureSources class.  It initializes the plugins (which determines the schema) in its constructor, then invokes the plugins on each source in the image, replacing neighbors with noise as it does so (this is delegated to the NoiseReplacer class, which replaces the ReplaceWithNoiseTask subtask).  Unlike SourceMeasurementTask, SingleFrameMeasurementTask does not do forced photometry (see below).  Sources are also processed in a slightly different order (see Simultaneous Multi-Object Measurement).

Reverting to the Old Framework

For the present, you will continue to support the measurement.py task in meas_algorithms.  The measurement task used by processCcd and processCoadd is controlled by configurations items in CalibrateConfig and ProcessImageConfig, and can be retargeted back to the original meas_algorithms framework using the following python code:

from lsst.meas.algorithms.measurement import SourceMeasurementTask

root.calibrate.initialMeasurement.retarget(SourceMeasurementTask)

root.calibrate.measurement.retarget(SourceMeasurementTask)

...

)

...

Please note that the old measurement task writes tables with version=0 schemas, and expects the plugins and fieldnames to use the old naming conventions.  For example, you must refer to the SdssCentroid plugin as 'centroid.sdss' and the value it stores in the output table will be afw.geom.PointD type with the name 'centroid.sdss'.  See the section Schema Changes and Versioning below.

Some care has been taken to make all of the tasks called by processImage sensitive to which measurement framework and schema version are in use, so that the pipeline will work with either measurement task.  However, the developer should be careful when accessing or adding fields to the schemas to know which measurement task and which naming conventions are in effect.  For new code, we encourage the use of the meas_base measurement framework and schema version=1 tables.

Here are some examples where you must use schema=0 names if you revert to the old framework:

  • Code which adds a field by name to the schema.
  • Plugin and slot names should follow the version:  e.g., "centroid.sdss" for the old framework and "base_SdssCentroid" for the new.
  • Config items for tasks which name specific fields, such as "badFlags" in the StarSelector configurations.

NOTE:  If you are reading this document prior to the changeover to the end of Summer 14, just the opposite instructions will hold for using the New Framework.  That is, you must retarget the above 3 tasks using the SingleFrameMeasurementTask, which resides in lsst.meas.base.

Schema Changes and Versioning

...

  • In version 0, periods in field names were translated to underscores when writing to FITS, making it impossible to use underscores in field names.  This was due to a misunderstanding of the FITS standard, and was never necessary.  This translation is not done for version>0 schemas, and hence both periods and underscores will work with the code.
  • In version>0, our naming conventions use underscores instead of the periods used in version 0.  So while both are permitted by the code in version>0 (which allows us to read external FITS files with fewer restrictions, and note that periods will not be treated as a delimiter in version>0), only underscores should be used in LSST code, and underscores will now be used as the delimiter by the SubSchema class and Schema::operator[] operator when joining pieces of field names.

...

For issues that we expect to complete before the S14 release, please see the epics below.  These include improvements to error-handling, miscellaneous code cleanups, FunctorKeys for array fields, and a multiple-aperture photometry plugin.in S15, please consult 

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId9da94fb6-5771-303d-a785-1b6c5ab0f2d2
keyDM-

...

1769
 and 

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId9da94fb6-5771-303d-a785-1b6c5ab0f2d2
keyDM-

...

85

...

For issues that we expect to complete in W15, please these epics for a complete list.  .  These include reimplementing aperture corrections, removing now-deprecated afw::table features, and reimplemented database ingest, converting extension algorithms to the new plugin system, and removing the old measurement framework and all remaining code that depends on it.

...

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId9da94fb6-5771-303d-a785-1b6c5ab0f2d2
keyDM-1099

...

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId9da94fb6-5771-303d-a785-1b6c5ab0f2d2
keyDM-1100

...

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId9da94fb6-5771-303d-a785-1b6c5ab0f2d2
keyDM-1101

...

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId9da94fb6-5771-303d-a785-1b6c5ab0f2d2
keyDM-85

...