File size: 1,540 Bytes
b1a6659
9bfeace
 
e0e9f44
9bfeace
e0e9f44
 
 
b1a6659
 
9bfeace
 
 
 
 
 
 
 
 
 
 
b1a6659
 
9bfeace
 
 
 
b1a6659
 
fd04852
b1a6659
9bfeace
 
 
b1a6659
 
9bfeace
 
 
 
 
 
b1a6659
fd04852
 
 
67652b1
b1a6659
e0e9f44
b1a6659
9bfeace
b1a6659
9bfeace
 
 
 
b1a6659
fd04852
 
9bfeace
 
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
import os
from flask import Flask, jsonify, request
from core.config import EvolutionConfig

# Silence HF noise
os.environ["HF_HUB_DISABLE_PROGRESS_BARS"] = "1"
os.environ["HF_HUB_DISABLE_TELEMETRY"] = "1"

from applications.pure_predictor.main import run as run_pure_predictor
from applications.molecule_generator.main import run as run_molecule_generator

app = Flask(__name__)


@app.route("/")
def home():
    return {
        "status": "ok",
        "message": "Biofuel Optimiser HF Space is running",
        "endpoints": ["/pure", "/generate"]
    }


@app.route("/pure", methods=["GET"])
def pure_predict():
    smiles = request.args.get("smiles", "CCC")

    config = {
        "mode": "1",
        "smiles": smiles,
    }

    result = run_pure_predictor(config)
    return jsonify(result)


@app.route("/generate", methods=["GET"])
def generate():
    target_cn = float(request.args.get("target_cn", 55))
    generations = int(request.args.get("generations", 1))
    population_size = int(request.args.get("population_size", 50))

    config = EvolutionConfig(
        target_cn=target_cn,
        generations=generations,
        population_size=population_size,
        minimize_ysi=True,
        maximize_cn=False,
    )

    final_df, pareto_df = run_molecule_generator(config)

    return {
        "final_population": final_df.to_dict(orient="records"),
        "pareto_front": pareto_df.to_dict(orient="records"),
    }


if __name__ == "__main__":
    # HF Spaces expects port 7860
    app.run(host="0.0.0.0", port=7860)