pept.processing.ResidenceDistribution2D#
- class pept.processing.ResidenceDistribution2D(diameter, column='t', dimensions='xy', resolution=(512, 512), xlim=None, ylim=None, max_workers=None, verbose=True)[source]#
Bases:
ReducerCompute the 2D residence distribution of some tracer quantity (eg time spent in each cell).
Reducer signature:
PointData -> ResidenceDistribution2D.fit -> Pixels list[PointData] -> ResidenceDistribution2D.fit -> Pixels numpy.ndarray -> ResidenceDistribution2D.fit -> Pixels
This reducer calculates the cumulative value of the tracer quantity in each cell of a 2D pixel grid; it uses the full projected tracer area for the pixelization step, so the distribution is accurate for arbitrarily fine resolutions.
- Parameters
- diameter
float The diameter of the imaged tracer.
- column
strorint,default“t” The PointData column used to compute the residence distribution, given as a name (str) or index (int).
- dimensions
strorlist[int],default“xy” The tracer coordinates used to rasterize its trajectory, given as a string (e.g. “xy” projects the points onto the XY plane) or a list with two column indices (e.g. [1, 3] for XZ).
- resolution
tuple[int,int],default(512, 512) The number of pixels used for the rasterization grid in the X and Y dimensions.
- xlim
tuple[float,float], optional The physical limits in the X dimension of the pixel grid. If unset, it is automatically computed to contain all tracer positions (default).
- ylim
tuple[float,float], optional The physical limits in the y dimension of the pixel grid. If unset, it is automatically computed to contain all tracer positions (default).
- max_workers
int, optional The maximum number of workers (threads, processes or ranks) to use by the parallel executor; if 1, it is sequential (and produces the clearest error messages should they happen). If unset, the
os.cpu_count()is used.- verbosebool or
strdefaultTrue If True, time the computation and print the state of the execution.
- diameter
Examples
Compute the residence time distribution of a single tracer trajectory:
>>> trajectories = pept.load(...) >>> pixels_rtd = ResidenceDistribution2D(1.2, "t", "xy").fit(trajectories)
Plot the pixel grid:
>>> from pept.plots import PlotlyGrapher2D >>> PlotlyGrapher2D().add_pixels(pixels_rtd).show()
For multiple tracer trajectories, you can use
SegregatethenSplitAll('label')before calling this reducer to rasterize each trajectory separately:>>> rtd_pipeline = pept.Pipeline([ >>> Segregate(20, 10), >>> SplitAll("label"), >>> ResidenceDistribution2D(1.2, "t", "xy") >>> ]) >>> pixels_rtd = rtd_pipeline.fit(trajectories)
- __init__(diameter, column='t', dimensions='xy', resolution=(512, 512), xlim=None, ylim=None, max_workers=None, verbose=True)[source]#
Methods
__init__(diameter[, column, dimensions, ...])copy([deep])Create a deep copy of an instance of this class, including all inner attributes.
fit(samples)load(filepath)Load a saved / pickled PEPTObject object from filepath.
save(filepath)Save a PEPTObject instance as a binary pickle object.
- copy(deep=True)#
Create a deep copy of an instance of this class, including all inner attributes.
- static load(filepath)#
Load a saved / pickled PEPTObject object from filepath.
Most often the full object state was saved using the .save method.
- Parameters
- filepath
filenameorfilehandle If filepath is a path (rather than file handle), it is relative to where python is called.
- filepath
- Returns
pept.PEPTObjectsubclassinstanceThe loaded object.
Examples
Save a LineData instance, then load it back:
>>> lines = pept.LineData([[1, 2, 3, 4, 5, 6, 7]]) >>> lines.save("lines.pickle")
>>> lines_reloaded = pept.LineData.load("lines.pickle")
- save(filepath)#
Save a PEPTObject instance as a binary pickle object.
Saves the full object state, including inner attributes, in a portable binary format. Load back the object using the load method.
- Parameters
- filepath
filenameorfilehandle If filepath is a path (rather than file handle), it is relative to where python is called.
- filepath
Examples
Save a LineData instance, then load it back:
>>> lines = pept.LineData([[1, 2, 3, 4, 5, 6, 7]]) >>> lines.save("lines.pickle")
>>> lines_reloaded = pept.LineData.load("lines.pickle")