added clean eye df call to combined feature creation
bug fix, was missing in combined feature creation script
This commit is contained in:
parent
38e9354c42
commit
eee173dc0b
@ -11,7 +11,7 @@ from pygazeanalyser.detectors import fixation_detection, saccade_detection
|
|||||||
# KONFIGURATION
|
# KONFIGURATION
|
||||||
##############################################################################
|
##############################################################################
|
||||||
INPUT_DIR = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/both_mod_parquet_files")
|
INPUT_DIR = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/both_mod_parquet_files")
|
||||||
OUTPUT_FILE = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/new_datasets/blink_fix_dataset.parquet")
|
OUTPUT_FILE = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/new_datasets/50s_25Hz_dataset.parquet")
|
||||||
|
|
||||||
WINDOW_SIZE_SAMPLES = 25*50 # 50s bei 25Hz
|
WINDOW_SIZE_SAMPLES = 25*50 # 50s bei 25Hz
|
||||||
STEP_SIZE_SAMPLES = 125 # 5s bei 25Hz
|
STEP_SIZE_SAMPLES = 125 # 5s bei 25Hz
|
||||||
@ -26,6 +26,7 @@ MIN_DUR_BLINKS = 2 # x * 40ms
|
|||||||
def clean_eye_df(df):
|
def clean_eye_df(df):
|
||||||
"""Extrahiert nur Eye-Tracking Spalten und entfernt leere Zeilen."""
|
"""Extrahiert nur Eye-Tracking Spalten und entfernt leere Zeilen."""
|
||||||
eye_cols = [c for c in df.columns if c.startswith("EYE_")]
|
eye_cols = [c for c in df.columns if c.startswith("EYE_")]
|
||||||
|
|
||||||
if not eye_cols:
|
if not eye_cols:
|
||||||
return pd.DataFrame()
|
return pd.DataFrame()
|
||||||
|
|
||||||
@ -56,13 +57,14 @@ def extract_gaze_signal(df):
|
|||||||
gx_R[~val_R] = np.nan
|
gx_R[~val_R] = np.nan
|
||||||
gy_R[~val_R] = np.nan
|
gy_R[~val_R] = np.nan
|
||||||
|
|
||||||
|
|
||||||
# Mittelwert beider Augen
|
# Mittelwert beider Augen
|
||||||
gx = np.mean(np.column_stack([gx_L, gx_R]), axis=1)
|
gx = np.mean(np.column_stack([gx_L, gx_R]), axis=1)
|
||||||
gy = np.mean(np.column_stack([gy_L, gy_R]), axis=1)
|
gy = np.mean(np.column_stack([gy_L, gy_R]), axis=1)
|
||||||
|
|
||||||
# Interpolation
|
# Interpolation
|
||||||
gx = pd.Series(gx).interpolate(limit=50, limit_direction="both").bfill().ffill()
|
gx = pd.Series(gx).interpolate(limit=None, limit_direction="both").bfill().ffill()
|
||||||
gy = pd.Series(gy).interpolate(limit=50, limit_direction="both").bfill().ffill()
|
gy = pd.Series(gy).interpolate(limit=None, limit_direction="both").bfill().ffill()
|
||||||
|
|
||||||
# MinMax Skalierung
|
# MinMax Skalierung
|
||||||
xscaler = MinMaxScaler()
|
xscaler = MinMaxScaler()
|
||||||
@ -226,6 +228,7 @@ def process_combined_features(input_dir, output_file, window_size, step_size, fs
|
|||||||
try:
|
try:
|
||||||
df = pd.read_parquet(parquet_file)
|
df = pd.read_parquet(parquet_file)
|
||||||
print(f" Einträge: {len(df)}")
|
print(f" Einträge: {len(df)}")
|
||||||
|
|
||||||
|
|
||||||
# Identifiziere Spalten
|
# Identifiziere Spalten
|
||||||
au_columns = [col for col in df.columns if col.startswith('FACE_AU')]
|
au_columns = [col for col in df.columns if col.startswith('FACE_AU')]
|
||||||
@ -286,6 +289,9 @@ def process_combined_features(input_dir, output_file, window_size, step_size, fs
|
|||||||
# Eye-Tracking Features
|
# Eye-Tracking Features
|
||||||
if has_eye:
|
if has_eye:
|
||||||
try:
|
try:
|
||||||
|
# clean dataframe from all nan rows
|
||||||
|
window_df= clean_eye_df(window_df)
|
||||||
|
|
||||||
eye_features = extract_eye_features_window(window_df[eye_columns], fs=fs,min_dur_blinks=min_duration_blinks)
|
eye_features = extract_eye_features_window(window_df[eye_columns], fs=fs,min_dur_blinks=min_duration_blinks)
|
||||||
result.update(eye_features)
|
result.update(eye_features)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user