# 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(),
])
```