# -*- coding: utf-8 -*-
import numpy as np
from ..epochs.eventrelated_utils import (
_eventrelated_addinfo,
_eventrelated_rate,
_eventrelated_sanitizeinput,
_eventrelated_sanitizeoutput,
)
# =============================================================================
# Internals
# =============================================================================
def _rsp_eventrelated_amplitude(epoch, output={}):
# Sanitize input
colnames = epoch.columns.values
if len([i for i in colnames if "RSP_Amplitude" in i]) == 0:
print(
"NeuroKit warning: rsp_eventrelated(): input does not"
"have an `RSP_Amplitude` column. Will skip all amplitude-related features."
)
return output
# Get baseline
if np.min(epoch.index.values) <= 0:
baseline = epoch["RSP_Amplitude"][epoch.index <= 0].values
signal = epoch["RSP_Amplitude"][epoch.index > 0].values
else:
baseline = epoch["RSP_Amplitude"][np.min(epoch.index.values) : np.min(epoch.index.values)].values
signal = epoch["RSP_Amplitude"][epoch.index > np.min(epoch.index)].values
# Max / Min / Mean
output["RSP_Amplitude_Max"] = np.max(signal) - np.mean(baseline)
output["RSP_Amplitude_Min"] = np.min(signal) - np.mean(baseline)
output["RSP_Amplitude_Mean"] = np.mean(signal) - np.mean(baseline)
return output
def _rsp_eventrelated_inspiration(epoch, output={}):
# Sanitize input
colnames = epoch.columns.values
if len([i for i in colnames if "RSP_Phase" in i]) == 0:
print(
"NeuroKit warning: rsp_eventrelated(): input does not"
"have an `RSP_Phase` column. Will not indicate whether"
"event onset concurs with inspiration."
)
return output
# Indication of inspiration
output["RSP_Phase"] = epoch["RSP_Phase"][epoch.index > 0].iloc[0]
output["RSP_Phase_Completion"] = epoch["RSP_Phase_Completion"][epoch.index > 0].iloc[0]
return output