|
|
|
|
|
|
| from flask import Flask, request, jsonify |
| from Vit_concept import run_inference, model |
| from GP import genetic_programming |
| import traceback |
| import os |
|
|
| app = Flask(__name__) |
|
|
| @app.route('/') |
| def home(): |
| return "API is running." |
|
|
| @app.route('/run', methods=['POST']) |
| def run_model(): |
| try: |
| data = request.get_json(force=True) |
| input_output_pairs = [] |
| predicted_HLCs = [] |
| |
| |
| print(f"Received {len(data.get('train', []))} training samples") |
| |
| for sample in data["train"]: |
| input_grid = sample["input"] |
| output_grid = sample["output"] |
| |
| |
| print("Running run_inference on a sample...") |
| 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)) |
| |
| print("Calling genetic_programming...") |
| best_program, generations = genetic_programming( |
| input_output_pairs=input_output_pairs, |
| population_size=30, |
| generations=10, |
| mutation_rate=0.2, |
| crossover_rate=0.7, |
| max_depth=3, |
| predicted_HLCs=predicted_HLCs |
| ) |
| |
| print("Returning response...") |
| return jsonify({ |
| "best_program": str(best_program) |
| }) |
| except Exception as e: |
| print("🔥 ERROR in /run route!") |
| print(traceback.format_exc()) |
| return jsonify({"error": str(e)}), 500 |
|
|
| if __name__ == "__main__": |
| port = int(os.environ.get("PORT", 10000)) |
| print(f"Starting server on port {port}...") |
| app.run(host="0.0.0.0", port=port) |
|
|