This application is an asynchronous endpoint for creating deep zoom image file formats for images, for use with QUINT online, LocaliView and other EBRAINS software. Main dependencies are asyncio, aiofiles, aiohttp ,fastapi and pyvips.
The library libvips is installed in the image.
GET /deepzoom/health- Service health statusPOST /deepzoom- Submit image processing taskGET /deepzoom/status/{task_id}- Check task status
- Programming: Arda Balkir
- Conception, design, validation: Maja A Puchades, Sharon C Yates, Arda Balkir, Jan G Bjaalie.
MIT licence
CreateZoom (RRID:SCR_026625)
- Puchades MA, Yates SC, Csucs G, Carey H, Balkir A, Leergaard TB, Bjaalie JG. Software and pipelines for registration and analyses of rodent brain image data in reference atlas space. Front Neuroinform. 2025 Sep 24;19:1629388. https://doi.org/10.3389/fninf.2025.1629388
CreateZoom is developed by the Neural Systems Laboratory at the Institute of Basic Medical Sciences, University of Oslo, Norway. CreateZoom was developed with support from the EBRAINS infrastructure, and funding from the European Union’s Horizon Europe Programme for Research Infrastructures Grant Agreement No. 101147319 (EBRAINS 2.0).
Report issues here on github or email: support@ebrains.eu
to deploy, run build in docker and the image can be deployed anywhere. There are no secrets as the token is handled in memory.
docker build -t appname .{
"path": "str",
"target_path": "str",
"token": "str"
}Files paths should be submitted individually, for each file you will be assigned a task_id. You can query your tasks status with the status endpoint.
sequenceDiagram
participant Client
participant API
participant TaskManager
participant TaskStore
participant Storage
participant Bucket
Client->>API: POST /deepzoom
API->>TaskManager: Create new task
TaskManager->>TaskStore: Store task details
API-->>Client: Return task_id
Note over TaskManager: Async Processing
Bucket->>TaskManager: Download image
TaskManager->>Storage: Create DeepZoomImage
TaskManager->>Storage: Zip store
TaskManager->>Bucket: Upload result
TaskManager->>TaskStore: Update status
Client->>API: GET /deepzoom/status/{task_id}
API->>TaskStore: Get task status
API-->>Client: Return task details