Source code for veupath_chatbot.transport.http.routers.experiments.comparison
"""Cross-experiment comparison endpoints: overlap and enrichment comparison."""
from fastapi import APIRouter
from veupath_chatbot.services.experiment.enrichment_compare import (
EnrichmentCompareResult,
compare_enrichment_across,
)
from veupath_chatbot.services.experiment.overlap import (
OverlapResult,
compute_gene_set_overlap,
)
from veupath_chatbot.transport.http.deps import (
CurrentUser,
get_experiments_owned_by_user,
)
from veupath_chatbot.transport.http.schemas.experiments import (
EnrichmentCompareRequest,
OverlapRequest,
)
router = APIRouter()
[docs]
@router.post("/overlap")
async def compute_overlap(body: OverlapRequest, user_id: CurrentUser) -> OverlapResult:
"""Compute pairwise gene set overlap between experiments."""
experiments = await get_experiments_owned_by_user(body.experiment_ids, str(user_id))
return compute_gene_set_overlap(experiments, body.experiment_ids)
[docs]
@router.post("/enrichment-compare")
async def compare_enrichment(
body: EnrichmentCompareRequest, user_id: CurrentUser
) -> EnrichmentCompareResult:
"""Compare enrichment results across experiments."""
experiments = await get_experiments_owned_by_user(body.experiment_ids, str(user_id))
return compare_enrichment_across(
experiments, body.experiment_ids, body.analysis_type
)