CompositeFunctor

class lsst.pipe.tasks.functors.CompositeFunctor(funcs, **kwargs)

Bases: lsst.pipe.tasks.functors.Functor

Perform multiple calculations at once on a catalog

The role of a CompositeFunctor is to group together computations from multiple functors. Instead of returning pandas.Series a CompositeFunctor returns a pandas.Dataframe, with the column names being the keys of funcDict.

The columns attribute of a CompositeFunctor is the union of all columns in all the component functors.

A CompositeFunctor does not use a _func method itself; rather, when a CompositeFunctor is called, all its columns are loaded at once, and the resulting dataframe is passed to the _func method of each component functor. This has the advantage of only doing I/O (reading from parquet file) once, and works because each individual _func method of each component functor does not care if there are extra columns in the dataframe being passed; only that it must contain at least the columns it expects.

An important and useful class method is from_yaml, which takes as argument the path to a YAML file specifying a collection of functors.

Parameters:
funcs : dict or list

Dictionary or list of functors. If a list, then it will be converted into a dictonary according to the shortname attribute of each functor.

Attributes Summary

columns Columns required to perform calculation
dataset
filt
name Full name of functor (suitable for figure labels)
noDup
shortname Short name of functor (suitable for column name/dict key)

Methods Summary

__call__(data, **kwargs) Apply the functor to the data table
difference(data1, data2, **kwargs) Computes difference between functor called on two different ParquetTable objects
fail(df)
from_file(filename, **kwargs)
from_yaml(translationDefinition, **kwargs)
multilevelColumns(data, **kwargs) Returns columns needed by functor from multilevel dataset
renameCol(col, renameRules)
update(new)

Attributes Documentation

columns

Columns required to perform calculation

dataset = None
filt
name

Full name of functor (suitable for figure labels)

noDup
shortname

Short name of functor (suitable for column name/dict key)

Methods Documentation

__call__(data, **kwargs)

Apply the functor to the data table

Parameters:
data : lsst.daf.butler.DeferredDatasetHandle,

The table or a pointer to a table on disk from which columns can be accessed

difference(data1, data2, **kwargs)

Computes difference between functor called on two different ParquetTable objects

fail(df)
classmethod from_file(filename, **kwargs)
classmethod from_yaml(translationDefinition, **kwargs)
multilevelColumns(data, **kwargs)

Returns columns needed by functor from multilevel dataset

To access tables with multilevel column structure, the MultilevelParquetTable or DeferredDatasetHandle need to be passed either a list of tuples or a dictionary.

Parameters:
data : MultilevelParquetTable or DeferredDatasetHandle
columnIndex (optional): pandas `Index` object

either passed or read in from DeferredDatasetHandle.

`returnTuple` : bool

If true, then return a list of tuples rather than the column dictionary specification. This is set to True by CompositeFunctor in order to be able to combine columns from the various component functors.

classmethod renameCol(col, renameRules)
update(new)