Components¶
- class grandchallenge.components.models.ComponentImage(*args, **kwargs)[source]¶
- Parameters:
image (FileField) – Image. .tar.gz archive of the container image produced from the command ‘docker save IMAGE | gzip -c > IMAGE.tar.gz’. See https://docs.docker.com/engine/reference/commandline/save/
image_sha256 (CharField) – Image sha256
latest_shimmed_version (CharField) – Latest shimmed version
import_status (PositiveSmallIntegerField) – Import status
is_manifest_valid (BooleanField) – Is manifest valid. Is this image’s manifest valid?
is_in_registry (BooleanField) – Is in registry. Is this image in the container registry?
is_removed (BooleanField) – Is removed. If this image has been removed then it has been removed from storage and cannot be activated
status (TextField) – Status
size_in_storage (PositiveBigIntegerField) – Size in storage. The number of bytes stored in the storage backend
size_in_registry (PositiveBigIntegerField) – Size in registry. The number of bytes stored in the registry
comment (TextField) – Comment. Add any information (e.g. version ID) about this image here.
is_desired_version (BooleanField) – Is desired version
Relationship fields:
- Parameters:
creator (
ForeignKeytoUser) – Creatoruser_upload (
ForeignKeytoUserUpload) – User upload
- class GPUTypeChoices(value)¶
- class ImportStatusChoices(value)¶
- property original_repo_tag¶
The tag of this image in the container repository
- save(*args, **kwargs)[source]¶
Save the current instance. Override this in a subclass if you want to control the saving process.
The ‘force_insert’ and ‘force_update’ parameters can be used to insist that the “save” must be an SQL insert or update (or equivalent for non-SQL backends), respectively. Normally, they should not be set.
- class grandchallenge.components.models.ComponentInterface(id, overlay_segments, look_up_table, title, slug, description, default_value, schema, kind, relative_path, store_in_database)[source]¶
- Parameters:
id (AutoField) – Primary key: ID
overlay_segments (JSONField) – Overlay segments. The schema that defines how categories of values in the overlay images are differentiated. Example usage: [{“name”: “background”, “visible”: true, “voxel_value”: 0},{“name”: “tissue”, “visible”: true, “voxel_value”: 1}]. If a categorical overlay is shown, it is possible to show toggles to change the visibility of the different overlay categories. To do so, configure the categories that should be displayed. For example: [{“name”: “Level 0”, “visible”: false, “voxel_value”: 0].
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.
Relationship fields:
- Parameters:
look_up_table (
ForeignKeytoLookUpTable) – Look up table. The look-up table that is applied when an overlay image is first shown (related name:componentinterface)
Reverse relationships:
- Parameters:
additional_eval_inputs (Reverse
ManyToManyFieldfromPhase) – All additional eval inputs of this component interface (related name ofadditional_evaluation_inputs)eval_outputs (Reverse
ManyToManyFieldfromPhase) – All eval outputs of this component interface (related name ofevaluation_outputs)phaseadditionalevaluationinput (Reverse
ForeignKeyfromPhaseAdditionalEvaluationInput) – All phase additional evaluation inputs of this component interface (related name ofsocket)phaseevaluationoutput (Reverse
ForeignKeyfromPhaseEvaluationOutput) – All phase evaluation outputs of this component interface (related name ofsocket)inputs (Reverse
ManyToManyFieldfromAlgorithmInterface) – All inputs of this component interface (related name ofinputs)outputs (Reverse
ManyToManyFieldfromAlgorithmInterface) – All outputs of this component interface (related name ofoutputs)algorithminterfaceinput (Reverse
ForeignKeyfromAlgorithmInterfaceInput) – All algorithm interface inputs of this component interface (related name ofinput)algorithminterfaceoutput (Reverse
ForeignKeyfromAlgorithmInterfaceOutput) – All algorithm interface outputs of this component interface (related name ofoutput)example_value (Reverse
OneToOneFieldfromComponentInterfaceExampleValue) – The example value of this component interface (related name ofinterface)componentinterfacevalue (Reverse
ForeignKeyfromComponentInterfaceValue) – All component interface values of this component interface (related name ofinterface)question (Reverse
ForeignKeyfromQuestion) – All questions of this component interface (related name ofinterface)
- exception DoesNotExist¶
- Kind¶
alias of
InterfaceKindChoices
- exception MultipleObjectsReturned¶
- SuperKind¶
alias of
InterfaceSuperKindChoices
- property allowed_file_types¶
The allowed file types of the interface that is relevant when uploading
- 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 file_extension¶
The dot filename extension (e.g. ‘.jpg’) of an interface that is relevant when writing
- class grandchallenge.components.models.ComponentInterfaceExampleValue(id, created, modified, interface, value, extra_info)[source]¶
- Parameters:
id (UUIDField) – Primary key: Id
created (DateTimeField) – Created
modified (DateTimeField) – Modified
value (JSONField) – Value. Example value for an interface
extra_info (TextField) – Extra info. Extra information about the example value
Relationship fields:
- Parameters:
interface (
OneToOneFieldtoComponentInterface) – Interface (related name:example_value)
- 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.
- class grandchallenge.components.models.ComponentInterfaceValue(*args, **kwargs)[source]¶
Encapsulates the value of an interface at a certain point in the graph.
- Parameters:
id (BigAutoField) – Primary key: Id
value (JSONField) – Value
file (FileField) – File
size_in_storage (PositiveBigIntegerField) – Size in storage. The number of bytes stored in the storage backend
Relationship fields:
- Parameters:
interface (
ForeignKeytoComponentInterface) – Interface (related name:componentinterfacevalue)image (
ForeignKeytoImage) – Image (related name:componentinterfacevalue)
Reverse relationships:
- Parameters:
evaluation_evaluations_as_input (Reverse
ManyToManyFieldfromEvaluation) – All evaluation evaluations as input of this component interface value (related name ofinputs)evaluation_evaluations_as_output (Reverse
ManyToManyFieldfromEvaluation) – All evaluation evaluations as output of this component interface value (related name ofoutputs)algorithms_jobs_as_input (Reverse
ManyToManyFieldfromJob) – All algorithms jobs as input of this component interface value (related name ofinputs)algorithms_jobs_as_output (Reverse
ManyToManyFieldfromJob) – All algorithms jobs as output of this component interface value (related name ofoutputs)archive_items (Reverse
ManyToManyFieldfromArchiveItem) – All archive items of this component interface value (related name ofvalues)display_sets (Reverse
ManyToManyFieldfromDisplaySet) – All display sets of this component interface value (related name ofvalues)download (Reverse
ForeignKeyfromDownload) – All downloads of this component interface value (related name ofcomponent_interface_value)
- 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¶
- save(*args, **kwargs)[source]¶
Save the current instance. Override this in a subclass if you want to control the saving process.
The ‘force_insert’ and ‘force_update’ parameters can be used to insist that the “save” must be an SQL insert or update (or equivalent for non-SQL backends), respectively. Normally, they should not be set.
- class grandchallenge.components.models.ComponentJob(*args, **kwargs)[source]¶
- Parameters:
id (UUIDField) – Primary key: Id
created (DateTimeField) – Created
modified (DateTimeField) – Modified
status (PositiveSmallIntegerField) – Status
attempt (PositiveSmallIntegerField) – Attempt
stdout (TextField) – Stdout
stderr (TextField) – Stderr
exec_duration (DurationField) – Exec duration. The duration of the execution, if measured. Excludes data validation, container pulling, model downloading, data downloading and data uploading times. Includes model loading time, input data loading time, processing time, output data writing time and any delays from shared hardware issues.
invoke_duration (DurationField) – Invoke duration. The duration of the invocation, if measured. Excludes data validation, container pulling, model downloading, data downloading and data uploading times. Potentially excludes model loading time, depending on the users implementation. Includes input data loading time, processing time, output data writing time and any delays from shared hardware issues.
runtime_metrics (JSONField) – Runtime metrics
error_message (CharField) – Error message
detailed_error_message (JSONField) – Detailed error message
input_prefixes (JSONField) – Input prefixes. Map of the ComponentInterfaceValue id to the path prefix to use for this input, e.g. {‘1’: ‘foo/bar/’} will place CIV 1 at /input/foo/bar/<relative_path>
signing_key (BinaryField) – Signing key. The key used to sign the inference result file
task_on_success (JSONField) – Task on success. Serialized task that is run on job success
task_on_failure (JSONField) – Task on failure. Serialized task that is run on job failure
time_limit (PositiveIntegerField) – Time limit. Time limit for the job in seconds
requires_gpu_type (CharField) – Requires gpu type. What GPU is required by this job?
requires_memory_gb (PositiveSmallIntegerField) – Requires memory gb. How much main memory (DRAM) is required by this job?
use_warm_pool (BooleanField) – Use warm pool. Whether to use warm pools
Relationship fields:
- Parameters:
inputs (
ManyToManyFieldtoComponentInterfaceValue) – Inputsoutputs (
ManyToManyFieldtoComponentInterfaceValue) – Outputs
- property container: ComponentImage¶
Returns the container object associated with this instance, which should be a foreign key to an object that is a subclass of ComponentImage
- save(*args, **kwargs)[source]¶
Save the current instance. Override this in a subclass if you want to control the saving process.
The ‘force_insert’ and ‘force_update’ parameters can be used to insist that the “save” must be an SQL insert or update (or equivalent for non-SQL backends), respectively. Normally, they should not be set.
- class grandchallenge.components.models.ComponentJobManager(model=None, query=None, using=None, hints=None)[source]¶
- class grandchallenge.components.models.InterfaceKinds(value)[source]¶
Interface kind sets.
Interface kinds that are images: - Segmentation - Heat Map - Image - Displacement field - DICOM Image Set Interface kinds that are files: - BIOM format - Newick tree-format file - OBJ file - PDF file - Thumbnail png - MP4 file - SQREG file - ZIP file - Thumbnail jpg - CSV file Interface kinds that are json serializable: - Point - Angle - Multiple points - Multiple polygons - Chart - String - Polygon - Float - Ellipse - Bool - Multiple ellipses - Multiple lines - Anything - Distance measurement - Multiple three-point angles - Integer - Multiple choice - 2D bounding box - Three-point angle - Choice - Multiple distance measurements - Multiple 2D bounding boxes - Affine transform registration - Multiple angles - Line Example JSON file contents for String: "Example String" Example JSON file contents for Integer: 42 Example JSON file contents for Float: 42.0 Example JSON file contents for Bool: true Example JSON file contents for Anything: { "key": "value", "None": null } Example JSON file contents for Chart (For more examples, see https://vega.github.io/vega-lite/examples/): { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "width": 300, "height": 300, "data": { "values": [ { "target": "Negative", "prediction": "Negative", "value": 198 }, { "target": "Negative", "prediction": "Positive", "value": 9 }, { "target": "Positive", "prediction": "Negative", "value": 159 }, { "target": "Positive", "prediction": "Positive", "value": 376 } ], "format": { "type": "json" } }, "layer": [ { "mark": "rect", "encoding": { "y": { "field": "target", "type": "ordinal" }, "x": { "field": "prediction", "type": "ordinal" }, "color": { "field": "value", "type": "quantitative", "title": "Count of Records", "legend": { "direction": "vertical", "gradientLength": 300 } } } }, { "mark": "text", "encoding": { "y": { "field": "target", "type": "ordinal" }, "x": { "field": "prediction", "type": "ordinal" }, "text": { "field": "value", "type": "quantitative" }, "color": { "condition": { "test": "datum['value'] < 40", "value": "black" }, "value": "white" } } } ], "config": { "axis": { "grid": true, "tickBand": "extent" } } } Example JSON file contents for 2D bounding box (Optional fields: "name" and "probability"): { "name": "Region of interest", "type": "2D bounding box", "corners": [ [ 130.8, 148.8, 0.5 ], [ 69.7, 148.8, 0.5 ], [ 69.7, 73.1, 0.5 ], [ 130.8, 73.1, 0.5 ] ], "probability": 0.95, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple 2D bounding boxes (Optional fields: "name" and "probability"): { "name": "Regions of interest", "type": "Multiple 2D bounding boxes", "boxes": [ { "name": "ROI 1", "corners": [ [ 92.6, 136.0, 0.5 ], [ 54.8, 136.0, 0.5 ], [ 54.8, 95.5, 0.5 ], [ 92.6, 95.5, 0.5 ] ], "probability": 0.95 }, { "name": "ROI 2", "corners": [ [ 92.6, 136.0, 0.5 ], [ 54.8, 136.0, 0.5 ], [ 54.8, 95.5, 0.5 ], [ 92.6, 95.5, 0.5 ] ], "probability": 0.92 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Distance measurement (Optional fields: "name" and "probability"): { "name": "Distance between areas", "type": "Distance measurement", "start": [ 59.8, 78.8, 0.5 ], "end": [ 69.4, 143.8, 0.5 ], "probability": 0.92, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple distance measurements (Optional fields: "name" and "probability"): { "name": "Distances between areas", "type": "Multiple distance measurements", "lines": [ { "name": "Distance 1", "start": [ 49.7, 103.3, 0.5 ], "end": [ 55.1, 139.3, 0.5 ], "probability": 0.92 }, { "name": "Distance 2", "start": [ 49.7, 103.3, 0.5 ], "end": [ 55.1, 139.3, 0.5 ], "probability": 0.92 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Point (Optional fields: "name" and "probability"): { "name": "Point of interest", "type": "Point", "point": [ 152.1, 111.0, 0.5 ], "probability": 0.92, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple points (Optional fields: "name" and "probability"): { "name": "Points of interest", "type": "Multiple points", "points": [ { "name": "Point 1", "point": [ 96.0, 79.8, 0.5 ], "probability": 0.92 }, { "name": "Point 2", "point": [ 130.1, 115.5, 0.5 ], "probability": 0.92 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Polygon (Optional fields: "name" and "probability"): { "name": "Area of interest", "type": "Polygon", "seed_point": [ 76.4, 124.0, 0.5 ], "path_points": [ [ 76.41, 124.01, 0.5 ], [ 76.41, 124.05, 0.5 ], [ 76.42, 124.08, 0.5 ] ], "sub_type": "brush", "groups": [], "probability": 0.92, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple polygons (Optional fields: "name" and "probability"): { "name": "Areas of interest", "type": "Multiple polygons", "polygons": [ { "name": "Area 1", "seed_point": [ 55.82, 90.46, 0.5 ], "path_points": [ [ 55.82, 90.46, 0.5 ], [ 55.93, 90.88, 0.5 ], [ 56.24, 91.19, 0.5 ], [ 56.66, 91.3, 0.5 ] ], "sub_type": "brush", "groups": [ "manual" ], "probability": 0.67 }, { "name": "Area 2", "seed_point": [ 90.22, 96.06, 0.5 ], "path_points": [ [ 90.22, 96.06, 0.5 ], [ 90.33, 96.48, 0.5 ], [ 90.64, 96.79, 0.5 ] ], "sub_type": "brush", "groups": [], "probability": 0.92 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Line (Optional fields: "name" and "probability"): { "name": "Some annotation", "type": "Line", "seed_points": [ [ 1, 2, 3 ], [ 1, 2, 3 ] ], "path_point_lists": [ [ [ 5, 6, 7 ], [ 8, 9, 10 ], [ 1, 0, 10 ], [ 2, 4, 2 ] ], [ [ 5, 6, 7 ], [ 8, 9, 10 ], [ 1, 0, 10 ], [ 2, 4, 2 ] ] ], "probability": 0.92, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple lines (Optional fields: "name" and "probability"): { "name": "Some annotations", "type": "Multiple lines", "lines": [ { "name": "Annotation 1", "seed_points": [ [ 1, 2, 3 ], [ 1, 2, 3 ] ], "path_point_lists": [ [ [ 5, 6, 7 ], [ 8, 9, 10 ], [ 1, 0, 10 ], [ 2, 4, 2 ] ], [ [ 5, 6, 7 ], [ 8, 9, 10 ], [ 1, 0, 10 ], [ 2, 4, 2 ] ] ], "probability": 0.78 }, { "name": "Annotation 2", "seed_points": [ [ 1, 2, 3 ], [ 1, 2, 3 ] ], "path_point_lists": [ [ [ 5, 6, 7 ], [ 8, 9, 10 ], [ 1, 0, 10 ], [ 2, 4, 2 ] ], [ [ 5, 6, 7 ], [ 8, 9, 10 ], [ 1, 0, 10 ], [ 2, 4, 2 ] ] ], "probability": 0.92 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Angle (Optional fields: "name" and "probability"): { "name": "Some angle", "type": "Angle", "lines": [ [ [ 180, 10, 0.5 ], [ 190, 10, 0.5 ] ], [ [ 180, 25, 0.5 ], [ 190, 15, 0.5 ] ] ], "probability": 0.92, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple angles (Optional fields: "name" and "probability"): { "name": "Some angles", "type": "Multiple angles", "angles": [ { "name": "First angle", "lines": [ [ [ 110, 135, 0.5 ], [ 60, 165, 0.5 ] ], [ [ 70, 25, 0.5 ], [ 85, 65, 0.5 ] ] ], "probability": 0.82 }, { "name": "Second angle", "lines": [ [ [ 130, 210, 0.5 ], [ 160, 130, 0.5 ] ], [ [ 140, 40, 0.5 ], [ 180, 75, 0.5 ] ] ], "probability": 0.52 }, { "name": "Third angle", "lines": [ [ [ 20, 30, 0.5 ], [ 20, 100, 0.5 ] ], [ [ 180, 200, 0.5 ], [ 210, 200, 0.5 ] ] ], "probability": 0.98 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Ellipse (Optional fields: "name" and "probability"): { "name": "Some ellipse", "type": "Ellipse", "major_axis": [ [ -10, 606, 0.5 ], [ 39, 559, 0.5 ] ], "minor_axis": [ [ 2, 570, 0.5 ], [ 26, 595, 0.5 ] ], "probability": 0.92, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple ellipses (Optional fields: "name" and "probability"): { "name": "Some ellipse", "type": "Multiple ellipses", "ellipses": [ { "major_axis": [ [ -44, 535, 0.5 ], [ -112, 494, 0.5 ] ], "minor_axis": [ [ -88, 532, 0.5 ], [ -68, 497, 0.5 ] ], "probability": 0.69 }, { "major_axis": [ [ -17, 459, 0.5 ], [ -94, 436, 0.5 ] ], "minor_axis": [ [ -61, 467, 0.5 ], [ -50, 428, 0.5 ] ], "probability": 0.92 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Three-point angle (Optional fields: "name" and "probability"): { "name": "Some 3-point angle", "type": "Three-point angle", "angle": [ [ 177, 493, 0.5 ], [ 22, 489, 0.5 ], [ 112, 353, 0.5 ] ], "probability": 0.003, "version": { "major": 1, "minor": 0 } } Example JSON file contents for Multiple three-point angles (Optional fields: "name" and "probability"): { "name": "Multiple 3-point angles", "type": "Multiple three-point angles", "angles": [ { "name": "first", "angle": [ [ 300, 237, 0.5 ], [ 263, 282, 0.5 ], [ 334, 281, 0.5 ] ], "probability": 0.92 }, { "name": "second", "angle": [ [ 413, 237, 0.5 ], [ 35, 160, 0.5 ], [ 367, 293, 0.5 ] ], "probability": 0.69 } ], "version": { "major": 1, "minor": 0 } } Example JSON file contents for Affine transform registration: { "3d_affine_transform": [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ] } Example JSON file contents for Choice: "Choice 1" Example JSON file contents for Multiple choice: [ "Choice 1", "Choice 2" ]
- class grandchallenge.components.models.OverlaySegmentsMixin(*args, **kwargs)[source]¶
- Parameters:
overlay_segments (JSONField) – Overlay segments. The schema that defines how categories of values in the overlay images are differentiated. Example usage: [{“name”: “background”, “visible”: true, “voxel_value”: 0},{“name”: “tissue”, “visible”: true, “voxel_value”: 1}]. If a categorical overlay is shown, it is possible to show toggles to change the visibility of the different overlay categories. To do so, configure the categories that should be displayed. For example: [{“name”: “Level 0”, “visible”: false, “voxel_value”: 0].
Relationship fields:
- Parameters:
look_up_table (
ForeignKeytoLookUpTable) – Look up table. The look-up table that is applied when an overlay image is first shown
- class grandchallenge.components.models.Tarball(*args, **kwargs)[source]¶
- Parameters:
id (UUIDField) – Primary key: Id
created (DateTimeField) – Created
modified (DateTimeField) – Modified
import_status (PositiveSmallIntegerField) – Import status
status (TextField) – Status
sha256 (CharField) – Sha256
size_in_storage (PositiveBigIntegerField) – Size in storage. The number of bytes stored in the storage backend
comment (TextField) – Comment. Add any information (e.g. version ID) about this object here.
is_desired_version (BooleanField) – Is desired version
Relationship fields:
- Parameters:
creator (
ForeignKeytoUser) – Creatoruser_upload (
ForeignKeytoUserUpload) – User upload
- class ImportStatusChoices(value)¶
- save(*args, **kwargs)[source]¶
Save the current instance. Override this in a subclass if you want to control the saving process.
The ‘force_insert’ and ‘force_update’ parameters can be used to insist that the “save” must be an SQL insert or update (or equivalent for non-SQL backends), respectively. Normally, they should not be set.