CausalBox / routers /timeseries_routes.py
ShutterStack's picture
major changes
ab66d4e verified
# routers/timeseries_routes.py
from flask import Blueprint, request, jsonify
import pandas as pd
from utils.time_series_causal import perform_granger_causality
timeseries_bp = Blueprint('timeseries_bp', __name__)
@timeseries_bp.route('/discover_causality', methods=['POST'])
def discover_timeseries_causality():
"""
API endpoint to perform time-series causal discovery (Granger Causality).
"""
data = request.json.get('data')
timestamp_col = request.json.get('timestamp_col')
variables_to_analyze = request.json.get('variables_to_analyze')
max_lags = request.json.get('max_lags', 1) # Default to 1 lag
if not all([data, timestamp_col, variables_to_analyze]):
return jsonify({"detail": "Missing required parameters for time-series causal discovery."}), 400
if not isinstance(max_lags, int) or max_lags <= 0:
return jsonify({"detail": "max_lags must be a positive integer."}), 400
try:
results = perform_granger_causality(data, timestamp_col, variables_to_analyze, max_lags)
return jsonify({"results": results}), 200
except ValueError as e:
return jsonify({"detail": str(e)}), 400
except Exception as e:
return jsonify({"detail": f"An error occurred during time-series causal discovery: {str(e)}"}), 500