diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml new file mode 100644 index 0000000..ab545ad --- /dev/null +++ b/.github/workflows/python-app.yml @@ -0,0 +1,33 @@ +# This workflow will install Python dependencies, lint with a single version of Python +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +# pylint: disable= + +name: Python application + +on: + push: + branches: [ main,mammo,optho ] + pull_request: + branches: [ main,mammo,optho ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install toml==0.10.2 yapf==0.31.0 isort==5.9.3 pylint==2.11.0 + - name: Lint with pylint, format with yapf and isort + run: | + pylint * --verbose -r y + isort . --check-only --diff + yapf --recursive --verbose --in-place . diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6e4761 --- /dev/null +++ b/.gitignore @@ -0,0 +1,129 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/LICENSE b/LICENSE index 8708637..37253a7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Rajpurkar Lab / Harvard Medical AI +Copyright (c) 2021 Alex Tamkin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/conf/dataset/HAM10000.yaml b/conf/dataset/ham10000.yaml similarity index 84% rename from conf/dataset/HAM10000.yaml rename to conf/dataset/ham10000.yaml index cbeaf06..e930b17 100644 --- a/conf/dataset/HAM10000.yaml +++ b/conf/dataset/ham10000.yaml @@ -2,6 +2,6 @@ loss: cross_entropy metric: auroc -name: HAM10000 +name: ham10000 batch_size: 64 num_workers: 8 diff --git a/derm-tutorial.ipynb b/derm-tutorial.ipynb new file mode 100644 index 0000000..c535d78 --- /dev/null +++ b/derm-tutorial.ipynb @@ -0,0 +1,1192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# BenchMD Tutorial: Dermascopic Images\n", + "\n", + "In this tutorial, we will demonstrate the full training pipeline for generating results on the dermascopic images modality, including how to manipulate the associated config files, generate statistics on datasets, and train+test a model." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ubuntu/.conda/envs/dabs2/lib/python3.8/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "import argparse\n", + "import yaml\n", + "from torchvision import transforms\n", + "\n", + "import torchvision.transforms as T\n", + "from PIL import Image\n", + "import torch\n", + "from torch.utils.data import DataLoader\n", + "from tqdm import tqdm\n", + "\n", + "from src.datasets.catalog import DATASET_DICT\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The default config files for training are under the ``/conf`` directory, including the training config files ``./conf/pretrain.yaml`` and ``./conf/transfer.py``, as well as config files for each dataset. Below, we demonstrate the structure of the config files, and how to load a particular dermascopic dataset, ISIC 2019." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'algorithm': 'emix', 'shed_frac': 0.85, 'data_root': '/home/ubuntu/2022-spr-benchmarking/src/datasets/', 'gpus': 0, 'exp': {'base_dir': '/home/ubuntu/res/', 'name': '???'}, 'trainer': {'weights_summary': 'top', 'seed': 0, 'val_check_interval': 1.0, 'limit_val_batches': 1.0, 'resume_from_checkpoint': None, 'precision': 16, 'max_steps': 100000, 'gradient_clip_val': 0, 'shed_frac': 0.85}, 'optim': {'name': 'adam', 'lr': 0.0001, 'weight_decay': 0.0001, 'momentum': 0.9}, 'defaults': [{'dataset': 'mimic-cxr'}, {'model': 'transformer'}]}\n", + "Building index...\n", + "Done\n", + "Building index...\n", + "Done\n" + ] + } + ], + "source": [ + "with open('./conf/pretrain.yaml') as f:\n", + " config= yaml.safe_load(f)\n", + "print(config)\n", + "\n", + "dataset = \"isic2019\"\n", + "\n", + "train_ds_kwargs = {\"base_root\": config[\"data_root\"], \"download\": True, \"train\": True}\n", + "val_ds_kwargs = {\"base_root\": config[\"data_root\"], \"download\": True, \"train\": False}\n", + "\n", + "dataset = DATASET_DICT[dataset]\n", + "train_dataset = dataset(**train_ds_kwargs)\n", + "val_dataset = dataset(**val_ds_kwargs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we generate summary statistics on the dataset, including the mean and standard deviation of the training (which can be used to standardize datasets) and distribution of modality labels for ISIC 2019. Note, however, that we already standardize and pad the dataset elsewhere in this repo, so this code serves mostly as a reference for transforming your new datasets. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 1%|▏ | 180/20265 [00:01<03:23, 98.66it/s]\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[3], line 24\u001b[0m\n\u001b[1;32m 22\u001b[0m count \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ind, images, label \u001b[38;5;129;01min\u001b[39;00m tqdm(train_loader):\n\u001b[0;32m---> 24\u001b[0m psum \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[43mimages\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msum\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 25\u001b[0m psum_sq \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m (images\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m)\u001b[38;5;241m.\u001b[39msum(axis\u001b[38;5;241m=\u001b[39m[\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m])\n\u001b[1;32m 26\u001b[0m count \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m images\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m*\u001b[39m images\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m*\u001b[39m images\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m3\u001b[39m]\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "train_loader = DataLoader(\n", + " train_dataset,\n", + " batch_size=1,\n", + " num_workers=8,\n", + " shuffle=False,\n", + " drop_last=False,\n", + " pin_memory=True,\n", + ")\n", + "val_loader = DataLoader(\n", + " val_dataset,\n", + " batch_size=1,\n", + " num_workers=8,\n", + " shuffle=False,\n", + " drop_last=False,\n", + " pin_memory=True,\n", + ")\n", + "\n", + "psum = torch.tensor([0.0, 0.0, 0.0])\n", + "psum_sq = torch.tensor([0.0, 0.0, 0.0])\n", + "train_labels = []\n", + "val_labels = []\n", + "count = 0\n", + "for ind, images, label in tqdm(train_loader):\n", + " psum += images.sum(axis=[0, 2, 3])\n", + " psum_sq += (images**2).sum(axis=[0, 2, 3])\n", + " count += images.shape[0] * images.shape[2] * images.shape[3]\n", + " train_labels.append(label.item())\n", + "\n", + "for ind, images, label in tqdm(val_loader):\n", + " val_labels.append(label.item())\n", + "\n", + "# mean and std\n", + "total_mean = psum / count\n", + "total_var = (psum_sq / count) - (total_mean**2)\n", + "total_std = torch.sqrt(total_var)\n", + "\n", + "# output\n", + "print(f'train mean: {total_mean}')\n", + "print(f'train std: {total_std}')\n", + "train_label_freq = torch.histogram(torch.tensor(train_labels, dtype=torch.float32), bins=train_dataset.NUM_CLASSES).hist\n", + "train_label_dist = torch.histogram(\n", + " torch.tensor(train_labels, dtype=torch.float32), bins=train_dataset.NUM_CLASSES, density=True\n", + ").hist\n", + "train_label_dist = train_label_dist / train_label_dist.sum()\n", + "\n", + "val_label_freq = torch.histogram(torch.tensor(val_labels, dtype=torch.float32), bins=train_dataset.NUM_CLASSES).hist\n", + "val_label_dist = torch.histogram(\n", + " torch.tensor(val_labels, dtype=torch.float32), bins=train_dataset.NUM_CLASSES, density=True\n", + ").hist\n", + "val_label_dist = val_label_dist / val_label_dist.sum()\n", + "\n", + "print(f'train label frequencies ({train_dataset.NUM_CLASSES} classes): {train_label_freq}')\n", + "print(f'train label distribution ({train_dataset.NUM_CLASSES} classes): {train_label_dist}')\n", + "print(f'val label frequencies ({train_dataset.NUM_CLASSES} classes): {val_label_freq}')\n", + "print(f'val label distribution ({train_dataset.NUM_CLASSES} classes): {val_label_dist}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An example of a raw image from the training set." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Building index...\n", + "Done\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "transform = transforms.Resize(200)\n", + "train_dataset.build_index()\n", + "fname = train_dataset.fnames[0]\n", + "img = transform(Image.open(fname).convert('RGB'))\n", + "display(img)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To demonstrate the training pipeline, we will train our model for several epochs (2000 steps, when the first automatic checkpoint is saved). Below, we will export to environment variables the command line arguments for Hydra. Path variables should be modified to suit your system.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "env: source_ds=isic2019\n", + "env: pt_steps=2000\n", + "env: alg=emix\n", + "env: base_dir=/home/ubuntu/tutorial/\n", + "env: pt_exp_name=tutorial-derm-emix\n" + ] + } + ], + "source": [ + "# Dataset for pretraining. The source dataset for the dermascopic images modality is ISIC2019.\n", + "%env source_ds=isic2019\n", + "\n", + "# Max steps to run pretraining. Our script automatically checkpoints every 2000 steps, \n", + "# which is roughly 5 epochs of training on ISIC2019.\n", + "%env pt_steps=2000\n", + "\n", + "# Algorithm for pretraining. Choose from emix, shed, and mae.\n", + "%env alg=emix\n", + "\n", + "# Base directory for checkpointing. You should modify this to a suitable existing directory on your system!\n", + "%env base_dir=/home/ubuntu/tutorial/\n", + "\n", + "#Experiment name; also the sub-directory under the base directory where checkpoints will be stored.\n", + "%env pt_exp_name=tutorial-derm-emix" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pretrain.py:6: UserWarning: \n", + "The version_base parameter is not specified.\n", + "Please specify a compatability version level, or None.\n", + "Will assume defaults for version 1.1\n", + " @hydra.main(config_path='conf', config_name='pretrain')\n", + "/home/ubuntu/.conda/envs/dabs2/lib/python3.8/site-packages/hydra/_internal/defaults_list.py:251: UserWarning: In 'pretrain': Defaults list is missing `_self_`. See https://hydra.cc/docs/upgrades/1.0_to_1.1/default_composition_order for more information\n", + " warnings.warn(msg, UserWarning)\n", + "/home/ubuntu/.conda/envs/dabs2/lib/python3.8/site-packages/hydra/core/default_element.py:124: UserWarning: In 'model/transformer': Usage of deprecated keyword in package header '# @package _group_'.\n", + "See https://hydra.cc/docs/next/upgrades/1.0_to_1.1/changes_to_package_header for more information\n", + " deprecation_warning(\n", + "/home/ubuntu/.conda/envs/dabs2/lib/python3.8/site-packages/hydra/core/default_element.py:124: UserWarning: In 'dataset/isic2019': Usage of deprecated keyword in package header '# @package _group_'.\n", + "See https://hydra.cc/docs/next/upgrades/1.0_to_1.1/changes_to_package_header for more information\n", + " deprecation_warning(\n", + "/home/ubuntu/.conda/envs/dabs2/lib/python3.8/site-packages/hydra/_internal/hydra.py:119: UserWarning: Future Hydra versions will no longer change working directory at job runtime by default.\n", + "See https://hydra.cc/docs/next/upgrades/1.1_to_1.2/changes_to_job_working_dir/ for more information.\n", + " ret = run_job(\n", + "[2023-04-21 19:21:40,419][pytorch_lightning.utilities.seed][INFO] - Global seed set to 0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mkwantlin\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: wandb version 0.15.0 is available! To upgrade, please run:\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: $ pip install wandb --upgrade\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Tracking run with wandb version 0.13.4\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Run data is saved locally in \u001b[35m\u001b[1m/home/ubuntu/2022-spr-benchmarking/outputs/2023-04-21/19-21-36/wandb/run-20230421_192141-175syo7b\u001b[0m\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Run \u001b[1m`wandb offline`\u001b[0m to turn off syncing.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Syncing run \u001b[33mtutorial-derm-emix\u001b[0m\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: ⭐️ View project at \u001b[34m\u001b[4mhttps://wandb.ai/kwantlin/domain-agnostic\u001b[0m\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: 🚀 View run at \u001b[34m\u001b[4mhttps://wandb.ai/kwantlin/domain-agnostic/runs/175syo7b\u001b[0m\n", + "2d\n", + "[2023-04-21 19:21:44,464][pytorch_lightning.utilities.distributed][INFO] - GPU available: True, used: True\n", + "[2023-04-21 19:21:44,464][pytorch_lightning.utilities.distributed][INFO] - TPU available: False, using: 0 TPU cores\n", + "[2023-04-21 19:21:44,464][pytorch_lightning.trainer.connectors.accelerator_connector][INFO] - Using native 16bit precision.\n", + "Building index...\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "Done\n", + "Building index...\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "/home/ubuntu/2022-spr-benchmarking/src/datasets/derm/isic2019.py:110: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", + " index = index.append(g)\n", + "Done\n", + "20265 train examples, 5066 val examples\n", + "[2023-04-21 19:21:44,687][pytorch_lightning.accelerators.gpu][INFO] - LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1,2,3]\n", + "[2023-04-21 19:21:45,551][pytorch_lightning.core.lightning][INFO] - \n", + " | Name | Type | Params\n", + "----------------------------------------------------\n", + "0 | model | DomainAgnosticTransformer | 9.7 M \n", + "1 | ce | CrossEntropyLoss | 0 \n", + "----------------------------------------------------\n", + "9.7 M Trainable params\n", + "0 Non-trainable params\n", + "9.7 M Total params\n", + "38.971 Total estimated model params size (MB)\n", + "Validation sanity check: 0it [00:00, ?it/s]batch size 64\n", + "[2023-04-21 19:21:48,529][pytorch_lightning.utilities.seed][INFO] - Global seed set to 0\n", + "batch size 64\n", + "/home/ubuntu/.conda/envs/dabs2/lib/python3.8/site-packages/pytorch_lightning/utilities/distributed.py:69: RuntimeWarning: You are using `LearningRateMonitor` callback with models that have no learning rate schedulers. Please see documentation for `configure_optimizers` method.\n", + " warnings.warn(*args, **kwargs)\n", + "Epoch 0: 80%|▊| 316/396 [00:58<00:14, 5.43it/s, loss=2.36, v_num=yo7b, val_acc\n", + "Validating: 0it [00:00, ?it/s]\u001b[A\n", + "Validating: 0%| | 0/80 [00:00 scan.shape): # check if padding is necessary + maxsize = max(scan_halfcube_size) + scan = np.pad( + scan, (( + maxsize, + maxsize, + )), 'constant', constant_values=0 + ) + xyz = xyz + maxsize + + scancube = scan[xyz[0] - scan_halfcube_size[0]:xyz[0] + scan_halfcube_size[0], # extract cube from scan at xyz + xyz[1] - scan_halfcube_size[1]:xyz[1] + scan_halfcube_size[1], + xyz[2] - scan_halfcube_size[2]:xyz[2] + scan_halfcube_size[2]] + + sh = scancube.shape + + scancube = zoom(scancube, (cube_size / sh[0], cube_size / sh[1], cube_size / sh[2]), order=2) #resample for cube_size + + return scancube \ No newline at end of file diff --git a/src/datasets/ct/readNoduleList.py b/src/datasets/ct/readNoduleList.py new file mode 100644 index 0000000..78a1eae --- /dev/null +++ b/src/datasets/ct/readNoduleList.py @@ -0,0 +1,107 @@ +import math +import os + +import numpy as np + +from src.datasets.ct.lndb_utils import * + + +def nodEqDiam(vol): + # Calc nodule equivalent diameter from volume vol + return 2 * (vol * 3 / (4 * math.pi))**(1 / 3) + + +def joinNodules(nodules, verb=False): + # join nodules from different radiologists (if within radiusor 3mm from each other) + header = nodules[0] + lines = nodules[1:] + lndind = header.index('LNDbID') + radind = header.index('RadID') + fndind = header.index('FindingID') + xind = header.index('x') + yind = header.index('y') + zind = header.index('z') + nodind = header.index('Nodule') + volind = header.index('Volume') + texind = header.index('Text') + LND = [int(line[lndind]) for line in lines] + + # Match nodules + nodules = [['LNDbID', 'RadID', 'RadFindingID', 'FindingID', 'x', 'y', 'z', 'AgrLevel', 'Nodule', 'Volume', 'Text']] + for lndU in np.unique(LND): #within each CT + nodlnd = [line for lnd, line in zip(LND, lines) if lnd == lndU] + dlnd = [nodEqDiam(float(n[volind])) for n in nodlnd] + nodnew = [] #create merged nodule list + dnew = [] + for iself, n in enumerate(nodlnd): #for each nodule + dself = dlnd[iself] / 2 + rself = n[radind] + nodself = n[nodind] + match = False + for inew, nnew in enumerate(nodnew): #check distance with every nodule in merged list + if not float(rself) in nnew[radind] and float(nodself) in nnew[nodind]: + dother = max(dnew[inew]) / 2 + dist = ( + (float(n[xind]) - np.mean(nnew[xind]))**2 + (float(n[yind]) - np.mean(nnew[yind]))**2 + + (float(n[zind]) - np.mean(nnew[zind]))**2 + )**.5 + if dist < max(max(dself, dother), 3): # if distance between nodules is smaller than maximum radius or 3mm + match = True + for f in range(len(n)): + nnew[f].append(float(n[f])) #append to existing nodule in merged list + dnew[inew].append(np.mean([nodEqDiam(v) for v in nodnew[inew][volind]])) + break + if not match: + nodnew.append([[float(l)] for l in n]) #otherwise append new nodule to merged list + dnew.append([np.mean([nodEqDiam(v) for v in nodnew[-1][volind]])]) + + if verb: + print(iself) + for inew, nnew in enumerate(nodnew): + print(nnew, dnew[inew]) + + # Merge matched nodules + for ind, n in enumerate(nodnew): + agrlvl = n[nodind].count(1.0) + if agrlvl > 0: #nodules + nod = 1 + vol = np.mean(n[volind]) #volume is the average of all radiologists + tex = np.mean(n[texind]) #texture is the average of all radiologists + else: #non-nodules + nod = 0 + vol = 4 * math.pi * 1.5**3 / 3 #volume is the minimum for equivalent radius 3mm + tex = 0 + agrlvl = 3 #making it convenient for label generation + nodules.append( + [ + int(n[lndind][0]), + ','.join([str(int(r)) for r in n[radind]]), #list radiologist IDs + ','.join([str(int(f)) for f in n[fndind]]), #list radiologist finding's IDs + ind + 1, # new finding ID + np.mean(n[xind]), #centroid is the average of centroids + np.mean(n[yind]), + np.mean(n[zind]), + agrlvl, # number of radiologists that annotated the finding (0 if non-nodule) + nod, + vol, + tex + ] + ) + if verb: + for n in nodules: + print(n) + return nodules + + +def get_merged_nodules(root: str): + # Merge nodules from train set + + prefix = 'train' + fname_gtNodulesFleischner = os.path.join(root, '{}Nodules.csv'.format(prefix)) + gtNodules = readCsv(fname_gtNodulesFleischner) + for line in gtNodules: + print(line) + gtNodules = joinNodules(gtNodules) + path_out = os.path.join(root, '{}Nodules_gt.csv'.format(prefix)) + writeCsv(path_out, gtNodules) #write to csv + return path_out \ No newline at end of file