data / main_fallback.py
Tracy André
updated
27281c3
raw
history blame
5.54 kB
"""
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()