1
0
Fork 0
Data analysis on the light meter readings taken with the Light Meter project. The main area of study is the health and safety concerns regarding epilepsy.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

72 lines
3.2 KiB

from services import io_services, log_services, data_services
def main():
# File paths used to save and load the data.
raw_data_path = "data/test-data.csv"
rps_save_path = "data/results/readings-per-sec.csv"
rps_above_thresh = "data/results/readings_above_threshold.csv"
flicker_list = "data/results/flicker_list.csv"
filtered_flickers = "data/results/filtered_flicker_entries.csv"
# Step 1
# ======
# Load the raw data, taken from the exported database.
raw_data = io_services.load_raw_data(raw_data_path)
# log_services.print_list(raw_data)
# Step 2
# ======
# Tally-up how many readings occured for each second in the
# raw data. For example, for the period between 2021-04-23
# 07:03:57 and 2021-04-23 07:03:58, how many readings did the
# system take? Was it 1, 3, Etc.
time_tallies = data_services.tally_readings_per_second(raw_data)
# log_services.print_dictionary(time_tallies)
# Step 3
# ======
# Count the number of tallies derived from step 2. So, how
# many time did the system take 2 readings-per-second, how many
# times did the system 3 readings-per-second Etc.
rps_totals = data_services.total_count_for_each_reading_per_second(time_tallies)
# log_services.print_dictionary(rps_totals)
io_services.save_rps_totals(rps_totals, rps_save_path)
# Step 4
# ======
# List out all the time periods which had more than the
# specified readings-per-second. The default value is any time
# period with more than 4 readings-per-second but you can change
# it (it's a function argument).
rps_above_hertz = data_services.get_rps_above(4, time_tallies)
# log_services.print_list(rps_above_two)
io_services.save_rps_above_threshold(rps_above_hertz, rps_above_thresh)
# Step 5
# ======
# Using the list of time periods derived in step 4
# (rps_above_hertz), create a new list from the raw data (step
# 1). Filter out the time periods created in step 4 and include
# all their readings for that time period (I.E. second). An
# example of this is: The list created in step 4 shows the time
# period between 2021-04-23 07:03:57 and 2021-04-23 07:03:58 has 4
# readings so note the (start) time and how the readings recorded
# in that period.
flicker_entries = data_services.find_flickers(rps_above_hertz, raw_data)
# log_services.print_dictionary(flicker_tallies)
io_services.save_rps_totals(flicker_entries, flicker_list)
# Step 6
# =======
# This step filters out the time periods which pass the hertz
# threshold to those which have at least one reading in its (1
# second period) grouping to cause the light to turn on in the
# gallery ('gallery1'). If this list contains any readings, you
# can review them to make sure the light doesn't turn on and off
# enough times to potentially cause a photo-epileptic seizure.
filtered_flicker_entries = data_services.find_readings_with_lights_on(flicker_entries)
# log_services.print_list(filtered_flicker_entries)
io_services.save_filtered_flickers(filtered_flicker_entries, filtered_flickers)
if __name__ == "__main__":
main()