""" Version alternative de main.py qui fonctionne sans Gradio Pour les cas où les dépendances Gradio posent problème """ import warnings import matplotlib.pyplot as plt import seaborn as sns from data_loader import DataLoader from analyzer import AgricultureAnalyzer from visualizations import AgricultureVisualizer # Suppression des warnings warnings.filterwarnings('ignore') # Configuration des graphiques plt.style.use('default') sns.set_palette("husl") def run_analysis_without_ui(): """Exécute l'analyse sans interface utilisateur""" print("🌾 Analyse des Adventices Agricoles - Mode Console") print("=" * 60) try: # Initialisation des composants print("🔄 Initialisation des composants...") data_loader = DataLoader() analyzer = AgricultureAnalyzer() visualizer = AgricultureVisualizer() # Chargement des données print("\n📊 Chargement des données...") result = data_loader.load_data() if isinstance(result, str) and "❌" in result: print(f"Erreur: {result}") return False if not data_loader.has_data(): print("❌ Aucune donnée disponible") return False data = data_loader.get_data() print(f"✅ {len(data)} enregistrements chargés") # Analyse des données print("\n🔬 Analyse des données...") analyzer.set_data(data) general_stats, herbicide_stats = analyzer.analyze_data() if general_stats: print("✅ Analyse générale terminée") print(f" - Parcelles: {general_stats['total_parcelles']}") print(f" - Interventions: {general_stats['total_interventions']}") print(f" - Surface totale: {general_stats['surface_totale']:.2f} ha") if herbicide_stats: print("✅ Analyse herbicides terminée") print(f" - Interventions herbicides: {herbicide_stats['nb_interventions_herbicides']}") print(f" - Pourcentage: {herbicide_stats['pourcentage_herbicides']:.1f}%") # Génération des statistiques print("\n📋 Génération des statistiques...") stats = analyzer.get_summary_stats() print("✅ Statistiques générées") # Génération des recommandations print("\n🎯 Génération des recommandations...") recommendations = analyzer.get_low_risk_recommendations() print("✅ Recommandations générées") # Sauvegarde des résultats print("\n💾 Sauvegarde des résultats...") try: # Sauvegarde des statistiques with open('results/stats_console.md', 'w', encoding='utf-8') as f: f.write("# Analyse des Adventices Agricoles\n\n") f.write(stats) f.write("\n\n") f.write(recommendations) # Sauvegarde de l'analyse des risques si disponible risk_analysis = analyzer.get_risk_analysis() if risk_analysis is not None and len(risk_analysis) > 0: risk_analysis.to_csv('results/risk_analysis_console.csv') print("✅ Analyse des risques sauvegardée (CSV)") print("✅ Résultats sauvegardés dans results/") except Exception as e: print(f"⚠️ Erreur lors de la sauvegarde: {e}") # Tentative de génération des graphiques print("\n📈 Tentative de génération des graphiques...") try: visualizer.set_data(data, analyzer.get_risk_analysis()) # Les graphiques seront créés mais ne pourront pas être affichés en mode console print("⚠️ Les graphiques sont générés mais ne peuvent pas être affichés en mode console") print("💡 Utilisez main.py avec Gradio pour voir les visualisations interactives") except Exception as e: print(f"⚠️ Impossible de générer les graphiques: {e}") print("\n🎉 Analyse terminée avec succès!") print("\n📁 Fichiers générés:") print(" - results/stats_console.md : Statistiques et recommandations") print(" - results/risk_analysis_console.csv : Analyse détaillée des risques") return True except Exception as e: print(f"❌ Erreur critique: {e}") import traceback traceback.print_exc() return False def main(): """Fonction principale en mode fallback""" print("🔧 Mode Fallback - Analyse sans interface Gradio") try: # Tentative d'import de Gradio pour vérifier la disponibilité try: import gradio as gr print("✅ Gradio disponible - vous pouvez utiliser main.py") print("⚠️ Utilisation du mode fallback forcé") except ImportError as e: print(f"⚠️ Gradio non disponible: {e}") print("🔄 Utilisation du mode console") except Exception as e: print(f"⚠️ Problème avec Gradio: {e}") print("🔄 Utilisation du mode console") # Exécution de l'analyse success = run_analysis_without_ui() if success: print("\n✅ Mode fallback exécuté avec succès") else: print("\n❌ Échec du mode fallback") exit(1) if __name__ == "__main__": main()