Skip to content

Architecture

Robert Krueger edited this page Apr 14, 2021 · 32 revisions

Outdated.

Cycif_Viewer is an openseadragon based Cellular Image Viewing and Analysis Tool. It is built with a python Flask backend and a Node.js javascript frontend.

Components

The server delivers the imported image and feature data on demand to the client. A restful interface offers different endpoints to the client ranging from data access to different computational tasks that are implemented in the respective extension.

Directory Structure

├── README.md
├── app.py
├── requirements.yml
├── server
├── static
│   └── data
│  	├── external
│       └─── frontend
│  		├── src
│ 		├── css
│ 		└── js
│ 		     ├── main.js
│ 		     ├── services
│ 		     ├── vendor.js
│ 		     └── views
│    
└── templates
  • server contains all python backend code
  • frontend contains all Node.js frontend code, which is specifically in /src/js/views and /src/js/services
  • templates contains the Jinja templates

Image Handling

The viewer uses Zarr to crop from a layer for the respective zoom level, instead of loading an image as a whole in the browser, making it scalable for very large image data.

To allow flexible on-demand rendering, every image channel is stored as individual layered image file.

Rendering

Channel-based Rendering

Considering the user has activated two channels in the front-end, tiles from these channels (matching the viewport and zoom level) are requested, intensity values are mapped to color,combined, and rendered.

Cell-based Rendering

The segmentation mask is also stored and delived as tile-pyramid, similar to the image channels. This allows to color all pixels associated with a selected ID. This way, selected cells can be highlighted, or cells can be colored based on classification, clustering, or manual labelling.