--- library_name: pytorch license: mit tags: - tabular - structured-data - binary-classification - medical - autism - screening language: - en metrics: - accuracy - f1 - roc_auc --- # Autism Spectrum Disorder Screening Model ## Model Description A feedforward neural network for autism spectrum disorder (ASD) risk screening using 8 structured clinical input features. **Important:** This is a screening tool, NOT a diagnostic instrument. Results must be interpreted by qualified healthcare professionals. ## Intended Use - **Primary use:** Clinical decision support for ASD screening - **Users:** Healthcare professionals, clinical software systems - **Out of scope:** Self-diagnosis, definitive diagnosis ## Input Features | Field | Type | Valid Values | Description | |-------|------|--------------|-------------| | `developmental_milestones` | categorical | `N`, `G`, `M`, `C` | Normal, Global delay, Motor delay, Cognitive delay | | `iq_dq` | numeric | 20-150 | IQ or Developmental Quotient | | `intellectual_disability` | categorical | `N`, `F70.0`, `F71`, `F72` | None, Mild, Moderate, Severe (ICD-10) | | `language_disorder` | binary | `N`, `Y` | No / Yes | | `language_development` | categorical | `N`, `delay`, `A` | Normal, Delayed, Absent | | `dysmorphism` | binary | `NO`, `Y` | No / Yes | | `behaviour_disorder` | binary | `N`, `Y` | No / Yes | | `neurological_exam` | text | non-empty string | `N` for normal, or description | ## Output ```json { "prediction": "Healthy" | "ASD", "probability": 0.0-1.0, "risk_level": "low" | "medium" | "high" } ``` ### Risk Level Thresholds - **Low:** probability < 0.4 - **Medium:** 0.4 ≤ probability < 0.7 - **High:** probability ≥ 0.7 ## How to Use ```python import json import torch from pathlib import Path from huggingface_hub import snapshot_download # Download model model_dir = Path(snapshot_download("toderian/autism-detector")) # Load config with open(model_dir / "preprocessor_config.json") as f: preprocess_config = json.load(f) # Load model model = torch.jit.load(model_dir / "autism_detector_traced.pt") model.eval() # Preprocessing function def preprocess(data, config): features = [] for feature_name in config["feature_order"]: if feature_name in config["categorical_features"]: feat_config = config["categorical_features"][feature_name] if feat_config["type"] == "text_binary": value = 0 if data[feature_name].upper() == feat_config["normal_value"] else 1 else: value = feat_config["mapping"][data[feature_name]] else: feat_config = config["numeric_features"][feature_name] raw = float(data[feature_name]) value = (raw - feat_config["min"]) / (feat_config["max"] - feat_config["min"]) features.append(value) return torch.tensor([features], dtype=torch.float32) # Example inference input_data = { "developmental_milestones": "N", "iq_dq": 85, "intellectual_disability": "N", "language_disorder": "N", "language_development": "N", "dysmorphism": "NO", "behaviour_disorder": "N", "neurological_exam": "N" } input_tensor = preprocess(input_data, preprocess_config) with torch.no_grad(): output = model(input_tensor) probs = torch.softmax(output, dim=-1) asd_probability = probs[0, 1].item() print(f"ASD Probability: {asd_probability:.2%}") print(f"Prediction: {'ASD' if asd_probability > 0.5 else 'Healthy'}") ``` ## Training Details - **Dataset:** 315 ASD patients + 100 healthy controls (415 total) - **Preprocessing:** Min-max normalization for numeric, label encoding for categorical - **Architecture:** Feedforward NN (input → 64 → 32 → 2) - **Loss:** Cross-entropy - **Optimizer:** Adam (lr=0.001) ## Evaluation | Metric | Value | |--------|-------| | Accuracy | 0.9759 | | F1 Score | 0.9839 | | ROC-AUC | 0.9913 | | Sensitivity | 0.9683 | | Specificity | 1.0000 | ### Confusion Matrix (Test Set, n=83) | | Predicted Healthy | Predicted ASD | |--|-------------------|---------------| | Actual Healthy | 20 | 0 | | Actual ASD | 2 | 61 | ## Limitations - Trained on limited dataset (415 samples) - Healthy controls are synthetically generated - Not validated across diverse populations - Screening tool only, not diagnostic - Requires all 8 input fields ## Ethical Considerations - Results should always be reviewed by qualified professionals - Should not be used as sole basis for clinical decisions - Model performance may vary across different populations - False negatives (2 in test set) may delay intervention ## Files | File | Description | |------|-------------| | `autism_detector_traced.pt` | TorchScript model (load with `torch.jit.load()`) | | `config.json` | Model architecture configuration | | `preprocessor_config.json` | Feature preprocessing rules (JSON, no pickle) | | `model.py` | Model class definition | | `requirements.txt` | Python dependencies | ## Citation ```bibtex @misc{asd_detector_2024, title={Autism Spectrum Disorder Screening Model}, year={2024}, publisher={HuggingFace}, url={https://huggingface.co/toderian/autism-detector} } ```