37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
|
import pandas as pd
|
||
|
import numpy as np
|
||
|
from sklearn.preprocessing import StandardScaler
|
||
|
|
||
|
import sys
|
||
|
|
||
|
sensor_data_files = dict(snakemake.input)
|
||
|
|
||
|
provider = snakemake.params["provider"]
|
||
|
provider_key = snakemake.params["provider_key"]
|
||
|
sensor_key = snakemake.params["sensor_key"]
|
||
|
|
||
|
pd.set_option('display.max_columns', None)
|
||
|
|
||
|
if provider_key == "cr":
|
||
|
sys.path.append('/rapids/src/features/')
|
||
|
from cr_features_helper_methods import extract_second_order_features
|
||
|
|
||
|
provider_main = snakemake.params["provider_main"]
|
||
|
prefix = sensor_key + "_" + provider_key + "_"
|
||
|
|
||
|
windows_features_data = pd.read_csv(sensor_data_files["windows_features_data"])
|
||
|
excluded_columns = ['local_segment', 'local_segment_label', 'local_segment_start_datetime', 'local_segment_end_datetime', prefix + "level_1"]
|
||
|
windows_features_data.loc[:, ~windows_features_data.columns.isin(excluded_columns)] = \
|
||
|
StandardScaler().fit_transform(windows_features_data.loc[:, ~windows_features_data.columns.isin(excluded_columns)])
|
||
|
|
||
|
windows_features_data.to_csv(snakemake.output[1], index=False)
|
||
|
|
||
|
if provider_main["WINDOWS"]["COMPUTE"] and "SECOND_ORDER_FEATURES" in provider_main["WINDOWS"]:
|
||
|
so_features_names = provider_main["WINDOWS"]["SECOND_ORDER_FEATURES"]
|
||
|
windows_so_features_data = extract_second_order_features(windows_features_data, so_features_names, prefix)
|
||
|
windows_so_features_data.to_csv(snakemake.output[0], index=False)
|
||
|
else:
|
||
|
pd.DataFrame().to_csv(snakemake.output[0], index=False)
|
||
|
|
||
|
else:
|
||
|
pass #To-Do for the rest of the sensors.
|