BUCANL / EEG-IP-L

The EEG Integrated Platform Lossless (EEG-IP-L) Pipeline
GNU General Public License v2.0
5 stars 6 forks source link

What Constant (AKA `k` ) is the IQR multiplied by? #4

Closed scott-huberty closed 1 year ago

scott-huberty commented 1 year ago

I want to confirm what Constant the IQR was multiplied by when setting the threshold in the "criterion function".

Section 2.3 of the paper seems to say 6:

"Outlying time windows for each channel can be identified by calculating the median as well as an upper and lower quantile of the input measure for the channel, then setting a threshold of a given inter-quantile range (e.g., 6 times the distance between the median and the inner edge of the upper or lower quantile)"

The documentation for sd_t_o and r_ch_ etc on this page also says 6: https://github.com/BUCANL/EEG-IP-L/wiki/Pipeline-Scripts

But The values for those fields in c01_scalpart_remote are actually 16:

https://github.com/BUCANL/EEG-IP-L/blob/fb18a3277aecc7422a82b519b587d5376a46bd87/code/config/face13_sbatch/c01_scalpart_remote.cfg#L14

https://github.com/BUCANL/EEG-IP-L/blob/fb18a3277aecc7422a82b519b587d5376a46bd87/code/config/face13_sbatch/c01_scalpart_remote.cfg#L41

https://github.com/BUCANL/EEG-IP-L/blob/fb18a3277aecc7422a82b519b587d5376a46bd87/code/config/face13_sbatch/c01_scalpart_remote.cfg#L32

And finally, the value for sd_t_o in c03_compart_data_remote (for flagging components) is indeed 6 https://github.com/BUCANL/EEG-IP-L/blob/fb18a3277aecc7422a82b519b587d5376a46bd87/code/config/face13_sbatch/c03_compart_data_remote.cfg#L11

In Pylossless we ported the default values listed in c01_scalpart_remote. @christian-oreilly and I always thought 16 was strangely high. But it was not until now that I realized that there was a mistake. (Either we misinterpreted the purpose of c01, or the default value of 16 in c01 is a mistake).

Can someone confirm what the Constant should be and does anymore remember well enough to explain why the constant is 16 in c01?

scott-huberty commented 1 year ago

Here's another clue for flagging low r channels specifically:

Even though the paper and the wiki say the Constant to multiply by the IQR is 6, The comments in the code suggest 3 may have been used for this step:

https://github.com/BUCANL/EEG-IP-L/blob/fb18a3277aecc7422a82b519b587d5376a46bd87/code/scripts/s01_scalpart.htb#L28

Although I tried setting r_ch_o to 3 in a pylossless run on sub-s01 of face13, and it ended up flagging 2-3 times more channels as low_r as the matlab run did.

scott-huberty commented 1 year ago

I have a feeling that the default values of 16 were used for the EEG-IP (infant) data... and the defaults were never set back to 6 ?

scott-huberty commented 1 year ago

Since the information I was looking for regarding Face13 was here: https://github.com/BUCANL/Face13/blob/master/derivatives/lossless/code/config/face13_sbatch/c01_scalpart_remote.cfg

And this repo is more or less obsolete - I'll close this issue