Telemetry
DataFrame-like object containing multi-channel telemetry data. Constructor:Instance of Session class (required for full functionality)
Driver number as string (required for full functionality)
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
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.Array of boolean values with the same length as self
Number of samples used for padding the sliced data
Where to pad: ‘both’, ‘before’, or ‘after’
Sliced Telemetry object
slice_by_lap()
Slice telemetry to include only data from specific lap(s).The lap or laps to slice by
Number of samples for padding
Where to pad: ‘both’, ‘before’, or ‘after’
Add interpolated samples at beginning and end to exactly match time window
Sliced Telemetry object
Requires ‘SessionTime’ column to be present.
slice_by_time()
Slice telemetry to include only data in a specific time frame.Start of the time window
End of the time window
Number of samples for padding
Where to pad: ‘both’, ‘before’, or ‘after’
Add interpolated samples at edges
Sliced Telemetry object
Data Manipulation Methods
merge_channels()
Merge telemetry objects containing different channels.Telemetry object to merge with self
Optional frequency override. Either ‘original’ or integer for Hz.
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.Resampling rule for pandas.Series.resample (e.g., ‘10ms’, ‘100ms’)
Alternative: provide a custom Series of new date reference timestamps
Additional parameters passed to pandas.Series.resample
Resampled Telemetry object
Specify either ‘rule’ or ‘new_date_ref’, not both.
fill_missing()
Calculate missing values using interpolation.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.Drop and recalculate if column already exists
Self with new ‘Distance’ column
add_differential_distance()
Add ‘DifferentialDistance’ column with distance between samples.Drop and recalculate if column already exists
Self with new ‘DifferentialDistance’ column
add_relative_distance()
Add ‘RelativeDistance’ column (0.0 at start, 1.0 at end).Drop and recalculate if column already exists
Self with new ‘RelativeDistance’ column
add_driver_ahead()
Add ‘DriverAhead’ and ‘DistanceToDriverAhead’ columns.Drop and recalculate if columns already exist
Self with new columns
add_track_status()
Add ‘TrackStatus’ column with track status for each sample.Drop and recalculate if column already exists
Self with new ‘TrackStatus’ column
Calculation Methods
calculate_differential_distance()
Calculate distance between samples.Series with differential distance values in meters
integrate_distance()
Calculate cumulative distance from first sample.Series with distance values in meters
calculate_driver_ahead()
Calculate driver ahead and distance to driver ahead.Additionally return the reference telemetry slice used for calculation
(driver_ahead: np.ndarray, distance: np.ndarray, [optional: reference_telemetry])
Class Methods
register_new_channel()
Register a custom telemetry channel for automatic interpolation.Channel/column name
One of ‘continuous’, ‘discrete’, or ‘excluded’
Interpolation method (required for continuous signals). See pandas.Series.interpolate for options.
