def read_tap_json(input_file, start=0): """ Read screen tap json file. Parameters ---------- input_file : string name of input screen tap json file start : integer starting index (remove beginning) Returns ------- t : list time points for tap data tx : list x coordinates of touch screen ty : list y coordinates of touch screen button : list buttons tapped sample_rate : float sample rate duration : float duration of time series Examples -------- >>> from mhealthx.xio import read_tap_json >>> input_file = '/Users/arno/DriveWork/mhealthx/mpower_sample_data/tapping_results.json.TappingSamples-49d2531d-dbda-4b6d-b403-f8763b8e05841011283015383434299.tmp' >>> start = 0 >>> t, tx, ty, button, sample_rate, duration = read_tap_json(input_file, start) """ import json import re from mhealthx.signals import compute_sample_rate f = open(input_file, 'r') json_strings = f.readlines() parsed_jsons = json.loads(json_strings[0]) t = [] tx = [] ty = [] button = [] for parsed_json in parsed_jsons[start::]: txy = re.findall(r'\d+', parsed_json['TapCoordinate']) tx.append(int(txy[0])) ty.append(int(txy[1])) t.append(parsed_json['TapTimeStamp']) button.append(parsed_json['TappedButtonId']) sample_rate, duration = compute_sample_rate(t) return t, tx, ty, button, sample_rate, duration
def read_accel_json(input_file, start=0, device_motion=True): """ Read accelerometer or deviceMotion json file. Parameters ---------- input_file : string name of input accelerometer json file start : integer starting index (remove beginning) device_motion : Boolean use deviceMotion vs. accelerometer json file? Returns ------- t : list time points for accelerometer data axyz : list of lists x-, y-, and z-axis accelerometer data gxyz : list of lists x-, y-, and z-axis gravity (if deviceMotion) wxyz : list of lists w, x, y, z attitude quaternion (if deviceMotion) rxyz : list of lists x-, y-, and z-axis rotationRate (if deviceMotion) sample_rate : float sample rate duration : float duration of time series Examples -------- >>> from mhealthx.xio import read_accel_json >>> input_file = '/Users/arno/DriveWork/mhealthx/mpower_sample_data/deviceMotion_walking_outbound.json.items-90f7096a-84ac-4f29-a4d1-236ef92c3d262549858224214804657.tmp' >>> start = 150 >>> device_motion = True >>> t, axyz, gxyz, wxyz, rxyz, sample_rate, duration = read_accel_json(input_file, start, device_motion) """ import json from mhealthx.signals import compute_sample_rate, gravity_min_mse f = open(input_file, 'r') json_strings = f.readlines() parsed_jsons = json.loads(json_strings[0]) t = [] ax = [] ay = [] az = [] gx = [] gy = [] gz = [] uw = [] ux = [] uy = [] uz = [] rx = [] ry = [] rz = [] for parsed_json in parsed_jsons[start::]: if device_motion: ax.append(parsed_json['userAcceleration']['x']) ay.append(parsed_json['userAcceleration']['y']) az.append(parsed_json['userAcceleration']['z']) t.append(parsed_json['timestamp']) gx.append(parsed_json['gravity']['x']) gy.append(parsed_json['gravity']['y']) gz.append(parsed_json['gravity']['z']) uw.append(parsed_json['attitude']['w']) ux.append(parsed_json['attitude']['x']) uy.append(parsed_json['attitude']['y']) uz.append(parsed_json['attitude']['z']) rx.append(parsed_json['rotationRate']['x']) ry.append(parsed_json['rotationRate']['y']) rz.append(parsed_json['rotationRate']['z']) else: ax.append(parsed_json['x']) ay.append(parsed_json['y']) az.append(parsed_json['z']) t.append(parsed_json['timestamp']) axyz = [ax, ay, az] gxyz = [gx, gy, gz] wxyz = [uw, ux, uy, uz] rxyz = [rx, ry, rz] sample_rate, duration = compute_sample_rate(t) return t, axyz, gxyz, wxyz, rxyz, sample_rate, duration