Skip to content

Commit

Permalink
Initial updates
Browse files Browse the repository at this point in the history
  • Loading branch information
rudolphpienaar committed Mar 31, 2024
1 parent 276353d commit ab2cce1
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 97 deletions.
70 changes: 0 additions & 70 deletions app.py

This file was deleted.

25 changes: 25 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,26 @@
chris_plugin==0.4.0

matplotlib
monai-weekly
gdown
nibabel
tqdm
ignite

torch
pytorch-ignite
itk
scikit-image
scipy
pillow
tensorboard
torchvision
psutil
pandas
lmdb
einops
transformers
mlflow
pynrrd
clearml

91 changes: 64 additions & 27 deletions spleenseg_train.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,68 @@
from pathlib import Path
from argparse import ArgumentParser, Namespace, ArgumentDefaultsHelpFormatter

import os
from monai.utils import first, set_determinism
from monai.transforms import (
AsDiscrete,
AsDiscreted,
EnsureChannelFirstd,
Compose,
CropForegroundd,
LoadImaged,
Orientationd,
RandCropByPosNegLabeld,
SaveImaged,
ScaleIntensityRanged,
Spacingd,
Invertd,
)
from monai.handlers.utils import from_engine
from monai.networks.nets import UNet
from monai.networks.layers import Norm
from monai.metrics import DiceMetric
from monai.losses import DiceLoss
from monai.inferers import sliding_window_inference
from monai.data import CacheDataset, DataLoader, Dataset, decollate_batch
from monai.config import print_config
from monai.apps import download_and_extract
import torch
import matplotlib.pyplot as plt
import tempfile
import shutil
import glob
import pudb

from chris_plugin import chris_plugin, PathMapper

__version__ = '1.0.0'
__version__ = "1.0.0"

DISPLAY_TITLE = r"""
_ _ _ _ _
| | (_) | | | | (_)
_ __ | |______ _ __ ___ ___ _ __ __ _ _ ___ _ __ | | ___ ___ _ __ ___ ___ __ _ | |_ _ __ __ _ _ _ __
| '_ \| |______| '_ ` _ \ / _ \| '_ \ / _` | | / __| '_ \| |/ _ \/ _ \ '_ \/ __|/ _ \/ _` | | __| '__/ _` | | '_ \
_ _ _ _ _
| | (_) | | | | (_)
_ __ | |______ _ __ ___ ___ _ __ __ _ _ ___ _ __ | | ___ ___ _ __ ___ ___ __ _ | |_ _ __ __ _ _ _ __
| '_ \| |______| '_ ` _ \ / _ \| '_ \ / _` | | / __| '_ \| |/ _ \/ _ \ '_ \/ __|/ _ \/ _` | | __| '__/ _` | | '_ \
| |_) | | | | | | | | (_) | | | | (_| | | \__ \ |_) | | __/ __/ | | \__ \ __/ (_| | | |_| | | (_| | | | | |
| .__/|_| |_| |_| |_|\___/|_| |_|\__,_|_| |___/ .__/|_|\___|\___|_| |_|___/\___|\__, | \__|_| \__,_|_|_| |_|
| | ______ | | __/ |_____
|_| |______| |_| |___/______|
| | ______ | | __/ |_____
|_| |______| |_| |___/______|
"""


parser = ArgumentParser(description='!!!CHANGE ME!!! An example ChRIS plugin which '
'counts the number of occurrences of a given '
'word in text files.',
formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument('-w', '--word', required=True, type=str,
help='word to count')
parser.add_argument('-p', '--pattern', default='**/*.txt', type=str,
help='input file filter glob')
parser.add_argument('-V', '--version', action='version',
version=f'%(prog)s {__version__}')
parser = ArgumentParser(
description="""
A ChRIS DS plugin based on Project MONAI 3D Spleen Segmentation.
This plugin performs the training component, with some gentle
refactoring and pervasive type hinting.
""",
formatter_class=ArgumentDefaultsHelpFormatter,
)
parser.add_argument(
"-p", "--pattern", default="**/*nii.gz", type=str, help="input file filter glob"
)
parser.add_argument(
"-V", "--version", action="version", version=f"%(prog)s {__version__}"
)


# The main function of this *ChRIS* plugin is denoted by this ``@chris_plugin`` "decorator."
Expand All @@ -37,11 +73,11 @@
# documentation: https://fnndsc.github.io/chris_plugin/chris_plugin.html#chris_plugin
@chris_plugin(
parser=parser,
title='Spleen 3D image segmentation training (MONAI)',
category='', # ref. https://chrisstore.co/plugins
min_memory_limit='100Mi', # supported units: Mi, Gi
min_cpu_limit='1000m', # millicores, e.g. "1000m" = 1 CPU core
min_gpu_limit=0 # set min_gpu_limit=1 to enable GPU
title="Spleen 3D image segmentation training (MONAI)",
category="", # ref. https://chrisstore.co/plugins
min_memory_limit="100Mi", # supported units: Mi, Gi
min_cpu_limit="1000m", # millicores, e.g. "1000m" = 1 CPU core
min_gpu_limit=0, # set min_gpu_limit=1 to enable GPU
)
def main(options: Namespace, inputdir: Path, outputdir: Path):
"""
Expand All @@ -55,6 +91,7 @@ def main(options: Namespace, inputdir: Path, outputdir: Path):
"""

print(DISPLAY_TITLE)
print_config()

# Typically it's easier to think of programs as operating on individual files
# rather than directories. The helper functions provided by a ``PathMapper``
Expand All @@ -63,15 +100,15 @@ def main(options: Namespace, inputdir: Path, outputdir: Path):
#
# Refer to the documentation for more options, examples, and advanced uses e.g.
# adding a progress bar and parallelism.
mapper = PathMapper.file_mapper(inputdir, outputdir, glob=options.pattern, suffix='.count.txt')
mapper = PathMapper.file_mapper(
inputdir, outputdir, glob=options.pattern, suffix=".count.txt"
)
for input_file, output_file in mapper:
# The code block below is a small and easy example of how to use a ``PathMapper``.
# It is recommended that you put your functionality in a helper function, so that
# it is more legible and can be unit tested.
data = input_file.read_text()
frequency = data.count(options.word)
output_file.write_text(str(frequency))
break


if __name__ == '__main__':
if __name__ == "__main__":
main()

0 comments on commit ab2cce1

Please sign in to comment.