Telemetry
DataFrame-like object containing multi-channel telemetry data. Constructor:Session | None
default:"None"
Instance of Session class (required for full functionality)
str | None
default:"None"
Driver number as string (required for full functionality)
bool
default:"False"
Remove all unknown data channels on initialization
Available Channels
Car Data Channels
Speed(float64): Car speed in km/hRPM(float64): Engine RPMnGear(int): Current gear numberThrottle(float64): Throttle pedal position (0-100%). Note: 104 sometimes indicates error/unavailable data.Brake(bool): Whether brakes are appliedDRS(int): DRS status indicator
Position Data Channels
X(float64): X coordinate position (1/10 meter)Y(float64): Y coordinate position (1/10 meter)Z(float64): Z coordinate position (1/10 meter)Status(str): Track status flag - ‘OnTrack’ or ‘OffTrack’
Time Channels
Time(timedelta64[ns]): Time elapsed since start of data slice (0 at start)SessionTime(timedelta64[ns]): Time elapsed since session startDate(datetime64[ns]): Full timestamp for this sample
Metadata Channels
Source(str): How this sample was created:- ‘car’: from original car data API
- ‘pos’: from original position data API
- ‘interpolated’: artificially created/interpolated sample
Computed Channels
These channels can be added using the correspondingadd_*() methods:
Distance(float64): Distance driven since first sample (meters)DifferentialDistance(float64): Distance between samples (meters)RelativeDistance(float64): Relative distance (0.0 to 1.0)DriverAhead(str): Driver number of car aheadDistanceToDriverAhead(float64): Distance to car ahead (meters)TrackStatus(int): Track status number
Class Attributes
TELEMETRY_FREQUENCY
str | int
Defines the frequency used when resampling telemetry data. Either the string ‘original’ (default) or an integer to specify frequency in Hz.
Slicing Methods
slice_by_mask()
Slice telemetry using a boolean array as a mask.list | pd.Series | np.ndarray
required
Array of boolean values with the same length as self
int
default:"0"
Number of samples used for padding the sliced data
str
default:"'both'"
Where to pad: ‘both’, ‘before’, or ‘after’
Telemetry
Sliced Telemetry object
slice_by_lap()
Slice telemetry to include only data from specific lap(s).Lap | Laps
required
The lap or laps to slice by
int
default:"0"
Number of samples for padding
str
default:"'both'"
Where to pad: ‘both’, ‘before’, or ‘after’
bool
default:"False"
Add interpolated samples at beginning and end to exactly match time window
Telemetry
Sliced Telemetry object
Requires ‘SessionTime’ column to be present.
slice_by_time()
Slice telemetry to include only data in a specific time frame.pd.Timedelta
required
Start of the time window
pd.Timedelta
required
End of the time window
int
default:"0"
Number of samples for padding
str
default:"'both'"
Where to pad: ‘both’, ‘before’, or ‘after’
bool
default:"False"
Add interpolated samples at edges
Telemetry
Sliced Telemetry object
Data Manipulation Methods
merge_channels()
Merge telemetry objects containing different channels.Telemetry | pd.DataFrame
required
Telemetry object to merge with self
int | Literal['original'] | None
default:"None"
Optional frequency override. Either ‘original’ or integer for Hz.
Telemetry
Merged Telemetry object with all channels
The two objects don’t need a common time base. Data will be merged, optionally resampled, and missing values interpolated.
resample_channels()
Resample telemetry data to a different frequency.str | None
default:"None"
Resampling rule for pandas.Series.resample (e.g., ‘10ms’, ‘100ms’)
pd.Series | None
default:"None"
Alternative: provide a custom Series of new date reference timestamps
Any
Additional parameters passed to pandas.Series.resample
Telemetry
Resampled Telemetry object
Specify either ‘rule’ or ‘new_date_ref’, not both.
fill_missing()
Calculate missing values using interpolation.Telemetry
Telemetry object with interpolated values
Different interpolation methods are used depending on the channel type (linear for continuous values like Speed, forward-fill for discrete values like nGear).
Adding Computed Channels
add_distance()
Add ‘Distance’ column containing cumulative distance driven.bool
default:"True"
Drop and recalculate if column already exists
Telemetry
Self with new ‘Distance’ column
add_differential_distance()
Add ‘DifferentialDistance’ column with distance between samples.bool
default:"True"
Drop and recalculate if column already exists
Telemetry
Self with new ‘DifferentialDistance’ column
add_relative_distance()
Add ‘RelativeDistance’ column (0.0 at start, 1.0 at end).bool
default:"True"
Drop and recalculate if column already exists
Telemetry
Self with new ‘RelativeDistance’ column
add_driver_ahead()
Add ‘DriverAhead’ and ‘DistanceToDriverAhead’ columns.bool
default:"True"
Drop and recalculate if columns already exist
Telemetry
Self with new columns
add_track_status()
Add ‘TrackStatus’ column with track status for each sample.bool
default:"True"
Drop and recalculate if column already exists
Telemetry
Self with new ‘TrackStatus’ column
Calculation Methods
calculate_differential_distance()
Calculate distance between samples.pd.Series
Series with differential distance values in meters
integrate_distance()
Calculate cumulative distance from first sample.pd.Series
Series with distance values in meters
calculate_driver_ahead()
Calculate driver ahead and distance to driver ahead.bool
default:"False"
Additionally return the reference telemetry slice used for calculation
tuple
(driver_ahead: np.ndarray, distance: np.ndarray, [optional: reference_telemetry])
Class Methods
register_new_channel()
Register a custom telemetry channel for automatic interpolation.str
required
Channel/column name
str
required
One of ‘continuous’, ‘discrete’, or ‘excluded’
str | None
default:"None"
Interpolation method (required for continuous signals). See pandas.Series.interpolate for options.
