# 2016 Low-Key Hillclimbs

*Climb Ratings*

It's a particularly Low-Key Low-Key for 2016 with the highest-rated
is Hamilton.
Next on the list is Highway 9, which is sort of long but never steep, and
Butano Fire Road, which has occasional bouts of steepness but were it not
for the dirt aspect (not included in the rating) wouldn't particularly impress.

There's two multi-climb weeks this year, with Los Altos Hills receiving a racing
based on Moody Road, and the Pescadero Loop rated based on Haskins Hill. The rating
does not accumulate when given multiple climbs in succession, but instead is based
on the hardest of the series.

## The nitty-gritty

Okay, here's the dirty details.

First the profile was extracted, typically from Garmin data if available on-line from Strava. Cosmo's Strava-to-TCX converter can be used to extract data.

Then the data were smoothed with a Gaussian of sigma 50 meters and interpolated onto a grid of 10 meter spacing. The smoothing is to correct for the "noise" present in the measurements: the Garmin-reported altitude tends to vary somewhat for a given position.

Next data were transformed to a function of time, as opposed to a function of distance. For GPS ride data, time are already available. However, the rating of a route shouldn't depend on how a given rider on a given day rode the hill, so these time data were ignored. Instead an empirical differential equation was used to product a "typical" riding rate:

d*t* / d*s* = [ 1 + ln | 1 + exp( 50 *g* ) | ] / *v*_{max},

where *t* is time, *s* is distance, *g* is the rate of altitude change with respect to distance, and *v*_{max} = 14 m/s. Don't sweat this formula too much; it has very little effect on the final rating.
Then *g* was further smoothed with respect to time with a Gaussian smoothing function with standard deviation 15 seconds, representing the ability of neuromuscular power and inertia to effectively smooth out very short, steep grades. The idea is if it takes more than 15 seconds to climb a steep segment, your legs really start to feel the true grade.

Now the data were ready for calculating the rating. For each 10 meter segment of road, add to a parameter *f* as follows:

d*f* = exp(*g* / *g*_{0}) d*s*,

where d*s* is the length of the segment (10 meters in this case) and *g*_{0} = 8%, sort of the grade at which climb segments start to become especially hard.
To get the raw rating, I do the following:

*r*_{raw} = *f z* / *s*,
where *r*_{raw} is the raw rating, *z* is the net climbing of the hill, and *s* is the net distance.
The result is a raw rating with units of distance. To get the number reported here, the rating for Old La Honda was calculated, and the result divided by that and multiplied by 100. So no matter what the details (smoothing, *v*_{max}, *g*_{0}), Old La Honda scores 100:

*r* = 100 *r*_{raw} / *r*_{raw,OLH},

where *r*_{raw,OLH} is the raw score for Old La Honda.
That's it!

*Dan Connelly*