radxtools / collageradiomics

Python Implementation of the CoLlAGe radiomics descriptor. CoLlAGe captures subtle anisotropic differences in disease pathologies by measuring entropy of co-occurrences of voxel-level gradient orientations on imaging computed within a local neighborhood.
BSD 3-Clause "New" or "Revised" License
15 stars 11 forks source link

Add experimental batch processing command line interface for collageradiomics #94

Closed JoaoSantinha closed 3 years ago

JoaoSantinha commented 3 years ago

This pull request adds an experimental command line interface version of collageradiomics for batch processing. This tries to extend the cli with an option for extended stats (mean and IQR), as well as the selection for specific labels (e.g., mask contains 3 labels but we just want to analyse one of those).

The output is saved on a csv were the rows are the cases and the columns contained the case_id, image file path, mask file path, options used (for reference of options utilised) and the collage radiomics features.

Hope you find this useful and I am here to contribute and solve any issues this code may have

JoaoSantinha commented 3 years ago

Forgot to mention that the input file is expected to be a csv with 3 columns with header as follows:

ID,Image,Mask
<case_id_01>,<image_filepath_01>,<mask_filepath_01>
...
<case_id_n>,<image_filepath_n>,<mask_filepath_n>
JoaoSantinha commented 3 years ago

@nathanhillyer @robtoth @satishev
An additional change so that the error file name matches the output file name prefixed by "errors_"

nathanhillyer commented 3 years ago

@JoaoSantinha Thanks for this! Taking a look now.

nathanhillyer commented 3 years ago

@JoaoSantinha These additions look good overall, and I like adding extra extended statistics. We'd prefer to have this option integrated with our existing cli, as opposed to making another separate module. Could you please port the changes to https://github.com/radxtools/collageradiomics/blob/master/cli/collageradiomicscli.py while also maintaining backwards compatibility with the existing interface?

I would suggest checking to see if the -i parameter is a CSV or an image. If it's an image, it should process an individual image, and if it is a CSV file, it should do the batch processing.

JoaoSantinha commented 3 years ago

@nathanhillyer thanks for the feedback!

I agree with your suggestions and with having a unique cli integrating both approaches.

I will try to do these this weekend and open a new PR for this additional features of the cli.

nathanhillyer commented 3 years ago

@JoaoSantinha Great, looking forward to it!

JoaoSantinha commented 3 years ago

@nathanhillyer I am getting my hands on this (sorry it took some time to have some buffer for this)

Currently if more than one label is included in the mask it will consider all the different labels as a single label. In this pull request I included an option to select the value of the label to be included or use all of these labels as unique segmentation by setting the label value to -1. Do you want something like this?

I can put the default value to -1, so that the default works as previously by I think it would be nice to have the option to select specific labels.

nathan-foreflight commented 3 years ago

@JoaoSantinha Sure, that sounds reasonable.