Components

class grandchallenge.components.models.ComponentInterface(id, title, slug, description, default_value, schema, kind, relative_path, store_in_database)[source]
Parameters
  • id (AutoField) – Id

  • title (CharField) – Title. Human readable name of this input/output field.

  • slug (AutoSlugField) – Slug

  • description (TextField) – Description. Description of this input/output field.

  • default_value (JSONField) – Default value. Default value for this field, only valid for inputs.

  • schema (JSONField) – Schema. Additional JSON schema that the values for this interface must satisfy. See https://json-schema.org/. Only Draft 7, 6, 4 or 3 are supported.

  • kind (CharField) – Kind. What is the type of this interface? Used to validate interface values and connections between components.

  • relative_path (CharField) – Relative path. The path to the entity that implements this interface relative to the input or output directory.

  • store_in_database (BooleanField) – Store in database. Should the value be saved in a database field, only valid for outputs.

exception DoesNotExist
Kind

alias of grandchallenge.components.models.InterfaceKindChoices

exception MultipleObjectsReturned
clean()[source]

Hook for doing any extra model-wide validation after clean() has been called on every field by self.clean_fields. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field defined by NON_FIELD_ERRORS.

validate_against_schema(*, value)[source]

Validates values against both default and custom schemas

class grandchallenge.components.models.ComponentInterfaceValue(*args, **kwargs)[source]

Encapsulates the value of an interface at a certain point in the graph.

Parameters
  • id (BigAutoField) – Id

  • interface (ForeignKey to ComponentInterface) – Interface

  • value (JSONField) – Value

  • file (FileField) – File

  • image (ForeignKey to Image) – Image

exception DoesNotExist
exception MultipleObjectsReturned
clean()[source]

Hook for doing any extra model-wide validation after clean() has been called on every field by self.clean_fields. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field defined by NON_FIELD_ERRORS.

property decompress

Should the CIV be decompressed?

This is only for legacy support of zip file submission for prediction evaluation. We should not support this anywhere else as it clobbers the input directory.

image_file

The single image file for this interface

property input_file

The file to use as component input

property relative_path

Where should the file be located?

Images need special handling as their names are fixed.

class grandchallenge.components.models.DurationQuerySet(model=None, query=None, using=None, hints=None)[source]
average_duration()[source]

Calculate the average duration that completed jobs ran for

with_duration()[source]

Annotate the queryset with the duration of completed jobs

class grandchallenge.components.models.InterfaceKind[source]

Interface kind.

class InterfaceKindChoices(value)

Interface kind choices.

static interface_type_file()[source]

Interface kinds that are files:

  • CSV file

  • ZIP file

static interface_type_image()[source]

Interface kinds that are images:

  • Image

  • Heat Map

  • Segmentation

static interface_type_json()[source]

Interface kinds that are json serializable:

  • String

  • Integer

  • Float

  • Bool

  • Anything that is JSON serializable (any object)

  • 2D bounding box

  • Multiple 2D bounding boxes

  • Distance measurement

  • Multiple distance measurements

  • Point

  • Multiple points

  • Polygon

  • Multiple polygons

  • Choice (string)

  • Multiple choice (array of strings)

Example json for 2D bounding box annotation

{
    "type": "2D bounding box",
    "corners": [
        [ 130.80001831054688, 148.86666870117188, 0.5009999871253967],
        [ 69.73332977294922, 148.86666870117188, 0.5009999871253967],
        [ 69.73332977294922, 73.13333129882812, 0.5009999871253967 ],
        [ 130.80001831054688, 73.13333129882812, 0.5009999871253967]
    ],
    "version": { "major": 1, "minor": 0 }
}

Example json for Multiple 2D bounding boxes annotation

{
    "type": "Multiple 2D bounding boxes",
    "boxes": [
        {
        "corners": [
            [ 92.66666412353516, 136.06668090820312, 0.5009999871253967],
            [ 54.79999923706055, 136.06668090820312, 0.5009999871253967],
            [ 54.79999923706055, 95.53333282470703, 0.5009999871253967],
            [ 92.66666412353516, 95.53333282470703, 0.5009999871253967]
        ]},
        {
        "corners": [
            [ 92.66666412353516, 136.06668090820312, 0.5009999871253967],
            [ 54.79999923706055, 136.06668090820312, 0.5009999871253967],
            [ 54.79999923706055, 95.53333282470703, 0.5009999871253967],
            [ 92.66666412353516, 95.53333282470703, 0.5009999871253967]
        ]}
    ],
    "version": { "major": 1, "minor": 0 }
}

Example json for Distance measurement annotation

{
    "type": "Distance measurement",
    "start": [ 59.79176712036133, 78.76753997802734, 0.5009999871253967 ],
    "end": [ 69.38014221191406, 143.75546264648438, 0.5009999871253967 ],
    "version": { "major": 1, "minor": 0 }
}

Example json for Multiple distance measurement annotation

{
    "type": "Multiple distance measurements",
    "lines": [
        {
            "start": [ 49.733333587646484, 103.26667022705078, 0.5009999871253967 ],
            "end": [ 55.06666564941406, 139.26666259765625, 0.5009999871253967 ]
        },
        {
            "start": [ 49.733333587646484, 103.26667022705078, 0.5009999871253967 ],
            "end": [ 55.06666564941406, 139.26666259765625, 0.5009999871253967 ]
        }
    ],
    "version": { "major": 1, "minor": 0 }
}

Example json for Point annotation

{
    "point": [ 152.13333129882812, 111.0, 0.5009999871253967 ],
    "type": "Point",
    "version": { "major": 1, "minor": 0 }
}

Example json for Multiple points annotation

{
    "type": "Multiple points",
    "points": [
        {
            "point": [
                96.0145263671875, 79.83292388916016, 0.5009999871253967
            ],
        },
        {
            "point": [
                130.10653686523438, 115.52300262451172, 0.5009999871253967
            ],
        }
    ],
    "version": { "major": 1, "minor": 0 }
}

Example json for Polygon annotation

{
    "type": "Polygon",
    "seed_point": [ 76.413756408691, 124.014717102050, 0.5009999871253967 ],
    "path_points": [
        [ 76.41375842260106, 124.01471710205078, 0.5009999871253967 ],
        [ 76.41694876387268, 124.0511828696491, 0.5009999871253967 ],
        [ 76.42642285078242, 124.0865406433515, 0.5009999871253967 ]
    ],
    "sub_type": "brush",
    "groups": [],
    "version": { "major": 1, "minor": 0 }
}

Example json for Multiple polygon annotation

{
    "type": "Multiple polygons",
    "polygons": [
        {
            "seed_point": [ 55.82666793823242, 90.46666717529297, 0.5009999871253967 ],
            "path_points": [
                [ 55.82667599387105, 90.46666717529297, 0.5009999871253967 ],
                [ 55.93921357544119, 90.88666314747366, 0.5009999871253967 ],
                [ 56.246671966051736, 91.1941215380842, 0.5009999871253967 ],
                [ 56.66666793823242, 91.30665911965434, 0.5009999871253967 ]
            ],
            "sub_type": "brush",
            "groups": [ "manual"],
        },
        {
            "seed_point": [ 90.22666564941406, 96.06666564941406, 0.5009999871253967 ],
            "path_points": [
                [ 90.22667370505269, 96.06666564941406, 0.5009999871253967 ],
                [ 90.33921128662283, 96.48666162159475, 0.5009999871253967 ],
                [ 90.64666967723338, 96.7941200122053, 0.5009999871253967 ]
            ],
            "sub_type": "brush",
            "groups": []
        }
    ],
    "version": { "major": 1, "minor": 0 }
}
class grandchallenge.components.models.InterfaceKindChoices(value)[source]

Interface kind choices.

class grandchallenge.components.models.InterfaceSuperKindChoices(value)[source]

An enumeration.