2020-06-22 18:01:17 +02:00
import numpy as np
2020-04-02 23:36:28 +02:00
import pandas as pd
2020-05-28 23:17:25 +02:00
from accelerometer . accelerometer_base import base_accelerometer_features
2020-04-02 23:36:28 +02:00
acc_data = pd . read_csv ( snakemake . input [ 0 ] , parse_dates = [ " local_date_time " , " local_date " ] )
day_segment = snakemake . params [ " day_segment " ]
2020-06-22 18:01:17 +02:00
requested_features = { }
requested_features [ " magnitude " ] = snakemake . params [ " magnitude " ]
2020-06-22 19:47:25 +02:00
requested_features [ " exertional_activity_episode " ] = [ feature + " exertionalactivityepisode " for feature in snakemake . params [ " exertional_activity_episode " ] ]
requested_features [ " nonexertional_activity_episode " ] = [ feature + " nonexertionalactivityepisode " for feature in snakemake . params [ " nonexertional_activity_episode " ] ]
2020-06-22 18:01:17 +02:00
valid_sensed_minutes = snakemake . params [ " valid_sensed_minutes " ]
2020-05-28 23:17:25 +02:00
acc_features = pd . DataFrame ( columns = [ " local_date " ] )
2020-04-02 23:36:28 +02:00
2020-06-22 18:01:17 +02:00
acc_features = acc_features . merge ( base_accelerometer_features ( acc_data , day_segment , requested_features , valid_sensed_minutes ) , on = " local_date " , how = " outer " )
2020-04-02 23:36:28 +02:00
2020-06-22 18:01:17 +02:00
assert np . sum ( [ len ( x ) for x in requested_features . values ( ) ] ) + ( 1 if valid_sensed_minutes else 0 ) + 1 == acc_features . shape [ 1 ] , " The number of features in the output dataframe (= " + str ( acc_features . shape [ 1 ] ) + " ) does not match the expected value (= " + str ( np . sum ( [ len ( x ) for x in requested_features . values ( ) ] ) + ( 1 if valid_sensed_minutes else 0 ) ) + " + 1). Verify your accelerometer feature extraction functions "
2020-04-02 23:36:28 +02:00
acc_features . to_csv ( snakemake . output [ 0 ] , index = False )