# Example script to run the demo without AI model dependencies for local testing # Saves this as demo.py import gradio as gr from app import read_file, analyze_data, generate_visualizations, display_analysis def simple_process_file(file): """Simplified version without AI models for testing""" # Read the file df = read_file(file) if isinstance(df, str): # If error message return df, None, None, None # Analyze data analysis = analyze_data(df) # Generate visualizations visualizations = generate_visualizations(df) # Placeholder for AI recommendations cleaning_recommendations = """ ## Data Cleaning Recommendations * Handle missing values by either removing rows or imputing with mean/median/mode * Remove duplicate rows if present * Convert date-like string columns to proper datetime format * Standardize text data by removing extra spaces and converting to lowercase * Check for and handle outliers in numerical columns Note: This is a demo recommendation (AI model not connected in demo mode) """ # Placeholder for AI insights analysis_insights = """ ## Data Analysis Insights 1. Examine the distribution of each numeric column 2. Analyze correlations between numeric features 3. Look for patterns in categorical data 4. Consider creating visualizations like histograms and scatter plots 5. Explore relationships between different variables Note: This is a demo insight (AI model not connected in demo mode) """ return analysis, visualizations, cleaning_recommendations, analysis_insights def demo_ui(file): """Demo mode UI function""" if file is None: return "Please upload a file to begin analysis.", None, None, None # Process the file analysis, visualizations, cleaning_recommendations, analysis_insights = simple_process_file(file) # Format analysis for display analysis_html = display_analysis(analysis) # Prepare visualizations for display viz_html = "" if visualizations and not isinstance(visualizations, str): for viz_name, fig in visualizations.items(): # Convert plotly figure to HTML viz_html += f'
{fig.to_html(full_html=False, include_plotlyjs="cdn")}
' # Combine analysis and visualizations result_html = f"""
{analysis_html}

Data Visualizations

{viz_html}
""" return result_html, visualizations, cleaning_recommendations, analysis_insights # Create Gradio interface for demo mode with gr.Blocks(title="Data Visualization & Cleaning AI (Demo Mode)") as demo: gr.Markdown("# Data Visualization & Cleaning AI") gr.Markdown("**DEMO MODE** - Upload your data file (CSV, Excel, JSON, or TXT) and get automatic analysis and visualizations.") with gr.Row(): file_input = gr.File(label="Upload Data File") with gr.Tabs(): with gr.TabItem("Data Analysis"): with gr.Row(): analyze_button = gr.Button("Analyze Data") with gr.Tabs(): with gr.TabItem("Analysis & Visualizations"): output = gr.HTML(label="Results") with gr.TabItem("AI Cleaning Recommendations"): cleaning_recommendations_output = gr.Markdown(label="AI Recommendations") with gr.TabItem("AI Analysis Insights"): analysis_insights_output = gr.Markdown(label="Analysis Insights") with gr.TabItem("Raw Visualization Objects"): viz_output = gr.JSON(label="Visualization Objects") # Connect the button to function analyze_button.click( fn=demo_ui, inputs=[file_input], outputs=[output, viz_output, cleaning_recommendations_output, analysis_insights_output] ) # Launch the demo if __name__ == "__main__": demo.launch()