Spaces:
Sleeping
Sleeping
File size: 5,544 Bytes
27281c3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
"""
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()
|