compression_data.py

49,00 

Simuler, compresser et analyser des flux de mouvements multidimensionnels avec génération de retour haptique et visualisations graphiques.

UGS : compression_data.py Catégorie : Étiquette :

🔷 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.

Soyez le premier à laisser votre avis sur “compression_data.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *