File size: 1,911 Bytes
3537d48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62



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)  # force=True handles edge cases where headers are weird
        input_output_pairs = []
        predicted_HLCs = []
        
        # Debugging: Log sample count
        print(f"Received {len(data.get('train', []))} training samples")
        
        for sample in data["train"]:
            input_grid = sample["input"]
            output_grid = sample["output"]
            
            # Debug step
            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())  # Show full error trace in Render logs
        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)