You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+83-82Lines changed: 83 additions & 82 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,60 +13,6 @@ A Python toolkit for analysis of graphomotor data collected via Curious.
13
13
14
14
Welcome to `graphomotor`, a specialized Python library for analyzing graphomotor data collected via [Curious](https://www.gettingcurious.com/). This toolkit provides comprehensive tools for processing, analyzing, and visualizing data from various graphomotor assessment tasks including spiral drawing, trails making, alphabetic writing, digit symbol substitution, and the Rey-Osterrieth Complex Figure Test.
15
15
16
-
## Development Progress
17
-
18
-
⚠️ **This package is under active development.** Currently, the focus is on the Spiral task. After finalizing feature extraction, the next steps will involve implementing both preprocessing and visualization for this task. Once these parts are in place, we plan to extend support to other tasks.
| Digit Symbol Substitution ||||
⚠️ **This implementation requires data to adhere to a specific format matching the standard output from [Curious drawing responses](https://mindlogger.atlassian.net/servicedesk/customer/portal/3/article/859242501).**
31
-
32
-
When exporting drawing data from Curious, you typically receive the following files:
33
-
34
-
-**report.csv**: Contains the participants' actual responses.
35
-
-**activity_user_journey.csv**: Logs the entire journey through the activity, including button actions like "Next", "Skip", "Back", and "Undo", regardless of whether a response was provided.
36
-
-**drawing-responses-{date}.zip**: A ZIP archive with raw drawing response CSV files for each participant (e.g., `drawing-responses-Mon May 29 2023.zip`).
37
-
-**media-responses-{date}.zip**: A ZIP archive containing SVG files for the drawing responses (e.g., `media-responses-Mon May 29 2023.zip`).
38
-
-**trails-responses-{date}.zip**: A ZIP archive with raw trail making response CSV files (if there are any) for each participant (e.g., `trails-responses-Mon May 29 2023.zip`).
39
-
40
-
For Spiral tasks, the toolkit uses only the CSV files from the drawing responses ZIP. Support for additional tasks will be added in future releases.
41
-
42
-
### File Naming Convention
43
-
44
-
Your spiral data files must follow this naming convention:
-**Participant ID**: Must be enclosed in brackets `[]` and be a 7-digit number starting with `5` (e.g., `[5123456]`) that matches the `target_secret_id` column in the **report.csv** file.
53
-
-**Activity Submission ID**: Must be a 32-character hexadecimal string (e.g., `18f2-45ea-a1e4-2334e07cc706`) that matches the `id` column in the **report.csv** file.
54
-
-**Task**: Must be one of the following that matches the `item` column in the **report.csv** file:
55
-
-`spiral_trace1_Dom` through `spiral_trace5_Dom` (dominant hand tracing tasks)
56
-
-`spiral_trace1_NonDom` through `spiral_trace5_NonDom` (non-dominant hand tracing tasks)
57
-
-`spiral_recall1_Dom` through `spiral_recall3_Dom` (dominant hand recall tasks)
58
-
-`spiral_recall1_NonDom` through `spiral_recall3_NonDom` (non-dominant hand recall tasks)
59
-
60
-
### Data Format
61
-
62
-
Your spiral data CSV file must contain the following columns:
63
-
64
-
```text
65
-
line_number, x, y, UTC_Timestamp, seconds, epoch_time_in_seconds_start
66
-
```
67
-
68
-
This format represents the standard output from [Curious drawing responses data dictionary](https://mindlogger.atlassian.net/servicedesk/customer/portal/3/article/596082739).
69
-
70
16
## Feature Extraction Capabilities
71
17
72
18
The toolkit extracts clinically relevant metrics from digitized drawing data. Currently implemented features include:
> **⚠️ This implementation requires data to adhere to a specific format matching the standard output from [Curious drawing responses](https://mindlogger.atlassian.net/servicedesk/customer/portal/3/article/859242501).**
42
+
95
43
Currently, `graphomotor` is available as an importable Python library. CLI functionality is planned for future releases.
For detailed configuration options and additional parameters, refer to the [`run_pipeline` documentation](https://childmindresearch.github.io/graphomotor/graphomotor/core/orchestrator.html#run_pipeline).
173
140
174
-
# Access metadata and features for a specific file
⚠️ **This package is under active development.** Currently, the focus is on the Spiral task. After finalizing feature extraction, the next steps will involve implementing both preprocessing and visualization for this task. Once these parts are in place, we plan to extend support to other tasks.
| Digit Symbol Substitution ||||
When exporting drawing data from Curious, you typically receive the following files:
156
+
157
+
-**report.csv**: Contains the participants' actual responses.
158
+
-**activity_user_journey.csv**: Logs the entire journey through the activity, including button actions like "Next", "Skip", "Back", and "Undo", regardless of whether a response was provided.
159
+
-**drawing-responses-{date}.zip**: A ZIP archive with raw drawing response CSV files for each participant (e.g., `drawing-responses-Mon May 29 2023.zip`).
160
+
-**media-responses-{date}.zip**: A ZIP archive containing SVG files for the drawing responses (e.g., `media-responses-Mon May 29 2023.zip`).
161
+
-**trails-responses-{date}.zip**: A ZIP archive with raw trail making response CSV files (if there are any) for each participant (e.g., `trails-responses-Mon May 29 2023.zip`).
162
+
163
+
For Spiral tasks, the toolkit uses only the CSV files from the drawing responses ZIP. Support for additional tasks will be added in future releases.
164
+
165
+
### File Naming Convention
181
166
182
-
# Or work with the DataFrame directly
183
-
print(f"Mean duration across all files: {features_df['duration'].astype(float).mean()}")
184
-
print(f"Spiral with highest linear velocity: {features_df['linear_velocity_median'].astype(float).idxmax()}")
167
+
Your spiral data files must follow this naming convention:
185
168
186
-
# Easy filtering and grouping by metadata
187
-
print(f"Files with dominant hand: {len(features_df[features_df['hand'] =='Dom'])}")
For detailed configuration options and additional parameters, refer to the [`run_pipeline` documentation](https://childmindresearch.github.io/graphomotor/graphomotor/core/orchestrator.html#run_pipeline).
173
+
Where:
174
+
175
+
-**Participant ID**: Must be enclosed in brackets `[]` and be a 7-digit number starting with `5` (e.g., `[5123456]`) that matches the `target_secret_id` column in the **report.csv** file.
176
+
-**Activity Submission ID**: Must be a 32-character hexadecimal string (e.g., `18f2-45ea-a1e4-2334e07cc706`) that matches the `id` column in the **report.csv** file.
177
+
-**Task**: Must be one of the following that matches the `item` column in the **report.csv** file:
178
+
-`spiral_trace1_Dom` through `spiral_trace5_Dom` (dominant hand tracing tasks)
179
+
-`spiral_trace1_NonDom` through `spiral_trace5_NonDom` (non-dominant hand tracing tasks)
180
+
-`spiral_recall1_Dom` through `spiral_recall3_Dom` (dominant hand recall tasks)
181
+
-`spiral_recall1_NonDom` through `spiral_recall3_NonDom` (non-dominant hand recall tasks)
182
+
183
+
### Data Format
184
+
185
+
Your spiral data CSV file must contain the following columns:
186
+
187
+
```text
188
+
line_number, x, y, UTC_Timestamp, seconds, epoch_time_in_seconds_start
189
+
```
190
+
191
+
This format represents the standard output from [Curious drawing responses data dictionary](https://mindlogger.atlassian.net/servicedesk/customer/portal/3/article/596082739).
0 commit comments