30 lines
1.6 KiB
Python
30 lines
1.6 KiB
Python
|
import pandas as pd
|
||
|
import numpy as np
|
||
|
from datetime import datetime
|
||
|
|
||
|
import sys
|
||
|
|
||
|
def calculate_empatica_data_yield(features):
|
||
|
# Get time segment duration in seconds from dataframe
|
||
|
datetime_start = datetime.strptime(df.loc[0, 'local_segment_start_datetime'], '%y-%m-%d %H:%M:%S')
|
||
|
datetime_end = datetime.strptime(df.loc[0, 'local_segment_end_datetime'], '%y-%m-%d %H:%M:%S')
|
||
|
tseg_duration = (datetime_end - datetime_start).total_seconds()
|
||
|
|
||
|
acc_data_yield = (features['empatica_accelerometer_cr_SO_windowsCount'] * 15) / tseg_duration
|
||
|
temp_data_yield = (features['empatica_temperature_cr_SO_windowsCount'] * 300) / tseg_duration
|
||
|
acc_data_yield = (features['empatica_electrodermal_activity_cr_SO_windowsCount'] * 60) / tseg_duration
|
||
|
ibi_data_yield = (features['empatica_inter_beat_interval_cr_SO_windowsCount'] * 300) / tseg_duration
|
||
|
|
||
|
# TODO: morda smisleno obdelovati različne senzorje ločeno -> lahko da ibi ne bo dobre kvalitete, ostali pa bodo okej. Zakaj bi samo zaradi IBI zavrgli celotno vrstico ...
|
||
|
# lahko se tudi naredi overall kvaliteta empatice npr. povprečje vseh data_yield rezultatov? Oz. povprečje z utežmi glede na število stolpcev, ki jih senzor vsebuje
|
||
|
# ... čeprav št. stolpcev ni najboljše, saj je pomembnost nekaterih (npr. EDA) značilk zelo vprašljiva.
|
||
|
# TODO: bolja nastavitev delovnih ur sedaj je od 4 do 4... to povzroči veliko manjkajočih podatkov in posledično nizek (telefonski in E4) data_yield ...
|
||
|
|
||
|
data_yield_features = [col for col in features.columns if "SO_windowsCount" in col and "a"]
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|