Wellness data random overriding

Hi, I am having strange behaviour since a few days ago. It coincides more or less that I am doing a regular morning Health Snapshot since day 20 of this month with my Garmin watch. Sometimes the Health Snapshot data overrides the Wellness Data on intervals.icu and viceversa. This is my Resting HR on intervals.icu:

image

On the blue square are days 26, 27, 28. And this is the data from Garmin Connect:

image

They do not match. I have been checked if the Health Snapshot is the guilty of this behaviour, but there is no Resting HR data on the reports:

However, if I open the Snapshot of day 26, I can see that the lowest HR was 50, the same as intervals.icu:

The same is happening with the other days.

I am also experiencing the same thing on the HRV values. Some days intervals.icu takes the overnight values and other days it takes the Health Snapshot values.

Is anybody having this same behaviour with Garmin and its Health Snapshots?

Thanks!

1 Like

This could be part of the answer?

Intervals.icu gets resting HR from “dailies” and “healthSnapshot”'s delivered at different times of the day by Garmin. Something similar happens for HRV. I need to think of a way to handle this case. Presumably everyone would want the health snapshots to be used instead of dailies if you are taking the time to do them right?

1 Like

Thank you @MedTechCD, certainly it can explains why some times it takes the HRV from last night and other times it takes it from the Health Snapshot. It seems it takes one (randomly one before other) and then the second one overrides the first one.

However, they are not the same data at all. The night average HRV (rMSSD) is not comparable to the HRV (rMSSD) of a 2 minutes Health Snapshot.

Same thing on the Resting HR. It is very different the resting HR over the night and the minimum HR taken in the Health Snapshot.

2 Likes

Yes, it is a tricky case. Personally, I do not like to get override the “dailies” data, I explain why:

Daily health data

  • Resting HR: I think it is taken while I am sleeping, and it helps me to know if something is wrong.
  • HRV (rMSSD): Average taken over the night with a large data sample, so it is good for me.

Health Snapshot

  • Resting HR: It is taken from the minimum HR value during the 2 minutes of the snapshot. This data is totally invaluable and prescindible.
  • HRV (rMSSD): Taken during the 2 minutes of the snapshot. I think it could be more specific than the “dailies” and it could be the one to use in the ImReady4 script (HRV for training method). However I am not sure yet if the watch is capable to read a good and repeatable data, so by now I am input this value manually into an intervals.icu custom field, just to see its behaviour over the time.
  • HRV (SDRR): Also taken during the snapshot and I am not sure if it could be comparable to the HRV (SDNN) -that I have not access through Garmin-, but I have read that both are indicators of the parasympathetic system, so I am inputting manually the snapshot HRV (SDRR) into the HRV (SDNN) intervals.icu standard field.
1 Like

Health Snapshot data should be in a separated stream, good but optional. If artifacts occur you should redo the test.
Dailies are collected automatically with no effort.
They collect different things, morning measures vs night averages.
When mixed, the result is a curve with spikes

And if Garmin added also SDNN to Daily health data, dailies already great, would be awesome.

I have added some public custom fields. The Garmin health snapshots will go into these fields instead of the standard ones if they are present:

6 Likes

I’ve just tested and worked as you said, thanks. I think it is a good solution.

Now I have other problems… :sweat_smile: These custom fields can be added to the calendar list view? I have not seen the way.

The other thing is, is there a way to add these custom fields to the csv exported by the API? The next thing I want to do is to kindly ask @Inigo_Tolosa to allow parametrice the HRV fields on the config file, so I need these fields included on the csv he gets on the script.

If you export the csv manually from that same point, the listed custom fields will also be in the csv.

If you want to get them through the API, you have to list all fields that you want returned. For some reason, if you pull the csv through the API, the custom fields are not included by default. Here’s an example cURL command getting all my custom fields:

curl.exe -u API_KEY:yyyyy https://intervals.icu/api/v1/athlete/xxxxx/wellness.csv?oldest=2022-07-18^&cols=weight,ActiveEnergy,Steps,restingHR,avgSleepingHR,SleepingHRrange,HRduringBP,DayAvgHR,DayHRrange,MeanRR,sleepSecs,REMSleep,AwakeTime,LightSleep,DeepSleep,systolic,diastolic,sleepQuality,stress,soreness,fatigue,mood,motivation,hydration,hrv,hrvSDNN,baevskySI,RespRate,readiness,PNSIndex,SNSIndex,LFPower,HFPower,LFPowerNorm,HFPowerNorm,RatioLFHF,PoincareSD1,PoincareSD2,TrainingAdvice -o test_i108871_wellness.csv

For ImReady4 Matlab script, only hrv, hrvSDNN and restingHR are used. If these values for you end up in another custom field, edit the script to replace the original field names with what you are using. There is only one occurrence where the fields are mapped:

image

1 Like

@Povedano I have updated ImReady4 to allow pulling values from custom fields.
See new config_athletes_template.m to find how to set field names

4 Likes

Will that be used in the populate one as well? To reimport all of those values?

Thank you @Inigo_Tolosa, just one thing, as per @MedTechCD previous message, don’t you need to include this custom fields on the “cols” specified by the API call?

Good remark. I hadn’t modified the script for populating, but it’s already updated

1 Like

You are right. Updated
Let me know if it works fine

Yes, it works just perfect. I am using the Snapshot values on the config file, and the script proceses them correctly:

FIELD_rMSSD = "HrvSnapshotRmssd"; % hrv/HrvSnapshotRmssd (Default/Snapshot). Modify only in case you want to pull the value from a custom field
FIELD_SDNN = "HrvSnapshotSdrr"; % hrvSDNN/HrvSnapshotSdrr (Default/Snapshot). Modify only in case you want to pull the value from a custom field
FIELD_RHR = "RestingHRSnapshot"; % restingHR/RestingHRSnapshot (Default/Snapshot). Modify only in case you want to pull the value from a custom field

Now I have a lack of data on the snapshot values, so I will stay with defaults values for a while and then I will make some tests to make the best decision on each field.

Thanks again.

1 Like

Be careful with SDRR because that stream is not filtered for artifacts/abnormal beats! SDNN is the filtered stream of SDRR!

SDRR

The standard deviation of the IBIs for all sinus beats (SDRR), including abnormal or false beats, is measured in ms. As with the SDNN, the SDRR measures how these intervals vary over time and is more accurate when calculated over 24 h because this longer period better represents slower processes and the cardiovascular system’s response to more diverse environmental stimuli and workloads. Abnormal beats may reflect cardiac dysfunction or noise that masquerades as HRV.

2 Likes

Yes, I know that. However, I do not have available the sDNN on Garmin… :disappointed:

Hi @david have a similar question/request. I just recently started using HRV4Training in conjunction with ImReady4 — the Dropbox integration works great, but I’m noticing some random overrides with the nightly Garmin resting HR and HRV (rMSSD). Sometimes the HRV4Training one wins and sometimes the Garmin one wins. E.g. today I have Garmin’s resting HR and rMSSD, but yesterday I got HRV4Training’s populated. And they’re not equivalent enough for any graphs or trends to make sense when mixed.

I think ideally I’d be able to define a source precedence order like what Apple Health does for multiple data sources, but a custom field would work well too. (If it helps, I prefer Garmin’s resting HR and HRV4Training’s rMSSD.)

hey @david , any input on this? I tried manually entering past Garmin resting HR values, but it looks like every time HRV4Training is synced, it overrides all previous days’ resting HR values too :frowning:

I have the same question more or less. I have been using HRV4training for the last couple of months but I have decide to use the Garmin nightly HRV and HR values instead since it is more convenient and shows the same trends more or less. Is there a way to change the historical values and change the source to Garmin from HRV4training? Right now they are mixed and the data can’t be used to spot trends etc.