This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Extracting "precise" Vo2Max from fit file

[This is a repost of something I posted on Reddit a few minutes ago but I think some of my fellow 945 owners might be interested in]

Hello,

I'm a software developer and stat geek. One of my frustrations when it comes to GarminConnect UI is that you cannot get a precise value of your estimated Vo2Max - it's always a round number. I wanted to have precise values to see trends better (especially since I've been stuck in the 54-56 range for months...) so I wrote a little program that extracts data from the Fit files and renders them in a webpage.

I though I would share it with you guys so I published the source code : https://github.com/bleenhou/fitparser/releases

To use it, just copy the fit files of your activities in a folder, run the program and select the folder in which you just copied the files. (You cannot point the program directly to the watch storage...)

Quick notes : 1/ It's written in Java so you need Java installed on your system to run it. 2/ It can be downloaded at the link above, but if you want to recompile it, you will need the thisisant java fit SDK jar. 3/ It's only parsing Running Fit files, not the rest (Strengh, Bike, etc...)

I tested it with chrome but I think the code is simple enough that it will work with any browser.

Top Replies

All Replies

  • Former Member
    0 Former Member over 3 years ago

    hi,

    thank you for the info Slight smile

    some values to look for ... Training Effect's, Exercise(Training) Load, Recovery HR, Recovery Time, .... Thumbsup

    update :

    same metmax also in message id 140(8c) in field id's 27(1b), 28(1c) and 29(1d)

    happy & safe sporting

  • Note also that you can get this from Runalyze if you sync your data.

  • Really nice job on this, thank you for sharing your work!

    At first it was confusing to me because it opened the "weight" chart by default but then I went and looked in the temporary folder and saw the other charts and opened the vo2max

    Now that is rewarding to see the little increments, Garmin really needs to add the single decimal, remember when strava finally added the decimal to their stats a few years ago and it made it so much better.

    Also turns out the Garmin is whispering sweet lies to me, rounding up .5 to the next whole number which is "cheating".

    Do you know if the vo2max stored is the number BEFORE the run or is it AFTER the run? Sometimes I get a bump up mid-run if performance condition is high.

  • Although I can see the interest in a more precise VO2Max value, I wonder how useful it really is from a watch based algorithm - an extra decimal place is not the same as higher accuracy.  Perhaps if you are doing daily lab assessments with all the equipment it might be useful but given the watch is estimating the value based on HR/HRV and pace, having a value to one decimal place is likely overkill. Do a run into a slight wind and this will impact results.  A slight hill or softer footing will have an impact. 
    I believe Firstbeat suggest 95% accuracy - and likely a wide variation between people.  VO2Max value comes from trends over a period of time, and given the algorithmic nature of the Firstbeat values, it may be fun to see an extra decimal point but it may not really be useful.  Just my opinion. 

  • From what I know, it's computed after the run (when you save the activity)

  • I personally enjoy the on screen "reward" of having the number go up after an "optimal" run (whatever that might mean, better temps, different D+...) Having a decimal place would make me feel this more often, since I'm basically "stuck" at 56 for a year now.

    But agree with you, it's not a solid metric and is bound to have variation - as long as you take it for what it is, I don't see the harm in having one decimal place.

  • I second that the estimate is not precise enough to warrant a decimal place, but it is useful in interpreting Training Status, which is subject to small changes in the VO2max that the user can't otherwise see.

  • Just some feedback on a little bug

    I think you need some higher tolerance to skip over older FIT files that may not have a vo2max in them.

    I tried putting all my fit files from over the years into a single directory and it never properly runs, I think it's because the files before 2018 were done on an old vivoactive without HR and without the firstbeat vo2max features so that data is not in there.

    Basically your code seems to give up or crash on such files.

    On newer files however it works awesome.

  • Thanks for the feedback !

    If I find time I will add the code that discards "non compliant" files so that the process finished as expected. The reason this happens is that it started as a solo project only to read my 945 files, so I have run little tests on anything else !

  • Hi , great util, thank you!!! Thumbsup Slight smile