Spaces:
Sleeping
Sleeping
| """ | |
| 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() | |