Extracting Velocities#

When extracting post-processed data from tracer trajectories for e.g. probability distributions, it is often important to sample data at fixed timesteps. As PEPT is natively a Lagrangian technique where tracers can be tracked more often in more sensitive areas of the gamma scanners, we have to convert those “randomly-sampled” positions into regular timesteps using Interpolate.

First, Segregate points into individual, continuous trajectory segments, GroupBy according to each trajectory’s label, then Interpolate into regular timesteps, then compute each point’s Velocity (dimension-wise or absolute) and finally Stack them back into a PointData:

from pept.tracking import *

pipe_vel = pept.Pipeline([
    Segregate(window = 20, cut_distance = 10.),
    GroupBy("label"),
    Interpolate(timestep = 5.),
    Velocity(window = 7),
    Stack(),
])

trajectories = pipe_vel.fit(trajectories)

The Velocity step appends columns ["vx", "vy", "vz"] (default) or ["v"] (if absolute = True). You can add both if you wish:

from pept.tracking import *

pept.Pipeline([
    Segregate(window = 20, cut_distance = 10.),
    GroupBy("label"),
    Interpolate(timestep = 5.),
    Velocity(window = 7),                       # Appends vx, vy, vz
    Velocity(window = 7, absolute = True),      # Appends v
    Stack(),
])