changed script for combined feature creation

min duration for blink is now configurable in __main__
This commit is contained in:
Michael Weig 2026-01-22 18:39:33 +01:00
parent fc6c593f6b
commit d79fad909c

View File

@ -11,11 +11,12 @@ from pygazeanalyser.detectors import fixation_detection, saccade_detection
# KONFIGURATION
##############################################################################
INPUT_DIR = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/both_mod_parquet_files")
OUTPUT_FILE = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/new_datasets/combined_dataset_25hz.parquet")
OUTPUT_FILE = Path(r"/home/jovyan/data-paulusjafahrsimulator-gpu/new_datasets/fix_blink_combined_dataset_25hz.parquet")
WINDOW_SIZE_SAMPLES = 1250 # 50s bei 25Hz
STEP_SIZE_SAMPLES = 125 # 5s bei 25Hz
SAMPLING_RATE = 25 # Hz
MIN_DUR_BLINKS = 2 # x * 40ms
##############################################################################
@ -115,7 +116,7 @@ def compute_IPA(pupil, fs=25):
return np.sum(Pxx[hf_band])
def extract_eye_features_window(df_eye_window, fs=25):
def extract_eye_features_window(df_eye_window, fs=25, min_dur_blinks=2):
"""
Extrahiert Eye-Tracking Features für ein einzelnes Window.
Gibt Dictionary mit allen Eye-Features zurück.
@ -160,7 +161,7 @@ def extract_eye_features_window(df_eye_window, fs=25):
# ----------------------------
# BLINKS
# ----------------------------
blinks = detect_blinks(pupil_validity)
blinks = detect_blinks(pupil_validity, min_duration=min_dur_blinks)
blink_durations = [(b[1] - b[0]) / fs for b in blinks]
# ----------------------------
@ -197,7 +198,7 @@ def extract_eye_features_window(df_eye_window, fs=25):
# KOMBINIERTE FEATURE-EXTRAKTION
##############################################################################
def process_combined_features(input_dir, output_file, window_size, step_size, fs=25):
def process_combined_features(input_dir, output_file, window_size, step_size, fs=25,min_duration_blinks=2):
"""
Verarbeitet Parquet-Dateien mit FACE_AU und EYE Spalten.
Extrahiert beide Feature-Sets und kombiniert sie.
@ -285,7 +286,7 @@ def process_combined_features(input_dir, output_file, window_size, step_size, fs
# Eye-Tracking Features
if has_eye:
try:
eye_features = extract_eye_features_window(window_df[eye_columns], fs=fs)
eye_features = extract_eye_features_window(window_df[eye_columns], fs=fs,min_dur_blinks=min_duration_blinks)
result.update(eye_features)
except Exception as e:
print(f" WARNUNG: Eye-Features fehlgeschlagen: {str(e)}")
@ -358,7 +359,8 @@ def main():
output_file=OUTPUT_FILE,
window_size=WINDOW_SIZE_SAMPLES,
step_size=STEP_SIZE_SAMPLES,
fs=SAMPLING_RATE
fs=SAMPLING_RATE,
min_duration_blinks=MIN_DUR_BLINKS
)
if result is not None: