AssociationTask

class lsst.ap.association.AssociationTask(config: Config | None = None, *, name: str | None = None, parentTask: Task | None = None, log: logging.Logger | lsst.utils.logging.LsstLogAdapter | None = None)

Bases: Task

Associate DIAOSources into existing DIAObjects.

This task performs the association of detected DIASources in a visit with the previous DIAObjects detected over time. It also creates new DIAObjects out of DIASources that cannot be associated with previously detected DIAObjects.

Methods Summary

associate_sources(dia_objects, dia_sources)

Associate the input DIASources with the catalog of DIAObjects.

check_dia_source_radec(dia_sources)

Check that all DiaSources have non-NaN values for RA/DEC.

emptyMetadata()

Empty (clear) the metadata for this Task and all sub-Tasks.

getFullMetadata()

Get metadata for all tasks.

getFullName()

Get the task name as a hierarchical name including parent task names.

getName()

Get the name of the task.

getTaskDict()

Get a dictionary of all tasks as a shallow copy.

makeField(doc)

Make a lsst.pex.config.ConfigurableField for this task.

makeSubtask(name, **keyArgs)

Create a subtask as a new instance as the name attribute of this task.

match(dia_objects, dia_sources, score_struct)

Match DIAsources to DiaObjects given a score.

run(diaSources, diaObjects)

Associate the new DiaSources with existing DiaObjects.

score(dia_objects, dia_sources, max_dist)

Compute a quality score for each dia_source/dia_object pair between this catalog of DIAObjects and the input DIASource catalog.

timer(name[, logLevel])

Context manager to log performance data for an arbitrary block of code.

Methods Documentation

associate_sources(dia_objects, dia_sources)

Associate the input DIASources with the catalog of DIAObjects.

DiaObject DataFrame must be indexed on diaObjectId.

Parameters:
dia_objectspandas.DataFrame

Catalog of DIAObjects to attempt to associate the input DIASources into.

dia_sourcespandas.DataFrame

DIASources to associate into the DIAObjectCollection.

Returns:
resultlsst.pipe.base.Struct

Results struct with components.

  • diaSources : Full set of diaSources both matched and not. (pandas.DataFrame)

  • nUpdatedDiaObjects : Number of DiaObjects that were associated. (int)

  • nUnassociatedDiaObjects : Number of DiaObjects that were not matched a new DiaSource. (int)

check_dia_source_radec(dia_sources)

Check that all DiaSources have non-NaN values for RA/DEC.

If one or more DiaSources are found to have NaN values, throw a warning to the log with the ids of the offending sources. Drop them from the table.

Parameters:
dia_sourcespandas.DataFrame

Input DiaSources to check for NaN values.

Returns:
trimmed_sourcespandas.DataFrame

DataFrame of DiaSources trimmed of all entries with NaN values for RA/DEC.

emptyMetadata() None

Empty (clear) the metadata for this Task and all sub-Tasks.

getFullMetadata() TaskMetadata

Get metadata for all tasks.

Returns:
metadataTaskMetadata

The keys are the full task name. Values are metadata for the top-level task and all subtasks, sub-subtasks, etc.

Notes

The returned metadata includes timing information (if @timer.timeMethod is used) and any metadata set by the task. The name of each item consists of the full task name with . replaced by :, followed by . and the name of the item, e.g.:

topLevelTaskName:subtaskName:subsubtaskName.itemName

using : in the full task name disambiguates the rare situation that a task has a subtask and a metadata item with the same name.

getFullName() str

Get the task name as a hierarchical name including parent task names.

Returns:
fullNamestr

The full name consists of the name of the parent task and each subtask separated by periods. For example:

  • The full name of top-level task “top” is simply “top”.

  • The full name of subtask “sub” of top-level task “top” is “top.sub”.

  • The full name of subtask “sub2” of subtask “sub” of top-level task “top” is “top.sub.sub2”.

getName() str

Get the name of the task.

Returns:
taskNamestr

Name of the task.

See also

getFullName

Get the full name of the task.

getTaskDict() dict[str, weakref.ReferenceType[lsst.pipe.base.task.Task]]

Get a dictionary of all tasks as a shallow copy.

Returns:
taskDictdict

Dictionary containing full task name: task object for the top-level task and all subtasks, sub-subtasks, etc.

classmethod makeField(doc: str) ConfigurableField

Make a lsst.pex.config.ConfigurableField for this task.

Parameters:
docstr

Help text for the field.

Returns:
configurableFieldlsst.pex.config.ConfigurableField

A ConfigurableField for this task.

Examples

Provides a convenient way to specify this task is a subtask of another task.

Here is an example of use:

class OtherTaskConfig(lsst.pex.config.Config):
    aSubtask = ATaskClass.makeField("brief description of task")
makeSubtask(name: str, **keyArgs: Any) None

Create a subtask as a new instance as the name attribute of this task.

Parameters:
namestr

Brief name of the subtask.

**keyArgs

Extra keyword arguments used to construct the task. The following arguments are automatically provided and cannot be overridden:

  • config.

  • parentTask.

Notes

The subtask must be defined by Task.config.name, an instance of ConfigurableField or RegistryField.

match(dia_objects, dia_sources, score_struct)

Match DIAsources to DiaObjects given a score.

Parameters:
dia_objectspandas.DataFrame

A SourceCatalog of DIAObjects to associate to DIASources.

dia_sourcespandas.DataFrame

A contiguous catalog of dia_sources for which the set of scores has been computed on with DIAObjectCollection.score.

score_structlsst.pipe.base.Struct

Results struct with components:

  • "scores": array of floats of match quality

    updated DIAObjects (array-like of float).

  • "obj_ids": array of floats of match quality

    updated DIAObjects (array-like of int).

  • "obj_idxs": indexes of the matched DIAObjects in the catalog.

    (array-like of int)

Default values for these arrays are INF, -1 and -1 respectively for unassociated sources.

Returns:
resultlsst.pipe.base.Struct

Results struct with components.

  • "diaSources" : Full set of diaSources both matched and not. (pandas.DataFrame)

  • "nUpdatedDiaObjects" : Number of DiaObjects that were associated. (int)

  • "nUnassociatedDiaObjects" : Number of DiaObjects that were not matched a new DiaSource. (int)

run(diaSources, diaObjects)

Associate the new DiaSources with existing DiaObjects.

Parameters:
diaSourcespandas.DataFrame

New DIASources to be associated with existing DIAObjects.

diaObjectspandas.DataFrame

Existing diaObjects from the Apdb.

Returns:
resultlsst.pipe.base.Struct

Results struct with components.

  • matchedDiaSources : DiaSources that were matched. Matched Sources have their diaObjectId updated and set to the id of the diaObject they were matched to. (pandas.DataFrame)

  • unAssocDiaSources : DiaSources that were not matched. Unassociated sources have their diaObject set to 0 as they were not associated with any existing DiaObjects. (pandas.DataFrame)

  • nUpdatedDiaObjects : Number of DiaObjects that were matched to new DiaSources. (int)

  • nUnassociatedDiaObjects : Number of DiaObjects that were not matched a new DiaSource. (int)

score(dia_objects, dia_sources, max_dist)

Compute a quality score for each dia_source/dia_object pair between this catalog of DIAObjects and the input DIASource catalog.

max_dist sets maximum separation in arcseconds to consider a dia_source a possible match to a dia_object. If the pair is beyond this distance no score is computed.

Parameters:
dia_objectspandas.DataFrame

A contiguous catalog of DIAObjects to score against dia_sources.

dia_sourcespandas.DataFrame

A contiguous catalog of dia_sources to “score” based on distance and (in the future) other metrics.

max_distlsst.geom.Angle

Maximum allowed distance to compute a score for a given DIAObject DIASource pair.

Returns:
resultlsst.pipe.base.Struct

Results struct with components:

  • scores: array of floats of match quality updated DIAObjects

    (array-like of float).

  • obj_idxs: indexes of the matched DIAObjects in the catalog.

    (array-like of int)

  • obj_ids: array of floats of match quality updated DIAObjects

    (array-like of int).

Default values for these arrays are INF, -1, and -1 respectively for unassociated sources.

timer(name: str, logLevel: int = 10) Iterator[None]

Context manager to log performance data for an arbitrary block of code.

Parameters:
namestr

Name of code being timed; data will be logged using item name: Start and End.

logLevelint

A logging level constant.

See also

lsst.utils.timer.logInfo

Implementation function.

Examples

Creating a timer context:

with self.timer("someCodeToTime"):
    pass  # code to time