Tag Archives: python

Estimating cycling power and training load

Updated 1: I modified the script slightly to perfectly match the estimation method of Joe Friel (see below), and as this had a small but clearly positive effect on the results, I have also updated the last plot and the paragraphs describing it at the end.

Updated 2: I have also tested the power estimate on very low intensity efforts with known average wattages (check out the bottom of the post).

You might remember that I have written a python script earlier this year, to analyze my cycling workouts and besides the calculation of detailed statistics, also create all kinds of fancy (multidimensional) plots. If you do not remember, or you would like to refresh your memories, please click here before reading this post further.

The most important thing missing from my script was the ability to directly compare different workouts. Of course you can tell that a 150 km ride with 5000 meters of elevation gain is more difficult than an easy 50 km Sunday afternoon ride, but how much more difficult? And what about an easy 75 kilometer training and a short but hard interval session? How do these compare? How tired am I going to feel myself after these? I really wanted to create or find a metric which tells me how much I did on a training. Of course this is only a problem when you don’t have a power meter installed on the bike, because that would directly tell you the amount of work in SI units for every workout. But power meters are expensive, and most importantly I don’t have one. This situation might change in the future, but till then let’s see what can we do.

I kinda forgot about the problem (and I did not even start dealing with it earlier, I just simply made a note on my To Do list), but some days ago Strava (a similar site to Garmin Connect, but with competitive – social media based – extras, unluckily with basically no users in Europe, so it is not an alternative for me) introduced a so called suffer score on their website, basically giving a rating to every ride based on its intensity (estimated from heart rate – HR – data) and duration. I knew that the algorithm behind this will be quickly decoded on one of the blogs I frequently read, and indeed it did happen very quickly, go and have a look there. First I wanted to implement this into my script, but then I got some extra motivation from the post and the comments there, so I looked a bit into the literature, and thus I got to know about the Training Stress Score, or simply TSS (among others, but this is the most important thing for us right now). To save some space here, check out the following three sites, so I can skip retyping things which are already on the Internet.

Estimating Training Stress Score (TSS), by Joe Friel
Normalized Power (NP), Intensity Factor (IF), and Training Stress Score (TSS), by Andrew R. Coggan, Ph.D.
What does 100 TSS mean, and the connection to Functional Threshold Power (FTP)

Though TSS and all these metrics are used in and based on power measurements, you can see that it is possible to give a good estimate (as good as estimating the realtive power on climbs from the slope gradient and VAM, which my script already did before) of it from time spent in HR zones using the scaling values from Joe Friel. We have seen that by definition a TSS of 100 equals to a one hour ride at FTP (so as hard as you can go for one hour). This means that rides shorter than one hour can have a TSS/hour higher than 100, but longer rides will have a lover value. So the TSS value tells you how big the training load of a given ride was (and it is related to the amount of post-ride fatigue), and the TSS/hour value gives you the intensity of your workout. The way it’s calcualted, TSS varies by the square of intensity. That means if you’re only going at 90% for an hour then you’re only accumulating 81 TSS per hour (90% = 0.9, which squared is 0.81, then you multiply by 100 to get TSS). So from the TSS/hour you can calculate an intensity factor, which gives you your average power output in units of your FTP power for the whole workout. Given that you know your FTP power, you can have a good estimate of the average power of any of your training rides! Now that is pretty cool. So that is what I have built into my script, this way now the TSS, TSS/h, average power and total work estimate values are also given in the summary file. And I also performed some test calculations and comparisons – because you should never forget, these are estimates! You need to know your FTP, and your HR at FTP, and then you might even get a reasonable value…

First of all, I wanted to see what is the intensity factor of my personal best ride to Mechelen and back. It was an approximately 1 hour 20 min all out effort, and the script gave an intensity factor of 1.00, meaning that I was riding on FTP. Though the ride was a bit longer than one hour (when it should not be possible to ride on FTP anymore), but I had a small 10 min break between the two legs in Mechelen, so it might still be a valid approximation, but for sure it should be extremely close to reality. Also, though it was a very tough ride, because it was short, the TSS value is ‘only’ 135.0, meaning that in 24 hours I might have probably almost fully recovered. In comparison, a normal ride (in my terms, so an average of 32 km/h instead of the record 35.7 km/h) on the same route gives a TSS around 110, while a recovery ride is probably below 100, and my epic ride (147 km and a bit more than 5000 meters of elevation gain) climbing twice up from sea level to the highest point of La Palma had a TSS of 483.7, which – as you have already guessed it probably – is in the epic category. Just as comparison, the last short  (46 km and 400 meters of ascent) and recovery paced ride from France had a TSS of 69.5 (which is approximately half the TSS of my personal best ride which was done on an almost equally long, but completely flat route, so this really shows how easy this French ride was). So as I got an IF (intensity factor) of 1.00 on a ride which is very close to the definition of FTP I was already quite happy with the result. (If for such a ride you get something like 1.05 or even higher as IF, then that is a sign that your threshold heart rate is now higher, so you should change it accordingly in the parameter file.)

As a second test I wanted to see how does this power estimate compare to the power estimate from VAM and average gradient, which is a widely accepted and used relation for climbing sections. If the power values from the two methods match, then it is OK to use the power estimate from the hourly TSS value on rides even with no climbing at all. So first I took my recent ride up to the Mont Ventoux, where I did 1 hour and 40 minutes of all out riding, so I expect to get an IF around 0.95 and of course I am very interested to see how the two different power estimates will differ from each other (if they will differ at all). So here is the statistics file (recent additions marked with a grey background):

So from the IF of 0.96 you can see that indeed I did all I could in this time frame. Now we can estimate the average power from my FTP, which is somewhere around 300 W (or maybe a bit more, but I have to admit I don’t have a recent measurement, so I can only guess this from my workouts on the trainer back in the first months of the year). The result from this is 288 W. What about the value from the other method? I was ~70.5 kg and my bike + drink and food + clothes is an extra ~11.5 kg, then with a total weight of 82 kg and the relative power estimate from the VAM and gradient you get an average power of 287 W. These values are surprisingly almost perfectly identical! This means that I can most probably trust the TSS based method, and use it for complete rides, while the VAM and gradient based method only works on climb sections. This is quite nice! Of course one measurement is not a measurement, so I wanted to check this on other climbs as well. Unluckily I don’t have to many climbs (as Flanders is pretty flat), but I still managed to put together a sample of 18 climbs from this year, mostly from my rides on La Palma in may, and some others from later (so there is a chance that my FTP was not the same at the time of the different rides, but I still calculated with the same value, while for my total weight – with equipment included – I could make small changes based on me having a backpack with 2 extra liters of water or not). The sample has climbs from short explosive hills to the long ascents of La Palma, steep climbs and not so steep climbs, climbs where I was really fit and well recovered, and also climbs where I was tired, to see what is the effect of these on the relation. So all these climbs are displayed on the plot below (the size of the circles is related to the length of the climb, while the colour resembles the steepness).

With a perfect 1:1 relation between the two different power estimates we expect the climbs to fall on the x=y linear (which is the grey dashed line here). The correlation is well visible, with of corse some noise, but the trend seems to be pretty clear. The biggest outlier is the Smeysberg on the top right, which is a very short (430 meter) but very steep (an average of 9.8%) climb, and the reason why it is an outlier is that it was a sprint effort well above threshold, but starting with a very low heart rate, so it took some time till my HR got up into the regime which really corresponds to the level of my power output, and this time was in the order of the full length of the effort, so of course the TSS based metric is lower. For such sprint efforts the heart rate based estimated TSS will be always lower than the power based, because 1) the already mentioned lag of HR behind the sudden raise of power output, 2) that much above FTP the HR will not get higher, it does not matter if you maintain 400 W or 600 W for 30 seconds, your HR will be probably stuck at you maximum HR value. But these problems only arise when you do very short above threshold sprints. This is also why one of the small blue dots is also a clear outlier. Still, in the region where most of my training rides are (~220 W to 300 W) the match is almost perfect. Fitting a linear [y = f(x) = mx + b] to all the climbs (solid grey line) or only climbs which were longer than 3 km (a.k.a. efforts where there was a significant heart rate lag were dropped, thick black line) gives the following equations:

a) m = 1.41±0.16, b = -99±41, but we don’t really care about this
b) m = 1.00±0.12, b = 0±31, which is a perfect 1:1 match (with some noise of course)!

The other problem with HR based power estimates, that your heart rate at, e.g., 250 W will not be the same for two workouts which were ridden in different conditions, as for example dehydration and the level of residual fatigue strongly affects the heart rate. So again, these can significantly change the resulting estimated power. Like in case of the medium sized light blue circle slightly above the 1:1 line in the bottom left – this was a very slow paced ride (I was not alone), but I was extremely fit (after more than 1000 km ridden already in the same month, but basically no hard workouts in the previous one week), so probably my heart rate zones were a bit shifted. On the other hand, the two other climbs where the difference between the two values is larger than 5% (the small blue circle and the larger dark blue circle slightly below the 1:1 line towards the bottom left) were the last climbs of my two hardest days on La Palma, so at those ascents I was already very tired, which led to the shift of my HR zones – but now to the other direction. (At least this is my explanation.) Furthermore, small ascending sections can effect the estimate from overall VAM and slope gradient, and to convert relative power to power you need to know your total weight with bike, clothes, and everything included. Taking all these factors into account it is easy to understand why there is a scatter around the 1:1 relation.

To see what happens when you go to lower power – so the region of true recovery workouts – I have modified the script to be able to handle TCX files which do not contain GPS position information (so files which contain indoor trainer workouts). I have only three rides where I maintained a constant power instead of doing intervals (where the heart rate based method is clearly off, but we know that already), but in case of these, I can compare the ‘real’ average power (from the Tacx Flow) to the estimate. So for these three rides, the real average power values were 156 W, 140 W, and 200 W, while the estimates for the same rides are 133 W, 136W, and 220 W (assuming an FTP of 290 W as these were done very early in the season). The difference between the measurements and the estimates is in the order of ~10% (of the trainer values), which is OK for an estimate.

Conclusions: we can say that indeed the TSS based method can be used to estimate the average power (and workload) of workouts (even from HR data) if they do not consist of (only) short sprint efforts (so sections where there is a significant lag in the change of heart rate compared to the power output), as it scales well with another widely used power estimation method, and as it is consistent with wattage data from indoor trainer workouts (though the latter is only tested for low intensities). As a second conclusion: I really need a power meter (to test these estimates, and to have real power data, damn it)…

And oh, this was my 500th post!

Visualizing cycling workouts (a.k.a. I love plots!)

Fasten your seat belts, you are about to read one of my best posts ever. (Honestly, it is true.)

I am a bit of a nerd, there is no need to try to deny this fact. I love gadgets, I love technology, and especially, I love plots. I love if they have more than two dimensions, if there is also color or even symbol shapes or sizes used to represent a third or fourth dimension. Moreover, I love GPS devices. At the moment I have a hiking GPS (Garmin GPSMap 60 CSx), a smartphone with built in GPS, and a cycling GPS (Garmin Edge 500), and I had three other ones (two hiking GPS devices, and a bluetooth GPS receiver with my previous Nokia phone) before these… But I am not the nerd who just sits in front of the computer, because I also love sports. I mean, I love doing sports, and not just watching them on TV (which I also like, but this is not the point). If you are not completely new to my blog, then you know that these days I am especially into cycling – this is also the reason why I own a special cycling GPS (which I bought basically on the morning of my first ride with my – back then new – racing bike). With Garmin (and even with other brands), you have the option to upload your workouts to the Garmin Connect website, which gives you some nice overview plots, a calendar, reports, some statistics, and maybe most importantly the ability to share what you have done with the on-line community. The plots and statistics are nice and detailed enough if you are an average – or so called hobby – user. In that case, there is no problem. But if you are such a plot-fetishist as I am, or you need professional analysis, and you have a desire for more, than you will like what I am just about to show after the break. (If you have no food and drinks with you, go and grab something before clicking on continue…) Continue reading

Már két hónap eltelt

Szörnyen repül az idő. Viszont abba kéne hagynom ezt a napló-szerű írást, mert unalmas lesz (nem mintha az élet unalmas lenne, de nem erről szól a blog – pontosabban nem erről kéne szólnia), szóval majd igyekszem csak az érdekesebb dolgokat megemlíteni. Először is vasárnap a floorball egész jó volt, végre elegen voltunk (5 v. 5) és nem is egyszer egész pofás támadásokat is vezettünk. No meg továbbra is baromi jól megy, de ez továbbra sem meglepő (a Kékestető hatalmas csúcs a flamand dombok mellett – de azért nem lenne jó az Alpokhoz hasonlítani).

Hétfőn Steven beállított egy sráccal, akit Angliából ismer, és akiről azt kell tudni, hogy híresen imádja a belga csokoládét – nos, ő akart személyesen is találkozni velem :) A hírem már a csatornán is átjutott! Este mostam, közben meg olvastam egy kis Márait.
Kedden írtak a személyzeti osztályról, hogy ideiglenesen a magyar számlaszámomra is tudnak fizetni, csak adjam meg. Ez elég jó hír, úgy néz ki hó végén végre megkapom az első (egyből dupla) fizetésemet. Ráadásnak megérkezett a Personeel kártyám is, szóval most már nem csak diák-, de személyzeti igazolványom is van. Menő. Kevésbé menő, hogy az egyetemnek ez 50 napjába tellett… http://www.ster.kuleuven.be/staff/peterp/index_en.html, http://cwisdb.kuleuven.be/persdb-bin/persdb?lang=E&oproep=persoon&fnaam=65000 Viszont aláírni még mindig nem tudtam a szerződésemet (ennek ellenére az on-line rendszerben már ott van, ráadásul már a jó kezdődátummal), pedig állítólag már elkészült (Paul-éval egyszerre – és ő már tényleg kézhez kapta és aláírta), csak valahogy elkeverték, és most az új példányhoz újra be kell szerezni minden illetékes aláírását. Tragikomikum. Este újabb éttermet próbáltunk ki (természetesen újabb sörrel: Westmalle Tripel – egész finom volt) – isteni sonkás-sajtos makarónit ettem a Heverlee vasútállomás közvetlen szomszédságában. Az ár/érték arány teljesen korrekt volt, sőt. Aztán még elszórakoztuk az időt Nadia-nál.
Szerdán reggel beugrottam a hétfőn megrendelt Photoshop CS4-emért (pontosabban Adobe Photoshop CS4 Extended Student Edition UK for Mac OS). Eddig bírtam PS nélkül, egyszerűen nem tudok létezni nélküle. A régi Windows-os laptopomon a két éve (ugyancsak Belgiumban) vásárolt Photoshop CS3 volt a leggyakrabban használt alkalmazás (a Firefox után)… Azért ez mond valamit. És az, hogy továbbra is diák (is) vagyok, jár olyan előnyökkel is, hogy nem 1499.99 EUR-ba kerül a Photoshop, hanem “csak” 199.99 EUR-ba… Ráadásul most még a HUF is erős, szóval jó üzletet csináltam. Napközben elkezdtem dokumentációt írni, közben pedig beugrott a témavezetőm és személyesen adta át a legújabb Astronomy & Astrophysics egy példányát (mely a CoroT űrtávcső első eredményeiről szóló cikkeket tartalmaz, köztük egy olyat is, melynek társszerzője vagyok). Este voltam focizni (eredetileg Astronomy v. Space Studies mérkőzés, de az űrcowboyok nem bírták túl sokáig a nyomást…), nagyon jó volt, rúgtam egy szép gólt is!
Csütörtökön tíz perc alatt megkaptam a regisztrációs kulcsot a Photoshop-hoz az Adobe-tól (diákigazolvány-másolattal kell regisztrálni az interneten, megvizsgálják az adatokat, aztán ha minden OK, küldik a kulcsot), ami a két évvel ezelőtti három naphoz képest elég nagy előrelépés. Az intézetben rendezett “programnyelvek csatáját” a PYTHON nyerte meg, az eredményhirdetésen még pezsgő is volt ;) Este voltam gyeplabdázni, ami megint nagyon jó volt. Egyébként meglepő, hogy mennyi lány van… Lefekvés előtt még feltelepítettem a Photoshop-ot, és gyorsan összedobtam vele pár panorámát. Ennyit arról, hogy abbahagyom a napló-szerű írást…

Hétfőn Steven beállított egy sráccal, akit Angliából ismer, és akiről azt kell tudni, hogy híresen imádja a belga csokoládét – nos, ő akart személyesen is találkozni velem :) A hírem már a csatornán is átjutott! Este mostam, közben meg olvastam egy kis Márait.

Kedden írtak a személyzeti osztályról, hogy ideiglenesen a magyar számlaszámomra is tudnak fizetni, csak adjam meg. Ez elég jó hír, úgy néz ki hó végén végre megkapom az első (egyből dupla) fizetésemet. Ráadásnak megérkezett a Personeel kártyám is, szóval most már nem csak diák-, de személyzeti igazolványom is van. Menő.

2009staffcard

Kevésbé menő, hogy az egyetemnek ez 50 napjába tellett… Itt vagyok látható az egyetemi dolgozók adatbázisában, itt pedig az Intézet (v. Tanszék) dolgozói között. Viszont aláírni még mindig nem tudtam a szerződésemet (ennek ellenére az on-line rendszerben már ott van, ráadásul már a jó kezdődátummal), pedig állítólag már elkészült (Paul-éval egyszerre – és ő már tényleg kézhez kapta és aláírta), csak valahogy elkeverték, és most az új példányhoz újra be kell szerezni minden illetékes aláírását. Tragikomikum. Este újabb éttermet próbáltunk ki (természetesen újabb sörrel: Westmalle Tripel – egész finom volt) – isteni sonkás-sajtos makarónit ettem a Heverlee vasútállomás közvetlen szomszédságában. Az ár/érték arány teljesen korrekt volt, sőt. Aztán még elszórakoztuk az időt Nadia-nál.

Szerdán reggel beugrottam a hétfőn megrendelt Photoshop CS4-emért (pontosabban Adobe Photoshop CS4 Extended Student Edition UK for Mac OS). Eddig bírtam PS nélkül, egyszerűen nem tudok létezni nélküle. A régi Windows-os laptopomon a két éve (ugyancsak Belgiumban) vásárolt Photoshop CS3 volt a leggyakrabban használt alkalmazás (a Firefox után)… Azért ez mond valamit. És az, hogy továbbra is diák (is) vagyok, jár olyan előnyökkel is, hogy nem 1499.99 EUR-ba kerül a Photoshop, hanem “csak” 199.99 EUR-ba… Ráadásul most még a HUF is erős, szóval jó üzletet csináltam. Napközben elkezdtem dokumentációt írni, közben pedig beugrott a témavezetőm és személyesen adta át a legújabb Astronomy & Astrophysics egy példányát (mely a CoroT űrtávcső első eredményeiről szóló cikkeket tartalmaz, köztük egy olyat is, melynek társszerzője vagyok). Este voltam focizni (eredetileg Astronomy v. Space Studies mérkőzés, de az űrcowboyok nem bírták túl sokáig a nyomást…), nagyon jó volt, rúgtam egy szép gólt is!

Csütörtökön tíz perc alatt megkaptam a regisztrációs kulcsot a Photoshop-hoz az Adobe-tól (diákigazolvány-másolattal kell regisztrálni az interneten, megvizsgálják az adatokat, aztán ha minden OK, küldik a kulcsot), ami a két évvel ezelőtti három naphoz képest elég nagy előrelépés. Az intézetben rendezett “programnyelvek csatáját” a PYTHON nyerte meg, az eredményhirdetésen még pezsgő is volt ;) Este voltam gyeplabdázni, ami megint nagyon jó volt. Egyébként meglepő, hogy mennyi lány van… Lefekvés előtt még feltelepítettem a Photoshop-ot, és gyorsan összedobtam vele két panorámát (egyik és másik). Ennyit arról, hogy abbahagyom a napló-szerű írást…

Berendezkedés

Hétfő este találkoztunk (Nadia, Steven, Robin és én) Paul-val (az osztrák PhD-s), és söröztünk egyet az Oude Markt-on (sörök: Brugge Tripel és La Chouffe), Leuven híres sörözős terén. Azért híres, mert 33 söröző van rajta :) Az ivászat után még jártunk egyet a városban, így hajnali egy körül értem haza…

Kedden megnyertem az előző este Robinnal kötött időjárás tárgyú fogadást, így már mindenki tudja, hogy ha meteorológiáról van szó, akkor engem kell kérdezni… Persze fontosabb, hogy aznap volt az első munkanapom. Megkaptam az irodámat (ahol rajtam kívül lesz még egy postdoc is – de addig az egész az enyém -, illetve elméletileg oda van kiírva két prof, akik viszont ezen az egyetemen csak óraadó tanárok, így soha nincsenek ott) az épület kulcsával együtt (szóval akár hétvégn is bemehetek dolgozni, ha nagyon unatkoznék :D). Nagy vonalakban megkaptuk a feladatainkat is, szóval van már némi elképzelésem arról, mit fogok a következő négy évben csinálni. Délután átvettem a szállásom kulcsait is (csupán 45 percet vártam esernyővel a szakadó esőben, mire megjött az ügyintéző…), és kicsit lehangolt a nagy üresség, de legalább végre lett saját internetem ;)

Szerdán főleg hivatalos dolgokat intéztem, ilyen meg olyan formokat adtam le és töltöttem ki (Application Form hogy diák lehessek, plusz doktori iskolába jelentkezési lap – persze mindegyikhez x aláírás és n+1 okiratfénymásolat kellett).

Csütörtökön elkezdtünk elmélyedni a Python programnyelvben, mert itt az intézeten ezt preferálják. Nagyon (na jó, azért annyira nem hoz lázba, de) jónak tűnik, egyszerűbb és logikusabb, mint a C vagy az IDL szintaktikája. Olyannyira belemélyedtünk, hogy kiderült, hogy pár gépen (köztük az enyémen) nem stimmel valami a Linux-val, így hát kénytelenek voltunk megoldani a problémát :) Sikerült is, de addigra már elég késő volt, és már mindannyian (Steven, Robin, én és Nadia – aki időközben a pénteki védésére készült) kezdtünk éhen halni, így gyorsan rendeltünk egy-egy pizzát. Nyolc körül meg is érkezett, mi pedig jóízűen megvacsoráztnuk a könyvtárszobában (ami részben erre van kitalálva – ott a hűtő meg a kávéfőző is, meg puha kanapék és puffok :D).

Pénteken volt Nadia, Carolina és Jona védése (meg egy fizikusé, de az elég gáz volt…) – szerintem mindhárman jók voltak, de lehetett volna kicsit több oxigén a teremben, mert a második prezentáció közepén majdnem elaludtam… Este részben Nadia védését ünnepelve Leuven fő éttermes utcáján, a Muntstraat-on vacsoráztunk. Nagyon finom (és jó sok) sajtos sonkás makarónit ettem, és persze most sem maradhatott el a sör (Steen Brugge és Orval).

20090904vacsora

Aztán nem sokkal este kilenc után megérkezett anyu és apu, akik meghozták a cuccaim nagyobbik felét (köztük a biciklimet is). Így az este hátralévő része pakolással telt, illetve kipróbáltam a szintén szüleim által hozott új MIDI billentyűzetet is – szuper, majd írok róla külön bejegyzést (mint az irodámról és a lakásomról, csak türelem…).

A szombat IKEA-nap volt, és a tömegnyomorból ítélve nem csak nekünk. Jó hosszú listával indultunk neki a zaventemi svéd bútoráruháznak, és szerencsére nagyrészt mindent sikerült beszerezni, amit elterveztem – amit nem (asztalterítő, plusz valami színes rongyszőnyeg), azt majd még a közeljövőben Leuven-ben beszerzem. Viszont vettem egy kinyitható egyszemélyes ágyat, egy íróasztalt, forgószéket, kisasztalt, edényeket, tányérokat, poharakat, zuhanyfüggönyt, fürdőszobai szőnyeget, szemeteseket, és megannyi apróságot (giga nagy csoki illatú gyertyát is), szüleimtől pedig “karácsonyra” kaptam egy 200×140 cm-es fekete-fehér képet, ami egyszerűen istenien mutat a lakásomban, csak még nincs teljesen a végleges helyén, mert két lyukat fel kell fúrni a falra, és ehhez még találnom kell valakit, akinek van fúrója :) De nagyon menő. És az IKEA-ban vettem olyan svéd kekszet (Singoalla) is, amit Stockholm-ban szinte minden nap ettem ;) Hazafelé beugrottunk a boltba is, így már van mivel felmosnom és takarítanom is… A délután hátralévő részében apuval összeszereltük a bútorokat, aztán este ugyan ott ettünk szüleimmel, ahol előző nap a diákokkal.

Vasárnap eredetileg úgy volt, hogy 10-kor találkozom az egyetemnél azokkal a csillagászokkal, akik rendszeresen szoktak biciklizni, viszont adott időben adott helyen nem volt ott senki… Nem tudom mi lehetett (lassan kezdem azt hinni, hogy nem is vasárnapról, hanem hétfőről volt szó, de nem hiszem…), próbáltam telefonon elérni valakit, de csak Kristof számát tudtam, ő pedig nem vette fel. Egy ideig bolyongtam körbe-körbe, aztán ha már úgy nekikészültem, elmentem egyedül tekerni egyet. Végül egészen Mechelen-ig mentem, végig a Leuven-Dijle csatorna mentén futó bicikliúton. Bedöcögtem a főtérre is (őrület mennyi macskakő, kirázta a lelkemet is…), megnéztem a templomot és hallgattam a téren játszó zenekart is. Hazafelé “meggyűlt a bajom” a belgákkal, mert valami szervezett 50 km-es bringatúra zajlott éppen, és alig tudtam a 20 km/órával araszoló tömegtől haladni… Aztán Leuven-be visszaérve kiderült, hogy éppen most zajlik a Grote Prijs Jef Scherens (egy napos, 183,3 km-es – 14 kör Leuven-ben – országúti kerékpárverseny, egyben belga bajnokság is, olyan csapatokkal és nevekkel, akik a Tour de France-on is ott voltak), így két ponton is elhúzott mellettem a mezőny (de csak azért, mert kordonok között mentek, különben én is tartottam volna a tempót :D). Végül 81,39 km-el a lábamban értem haza. A nap hátralévő részében takarítottam és pakoltam, így lényegében minden a helyére került. Megyek is aludni, mert elfáradtam.