cytoflow.operations.frame_stat

The frame_stat module contains one class:

FrameStatisticOp – applies a function to subsets of a data set, and adds the resulting statistic to the Experiment. Unlike ChannelStatisticOp, which operates on a single channel, this operation operates on entire pandas.DataFrame.

class cytoflow.operations.frame_stat.FrameStatisticOp[source]

Bases: traits.has_traits.HasStrictTraits

Apply a function to subsets of a data set, and add it as a statistic to the experiment.

The apply function groups the data by the variables in by, then applies the function callable to each pandas.DataFrame subset. The callable should take a pandas.DataFrame as its only parameter. The return type is arbitrary, but to be used with the rest of cytoflow it should probably be a numeric type or an iterable of numeric types.

name

The operation name. Becomes the first element in the Experiment.statistics key tuple.

Type

Str

function

The function used to compute the statistic. Must take a pandas.DataFrame as its only argument. The return type is arbitrary, but to be used with the rest of cytoflow it should probably be a numeric type or an iterable of numeric types. If statistic_name is unset, the name of the function becomes the second in element in the Experiment.statistics key tuple.

Type

Callable

statistic_name

The name of the function; if present, becomes the second element in the Experiment.statistics key tuple. Particularly useful if function is a lambda.

Type

Str

by

A list of metadata attributes to aggregate the data before applying the function. For example, if the experiment has two pieces of metadata, Time and Dox, setting by = ["Time", "Dox"] will apply function separately to each subset of the data with a unique combination of Time and Dox.

Type

List(Str)

subset

A Python expression sent to Experiment.query() to subset the data before computing the statistic.

Type

Str

fill

The value to use in the statistic if a slice of the data is empty.

Type

Any (default = 0)

Examples

>>> stats_op = FrameStatisticOp(name = "ByDox",
...                             function = lambda x: np.mean(x["FITC-A"],
...                             statistic_name = "Mean",
...                             by = ["Dox"])
>>> ex2 = stats_op.apply(ex)
apply(experiment)[source]