Deployed 2b1f3f2
to 0.3 with MkDocs 1.1.2 and mike 0.5.5
parent
bcf8226377
commit
b15ab2e80c
|
@ -1025,8 +1025,15 @@
|
|||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#030" class="md-nav__link">
|
||||
0.3.0
|
||||
<a href="#v031" class="md-nav__link">
|
||||
v0.3.1
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#v030" class="md-nav__link">
|
||||
v0.3.0
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
@ -1137,8 +1144,15 @@
|
|||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#030" class="md-nav__link">
|
||||
0.3.0
|
||||
<a href="#v031" class="md-nav__link">
|
||||
v0.3.1
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#v030" class="md-nav__link">
|
||||
v0.3.0
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
@ -1217,7 +1231,15 @@
|
|||
|
||||
|
||||
<h1 id="change-log">Change Log<a class="headerlink" href="#change-log" title="Permanent link">¶</a></h1>
|
||||
<h2 id="030">0.3.0<a class="headerlink" href="#030" title="Permanent link">¶</a></h2>
|
||||
<h2 id="v031">v0.3.1<a class="headerlink" href="#v031" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Update installation docs for RAPIDS’ docker container</li>
|
||||
<li>Fix example analysis use of accelerometer data in a plot</li>
|
||||
<li>Update FAQ</li>
|
||||
<li>Update minimal example documentation</li>
|
||||
<li>Minor doc updates</li>
|
||||
</ul>
|
||||
<h2 id="v030">v0.3.0<a class="headerlink" href="#v030" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Update R and Python virtual environments</li>
|
||||
<li>Add GH actions CI support for tests and docker</li>
|
||||
|
|
|
@ -1087,6 +1087,13 @@
|
|||
Embedded nul in string
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#there-is-no-package-called-rmariadb" class="md-nav__link">
|
||||
There is no package called RMariaDB
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
@ -1253,6 +1260,13 @@
|
|||
Embedded nul in string
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#there-is-no-package-called-rmariadb" class="md-nav__link">
|
||||
There is no package called RMariaDB
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
@ -1449,16 +1463,24 @@ ClobberError: This transaction has incompatible packages due to a shared path.
|
|||
<details class="done" open="open"><summary>Solution</summary><p>This problem is due to the way <code>RMariaDB</code> handles a mismatch between data types in R and MySQL (see <a href="https://github.com/r-dbi/RMariaDB/issues/121">this issue</a>). Since it seems this problem won’t be handled by <code>RMariaDB</code>, you have two options:</p>
|
||||
<ol>
|
||||
<li>If it’s only a few rows that are causing this problem, remove the the null character from the conflictive table cell.</li>
|
||||
<li>If it’s not feasible to modify your data you can try swapping <code>RMariaDB</code> with <code>RMySQL</code>. Just have in mind you might have problems connecting to modern MySQL servers running in Liunx:<ul>
|
||||
<li>If it’s not feasible to modify your data you can try swapping <code>RMariaDB</code> with <code>RMySQL</code>. Just have in mind you might have problems connecting to modern MySQL servers running in Linux:<ul>
|
||||
<li>Add <code>RMySQL</code> to the renv environment by running the following command in a terminal open on RAPIDS root folder
|
||||
<div class="highlight"><pre><span></span><code>R -e <span class="s1">'renv::install("RMySQL")'</span>
|
||||
</code></pre></div></li>
|
||||
<li>Go to <code>src/data/download_phone_data.R</code> and replace <code>library(RMariaDB)</code> with <code>library(RMySQL)</code></li>
|
||||
<li>Go to <code>src/data/download_phone_data.R</code> or <code>src/data/download_fitbit_data.R</code> and replace <code>library(RMariaDB)</code> with <code>library(RMySQL)</code></li>
|
||||
<li>In the same file replace <code>dbEngine <- dbConnect(MariaDB(), default.file = "./.env", group = group)</code> with <code>dbEngine <- dbConnect(MySQL(), default.file = "./.env", group = group)</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
</details>
|
||||
<h2 id="there-is-no-package-called-rmariadb">There is no package called <code>RMariaDB</code><a class="headerlink" href="#there-is-no-package-called-rmariadb" title="Permanent link">¶</a></h2>
|
||||
<details class="failure" open="open"><summary>Problem</summary><p>You get the following error when executing RAPIDS:
|
||||
<div class="highlight"><pre><span></span><code>Error in library<span class="o">(</span>RMariaDB<span class="o">)</span> : there is no package called <span class="s1">'RMariaDB'</span>
|
||||
Execution halted
|
||||
</code></pre></div></p>
|
||||
</details>
|
||||
<details class="done" open="open"><summary>Solution</summary><p>In RAPIDS v0.1.0 we replaced <code>RMySQL</code> R package with <code>RMariaDB</code>, this error means your R virtual environment is out of date, to update it run <code>snakemake -j1 renv_restore</code></p>
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -1273,6 +1274,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><label for="__tabbed_2_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
"_id","timestamp","device_id","call_type","call_duration","trace"
|
||||
1,1587663260695,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,14,"d5e84f8af01b2728021d4f43f53a163c0c90000c"
|
||||
2,1587739118007,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",3,0,"47c125dc7bd163b8612cdea13724a814917b6e93"
|
||||
5,1587746544891,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,95,"9cc793ffd6e88b1d850ce540b5d7e000ef5650d4"
|
||||
6,1587911379859,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,63,"51fb9344e988049a3fec774c7ca622358bf80264"
|
||||
7,1587992647361,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",3,0,"2a862a7730cfdfaf103a9487afe3e02935fd6e02"
|
||||
8,1588020039448,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",1,11,"a2c53f6a086d98622c06107780980cf1bb4e37bd"
|
||||
11,1588176189024,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,65,"56589df8c830c70e330b644921ed38e08d8fd1f3"
|
||||
12,1588197745079,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",3,0,"cab458018a8ed3b626515e794c70b6f415318adc"
|
|
File diff suppressed because one or more lines are too long
|
@ -1310,10 +1310,14 @@
|
|||
</code></pre></div>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The label <code>MY_GROUP</code> is arbitrary but it has to match the following <code>config.yaml</code> key:</p>
|
||||
<p>The label <code>MY_GROUP</code> is arbitrary but it has to match the following <code>config.yaml</code> key:
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">DATABASE_GROUP</span><span class="p">:</span> <span class="nl">&database_group</span>
|
||||
<span class="l l-Scalar l-Scalar-Plain">MY_GROUP</span>
|
||||
</code></pre></div>
|
||||
</code></pre></div></p>
|
||||
</div>
|
||||
<div class="admonition hint">
|
||||
<p class="admonition-title">Hint<p>If you are using RAPIDS’ docker container and Docker-for-mac or Docker-for-Windows 18.03+, connect to your MySQL database using the host <code>host.docker.internal</code> instead of <code>127.0.0.1</code></p>
|
||||
</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
|
|
|
@ -1069,13 +1069,13 @@
|
|||
</li>
|
||||
<li>
|
||||
<p>Pull our RAPIDS container
|
||||
<div class="highlight"><pre><span></span><code>docker pull agamk/rapids:latest<span class="sb">`</span>
|
||||
<div class="highlight"><pre><span></span><code>docker pull moshiresearch/rapids:latest<span class="sb">`</span>
|
||||
</code></pre></div></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run RAPIDS' container (after this step is done you should see a
|
||||
prompt in the main RAPIDS folder with its python environment active)</p>
|
||||
<div class="highlight"><pre><span></span><code>docker run -it agamk/rapids:latest
|
||||
<div class="highlight"><pre><span></span><code>docker run -it moshiresearch/rapids:latest
|
||||
</code></pre></div>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -1100,7 +1100,7 @@
|
|||
<li>Install the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers">Remote - Containers extension</a></li>
|
||||
<li>Go to the <code>Remote Explorer</code> panel on the left hand sidebar</li>
|
||||
<li>On the top right dropdown menu choose <code>Containers</code></li>
|
||||
<li>Double click on the <code>agamk/rapids</code> container in the<code>CONTAINERS</code> tree</li>
|
||||
<li>Double click on the <code>moshiresearch/rapids</code> container in the<code>CONTAINERS</code> tree</li>
|
||||
<li>A new VS Code session should open on RAPIDS main folder inside the container.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
@ -1,171 +1,171 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
</urlset>
|
Binary file not shown.
|
@ -1195,7 +1195,7 @@
|
|||
<ol>
|
||||
<li><a href="../../setup/installation">Install</a> RAPIDS</li>
|
||||
<li>Configure the <a href="../../setup/configuration/#database-credentials">user credentials</a> of a local or remote MySQL server with writing permissions in your <code>.env</code> file. The config file where you need to modify the <code>DATABASE_GROUP</code> is at <code>example_profile/example_config.yaml</code>.</li>
|
||||
<li>Unzip the <a href="https://osf.io/skqfv/files/">test database</a> to <code>data/external/rapids_example.sql</code> and run:
|
||||
<li><em>Skip this step if you are using RAPIDS docker container</em>. Unzip the <a href="https://osf.io/skqfv/files/">test database</a> to <code>data/external/rapids_example.sql</code> and run:
|
||||
<div class="highlight"><pre><span></span><code>./rapids -j1 restore_sql_file --profile example_profile
|
||||
</code></pre></div></li>
|
||||
<li>Create the participant files for this example by running:
|
||||
|
|
|
@ -1061,69 +1061,94 @@
|
|||
|
||||
|
||||
<h1 id="minimal-working-example">Minimal Working Example<a class="headerlink" href="#minimal-working-example" title="Permanent link">¶</a></h1>
|
||||
<p>This is a quick guide for creating and running a simple pipeline to extract missing, outgoing, and incoming call features for <code>daily</code> and <code>night</code> epochs of one participant monitored on the US East coast.</p>
|
||||
<p>This is a quick guide for creating and running a simple pipeline to extract missing, outgoing, and incoming <code>call</code> features for <code>daily</code> (<code>00:00:00</code> to <code>23:59:59</code>) and <code>night</code> (<code>00:00:00</code> to <code>05:59:59</code>) epochs of every day of data of one participant monitored on the US East coast with an Android smartphone.</p>
|
||||
<div class="admonition hint">
|
||||
<p class="admonition-title">Hint</p>
|
||||
<p>If you don’t have <code>call</code> data that you can use to try this example you can restore this <a href="../../img/calls.csv">CSV file</a> as a table in a MySQL database.</p>
|
||||
</div>
|
||||
<ol>
|
||||
<li>Install RAPIDS and make sure your <code>conda</code> environment is active (see <a href="../../setup/installation">Installation</a>)</li>
|
||||
<li>
|
||||
<p>Make the changes listed below for the corresponding <a href="../../setup/configuration">Configuration</a> step (we provide an example of what the relevant sections in your <code>config.yml</code> will look like after you are done)</p>
|
||||
<details class="info"><summary>Things to change on each configuration step</summary><p>1. Setup your database connection credentials in <code>.env</code>. We assume your credentials group is called <code>MY_GROUP</code>.</p>
|
||||
<p>2. <code>America/New_York</code> should be the default timezone</p>
|
||||
<p>3. Create a participant file <code>p01.yaml</code> based on one of your participants and add <code>p01</code> to <code>[PIDS]</code> in <code>config.yaml</code>. The following would be the content of your <code>p01.yaml</code> participant file:
|
||||
<details class="info"><summary>Required configuration changes</summary><ol>
|
||||
<li>
|
||||
<p><strong>Add your <a href="../../setup/configuration#database-credentials">database credentials</a>.</strong> </p>
|
||||
<p>Setup your database connection credentials in <code>.env</code>, we assume your credentials group in the <code>.env</code> file is called <code>MY_GROUP</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Choose the <a href="../../setup/configuration#timezone-of-your-study">timezone of your study</a>.</strong> </p>
|
||||
<p>Since this example is processing data collected on the US East cost, <code>America/New_York</code> should be the configured timezone, change this according to your data.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Create your <a href="../../setup/configuration#participant-files">participants files</a>.</strong></p>
|
||||
<p>Since we are processing data from a single participant, you only need to create a single participant file called <code>p01.yaml</code>. This participant file only has a <code>PHONE</code> section because this hypothetical participant was only monitored with an smartphone. You also need to add <code>p01</code> to <code>[PIDS]</code> in <code>config.yaml</code>. The following would be the content of your <code>p01.yaml</code> participant file:
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">PHONE</span><span class="p">:</span>
|
||||
<span class="nt">DEVICE_IDS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">aaaaaaaa-1111-bbbb-2222-cccccccccccc</span><span class="p p-Indicator">]</span> <span class="c1"># your participant's AWARE device id</span>
|
||||
<span class="nt">DEVICE_IDS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">a748ee1a-1d0b-4ae9-9074-279a2b6ba524</span><span class="p p-Indicator">]</span> <span class="c1"># the participant's AWARE device id</span>
|
||||
<span class="nt">PLATFORMS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">android</span><span class="p p-Indicator">]</span> <span class="c1"># or ios</span>
|
||||
<span class="nt">LABEL</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">MyTestP01</span> <span class="c1"># any string</span>
|
||||
<span class="nt">START_DATE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">2020-01-01</span> <span class="c1"># this can also be empty</span>
|
||||
<span class="nt">END_DATE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">2021-01-01</span> <span class="c1"># this can also be empty</span>
|
||||
</code></pre></div></p>
|
||||
<p>4. <code>[TIME_SEGMENTS][TYPE]</code> should be the default <code>PERIODIC</code>. Change <code>[TIME_SEGMENTS][FILE]</code> with the path of a file containing the following lines:
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Select what <a href="../../setup/configuration#time-segments">time segments</a> you want to extract features on.</strong> </p>
|
||||
<p><code>[TIME_SEGMENTS][TYPE]</code> should be the default <code>PERIODIC</code>. Change <code>[TIME_SEGMENTS][FILE]</code> with the path (for example <code>data/external/timesegments_periodic.csv</code>) of a file containing the following lines:
|
||||
<div class="highlight"><pre><span></span><code>label,start_time,length,repeats_on,repeats_value
|
||||
daily,00:00:00,23H 59M 59S,every_day,0
|
||||
night,00:00:00,5H 59M 59S,every_day,0
|
||||
</code></pre></div></p>
|
||||
<p>5. If you collected data with AWARE you won’t need to modify the attributes of <code>[DEVICE_DATA][PHONE]</code></p>
|
||||
<p>6. Set <code>[PHONE_CALLS][PROVIDERS][RAPIDS][COMPUTE]</code> to <code>True</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Modify your <a href="../../setup/configuration#device-data-source-configuration">device data source configuration</a></strong></p>
|
||||
<p>In this example we do not need to modify this section because we are using smartphone data collected with AWARE stored on a MySQL database.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Select what <a href="../../setup/configuration#sensor-and-features-to-process">sensors and features</a> you want to process.</strong> </p>
|
||||
<p>Set <code>[PHONE_CALLS][PROVIDERS][RAPIDS][COMPUTE]</code> to <code>True</code> in the <code>config.yaml</code> file.</p>
|
||||
</li>
|
||||
</ol>
|
||||
</details>
|
||||
<details class="example"><summary>Example of the <code>config.yaml</code> sections after the changes outlined above</summary><div class="highlight"><pre><span></span><code>PIDS: [p01]
|
||||
<details class="example"><summary>Example of the <code>config.yaml</code> sections after the changes outlined above</summary><p>Highlighted lines are related to the configuration steps above.
|
||||
<div class="highlight"><pre><span></span><code><span class="hll"><span class="nt">PIDS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">p01</span><span class="p p-Indicator">]</span>
|
||||
</span>
|
||||
<span class="nt">TIMEZONE</span><span class="p">:</span> <span class="nl">&timezone</span>
|
||||
<span class="hll"><span class="l l-Scalar l-Scalar-Plain">America/New_York</span>
|
||||
</span>
|
||||
<span class="nt">DATABASE_GROUP</span><span class="p">:</span> <span class="nl">&database_group</span>
|
||||
<span class="hll"><span class="l l-Scalar l-Scalar-Plain">MY_GROUP</span>
|
||||
</span>
|
||||
<span class="c1"># ... other irrelevant sections</span>
|
||||
|
||||
TIMEZONE: &timezone
|
||||
America/New_York
|
||||
<span class="nt">TIME_SEGMENTS</span><span class="p">:</span> <span class="nl">&time_segments</span>
|
||||
<span class="hll"> <span class="nt">TYPE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">PERIODIC</span>
|
||||
</span><span class="hll"> <span class="nt">FILE</span><span class="p">:</span> <span class="s">"data/external/timesegments_periodic.csv"</span> <span class="c1"># make sure the three lines specified above are in the file</span>
|
||||
</span> <span class="nt">INCLUDE_PAST_PERIODIC_SEGMENTS</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">FALSE</span>
|
||||
|
||||
DATABASE_GROUP: &database_group
|
||||
MY_GROUP
|
||||
|
||||
# ... other irrelevant sections
|
||||
|
||||
TIME_SEGMENTS: &time_segments
|
||||
TYPE: PERIODIC
|
||||
FILE: "data/external/timesegments_periodic.csv" # make sure the three lines specified above are in the file
|
||||
INCLUDE_PAST_PERIODIC_SEGMENTS: FALSE
|
||||
|
||||
# No need to change this if you collected AWARE data on a database and your credentials are grouped under `MY_GROUP` in `.env`
|
||||
DEVICE_DATA:
|
||||
PHONE:
|
||||
SOURCE:
|
||||
TYPE: DATABASE
|
||||
DATABASE_GROUP: *database_group
|
||||
DEVICE_ID_COLUMN: device_id # column name
|
||||
TIMEZONE:
|
||||
TYPE: SINGLE # SINGLE or MULTIPLE
|
||||
VALUE: *timezone
|
||||
<span class="c1"># No need to change this if you collected AWARE data on a database and your credentials are grouped under `MY_GROUP` in `.env`</span>
|
||||
<span class="nt">DEVICE_DATA</span><span class="p">:</span>
|
||||
<span class="nt">PHONE</span><span class="p">:</span>
|
||||
<span class="nt">SOURCE</span><span class="p">:</span>
|
||||
<span class="nt">TYPE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">DATABASE</span>
|
||||
<span class="nt">DATABASE_GROUP</span><span class="p">:</span> <span class="nv">*database_group</span>
|
||||
<span class="nt">DEVICE_ID_COLUMN</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">device_id</span> <span class="c1"># column name</span>
|
||||
<span class="nt">TIMEZONE</span><span class="p">:</span>
|
||||
<span class="nt">TYPE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">SINGLE</span> <span class="c1"># SINGLE or MULTIPLE</span>
|
||||
<span class="nt">VALUE</span><span class="p">:</span> <span class="nv">*timezone</span>
|
||||
|
||||
|
||||
############## PHONE ###########################################################
|
||||
################################################################################
|
||||
<span class="c1">############## PHONE ###########################################################</span>
|
||||
<span class="c1">################################################################################</span>
|
||||
|
||||
# ... other irrelevant sections
|
||||
<span class="c1"># ... other irrelevant sections</span>
|
||||
|
||||
# Communication call features config, TYPES and FEATURES keys need to match
|
||||
PHONE_CALLS:
|
||||
TABLE: calls # change if your calls table has a different name
|
||||
PROVIDERS:
|
||||
RAPIDS:
|
||||
COMPUTE: True # set this to True!
|
||||
CALL_TYPES: ...
|
||||
</code></pre></div>
|
||||
<span class="c1"># Communication call features config, TYPES and FEATURES keys need to match</span>
|
||||
<span class="nt">PHONE_CALLS</span><span class="p">:</span>
|
||||
<span class="nt">TABLE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">calls</span> <span class="c1"># change if your calls table has a different name</span>
|
||||
<span class="nt">PROVIDERS</span><span class="p">:</span>
|
||||
<span class="nt">RAPIDS</span><span class="p">:</span>
|
||||
<span class="hll"> <span class="nt">COMPUTE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">True</span> <span class="c1"># set this to True!</span>
|
||||
</span> <span class="nt">CALL_TYPES</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">...</span>
|
||||
</code></pre></div></p>
|
||||
</details>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
@ -1025,8 +1025,15 @@
|
|||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#030" class="md-nav__link">
|
||||
0.3.0
|
||||
<a href="#v031" class="md-nav__link">
|
||||
v0.3.1
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#v030" class="md-nav__link">
|
||||
v0.3.0
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
@ -1137,8 +1144,15 @@
|
|||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#030" class="md-nav__link">
|
||||
0.3.0
|
||||
<a href="#v031" class="md-nav__link">
|
||||
v0.3.1
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#v030" class="md-nav__link">
|
||||
v0.3.0
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
@ -1217,7 +1231,15 @@
|
|||
|
||||
|
||||
<h1 id="change-log">Change Log<a class="headerlink" href="#change-log" title="Permanent link">¶</a></h1>
|
||||
<h2 id="030">0.3.0<a class="headerlink" href="#030" title="Permanent link">¶</a></h2>
|
||||
<h2 id="v031">v0.3.1<a class="headerlink" href="#v031" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Update installation docs for RAPIDS’ docker container</li>
|
||||
<li>Fix example analysis use of accelerometer data in a plot</li>
|
||||
<li>Update FAQ</li>
|
||||
<li>Update minimal example documentation</li>
|
||||
<li>Minor doc updates</li>
|
||||
</ul>
|
||||
<h2 id="v030">v0.3.0<a class="headerlink" href="#v030" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Update R and Python virtual environments</li>
|
||||
<li>Add GH actions CI support for tests and docker</li>
|
||||
|
|
|
@ -1087,6 +1087,13 @@
|
|||
Embedded nul in string
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#there-is-no-package-called-rmariadb" class="md-nav__link">
|
||||
There is no package called RMariaDB
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
@ -1253,6 +1260,13 @@
|
|||
Embedded nul in string
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#there-is-no-package-called-rmariadb" class="md-nav__link">
|
||||
There is no package called RMariaDB
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
@ -1449,16 +1463,24 @@ ClobberError: This transaction has incompatible packages due to a shared path.
|
|||
<details class="done" open="open"><summary>Solution</summary><p>This problem is due to the way <code>RMariaDB</code> handles a mismatch between data types in R and MySQL (see <a href="https://github.com/r-dbi/RMariaDB/issues/121">this issue</a>). Since it seems this problem won’t be handled by <code>RMariaDB</code>, you have two options:</p>
|
||||
<ol>
|
||||
<li>If it’s only a few rows that are causing this problem, remove the the null character from the conflictive table cell.</li>
|
||||
<li>If it’s not feasible to modify your data you can try swapping <code>RMariaDB</code> with <code>RMySQL</code>. Just have in mind you might have problems connecting to modern MySQL servers running in Liunx:<ul>
|
||||
<li>If it’s not feasible to modify your data you can try swapping <code>RMariaDB</code> with <code>RMySQL</code>. Just have in mind you might have problems connecting to modern MySQL servers running in Linux:<ul>
|
||||
<li>Add <code>RMySQL</code> to the renv environment by running the following command in a terminal open on RAPIDS root folder
|
||||
<div class="highlight"><pre><span></span><code>R -e <span class="s1">'renv::install("RMySQL")'</span>
|
||||
</code></pre></div></li>
|
||||
<li>Go to <code>src/data/download_phone_data.R</code> and replace <code>library(RMariaDB)</code> with <code>library(RMySQL)</code></li>
|
||||
<li>Go to <code>src/data/download_phone_data.R</code> or <code>src/data/download_fitbit_data.R</code> and replace <code>library(RMariaDB)</code> with <code>library(RMySQL)</code></li>
|
||||
<li>In the same file replace <code>dbEngine <- dbConnect(MariaDB(), default.file = "./.env", group = group)</code> with <code>dbEngine <- dbConnect(MySQL(), default.file = "./.env", group = group)</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
</details>
|
||||
<h2 id="there-is-no-package-called-rmariadb">There is no package called <code>RMariaDB</code><a class="headerlink" href="#there-is-no-package-called-rmariadb" title="Permanent link">¶</a></h2>
|
||||
<details class="failure" open="open"><summary>Problem</summary><p>You get the following error when executing RAPIDS:
|
||||
<div class="highlight"><pre><span></span><code>Error in library<span class="o">(</span>RMariaDB<span class="o">)</span> : there is no package called <span class="s1">'RMariaDB'</span>
|
||||
Execution halted
|
||||
</code></pre></div></p>
|
||||
</details>
|
||||
<details class="done" open="open"><summary>Solution</summary><p>In RAPIDS v0.1.0 we replaced <code>RMySQL</code> R package with <code>RMariaDB</code>, this error means your R virtual environment is out of date, to update it run <code>snakemake -j1 renv_restore</code></p>
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -1273,6 +1274,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><label for="__tabbed_2_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory, however, all except <code>device_id</code> and <code>local_date_time</code> can be empty if you don’t have that data. Just have in mind that some features will be empty if some of these columns are empty.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -1149,6 +1149,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">PLAIN_TEXT</label><div class="tabbed-content">
|
||||
<p>All columns are mandatory.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
"_id","timestamp","device_id","call_type","call_duration","trace"
|
||||
1,1587663260695,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,14,"d5e84f8af01b2728021d4f43f53a163c0c90000c"
|
||||
2,1587739118007,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",3,0,"47c125dc7bd163b8612cdea13724a814917b6e93"
|
||||
5,1587746544891,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,95,"9cc793ffd6e88b1d850ce540b5d7e000ef5650d4"
|
||||
6,1587911379859,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,63,"51fb9344e988049a3fec774c7ca622358bf80264"
|
||||
7,1587992647361,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",3,0,"2a862a7730cfdfaf103a9487afe3e02935fd6e02"
|
||||
8,1588020039448,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",1,11,"a2c53f6a086d98622c06107780980cf1bb4e37bd"
|
||||
11,1588176189024,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",2,65,"56589df8c830c70e330b644921ed38e08d8fd1f3"
|
||||
12,1588197745079,"a748ee1a-1d0b-4ae9-9074-279a2b6ba524",3,0,"cab458018a8ed3b626515e794c70b6f415318adc"
|
|
File diff suppressed because one or more lines are too long
|
@ -1310,10 +1310,14 @@
|
|||
</code></pre></div>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The label <code>MY_GROUP</code> is arbitrary but it has to match the following <code>config.yaml</code> key:</p>
|
||||
<p>The label <code>MY_GROUP</code> is arbitrary but it has to match the following <code>config.yaml</code> key:
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">DATABASE_GROUP</span><span class="p">:</span> <span class="nl">&database_group</span>
|
||||
<span class="l l-Scalar l-Scalar-Plain">MY_GROUP</span>
|
||||
</code></pre></div>
|
||||
</code></pre></div></p>
|
||||
</div>
|
||||
<div class="admonition hint">
|
||||
<p class="admonition-title">Hint<p>If you are using RAPIDS’ docker container and Docker-for-mac or Docker-for-Windows 18.03+, connect to your MySQL database using the host <code>host.docker.internal</code> instead of <code>127.0.0.1</code></p>
|
||||
</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
|
|
|
@ -1069,13 +1069,13 @@
|
|||
</li>
|
||||
<li>
|
||||
<p>Pull our RAPIDS container
|
||||
<div class="highlight"><pre><span></span><code>docker pull agamk/rapids:latest<span class="sb">`</span>
|
||||
<div class="highlight"><pre><span></span><code>docker pull moshiresearch/rapids:latest<span class="sb">`</span>
|
||||
</code></pre></div></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run RAPIDS' container (after this step is done you should see a
|
||||
prompt in the main RAPIDS folder with its python environment active)</p>
|
||||
<div class="highlight"><pre><span></span><code>docker run -it agamk/rapids:latest
|
||||
<div class="highlight"><pre><span></span><code>docker run -it moshiresearch/rapids:latest
|
||||
</code></pre></div>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -1100,7 +1100,7 @@
|
|||
<li>Install the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers">Remote - Containers extension</a></li>
|
||||
<li>Go to the <code>Remote Explorer</code> panel on the left hand sidebar</li>
|
||||
<li>On the top right dropdown menu choose <code>Containers</code></li>
|
||||
<li>Double click on the <code>agamk/rapids</code> container in the<code>CONTAINERS</code> tree</li>
|
||||
<li>Double click on the <code>moshiresearch/rapids</code> container in the<code>CONTAINERS</code> tree</li>
|
||||
<li>A new VS Code session should open on RAPIDS main folder inside the container.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
@ -1,171 +1,171 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url><url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2020-12-20</lastmod>
|
||||
<lastmod>2020-12-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
</urlset>
|
Binary file not shown.
|
@ -1195,7 +1195,7 @@
|
|||
<ol>
|
||||
<li><a href="../../setup/installation">Install</a> RAPIDS</li>
|
||||
<li>Configure the <a href="../../setup/configuration/#database-credentials">user credentials</a> of a local or remote MySQL server with writing permissions in your <code>.env</code> file. The config file where you need to modify the <code>DATABASE_GROUP</code> is at <code>example_profile/example_config.yaml</code>.</li>
|
||||
<li>Unzip the <a href="https://osf.io/skqfv/files/">test database</a> to <code>data/external/rapids_example.sql</code> and run:
|
||||
<li><em>Skip this step if you are using RAPIDS docker container</em>. Unzip the <a href="https://osf.io/skqfv/files/">test database</a> to <code>data/external/rapids_example.sql</code> and run:
|
||||
<div class="highlight"><pre><span></span><code>./rapids -j1 restore_sql_file --profile example_profile
|
||||
</code></pre></div></li>
|
||||
<li>Create the participant files for this example by running:
|
||||
|
|
|
@ -1061,69 +1061,94 @@
|
|||
|
||||
|
||||
<h1 id="minimal-working-example">Minimal Working Example<a class="headerlink" href="#minimal-working-example" title="Permanent link">¶</a></h1>
|
||||
<p>This is a quick guide for creating and running a simple pipeline to extract missing, outgoing, and incoming call features for <code>daily</code> and <code>night</code> epochs of one participant monitored on the US East coast.</p>
|
||||
<p>This is a quick guide for creating and running a simple pipeline to extract missing, outgoing, and incoming <code>call</code> features for <code>daily</code> (<code>00:00:00</code> to <code>23:59:59</code>) and <code>night</code> (<code>00:00:00</code> to <code>05:59:59</code>) epochs of every day of data of one participant monitored on the US East coast with an Android smartphone.</p>
|
||||
<div class="admonition hint">
|
||||
<p class="admonition-title">Hint</p>
|
||||
<p>If you don’t have <code>call</code> data that you can use to try this example you can restore this <a href="../../img/calls.csv">CSV file</a> as a table in a MySQL database.</p>
|
||||
</div>
|
||||
<ol>
|
||||
<li>Install RAPIDS and make sure your <code>conda</code> environment is active (see <a href="../../setup/installation">Installation</a>)</li>
|
||||
<li>
|
||||
<p>Make the changes listed below for the corresponding <a href="../../setup/configuration">Configuration</a> step (we provide an example of what the relevant sections in your <code>config.yml</code> will look like after you are done)</p>
|
||||
<details class="info"><summary>Things to change on each configuration step</summary><p>1. Setup your database connection credentials in <code>.env</code>. We assume your credentials group is called <code>MY_GROUP</code>.</p>
|
||||
<p>2. <code>America/New_York</code> should be the default timezone</p>
|
||||
<p>3. Create a participant file <code>p01.yaml</code> based on one of your participants and add <code>p01</code> to <code>[PIDS]</code> in <code>config.yaml</code>. The following would be the content of your <code>p01.yaml</code> participant file:
|
||||
<details class="info"><summary>Required configuration changes</summary><ol>
|
||||
<li>
|
||||
<p><strong>Add your <a href="../../setup/configuration#database-credentials">database credentials</a>.</strong> </p>
|
||||
<p>Setup your database connection credentials in <code>.env</code>, we assume your credentials group in the <code>.env</code> file is called <code>MY_GROUP</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Choose the <a href="../../setup/configuration#timezone-of-your-study">timezone of your study</a>.</strong> </p>
|
||||
<p>Since this example is processing data collected on the US East cost, <code>America/New_York</code> should be the configured timezone, change this according to your data.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Create your <a href="../../setup/configuration#participant-files">participants files</a>.</strong></p>
|
||||
<p>Since we are processing data from a single participant, you only need to create a single participant file called <code>p01.yaml</code>. This participant file only has a <code>PHONE</code> section because this hypothetical participant was only monitored with an smartphone. You also need to add <code>p01</code> to <code>[PIDS]</code> in <code>config.yaml</code>. The following would be the content of your <code>p01.yaml</code> participant file:
|
||||
<div class="highlight"><pre><span></span><code><span class="nt">PHONE</span><span class="p">:</span>
|
||||
<span class="nt">DEVICE_IDS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">aaaaaaaa-1111-bbbb-2222-cccccccccccc</span><span class="p p-Indicator">]</span> <span class="c1"># your participant's AWARE device id</span>
|
||||
<span class="nt">DEVICE_IDS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">a748ee1a-1d0b-4ae9-9074-279a2b6ba524</span><span class="p p-Indicator">]</span> <span class="c1"># the participant's AWARE device id</span>
|
||||
<span class="nt">PLATFORMS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">android</span><span class="p p-Indicator">]</span> <span class="c1"># or ios</span>
|
||||
<span class="nt">LABEL</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">MyTestP01</span> <span class="c1"># any string</span>
|
||||
<span class="nt">START_DATE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">2020-01-01</span> <span class="c1"># this can also be empty</span>
|
||||
<span class="nt">END_DATE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">2021-01-01</span> <span class="c1"># this can also be empty</span>
|
||||
</code></pre></div></p>
|
||||
<p>4. <code>[TIME_SEGMENTS][TYPE]</code> should be the default <code>PERIODIC</code>. Change <code>[TIME_SEGMENTS][FILE]</code> with the path of a file containing the following lines:
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Select what <a href="../../setup/configuration#time-segments">time segments</a> you want to extract features on.</strong> </p>
|
||||
<p><code>[TIME_SEGMENTS][TYPE]</code> should be the default <code>PERIODIC</code>. Change <code>[TIME_SEGMENTS][FILE]</code> with the path (for example <code>data/external/timesegments_periodic.csv</code>) of a file containing the following lines:
|
||||
<div class="highlight"><pre><span></span><code>label,start_time,length,repeats_on,repeats_value
|
||||
daily,00:00:00,23H 59M 59S,every_day,0
|
||||
night,00:00:00,5H 59M 59S,every_day,0
|
||||
</code></pre></div></p>
|
||||
<p>5. If you collected data with AWARE you won’t need to modify the attributes of <code>[DEVICE_DATA][PHONE]</code></p>
|
||||
<p>6. Set <code>[PHONE_CALLS][PROVIDERS][RAPIDS][COMPUTE]</code> to <code>True</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Modify your <a href="../../setup/configuration#device-data-source-configuration">device data source configuration</a></strong></p>
|
||||
<p>In this example we do not need to modify this section because we are using smartphone data collected with AWARE stored on a MySQL database.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Select what <a href="../../setup/configuration#sensor-and-features-to-process">sensors and features</a> you want to process.</strong> </p>
|
||||
<p>Set <code>[PHONE_CALLS][PROVIDERS][RAPIDS][COMPUTE]</code> to <code>True</code> in the <code>config.yaml</code> file.</p>
|
||||
</li>
|
||||
</ol>
|
||||
</details>
|
||||
<details class="example"><summary>Example of the <code>config.yaml</code> sections after the changes outlined above</summary><div class="highlight"><pre><span></span><code>PIDS: [p01]
|
||||
<details class="example"><summary>Example of the <code>config.yaml</code> sections after the changes outlined above</summary><p>Highlighted lines are related to the configuration steps above.
|
||||
<div class="highlight"><pre><span></span><code><span class="hll"><span class="nt">PIDS</span><span class="p">:</span> <span class="p p-Indicator">[</span><span class="nv">p01</span><span class="p p-Indicator">]</span>
|
||||
</span>
|
||||
<span class="nt">TIMEZONE</span><span class="p">:</span> <span class="nl">&timezone</span>
|
||||
<span class="hll"><span class="l l-Scalar l-Scalar-Plain">America/New_York</span>
|
||||
</span>
|
||||
<span class="nt">DATABASE_GROUP</span><span class="p">:</span> <span class="nl">&database_group</span>
|
||||
<span class="hll"><span class="l l-Scalar l-Scalar-Plain">MY_GROUP</span>
|
||||
</span>
|
||||
<span class="c1"># ... other irrelevant sections</span>
|
||||
|
||||
TIMEZONE: &timezone
|
||||
America/New_York
|
||||
<span class="nt">TIME_SEGMENTS</span><span class="p">:</span> <span class="nl">&time_segments</span>
|
||||
<span class="hll"> <span class="nt">TYPE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">PERIODIC</span>
|
||||
</span><span class="hll"> <span class="nt">FILE</span><span class="p">:</span> <span class="s">"data/external/timesegments_periodic.csv"</span> <span class="c1"># make sure the three lines specified above are in the file</span>
|
||||
</span> <span class="nt">INCLUDE_PAST_PERIODIC_SEGMENTS</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">FALSE</span>
|
||||
|
||||
DATABASE_GROUP: &database_group
|
||||
MY_GROUP
|
||||
|
||||
# ... other irrelevant sections
|
||||
|
||||
TIME_SEGMENTS: &time_segments
|
||||
TYPE: PERIODIC
|
||||
FILE: "data/external/timesegments_periodic.csv" # make sure the three lines specified above are in the file
|
||||
INCLUDE_PAST_PERIODIC_SEGMENTS: FALSE
|
||||
|
||||
# No need to change this if you collected AWARE data on a database and your credentials are grouped under `MY_GROUP` in `.env`
|
||||
DEVICE_DATA:
|
||||
PHONE:
|
||||
SOURCE:
|
||||
TYPE: DATABASE
|
||||
DATABASE_GROUP: *database_group
|
||||
DEVICE_ID_COLUMN: device_id # column name
|
||||
TIMEZONE:
|
||||
TYPE: SINGLE # SINGLE or MULTIPLE
|
||||
VALUE: *timezone
|
||||
<span class="c1"># No need to change this if you collected AWARE data on a database and your credentials are grouped under `MY_GROUP` in `.env`</span>
|
||||
<span class="nt">DEVICE_DATA</span><span class="p">:</span>
|
||||
<span class="nt">PHONE</span><span class="p">:</span>
|
||||
<span class="nt">SOURCE</span><span class="p">:</span>
|
||||
<span class="nt">TYPE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">DATABASE</span>
|
||||
<span class="nt">DATABASE_GROUP</span><span class="p">:</span> <span class="nv">*database_group</span>
|
||||
<span class="nt">DEVICE_ID_COLUMN</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">device_id</span> <span class="c1"># column name</span>
|
||||
<span class="nt">TIMEZONE</span><span class="p">:</span>
|
||||
<span class="nt">TYPE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">SINGLE</span> <span class="c1"># SINGLE or MULTIPLE</span>
|
||||
<span class="nt">VALUE</span><span class="p">:</span> <span class="nv">*timezone</span>
|
||||
|
||||
|
||||
############## PHONE ###########################################################
|
||||
################################################################################
|
||||
<span class="c1">############## PHONE ###########################################################</span>
|
||||
<span class="c1">################################################################################</span>
|
||||
|
||||
# ... other irrelevant sections
|
||||
<span class="c1"># ... other irrelevant sections</span>
|
||||
|
||||
# Communication call features config, TYPES and FEATURES keys need to match
|
||||
PHONE_CALLS:
|
||||
TABLE: calls # change if your calls table has a different name
|
||||
PROVIDERS:
|
||||
RAPIDS:
|
||||
COMPUTE: True # set this to True!
|
||||
CALL_TYPES: ...
|
||||
</code></pre></div>
|
||||
<span class="c1"># Communication call features config, TYPES and FEATURES keys need to match</span>
|
||||
<span class="nt">PHONE_CALLS</span><span class="p">:</span>
|
||||
<span class="nt">TABLE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">calls</span> <span class="c1"># change if your calls table has a different name</span>
|
||||
<span class="nt">PROVIDERS</span><span class="p">:</span>
|
||||
<span class="nt">RAPIDS</span><span class="p">:</span>
|
||||
<span class="hll"> <span class="nt">COMPUTE</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">True</span> <span class="c1"># set this to True!</span>
|
||||
</span> <span class="nt">CALL_TYPES</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">...</span>
|
||||
</code></pre></div></p>
|
||||
</details>
|
||||
</li>
|
||||
<li>
|
||||
|
|
Loading…
Reference in New Issue