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()