# cytoflow.operations.frame_stat¶

class cytoflow.operations.frame_stat.FrameStatisticOp[source]

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 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]