2020-12-08 03:12:19 +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" >
2020-12-20 19:59:17 +01:00
2021-03-15 17:03:25 +01:00
< link rel = "icon" href = "../../img/logo.png" >
< meta name = "generator" content = "mkdocs-1.1.2, mkdocs-material-7.0.6+insiders-2.3.1" >
2020-12-08 03:12:19 +01:00
< title > Add New Features - RAPIDS< / title >
2021-03-15 17:03:25 +01:00
< link rel = "stylesheet" href = "../../assets/stylesheets/main.3a1236c2.min.css" >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< link rel = "stylesheet" href = "../../assets/stylesheets/palette.de2705de.min.css" >
2020-12-08 03:12:19 +01:00
2020-12-20 19:59:17 +01:00
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
2020-12-08 03:12:19 +01:00
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback" >
2021-03-15 17:03:25 +01:00
< style > : root { --md-text-font-family : "Roboto" ; --md-code-font-family : "Roboto Mono" } < / style >
2020-12-08 03:12:19 +01:00
< 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" >
2020-12-20 19:59:17 +01:00
2021-02-09 20:54:36 +01:00
< script > var palette = JSON . parse ( localStorage . getItem ( "__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 >
2020-12-08 03:12:19 +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 = "#add-new-features" class = "md-skip" >
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
< / div >
< header class = "md-header" data-md-component = "header" >
2021-02-09 20:54:36 +01:00
< nav class = "md-header__inner md-grid" aria-label = "Header" >
2021-03-15 17:03:25 +01:00
< a href = "../.." title = "RAPIDS" class = "md-header__button md-logo" aria-label = "RAPIDS" data-md-component = "logo" >
2020-12-08 03:12:19 +01:00
2021-02-21 23:35:55 +01:00
< img src = "../../img/logo.png" alt = "logo" >
2020-12-08 03:12:19 +01:00
< / a >
2021-02-09 20:54:36 +01:00
< label class = "md-header__button md-icon" for = "__drawer" >
2020-12-08 03:12:19 +01:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z" / > < / svg >
< / label >
2021-02-09 20:54:36 +01:00
< div class = "md-header__title" data-md-component = "header-title" >
< div class = "md-header__ellipsis" >
< div class = "md-header__topic" >
2020-12-08 03:12:19 +01:00
< span class = "md-ellipsis" >
RAPIDS
< / span >
< / div >
2021-02-09 20:54:36 +01:00
< div class = "md-header__topic" data-md-component = "header-topic" >
2020-12-08 03:12:19 +01:00
< span class = "md-ellipsis" >
Add New Features
< / span >
< / div >
< / div >
< / div >
2021-03-15 17:03:25 +01:00
< form class = "md-header__option" data-md-component = "palette" >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< 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 >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< 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 >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< / form >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< label class = "md-header__button md-icon" for = "__search" >
2021-03-15 17:03:25 +01:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z" / > < / svg >
2020-12-08 03:12:19 +01:00
< / label >
< div class = "md-search" data-md-component = "search" role = "dialog" >
< label class = "md-search__overlay" for = "__search" > < / label >
< div class = "md-search__inner" role = "search" >
< form class = "md-search__form" name = "search" >
2020-12-20 19:59:17 +01:00
< input type = "text" class = "md-search__input" name = "query" aria-label = "Search" placeholder = "Search" autocapitalize = "off" autocorrect = "off" autocomplete = "off" spellcheck = "false" data-md-component = "search-query" data-md-state = "active" required >
2020-12-08 03:12:19 +01:00
< label class = "md-search__icon md-icon" for = "__search" >
2021-03-15 17:03:25 +01:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z" / > < / svg >
2020-12-08 03:12:19 +01:00
< 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 >
< / label >
2021-02-09 20:54:36 +01:00
< nav class = "md-search__options" aria-label = "Search" >
2021-03-15 17:03:25 +01:00
< button type = "reset" class = "md-search__icon md-icon" aria-label = "Clear" tabindex = "-1" >
2021-02-09 20:54:36 +01:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" / > < / svg >
< / button >
< / nav >
2021-03-15 17:03:25 +01:00
< div class = "md-search__suggest" data-md-component = "search-suggest" > < / div >
2020-12-08 03:12:19 +01:00
< / form >
< div class = "md-search__output" >
< div class = "md-search__scrollwrap" data-md-scrollfix >
< div class = "md-search-result" data-md-component = "search-result" >
< div class = "md-search-result__meta" >
Initializing search
< / div >
< ol class = "md-search-result__list" > < / ol >
< / div >
< / div >
< / div >
< / div >
< / div >
2021-02-09 20:54:36 +01:00
< div class = "md-header__source" >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< a href = "https://github.com/carissalow/rapids/" title = "Go to repository" class = "md-source" data-md-component = "source" >
2020-12-08 03:12:19 +01:00
< div class = "md-source__icon md-icon" >
2021-03-15 17:03:25 +01:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > < path d = "M439.55 236.05L244 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 >
2020-12-08 03:12:19 +01:00
< / div >
< div class = "md-source__repository" >
carissalow/rapids
< / div >
< / a >
< / div >
< / nav >
2020-12-20 19:59:17 +01:00
2020-12-08 03:12:19 +01:00
< / header >
< div class = "md-container" data-md-component = "container" >
2020-12-20 19:59:17 +01:00
2020-12-08 03:12:19 +01:00
< main class = "md-main" data-md-component = "main" >
< div class = "md-main__inner md-grid" >
2021-03-15 17:03:25 +01:00
< div class = "md-sidebar md-sidebar--primary" data-md-component = "sidebar" data-md-type = "navigation" >
2020-12-08 03:12:19 +01:00
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
2020-12-20 19:59:17 +01:00
2020-12-08 03:12:19 +01:00
< nav class = "md-nav md-nav--primary" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
2021-03-15 17:03:25 +01:00
< a href = "../.." title = "RAPIDS" class = "md-nav__button md-logo" aria-label = "RAPIDS" data-md-component = "logo" >
2020-12-08 03:12:19 +01:00
2021-02-21 23:35:55 +01:00
< img src = "../../img/logo.png" alt = "logo" >
2020-12-08 03:12:19 +01:00
< / a >
RAPIDS
< / label >
< div class = "md-nav__source" >
2021-03-15 17:03:25 +01:00
< a href = "https://github.com/carissalow/rapids/" title = "Go to repository" class = "md-source" data-md-component = "source" >
2020-12-08 03:12:19 +01:00
< div class = "md-source__icon md-icon" >
2021-03-15 17:03:25 +01:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > < path d = "M439.55 236.05L244 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 >
2020-12-08 03:12:19 +01:00
< / div >
< div class = "md-source__repository" >
carissalow/rapids
< / div >
< / a >
< / div >
< ul class = "md-nav__list" data-md-scrollfix >
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../.." class = "md-nav__link" >
Home
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_2" type = "checkbox" id = "__nav_2" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_2" >
2021-02-09 20:54:36 +01:00
Setup
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Setup" data-md-level = "1" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_2" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Setup
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< li class = "md-nav__item" >
< a href = "../../setup/overview/" class = "md-nav__link" >
Overview
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
2021-03-15 17:03:25 +01:00
< a href = "../../workflow-examples/minimal/" class = "md-nav__link" >
Minimal Example
2021-02-09 20:54:36 +01:00
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../setup/installation/" class = "md-nav__link" >
Installation
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../setup/configuration/" class = "md-nav__link" >
Configuration
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../setup/execution/" class = "md-nav__link" >
Execution
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-02-21 23:35:55 +01:00
< li class = "md-nav__item" >
< a href = "../../citation/" class = "md-nav__link" >
Citation
< / a >
< / li >
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_3" type = "checkbox" id = "__nav_3" >
< 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 = "../../datastreams/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" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_3_2" >
Phone
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-15 17:03:25 +01:00
< nav class = "md-nav" aria-label = "Phone" data-md-level = "2" >
< label class = "md-nav__title" for = "__nav_3_2" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
2021-03-15 17:03:25 +01:00
Phone
2021-02-09 20:54:36 +01:00
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< li class = "md-nav__item" >
< a href = "../../datastreams/aware-mysql/" class = "md-nav__link" >
aware_mysql
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
2021-03-15 17:03:25 +01:00
< a href = "../../datastreams/aware-csv/" class = "md-nav__link" >
aware_csv
2021-02-09 20:54:36 +01:00
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
2021-03-15 17:03:25 +01:00
< a href = "../../datastreams/aware-influxdb/" class = "md-nav__link" >
aware_influxdb (beta)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/mandatory-phone-format/" class = "md-nav__link" >
Mandatory Phone 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_3" type = "checkbox" id = "__nav_3_3" >
< 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 = "../../datastreams/fitbitjson-mysql/" class = "md-nav__link" >
fitbitjson_mysql
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/fitbitjson-csv/" class = "md-nav__link" >
fitbitjson_csv
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/fitbitparsed-mysql/" class = "md-nav__link" >
fitbitparsed_mysql
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/fitbitparsed-csv/" class = "md-nav__link" >
fitbitparsed_csv
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/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 = "../../datastreams/empatica-zip/" class = "md-nav__link" >
empatica_zip
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/mandatory-empatica-format/" class = "md-nav__link" >
Mandatory Empatica Format
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../../datastreams/add-new-data-streams/" class = "md-nav__link" >
Add New Data Streams
2021-02-09 20:54:36 +01:00
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4" type = "checkbox" id = "__nav_4" checked >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_4" >
2021-02-09 20:54:36 +01:00
Behavioral Features
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Behavioral Features" data-md-level = "1" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_4" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Behavioral Features
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../feature-introduction/" class = "md-nav__link" >
Introduction
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4_2" type = "checkbox" id = "__nav_4_2" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_4_2" >
2021-02-09 20:54:36 +01:00
Phone
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Phone" data-md-level = "2" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_4_2" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Phone
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-accelerometer/" class = "md-nav__link" >
Phone Accelerometer
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-activity-recognition/" class = "md-nav__link" >
Phone Activity Recognition
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-applications-crashes/" class = "md-nav__link" >
Phone Applications Crashes
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-01-14 20:38:07 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-applications-foreground/" class = "md-nav__link" >
Phone Applications Foreground
< / a >
< / li >
2021-01-14 20:38:07 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-applications-notifications/" class = "md-nav__link" >
Phone Applications Notifications
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-01-14 20:38:07 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-battery/" class = "md-nav__link" >
Phone Battery
< / a >
< / li >
2021-01-14 20:38:07 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-bluetooth/" class = "md-nav__link" >
Phone Bluetooth
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-calls/" class = "md-nav__link" >
Phone Calls
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-conversation/" class = "md-nav__link" >
Phone Conversation
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-data-yield/" class = "md-nav__link" >
Phone Data Yield
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-keyboard/" class = "md-nav__link" >
Phone Keyboard
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-01-14 20:38:07 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-light/" class = "md-nav__link" >
Phone Light
< / a >
< / li >
2021-01-14 20:38:07 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-locations/" class = "md-nav__link" >
Phone Locations
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< li class = "md-nav__item" >
< a href = "../phone-log/" class = "md-nav__link" >
Phone Log
< / a >
< / li >
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-messages/" class = "md-nav__link" >
Phone Messages
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-screen/" class = "md-nav__link" >
Phone Screen
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-wifi-connected/" class = "md-nav__link" >
Phone WiFI Connected
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../phone-wifi-visible/" class = "md-nav__link" >
Phone WiFI Visible
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4_3" type = "checkbox" id = "__nav_4_3" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_4_3" >
2021-02-09 20:54:36 +01:00
Fitbit
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Fitbit" data-md-level = "2" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_4_3" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Fitbit
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-data-yield/" class = "md-nav__link" >
Fitbit Data Yield
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-02-03 00:52:33 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-heartrate-summary/" class = "md-nav__link" >
Fitbit Heart Rate Summary
< / a >
< / li >
2021-02-03 00:52:33 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-heartrate-intraday/" class = "md-nav__link" >
Fitbit Heart Rate Intraday
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-sleep-summary/" class = "md-nav__link" >
Fitbit Sleep Summary
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-02-26 23:53:16 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-sleep-intraday/" class = "md-nav__link" >
Fitbit Sleep Intraday
< / a >
< / li >
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-steps-summary/" class = "md-nav__link" >
Fitbit Steps Summary
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../fitbit-steps-intraday/" class = "md-nav__link" >
Fitbit Steps Intraday
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-02-21 23:35:55 +01:00
< li class = "md-nav__item md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_4_4" type = "checkbox" id = "__nav_4_4" >
2021-02-21 23:35:55 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_4_4" >
2021-02-21 23:35:55 +01:00
Empatica
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Empatica" data-md-level = "2" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_4_4" >
2021-02-21 23:35:55 +01:00
< 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-accelerometer/" class = "md-nav__link" >
Empatica Accelerometer
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../empatica-heartrate/" class = "md-nav__link" >
Empatica Heart Rate
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../empatica-temperature/" class = "md-nav__link" >
Empatica Temperature
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../empatica-electrodermal-activity/" class = "md-nav__link" >
Empatica Electrodermal Activity
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../empatica-blood-volume-pulse/" class = "md-nav__link" >
Empatica Blood Volume Pulse
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../empatica-inter-beat-interval/" class = "md-nav__link" >
Empatica Inter Beat Interval
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../empatica-tags/" class = "md-nav__link" >
Empatica Tags
< / a >
< / li >
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--active" >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< 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" >
Add New Features
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< a href = "./" class = "md-nav__link md-nav__link--active" >
2020-12-08 03:12:19 +01:00
Add New Features
2021-02-09 20:54:36 +01:00
< / a >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
< 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 >
2021-03-15 17:03:25 +01:00
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
< li class = "md-nav__item" >
< a href = "#new-features-for-existing-sensors" class = "md-nav__link" >
New Features for Existing Sensors
< / a >
< nav class = "md-nav" aria-label = "New Features for Existing Sensors" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#modify-the-configyaml-file" class = "md-nav__link" >
Modify the config.yaml file
< / a >
< / li >
< li class = "md-nav__item" >
2021-03-15 17:03:25 +01:00
< a href = "#create-a-feature-provider-script" class = "md-nav__link" >
Create a feature provider script
2020-12-08 03:12:19 +01:00
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#implement-your-feature-extraction-code" class = "md-nav__link" >
Implement your feature extraction code
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#new-features-for-non-existing-sensors" class = "md-nav__link" >
New Features for Non-Existing Sensors
< / a >
< / li >
< / ul >
< / nav >
2021-02-09 20:54:36 +01:00
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_5" type = "checkbox" id = "__nav_5" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_5" >
2021-02-09 20:54:36 +01:00
Visualizations
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Visualizations" data-md-level = "1" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_5" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Visualizations
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../visualizations/data-quality-visualizations/" class = "md-nav__link" >
Data Quality
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../visualizations/feature-visualizations/" class = "md-nav__link" >
Features
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< 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" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_7" >
2021-02-09 20:54:36 +01:00
Developers
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Developers" data-md-level = "1" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_7" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Developers
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/git-flow/" class = "md-nav__link" >
Git Flow
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/remote-support/" class = "md-nav__link" >
Remote Support
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/virtual-environments/" class = "md-nav__link" >
Virtual Environments
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/documentation/" class = "md-nav__link" >
Documentation
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/testing/" class = "md-nav__link" >
Testing
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/test-cases/" class = "md-nav__link" >
Test cases
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2021-02-23 22:31:00 +01:00
< li class = "md-nav__item" >
< a href = "../../developers/validation-schema-config/" class = "md-nav__link" >
Validation schema of config.yaml
< / a >
< / li >
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item md-nav__item--section md-nav__item--nested" >
2021-03-15 17:03:25 +01:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_8" type = "checkbox" id = "__nav_8" >
2021-02-09 20:54:36 +01:00
2021-03-15 17:03:25 +01:00
< label class = "md-nav__link" for = "__nav_8" >
2021-02-09 20:54:36 +01:00
Others
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" aria-label = "Others" data-md-level = "1" >
2021-03-15 17:03:25 +01:00
< label class = "md-nav__title" for = "__nav_8" >
2021-02-09 20:54:36 +01:00
< span class = "md-nav__icon md-icon" > < / span >
Others
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../migrating-from-old-versions/" class = "md-nav__link" >
2021-03-15 17:03:25 +01:00
Migrating from an old version
2021-02-09 20:54:36 +01:00
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../code_of_conduct/" class = "md-nav__link" >
Code of Conduct
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
2021-03-15 17:03:25 +01:00
< a href = "../../common-errors/" class = "md-nav__link" >
Common Errors
2021-02-09 20:54:36 +01:00
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../team/" class = "md-nav__link" >
Team
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< li class = "md-nav__item" >
< a href = "../../change-log/" class = "md-nav__link" >
Change Log
< / a >
< / li >
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
2020-12-08 03:12:19 +01:00
2021-02-09 20:54:36 +01:00
< / ul >
< / nav >
< / li >
2020-12-08 03:12:19 +01:00
< / ul >
< / nav >
< / div >
< / div >
< / div >
2021-03-15 17:03:25 +01:00
< div class = "md-sidebar md-sidebar--secondary" data-md-component = "sidebar" data-md-type = "toc" >
2020-12-08 03:12:19 +01:00
< 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 >
2021-03-15 17:03:25 +01:00
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
2020-12-08 03:12:19 +01:00
< li class = "md-nav__item" >
< a href = "#new-features-for-existing-sensors" class = "md-nav__link" >
New Features for Existing Sensors
< / a >
< nav class = "md-nav" aria-label = "New Features for Existing Sensors" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#modify-the-configyaml-file" class = "md-nav__link" >
Modify the config.yaml file
< / a >
< / li >
< li class = "md-nav__item" >
2021-03-15 17:03:25 +01:00
< a href = "#create-a-feature-provider-script" class = "md-nav__link" >
Create a feature provider script
2020-12-08 03:12:19 +01:00
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#implement-your-feature-extraction-code" class = "md-nav__link" >
Implement your feature extraction code
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#new-features-for-non-existing-sensors" class = "md-nav__link" >
New Features for Non-Existing Sensors
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
2021-03-15 17:03:25 +01:00
< div class = "md-content" data-md-component = "content" >
2020-12-08 03:12:19 +01:00
< article class = "md-content__inner md-typeset" >
< a href = "https://github.com/carissalow/rapids/edit/master/docs/features/add-new-features.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 = "add-new-features" > Add New Features< a class = "headerlink" href = "#add-new-features" title = "Permanent link" > ¶ < / a > < / h1 >
< div class = "admonition hint" >
< p class = "admonition-title" > Hint< / p >
2021-02-21 23:35:55 +01:00
< ul >
< li > We recommend reading the < a href = "../feature-introduction/" > Behavioral Features Introduction< / a > before reading this page.< / li >
< li > You can implement new features in Python or R scripts.< / li >
2021-03-15 17:03:25 +01:00
< li > You won’ t have to deal with time zones, dates, times, data cleaning, or preprocessing. The data that RAPIDS pipes to your feature extraction code are ready to process.< / li >
2021-02-21 23:35:55 +01:00
< / ul >
2020-12-08 03:12:19 +01:00
< / div >
< h2 id = "new-features-for-existing-sensors" > New Features for Existing Sensors< a class = "headerlink" href = "#new-features-for-existing-sensors" title = "Permanent link" > ¶ < / a > < / h2 >
< p > You can add new features to any existing sensors (see list below) by adding a new provider in three steps:< / p >
< ol >
< li > < a href = "#modify-the-configyaml-file" > Modify< / a > the < code > config.yaml< / code > file < / li >
2021-03-15 17:03:25 +01:00
< li > < a href = "#create-a-feature-provider-script" > Create< / a > your feature provider script< / li >
2020-12-08 03:12:19 +01:00
< li > < a href = "#implement-your-feature-extraction-code" > Implement< / a > your features extraction code< / li >
< / ol >
2021-03-15 17:03:25 +01:00
< p > As a tutorial, we will add a new provider for < code > PHONE_ACCELEROMETER< / code > called < code > VEGA< / code > that extracts < code > feature1< / code > , < code > feature2< / code > , < code > feature3< / code > with a Python script that requires a parameter from the user called < code > MY_PARAMETER< / code > .< / p >
< details class = "info" > < summary > Existing Sensors< / summary > < p > An existing sensor of any device with a configuration entry in < code > config.yaml< / code > :< / p >
2021-02-21 23:35:55 +01:00
< p > Smartphone (AWARE)< / p >
2020-12-08 03:12:19 +01:00
< ul >
< li > Phone Accelerometer< / li >
< li > Phone Activity Recognition< / li >
2021-03-15 17:03:25 +01:00
< li > Phone Applications Crashes< / li >
2020-12-08 03:12:19 +01:00
< li > Phone Applications Foreground< / li >
2021-03-15 17:03:25 +01:00
< li > Phone Applications Notifications< / li >
2020-12-08 03:12:19 +01:00
< li > Phone Battery< / li >
< li > Phone Bluetooth< / li >
< li > Phone Calls< / li >
< li > Phone Conversation< / li >
< li > Phone Data Yield< / li >
2021-03-15 17:03:25 +01:00
< li > Phone Keyboard< / li >
2020-12-08 03:12:19 +01:00
< li > Phone Light< / li >
< li > Phone Locations< / li >
2021-03-15 17:03:25 +01:00
< li > Phone Log< / li >
2020-12-08 03:12:19 +01:00
< li > Phone Messages< / li >
< li > Phone Screen< / li >
< li > Phone WiFI Connected< / li >
< li > Phone WiFI Visible< / li >
2021-02-21 23:35:55 +01:00
< / ul >
< p > Fitbit< / p >
< ul >
2021-02-03 00:52:33 +01:00
< li > Fitbit Data Yield< / li >
2020-12-08 03:12:19 +01:00
< li > Fitbit Heart Rate Summary< / li >
< li > Fitbit Heart Rate Intraday< / li >
< li > Fitbit Sleep Summary< / li >
2021-02-26 23:53:16 +01:00
< li > Fitbit Sleep Intraday< / li >
2020-12-08 03:12:19 +01:00
< li > Fitbit Steps Summary< / li >
< li > Fitbit Steps Intraday< / li >
< / ul >
2021-02-21 23:35:55 +01:00
< p > Empatica< / p >
< ul >
< li > Empatica Accelerometer< / li >
< li > Empatica Heart Rate< / li >
< li > Empatica Temperature< / li >
< li > Empatica Electrodermal Activity< / li >
< li > Empatica Blood Volume Pulse< / li >
< li > Empatica Inter Beat Interval< / li >
< li > Empatica Tags< / li >
< / ul >
2020-12-08 03:12:19 +01:00
< / details >
< h3 id = "modify-the-configyaml-file" > Modify the < code > config.yaml< / code > file< a class = "headerlink" href = "#modify-the-configyaml-file" title = "Permanent link" > ¶ < / a > < / h3 >
2021-03-15 17:03:25 +01:00
< p > In this step, you need to add your provider configuration section under the relevant sensor in < code > config.yaml< / code > . See our example for our tutorial’ s < code > VEGA< / code > provider for < code > PHONE_ACCELEROMETER< / code > :< / p >
2020-12-08 03:12:19 +01:00
< details class = "example" > < summary > Example configuration for a new accelerometer provider < code > VEGA< / code > < / summary > < div class = "highlight" > < pre > < span > < / span > < code > < span class = "nt" > PHONE_ACCELEROMETER< / span > < span class = "p" > :< / span >
2021-03-15 17:03:25 +01:00
< span class = "nt" > CONTAINER< / span > < span class = "p" > :< / span > < span class = "l l-Scalar l-Scalar-Plain" > accelerometer< / span >
2020-12-08 03:12:19 +01:00
< span class = "nt" > PROVIDERS< / span > < span class = "p" > :< / span >
2021-03-15 17:03:25 +01:00
< span class = "nt" > RAPIDS< / span > < span class = "p" > :< / span > < span class = "c1" > # this is a feature provider< / span >
2020-12-08 03:12:19 +01:00
< span class = "nt" > COMPUTE< / span > < span class = "p" > :< / span > < span class = "l l-Scalar l-Scalar-Plain" > False< / span >
< span class = "l l-Scalar l-Scalar-Plain" > ...< / span >
2021-03-15 17:03:25 +01:00
< span class = "nt" > PANDA< / span > < span class = "p" > :< / span > < span class = "c1" > # this is another feature provider< / span >
2020-12-08 03:12:19 +01:00
< span class = "nt" > COMPUTE< / span > < span class = "p" > :< / span > < span class = "l l-Scalar l-Scalar-Plain" > False< / span >
< span class = "l l-Scalar l-Scalar-Plain" > ...< / span >
2021-03-15 17:03:25 +01:00
< span class = "hll" > < span class = "nt" > VEGA< / span > < span class = "p" > :< / span > < span class = "c1" > # this is our new feature provider< / span >
< / span > < span class = "hll" > < span class = "nt" > COMPUTE< / span > < span class = "p" > :< / span > < span class = "l l-Scalar l-Scalar-Plain" > False< / span >
< / span > < span class = "hll" > < span class = "nt" > FEATURES< / span > < span class = "p" > :< / span > < span class = "p p-Indicator" > [< / span > < span class = "s" > " feature1" < / span > < span class = "p p-Indicator" > ,< / span > < span class = "s" > " feature2" < / span > < span class = "p p-Indicator" > ,< / span > < span class = "s" > " feature3" < / span > < span class = "p p-Indicator" > ]< / span >
< / span > < span class = "hll" > < span class = "nt" > MY_PARAMTER< / span > < span class = "p" > :< / span > < span class = "l l-Scalar l-Scalar-Plain" > a_string< / span >
< / span > < span class = "hll" > < span class = "nt" > SRC_SCRIPT< / span > < span class = "p" > :< / span > < span class = "l l-Scalar l-Scalar-Plain" > src/features/phone_accelerometer/vega/main.py< / span >
< / span > < / code > < / pre > < / div >
2020-12-08 03:12:19 +01:00
< / details >
< table >
< thead >
< tr >
< th > Key < / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > [COMPUTE]< / code > < / td >
< td > Flag to activate/deactivate your provider< / td >
< / tr >
< tr >
< td > < code > [FEATURES]< / code > < / td >
< td > List of features your provider supports. Your provider code should only return the features on this list< / td >
< / tr >
< tr >
< td > < code > [MY_PARAMTER]< / code > < / td >
2021-03-15 17:03:25 +01:00
< td > An arbitrary parameter that our example provider < code > VEGA< / code > needs. This can be a boolean, integer, float, string, or an array of any of such types.< / td >
2020-12-08 03:12:19 +01:00
< / tr >
< tr >
2021-03-15 17:03:25 +01:00
< td > < code > [SRC_SCRIPT]< / code > < / td >
< td > The relative path from RAPIDS’ root folder to an script that computes the features for this provider. It can be implemented in R or Python.< / td >
2020-12-08 03:12:19 +01:00
< / tr >
< / tbody >
< / table >
2021-03-15 17:03:25 +01:00
< h3 id = "create-a-feature-provider-script" > Create a feature provider script< a class = "headerlink" href = "#create-a-feature-provider-script" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Create your feature Python or R script called < code > main.py< / code > or < code > main.R< / code > in the correct folder, < code > src/feature/[sensorname]/[providername]/< / code > . RAPIDS automatically loads and executes it based on the config key < code > [SRC_SCRIPT]< / code > you added in the last step. For our example, this script is:
< div class = "highlight" > < pre > < span > < / span > < code > src/feature/phone_accelerometer/vega/main.py
< / code > < / pre > < / div > < / p >
< h3 id = "implement-your-feature-extraction-code" > Implement your feature extraction code< a class = "headerlink" href = "#implement-your-feature-extraction-code" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Every feature script (< code > main.[py|R]< / code > ) needs a < code > [providername]_features< / code > function with specific parameters. RAPIDS calls this function with the sensor data ready to process and with other functions and arguments you will need.< / p >
< div class = "tabbed-set" data-tabs = "1:2" > < input checked = "checked" id = "__tabbed_1_1" name = "__tabbed_1" type = "radio" / > < label for = "__tabbed_1_1" > Python function< / label > < div class = "tabbed-content" >
2020-12-08 03:12:19 +01:00
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "p" > [< / span > < span class = "n" > providername< / span > < span class = "p" > ]< / span > < span class = "n" > _features< / span > < span class = "p" > (< / span > < span class = "n" > sensor_data_files< / span > < span class = "p" > ,< / span > < span class = "n" > time_segment< / span > < span class = "p" > ,< / span > < span class = "n" > provider< / span > < span class = "p" > ,< / span > < span class = "n" > filter_data_by_segment< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2021-03-15 17:03:25 +01:00
< span class = "c1" > # empty for now< / span >
< span class = "k" > return< / span > < span class = "p" > (< / span > < span class = "n" > your_features_df< / span > < span class = "p" > )< / span >
2020-12-08 03:12:19 +01:00
< / code > < / pre > < / div >
< / div >
2021-03-15 17:03:25 +01:00
< input id = "__tabbed_1_2" name = "__tabbed_1" type = "radio" / > < label for = "__tabbed_1_2" > R function< / label > < div class = "tabbed-content" >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "p" > [< / span > < span class = "n" > providername< / span > < span class = "p" > ]< / span > _< span class = "n" > features< / span > < span class = "o" > < -< / span > < span class = "nf" > function< / span > < span class = "p" > (< / span > < span class = "n" > sensor_data< / span > < span class = "p" > ,< / span > < span class = "n" > time_segment< / span > < span class = "p" > ,< / span > < span class = "n" > provider< / span > < span class = "p" > ){< / span >
< span class = "c1" > # empty for now< / span >
< span class = "nf" > return< / span > < span class = "p" > (< / span > < span class = "n" > your_features_df< / span > < span class = "p" > )< / span >
< span class = "p" > }< / span >
2020-12-08 03:12:19 +01:00
< / code > < / pre > < / div >
< / div >
2021-03-15 17:03:25 +01:00
< / div >
2020-12-08 03:12:19 +01:00
< table >
< thead >
< tr >
< th > Parameter < / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > sensor_data_files< / code > < / td >
< td > Path to the CSV file containing the data of a single participant. This data has been cleaned and preprocessed. Your function will be automatically called for each participant in your study (in the < code > [PIDS]< / code > array in < code > config.yaml< / code > )< / td >
< / tr >
< tr >
< td > < code > time_segment< / code > < / td >
< td > The label of the time segment that should be processed.< / td >
< / tr >
< tr >
< td > < code > provider< / code > < / td >
< td > The parameters you configured for your provider in < code > config.yaml< / code > will be available in this variable as a dictionary in Python or a list in R. In our example this dictionary contains < code > {MY_PARAMETER:"a_string"}< / code > < / td >
< / tr >
< tr >
< td > < code > filter_data_by_segment< / code > < / td >
< td > Python only. A function that you will use to filter your data. In R this function is already available in the environment.< / td >
< / tr >
< tr >
< td > < code > *args< / code > < / td >
< td > Python only. Not used for now< / td >
< / tr >
< tr >
< td > < code > **kwargs< / code > < / td >
< td > Python only. Not used for now< / td >
< / tr >
< / tbody >
< / table >
2021-03-15 17:03:25 +01:00
< p > The next step is to implement the code that computes your behavioral features in your provider script’ s function. As with any other script, this function can call other auxiliary methods, but in general terms, it should have three stages:< / p >
2020-12-08 03:12:19 +01:00
< details class = "info" > < summary > 1. Read a participant’ s data by loading the CSV data stored in the file pointed by < code > sensor_data_files< / code > < / summary > < div class = "highlight" > < pre > < span > < / span > < code > < span class = "n" > acc_data< / span > < span class = "o" > =< / span > < span class = "n" > pd< / span > < span class = "o" > .< / span > < span class = "n" > read_csv< / span > < span class = "p" > (< / span > < span class = "n" > sensor_data_files< / span > < span class = "p" > [< / span > < span class = "s2" > " sensor_data" < / span > < span class = "p" > ])< / span >
< / code > < / pre > < / div >
2021-03-15 17:03:25 +01:00
< p > Note that the phone’ s battery, screen, and activity recognition data are given as episodes instead of event rows (for example, start and end timestamps of the periods the phone screen was on)< / p >
2020-12-08 03:12:19 +01:00
< / details >
2021-03-15 17:03:25 +01:00
< details class = "info" > < summary > 2. Filter your data to process only those rows that belong to < code > time_segment< / code > < / summary > < p > This step is only one line of code, but keep reading to understand why we need it.
2020-12-08 03:12:19 +01:00
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "n" > acc_data< / span > < span class = "o" > =< / span > < span class = "n" > filter_data_by_segment< / span > < span class = "p" > (< / span > < span class = "n" > acc_data< / span > < span class = "p" > ,< / span > < span class = "n" > time_segment< / span > < span class = "p" > )< / span >
< / code > < / pre > < / div > < / p >
< p > You should use the < code > filter_data_by_segment()< / code > function to process and group those rows that belong to each of the < a href = "../../setup/configuration/#time-segments" > time segments RAPIDS could be configured with< / a > .< / p >
2021-03-15 17:03:25 +01:00
< p > Let’ s understand the < code > filter_data_by_segment()< / code > function with an example. A RAPIDS user can extract features on any arbitrary < a href = "../../setup/configuration/#time-segments" > time segment< / a > . A time segment is a period that has a label and one or more instances. For example, the user (or you) could have requested features on a daily, weekly, and weekend basis for < code > p01< / code > . The labels are arbitrary, and the instances depend on the days a participant was monitored for: < / p >
2020-12-08 03:12:19 +01:00
< ul >
< li > the daily segment could be named < code > my_days< / code > and if < code > p01< / code > was monitored for 14 days, it would have 14 instances< / li >
< li > the weekly segment could be named < code > my_weeks< / code > and if < code > p01< / code > was monitored for 14 days, it would have 2 instances.< / li >
< li > the weekend segment could be named < code > my_weekends< / code > and if < code > p01< / code > was monitored for 14 days, it would have 2 instances.< / li >
< / ul >
2021-03-15 17:03:25 +01:00
< p > For this example, RAPIDS will call your provider function three times for < code > p01< / code > , once where < code > time_segment< / code > is < code > my_days< / code > , once where < code > time_segment< / code > is < code > my_weeks< / code > , and once where < code > time_segment< / code > is < code > my_weekends< / code > . In this example, not every row in < code > p01< / code > ‘ s data needs to take part in the feature computation for either segment < strong > and< / strong > the rows need to be grouped differently. < / p >
2020-12-08 03:12:19 +01:00
< p > Thus < code > filter_data_by_segment()< / code > comes in handy, it will return a data frame that contains the rows that were logged during a time segment plus an extra column called < code > local_segment< / code > . This new column will have as many unique values as time segment instances exist (14, 2, and 2 for our < code > p01< / code > ‘ s < code > my_days< / code > , < code > my_weeks< / code > , and < code > my_weekends< / code > examples). After filtering, < strong > you should group the data frame by this column and compute any desired features< / strong > , for example:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "n" > acc_features< / span > < span class = "p" > [< / span > < span class = "s2" > " maxmagnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > groupby< / span > < span class = "p" > ([< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ])[< / span > < span class = "s2" > " magnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > max< / span > < span class = "p" > ()< / span >
< / code > < / pre > < / div >
2021-03-15 17:03:25 +01:00
< p > The reason RAPIDS does not filter the participant’ s data set for you is because your code might need to compute something based on a participant’ s complete dataset before computing their features. For example, you might want to identify the number that called a participant the most throughout the study before computing a feature with the number of calls the participant received from that number.< / p >
2020-12-08 03:12:19 +01:00
< / details >
< details class = "info" > < summary > 3. Return a data frame with your features< / summary > < p > After filtering, grouping your data, and computing your features, your provider function should return a data frame that has:< / p >
< ul >
2021-03-15 17:03:25 +01:00
< li > One row per time segment instance (e.g., 14 our < code > p01< / code > ‘ s < code > my_days< / code > example)< / li >
2020-12-08 03:12:19 +01:00
< li > The < code > local_segment< / code > column added by < code > filter_data_by_segment()< / code > < / li >
2021-03-15 17:03:25 +01:00
< li > One column per feature. The name of your features should only contain letters or numbers (< code > feature1< / code > ) by convention. RAPIDS automatically adds the correct sensor and provider prefix; in our example, this prefix is < code > phone_accelerometr_vega_< / code > .< / li >
2020-12-08 03:12:19 +01:00
< / ul >
< / details >
2021-03-15 17:03:25 +01:00
< details class = "example" > < summary > < code > PHONE_ACCELEROMETER< / code > Provider Example< / summary > < p > For your reference, this our own provider (< code > RAPIDS< / code > ) for < code > PHONE_ACCELEROMETER< / code > that computes five acceleration features< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "kn" > import< / span > < span class = "nn" > pandas< / span > < span class = "k" > as< / span > < span class = "nn" > pd< / span >
< span class = "kn" > import< / span > < span class = "nn" > numpy< / span > < span class = "k" > as< / span > < span class = "nn" > np< / span >
< span class = "k" > def< / span > < span class = "nf" > rapids_features< / span > < span class = "p" > (< / span > < span class = "n" > sensor_data_files< / span > < span class = "p" > ,< / span > < span class = "n" > time_segment< / span > < span class = "p" > ,< / span > < span class = "n" > provider< / span > < span class = "p" > ,< / span > < span class = "n" > filter_data_by_segment< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-12-08 03:12:19 +01:00
< span class = "n" > acc_data< / span > < span class = "o" > =< / span > < span class = "n" > pd< / span > < span class = "o" > .< / span > < span class = "n" > read_csv< / span > < span class = "p" > (< / span > < span class = "n" > sensor_data_files< / span > < span class = "p" > [< / span > < span class = "s2" > " sensor_data" < / span > < span class = "p" > ])< / span >
< span class = "n" > requested_features< / span > < span class = "o" > =< / span > < span class = "n" > provider< / span > < span class = "p" > [< / span > < span class = "s2" > " FEATURES" < / span > < span class = "p" > ]< / span >
< span class = "c1" > # name of the features this function can compute< / span >
< span class = "n" > base_features_names< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "s2" > " maxmagnitude" < / span > < span class = "p" > ,< / span > < span class = "s2" > " minmagnitude" < / span > < span class = "p" > ,< / span > < span class = "s2" > " avgmagnitude" < / span > < span class = "p" > ,< / span > < span class = "s2" > " medianmagnitude" < / span > < span class = "p" > ,< / span > < span class = "s2" > " stdmagnitude" < / span > < span class = "p" > ]< / span >
< span class = "c1" > # the subset of requested features this function can compute< / span >
< span class = "n" > features_to_compute< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "nb" > set< / span > < span class = "p" > (< / span > < span class = "n" > requested_features< / span > < span class = "p" > )< / span > < span class = "o" > & < / span > < span class = "nb" > set< / span > < span class = "p" > (< / span > < span class = "n" > base_features_names< / span > < span class = "p" > ))< / span >
< span class = "n" > acc_features< / span > < span class = "o" > =< / span > < span class = "n" > pd< / span > < span class = "o" > .< / span > < span class = "n" > DataFrame< / span > < span class = "p" > (< / span > < span class = "n" > columns< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ]< / span > < span class = "o" > +< / span > < span class = "n" > features_to_compute< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > empty< / span > < span class = "p" > :< / span >
< span class = "n" > acc_data< / span > < span class = "o" > =< / span > < span class = "n" > filter_data_by_segment< / span > < span class = "p" > (< / span > < span class = "n" > acc_data< / span > < span class = "p" > ,< / span > < span class = "n" > time_segment< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > empty< / span > < span class = "p" > :< / span >
< span class = "n" > acc_features< / span > < span class = "o" > =< / span > < span class = "n" > pd< / span > < span class = "o" > .< / span > < span class = "n" > DataFrame< / span > < span class = "p" > ()< / span >
< span class = "c1" > # get magnitude related features: magnitude = sqrt(x^2+y^2+z^2)< / span >
< span class = "n" > magnitude< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > apply< / span > < span class = "p" > (< / span > < span class = "k" > lambda< / span > < span class = "n" > row< / span > < span class = "p" > :< / span > < span class = "n" > np< / span > < span class = "o" > .< / span > < span class = "n" > sqrt< / span > < span class = "p" > (< / span > < span class = "n" > row< / span > < span class = "p" > [< / span > < span class = "s2" > " double_values_0" < / span > < span class = "p" > ]< / span > < span class = "o" > **< / span > < span class = "mi" > 2< / span > < span class = "o" > +< / span > < span class = "n" > row< / span > < span class = "p" > [< / span > < span class = "s2" > " double_values_1" < / span > < span class = "p" > ]< / span > < span class = "o" > **< / span > < span class = "mi" > 2< / span > < span class = "o" > +< / span > < span class = "n" > row< / span > < span class = "p" > [< / span > < span class = "s2" > " double_values_2" < / span > < span class = "p" > ]< / span > < span class = "o" > **< / span > < span class = "mi" > 2< / span > < span class = "p" > ),< / span > < span class = "n" > axis< / span > < span class = "o" > =< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "n" > acc_data< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > assign< / span > < span class = "p" > (< / span > < span class = "n" > magnitude< / span > < span class = "o" > =< / span > < span class = "n" > magnitude< / span > < span class = "o" > .< / span > < span class = "n" > values< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "s2" > " maxmagnitude" < / span > < span class = "ow" > in< / span > < span class = "n" > features_to_compute< / span > < span class = "p" > :< / span >
< span class = "n" > acc_features< / span > < span class = "p" > [< / span > < span class = "s2" > " maxmagnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > groupby< / span > < span class = "p" > ([< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ])[< / span > < span class = "s2" > " magnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > max< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "s2" > " minmagnitude" < / span > < span class = "ow" > in< / span > < span class = "n" > features_to_compute< / span > < span class = "p" > :< / span >
< span class = "n" > acc_features< / span > < span class = "p" > [< / span > < span class = "s2" > " minmagnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > groupby< / span > < span class = "p" > ([< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ])[< / span > < span class = "s2" > " magnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > min< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "s2" > " avgmagnitude" < / span > < span class = "ow" > in< / span > < span class = "n" > features_to_compute< / span > < span class = "p" > :< / span >
< span class = "n" > acc_features< / span > < span class = "p" > [< / span > < span class = "s2" > " avgmagnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > groupby< / span > < span class = "p" > ([< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ])[< / span > < span class = "s2" > " magnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > mean< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "s2" > " medianmagnitude" < / span > < span class = "ow" > in< / span > < span class = "n" > features_to_compute< / span > < span class = "p" > :< / span >
< span class = "n" > acc_features< / span > < span class = "p" > [< / span > < span class = "s2" > " medianmagnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > groupby< / span > < span class = "p" > ([< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ])[< / span > < span class = "s2" > " magnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > median< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "s2" > " stdmagnitude" < / span > < span class = "ow" > in< / span > < span class = "n" > features_to_compute< / span > < span class = "p" > :< / span >
< span class = "n" > acc_features< / span > < span class = "p" > [< / span > < span class = "s2" > " stdmagnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > acc_data< / span > < span class = "o" > .< / span > < span class = "n" > groupby< / span > < span class = "p" > ([< / span > < span class = "s2" > " local_segment" < / span > < span class = "p" > ])[< / span > < span class = "s2" > " magnitude" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > std< / span > < span class = "p" > ()< / span >
< span class = "n" > acc_features< / span > < span class = "o" > =< / span > < span class = "n" > acc_features< / span > < span class = "o" > .< / span > < span class = "n" > reset_index< / span > < span class = "p" > ()< / span >
< span class = "k" > return< / span > < span class = "n" > acc_features< / span >
< / code > < / pre > < / div >
< / details >
< h2 id = "new-features-for-non-existing-sensors" > New Features for Non-Existing Sensors< a class = "headerlink" href = "#new-features-for-non-existing-sensors" title = "Permanent link" > ¶ < / a > < / h2 >
< p > If you want to add features for a device or a sensor that we do not support at the moment (those that do not appear in the < code > "Existing Sensors"< / code > list above), < a href = "../../team" > contact us< / a > or request it on < a href = "http://awareframework.com:3000/" > Slack< / a > and we can add the necessary code so you can follow the instructions above.< / p >
2021-03-15 17:03:25 +01:00
<!-- 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 >
2020-12-08 03:12:19 +01:00
< / article >
< / div >
< / div >
2021-03-15 17:03:25 +01:00
2020-12-08 03:12:19 +01:00
< / main >
< footer class = "md-footer" >
2021-02-09 20:54:36 +01:00
< nav class = "md-footer__inner md-grid" aria-label = "Footer" >
2021-02-21 23:35:55 +01:00
< a href = "../empatica-tags/" class = "md-footer__link md-footer__link--prev" rel = "prev" >
2021-02-09 20:54:36 +01:00
< 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 >
2021-02-21 23:35:55 +01:00
Empatica Tags
2020-12-08 03:12:19 +01:00
< / div >
2021-02-09 20:54:36 +01:00
< / div >
< / a >
< a href = "../../visualizations/data-quality-visualizations/" 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 >
Data Quality
2020-12-08 03:12:19 +01:00
< / div >
2021-02-09 20:54:36 +01:00
< / 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 >
2020-12-08 03:12:19 +01:00
< 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
2020-12-20 19:59:17 +01:00
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
2020-12-08 03:12:19 +01:00
Material for MkDocs Insiders
< / a >
2021-03-15 17:03:25 +01:00
2020-12-08 03:12:19 +01:00
< / 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 >
2021-03-15 17:03:25 +01:00
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
< 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.9849d06a.min.js" , "version" : { "method" : "mike" } } < / script >
2020-12-08 03:12:19 +01:00
2021-03-15 17:03:25 +01:00
< script src = "../../assets/javascripts/bundle.7da13850.min.js" > < / script >
2020-12-08 03:12:19 +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 >
< script src = "../../javascripts/extra.js" > < / script >
< / body >
< / html >