In [1]:
import sqlite3
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import scipy
%matplotlib inline
In [13]:
# FRIDGE
filename = "fridge.db"
conn = sqlite3.connect(filename)
data_query = 'SELECT * FROM mags'
df = pd.read_sql_query(data_query, conn, index_col='created_at')
df.index = pd.to_datetime(df.index, unit='ms')
df['Mag'] = (df.val1**2 + df.val2**2 + df.val3**2)**(1/2)
plt.subplots(figsize=(16,9))
plt.plot(df.id, df.val1, color='red', label='X')
plt.plot(df.id, df.val2, color='green', label='Y')
plt.plot(df.id, df.val3, color='blue', label='Z')
plt.plot(df.id, df.Mag, color='black', label='M')
plt.xticks(rotation=90)
plt.xlim([1300, 2650])
plt.grid()
plt.legend()
Out[13]:
<matplotlib.legend.Legend at 0xa3bce10>
In [15]:
# DESK - phone's length parallel to metal bar under desk
filename = "desk.db"
conn = sqlite3.connect(filename)
data_query = 'SELECT * FROM mags'
df = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
df.index = pd.to_datetime(df.index, unit='ms')
df.columns = ['Mx', 'My', 'Mz']
df['Mag'] = (df.Mx**2 + df.My**2 + df.Mz**2)**(1/2)
df['seconds'] = df.index.second
data_query = 'SELECT * FROM markers'
markerdf = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
markerdf.index = pd.to_datetime(markerdf.index, unit='ms')
# print(markerdf.head())
plt.subplots(figsize=(16,9))
plt.plot(df.index, df.Mx, color='red', label='X')
plt.plot(df.index, df.My, color='green', label='Y')
plt.plot(df.index, df.Mz, color='blue', label='Z')
plt.plot(df.index, df.Mag, color='black', label='Mag')
plt.xticks(rotation=90)
plt.legend(loc=2)
plt.grid()
[plt.axvline(x=[markerdf.index[i]]) for i in range(len(markerdf))]
leg = plt.legend()
for lab in leg.get_lines():
    lab.set_linewidth(3)
In [16]:
# DESK rotate phone 90 degrees - phone's length normal to metal bar under desk
filename = "desk90dr.db"
conn = sqlite3.connect(filename)
data_query = 'SELECT * FROM mags'
df = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
df.index = pd.to_datetime(df.index, unit='ms')
df.columns = ['Mx', 'My', 'Mz']
df['Mag'] = (df.Mx**2 + df.My**2 + df.Mz**2)**(1/2)
df['seconds'] = df.index.second
data_query = 'SELECT * FROM markers'
markerdf = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
markerdf.index = pd.to_datetime(markerdf.index, unit='ms')
# print(markerdf.head())
plt.subplots(figsize=(16,9))
plt.plot(df.index, df.Mx, color='red', label='X')
plt.plot(df.index, df.My, color='green', label='Y')
plt.plot(df.index, df.Mz, color='blue', label='Z')
plt.plot(df.index, df.Mag, color='black', label='Mag')
plt.xticks(rotation=90)
plt.legend(loc=2)
plt.grid()
[plt.axvline(x=[markerdf.index[i]]) for i in range(len(markerdf))]
leg = plt.legend()
for lab in leg.get_lines():
    lab.set_linewidth(3)
In [18]:
# DESK rotate phone 90 degrees - phone's length normal to metal bar under desk
# Normalize signals
conn = sqlite3.connect(filename)
data_query = 'SELECT * FROM mags'
df = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
df.index = pd.to_datetime(df.index, unit='ms')
df.columns = ['Mx', 'My', 'Mz']
df['Mag'] = (df.Mx**2 + df.My**2 + df.Mz**2)**(1/2)
data_query = 'SELECT * FROM markers'
markerdf = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
markerdf.index = pd.to_datetime(markerdf.index, unit='ms')
#  making it delta from a baseline of first 20 samples
df = df.sub(df[0:20].mean())
df['seconds'] = df.index.second
print("Mag sensor polling rate: " + str(len(df)/(df.index[-1] - df.index[0]).seconds) + " Hz")
df['seconds'] = df.index.second
data_query = 'SELECT * FROM markers'
markerdf = pd.read_sql_query(data_query, conn, index_col='created_at').drop(['id'], axis=1)
markerdf.index = pd.to_datetime(markerdf.index, unit='ms')
plt.subplots(figsize=(16,9))
plt.plot(df.index, df.Mx, color='red', label='X')
plt.plot(df.index, df.My, color='green', label='Y')
plt.plot(df.index, df.Mz, color='blue', label='Z')
plt.plot(df.index, df.Mag, color='black', label='Mag')
plt.xticks(rotation=90)
plt.legend(loc=2)
plt.grid()
[plt.axvline(x=[markerdf.index[i]]) for i in range(len(markerdf))]
leg = plt.legend()
for lab in leg.get_lines():
    lab.set_linewidth(3)
Mag sensor polling rate: 98.74074074074075 Hz
In [ ]: