2021-03-15 17:03:25 +01:00
<!doctype html>
< html lang = "en" class = "no-js" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
2021-04-14 19:00:34 +02:00
< link rel = "canonical" href = "https://www.rapids.science/dev/datastreams/fitbitjson-csv/" >
2021-03-29 16:48:46 +02:00
2021-03-15 17:03:25 +01:00
< link rel = "icon" href = "../../img/logo.png" >
2021-03-28 21:32:54 +02:00
< meta name = "generator" content = "mkdocs-1.1.2, mkdocs-material-7.0.7+insiders-2.4.0" >
2021-03-15 17:03:25 +01:00
< title > fitbitjson_csv - RAPIDS< / title >
2021-03-28 21:32:54 +02:00
< link rel = "stylesheet" href = "../../assets/stylesheets/main.ec3b3678.min.css" >
2021-03-15 17:03:25 +01:00
< link rel = "stylesheet" href = "../../assets/stylesheets/palette.de2705de.min.css" >
2021-03-28 21:32:54 +02:00
2021-03-15 17:03:25 +01:00
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback" >
< style > : root { --md-text-font-family : "Roboto" ; --md-code-font-family : "Roboto Mono" } < / style >
< link rel = "stylesheet" href = "../../stylesheets/extra.css" >
< / head >
< body dir = "ltr" data-md-color-scheme = "default" data-md-color-primary = "blue" data-md-color-accent = "blue" >
2021-03-28 21:32:54 +02:00
< script > function _ _prefix ( e ) { return new URL ( "../.." , location ) . pathname + "." + e } function _ _get ( e , t = localStorage ) { return JSON . parse ( t . getItem ( _ _prefix ( e ) ) ) } < / script >
2021-03-15 17:03:25 +01:00
2021-03-28 21:32:54 +02:00
< script > var palette = _ _get ( "__palette" ) ; if ( null !== palette && "object" == typeof palette . color ) for ( var key in palette . color ) document . body . setAttribute ( "data-md-color-" + key , palette . color [ key ] ) < / script >
2021-03-15 17:03:25 +01:00
< input class = "md-toggle" data-md-toggle = "drawer" type = "checkbox" id = "__drawer" autocomplete = "off" >
< input class = "md-toggle" data-md-toggle = "search" type = "checkbox" id = "__search" autocomplete = "off" >
< label class = "md-overlay" for = "__drawer" > < / label >
< div data-md-component = "skip" >
< a href = "#fitbitjson_csv" class = "md-skip" >
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
< / div >
2021-03-28 21:32:54 +02:00
< div data-md-component = "outdated" hidden >
< aside class = "md-banner md-banner--warning" >
2021-03-29 16:48:46 +02:00
< div class = "md-banner__inner md-grid md-typeset" >
You're not viewing the latest stable version of RAPIDS.
2021-04-14 19:00:34 +02:00
< a href = "https://www.rapids.science/dev" >
2021-03-29 16:48:46 +02:00
< strong > Click here to go to latest. < / strong >
< / a >
< / div >
< script > var el = document . querySelector ( "[data-md-component=outdated]" ) , outdated = _ _get ( "__outdated" , sessionStorage ) ; ! 0 === outdated && el && ( el . hidden = ! 1 ) < / script >
2021-03-28 21:32:54 +02:00
< / aside >
< / div >
2021-03-15 17:03:25 +01:00
< header class = "md-header" data-md-component = "header" >
< nav class = "md-header__inner md-grid" aria-label = "Header" >
< a href = "../.." title = "RAPIDS" class = "md-header__button md-logo" aria-label = "RAPIDS" data-md-component = "logo" >
< img src = "../../img/logo.png" alt = "logo" >
< / a >
< label class = "md-header__button md-icon" for = "__drawer" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z" / > < / svg >
< / label >
< div class = "md-header__title" data-md-component = "header-title" >
< div class = "md-header__ellipsis" >
< div class = "md-header__topic" >
< span class = "md-ellipsis" >
RAPIDS
< / span >
< / div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
fitbitjson_csv
< / span >
< / div >
< / div >
< / div >
< form class = "md-header__option" data-md-component = "palette" >
< input class = "md-option" data-md-color-media = "" data-md-color-scheme = "default" data-md-color-primary = "blue" data-md-color-accent = "blue" type = "radio" name = "__palette" id = "__palette_1" >
< label class = "md-header__button md-icon" title = "Switch to light mode" for = "__palette_2" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z" / > < / svg >
< / label >
< input class = "md-option" data-md-color-media = "" data-md-color-scheme = "slate" data-md-color-primary = "blue" data-md-color-accent = "blue" type = "radio" name = "__palette" id = "__palette_2" >
< label class = "md-header__button md-icon" title = "Switch to dark mode" for = "__palette_1" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M7 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10-3a5 5 0 0 1 5 5 5 5 0 0 1-5 5H7a5 5 0 0 1-5-5 5 5 0 0 1 5-5h10M7 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3h10a3 3 0 0 0 3-3 3 3 0 0 0-3-3H7z" / > < / svg >
< / label >
< / form >
< div class = "md-header__source" >
< a href = "https://github.com/carissalow/rapids/" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
2021-03-28 21:32:54 +02:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z" / > < / svg >
2021-03-15 17:03:25 +01:00
< / div >
< div class = "md-source__repository" >
carissalow/rapids
< / div >
< / a >
< / div >
< / nav >
< / header >
< div class = "md-container" data-md-component = "container" >
< main class = "md-main" data-md-component = "main" >
< div class = "md-main__inner md-grid" >
< div class = "md-sidebar md-sidebar--primary" data-md-component = "sidebar" data-md-type = "navigation" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--primary" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
< a href = "../.." title = "RAPIDS" class = "md-nav__button md-logo" aria-label = "RAPIDS" data-md-component = "logo" >
< img src = "../../img/logo.png" alt = "logo" >
< / a >
RAPIDS
< / label >
< div class = "md-nav__source" >
< a href = "https://github.com/carissalow/rapids/" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
2021-03-28 21:32:54 +02:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z" / > < / svg >
2021-03-15 17:03:25 +01:00
< / div >
< div class = "md-source__repository" >
carissalow/rapids
< / div >
< / a >
< / div >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../.." class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_2" type = "checkbox" id = "__nav_2" >
< label class = "md-nav__link" for = "__nav_2" >
Setup
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Setup" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_2" >
< span class = "md-nav__icon md-icon" > < / span >
Setup
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../setup/overview/" class = "md-nav__link" >
Overview
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../workflow-examples/minimal/" class = "md-nav__link" >
Minimal Example
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../setup/installation/" class = "md-nav__link" >
Installation
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../setup/configuration/" class = "md-nav__link" >
Configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../setup/execution/" class = "md-nav__link" >
Execution
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../citation/" class = "md-nav__link" >
Citation
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_3" type = "checkbox" id = "__nav_3" checked >
< label class = "md-nav__link" for = "__nav_3" >
Data Streams
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Data Streams" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_3" >
< span class = "md-nav__icon md-icon" > < / span >
Data Streams
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../data-streams-introduction/" class = "md-nav__link" >
Introduction
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_3_2" type = "checkbox" id = "__nav_3_2" >
< label class = "md-nav__link" for = "__nav_3_2" >
Phone
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Phone" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_3_2" >
< span class = "md-nav__icon md-icon" > < / span >
Phone
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../aware-mysql/" class = "md-nav__link" >
aware_mysql
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../aware-csv/" class = "md-nav__link" >
aware_csv
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../aware-influxdb/" class = "md-nav__link" >
aware_influxdb (beta)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../mandatory-phone-format/" class = "md-nav__link" >
Mandatory Phone Format
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_3_3" type = "checkbox" id = "__nav_3_3" checked >
< label class = "md-nav__link" for = "__nav_3_3" >
Fitbit
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Fitbit" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_3_3" >
< span class = "md-nav__icon md-icon" > < / span >
Fitbit
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../fitbitjson-mysql/" class = "md-nav__link" >
fitbitjson_mysql
< / a >
< / li >
< li class = "md-nav__item md-nav__item--active" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "toc" type = "checkbox" id = "__toc" >
< label class = "md-nav__link md-nav__link--active" for = "__toc" >
fitbitjson_csv
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< a href = "./" class = "md-nav__link md-nav__link--active" >
fitbitjson_csv
< / a >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#container" class = "md-nav__link" >
Container
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#format" class = "md-nav__link" >
Format
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../fitbitparsed-mysql/" class = "md-nav__link" >
fitbitparsed_mysql
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../fitbitparsed-csv/" class = "md-nav__link" >
fitbitparsed_csv
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../mandatory-fitbit-format/" class = "md-nav__link" >
Mandatory Fitbit Format
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_3_4" type = "checkbox" id = "__nav_3_4" >
< label class = "md-nav__link" for = "__nav_3_4" >
Empatica
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Empatica" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_3_4" >
< span class = "md-nav__icon md-icon" > < / span >
Empatica
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../empatica-zip/" class = "md-nav__link" >
empatica_zip
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../mandatory-empatica-format/" class = "md-nav__link" >
Mandatory Empatica Format
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../add-new-data-streams/" class = "md-nav__link" >
Add New Data Streams
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4" type = "checkbox" id = "__nav_4" >
< label class = "md-nav__link" for = "__nav_4" >
Behavioral Features
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Behavioral Features" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_4" >
< span class = "md-nav__icon md-icon" > < / span >
Behavioral Features
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../features/feature-introduction/" class = "md-nav__link" >
Introduction
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4_2" type = "checkbox" id = "__nav_4_2" >
< label class = "md-nav__link" for = "__nav_4_2" >
Phone
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Phone" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_4_2" >
< span class = "md-nav__icon md-icon" > < / span >
Phone
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../features/phone-accelerometer/" class = "md-nav__link" >
Phone Accelerometer
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-activity-recognition/" class = "md-nav__link" >
Phone Activity Recognition
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-applications-crashes/" class = "md-nav__link" >
Phone Applications Crashes
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-applications-foreground/" class = "md-nav__link" >
Phone Applications Foreground
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-applications-notifications/" class = "md-nav__link" >
Phone Applications Notifications
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-battery/" class = "md-nav__link" >
Phone Battery
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-bluetooth/" class = "md-nav__link" >
Phone Bluetooth
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-calls/" class = "md-nav__link" >
Phone Calls
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-conversation/" class = "md-nav__link" >
Phone Conversation
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-data-yield/" class = "md-nav__link" >
Phone Data Yield
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-keyboard/" class = "md-nav__link" >
Phone Keyboard
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-light/" class = "md-nav__link" >
Phone Light
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-locations/" class = "md-nav__link" >
Phone Locations
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-log/" class = "md-nav__link" >
Phone Log
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-messages/" class = "md-nav__link" >
Phone Messages
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-screen/" class = "md-nav__link" >
Phone Screen
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-wifi-connected/" class = "md-nav__link" >
Phone WiFI Connected
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/phone-wifi-visible/" class = "md-nav__link" >
Phone WiFI Visible
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4_3" type = "checkbox" id = "__nav_4_3" >
< label class = "md-nav__link" for = "__nav_4_3" >
Fitbit
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Fitbit" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_4_3" >
< span class = "md-nav__icon md-icon" > < / span >
Fitbit
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-data-yield/" class = "md-nav__link" >
Fitbit Data Yield
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-heartrate-summary/" class = "md-nav__link" >
Fitbit Heart Rate Summary
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-heartrate-intraday/" class = "md-nav__link" >
Fitbit Heart Rate Intraday
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-sleep-summary/" class = "md-nav__link" >
Fitbit Sleep Summary
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-sleep-intraday/" class = "md-nav__link" >
Fitbit Sleep Intraday
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-steps-summary/" class = "md-nav__link" >
Fitbit Steps Summary
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/fitbit-steps-intraday/" class = "md-nav__link" >
Fitbit Steps Intraday
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4_4" type = "checkbox" id = "__nav_4_4" >
< label class = "md-nav__link" for = "__nav_4_4" >
Empatica
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Empatica" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_4_4" >
< span class = "md-nav__icon md-icon" > < / span >
Empatica
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../features/empatica-accelerometer/" class = "md-nav__link" >
Empatica Accelerometer
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/empatica-heartrate/" class = "md-nav__link" >
Empatica Heart Rate
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/empatica-temperature/" class = "md-nav__link" >
Empatica Temperature
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/empatica-electrodermal-activity/" class = "md-nav__link" >
Empatica Electrodermal Activity
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/empatica-blood-volume-pulse/" class = "md-nav__link" >
Empatica Blood Volume Pulse
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/empatica-inter-beat-interval/" class = "md-nav__link" >
Empatica Inter Beat Interval
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/empatica-tags/" class = "md-nav__link" >
Empatica Tags
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../../features/add-new-features/" class = "md-nav__link" >
Add New Features
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_5" type = "checkbox" id = "__nav_5" >
< label class = "md-nav__link" for = "__nav_5" >
Visualizations
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Visualizations" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_5" >
< span class = "md-nav__icon md-icon" > < / span >
Visualizations
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../visualizations/data-quality-visualizations/" class = "md-nav__link" >
Data Quality
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../visualizations/feature-visualizations/" class = "md-nav__link" >
Features
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_6" type = "checkbox" id = "__nav_6" >
< label class = "md-nav__link" for = "__nav_6" >
Analysis Workflows
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Analysis Workflows" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_6" >
< span class = "md-nav__icon md-icon" > < / span >
Analysis Workflows
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../workflow-examples/analysis/" class = "md-nav__link" >
Complete Example
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_7" type = "checkbox" id = "__nav_7" >
< label class = "md-nav__link" for = "__nav_7" >
Developers
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Developers" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_7" >
< span class = "md-nav__icon md-icon" > < / span >
Developers
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../developers/git-flow/" class = "md-nav__link" >
Git Flow
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../developers/remote-support/" class = "md-nav__link" >
Remote Support
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../developers/virtual-environments/" class = "md-nav__link" >
Virtual Environments
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../developers/documentation/" class = "md-nav__link" >
Documentation
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../developers/testing/" class = "md-nav__link" >
Testing
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../developers/test-cases/" class = "md-nav__link" >
Test cases
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../developers/validation-schema-config/" class = "md-nav__link" >
Validation schema of config.yaml
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_8" type = "checkbox" id = "__nav_8" >
< label class = "md-nav__link" for = "__nav_8" >
Others
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Others" data-md-level = "1" >
< label class = "md-nav__title" for = "__nav_8" >
< span class = "md-nav__icon md-icon" > < / span >
Others
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../migrating-from-old-versions/" class = "md-nav__link" >
Migrating from an old version
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../code_of_conduct/" class = "md-nav__link" >
Code of Conduct
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../common-errors/" class = "md-nav__link" >
Common Errors
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../team/" class = "md-nav__link" >
Team
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../change-log/" class = "md-nav__link" >
Change Log
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-sidebar md-sidebar--secondary" data-md-component = "sidebar" data-md-type = "toc" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#container" class = "md-nav__link" >
Container
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#format" class = "md-nav__link" >
Format
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-content" data-md-component = "content" >
< article class = "md-content__inner md-typeset" >
< a href = "https://github.com/carissalow/rapids/edit/master/docs/datastreams/fitbitjson-csv.md" title = "Edit this page" class = "md-content__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z" / > < / svg >
< / a >
< h1 id = "fitbitjson_csv" > < code > fitbitjson_csv< / code > < a class = "headerlink" href = "#fitbitjson_csv" title = "Permanent link" > ¶ < / a > < / h1 >
< p > This < a href = "../../datastreams/data-streams-introduction" > data stream< / a > handles Fitbit sensor data downloaded using the < a href = "https://dev.fitbit.com/build/reference/web-api/" > Fitbit Web API< / a > and stored in a CSV file. Please note that RAPIDS cannot query the API directly; you need to use other available tools or implement your own. Once you have your sensor data in a CSV file, RAPIDS can process it.< / p >
< div class = "admonition warning" >
< p class = "admonition-title" > Warning< / p >
< p > The CSV files have to use < code > ,< / code > as separator, < code > \< / code > as escape character (do not escape < code > "< / code > with < code > ""< / code > ), and wrap any string columns with < code > "< / code > .< / p >
< details class = "example" > < summary > Example of a valid CSV file< / summary > < div class = "highlight" > < pre > < span > < / span > < code > " timestamp" ," device_id" ," label" ," fitbit_id" ," fitbit_data_type" ," fitbit_data"
1587614400000," a748ee1a-1d0b-4ae9-9074-279a2b6ba524" ," 5S" ," 5ZKN9B" ," steps" ," {\" activities-steps\" :[{\" dateTime\" :\" 2020-04-23\" ,\" value\" :\" 7881\" }]"
< / code > < / pre > < / div >
< / details >
< / div >
< h2 id = "container" > Container< a class = "headerlink" href = "#container" title = "Permanent link" > ¶ < / a > < / h2 >
< p > The container should be a CSV file per Fitbit sensor, each containing all participants’ data.< / p >
< p > The script to connect and download data from this container is at:
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/fitbitjson_csv/container.R
< / code > < / pre > < / div > < / p >
< h2 id = "format" > Format< a class = "headerlink" href = "#format" title = "Permanent link" > ¶ < / a > < / h2 >
< p > The < code > format.yaml< / code > maps and transforms columns in your raw data stream to the < a href = "../mandatory-fitbit-format" > mandatory columns RAPIDS needs for Fitbit sensors< / a > . This file is at:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/fitbitjson_csv/format.yaml
< / code > < / pre > < / div >
< p > If you want RAPIDS to process Fitbit sensor data using this stream, you will need to map < code > DEVICE_ID< / code > and < code > JSON_FITBIT_COLUMN< / code > to your own raw data columns inside < strong > each sensor< / strong > section in < code > format.yaml< / code > .< / p >
< details class = "info" > < summary > FITBIT_HEARTRATE_SUMMARY< / summary > < p > < strong > RAPIDS_COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > RAPIDS column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > LOCAL_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DEVICE_ID< / td >
< td > device_id< / td >
< / tr >
< tr >
< td > HEARTRATE_DAILY_RESTINGHR< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > HEARTRATE_DAILY_CALORIESOUTOFRANGE< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > HEARTRATE_DAILY_CALORIESFATBURN< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > HEARTRATE_DAILY_CALORIESCARDIO< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > HEARTRATE_DAILY_CALORIESPEAK< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > MUTATION< / strong > < / p >
< ul >
< li >
< p > < strong > COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > Script column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > JSON_FITBIT_COLUMN< / td >
< td > fitbit_data< / td >
< / tr >
< / tbody >
< / table >
< / li >
< li >
< p > < strong > SCRIPTS< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/mutations/fitbit/parse_heartrate_summary_json.py
< / code > < / pre > < / div >
< div class = "admonition note" >
< p class = "admonition-title" > Note< p > All columns except < code > DEVICE_ID< / code > are parsed from < code > JSON_FITBIT_COLUMN< / code > . < code > JSON_FITBIT_COLUMN< / code > is a string column containing the JSON objects returned by Fitbit’ s API. See an example of the raw data RAPIDS expects for this data stream:< / p >
< / p >
< details class = "example" > < summary > Example of the raw data RAPIDS expects for this data stream< / summary > < table >
< thead >
< tr >
< th > device_id< / th >
< th > fitbit_data< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ activities-heart” :[{“ dateTime” :” 2020-10-07” ,” value” :{“ customHeartRateZones” :[],” heartRateZones” :[{“ caloriesOut” :1200.6102,” max” :88,” min” :31,” minutes” :1058,” name” :” Out of Range” },{“ caloriesOut” :760.3020,” max” :120,” min” :86,” minutes” :366,” name” :” Fat Burn” },{“ caloriesOut” :15.2048,” max” :146,” min” :120,” minutes” :2,” name” :” Cardio” },{“ caloriesOut” :0,” max” :221,” min” :148,” minutes” :0,” name” :” Peak” }],” restingHeartRate” :72}}],” activities-heart-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :68},{“ time” :” 00:01:00” ,” value” :67},{“ time” :” 00:02:00” ,” value” :67},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ activities-heart” :[{“ dateTime” :” 2020-10-08” ,” value” :{“ customHeartRateZones” :[],” heartRateZones” :[{“ caloriesOut” :1100.1120,” max” :89,” min” :30,” minutes” :921,” name” :” Out of Range” },{“ caloriesOut” :660.0012,” max” :118,” min” :82,” minutes” :361,” name” :” Fat Burn” },{“ caloriesOut” :23.7088,” max” :142,” min” :108,” minutes” :3,” name” :” Cardio” },{“ caloriesOut” :0,” max” :221,” min” :148,” minutes” :0,” name” :” Peak” }],” restingHeartRate” :70}}],” activities-heart-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :77},{“ time” :” 00:01:00” ,” value” :75},{“ time” :” 00:02:00” ,” value” :73},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ activities-heart” :[{“ dateTime” :” 2020-10-09” ,” value” :{“ customHeartRateZones” :[],” heartRateZones” :[{“ caloriesOut” :750.3615,” max” :77,” min” :30,” minutes” :851,” name” :” Out of Range” },{“ caloriesOut” :734.1516,” max” :107,” min” :77,” minutes” :550,” name” :” Fat Burn” },{“ caloriesOut” :131.8579,” max” :130,” min” :107,” minutes” :29,” name” :” Cardio” },{“ caloriesOut” :0,” max” :220,” min” :130,” minutes” :0,” name” :” Peak” }],” restingHeartRate” :69}}],” activities-heart-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :90},{“ time” :” 00:01:00” ,” value” :89},{“ time” :” 00:02:00” ,” value” :88},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< / tbody >
< / table >
< / details >
< / div >
< / li >
< / ul >
< / details >
< details class = "info" > < summary > FITBIT_HEARTRATE_INTRADAY< / summary > < p > < strong > RAPIDS_COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > RAPIDS column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > LOCAL_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DEVICE_ID< / td >
< td > device_id< / td >
< / tr >
< tr >
< td > HEARTRATE< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > HEARTRATE_ZONE< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > MUTATION< / strong > < / p >
< ul >
< li >
< p > < strong > COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > Script column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > JSON_FITBIT_COLUMN< / td >
< td > fitbit_data< / td >
< / tr >
< / tbody >
< / table >
< / li >
< li >
< p > < strong > SCRIPTS< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/mutations/fitbit/parse_heartrate_intraday_json.py
< / code > < / pre > < / div >
< div class = "admonition note" >
< p class = "admonition-title" > Note< p > All columns except < code > DEVICE_ID< / code > are parsed from < code > JSON_FITBIT_COLUMN< / code > . < code > JSON_FITBIT_COLUMN< / code > is a string column containing the JSON objects returned by Fitbit’ s API. See an example of the raw data RAPIDS expects for this data stream:< / p >
< / p >
< details class = "example" > < summary > Example of the raw data RAPIDS expects for this data stream< / summary > < table >
< thead >
< tr >
< th > device_id< / th >
< th > fitbit_data< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ activities-heart” :[{“ dateTime” :” 2020-10-07” ,” value” :{“ customHeartRateZones” :[],” heartRateZones” :[{“ caloriesOut” :1200.6102,” max” :88,” min” :31,” minutes” :1058,” name” :” Out of Range” },{“ caloriesOut” :760.3020,” max” :120,” min” :86,” minutes” :366,” name” :” Fat Burn” },{“ caloriesOut” :15.2048,” max” :146,” min” :120,” minutes” :2,” name” :” Cardio” },{“ caloriesOut” :0,” max” :221,” min” :148,” minutes” :0,” name” :” Peak” }],” restingHeartRate” :72}}],” activities-heart-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :68},{“ time” :” 00:01:00” ,” value” :67},{“ time” :” 00:02:00” ,” value” :67},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ activities-heart” :[{“ dateTime” :” 2020-10-08” ,” value” :{“ customHeartRateZones” :[],” heartRateZones” :[{“ caloriesOut” :1100.1120,” max” :89,” min” :30,” minutes” :921,” name” :” Out of Range” },{“ caloriesOut” :660.0012,” max” :118,” min” :82,” minutes” :361,” name” :” Fat Burn” },{“ caloriesOut” :23.7088,” max” :142,” min” :108,” minutes” :3,” name” :” Cardio” },{“ caloriesOut” :0,” max” :221,” min” :148,” minutes” :0,” name” :” Peak” }],” restingHeartRate” :70}}],” activities-heart-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :77},{“ time” :” 00:01:00” ,” value” :75},{“ time” :” 00:02:00” ,” value” :73},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ activities-heart” :[{“ dateTime” :” 2020-10-09” ,” value” :{“ customHeartRateZones” :[],” heartRateZones” :[{“ caloriesOut” :750.3615,” max” :77,” min” :30,” minutes” :851,” name” :” Out of Range” },{“ caloriesOut” :734.1516,” max” :107,” min” :77,” minutes” :550,” name” :” Fat Burn” },{“ caloriesOut” :131.8579,” max” :130,” min” :107,” minutes” :29,” name” :” Cardio” },{“ caloriesOut” :0,” max” :220,” min” :130,” minutes” :0,” name” :” Peak” }],” restingHeartRate” :69}}],” activities-heart-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :90},{“ time” :” 00:01:00” ,” value” :89},{“ time” :” 00:02:00” ,” value” :88},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< / tbody >
< / table >
< / details >
< / div >
< / li >
< / ul >
< / details >
< details class = "info" > < summary > FITBIT_SLEEP_SUMMARY< / summary > < p > < strong > RAPIDS_COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > RAPIDS column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > TIMESTAMP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > LOCAL_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > LOCAL_START_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > LOCAL_END_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DEVICE_ID< / td >
< td > device_id< / td >
< / tr >
< tr >
< td > EFFICIENCY< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > MINUTES_AFTER_WAKEUP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > MINUTES_ASLEEP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > MINUTES_AWAKE< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > MINUTES_TO_FALL_ASLEEP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > MINUTES_IN_BED< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > IS_MAIN_SLEEP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > TYPE< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > MUTATION< / strong > < / p >
< ul >
< li >
< p > < strong > COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > Script column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > JSON_FITBIT_COLUMN< / td >
< td > fitbit_data< / td >
< / tr >
< / tbody >
< / table >
< / li >
< li >
< p > < strong > SCRIPTS< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/mutations/fitbit/parse_sleep_summary_json.py
< / code > < / pre > < / div >
< div class = "admonition note" >
< p class = "admonition-title" > Note< / p >
< p > Fitbit API has two versions for sleep data, v1 and v1.2. We support both but ignore v1’ s < code > count_awake< / code > , < code > duration_awake< / code > , and < code > count_awakenings< / code > , < code > count_restless< / code > , < code > duration_restless< / code > columns.< / p >
< p > All columns except < code > DEVICE_ID< / code > are parsed from < code > JSON_FITBIT_COLUMN< / code > . < code > JSON_FITBIT_COLUMN< / code > is a string column containing the JSON objects returned by Fitbit’ s API. See an example of the raw data RAPIDS expects for this data stream:< / p >
< details class = "example" > < summary > Example of the expected raw data< / summary > < table >
< thead >
< tr >
< th > device_id< / th >
< th > fitbit_data< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ sleep” :[{“ dateOfSleep” :” 2020-10-10” ,” duration” :3600000,” efficiency” :92,” endTime” :” 2020-10-10T16:37:00.000” ,” infoCode” :2,” isMainSleep” :false,” levels” :{“ data” :[{“ dateTime” :” 2020-10-10T15:36:30.000” ,” level” :” restless” ,” seconds” :60},{“ dateTime” :” 2020-10-10T15:37:30.000” ,” level” :” asleep” ,” seconds” :660},{“ dateTime” :” 2020-10-10T15:48:30.000” ,” level” :” restless” ,” seconds” :60},… ], “ summary” :{“ asleep” :{“ count” :0,” minutes” :56},” awake” :{“ count” :0,” minutes” :0},” restless” :{“ count” :3,” minutes” :4}}},” logId” :26315914306,” minutesAfterWakeup” :0,” minutesAsleep” :55,” minutesAwake” :5,” minutesToFallAsleep” :0,” startTime” :” 2020-10-10T15:36:30.000” ,” timeInBed” :60,” type” :” classic” },{“ dateOfSleep” :” 2020-10-10” ,” duration” :22980000,” efficiency” :88,” endTime” :” 2020-10-10T08:10:00.000” ,” infoCode” :0,” isMainSleep” :true,” levels” :{“ data” :[{“ dateTime” :” 2020-10-10T01:46:30.000” ,” level” :” light” ,” seconds” :420},{“ dateTime” :” 2020-10-10T01:53:30.000” ,” level” :” deep” ,” seconds” :1230},{“ dateTime” :” 2020-10-10T02:14:00.000” ,” level” :” light” ,” seconds” :360},… ], “ summary” :{“ deep” :{“ count” :3,” minutes” :92,” thirtyDayAvgMinutes” :0},” light” :{“ count” :29,” minutes” :193,” thirtyDayAvgMinutes” :0},” rem” :{“ count” :4,” minutes” :33,” thirtyDayAvgMinutes” :0},” wake” :{“ count” :28,” minutes” :65,” thirtyDayAvgMinutes” :0}}},” logId” :26311786557,” minutesAfterWakeup” :0,” minutesAsleep” :318,” minutesAwake” :65,” minutesToFallAsleep” :0,” startTime” :” 2020-10-10T01:46:30.000” ,” timeInBed” :383,” type” :” stages” }],” summary” :{“ stages” :{“ deep” :92,” light” :193,” rem” :33,” wake” :65},” totalMinutesAsleep” :373,” totalSleepRecords” :2,” totalTimeInBed” :443}}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ sleep” :[{“ dateOfSleep” :” 2020-10-11” ,” duration” :41640000,” efficiency” :89,” endTime” :” 2020-10-11T11:47:00.000” ,” infoCode” :0,” isMainSleep” :true,” levels” :{“ data” :[{“ dateTime” :” 2020-10-11T00:12:30.000” ,” level” :” wake” ,” seconds” :450},{“ dateTime” :” 2020-10-11T00:20:00.000” ,” level” :” light” ,” seconds” :870},{“ dateTime” :” 2020-10-11T00:34:30.000” ,” level” :” wake” ,” seconds” :780},… ], “ summary” :{“ deep” :{“ count” :4,” minutes” :52,” thirtyDayAvgMinutes” :62},” light” :{“ count” :32,” minutes” :442,” thirtyDayAvgMinutes” :364},” rem” :{“ count” :6,” minutes” :68,” thirtyDayAvgMinutes” :58},” wake” :{“ count” :29,” minutes” :132,” thirtyDayAvgMinutes” :94}}},” logId” :26589710670,” minutesAfterWakeup” :1,” minutesAsleep” :562,” minutesAwake” :132,” minutesToFallAsleep” :0,” startTime” :” 2020-10-11T00:12:30.000” ,” timeInBed” :694,” type” :” stages” }],” summary” :{“ stages” :{“ deep” :52,” light” :442,” rem” :68,” wake” :132},” totalMinutesAsleep” :562,” totalSleepRecords” :1,” totalTimeInBed” :694}}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ sleep” :[{“ dateOfSleep” :” 2020-10-12” ,” duration” :28980000,” efficiency” :93,” endTime” :” 2020-10-12T09:34:30.000” ,” infoCode” :0,” isMainSleep” :true,” levels” :{“ data” :[{“ dateTime” :” 2020-10-12T01:31:00.000” ,” level” :” wake” ,” seconds” :600},{“ dateTime” :” 2020-10-12T01:41:00.000” ,” level” :” light” ,” seconds” :60},{“ dateTime” :” 2020-10-12T01:42:00.000” ,” level” :” deep” ,” seconds” :2340},… ], “ summary” :{“ deep” :{“ count” :4,” minutes” :63,” thirtyDayAvgMinutes” :59},” light” :{“ count” :27,” minutes” :257,” thirtyDayAvgMinutes” :364},” rem” :{“ count” :5,” minutes” :94,” thirtyDayAvgMinutes” :58},” wake” :{“ count” :24,” minutes” :69,” thirtyDayAvgMinutes” :95}}},” logId” :26589710673,” minutesAfterWakeup” :0,” minutesAsleep” :415,” minutesAwake” :68,” minutesToFallAsleep” :0,” startTime” :” 2020-10-12T01:31:00.000” ,” timeInBed” :483,” type” :” stages” }],” summary” :{“ stages” :{“ deep” :63,” light” :257,” rem” :94,” wake” :69},” totalMinutesAsleep” :415,” totalSleepRecords” :1,” totalTimeInBed” :483}}< / td >
< / tr >
< / tbody >
< / table >
< / details >
< / div >
< / li >
< / ul >
< / details >
< details class = "info" > < summary > FITBIT_SLEEP_INTRADAY< / summary > < p > < strong > RAPIDS_COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > RAPIDS column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > TIMESTAMP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > LOCAL_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DEVICE_ID< / td >
< td > device_id< / td >
< / tr >
< tr >
< td > TYPE_EPISODE_ID< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DURATION< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > IS_MAIN_SLEEP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > TYPE< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > LEVEL< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > MUTATION< / strong > < / p >
< ul >
< li >
< p > < strong > COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > Script column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > JSON_FITBIT_COLUMN< / td >
< td > fitbit_data< / td >
< / tr >
< / tbody >
< / table >
< / li >
< li >
< p > < strong > SCRIPTS< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/mutations/fitbit/parse_sleep_intraday_json.py
< / code > < / pre > < / div >
< div class = "admonition note" >
< p class = "admonition-title" > Note< / p >
< p > Fitbit API has two versions for sleep data, v1 and v1.2, we support both.< / p >
< p > All columns except < code > DEVICE_ID< / code > are parsed from < code > JSON_FITBIT_COLUMN< / code > . < code > JSON_FITBIT_COLUMN< / code > is a string column containing the JSON objects returned by Fitbit’ s API. See an example of the raw data RAPIDS expects for this data stream:< / p >
< details class = "example" > < summary > Example of the expected raw data< / summary > < table >
< thead >
< tr >
< th > device_id< / th >
< th > fitbit_data< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ sleep” :[{“ dateOfSleep” :” 2020-10-10” ,” duration” :3600000,” efficiency” :92,” endTime” :” 2020-10-10T16:37:00.000” ,” infoCode” :2,” isMainSleep” :false,” levels” :{“ data” :[{“ dateTime” :” 2020-10-10T15:36:30.000” ,” level” :” restless” ,” seconds” :60},{“ dateTime” :” 2020-10-10T15:37:30.000” ,” level” :” asleep” ,” seconds” :660},{“ dateTime” :” 2020-10-10T15:48:30.000” ,” level” :” restless” ,” seconds” :60},… ], “ summary” :{“ asleep” :{“ count” :0,” minutes” :56},” awake” :{“ count” :0,” minutes” :0},” restless” :{“ count” :3,” minutes” :4}}},” logId” :26315914306,” minutesAfterWakeup” :0,” minutesAsleep” :55,” minutesAwake” :5,” minutesToFallAsleep” :0,” startTime” :” 2020-10-10T15:36:30.000” ,” timeInBed” :60,” type” :” classic” },{“ dateOfSleep” :” 2020-10-10” ,” duration” :22980000,” efficiency” :88,” endTime” :” 2020-10-10T08:10:00.000” ,” infoCode” :0,” isMainSleep” :true,” levels” :{“ data” :[{“ dateTime” :” 2020-10-10T01:46:30.000” ,” level” :” light” ,” seconds” :420},{“ dateTime” :” 2020-10-10T01:53:30.000” ,” level” :” deep” ,” seconds” :1230},{“ dateTime” :” 2020-10-10T02:14:00.000” ,” level” :” light” ,” seconds” :360},… ], “ summary” :{“ deep” :{“ count” :3,” minutes” :92,” thirtyDayAvgMinutes” :0},” light” :{“ count” :29,” minutes” :193,” thirtyDayAvgMinutes” :0},” rem” :{“ count” :4,” minutes” :33,” thirtyDayAvgMinutes” :0},” wake” :{“ count” :28,” minutes” :65,” thirtyDayAvgMinutes” :0}}},” logId” :26311786557,” minutesAfterWakeup” :0,” minutesAsleep” :318,” minutesAwake” :65,” minutesToFallAsleep” :0,” startTime” :” 2020-10-10T01:46:30.000” ,” timeInBed” :383,” type” :” stages” }],” summary” :{“ stages” :{“ deep” :92,” light” :193,” rem” :33,” wake” :65},” totalMinutesAsleep” :373,” totalSleepRecords” :2,” totalTimeInBed” :443}}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ sleep” :[{“ dateOfSleep” :” 2020-10-11” ,” duration” :41640000,” efficiency” :89,” endTime” :” 2020-10-11T11:47:00.000” ,” infoCode” :0,” isMainSleep” :true,” levels” :{“ data” :[{“ dateTime” :” 2020-10-11T00:12:30.000” ,” level” :” wake” ,” seconds” :450},{“ dateTime” :” 2020-10-11T00:20:00.000” ,” level” :” light” ,” seconds” :870},{“ dateTime” :” 2020-10-11T00:34:30.000” ,” level” :” wake” ,” seconds” :780},… ], “ summary” :{“ deep” :{“ count” :4,” minutes” :52,” thirtyDayAvgMinutes” :62},” light” :{“ count” :32,” minutes” :442,” thirtyDayAvgMinutes” :364},” rem” :{“ count” :6,” minutes” :68,” thirtyDayAvgMinutes” :58},” wake” :{“ count” :29,” minutes” :132,” thirtyDayAvgMinutes” :94}}},” logId” :26589710670,” minutesAfterWakeup” :1,” minutesAsleep” :562,” minutesAwake” :132,” minutesToFallAsleep” :0,” startTime” :” 2020-10-11T00:12:30.000” ,” timeInBed” :694,” type” :” stages” }],” summary” :{“ stages” :{“ deep” :52,” light” :442,” rem” :68,” wake” :132},” totalMinutesAsleep” :562,” totalSleepRecords” :1,” totalTimeInBed” :694}}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > {“ sleep” :[{“ dateOfSleep” :” 2020-10-12” ,” duration” :28980000,” efficiency” :93,” endTime” :” 2020-10-12T09:34:30.000” ,” infoCode” :0,” isMainSleep” :true,” levels” :{“ data” :[{“ dateTime” :” 2020-10-12T01:31:00.000” ,” level” :” wake” ,” seconds” :600},{“ dateTime” :” 2020-10-12T01:41:00.000” ,” level” :” light” ,” seconds” :60},{“ dateTime” :” 2020-10-12T01:42:00.000” ,” level” :” deep” ,” seconds” :2340},… ], “ summary” :{“ deep” :{“ count” :4,” minutes” :63,” thirtyDayAvgMinutes” :59},” light” :{“ count” :27,” minutes” :257,” thirtyDayAvgMinutes” :364},” rem” :{“ count” :5,” minutes” :94,” thirtyDayAvgMinutes” :58},” wake” :{“ count” :24,” minutes” :69,” thirtyDayAvgMinutes” :95}}},” logId” :26589710673,” minutesAfterWakeup” :0,” minutesAsleep” :415,” minutesAwake” :68,” minutesToFallAsleep” :0,” startTime” :” 2020-10-12T01:31:00.000” ,” timeInBed” :483,” type” :” stages” }],” summary” :{“ stages” :{“ deep” :63,” light” :257,” rem” :94,” wake” :69},” totalMinutesAsleep” :415,” totalSleepRecords” :1,” totalTimeInBed” :483}}< / td >
< / tr >
< / tbody >
< / table >
< / details >
< / div >
< / li >
< / ul >
< / details >
< details class = "info" > < summary > FITBIT_STEPS_SUMMARY< / summary > < p > < strong > RAPIDS_COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > RAPIDS column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > TIMESTAMP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DEVICE_ID< / td >
< td > device_id< / td >
< / tr >
< tr >
< td > LOCAL_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > STEPS< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > MUTATION< / strong > < / p >
< ul >
< li >
< p > < strong > COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > Script column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > JSON_FITBIT_COLUMN< / td >
< td > fitbit_data< / td >
< / tr >
< / tbody >
< / table >
< / li >
< li >
< p > < strong > SCRIPTS< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/mutations/fitbit/parse_steps_summary_json.py
< / code > < / pre > < / div >
< div class = "admonition note" >
< p class = "admonition-title" > Note< p > < code > TIMESTAMP< / code > , < code > LOCAL_DATE_TIME< / code > , and < code > STEPS< / code > are parsed from < code > JSON_FITBIT_COLUMN< / code > . < code > JSON_FITBIT_COLUMN< / code > is a string column containing the JSON objects returned by Fitbit’ s API. See an example of the raw data RAPIDS expects for this data stream:< / p >
< / p >
< details class = "example" > < summary > Example of the expected raw data< / summary > < table >
< thead >
< tr >
< th > device_id< / th >
< th > fitbit_data< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > “ activities-steps” :[{“ dateTime” :” 2020-10-07” ,” value” :” 1775” }],” activities-steps-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :5},{“ time” :” 00:01:00” ,” value” :3},{“ time” :” 00:02:00” ,” value” :0},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > “ activities-steps” :[{“ dateTime” :” 2020-10-08” ,” value” :” 3201” }],” activities-steps-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :14},{“ time” :” 00:01:00” ,” value” :11},{“ time” :” 00:02:00” ,” value” :10},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > “ activities-steps” :[{“ dateTime” :” 2020-10-09” ,” value” :” 998” }],” activities-steps-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :0},{“ time” :” 00:01:00” ,” value” :0},{“ time” :” 00:02:00” ,” value” :0},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< / tbody >
< / table >
< / details >
< / div >
< / li >
< / ul >
< / details >
< details class = "info" > < summary > FITBIT_STEPS_INTRADAY< / summary > < p > < strong > RAPIDS_COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > RAPIDS column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > TIMESTAMP< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > DEVICE_ID< / td >
< td > device_id< / td >
< / tr >
< tr >
< td > LOCAL_DATE_TIME< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< tr >
< td > STEPS< / td >
< td > FLAG_TO_MUTATE< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > MUTATION< / strong > < / p >
< ul >
< li >
< p > < strong > COLUMN_MAPPINGS< / strong > < / p >
< table >
< thead >
< tr >
< th > Script column< / th >
< th > Stream column< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > JSON_FITBIT_COLUMN< / td >
< td > fitbit_data< / td >
< / tr >
< / tbody >
< / table >
< / li >
< li >
< p > < strong > SCRIPTS< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > src/data/streams/mutations/fitbit/parse_steps_intraday_json.py
< / code > < / pre > < / div >
< div class = "admonition note" >
< p class = "admonition-title" > Note< p > < code > TIMESTAMP< / code > , < code > LOCAL_DATE_TIME< / code > , and < code > STEPS< / code > are parsed from < code > JSON_FITBIT_COLUMN< / code > . < code > JSON_FITBIT_COLUMN< / code > is a string column containing the JSON objects returned by < a href = "https://dev.fitbit.com/build/reference/web-api/activity/#get-activity-intraday-time-series" > Fitbit’ s API< / a > . See an example of the raw data RAPIDS expects for this data stream:< / p >
< / p >
< details class = "example" > < summary > Example of the expected raw data< / summary > < table >
< thead >
< tr >
< th > device_id< / th >
< th > fitbit_data< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > “ activities-steps” :[{“ dateTime” :” 2020-10-07” ,” value” :” 1775” }],” activities-steps-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :5},{“ time” :” 00:01:00” ,” value” :3},{“ time” :” 00:02:00” ,” value” :0},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > “ activities-steps” :[{“ dateTime” :” 2020-10-08” ,” value” :” 3201” }],” activities-steps-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :14},{“ time” :” 00:01:00” ,” value” :11},{“ time” :” 00:02:00” ,” value” :10},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< tr >
< td > a748ee1a-1d0b-4ae9-9074-279a2b6ba524< / td >
< td > “ activities-steps” :[{“ dateTime” :” 2020-10-09” ,” value” :” 998” }],” activities-steps-intraday” :{“ dataset” :[{“ time” :” 00:00:00” ,” value” :0},{“ time” :” 00:01:00” ,” value” :0},{“ time” :” 00:02:00” ,” value” :0},… ],” datasetInterval” :1,” datasetType” :” minute” }}< / td >
< / tr >
< / tbody >
< / table >
< / details >
< / div >
< / li >
< / ul >
< / details >
<!-- Add custom comment system integration here -->
<!-- Utterances integration -->
< h2 id = "__comments" > Comments< / h2 >
< script type = "text/javascript" >
var rapids_utterances_theme = false
document.onreadystatechange = function () {
if (document.readyState == "interactive") {
// wait for utterances to load and send it's first message.
addEventListener('message', event => {
if (event.origin !== 'https://utteranc.es' || rapids_utterances_theme == true) {
return;
}
rapids_utterances_theme = true
if(document.body.getAttribute("data-md-color-scheme") == "default")
document.querySelector("iframe.utterances-frame").contentWindow.postMessage({ type: "set-theme", theme: "github-light" },"https://utteranc.es/")
else
document.querySelector("iframe.utterances-frame").contentWindow.postMessage({ type: "set-theme", theme: "photon-dark" },"https://utteranc.es/")
});
document.getElementById('__palette_1').onclick = function(){
document.querySelector("iframe.utterances-frame").contentWindow.postMessage({ type: "set-theme", theme: "github-light" },"https://utteranc.es/")
}
document.getElementById('__palette_2').onclick = function(){
document.querySelector("iframe.utterances-frame").contentWindow.postMessage({ type: "set-theme", theme: "photon-dark" },"https://utteranc.es/")
}
}
}
< / script >
< script src = "https://utteranc.es/client.js"
repo="carissalow/rapids"
issue-term="pathname"
label="docs comments"
theme="github-light"
crossorigin="anonymous"
async>
< / script >
< / article >
< / div >
< / div >
< / main >
< footer class = "md-footer" >
< nav class = "md-footer__inner md-grid" aria-label = "Footer" >
< a href = "../fitbitjson-mysql/" class = "md-footer__link md-footer__link--prev" rel = "prev" >
< div class = "md-footer__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z" / > < / svg >
< / div >
< div class = "md-footer__title" >
< div class = "md-ellipsis" >
< span class = "md-footer__direction" >
Previous
< / span >
fitbitjson_mysql
< / div >
< / div >
< / a >
< a href = "../fitbitparsed-mysql/" class = "md-footer__link md-footer__link--next" rel = "next" >
< div class = "md-footer__title" >
< div class = "md-ellipsis" >
< span class = "md-footer__direction" >
Next
< / span >
fitbitparsed_mysql
< / div >
< / div >
< div class = "md-footer__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z" / > < / svg >
< / div >
< / a >
< / nav >
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
< div class = "md-footer-copyright" >
< div class = "md-footer-copyright__highlight" >
Released under AGPL
< / div >
Made with
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
Material for MkDocs Insiders
< / a >
< / div >
< div class = "md-footer-social" >
< a href = "https://twitter.com/julio_ui" target = "_blank" rel = "noopener" title = "twitter.com" class = "md-footer-social__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 512 512" > < path d = "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z" / > < / svg >
< / a >
< / div >
< / div >
< / div >
< / footer >
< / div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
2021-03-29 16:48:46 +02:00
< script id = "__config" type = "application/json" > { "base" : "../.." , "features" : [ "navigation.sections" , "search.suggest" , "search.highlight" ] , "translations" : { "clipboard.copy" : "Copy to clipboard" , "clipboard.copied" : "Copied to clipboard" , "search.config.lang" : "en" , "search.config.pipeline" : "trimmer, stopWordFilter" , "search.config.separator" : "[\\s\\-]+" , "search.placeholder" : "Search" , "search.result.placeholder" : "Type to start searching" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.term.missing" : "Missing" } , "search" : "../../assets/javascripts/workers/search.d10a1f1d.min.js" , "version" : { "provider" : "mike" } } < / script >
2021-03-15 17:03:25 +01:00
2021-03-28 21:32:54 +02:00
< script src = "../../assets/javascripts/bundle.9aafa2c6.min.js" > < / script >
2021-03-15 17:03:25 +01:00
< script src = "https://polyfill.io/v3/polyfill.min.js?features=es6" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" > < / script >
< / body >
< / html >