Skip to content

Support machine-readable output and input. #141

Description

@alexzwanenburg

Currently input is either xml or using function arguments. Feature values are provided as a csv file or pandas DataFrame. However, the current output does not completely describe the input parameters used to process the data. For example, voxel spacing is provided as output, but not the algorithm and parameters used to resample the image.

Ideally, output should be constructed in a way that fully specifies the image processing and feature computation, in a machine-readable format. Moreover MIRP should be able to read this output and repeat the analysis.

What is already there

  • Image processing details are stored with image objects. This includes masks.
  • Feature processing details are stored with features. These are then later parsed into feature names for export.
  • Features and filtered images have associated IBSI identifiers.

What needs to be done

  • Each image should keep a ledger that copies the image processing settings as they are applied. This approach has the following advantages:
    • Image processing steps that do not apply are not listed. This prevents having to implement logic and checks in multiple places.
    • We can copy the names of settings attributes directly, which makes makes using the output as input easier.
    • We don't need to store image process settings in attributes, which are a bit more finicky to extend as new things are implemented.
  • Output needs to structured. An output file should be created per output image and mask. Currently I think each output should list the following main categories:
    • image-data, which references the input image data (i.e. filenames, file location, modality etc.)
    • mask-data, which references the input mask data (i.e. filenames, file location, modality etc.)
    • image-processing, containing details from the image processing ledger of the image.
    • mask-processing, containing details from the image processing ledger of the mask.
    • features, containing a list of features, which is again structured to contain not only the feature value but also feature extraction parameters.
    • version: to track the version of MIRP (and thus of the exported output).
  • Output should be exported to a file with image-name + mask-name + an UID. The user should be allowed to determine the format, e.g. JSON, TOML, XML, or YAML.
  • MIRP needs to support using an output file as input.
  • MIRP needs to support a feature engine (so that only specific features are computed). The rudiments are currently there, because MIRP already generates feature objects and then determines which ones should actually be computed (this used to prevent computing features that are not IBSI-compliant, for example). This will also help Specific function for getting dose-volume histogram features #107

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestlongtermThis won't be worked on immediately.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions