from flask import Flask, request, render_template, redirect, url_for import os import json 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) @app.route('/') def index(): return render_template('index.html') @app.route('/upload', methods=['POST']) def upload(): if 'file' not in request.files: return "No file part" file = request.files['file'] if file.filename == '': return "No selected file" filepath = os.path.join(UPLOAD_FOLDER, file.filename) file.save(filepath) with open(filepath, 'r') as f: data = json.load(f) 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((input_grid, 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 ) return render_template("results.html", hlcs=predicted_HLCs, program=str(best_program)) if __name__ == '__main__': app.run(host="0.0.0.0", port=7860)