2021-07-26 11:37:31 +02:00
# ---
# jupyter:
# jupytext:
# formats: ipynb,py:percent
# text_representation:
# extension: .py
# format_name: percent
# format_version: '1.3'
# jupytext_version: 1.11.4
# kernelspec:
# display_name: straw2analysis
# language: python
# name: straw2analysis
# ---
# %%
# %matplotlib inline
import datetime
2021-08-20 17:52:31 +02:00
import importlib
2021-07-26 11:37:31 +02:00
import os
import sys
import seaborn as sns
from pytz import timezone
from tabulate import tabulate
nb_dir = os . path . split ( os . getcwd ( ) ) [ 0 ]
if nb_dir not in sys . path :
sys . path . append ( nb_dir )
import participants . query_db
TZ_LJ = timezone ( " Europe/Ljubljana " )
# %%
2021-08-20 17:52:31 +02:00
from features import helper , proximity
# %%
importlib . reload ( proximity )
2021-07-26 11:37:31 +02:00
# %% [markdown]
# # Basic characteristics
# %%
2021-08-20 17:52:31 +02:00
df_proximity_nokia = proximity . get_proximity_data ( [ " nokia_0000003 " ] )
2021-07-26 11:37:31 +02:00
print ( df_proximity_nokia )
# %%
df_proximity_nokia . double_proximity . value_counts ( )
# %% [markdown]
# `double_proximity` is "the distance to an object in front of the mobile device or binary presence (**manufacturer dependent**)."
#
# "Most proximity sensors return [the absolute distance, in cm](https://developer.android.com/guide/topics/sensors/sensors_position#sensors-pos-prox), but some return only near and far values.
#
# Note: Some proximity sensors return binary values that represent "near" or "far." In this case, the sensor usually reports its maximum range value in the far state and a lesser value in the near state. Typically, the far value is a value > 5 cm, but this can vary from sensor to sensor. You can determine a sensor's maximum range by using the getMaximumRange() method."
# %%
participants_inactive_usernames = participants . query_db . get_usernames ( )
2021-08-20 17:52:31 +02:00
df_proximity_inactive = proximity . get_proximity_data ( participants_inactive_usernames )
2021-07-26 11:37:31 +02:00
# %%
df_proximity_inactive . double_proximity . describe ( )
# %%
sns . displot (
data = df_proximity_inactive , x = " double_proximity " , binwidth = 0.2 , height = 8 ,
)
# %%
df_proximity_inactive . double_proximity . value_counts ( )
2021-07-26 17:16:32 +02:00
# %% [markdown]
# We have already seen 5.0 and 5.000305 from the same device. What about other values?
# %% [markdown]
# # Participant proximity values
# %%
df_proximity_combinations = pd . crosstab (
df_proximity_inactive . username , df_proximity_inactive . double_proximity
)
display ( df_proximity_combinations )
# %% [markdown]
# Proximity labelled as 0 and 1.
# %%
df_proximity_combinations [ df_proximity_combinations [ 1 ] != 0 ]
# %% [markdown]
# Proximity labelled as 0 and 8.
# %%
df_proximity_combinations [ df_proximity_combinations [ 8 ] != 0 ]
# %% [markdown]
# The rest of the devices have proximity labelled as 0 and 5.00030517578125 or both of these values for "far".
# %%
df_proximity_combinations [
( df_proximity_combinations [ 5.0 ] != 0 )
& ( df_proximity_combinations [ 5.00030517578125 ] == 0 )
]
# %%
df_proximity_combinations [
( df_proximity_combinations [ 5.0 ] == 0 )
& ( df_proximity_combinations [ 5.00030517578125 ] != 0 )
]
2021-07-26 11:37:31 +02:00
# %%
2021-07-26 17:16:32 +02:00
df_proximity_combinations [
( df_proximity_combinations [ 5.0 ] != 0 )
& ( df_proximity_combinations [ 5.00030517578125 ] != 0 )
]
2021-08-20 17:52:31 +02:00
# %% [markdown]
# # Features
# %%
df_proximity_inactive = helper . get_date_from_timestamp ( df_proximity_inactive )
# %%
df_proximity_features = proximity . count_proximity ( df_proximity_inactive , [ " date_lj " ] )
display ( df_proximity_features )