Single-site non-invasive peripheral nerve stimulation with multidimensional encoding enables object differentiation using a myoelectric prosthetic hand
Data files
May 01, 2026 version files 177.24 KB
-
4_seqlist1_objects_prosthetichandObject_Summary.csv
3.46 KB
-
4_seqlist2_objects_prosthetichandObject_Summary.csv
3.63 KB
-
6_seqlist1_objects_prosthetichandObject_Summary.csv
6.97 KB
-
6_seqlistObject_Able_Summary.csv
25.56 KB
-
6_seqlistObject_Amputee_Summary.csv
10.69 KB
-
6_seqlistObject_Summary.csv
10.70 KB
-
Aim_3_Aparticipants_clean.csv
186 B
-
Aim_3_NAparticipants_clean.csv
205 B
-
ALLObject_Summary.csv
10.70 KB
-
Analysis_helper.py
59 KB
-
ANOVA_Discreet_Summary.csv
1.34 KB
-
Discreet_analysis.py
16.68 KB
-
object_compliance_analysis.py
4.71 KB
-
Object_Hardnessperformance.csv
1.58 KB
-
Object_Sizeperformance.csv
914 B
-
Objects_hardness_perfromance.csv
2.07 KB
-
Objects_perfromance.csv
4.31 KB
-
Objects_size_perfromance.csv
1.43 KB
-
Objectsperformance_amputee.csv
1.24 KB
-
README.md
11.87 KB
Abstract
Background: This study aimed to evaluate whether a multidimensional encoding approach, delivered through a single site of peripheral nerve stimulation (PNS), could support object discrimination using a sensorized myoelectric prosthetic hand.
Methods: Ten participants without an amputation received stimulation to the median nerve at the wrist, while four participants with transradial amputations received stimulation to the ulnar nerve near the elbow. Electrical stimulation was provided via transcutaneous electrical neural stimulation (TENS) to either the wrist (#_msocom_2) or the residual limb respectively. Force and aperture sensors embedded in a multi-dexterous myoelectric prosthesis were used by the participants to drive a multidimensional encoding approach. The multidimensional encoding approach provided percepts of flutter frequency and intensity in a single percept area. All participants were blindfolded and wore noise-canceling headphones during the task, which involved discriminating between six objects varying in size (two levels) and compliance (three levels).
Results: All participants performed significantly above chance in identifying the objects. Notably, all four participants with amputations successfully used multidimensional percepts felt in their phantom limbs to differentiate between the six objects. Their performance was comparable to – or in some cases exceeded – that of the participants without amputations.
Conclusion: A multidimensional encoding approach using TENS-based peripheral nerve stimulation can effectively convey meaningful sensory information—such as object size and compliance—to individuals using a sensorized myoelectric prosthesis. This approach enables perception of complex sensations in the phantom limb and may reduce the number of stimulation sites needed, offering a promising direction for improving haptic feedback and reducing abandonment of prostheses.
Dataset DOI: 10.5061/dryad.b5mkkwht4
Description of the data and file structure
Methods: Ten participants without a amputation received stimulation to the median nerve at the wrist, while four participants with transradial amputations received stimulation to the ulnar nerve near the elbow. Electrical stimulation was provided via transcutaneous electrical neural stimulation (TENS) to either the wrist or the residual limb respectively. Force and aperture sensors embedded in a multi-dexterous myoelectric prosthesis were used by the participants to drive a multidimensional encoding approach. The multidimensional encoding approach provided percepts of flutter frequency and intensity in a single percept area. All participants were blindfolded and wore noise-canceling headphones during the task, which involved discriminating between six objects varying in size (two levels) and compliance (three levels
Files and variables
File: 4_seqlist1_objects_prosthetichandObject_Summary.csv
Description: Contains trial-level data for prosthetic hand object recognition in sequence list 1.
Variables:
- Object Presented: The object shown to participant
- Response: Participant’s identification/response
- Number of objects: Count of objects presented
- Labeled: Whether the object was labeled correctly
- sub_id: Subject identifier
- Object: Object name/ID
- Object_Size: True size of object
- Object_Hardness: True hardness of object
- Response_Size: Reported size by participant
- Response_Hardness: Reported hardness by participant
- Hardness_Correct: Accuracy of hardness judgment
- Size_Correct: Accuracy of size judgment
- Object_Correct: Overall correctness of object identification
File: 4_seqlist2_objects_prosthetichandObject_Summary.csv
Description: Similar to above but for sequence list 2 trials.
Variables: Same as sequence list 1 (object presented, response, size/hardness judgments, correctness indicators).
File: 6_seqlist1_objects_prosthetichandObject_Summary.csv
Description: Sequence list 1 with prosthetic hand, includes trigger-related metadata.
Variables:
- Object Presented — Object shown/handled on that trial.
- Response — Participant’s reported object identity.
- Triggered — Trigger event occurred on trial.
- Labeled — Whether response label matches presented object.
- sub_id — Participant identifier.
File: 6_seqlistObject_Summary.csv
Description: Consolidated summary of sequence list 6 trials.
Variables:
- Object Presented — Object shown/handled on that trial.
- Response — Participant’s reported object identity.
- Labeled — Whether response label matches presented object.
- subject_id — Participant identifier.
- Object_Size — True size category of presented object.
- Object_Hardness — True compliance category of presented object.
- Response_Size — Participant’s reported size category.
- Response_Hardness — Participant’s reported compliance category.
- Hardness_Correct — Binary Compliance judgment correct indicator.
- Size_Correct — Binary Size judgment correct indicator.
- Object_Correct — Binary Overall object identification correct indicator.
File: object_compliance_analysis.py
Description: Python script for analyzing compliance of responses with expected object properties.
File: ALLObject_Summary.csv
Description: Combined dataset of all object summary trials across sequences.
Variables: Same as object summary files (object presented, response, triggered, correctness measures).
- Object Presented — Object shown/handled on that trial.
- Response — Participant’s reported object identity.
- Labeled — Whether response label matches presented object.
- subject_id — Participant identifier.
- Object — Standardized object code/name.
- Object_Size — True size category of presented object.
- Object_Hardness — True compliance category of presented object.
- Response_Size — Participant’s reported size category.
- Response_Hardness — Participant’s reported compliance category.
- Hardness_Correct — Binary Compliance judgment correct indicator.
- Size_Correct — Binary Size judgment correct indicator.
- Object_Correct — Binary Overall object identification correct indicator.
File: Discreet_analysis.py
Description: Python script for discrete statistical analysis of object recognition performance.
File: 6_seqlistObject_Amputee_Summary.csv
Description: Object recognition summary for amputee participants in sequence list 6.
Variables:
-
Object Presented — Object shown/handled on that trial.
-
Response — Participant’s reported object identity.
-
Labeled — Whether response label matches presented object.
-
subject_id — Participant identifier.
-
Object_Size — True size category of presented object.
-
Object_Hardness — True compliance category of presented object.
-
Response_Size — Participant’s reported size category.
-
Response_Hardness — Participant’s reported compliance category.
-
Hardness_Correct — Binary Compliance judgment correct indicator.
-
Size_Correct — Binary Size judgment correct indicator.
-
Object_Correct — Binary Overall object identification correct indicator.
File: Object_Hardnessperformance.csv
Description: Performance summary for hardness judgments.
Variables:
- Number_correct — Count of correct hardness responses.
- Correct response percentage — Percent (or proportion) hardness correct.
- Total — Total trials summarized.
- Groups — compliance and size label for aggregation.
File: Objects_hardness_perfromance.csv
Description: Duplicate/variant of hardness performance dataset.
Variables:
- Number_correct — Count of correct hardness responses.
- Correct response percentage — Percent (or proportion) hardness correct.
- Total — Total trials summarized.
- Groups — hardness label for aggregation.
File: Analysis_helper.py
Description: Python helper functions for data cleaning, preprocessing, and statistical analysis.
File: Objects_perfromance.csv
Description: General performance summary across object recognition tasks.
Variables:
- Number_correct — Count of correct hardness responses.
- Correct response percentage — Percent (or proportion) hardness correct.
- Total — Total trials summarized.
- Groups — hardness label for aggregation.
File: Objectsperformance_amputee.csv
Description: Performance summary specifically for amputee participants.
Variables:
- Number_correct — Count of correct hardness responses.
- Correct response percentage — Percent (or proportion) hardness correct.
- Total — Total trials summarized.
- Groups — hardness label for aggregation.
File: 6_seqlistObject_Able_Summary.csv
Description: Object recognition summary for able-bodied participants in sequence list 6.
Variables:
- Object Presented
- Response
- Number of objects
- Labeled
- sub_id
- Object, Object_Size, Object_Hardness
- Response_Size, Response_Hardness
- Hardness_Correct, Size_Correct, Object_Correct
- Notes
File: Object_Sizeperformance.csv
Description: Performance summary for size judgments.
Variables:
- Number_correct — Count of correct size responses.
- Correct response percentage — Percent (or proportion) size correct.
- Total — Total trials summarized.
- Groups — size label for aggregation.
File: ANOVA_Discreet_Summary.csv
Description: ANOVA summary results for discrete analysis.
Variables:
- Column1 — Row label or trial identifier.
- Correct — Number correct in that condition.
- Total — Total observations in that condition.
- Wrong — Number incorrect in that condition.
- Bits — Condition code value used in analysis.
- Type — Condition or trial type label.
- subject_id — Participant identifier.
File: Aim_3_NAparticipants_clean.csv
Description: Participant without an amputation demographic information an empty row separates those with an amputation and those without.
Variables:
- name — Participant identifier (may be pseudonym or coded label).
- Age — Participant age at testing (years, if recorded).
- Sex — Sex recorded for participant (as provided).
File: Aim_3_Aparticipants_clean.csv
Description: Participant with an amputation demographic information an empty row separates those with an amputation and those without.
Variables:
- name — Participant identifier (may be pseudonym or coded label).
- Sex — Sex recorded for participant (as provided).
- Amputation side — Body side of amputation (left/right, if applicable).
- Amputation length — Residual limb length measure (Trans-radial or Wrist-disarticulation).
File: Objects_size_perfromance.csv
Description: Duplicate/variant of size performance dataset.
Variables: Same as size performance (number correct, percentage, total, groups).
EMPTY CELLS
Some cells are intentionally left blank. Blank cells indicate missing or unavailable information (e.g., value not recorded, not exported, or not applicable for that row). We do not infill missing cells (e.g., with 0 or "n/a") because doing so can change meaning and can break analysis scripts that rely on true missing values (NaN) for filtering and statistics.
Code/software
The data and analysis in this project can be accessed and processed using free and open‑source software. All work was conducted in Python, specifically versions 3.9–3.10, with a standard scientific computing environment. The primary libraries used included NumPy for numerical computation, Pandas for data handling and tabular analysis, SciPy for statistical testing and curve fitting, scikit‑learn for machine learning models such as logistic regression and classification metrics, Matplotlib for visualization, and NLTK for utility functions. Built‑in modules such as os, json, and statistics were also employed for file management, data formatting, and descriptive statistics. In addition, several custom analysis modules were imported, including mag_est_analysis, JND_analysis, Discreet_analysis, Continous_analysis, Continuos_Direction_analysis, Analysis_utils, and object_compliance_analysis, each of which handled specialized tasks.
The workflow involved loading raw data files, such as CSV and XLSX formats, into Pandas for inspection and cleaning. Depending on the experiment type, appropriate analysis functions were applied through the Analysis_helper.py script, which served as a wrapper to call the specialized modules. These functions performed tasks such as magnitude estimation, just noticeable difference (JND) analysis, discrete tracking, continuous tracking, and object discrimination compliance. Statistical tests were conducted using SciPy, while scikit‑learn was used to build and evaluate logistic regression models and generate ROC curves. Results were saved back into CSV files for record‑keeping and further analysis. Visualization was carried out with Matplotlib, producing bar plots, ROC curves, and confusion matrices to illustrate performance outcomes. In summary, the workflow combined open Python tools with custom scripts to automate the process of loading raw datasets, applying statistical and machine learning analyses, and exporting both numerical summaries and graphical results.
Human subjects data
Consent was received from all participants to publish deidentified data in a public domain
