| from __future__ import annotations |
|
|
| import gradio as gr |
| import pandas as pd |
|
|
| RESOURCES = [ |
| { |
| "Dataset": "Upper-limb Kinect movement", |
| "What it contains": "3D coordinates for nine upper-body joints, task events, movement features, and benchmark tables", |
| "People / samples": "18 adults with SMA type III + 19 controls", |
| "Access": "Open download", |
| "Available files": "Four PLOS supplements and four derived tables", |
| "Repository": "https://huggingface.co/datasets/YannisTevissen/sma-upper-limb-kinect", |
| }, |
| { |
| "Dataset": "Spinal-stimulation figure data", |
| "What it contains": "Gait, EMG, strength, stimulation settings, and response measurements", |
| "People / samples": "3 adults with SMA type III", |
| "Access": "Open download", |
| "Available files": "CSV and spreadsheets for main and extended figures", |
| "Repository": "https://huggingface.co/datasets/YannisTevissen/sma-spinal-stimulation-figure-data", |
| }, |
| { |
| "Dataset": "BforSMA reported biomarkers", |
| "What it contains": "Reported protein, metabolite, and transcript results", |
| "People / samples": "Study reports 108 children with SMA + 22 controls", |
| "Access": "Open reported results", |
| "Available files": "Five tables, two appendices, and one list", |
| "Repository": "https://huggingface.co/datasets/YannisTevissen/sma-bforsma-reported-biomarkers", |
| }, |
| { |
| "Dataset": "GSE108094 motor-neuron RNA-seq", |
| "What it contains": "Differential expression, alternative splicing, GEO metadata, and SRA run metadata", |
| "People / samples": "8 libraries from 4 cell lines", |
| "Access": "Open download", |
| "Available files": "Two processed outputs, three family-metadata files, and one run inventory", |
| "Repository": "https://huggingface.co/datasets/YannisTevissen/sma-gse108094-motor-neuron-rnaseq", |
| }, |
| { |
| "Dataset": "TREAT-NMD SMA registry", |
| "What it contains": "Harmonized clinical-registry schema", |
| "People / samples": "International registry network", |
| "Access": "Application required", |
| "Available files": "Public 120-item core schema; participant data by reviewed enquiry", |
| "Repository": "https://www.treat-nmd.org/what-we-do/core-datasets/sma/", |
| }, |
| { |
| "Dataset": "Cure SMA Clinical Data Registry", |
| "What it contains": "Natural history, treatments, and outcomes", |
| "People / samples": "More than 1,000 reported participants", |
| "Access": "Application required", |
| "Available files": "Registry information; participant data through a governed process", |
| "Repository": "https://www.curesma.org/impact-report/", |
| }, |
| { |
| "Dataset": "JEWELFISH digital measures", |
| "What it contains": "Touchscreen, motion, respiratory, and upper-limb signals", |
| "People / samples": "116 reported participants", |
| "Access": "Sponsor controlled", |
| "Available files": "Study description; participant-level sensor streams not public", |
| "Repository": "https://www.sciencedirect.com/science/article/pii/S0960896623001797", |
| }, |
| ] |
|
|
| FRAME = pd.DataFrame(RESOURCES) |
|
|
|
|
| def filter_resources(access: str, search: str): |
| result = FRAME |
| if access != "All": |
| result = result[result["Access"] == access] |
| if search.strip(): |
| needle = search.strip().lower() |
| result = result[ |
| result.astype(str).apply(lambda row: row.str.lower().str.contains(needle).any(), axis=1) |
| ] |
| return result |
|
|
|
|
| with gr.Blocks(title="Open SMA Data Explorer") as demo: |
| gr.Markdown( |
| """ |
| # Open SMA Data Explorer 🧬 |
| |
| A catalogue of SMA research datasets by modality, cohort, available files, and access level. |
| These resources describe specific study populations and experimental settings. |
| """ |
| ) |
| with gr.Tab("Find datasets"): |
| with gr.Row(): |
| access = gr.Dropdown( |
| choices=["All", "Open download", "Open reported results", "Application required", "Sponsor controlled"], |
| value="All", |
| label="Access", |
| ) |
| search = gr.Textbox(label="Search", placeholder="Try motion, RNA, gait, biomarker…") |
| table = gr.Dataframe( |
| value=FRAME, |
| headers=list(FRAME.columns), |
| datatype=["str"] * len(FRAME.columns), |
| interactive=False, |
| wrap=True, |
| ) |
| access.change(filter_resources, [access, search], table) |
| search.change(filter_resources, [access, search], table) |
|
|
| with gr.Tab("Kinect benchmark"): |
| gr.Markdown( |
| """ |
| ## Reach-intent classification |
| |
| The Kinect records a stick figure while one button appears and the person reaches for it. |
| |
| **Input:** the first 25%, 50%, or 100% of that movement. |
| **Question:** which of the ten buttons are they reaching toward? |
| **Answer:** a number from 0 to 9. |
| |
| We test three versions: |
| |
| 1. **Generic** — learn from other people, then meet a completely new person. |
| 2. **Personalized** — see one or five examples from the new person first. |
| 3. **Across visits** — learn from their first visit and test months later. |
| |
| The provided evaluation reports overall accuracy, macro target recall, and SMA/control slices at each |
| movement checkpoint. Participant folds prevent recordings from the same person appearing in both |
| training and test data. |
| """ |
| ) |
| gr.Markdown( |
| "[Open the benchmark dataset](https://huggingface.co/datasets/YannisTevissen/sma-upper-limb-kinect)" |
| ) |
|
|
| with gr.Tab("Responsible use"): |
| gr.Markdown( |
| """ |
| - These cohorts are small and incomplete representations of SMA. |
| - Controlled-access participant data are not included in the catalogue repository. |
| - Results should not be used for diagnosis, prognosis, or treatment decisions. |
| - Dataset cards record source citations, terms, file sizes, and checksums. |
| """ |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|