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)