🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script compression_data.py
Version 1.0.0
Date de création 18/03/2026
Auteur / Demandeur refoïa jeremy
Objectif principal Simuler, compresser et analyser des flux de mouvements multidimensionnels avec génération de retour haptique et visualisations graphiques.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script simule des données de mouvement (X, Y, Z) sur une durée définie, les compresse selon un ratio ajustable, puis calcule un « retour haptique » basé sur l’intensité des variations de mouvement entre les points compressés. Il génère enfin un rapport visuel complet (5 graphiques) et un export JSON des statistiques.
📌 Problème résolu
Il permet de tester des algorithmes de réduction de données pour des flux de capteurs (type IoT ou wearables) tout en évaluant l’impact de la compression sur la perception du mouvement (via le retour haptique simulé).
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution CLI (Ligne de commande)
📦 Dépendances / Librairies
Librairies standard (built-in) : os, json, datetime.
Librairies externes (pip install) : numpy, matplotlib.
📥 ENTRÉES (INPUTS)
📂 Configuration interne (Paramètres de classe)
# Nom Type Obligatoire Description Exemple
1 sample_rate int ✅ Oui Fréquence d’échantillonnage (Hz) 100
2 duration int ✅ Oui Durée de la simulation en secondes 10
3 compression_ratio float ✅ Oui Ratio de conservation des données 0.3 (30%)
📤 SORTIES (OUTPUTS)
📂 Fichiers / Données en sortie
Type Chemin / Format Description
Image ./compression_results/compression_analysis_5graphs.png Planche de 5 graphiques d’analyse et statistiques.
JSON ./compression_results/compression_data.json Métadonnées : taux réel, stats haptiques et horodatage.
🧱 STRUCTURE DU SCRIPT
compression_data.py
📌 IMPORTS : Numpy, Matplotlib, JSON, etc.
📌 CONFIG : Création du dossier compression_results.
📌 CLASSE FluxCompressor :
generate_motion_data() → Création des signaux sinusoïdaux bruités.
compress_flux() → Sous-échantillonnage linéaire.
calculate_haptic_feedback() → Calcul des deltas de mouvement.
generate_graphs() → Création de la planche PNG.
📌 MAIN : Orchestration du workflow (Génération -> Compression -> Haptique -> Graphiques -> Export).
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
compress_flux(ratio) ratio: float tuple Réduit la taille du dataset et calcule le taux de gain.
calculate_haptic_feedback() Aucun list Calcule l’intensité haptique (0-100) par distance euclidienne.
generate_graphs() Aucun str (path) Génère la visualisation complexe avec Matplotlib.
🔄 LOGIQUE / ALGORITHME
Génération : Création de 3 ondes (sin/cos) avec ajout de bruit gaussien (np.random.normal).
Compression : Utilisation de np.linspace pour sélectionner des indices uniformément répartis.
Haptique : Calcul de la distance d=Δx2+Δy2+Δz2 entre deux points successifs.
Visualisation : Rendu de 5 sous-graphiques (XY, Temps, Barres haptiques, Vitesse, Comparaison).
🚨 GESTION DES ERREURS
Dossier manquant : Vérifié et créé automatiquement via os.makedirs.
Division par zéro : Évitée dans le calcul haptique grâce à np.max([0.1, diff]).
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : Les données haptiques sont normalisées sur une échelle de 0 à 100.
Règle 2 : Le premier point haptique est toujours forcé à 0 (pas de point précédent).
Règle 3 : Le ratio de compression doit être compris entre 0 et 1 pour être efficace.
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu Statut
1 Cas nominal 100Hz, 10s, 0.3 1000 points initiaux -> 300 compressés ⬜ À tester
2 Ratio 1.0 ratio=1.0 Données compressées = Données originales ⬜ À tester
3 Fréquence basse sample_rate=1 Script fonctionnel avec peu de données ⬜ À tester
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python compression_data.py
📋 Exemple de sortie console
Plaintext
============================================================
COMPRESSION DE FLUX EN MOUVEMENT AVEC RETOUR HAPTIQUE
============================================================
[1] Génération des données de mouvement…
✓ 1000 échantillons générés
[2] Compression du flux…
✓ Taux de compression : 70.00%
[3] Calcul du retour haptique…
✓ 300 points haptiques calculés
…
✓ TRAITEMENT TERMINÉ



Avis
Il n’y a pas encore d’avis.