Code0ut's picture
Upload folder using huggingface_hub
793ba48 verified
Raw
History Blame Contribute Delete
2.42 kB
import json
import os
import random
from typing import List, Dict, Any
# PATH SETUP (Docker-safe)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = os.path.dirname(BASE_DIR)
DATASET_PATH = os.path.join(PROJECT_ROOT, "datasets", "disorders.json")
# LOAD DATASET
def load_disorders() -> List[Dict[str, Any]]:
try:
print(f"Loading dataset from: {DATASET_PATH}")
with open(DATASET_PATH, "r", encoding="utf-8") as f:
data = json.load(f)
if not isinstance(data, list):
raise ValueError("Dataset must be a list of disorder objects")
print(f"Loaded {len(data)} disorders successfully ✅")
return data
except FileNotFoundError:
print(f"❌ File not found: {DATASET_PATH}")
return []
except json.JSONDecodeError:
print(f"❌ Invalid JSON format in {DATASET_PATH}")
return []
except Exception as e:
print(f"❌ Unexpected error: {e}")
return []
# INITIALIZE DATA
disorders: List[Dict[str, Any]] = load_disorders()
# CREATE FAST LOOKUP MAP
disorders_map: Dict[str, Dict[str, Any]] = {
d["name"]: d for d in disorders
}
# FUNCTIONS
def get_random_disorder(n: int = 1) -> List[Dict[str, Any]]:
if not disorders:
return []
n = min(n, len(disorders))
return random.sample(disorders, n)
def get_random_disorder_names(n: int = 1) -> List[str]:
return [d["name"] for d in get_random_disorder(n)]
def get_disorder_info(name: str) -> Dict[str, Any]:
return disorders_map.get(name, {})
def get_symptoms(name: str, category: str = "emotional") -> List[str]:
disorder = get_disorder_info(name)
return disorder.get("symptoms", {}).get(category, [])
def get_trigger_keywords(name: str) -> List[str]:
disorder = get_disorder_info(name)
return disorder.get("trigger_keywords", [])
def get_random_symptom(name: str, category: str = "emotional") -> str:
symptoms = get_symptoms(name, category)
return random.choice(symptoms) if symptoms else ""
# TEST (only runs directly)
if __name__ == "__main__":
print("Random disorder:", get_random_disorder(2))
if disorders:
name = disorders[0]["name"]
print("Sample disorder:", name)
print("Symptoms:", get_random_symptom(name))