December 2022 Cycle Report

Published 10 Jan. 2023

GC-API Retries

Every so often, the grand-challenge systems fail to process a query on time. In the past, it was best practice to nest the GC-API python-library calls in a try statement to account for these. This is no longer needed as per GC-API v0.11 there are now automatic retries on requests.

By default, only server-side errors (i.e. 5xx) are retried in an exponential backoff strategy for up to 8 times (~26 seconds). See the documentation for more information on customizing a retry strategy.

Select existing Images as inputs for Algorithms, Archive and Reader Studies

This feature will be deployed in the next few days.

On the Grand Challenge side, we worked on a Flexible Image widget that will allow you to choose an existing image next to the conventional option of uploading a new image when trying out an algorithm, or creating or editing an archive item or display set image.

The list of images you can choose from will consist of all images you have view permissions for, which include: - images that are part of an archive or reader study that you have access to (either as editor, uploader or user/reader) - input and output images from algorithm jobs that you have view permission for

You will be able to filter the images by name and pk.

Note that the option to choose an existing image will not be available if you upload in batch mode, only when you upload single cases.

Ellipse Annotations

Grand-challenge and CIRRUS already support several annotations, such as 2D-bounding boxes and lines. In this development cycle, a new type of annotation is introduced: ellipses.

Ellipse annotations are defined by a major and minor axis. The annotations, while being edited, are labeled with the ellipse perimeter and eccentricity.

DZI loader

Tiff images that are uploaded to Grand Challenge are converted to DZI to facilitate fast viewing without the need to download the entire image. The MeVisLab HistoLoad module is capable of loading DZI files, but it has a few drawbacks. For one, there is no way to set an authentication header on the requests to the DZI, necessitating the use of traefik to add these headers to all the DZI requests. Secondly, when the HistoLoad module attempts to load a corrupt DZI file, it will overload Grand Challenge with requests for tiles that do not exists, there is no proper error handling in place to prevent this from happening (see issue). A custom PythonDziImage module has been developed that loads the DZI file and resolves these issues.

Cover photo by Maciek Sulkowski on Unsplash