From 124843f96e29bc88ad06920d641bd9b36cb468c4 Mon Sep 17 00:00:00 2001 From: Meng Li <34143965+Meng6@users.noreply.github.com> Date: Tue, 21 Jul 2020 20:41:24 -0400 Subject: [PATCH] Make phone_valid_sensed_days rule works for different min_valid_hours_per_day thresholds --- Snakefile | 2 +- config.yaml | 4 ++-- rules/preprocessing.snakefile | 6 +++--- src/data/phone_valid_sensed_days.R | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Snakefile b/Snakefile index 531a5979..916b098b 100644 --- a/Snakefile +++ b/Snakefile @@ -22,7 +22,7 @@ if config["PHONE_VALID_SENSED_DAYS"]["COMPUTE"]: if len(config["PHONE_VALID_SENSED_BINS"]["TABLES"]) == 0: raise ValueError("If you want to compute PHONE_VALID_SENSED_DAYS, you need to add at least one table to [PHONE_VALID_SENSED_BINS][TABLES] in config.yaml") files_to_compute.extend(expand("data/interim/{pid}/phone_sensed_bins.csv", pid=config["PIDS"])) - files_to_compute.extend(expand("data/interim/{pid}/phone_valid_sensed_days.csv", pid=config["PIDS"])) + files_to_compute.extend(expand("data/interim/{pid}/phone_valid_sensed_days_{min_valid_hours_per_day}h.csv", pid=config["PIDS"], min_valid_hours_per_day=config["PHONE_VALID_SENSED_DAYS"]["MIN_VALID_HOURS_PER_DAY"])) if config["MESSAGES"]["COMPUTE"]: files_to_compute.extend(expand("data/raw/{pid}/{sensor}_raw.csv", pid=config["PIDS"], sensor=config["MESSAGES"]["DB_TABLE"])) diff --git a/config.yaml b/config.yaml index 21b09f81..11266276 100644 --- a/config.yaml +++ b/config.yaml @@ -32,11 +32,11 @@ PHONE_VALID_SENSED_BINS: BIN_SIZE: 5 # (in minutes) # Add as many sensor tables as you have, they all improve the computation of PHONE_VALID_SENSED_BINS and PHONE_VALID_SENSED_DAYS. # If you are extracting screen or Barnett's location features, screen and locations tables are mandatory. - TABLES: [locations] + TABLES: [] PHONE_VALID_SENSED_DAYS: COMPUTE: False - MIN_VALID_HOURS_PER_DAY: 16 # (out of 24) MIN_HOURS_PER_DAY + MIN_VALID_HOURS_PER_DAY: [16, 18, 20] # (out of 24) MIN_HOURS_PER_DAY MIN_VALID_BINS_PER_HOUR: 6 # (out of 60min/BIN_SIZE bins) # Communication SMS features config, TYPES and FEATURES keys need to match diff --git a/rules/preprocessing.snakefile b/rules/preprocessing.snakefile index 2f94156f..2fb4c70e 100644 --- a/rules/preprocessing.snakefile +++ b/rules/preprocessing.snakefile @@ -22,7 +22,7 @@ rule download_dataset: "../src/data/download_dataset.R" PHONE_SENSORS = [] -PHONE_SENSORS.extend([config["MESSAGES"]["DB_TABLE"], config["CALLS"]["DB_TABLE"], config["BARNETT_LOCATION"]["DB_TABLE"], config["BLUETOOTH"]["DB_TABLE"], config["BATTERY"]["DB_TABLE"], config["SCREEN"]["DB_TABLE"], config["LIGHT"]["DB_TABLE"], config["ACCELEROMETER"]["DB_TABLE"], config["APPLICATIONS_FOREGROUND"]["DB_TABLE"],config["WIFI"]["DB_TABLE"], config["CONVERSATION"]["DB_TABLE"]["ANDROID"], config["CONVERSATION"]["DB_TABLE"]["IOS"], config["ACTIVITY_RECOGNITION"]["DB_TABLE"]["ANDROID"], config["ACTIVITY_RECOGNITION"]["DB_TABLE"]["IOS"]]) +PHONE_SENSORS.extend([config["MESSAGES"]["DB_TABLE"], config["CALLS"]["DB_TABLE"], config["BARNETT_LOCATION"]["DB_TABLE"], config["DORYAB_LOCATION"]["DB_TABLE"], config["BLUETOOTH"]["DB_TABLE"], config["BATTERY"]["DB_TABLE"], config["SCREEN"]["DB_TABLE"], config["LIGHT"]["DB_TABLE"], config["ACCELEROMETER"]["DB_TABLE"], config["APPLICATIONS_FOREGROUND"]["DB_TABLE"],config["WIFI"]["DB_TABLE"], config["CONVERSATION"]["DB_TABLE"]["ANDROID"], config["CONVERSATION"]["DB_TABLE"]["IOS"], config["ACTIVITY_RECOGNITION"]["DB_TABLE"]["ANDROID"], config["ACTIVITY_RECOGNITION"]["DB_TABLE"]["IOS"]]) rule readable_datetime: input: @@ -51,10 +51,10 @@ rule phone_valid_sensed_days: input: phone_sensed_bins = "data/interim/{pid}/phone_sensed_bins.csv" params: - min_valid_hours_per_day = config["PHONE_VALID_SENSED_DAYS"]["MIN_VALID_HOURS_PER_DAY"], + min_valid_hours_per_day = "{min_valid_hours_per_day}", min_valid_bins_per_hour = config["PHONE_VALID_SENSED_DAYS"]["MIN_VALID_BINS_PER_HOUR"] output: - "data/interim/{pid}/phone_valid_sensed_days.csv" + "data/interim/{pid}/phone_valid_sensed_days_{min_valid_hours_per_day}h.csv" script: "../src/data/phone_valid_sensed_days.R" diff --git a/src/data/phone_valid_sensed_days.R b/src/data/phone_valid_sensed_days.R index 9b13aaad..a3046ae9 100644 --- a/src/data/phone_valid_sensed_days.R +++ b/src/data/phone_valid_sensed_days.R @@ -3,7 +3,7 @@ library("dplyr") library("tidyr") phone_sensed_bins <- read.csv(snakemake@input[["phone_sensed_bins"]]) -min_valid_hours_per_day <- snakemake@params[["min_valid_hours_per_day"]] +min_valid_hours_per_day <- as.integer(snakemake@params[["min_valid_hours_per_day"]]) min_valid_bins_per_hour <- snakemake@params[["min_valid_bins_per_hour"]] output_file <- snakemake@output[[1]]