diff --git a/app/api/crud.py b/app/api/crud.py index 6c78412..643ad90 100644 --- a/app/api/crud.py +++ b/app/api/crud.py @@ -94,7 +94,7 @@ async def get( dataset=dataset, dataset_name=dataset_name, num_matching_subjects=group["sub_id"].nunique(), - subject_file_paths=list(group["file_path"]), + subject_file_paths=list(group["file_path"].dropna()), image_modals=list(group["image_modal"].unique()), ) ) diff --git a/app/api/utility.py b/app/api/utility.py index 15eb481..2c9f6fd 100644 --- a/app/api/utility.py +++ b/app/api/utility.py @@ -120,7 +120,7 @@ def create_query( SELECT ?dataset ?dataset_name ?sub_id ?file_path ?image_modal WHERE {{ SELECT DISTINCT ?dataset ?dataset_name ?subject ?sub_id ?age ?sex - ?diagnosis ?num_sessions ?assessment ?image_modal ?file_path + ?diagnosis ?subject_group ?num_sessions ?assessment ?image_modal ?file_path WHERE {{ ?dataset a bg:Dataset; bg:label ?dataset_name; @@ -128,14 +128,27 @@ def create_query( ?subject a bg:Subject; bg:label ?sub_id; - bg:age ?age; - bg:sex ?sex; - bg:diagnosis ?diagnosis; bg:hasSession ?session; - bg:assessment ?assessment; bg:hasSession/bg:hasAcquisition/bg:hasContrastType ?image_modal. - ?session bg:filePath ?file_path. + OPTIONAL {{ + ?session bg:filePath ?file_path. + }} + OPTIONAL {{ + ?subject bg:age ?age. + }} + OPTIONAL {{ + ?subject bg:sex ?sex. + }} + OPTIONAL {{ + ?subject bg:diagnosis ?diagnosis. + }} + OPTIONAL {{ + ?subject bg:isSubjectGroup ?subject_group. + }} + OPTIONAL {{ + ?subject bg:assessment ?assessment. + }} {{ SELECT ?subject (count(distinct ?session) as ?num_sessions) diff --git a/app/main.py b/app/main.py index 81af747..1499fe2 100644 --- a/app/main.py +++ b/app/main.py @@ -4,10 +4,11 @@ import uvicorn from fastapi import FastAPI +from fastapi.responses import ORJSONResponse from .api.routers import query -app = FastAPI() +app = FastAPI(default_response_class=ORJSONResponse) @app.on_event("startup") diff --git a/requirements.txt b/requirements.txt index 357c0a7..c8c8cd0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,6 +15,7 @@ identify==2.5.9 idna==3.4 iniconfig==1.1.1 nodeenv==1.7.0 +orjson==3.8.6 packaging==21.3 pandas==1.5.2 platformdirs==2.5.4