diff --git a/analysis/SleepReportModule.py b/analysis/SleepReportModule.py new file mode 100644 index 0000000..14726ba --- /dev/null +++ b/analysis/SleepReportModule.py @@ -0,0 +1,48 @@ +import pandas as pd +from pandas import DataFrame +import numpy as np + + +class SleepReportAnalysis(object): + """A Class to Produce a morning Sleep Report""" + + def __init__(self, data=None, dataframe=None, frame1=None, frame2=None): + self.data = data + self.dataframe = dataframe + self.frame1 = frame1 + self.frame2 = frame2 + + def ProduceDataFrame(self, data): + """Function to produce dataframe""" + df = pd.read_csv(self.data, header=None, names=['Timestamp', + 'Magnitude']) + df = df.dropna() + df['Timestamp'] = df['Timestamp'].astype(np.datetime64) + return df + + def DataOverview(self, dataframe): + """Function to provide top level overview of data""" + return dataframe.describe() + + def HighestPeaks(self, dataframe): + """Fucntion to ID highest peaks in data""" + dfsorted1= dataframe.sort_values('Magnitude', axis=0, + ascending=False).head(n=150) + dfsorted2= dfsorted1.sort_values('Timestamp', axis=0, ascending=True) + return dfsorted2 + + def CalcDiff(self, dataframe): + """Function to calculate the time span between readings""" + difference = dataframe.diff(periods=1, axis=0) + difference2 = difference[difference.Timestamp >= '00:10:00'] + #update the timestamp to desired length of time span + return difference2 + + def ProduceSleepReport(self, frame1, frame2): + """Function to produce the Sleep Report, + Frame1 should be CalcDiff Output""" + frames = [frame1, frame2] + result = pd.concat(frames, axis=1).dropna().drop('Magnitude', axis=1) + cols=['Length Between Peak', 'Timestamp of Peak'] + result.columns = cols + return result diff --git a/analysis/html_output_mod.py b/analysis/html_output_mod.py new file mode 100644 index 0000000..6fc3f9d --- /dev/null +++ b/analysis/html_output_mod.py @@ -0,0 +1,45 @@ +import pandas as pd +from pandas import DataFrame +import bokeh.charts +import numpy as np + +class Produce_html_files(object): + """Class that prduces html format report files""" + + def __init__(self, dataframe=None, x=None, y=None, + title=None, xlabel=None, ylabel=None, + directory=None, filename=None): + self.dataframe = dataframe + self.x = x + self.y = y + self.title =title + self.xlabel = xlabel + self.ylabel = ylabel + self.directory = directory + self.filename = filename + + def plotscatter(self, dataframe, x, y, title, xlabel, + ylabel, directory, filename): + """Function to plot and export Scatter Chart to html""" + filename = directory+filename + plot = bokeh.charts.Scatter(dataframe, x=x, y=y, + title = title, xlabel=xlabel, + ylabel=ylabel) + bokeh.charts.output_file(filename) + + def plotline(self, dataframe, x, y, title, xlabel, + ylabel, directory, filename): + """Function to plot and export Line Chart to html""" + filename = directory+filename + plot = bokeh.charts.Line(dataframe, x=x, y=y, + title = title, xlabel=xlabel, + ylabel=ylabel) + bokeh.charts.output_file(filename) + + def WritetoHTML(self, dataframe, directory, filename): + """Writes reports to html""" + filename = directory+filename + html_str= dataframe.to_html() + html_file = open(filename, 'w') + html_file.write(html_str) + html_file.close() \ No newline at end of file