Metadata-Version: 2.1
Name: boa-contrast
Version: 0.1.1
Summary: 
Home-page: https://github.com/UMEssen/BOA-Contrast
License: MIT
Keywords: python,contrast,intravenous,git,CT,machine learning
Author: Giulia Baldini
Author-email: Giulia.Baldini@uk-essen.de
Requires-Python: >=3.8,<3.11
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Provides-Extra: totalsegmentator
Requires-Dist: connected-components-3d (>=3.10.2,<4.0.0)
Requires-Dist: opencv-python (>=4.5.5.64,<5.0.0.0)
Requires-Dist: pandas (>=1.5.2,<2.0.0)
Requires-Dist: scikit-image (>=0.19.3,<0.20.0)
Requires-Dist: scikit-learn (>=1.1.2,<2.0.0)
Requires-Dist: simpleitk (>=2.2.0,<3.0.0)
Requires-Dist: totalsegmentator (==1.5.5) ; extra == "totalsegmentator"
Project-URL: Repository, https://github.com/UMEssen/BOA-Contrast
Description-Content-Type: text/markdown

 # BOA::Contrast

Package to compute contrast information from a CT image, part of the [BOA](https://github.com/UMEssen/Body-and-Organ-Analyzer). The package uses the open-source software [TotalSegmentator](https://github.com/wasserth/TotalSegmentator) to compute segmentations of important anatomical landmarks, which are then used to create features for a machine learning model to predict the contrast information.

## Install

```bash
pip install boa-contrast
```

will install only the basic package (without the TotalSegmentator), if you also want to install the TotalSegmentator you can

```bash
pip install "boa-contrast[totalsegmentator]"
```

However, the TotalSegmentator can also be used together with docker, and in such case it is not needed to install it.

## Command Line
```
constrast-recognition --help
```
Once a CT and a folder where to store the TotalSegmentator segmentations is given, you can run it using the following command
```
contrast-recognition [-h] --ct-path CT_PATH --segmentation-folder SEGMENTATION_FOLDER [--docker] [--user-id USER_ID] [--device-id DEVICE_ID] [-v]
```

You can run it using docker by using the `--docker` flag. If you are using docker, you need to specify your user ID using the `--user-id` flag, otherwise you will have to change the ownership of the segmentations afterwards.

If you are using a GPU, you can specify the device ID using the `--device-id` flag.

You can enable verbosity with the `-v` flag.

To not download the TotalSegmentator weights all the time, you can specify their location using the `TOTALSEG_WEIGHTS_PATH` environment variable.

A sample output looks as follows:
```
IV Phase: NON_CONTRAST
Contrast in GIT: NO_CONTRAST_IN_GI_TRACT
```

## From Python
Compute the segmentation with the TotalSegmentator with docker

```python
from boa_contrast import compute_segmentation

compute_segmentation(
    ct_path=...,  # The path to the CT
    segmentation_folder=...,  # The root where the segmentation should be stored
    device_id=...,  # The ID of the GPU device or -1
    user_id=...,  # Your user ID for docker to run in user mode
    compute_with_docker=False,  # Whether to use docker or not
)
```

Once the segmentation is computed

```python
from boa_contrast import predict

predict(
    ct_path=...,  # path to the CT
    segmentation_folder=...,  # path to this CT's segmentation
)
```

Output:
```
{
    "phase_ensemble_prediction": 0,
    "phase_ensemble_predicted_class": "NON_CONTRAST",
    "phase_ensemble_probas": array(
        [
            9.89733540e-01,
            3.60637282e-04,
            4.79974664e-04,
            5.55973168e-04,
            8.86987492e-03,
        ]
    ),
    "git_ensemble_prediction": 0,
    "git_ensemble_predicted_class": "NO_CONTRAST_IN_GI_TRACT",
    "git_ensemble_probas": array(
        [
            9.99951577e-01,
            4.84187825e-05,
        ]
    ),
}
```

