Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix gfp computation #197

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Fix gfp computation #197

wants to merge 5 commits into from

Conversation

vferat
Copy link
Owner

@vferat vferat commented Sep 10, 2024

As discussed in #160 and #195, introduces changes to the Global Field Power (GFP) computation based on the selected channel type.

When the channel type is eeg, the GFP is now computed using the standard deviation (std).
When the channel type is grador mag, the GFP is computed using the root mean square (rms).

pycrostates/preprocessing/extract_gfp_peaks.py Outdated Show resolved Hide resolved
Comment on lines 34 to 45
def _std():
def compute_std(data):
return np.std(data, axis=0)

return compute_std


def _rms():
def compute_rms(data):
return np.sqrt(np.mean(data**2, axis=0))

return compute_rms
Copy link
Collaborator

@mscheltienne mscheltienne Sep 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to nest here and you could use a dict to store the GFP functions per channel type:

_GFP_FUNC: dict[str, Callable] = {
    "eeg": lambda x: np.std(x, axis=0),
    "grad": lambda x: np.sqrt(np.mean(x**2, axis=0)),
    "mag": lambda x: np.sqrt(np.mean(x**2, axis=0)),
}

# and later to use it:
_check_value(ch_type, _GFP_FUNC, "ch_type")
gfp = _GFP_FUNC[ch_type](data)

It removes the additional private functions and the nesting of function within, and removes the if/else logic on channel types.

@mscheltienne
Copy link
Collaborator

This is good to merge? @vferat

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants