File size: 1,851 Bytes
7e055ad
 
 
 
 
 
64dd40c
7e055ad
 
78db81b
7e055ad
b9e2d5a
7e055ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
import pandas as pd
from pathlib import Path

from app.backend.constant import Navigation, ModelProvider, EvaluationMetric, EmbdDtype, EmbdDim, Similarity
from app.backend.data_engine import DataEngine

app = FastAPI()

# Mount static files
app.mount("/static", StaticFiles(directory="app/static"), name="static")

# Templates
templates = Jinja2Templates(directory="app/templates")

# Initialize data engine
data_engine = DataEngine()

@app.get("/", response_class=HTMLResponse)
async def home(request: Request, tab: str = "text"):
    # Get initial data based on tab
    if tab == "multimodal":
        data = data_engine.get_filtered_data(navigation="multimodal")
    else:
        data = data_engine.get_data()
    
    # Convert data to list for template rendering
    data_list = data.values.tolist()
    columns = data.columns.tolist()

    return templates.TemplateResponse("index.html", {
        "request": request,
        "active_tab": tab,
        "data": data_list,
        "columns": columns,
        "navigations": [e.value for e in Navigation],
        "embd_types": [e.value for e in EmbdDtype],
        "embd_dims": [e.value for e in EmbdDim],
        "similarities": [e.value for e in Similarity]
    })

@app.post("/api/filter")
async def filter_data(filters: dict):
    # Apply filters to data
    data = data_engine.get_filtered_data(
        navigation=filters.get('navigation'),
        embd_type=filters.get('embd_type'),
        embd_dims=filters.get('embd_dims'),
        similarity=filters.get('similarity')
    )
    
    # Convert to list for JSON response
    return data.values.tolist()


import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7890)