from flask import Flask, request, render_template import os import json import numpy as np from Vit_concept import run_inference, model from GP import genetic_programming app = Flask(__name__) UPLOAD_FOLDER = 'uploads' os.makedirs(UPLOAD_FOLDER, exist_ok=True) def tolist_safe(obj): return obj.tolist() if isinstance(obj, np.ndarray) else obj @app.route('/') def index(): return render_template('index.html') @app.route('/submit_json', methods=['POST']) def submit_json(): json_data = request.form.get('json_data') if not json_data: return "No JSON data provided" try: data = json.loads(json_data) except json.JSONDecodeError: return "Invalid JSON format!" # Continue processing exactly as before: input_output_pairs = [] predicted_HLCs = [] for sample in data.get("train", []): input_grid = sample["input"] output_grid = sample["output"] concept_label, _ = run_inference(model, input_grid, output_grid) predicted_HLCs.append(concept_label) input_output_pairs.append((tolist_safe(input_grid), tolist_safe(output_grid))) predicted_HLCs = list(set(predicted_HLCs)) best_program, generations = genetic_programming( input_output_pairs=input_output_pairs, population_size=300, generations=500, mutation_rate=0.2, crossover_rate=0.7, max_depth=3, predicted_HLCs=predicted_HLCs ) # Evaluate test pairs (same as before) test_pairs = [] predicted_test_outputs = [] for sample in data.get("test", []): test_input = tolist_safe(sample["input"]) test_output = tolist_safe(sample["output"]) test_pairs.append((test_input, test_output)) try: predicted = tolist_safe(best_program.evaluate(test_input)) except Exception as e: predicted = [["ERROR"]] predicted_test_outputs.append(predicted) return render_template("results.html", hlcs=predicted_HLCs, input_output_pairs=input_output_pairs, test_pairs=test_pairs, predicted_test_outputs=predicted_test_outputs, best_program=str(best_program)) if __name__ == '__main__': app.run(host='0.0.0.0', port=7860, debug=False)