Functions
Conditional
-
has(string, substring)Check if a string contains the substring.
Parameters
stringThe string to check
substringThe substring to search for
Return Value
Returns 1 if the substring is found within string, otherwise 0.
Discussion
The search is not case sensitive, so "vo2max" will match a title that contains "VO2MAX" or "VO2max" too. The
hasfunction is most often used as part of the condition part of theiffunction.Athlete Level Examples
Gives TSS for all workouts that have vo2max in the title.
-
hastag(string)Check if a workout has the specified tag.
Parameters
stringThe tag to check.
Return Value
Returns 1 if the workout has the tag, otherwise 0.
Discussion
A workout can have zero or more tags. This function returns 1 if
stringis equal to one of the workout's tags. The search is not case sensitive, butstringmust match the entire tag. Thehastagfunction is most often used as part of the condition part of theiffunction. -
if(condition, truevalue)Check a condition and give
truevalueif the condition is true.Parameters
conditionThe condition to check.
truevalueThe value to use if condition is true.
Return Value
Returns
truevalueifconditionis true, otherwise returns --.Discussion
This function allows you to include or exclude values from a set based on a condition, thus transforming or creating a subset of the data.
Workout Level Examples
if(cadence>0 and cadence<50, cadence)Gives all cadence values that are greater than zero but less than 50.
Gives the average of all power values that exceed the sFTP for that workout.
Athlete Level Examples
Gives the workout date & time for all workouts that have maximum power over 1000W.
See Also
-
if(condition, truevalue, falsevalue)Check a condition and give
truevalueif the condition is true, orfalsevalueif the condition is false.Parameters
conditionThe condition to check.
truevalueThe value to use if condition is true.
falsevalueThe value to use if condition is false.
Return Value
For each value in
condition, returnstruevalueif is true, otherwise returnsfalsevalue.Discussion
This function allows you to choose values from two different data sets depending on a condition.
Athlete Level Examples
if(date < today, tss, plannedtss)Gives completed TSS values for workouts prior to today, but planned TSS values for workouts today or in the future.
See Also
-
isvalid(numbers)For one or more numbers, returns one (true) if it is valid, or zero (false) if it is not a number (na).
Parameters
numbersThe numbers to check.
Return Value
Returns 1 if the number is a valid number, otherwise 0.
Discussion
In some cases a number is missing, which is different than zero. For example, if a bike workout doesn't have a power channel, then the average power is not zero, it is missing. Numbers that are missing are equal to the constant na which stands for not available or not a number.
Date
-
date(value)Converts a weekvalue, monthvalue, or yearvalue to a date.
Parameters
valueA weekvalue, monthvalue, or yearvalue.
Return Value
A datevalue.
Discussion
If you convert a datevalue using a
weekvalue,monthvalueoryearvaluefunction, you can convert it back to a datevalue. This can be useful if you want to do arithmetic on a weekvalue, monthvalue or yearvalue and convert back to a date.Examples
Gives the date of the first day of next week. You pick which day of week is first (Sunday, Monday, ...) using WKO4 Preferences.
date(trunc(monthval(today))+1)-1Gives the date of the last day of the current month.
Gives the first date of the current year.
date(trunc(yearval(today))+1)-1Gives the last date of the current year.
-
date(year, month, day)Creates a date value using the month, day and year components.
Parameters
yearFour digit year number.
dayDay number starting with 1.
monthMonth number between 1 and 12.
Return Value
A date value corresponding to the values year, month, day.
Discussion
When you enter a date value like 4/5/2016 into WKO4, the date is interpreted according to the current region settings on your computer, so that could mean April 5th or May 4th. The
datefunction eliminates that ambiguity and is interpreted the same way regardless of region settings. Dates in WKO4 are stored internally as days since January 1, 1901. WKO4 displays a date using the computer's regional settings when using the units "date" otherwise it shows a fractional number.Examples
date(2016, 4, 7)Gives the date April 7, 2016, but the formatting depends on the units selected. In North America WKO4 will show 4/7/2016 if the units are date. If the units are not date then it will show the number 42,100.
date(2015, month(today), day(today))Gives the date in 2015 corresponding to today's month and day.
Gives the number of days since July 1, 2015.
date({2015:2017}, 12, 31)Gives a set of three dates, December 31 in the years 2015, 2016 and 2017.
-
day(datevalues)Get the day of month for one or more dates.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the day of month (a number between 1 and 31) for
datevalues.Examples
Gives the day of month for today.
Gives the day of month for yesterday, today, and tomorrow.
Athlete Level Examples
Gives the day of month for the workout date of all the workouts int the selected range.
-
dayofweek(date)Gives the day of week as an offset to first day of the week according to the Preferences setting.
Parameters
dateOne or more date values.
Return Value
A number between 0 and 6.
Discussion
The first day of the week is set in the WKO4 Preferences. For each date, this function gives the number of days after the first day of the week.
-
formatdate(datevalues, format)Formats date/time values using a custom format specification string. The string can contain a combination of these variables:
yy
Two digit year with leading zero.
yyyy
Four digit year
M
Month number without leading zero.
MM
Month number with leading zero
MMM
Abbreviated month name
MMMM
Full month name
d
Day of month wihout leading zero.
dd
Day of month with leading zero
EEE
Abbreviated day of week.
EEEE
Full day of week.
h
Hour without leading zero, 0-12
hh
Hour with leading zero, 00-12
H
Hour without leading zero, 0-24
HH
Hour with leading zero, 00-24
m
Minute without leading zero.
mm
Minute with leading zero.
s
Seconds without leading zero.
ss
Seconds with leading zero.
a
AM or PM
You can also include other text in the format string by enclosing it in single quotes. Two single quotes in a row will be translated as one single quote. There are a few characters that do not need to be enclosed in single quotes:
space : - . / ,
Parameters
datevaluesA single date, or set of date/time values.
formatA format specification string.
Return Value
Returns a string with the formatted date/time.
Examples
formatdate(today, "EEEE, MMMM dd, yyyy")Gives todays date formatted similar to "Saturday, August 13, 2016".
formatdate(date, "EEE MM/dd/yy hh:mm:ssa")Gives the date/time of a workout formatted similar to "Fri 08/12/16 01:21:06PM".
formatdate(date, "yyyy-MM-dd HH:mm:ss")Gives the date/time of a workout formatted similar to "2016-08-12 13:21:06".
formatdate(date, "h:mm 'o''clock'")Gives the date/time of a workout formatted similar to "1:21 o'clock".
-
month(datevalues)Get the month number for one or more dates.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the month number (a number between 1 and 12) for
datevalues.Examples
Gives the number 8.
Gives the month number for today, a number between 1 and 12.
Athlete Level Examples
Gives the month number for the workout date of all the workouts int the selected range.
-
monthval(datevalues)Takes a date value and converts it to a month value.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the month value for
datevalues.Discussion
The
monthvalfunction converts the date value to a fractional number of months since January 1, 1901. This is different than themonthfunction which only gives a number between 1 and 12. WKO4 displays a month value using the computer's regional settings when using the units "month" otherwise it shows a fractional number.Examples
Gives "November 2015" if the units are set to month, otherwise it gives the number 1,378.0666667.
trunc(monthval(date(2015, 11, 3)))Gives "November 2015" if the units are set to month, otherwise it gives the number 1,378.
Gives the date of the first day of the current month.
date(trunc(monthval(today))+1)Gives the date of the first day of the next month.
date(trunc(monthval(today))+1)-1Gives the date of the last day of the current month.
-
startofmonth(datevalues)Get the date of first day of the month.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns a date value for the first day of the month for each datevalue.
-
startofweek(datevalues)Get the month number for one or more dates.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the date of the first day of the week for each date in
datevalues.Discussion
This could be useful when creating a date range in the RHE.
Examples
Gives the date of the first day in the current week.
startofweek(today) + 6Gives the date of the last day in the current week.
startofweek(today) + 7Gives the date of the first day in the next week.
-
startofyear(datevalues)Get the date of the start of the year that contains
datevalues.Parameters
datevaluesA single date, or set of dates.
Return Value
Returns January 1st of the year specified in
datevalues.Discussion
This could be useful when creating a date range in the RHE.
Examples
Gives the first day of the current year.
Gives the last date of the current year.
startofyear(startofyear(today)-1)Both give the first day of the previous year.
startofyear(today)-1Gives the last day of the previous year.
-
week(datevalues)Get the week number for one or more dates.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the week number (a number between 1 and 53) for
datevalues.Discussion
This function gives a number according to the ISO-8601 standard. It is a count of weeks starting on Monday, where the first week of the year is the week that contains that year's first Thursday (a minimum of four days in the first week).
Athlete Level Examples
month(date)Gives the month number for the workout date of all the workouts int the selected range.
-
weekval(datevalues)Takes a date value and converts it to a week value.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the week value for
datevalues.Discussion
The
weekvalfunction converts the date value to a fractional number of weeks since January 1, 1901. Whereas theweekfunction gives a number between 1 and 53, theweekvalfunction gives a month for a specific date to include the year, and then formats the number as "month yyyy" such as "March 2015".Examples
Gives "11/8/15" if the units are set to week, otherwise if the units are blank it gives the number 5,993.857.
trunc(weekval(date(2015, 11, 8)))Gives "11/2/15" (a Monday) if the units are set to week, otherwise if the units are blank it gives the number 5,993. The
truncfunction removes the fractional part of the week. -
year(datevalues)Get the year number for one or more dates.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the year number, a four digit number like 2016.
Examples
Gives the number 2017.
Gives the four digit year number for today.
Athlete Level Examples
Gives the year number for the workout date of all the workouts int the selected range.
-
yearval(datevalues)Takes a date value and converts it to a year value.
Parameters
datevaluesA single date, or set of dates.
Return Value
Returns the year value for
datevalues.Discussion
The
yearvalfunction converts the date value to a fractional number of years since January 1, 1901. Whereas theyearfunction gives a number between 1980 and 2099, theyearvalfunction gives a the fractional number of years since January 1, 1901.Examples
Gives 2015 if the units are set to year, otherwise if the units are blank it gives the number 114.852.
trunc(yearval(date(2015, 11, 8)))Gives 2015 if the units are set to year, otherwise if the units are blank it gives the number 114. The
truncfunction removes the fractional part of the year.
Logical
-
logicaland(lhs, rhs)Evaluates a logical and, same as the
andand&&operators.Parameters
lhsLeft hand side operand.
rhsRight hand side operand.
Return Value
Returns 1 if both
lhsandrhsare nonzero, otherwise returns 0.Discussion
The
andand&&operators both use thelogicalandfunction. So that means that bothdate>today and plannedtss>100anddate>today && plannedtss>100are equivalent tologicaland(date>today, plannedtss>100). The logicaland function and equivalent operators are most often used with theiffunction to create a compound condition, for example "if this and that".Athlete Level Examples
if(logicaland(date>today, plannedtss>100), plannedtss)Gives the planned TSS for all workouts after today and have planned TSS greater than 100.
-
logicalor(lhs, rhs)Evaluates a logical or, same as the
orand||operators.Parameters
lhsLeft hand side operand.
rhsRight hand side operand.
Return Value
Returns 1 if either
lhsorrhsare nonzero, otherwise returns 0.Discussion
The
orand||operators both use thelogicalorfunction. So that means that bothhastag("race") or has(title, "race")andhastag("race") || has(title, "race")are equivalent tologicalor(hastag("race"), has(title, "race")). The logicalor function and equivalent operators are most often used with theiffunction to create a compound condition, for example "if this or that".
Mathematical
-
abs(numbers)Calculates the absolute value of each number value in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The absolute value of each value in
numbers.Examples
abs(3)3
abs(-3)3
abs({1,-1,0,3,-3}){1, 1, 0, 3, 3}
The absolute value of every value in
elevation.See Also
-
add(lhs, rhs) -
divide(lhs, rhs) -
ln(numbers)Gives the natural log of
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The natural log of
numbers. -
log(numbers, base)Gives the base
baselogarithm ofnumbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
baseThe base of the logarithm.
Return Value
The log of
numbers. -
log10(numbers)Gives the base 10 logarithm of
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The log of
numbers. -
multiply(lhs, rhs) -
power(lhs, rhs)Raise lhs to the power rhs.
Parameters
lhsA single number, a set of numbers, or a numeric variable.
rhsA single number, a set of numbers, or a numeric variable.
Return Value
The value of lhs raised to the rhs power.
See Also
-
sign(numbers) -
sqrt(numbers) -
subtract(lhs, rhs)Subtracts rhs from lhs.
Parameters
lhsA single number, a set of numbers, or a numeric variable.
rhsA single number, a set of numbers, or a numeric variable.
Return Value
The difference of lhs minus rhs.
See Also
Power-Duration
-
fibertype(meanmaxcurve)Get the estimated % type I muscle fiber area (slow-twitch) based on a mean maximal curve.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
The estimated % type I muscle fiber area.
Discussion
This function gives the percent of type I fast twitch musle fiber for the time period included in
meanmaxcurve. It gives a single number for a meanmax curve, where the quality of the estimate is increased by including a representative sample of workouts in thatmeanmaxcurve. Read the Power-Duration Metrics e-book.Examples
Gives the percent of type I slow-twitch muscle fiber for the meanmax curve.
-
fibertype(meanmaxcurve, lookback)Get daily estimated % type I muscle fiber area (slow-twitch) based on a rolling window of
lookbackdays.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).lookbackThe number of backward looking days.
Return Value
Daily estimated % percentages of type I slow-twitch muscle fiber, based on a rolling window of
lookbackdays.Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the percentage of type II fibers. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
frc(meanmaxcurve)Get the Functional Reserve Capacity.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).Return Value
The Functional Reserve Capacity value in kJ or kJ/kg for
meanmaxcurve.Discussion
This function gives the Functional Reserve Capacity for the time period included in the
meanmaxcurve. It gives a single number for a meanmax curve, where the quality of the estimate is increased by including a representative sample of workouts in thatmeanmaxcurve. Read the Power-Duration Metrics e-book.Examples
Gives the Functional Reserve Capacity in kJ.
Gives the Functional Reserve Capacity normalized to weight in kJ/kg.
-
frc(meanmaxcurve, lookback)Get daily the Functional Reserve Capacity based on a rolling window of
lookbackdays.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).lookbackThe number of backward looking days.
Return Value
Gives daily Functional Reserve Capacity values, one for each date in the selected RHE date range.
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the FRC. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
frccurve(meanmaxcurve)Generate a power-duration curve based on
meanmaxcurveshowing only the FRC component.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).Return Value
A power-duration curve showing modeled power derived from FRC, at a variety of durations.
Discussion
Read the Power-Duration Metrics e-book.
-
frce(meanmaxcurve)Get the estimated error calculating Functional Reserve Capacity.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight.Return Value
Estimated error as +/- kJ orkJ/kg.
Discussion
This function calculates the estimated error when modeling FRC, in +/- kJ or kJ/kg. Read the Power-Duration Metrics e-book.
-
ftp(meanmaxcurve)Get the modeled Functional Threshold Power.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).Return Value
The Functional Threshold Power value in W or W/kgfor
meanmaxcurve.Discussion
This function gives the Functional Threshold Power for the time period included in the
meanmaxcurve. It gives a single number for a meanmax curve, where the quality of the estimate is increased by including a representative sample of workouts in thatmeanmaxcurve. Read the Power-Duration Metrics e-book.Examples
Gives modeled FTP in W.
Gives modeled FTP normalized for body weight in W/kg.
-
ftp(meanmaxcurve, lookback)Get daily modeled FTP.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).lookbackThe number of backward looking days.
Return Value
Gives daily Functional Threhold Power values, one for each date in the selected RHE date range.
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the FTP. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
ftpcurve(meanmaxcurve)Generate a power-duration curve based on
meanmaxcurveshowing only the FTP component.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).Return Value
A power-duration curve showing modeled power derived from FTP, at a variety of durations.
Discussion
Read the Power-Duration Metrics e-book.
-
ftpe(meanmaxcurve)Get the estimated error calculating Functional Threshold Power.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
One daily modeled FTP number for each date in the selected RHE date range.
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the vo2max. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
pdcurve(meanmaxcurve)Generate a power-duration curve based on
meanmaxcurve.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
A power-duration curve showing modeled power at a variety of durations.
Discussion
Read the Power-Duration Metrics e-book.
-
pdcurve(standardindex, gender)Generate a power-duration curve in power/weight based based on standards for the specified gender.
Parameters
standardindexA number from 0 through 7, or one of the following: "untrained", "fair", "moderate", "good",
"verygood", "excellent", "exceptional", "worldclass".
genderEither "male" or "female".
Return Value
A power-duration curve showing modeled power for different standards.
Discussion
Read the Power-Duration Metrics e-book.
Examples
pdcurve("excellent", "female")Gives a power-duration curve standard line for "excellent" females.
-
pdprofile(meanmaxcurve)Generate a power-duration profile curve.
Parameters
standardindexA number from 0 through 7, or one of the following: "untrained", "fair", "moderate", "good",
"verygood", "excellent", "exceptional", "worldclass".
genderEither "male" or "female".
Return Value
A power-duration curve showing modeled power for different standards.
See Also
-
phenotype(meanmaxcurve)Get rider phenotype based on
meanmaxcurve.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
The phenotype of the athlete: "Sprinter", "Pursuiter", "TTer", or "All-rounder".
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the vo2max. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
pmax(meanmaxcurve)Get Pmax in W or W/kg.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).Return Value
The athlete's Pmax for the selected RHE date range.
Discussion
Gives the modeled maximum power. Read the Power-Duration Metrics e-book.
-
pmax(meanmaxcurve, lookback)Get daily Pmax in W or W/kg.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).lookbackThe number of backward looking days to include when calculating each daily Pmax.
Return Value
One daily Pmax number for each date in the selected RHE date range.
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the Pmax. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
pmaxe(meanmaxcurve)Get the estimated error calculating Pmax.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
The estimated error for Pmax in the selected RHE date range.
Discussion
This function calculates the esimated error in Pmax for the date range in +/- W. Read the Power-Duration Metrics e-book.
-
sumsqr(meanmaxcurve)Gives the sum of squares error fitting
meanmaxcurveto the power-duration model.Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).Return Value
The sum of squares error, where a lower number indicates a better fit.
See Also
-
tte(meanmaxcurve)Get Time to Exhaustion in seconds.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
The athlete's Time to Exhaustion for the selected RHE date range.
Discussion
Gives the modeled Time to Exhaustion. Read the Power-Duration Metrics e-book.
-
tte(meanmaxcurve, lookback)Get daily Time to Exhaustion in seconds.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power)ormeanmax(power/weight).lookbackThe number of backward looking days to include when calculating each daily Pmax.
Return Value
One daily TTE number for each date in the selected RHE date range.
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the Pmax. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book. -
vo2max(meanmaxcurve)Get VO2max in L/min.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
The athlete's VO2max for the selected RHE date range.
Discussion
Gives the estimated VO2max for the selected date range.Read the Power-Duration Metrics e-book.
-
vo2max(meanmaxcurve, lookback)Get daily VO2max in L/min.
Parameters
meanmaxcurveMean maximal power curve data, usually
meanmax(power).lookbackThe number of backward looking days to include when calculating each daily vo2max.
Return Value
One daily VO2max number for each date in the selected RHE date range.
Discussion
This function builds a meanmax curve for every date in the selected RHE date range, where each meanmax curve is comprised of the previous
lookbackdays. Then from each daily meanmax curve it calculates the vo2max. Typical numbers to use forlookbackare between 30 and 90; larger numbers are chosen to capture bests at the largest variety of durations, but smaller numbers are used to be more sensitive to detraining. Read the Power-Duration Metrics e-book.
Rounding
-
ceil(numbers)Calculate the ceiling of each value in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The smallest integer greater than or equal to each value in
numbers. -
floor(numbers)Calculate the floor of each value in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The largest integer less than or equal to each value in
numbers. -
frac(numbers)Get the fractional part of each value in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The fractional part of a number with the integer portion removed.
See Also
-
round(numbers)Round each value in
numbersto the nearest integer.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The numbers rounded to the nearest integer.
See Also
-
round(numbers, places)Round each value in
numbersto the specified number ofplaces.Parameters
numbersA single number, a set of numbers, or a numeric variable.
placesPosition to round, where negative is to the right of the decimal point.
Return Value
The numbers rounded to the specified number of places.
See Also
-
trunc(numbers)Truncate each value in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The integral part of a number with any fractional digits removed
Selection
-
athleterange(fromdate, todate, expression)Evaluates
expressionusing the date range given byfromdatethroughtodateoverriding the date selection in the RHE.Parameters
fromdateStarting date of the date range.
todateEnding date of the date range.
expressionThe expression to evaluate.
Return Value
The result of
expression.Discussion
At the athlete level, the
athleterangefunction allows you to override the date range in the RHE. At the workout level you can useathleterangeto evaluate athlete level expressions.Examples
athleterange(date(2017,2,23), date(2017,3,17), avg(tss))The average TSS for the explicit date range, regardless of what's selected in the RHE.
athleterange(today - 30, today, sum(distance))The total distance in the last 30 days.
athleterange(date-89, date, ftp(meanmax(power)))At the workout level, gives the mFTP as of the current workout. At the athlete level, gives mFTP numbers as of each workouts in the current range.
-
first(values, count)Returns the first
countvalues invalues.Parameters
valuesA single number, a set of numbers or strings, or a variable.
countThe count of values to return.
Return Value
The
countfirst values invalues.Discussion
The
firstfunction returns (X,Y) pairs ifvaluescontains (X,Y) pairs. When you graph an (X,Y) pair on a chart you get a single point, therefore you get a point for each of the first values found. If you include an (X,Y) pair in a report you'll see the value for X in the leftmost column.Examples
first({5,7,3,2,4,9,8}, 3){5, 7, 3}
first({"Yankee","Bravo","Zulu","Alpha","Foxtrot"},3){"Yankee", "Bravo", "Zulu"}
See Also
-
greatest(values, count)Returns the greatest
countvalues invalues.Parameters
valuesA single number, a set of numbers or strings, or a variable.
countThe count of values to return.
Return Value
The
countgreatest values invalues.Discussion
The
greatestfunction returns (X,Y) pairs ifvaluescontains (X,Y) pairs. When you graph an (X,Y) pair on a chart you get a single point, therefore you get a point for each of the greatest values found. If you include an (X,Y) pair in a report you'll see the value for X in the leftmost column. -
last(values, count)Returns the last
countvalues invalues.Parameters
valuesA single number, a set of numbers or strings, or a variable.
countThe count of values to return.
Return Value
The
countlast values invalues.Discussion
The
lastfunction returns (X,Y) pairs ifvaluescontains (X,Y) pairs. When you graph an (X,Y) pair on a chart you get a single point, therefore you get a point for each of the last values found. If you include an (X,Y) pair in a report you'll see the value for X in the leftmost column.See Also
-
least(values, count)Returns the least
countvalues invalues.Parameters
valuesA single number, a set of numbers or strings, or a variable.
countThe count of values to return.
Return Value
The
countleast values invalues.Discussion
The
leastfunction returns (X,Y) pairs ifvaluescontains (X,Y) pairs. When you graph an (X,Y) pair on a chart you get a single point, therefore you get a point for each of the least values found. If you include an (X,Y) pair in a report you'll see the value for X in the leftmost column. -
max(values)Returns the greatest values in
values.Parameters
valuesA single number, a set of numbers or strings, or a variable.
Return Value
The greatest values in
values.Discussion
The
maxfunction returns ( ,Y) with no X value. When you graph ( ,Y) on a chart you'll get a horizontal line.Examples
max({5,7,3,2,4,9,8})9
Gives the maximum TSS number as a horizontal line.
Gives the maximum power number as a horizontal line.
-
max(values, groupby)Returns the maximum values in
valuesgrouped bygroupby.Parameters
valuesA single number, a set of numbers or strings, or a variable.
groupbyA grouping identifier for each value in
values.Return Value
The greatest values in
valuesfor each unique value ingroupby.Discussion
The
maxfunction will first organizevaluesinto groups where each value ingroupbyrepresents a group. Then it finds the maximum value in each group.See Also
-
min(values)Returns the least value in
values.Parameters
valuesA single number, a set of numbers or strings, or a variable.
Return Value
The least value in
values.Discussion
The
minfunction returns ( ,Y) with no X value. When you graph ( ,Y) on a chart you'll get a horizontal line. -
min(values, groupby)Returns the minimum values in
valuesgrouped bygroupby.Parameters
valuesA single number, a set of numbers or strings, or a variable.
groupbyA grouping identifier for each value in
values.Return Value
The minimum values in
valuesfor each unique value ingroupby.Discussion
The
minfunction will first organizevaluesinto groups where each value ingroupbyrepresents a group. Then it finds the minimum value in each group.See Also
-
workoutrange(fromtime, totime, expression)Evaluates
expressionusing the time range given byfromtimethroughtotimeoverriding the time selection in the RHE.Parameters
fromtimeStarting time of the date range.
totimeEnding time of the date range.
expressionThe expression to evaluate.
Return Value
The result of
expression.Discussion
The
workoutrangefunction allows you to override the date range in the RHE.
Smoothing
-
ewma(numbers, factor)Smooths the numbers using Exponential Weighted Moving Average using the given smoothing
factor.Parameters
numbersA set of numbers.
factorSmoothing factor.
Return Value
Smoothed
numbers. -
filter(numbers, kernel, sides) -
gaussian(sigma, length) -
isef(factor, length) -
tl(numbers, constant)Calculates training load given TSS numbers and a decay
constant.Parameters
numbersA set of numbers.
constantDecay constant.
Return Value
Training load data.
See Also
Sorting and Reshaping
-
cross(values, values)No longer used. You can use cartesian coordinate notation (X, Y) instead.
-
delta(numbers)Gives the difference between each each number minus the previous number.
Parameters
numbersA list of numbers.
Return Value
A list of numbers.
See Also
-
noinvalid(numbers)Removes all occurrences of na in numbers.
Parameters
numbersA set of zero or more numbers.
Return Value
Returns numbers with na removed.
See Also
-
nozero(numbers) -
resample(values, newrate)Resamples time series data.
-
rev(values)Reverses the order of values.
Parameters
valuesA set of zero or more values.
Return Value
Returns values in reverse order.
-
shift(numbers, positions) -
sort(values)Sorts a list of values in ascending order.
Parameters
valuesA set of zero or more values.
Return Value
Returns sorted values.
Examples
sort({5,3,8,0,na,7,6,2,4,1})Gives {0,1,2,3,4,5,6,7,8,--}.
Sorts the scatter graph of (power,cadence) in ascending order by cadence.
-
sortd(values)Sorts a list of values in descending order.
Parameters
valuesA set of zero or more values.
Return Value
Returns sorted values.
-
sortx(pairs)Sorts a list of pairs in ascending order of X.
Parameters
pairsA set of zero or more pairs.
Return Value
Returns sorted pairs.
Examples
Sorts the scatter graph of (power,cadence) in ascending order by power.
-
sortxd(pairs)Sorts a list of pairs in descending order of X.
Parameters
pairsA set of zero or more pairs.
Return Value
Returns sorted values.
-
string(values)Converts number values to string values.
Parameters
valuesA list of numbers.
Return Value
A list of strings.
Discussion
If you use the + operator to add numbers you get the result of adding the two, such as adding 2 + 3 you get 5. If you want to concatenate two or more values, then you need to convert them to strings first. For example, if you want to take 39 + 23 and get 3923 you first need to convert 39 and 23 to strings.
-
unique(values)Gives only the unique values from a list.
Parameters
valuesA list of strings or numbers.
Return Value
A list of values with duplicates removed.
Examples
Lists all the tags used in the currently selected workout or workout range.
See Also
-
xx(pairs)Takes a set of (X,Y) values and copies X to Y to become (X,X).
Parameters
pairsA set of X,Y pairs.
Return Value
Returns (X,Y) pairs as (X,X).
Examples
xx((37,52))Takes the point (37,52) and changes it to (37,37).
meanmax((power)*xx((meanmax((power))/1000
Gives work expended at each point on a mean maximal power curve, where kJ = watts * seconds / 1000.
See Also
-
yx(pairs)Takes a set of X,Y vales and exchanges X and Y to be come Y,X.
Parameters
pairsA set of X,Y pairs.
Return Value
Returns (X,Y) pairs as (Y,X).
Examples
yx((37,52))Takes the point (37,52) and changes it to (52,37).
Gives mean maximal power with power on the X axis and duration on the Y axis.
See Also
Statistical
-
avg(numbers)Calculates the average of the numbers in
numbersby taking their sum and dividing by their count.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The average of the values in
numbers. -
bin(values, binsize)Creates a histogram by placing values into specified bins and accumulating duration for each value.
Parameters
valuesThe values to place into bins.
binsizeThe size of all bins.
Return Value
A set of values representing the duration in each bin.
Discussion
Each bin is uniform in size as specified.
-
bin(values, binvalues)Creates a histogram by placing values into specified bins and accumulating duration for each value.
Parameters
valuesThe values to place into bins.
binvaluesA set of values representing cut points for the bins.
Return Value
A set of values representing the duration in each bin.
Discussion
Each bin contains the durations for values up to but not equal the value specified. There will be one bin for each value in
binvaluesplus one bin. For example, ifbinvaluesis{100, 200, 300}thenvalueswill be placed into 4 bins as follows: less than 100, 100 to less than 200, 200 to less than 300, and 300 up.Examples
Creates 3 cadence bins: below 85, 85 up to 95, and 95 and above.
bin(power, {162, 184, 206, 228})Bins power using a set of wattage numbers.
bin(power, {0.81, 0.92, 1.03, 1.14} * sftp)Bins power using a set of percentages of sFTP.
sum(bin(heartrate, {0.82/3, 0.82*2/3, 0.82, (0.82+0.89)/2, 0.89, 0.94, 1.00, 1.03, 1.06} * thr) / 3600 * {20, 30, 40, 50, 60, 70, 80, 100, 120, 140})"hrTSS"Calculates hrTSS using Friel bike heart rate levels.
-
bin(values, levelsname)Creates a histogram by placing values into specified bins and accumulating duration for each value.
Parameters
valuesThe values to place into bins.
levelsnameThe name of a training levels system.
Return Value
A set of values representing the duration in each bin.
Discussion
The bins are determined by training levels. When deciding into which level a value should be placed, WKO4 checks to see if the value is >= the "from", and < the "to". Thus, if one level is 110.0 to 131.0 and the next level is 131.0 to 144.0, then the value 131.0 will be placed into the second level, not the first.
Power levels:
- "cogganoptimized"
- "cogganclassic"
Heart Rate Levels:
- "cogganhr"
- "frielhr"
- "usachr"
- "bcfhr"
Running Pace Levels:
- "frielpace"
- "pzipace"
-
count(values) -
count(values, groupby) -
cumsum(numbers)Gives the cumulative totals of the addition of all the values in the set of
numbers.Parameters
numbersA set of numbers.
Return Value
The sum of
numbers.Examples
cumsum({1,2,3,4,5,6,7,8,9,10})Gives the set {1,3,6,10,15,21,28,36,45,55}.
Gives cumulative distance, same as the variable elapseddistance.
cumsum(power * deltatime) / 1000Gives cumulative work in kJ.
cumsum(if(_elevation-shift(_elevation,1)>0,_elevation-shift(_elevation,1)))Gives cumulative climbing.
See Also
-
length(values)Gives the count of all values in
numbersincluding zeroes and invalid.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The count of the values in
numbers. -
li(pairs, numbers)Finds Y values for a given X value using linear interpolation if necessary.
Parameters
pairsA set of X,Y pairs.
numbersA single number or set of numbers representing X values for which you wish to find the corresponding Y values.
Return Value
A set of Y values corresponding to the X values given in
numbers.Discussion
Linear interpolation can be helpful to find the exact or approximate Y value using the points nearest the specified X values.
Examples
li(elapseddistance, 0:10:00)At the workout level, gives the distance at 10 minutes.
li(yx(metric(elapseddistance)),40.0)At the workout level, gives the elapsed duration at 40km.
li(pdcurve(meanmax(power)),0:20:00)*0.92Gives 92% of the modeled 20 minute power.
li(pdcurve(meanmax(power)),{60,360,1200})Gives modeled power at 1min, 5min, and 20min.
li(yx(pdcurve(meanmax(power))),last(sftp,1)*1.2)Gives modeled duration at 120% of sftp.
-
meanmax(pairs)Searches pairs for durations with maximum average, and creates a mean maximal curve.
Parameters
pairsA set of pairs, usualy having elapsedtime, elapseddistance, or date for the x value.
Return Value
A mean maximal curve, which is a set of pairs with duration as x and average as y.
Discussion
A mean maximal search finds continuous durations with the highest average.
Examples
meanmax(power)Mean maximal power curve
meanmax(power/weight)Mean maximal power to weight curve.
meanmax(tss)Mean maximal tss curve.
meanmax(if(cumsum(bikepower*deltatime)/1000>1500,bikepower))Mean maximal power curve including power only after accumulating 1500kJ.
See Also
-
meanmax(pairs, duration)Calculates the absolute value of each number value in
numbers.Parameters
pairsA set of pairs, usualy having elapsedtime, elapseddistance, or date for the x value.
durationOne or more numbers specifying a specific duration to search for.
Return Value
The mean maximal for each duration specified.
Examples
Gives the best average power for a continuous 20 minute (1200 seconds) duration.
Gives the best 10 minute (600 seconds) pace.
meanmax(if(_elevation-shift(_elevation,1)>0,metric(_elevation-shift(_elevation,1))/deltatime*3600,0),300)Searches for the 5 minute period with the highest average VAM.
metric(60/greatest(meanmax((metric(elapseddistance),runspeed), 5.0), 3))Gives the 3 fastest 5K run pace in min/km.
-
meanmaxfrom(pairs, duration)Searches for the begin time offset for the mean maximal value.
Parameters
pairsA set of pairs, usualy having elapsedtime, elapseddistance, or date for the x value.
durationOne or more numbers specifying a specific duration to search for.
Return Value
The beginning elapsed time for the mean maximal for each duration specified.
Examples
meanmaxfrom(power, 0:20:00)Gives the start time of the 20 minute duration with the highest average power.
-
meanmaxgaps(pairs) -
meanmaxgaps(pairs, duration) -
meanmaxto(pairs, duration)Searches for the end time offset for the mean maximal value.
Parameters
pairsA set of pairs, usualy having elapsedtime, elapseddistance, or date for the x value.
durationOne or more numbers specifying a specific duration to search for.
Return Value
The ending elapsed time for the mean maximal for each duration specified.
Examples
Gives the end time of the 20 minute duration with the highest average power.
-
pstddev(numbers)Calculates the population standard deviation of numbers.
Parameters
numbersA set of numbers.
Return Value
The population standard deviation.
Examples
pstddev({1,2,3,4,5,6,7,8,9,10})Gives the number 2.8722813.
Gives the population standard deviation of power data.
See Also
-
pvariance -
recordingrateGets the recording rate of time series data.
-
slr(numbers)Calculates the simple linear regression for the values in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The absolute value of each value in
numbers. -
slrb(numbers)Calculates the Y-intercept of the simple linear regression for the values in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The Y-intercept of the simple linear regression
-
slrm(numbers)Calculates the slope of the simple linear regression for the values in
numbers.Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The slope of the simple linear regression.
-
slrrsq(numbers)Calculates the R² value for the simple linear regression. R² is a measure of how close the data are to the fitted regression line.
Parameters
numbersA single number, a set of numbers, or a numeric variable.
Return Value
The R² of the simple linear regression.
-
stddev(numbers)Calculates the sample standard deviation of numbers.
Parameters
numbersA set of numbers.
Return Value
The sample standard deviation.
Examples
stddev({1,2,3,4,5,6,7,8,9,10})Gives the number 3.0276504.
Gives the sample standard deviation of power above sFTP.
See Also
-
sum(numbers) -
sum(numbers, groupby)Gives the total of the addition of all the values in the set of
numbers, grouped bygroupby.Parameters
numbersA set of numbers.
periodA period identified by "day", "week", "month" or "year".
Return Value
Count of values grouped by groupby.
See Also
-
variance
Training Levels
-
levelcount(levelsname) -
levelfrom(levelsname, index)Gives the low limit of a training level.
Parameters
levelsnameThe name of a training levels system.
indexThe index of the level.
Return Value
The low limit of a training level.
Discussion
The first level in any system begins with
index0. The levels you can use for thelevelsnameparameter are as follows.Power levels:
- "cogganoptimized"
- "cogganclassic"
Heart Rate Levels:
- "cogganhr"
- "frielhr"
- "usachr"
- "bcfhr"
Running Pace Levels:
- "frielpace"
- "pzipace"
-
levelname(levelsname, index)Gives the name of a training level.
Parameters
levelsnameThe name of a training levels system.
indexThe index of the level.
Return Value
The name of a specific training level within the traning levels system.
Discussion
The first level in any system begins with
index0. The levels you can use for thelevelsnameparameter are as follows.Power levels:
- "cogganoptimized"
- "cogganclassic"
Heart Rate Levels:
- "cogganhr"
- "frielhr"
- "usachr"
- "bcfhr"
Running Pace Levels:
- "frielpace"
- "pzipace"
Examples
levelname("cogganclassic",1)Gives the name of the second Coggan Classic Power level, which is "Endurance".
-
levelto(levelsname, index)Gives the high limit of a training level.
Parameters
levelsnameThe name of a training levels system.
indexThe index of the level.
Return Value
The high limit of a training level.
Discussion
The first level in any system begins with
index0. The levels you can use for thelevelsnameparameter are as follows.Power levels:
- "cogganoptimized"
- "cogganclassic"
Heart Rate Levels:
- "cogganhr"
- "frielhr"
- "usachr"
- "bcfhr"
Running Pace Levels:
- "frielpace"
- "pzipace"
-
targetduration(levelindex, meanmaxcurve)Gives the target duration for a given level.
Parameters
levelindexThe index of the level, a number between 0 and 5.
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
Target duratin for the level.
Discussion
The first level begins with
levelindex0.0
Extensive Aerobic (FTP)
1
Intenisve Aerobic (FTP)
2
Max Aerobic (VO2 Max Intensive)
3
Extensive Anaerobic (FRC)
4
Intensive Anaerobic (FRC)
5
Max
Examples
targetduration(3,meanmax(power))Gives the target duration for level 3, Extensive Anaerobic (FRC).
-
targetname(levelindex)Gives the name of a target level.
Parameters
levelindexThe index of the level, a number between 0 and 5.
Return Value
The name of the specified level.
Discussion
The first level begins with
levelindex0.0
Extensive Aerobic (FTP)
1
Intenisve Aerobic (FTP)
2
Max Aerobic (VO2 Max Intensive)
3
Extensive Anaerobic (FRC)
4
Intensive Anaerobic (FRC)
5
Max
-
targetpower(levelindex, meanmaxcurve)Gives the target power for a given level.
Parameters
levelindexThe index of the level, a number between 0 and 5.
meanmaxcurveMean maximal power curve data, usually
meanmax(power).Return Value
Target power for the level.
Discussion
The first level begins with
levelindex0.0
Extensive Aerobic (FTP)
1
Intenisve Aerobic (FTP)
2
Max Aerobic (VO2 Max Intensive)
3
Extensive Anaerobic (FRC)
4
Intensive Anaerobic (FRC)
5
Max
Examples
targetpower(3,meanmax(power))Gives the target power for level 3, Extensive Anaerobic (FRC).
Units
-
english(numbers)Converts numbers to the English units system.
Parameters
numbersA set of numbers.
Return Value
Converted
numbers.Discussion
If the units of
numbersis one of the following, the value is converted to its English equivalent. Otherwise no conversion is applied.km
mi
min/km
min/mi
m
ft
kg
lb
N
lbf
km/h
mi/h
°C
°F
cm
in
Examples
If the default units system is metric, converts the temperature data channel from °C to °F.
See Also
-
metric(numbers)Converts numbers to the metric units system.
Parameters
numbersA set of numbers.
Return Value
Converted
numbers.Discussion
If the units of
numbersis one of the following, the value is converted to its metric equivalent. Otherwise no conversion is applied.mi
km
min/mi
min/km
ft
m
lb
kg
lbf
N
mi/h
km/h
°F
°C
in
cm
Examples
If the default units system is English, converts the workout distance data channel from mi to km.
See Also
All Functions
abs(numbers)acos(value)acosh(value)add(lhs, rhs)asin(value)asinh(value)atan(value)atan2(xvalue, yvalue)atanh(value)athleterange(fromdate, todate, expression)avg(numbers)bin(values, binsize)bin(values, binvalues)bin(values, levelsname)ceil(numbers)cos(radians)cosh(value)cot(radians)count(values)count(values, groupby)cross(values, values)csc(radians)cumsum(numbers)date(value)date(year, month, day)day(datevalues)dayofweek(date)deg2grad(degrees)deg2rad(degrees)delta(numbers)divide(lhs, rhs)english(numbers)ewma(numbers, factor)fibertype(meanmaxcurve)fibertype(meanmaxcurve, lookback)filter(numbers, kernel, sides)first(values, count)floor(numbers)formatdate(datevalues, format)frac(numbers)frc(meanmaxcurve)frc(meanmaxcurve, lookback)frccurve(meanmaxcurve)frce(meanmaxcurve)ftp(meanmaxcurve)ftp(meanmaxcurve, lookback)ftpcurve(meanmaxcurve)ftpe(meanmaxcurve)gaussian(sigma, length)grad2deg(gradians)greatest(values, count)has(string, substring)hastag(string)if(condition, truevalue)if(condition, truevalue, falsevalue)isef(factor, length)isvalid(numbers)last(values, count)least(values, count)length(values)levelcount(levelsname)levelfrom(levelsname, index)levelname(levelsname, index)levelto(levelsname, index)li(pairs, numbers)ln(numbers)log(numbers, base)log10(numbers)logicaland(lhs, rhs)logicalor(lhs, rhs)max(values)max(values, groupby)meanmax(pairs)meanmax(pairs, duration)meanmaxfrom(pairs, duration)meanmaxgaps(pairs)meanmaxgaps(pairs, duration)meanmaxto(pairs, duration)metric(numbers)min(values)min(values, groupby)month(datevalues)monthval(datevalues)multiply(lhs, rhs)noinvalid(numbers)nozero(numbers)pdcurve(meanmaxcurve)pdcurve(standardindex, gender)pdprofile(meanmaxcurve)phenotype(meanmaxcurve)pmax(meanmaxcurve)pmax(meanmaxcurve, lookback)pmaxe(meanmaxcurve)power(lhs, rhs)pstddev(numbers)pvariancerad2deg(radians)recordingrateresample(values, newrate)rev(values)round(numbers)round(numbers, places)sec(radians)shift(numbers, positions)sign(numbers)sin(radians)sinh(value)slr(numbers)slrb(numbers)slrm(numbers)slrrsq(numbers)sort(values)sortd(values)sortx(pairs)sortxd(pairs)sqrt(numbers)startofmonth(datevalues)startofweek(datevalues)startofyear(datevalues)stddev(numbers)string(values)subtract(lhs, rhs)sum(numbers)sum(numbers, groupby)sumsqr(meanmaxcurve)tan(radians)tanh(value)targetduration(levelindex, meanmaxcurve)targetname(levelindex)targetpower(levelindex, meanmaxcurve)tl(numbers, constant)trunc(numbers)tte(meanmaxcurve)tte(meanmaxcurve, lookback)unique(values)variancevo2max(meanmaxcurve)vo2max(meanmaxcurve, lookback)week(datevalues)weekval(datevalues)workoutrange(fromtime, totime, expression)xx(pairs)year(datevalues)yearval(datevalues)yx(pairs)
Variables
Alias Variables
-
aepfAverage Effective Pedal Force
Discussion
Average Effective Pedal Force (AEPF) is a calculation that estimates the force applied to the pedal for one complete revolution, often used in Quadrant Analysis charts. The aepf variable is a list of numbers corresponding to force applied to the pedal in Newtons (N).
-
cpvCircumferential Pedal Velocity
Discussion
Circumferential Pedal Velocity is a calculation that corresopnds to how fast the pedal moves around the circle it makes while pedaling and is often used in Quadrant Analysis charts. The cpv variable is a list of numbers corresponding pedal velocity in meters per second (m/s).
Required Data Channels
-
deltadistanceChange in elapsed distance
Discussion
The deltadistance variable is a list of numbers corresponding to the distance travelled between data records. It is a convenient equivalent to
delta(elapseddistance)and also toshift(elapseddistance,1)-elapseddistance.Required Data Channels
-
deltatimeChange in elapsed time
Discussion
The deltatime variable is a list of numbers corresponding to the time elapsed between data records. It is a convenient equivalent to
delta(elapsedtime)and also toshift(elapsedtime,1)-elapsedtime.Required Data Channels
-
ecpowerElevation corrected power
Discussion
The ecpower data channel is an alternative to
powerwhichelevationto normalize data collected at higher elevations to sea-level equivalent. Please read the article on elevation corrected power for more information how to use it. -
gpaleftLeft side gross power absorbed
Discussion
The gpaleft variable corresponds to the left side power in a pedal stroke that does NOT contribute to moving the bicycle forward. This data is available only for power meters that measure and record requires ANT+ pedaling metrics.
-
gparightRight side gross power absorbed
Discussion
The gparight variable corresponds to the right side power in a pedal stroke that does NOT contribute to moving the bicycle forward. This data is available only for power meters that measure and record requires ANT+ pedaling metrics.
-
gprleftLeft side gross power released
Discussion
The gparight variable corresponds to the left side power that contributes to moving the bicycle forward. This data is available only for power meters that measure and record requires ANT+ pedaling metrics.
-
gprrightLeft side gross power released
Discussion
The gparight variable corresponds to the right side power that contributes to moving the bicycle forward. This data is available only for power meters that measure and record requires ANT+ pedaling metrics.
-
kileftLeft side kurtotic index.
Discussion
Kurtotic index is the ratio of the maximum effective pedal force to the average effective pedal force during the power-producing phase of the pedal stroke. Requires ANT+ pedaling metrics.
-
kirightRight side kurtotic index.
Discussion
Kurtotic index is the ratio of the maximum effective pedal force to the average effective pedal force during the power-producing phase of the pedal stroke. Requires ANT+ pedaling metrics.
-
mepfleftLeft side maximum effective pedal force
Discussion
Maximum effective pedal force is the maximum pedaling force applied to the pedal that causes the crank to turn around a complete revolution and contributes to effectively moving the bike forward. Requires ANT+ pedaling metrics.
-
mepfrightRight side maximum effective pedal force
Discussion
Maximum effective pedal force is the maximum pedaling force applied to the pedal that causes the crank to turn around a complete revolution and contributes to effectively moving the bike forward. Requires ANT+ pedaling metrics.
-
rgradeRolling grade
Discussion
Rolling grade is a list of numbers corresponds to the grade for each data record, as opposed to
gradewhich is a single number corresponding to the average grade over a range. Rolling grade is calculated after some smoothing is applied toelevationto minimize obvious noise and measurement errors. The definition of grade is found on Wikipedia and other similar web resources. -
rngpRolling normalized graded pace
Discussion
Rolling normalized graded pace is a list of numbers corresponding to normalized graded pace for each data record. It estimates the pace that is equivalent to running on flat ground. By normalizing pace to flat ground you can compare efforts on different courses having different elevation profiles.
See Also
-
staminaDiscussion
Stamina is a measure of resistance to fatigue during prolonged-duration. Units are percent of maximum, i.e., 0-100%, although most individuals will fall in the 75 to 85 percent range.
Required Data Channels
Athlete Variables
-
ageAthlete age.
Discussion
The age variable corresponds to the athlete's age calculated using today's date and the athlete's birth date set on the Athlete Details tab.
-
atlAcute Training Load
Discussion
ATL is an exponentially weighted rolling average that corresponds to your recent or short-term training load based on
atlconstantdays. This variable is a shortcut for the expressiontl(tss,atlconstant). -
atlconstantAcute Training Load (ATL) constant
Discussion
The ATL constant is an exponential decay rate use calculate to acute (recent) training load. You can change the atlconstant variable by double-clicking ATL in the athlete bar at the top of the WKO4 main window. The default is 7 days.
Examples
Gives acute training load (ATL) based on the atlconstant for the current athlete.
-
cranklengthCrank arm length
Discussion
This variable is likely to be replaced in the future. It is recommended to avoid using it.
-
ctlChronic Training Load
Discussion
ATL is an exponentially weighted rolling average that corresponds to your longer-term training load based on
ctlconstantdays. This variable is a shortcut for the expressiontl(tss,ctlconstant). -
ctlconstantChronic Training Load (CTL) constant
Discussion
The CTL constant is an exponential decay rate use calculate to chronic (historical) training load. You can change the ctlconstant variable by double-clicking CTL in the athlete bar at the top of the WKO4 main window. The default is 42 days.
Examples
Gives acute training load (CTL) based on the ctlconstant for the current athlete.
-
genderAthlete gender
Discussion
The gender variable corresponds to the athlete's gender as entered on the Athlete Details tab. Possible values are either "male" or "female".
Examples
pdcurve("excellent", gender)Gives a power-duration curve standard line for "excellent" athletes based on the gender selected on the Athlete Details tab.
-
mhrHistorical maximum heart rate
Discussion
At the athlete level,
mhrcorresponds list of daily numbers corresponding to historical maximum heart rate. At the workout level,mhrgives the maximum heart rate as of the day of the workout. You can enter changes to maximum heart rate based on date using the Athlete Details tab. -
rampconstantNumber of days used to calculate ramp rate
Discussion
The rampconstant is a number of days used to calculate ramp rate, usually 7, 14, or 21. The ramp rate tells how quickly you are changing volume of training. The default is 21 days, meaning that ramprate gives the change in Chronic Training Load over a 3 week period.
Examples
(tl(tss,ctlconstant)-shift(tl(tss,ctlconstant),rampconstant))/(rampconstant/7)Calculates the weekly CTL ramp rate based on change over
rampconstantdays.See Also
-
ramprate -
sftpHistorical functional threshold power (FTP) setting
Discussion
At the athlete level,
sftpcorresponds list of daily numbers corresponding to historical FTP setting. At the workout level,sftpgives the FTP setting as of the day of the workout. You can enter changes to the FTP setting based on date using the Athlete Details tab. -
tcadenceHistorical threshold cadence
Discussion
At the athlete level,
tcadencecorresponds list of daily numbers corresponding to historical maximum heart rate. At the workout level,tcadencegives the maximum heart rate as of the day of the workout. You can enter changes to maximum heart rate based on date using the Athlete Details tab. -
thrHistorical threshold heart rate
Discussion
At the athlete level, mhr corresponds list of daily numbers corresponding to historical threshold heart rate. At the workout level, mhr gives the threshold heart rate as of the day of the workout. You can enter changes to threshold heart rate based on date using the Athlete Details tab.
-
tpaceHistorical threshold run pace
Discussion
At the athlete level, tpace corresponds list of daily numbers corresponding to historical threshold pace. At the workout level, tpace gives the threshold run pace as of the day of the workout. You can enter changes to threshold run pace based on date using the Athlete Details tab.
-
tsbTraining Stress Balance
Discussion
TSB is the difference between CTL and ATL shifted one day into the future, giving insight into an athlete's readiness to perform at peak. This variable is a shortcut for the expression
tl(tss,ctlconstant) - tl(tss,ctlconstant). -
tswimpaceHistorical threshold swim pace
Discussion
At the athlete level, tswimpace corresponds list of daily numbers corresponding to threshold swim pace. At the workout level, tswimpace gives the threshold swim pace as of the day of the workout. You can enter changes to threshold swim pace based on date using the Athlete Details tab.
-
weightHistorical body weight
Discussion
At the athlete level, mhr corresponds list of daily numbers corresponding to historical maximum heart rate. At the workout level, mhr gives the maximum heart rate as of the day of the workout. You can enter changes to maximum heart rate based on date using the Athlete Details tab.
Channel Variables
Channel variables can be prefixed with bike, run, swim, row, ski, other to make them specific to a sport type.
-
_elevationSmoothed elevation values.
Units
In metric elevation is given in meters, and in English it's given in feet.
-
balancePower balance
Discussion
Balance is the ratio of right leg contribution to power as a number between 0 and 1 as measured/recorded by a device.
-
cadenceDiscussion
Cadence is the number of complete cycles per minute as measured/recorded by a device. In cycling it is the number of 360 degree revolutions of the pedals. In running it is the number of left and right footfals (two steps) per minute.
-
effectivenessleftTorque effectiveness left side
Discussion
This is a Garmin pedaling metric as measured/recorded by a device. It is only available if both your power meter and recording device supports it.
-
effectivenessrightTorque effectiveness right side
Discussion
This is a Garmin pedaling metric as measured/recorded by a device. It is only available if both your power meter and recording device supports it.
-
elapseddistanceElapsed Distance
Discussion
This is a data channel giving the cumulative distance covered starting with zero, as measured/recorded by a device.
-
elapsedtimeA data channel (a set of numbers) that lists the cumulative duration for each data record. The expression max(elapsedtime) should return the same number as the expression elapsedduration
-
elevationElevation values as recorded by a device.
Units
In metric elevation is given in meters, and in English it's given in feet.
-
frontgearGives the number of teeth on the front chainring selected.
Discussion
The front gear selection is given by the number of teeth on the chainring.
See Also
-
heartrateHeart Rate
Discussion
This is the heart rate data channel giving the number of beats per minute as measured/recorded by a device.
-
hrvHeart Rate Variability
Discussion
This is a data channel giving the elapsed time between heart beats as measured/recorded by a device.
-
latitudeLatitude
Discussion
This is the degrees latitude data channel as measured/recorded by a device.
-
leftpcoDiscussion
Left side platform center offset as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
leftppendDiscussion
Left side power phase end angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
leftpppendDiscussion
Left side power phase peak start angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
leftpppstartDiscussion
Left side power phase peak start angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
leftppstartDiscussion
Left side power phase start angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
longitudeLongitude
Discussion
This is the degrees longitude data channel as measured/recorded by a device.
-
powerCycling or Running Power
Discussion
This is the power data channel as measured/recorded by a device.
-
reargearGives the number of teeth on the rear cog selected.
Discussion
The rear gear selection is given by the number of teeth on the rear cog.
See Also
-
riderpositionRider Position
Discussion
This is the rider position, either "standing" or "seated", as measured/recorded by a device that supports Garmin Cycling Dynamics.
-
rightpcoDiscussion
Right side platform center offset as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
rightppendDiscussion
Right side power phase end angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
rightpppendDiscussion
Right side power phase peak start angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
rightpppstartDiscussion
Right side power phase peak start angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
rightppstartDiscussion
Right side power phase start angle as measured/recorded by a device. Requires a device that supports Garmin Cycling Dynamics.
-
runsmoothnessRunning Smoothness
Discussion
Running smoothness data channel as measured/recorded by a device.
-
sathbDiscussion
Saturation of O₂ as a percent as measured/recorded by a device.
-
smoothnessPedaling Smoothness
Discussion
Pedaling smoothness data channel as measured/recorded by a device. Requires a device that supports ANT+ pedaling metrics.
-
smoothnessleftLeft Side Pedaling Smoothness
Discussion
Pedaling smoothness data channel as measured/recorded by a device. Requires a device that supports ANT+ pedaling metrics.
-
smoothnessrightRight Side Pedaling Smoothness
Discussion
Pedaling smoothness data channel as measured/recorded by a device. Requires a device that supports ANT+ pedaling metrics.
-
speedDiscussion
Speed data channel as measured/recorded by a device.
-
stancetimeDiscussion
Stance time data channel as measured/recorded by a device.
-
stancetimepercentDiscussion
Stance Time Percent data channel as measured/recorded by a device.
-
strokecountDiscussion
Swimming stroke count data channel as measured/recorded by a device.
-
stroketypeDiscussion
Swimming stroke type data channel as measured/recorded by a device.
-
temperatureDiscussion
Temperature data channel as measured/recorded by a device.
-
totalhbDiscussion
Total concentration of hemoglobin as measured/recorded by a device.
-
verticaloscillationDiscussion
Vertical movement data channel as measured/recorded by a device.
Other Variables
-
firstworkoutdateDiscussion
This is the date of the oldest workout for the athlete.
-
lastworkoutdateDiscussion
This is the date of the newest workout for the athlete.
-
todayDiscussion
This is today's date.
Range Variables
-
begindateDiscussion
The start date offset of the range selected in the RHE.
-
begindistanceDiscussion
The start distance offset of the range selected in the RHE.
-
begintimeDiscussion
The start time offset of the range selected in the RHE.
-
climbingDiscussion
Vertical ascending distance travelled in the currently selected RHE range.
-
descendingDiscussion
Vertical descending distance travelled in the currently selected RHE range.
-
distanceDiscussion
Distance travelled in the currently selected RHE range.
-
durationDiscussion
The sum of the duration of all records while your device is recording data. There are a few circumstances in which a device might not record data: The device has a pause button that temporarily suspends recording. The device has an auto-pause mode that suspends recording based on some circumstance. Interference that temporarily prevents the device from receiving wireless data from sensors. We also refer to duration as "recording duration." It most frequently matches what's reported as "duration" by TrainingPeaks, Garmin Connect, Strava, and others, which is why we named it so. This is also the duration that WKO4 displays in the Left-Hand Explorer (LHE) and Right-Hand Explorer (RHE) when duration is listed there.
-
efEfficiency Factor
Discussion
This is the efficiency factor calculated by WKO4.
-
elapseddurationThe total duration of the workout. It is equal to the end time minus the start time.
-
elevationchangeDiscussion
This is the total change in elevation calculated by taking the ending elevation minus the starting elevation.
-
enddateDiscussion
This is the end date of the range selected in the right hand explorer (RHE) at the athlete level.
-
enddistanceDiscussion
This is the ending distance of the range selected in the right hand explorer (RHE) at the workout level.
-
endtimeDiscussion
This is the ending elapsed time of the range selected in the right hand explorer (RHE) at the workout level.
-
gradeDiscussion
This is average grade for the range selected in the right hand explorer (RHE) at the workout level.
-
ifIntensity Factor
Discussion
This is the intensity factor calculated for the range selected in the right hand explorer (RHE) at the workout level.
-
movingdurationThe sum of duration while moving.
-
ngpNormalized Graded Pace
Discussion
This is the NGP for run workouts calculated for the range selected in the right hand explorer (RHE) at the workout level.
-
npNormalized Power ; ;Discussion This is the NGP for run workouts calculated for the range selected in the right hand explorer (RHE) at the workout level.
-
pahrPercentage change of pace to heart rate ratio
Discussion
The pahr variable attempts to quantify cardiac drift by showing the percentage change in the ratio of average pace to average heart rate of the first half of a workout or workout range, compared to the second half. Read the TrainingPeaks.com article about aerobic decoupling.
-
pedalingdurationThe sum of the duration of all records where cadence is not zero.
-
pwhrPercentage change of power to heart rate ratio
Discussion
The pwhr variable attempts to quantify cardiac drift by showing the percentage change in the ratio of average power to average heart rate of the first half of a workout or workout range, compared to the second half. Read the TrainingPeaks.com article about aerobic decoupling.
-
tssTraining Stress Score
Discussion
This is power based training stress calculated for the range selected in the right hand explorer (RHE) at the workout level.
-
tssdurationTraining Stress Score Duration
Discussion
This is duration used to calculated TSS for the range selected in the right hand explorer (RHE) at the workout level.
-
vamVertical Ascent Rate
Discussion
This is vertical ascent rate calculated for the range selected in the right hand explorer (RHE) at the workout level.
-
viVariability Index
Discussion
This is ratio of normalized power to average power calculated for the range selected in the right hand explorer (RHE) at the workout level.
-
workDiscussion
This is the energy in kJ for the range selected in the right hand explorer (RHE) at the workout level.
Workout Variables
-
buildDiscussion
This is the build of WKO4 used to create the current file.
-
channelsDiscussion
This is a list of data channels available in a workout.
-
codeDiscussion
This is the workout code as entered on the Workout Details tab.
-
dateDiscussion
This is the date and time of the start of a workout.
-
descDiscussion
This is the description of a workout as entered on the Workout Details tab. It is an abbreviation for
description. -
descriptionDiscussion
This is the description of a workout as entered on the Workout Details tab.
-
devicesDiscussion
This is a list of devices used to record data in a workout file.
-
filepathDiscussion
This is the path of a workout file.
-
notesDiscussion
This is a collection of notes for a workout as entered on the Workout Details tab.
-
planneddistanceDiscussion
The distance that was planned in advance of the workout as entered on the Workout Details tab.
-
planneddurationDiscussion
The duration that was planned in advance of the workout as entered on the Workout Details tab.
-
plannedtssDiscussion
The Training Stress Score (TSS) that was planned in advance of the workout as entered on the Workout Details tab.
-
plannedworkDiscussion
The work that was planned in advance of the workout as entered on the Workout Details tab.
-
sportDiscussion
The
sportvariable gives the category of sport type (subsport) assigned to a workout. This is useful when you want to reference all sport types within a broader category without having to reference eachsubsportwithin that category.bikeAll sports riding a bike: Road Bike, Mountain BikerunWeight-bearing sports: Run, WalkswimSwimming sports: SwimrowSports in water craft propelled with a blade or paddle: Rowxc skiSkiing: XC SkiotherNon-endurance sports: Day Off, Strength, Other
See Also
-
subsportDiscussion
The
subsportvariable gives the specific sport type assigned to a workout.Road BikeMountain BikeRunWalkSwimRowXC SkiDay OffStrengthOther
See Also
-
tagsDiscussion
These are user-supplied tags to help searching and filtering workouts, as entered on the Workout Details tab.
-
titleDiscussion
This is the title of the workout as entered on the Workout Details tab.
All Variables
_elevationaepfageatlatlconstantbalancebegindatebegindistancebegintimebuildcadencechannelsclimbingcodecpvcranklengthctlctlconstantdatedeltadistancedeltatimedescdescendingdescriptiondevicesdistancedurationeecpowerefeffectivenesslefteffectivenessrightelapseddistanceelapseddurationelapsedtimeelevationelevationchangeenddateenddistanceendtimefilepathfirstworkoutdatefrontgearggendergpaleftgparightgprleftgprrightgradeheartratehrvifkileftkirightlastworkoutdatelatitudeleftpcoleftppendleftpppendleftpppstartleftppstartlongitudemepfleftmepfrightmhrmovingdurationnangpnotesnppahrpedalingdurationpiplanneddistanceplanneddurationplannedtssplannedworkpowerpwhrrampconstantrampratereargearrgraderiderpositionrightpcorightppendrightpppendrightpppstartrightppstartrngprunsmoothnesssathbsftpsmoothnesssmoothnessleftsmoothnessrightspeedsportstaminastancetimestancetimepercentstrokecountstroketypesubsporttagstcadencetemperaturethrtitletodaytotalhbtpacetsbtsstssdurationtswimpacevamverticaloscillationviweightwork
Operators
-
!Evaluates unary not value.
Examples
!01
!10
-
!=Compares lhs not equal to rhs.
Examples
1!=21
5!=31
7!=70
-
&&Evaluates lhs and rhs.
Examples
1 && 11
1 && 00
0 && 10
0 && 00
-
*Multiplies lhs * rhs.
Examples
7*535
6*00
-
+Adds lhs + rhs.
Examples
1+23
4+04
-
-Subtracts lhs - rhs.
Examples
1-2- 1
4-31
-
/Divides lhs / rhs.
Examples
1/20.5
7/51.4
3/0Undefined (--)
-
:= -
<Compares lhs less than rhs.
Examples
1<21
5<30
7<70
-
<=Compares lhs less than or equal to rhs.
Examples
1<=21
5<=30
7<=71
-
<>Compares lhs not equal to rhs.
Examples
1!=21
5!=31
7!=70
-
=Compares lhs equal to rhs.
Examples
1!=21
5!=31
7!=70
-
==Compares lhs equal to rhs.
Examples
1==20
5==30
7==71
-
>Compares lhs greater than rhs.
Examples
1>20
5>31
7>70
-
>=Compares lhs greater than or equal to rhs.
Examples
1>=20
5>=31
7>=71
-
^Calculates lhs ^ rhs, which raises lhs to the rhs power.
Examples
4^216
3^5243
64^(1/2)8
-
andEvaluates lhs and rhs.
Examples
1 and 11
1 and 00
0 and 10
0 and 00
-
notEvaluates unary not value.
Examples
not 01
not 10
-
orEvaluates lhs or rhs.
Examples
1 or 11
1 or 01
0 or 11
0 or 00
-
||Evaluates lhs or rhs.
Examples
1 || 11
1 || 01
0 || 11
0 || 00
Data Types
-
DateA date formatted according to the computer's regionol settings. Examples are:
11/5/1967
5/11/67
-
NumberA positive or negative real number composed of the digits 0-9, decimal point, and positive or negative sign. Examples are:
1
1.
1.0
+0.9
.765
-1234.56
-
PairAn (x,y) ordered pair of data items. Examples are:
(123, 456)A point at coordinates x=123 and y=456.
( , 456)A horizontal line at y=456.
(789, )A vertical line at x=789.
-
SetA list of zero or more data items of any type enclosed in brackets and separated by commas. Examples are:
{}
An empty set.
{1, 2, 3, 4.5, 5}
A set of 5 numbers.
{"Recovery", Endurance", "Threshold"}A set of three strings.
There are also some shortcuts for entering pairs. One form is {from:to:step}. Examples are:
{3:6}{3,4,5,6}
{1:10:2}{1, 3, 5, 7, 9}
{12:3:-4,1,2,3}{12, 8, 4, 1, 2, 3}
Another form is {value;repeat}. Examples are:
{5;3}{5,5,5}
{7;4,5,3,1}{7,7,7,7,5,3,1}
{11;3,13;4}{11, 11, 11, 13, 13, 13, 13}
-
StringA list of zero or more characters enclosed in double quotes. Examples are:
"cogganoptimized"
"Endurance"
""
-
TimeA time or duration formatted according to the computer's regionol settings. Examples are:
1:00:00
0:20:00
0:00:01
Syntax/Grammar
expression | atom[yunits][binaryoperator expression] |
atom | pair |
| unaryoperator expression |
| numberliteral |
| dateliteral |
| timeliteral |
| stringliteral |
| setliteral |
| variable |
| function |
unaryoperator | ! |
| not |
| + |
| - |
binaryoperator | ^ |
| * |
| / |
| + |
| - |
| < |
| <= |
| > |
| >= |
| != |
| <> |
| = |
| == |
| and |
| && |
| or |
| | |
yunits | stringliteral |
pair | (expression, expression) |
| (expression, ) |
| ( , expression) |
| see Pair |
stringliteral | see String |
numberliteral | see Number |
dateliteral | see Date |
timeliteral | see Time |
setliteral | { [setexpr [,setexpr]... ] } |
| see Set |
setexpr | expression |
| expression:expression[:expression] |
| expression;expression |
variable | [_a-z][a-z0-9] |
| see Variables |
function | [_a-z][a-z0-9] ( [parameterlist] ) |
| see Functions |
parameterlist | expression[, parameterlist] |