Newer
Older
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
[build-system]
requires = ["hatchling", "versioningit"]
build-backend = "hatchling.build"
requires-python = ">=3.10"
description = "Benchmarks for Computer-Aided Disease Detection from Medical Data."
authors = [{ name = "Geoffrey Raposo", email = "geoffrey@raposo.ch" }]
{ name = "Andre Anjos", email = "andre.anjos@idiap.ch" },
{ name = "Daniel Carron", email = "daniel.carron@idiap.ch" },
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Topic :: Software Development :: Libraries :: Python Modules",

André Anjos
committed
"credible",
"grad-cam~=1.5.2",
"lightning~=2.2.5",
"matplotlib",
"mlflow-skinny",
"pillow",
"psutil",
"python-gitlab",
"torchvision~=0.17.2",
"torch~=2.2.2",
"tqdm",
documentation = "https://mednet.readthedocs.io/en/latest/"
homepage = "https://pypi.org/project/mednet"
repository = "https://gitlab.idiap.ch/biosignal/software/mednet"
changelog = "https://gitlab.idiap.ch/biosignal/software/mednet/-/releases"
[project.optional-dependencies]
qa = ["pre-commit"]
doc = [
"auto-intersphinx",
"sphinx-copybutton",
"sphinx-inline-tabs",
]
test = ["pytest", "pytest-cov"]
[project.scripts]
mednet = "mednet.scripts.cli:cli"
[tool.pixi.project]
channels = ["conda-forge", "pytorch"]
platforms = ["linux-64", "osx-arm64"]
conda-pypi-map = { "https://conda.anaconda.org/pytorch" = ".pixi-pytorch-mapping.json" }
[tool.pixi.system-requirements]
linux = "4.19.0"
[tool.pixi.dependencies]
clapper = "*"
click = "*"
credible = "*"
grad-cam = "~=1.5.2"
lightning = "~=2.2.5"
matplotlib-base = "*"
mlflow-skinny = "*"
pillow = "*"
psutil = "*"
python-gitlab = "*"
pytorch = { version = "~=2.2.2", channel = "pytorch" }
scikit-image = "*"
scikit-learn = "*"
tabulate = "*"
tensorboard = "*"
torchvision = { version = "~=0.17.2", channel = "pytorch" }
tqdm = "*"
torchio = ">=0.19.7,<0.20"
[tool.pixi.feature.self.pypi-dependencies]
mednet = { path = ".", editable = true }
[tool.pixi.feature.self.tasks]
info = "mednet info"
[tool.pixi.feature.py311.dependencies]
python = "~=3.11.0"
[tool.pixi.feature.py312.dependencies]
python = "~=3.12.0"
[tool.pixi.feature.qa.dependencies]
pre-commit = "*"
ruff = "*"
reuse = "*"
[tool.pixi.feature.qa.tasks]
qa-install = "pre-commit install"
qa = "pre-commit run --all-files"
qa-ci = "pre-commit run --all-files --show-diff-on-failure --verbose"
[tool.pixi.feature.doc.dependencies]
auto-intersphinx = "*"
sphinx-click = "*"
sphinx-copybutton = "*"
sphinx-inline-tabs = "*"
[tool.pixi.feature.doc.tasks]
doc-clean = "rm -rf doc/api && rm -rf html"
doc = "sphinx-build -aEW doc html"
doctest = "sphinx-build -aEb doctest doc html/doctest"
[tool.pixi.feature.test.dependencies]
pytest = "*"
pytest-cov = "*"
[tool.pixi.feature.test.tasks]
test-slow = { cmd = "pytest -sv tests/", env = { PYTEST_ADDOPTS = "-m slow" } }
test-fast = { cmd = "pytest -sv tests/", env = { PYTEST_ADDOPTS = "-m '(not slow)'" } }
test-cov = "pytest -sv --cov-report 'html:html/coverage' tests/"

André Anjos
committed
test-ci = "cp tests/data/mednet.toml $XDG_CONFIG_HOME && pytest -sv --cov-report 'html:html/coverage' --cov-report 'xml:coverage.xml' --junitxml 'junit-coverage.xml' --ignore '.profile' tests/"
[tool.pixi.feature.build.dependencies]
hatch = "*"
versioningit = "*"
twine = "*"
[tool.pixi.feature.build.tasks]
build = "hatch build"
check = "twine check dist/*"
upload = "twine upload dist/*"
[tool.pixi.feature.dev.dependencies]
pdbpp = "*"
uv = "*"
[tool.pixi.feature.dev.tasks]
uv-update-lock = "uv pip compile -q pyproject.toml --python-platform=linux -o uv.lock"
channels = [
{ channel = "nvidia", priority = 1 },
{ channel = "pytorch", priority = -1 },
]
platforms = ["linux-64", "osx-arm64"]
[tool.pixi.feature.cuda.system-requirements]
cuda = "12.1"
[tool.pixi.feature.cuda.target.linux-64.dependencies]
pytorch-cuda = { version = "12.1.*", channel = "pytorch" }
pip = "*" # required for docker image building
default = { features = ["qa", "build", "doc", "test", "dev", "py312", "self"] }
qa-ci = { features = ["qa", "py312"] }
build-ci = { features = ["build", "py312"] }
test-ci-alternative = { features = ["test", "py311", "self"] }
cuda-base = { features = ["py312", "cuda"], solve-group = "cuda" }
cuda-prod = { features = ["py312", "cuda", "self"], solve-group = "cuda" }
cuda = { features = [
"qa",
"build",
"doc",
"test",
"dev",
"py312",
"cuda",
"self",
], solve-group = "cuda" }
[tool.hatch.version]
source = "versioningit"
# versioningit configuration via tool.hatch.version table
default-version = "0.0.0+unknown"
next-version.method = "smallest"

André Anjos
committed
# Example formatted version: 1.2.4.dev42+ge174a1f
format.distance = "{next_version}.dev{distance}+{vcs}{rev}"

André Anjos
committed
# Example formatted version: 1.2.4.dev42+ge174a1f.d20230922
format.distance-dirty = "{next_version}.dev{distance}+{vcs}{rev}.d{build_date:%Y%m%d}"

André Anjos
committed
[tool.hatch.build.targets.sdist]
include = [
"src/**/*.py",
"src/**/*.json",
"src/**/*.json.bz2",
"tests/**/*.py",
"tests/**/*.png",
"tests/**/*.json",
"doc/**/*.rst",
"doc/**/*.png",
"doc/**/*.jpg",
"doc/**/*.dot",
"doc/_static/*.css",
[tool.hatch.build.targets.wheel]
packages = ["src/mednet"]
[project.entry-points."mednet.libs.classification.config"]
pasa = "mednet.libs.classification.config.models.pasa"
mlp = "mednet.libs.classification.config.models.mlp"
logistic-regression = "mednet.libs.classification.config.models.logistic_regression"
alexnet = "mednet.libs.classification.config.models.alexnet"
alexnet-pretrained = "mednet.libs.classification.config.models.alexnet_pretrained"
densenet = "mednet.libs.classification.config.models.densenet"
densenet-pretrained = "mednet.libs.classification.config.models.densenet_pretrained"
# 3D models
cnn3d = "mednet.config.models.cnn3d"
# lists of data augmentations
affine = "mednet.libs.common.config.augmentations.affine"
elastic = "mednet.libs.common.config.augmentations.elastic"
hflip = "mednet.libs.common.config.augmentations.hflip"
jitter = "mednet.libs.common.config.augmentations.jitter"
hflip-affine = "mednet.libs.common.config.augmentations.hflip_affine"
hflip-jitter-affine = "mednet.libs.common.config.augmentations.hflip_jitter_affine"
montgomery = "mednet.libs.classification.config.data.montgomery.default"
montgomery-f0 = "mednet.libs.classification.config.data.montgomery.fold_0"
montgomery-f1 = "mednet.libs.classification.config.data.montgomery.fold_1"
montgomery-f2 = "mednet.libs.classification.config.data.montgomery.fold_2"
montgomery-f3 = "mednet.libs.classification.config.data.montgomery.fold_3"
montgomery-f4 = "mednet.libs.classification.config.data.montgomery.fold_4"
montgomery-f5 = "mednet.libs.classification.config.data.montgomery.fold_5"
montgomery-f6 = "mednet.libs.classification.config.data.montgomery.fold_6"
montgomery-f7 = "mednet.libs.classification.config.data.montgomery.fold_7"
montgomery-f8 = "mednet.libs.classification.config.data.montgomery.fold_8"
montgomery-f9 = "mednet.libs.classification.config.data.montgomery.fold_9"
shenzhen = "mednet.libs.classification.config.data.shenzhen.default"
shenzhen-alltest = "mednet.libs.classification.config.data.shenzhen.alltest"
shenzhen-f0 = "mednet.libs.classification.config.data.shenzhen.fold_0"
shenzhen-f1 = "mednet.libs.classification.config.data.shenzhen.fold_1"
shenzhen-f2 = "mednet.libs.classification.config.data.shenzhen.fold_2"
shenzhen-f3 = "mednet.libs.classification.config.data.shenzhen.fold_3"
shenzhen-f4 = "mednet.libs.classification.config.data.shenzhen.fold_4"
shenzhen-f5 = "mednet.libs.classification.config.data.shenzhen.fold_5"
shenzhen-f6 = "mednet.libs.classification.config.data.shenzhen.fold_6"
shenzhen-f7 = "mednet.libs.classification.config.data.shenzhen.fold_7"
shenzhen-f8 = "mednet.libs.classification.config.data.shenzhen.fold_8"
shenzhen-f9 = "mednet.libs.classification.config.data.shenzhen.fold_9"
indian = "mednet.libs.classification.config.data.indian.default"
indian-f0 = "mednet.libs.classification.config.data.indian.fold_0"
indian-f1 = "mednet.libs.classification.config.data.indian.fold_1"
indian-f2 = "mednet.libs.classification.config.data.indian.fold_2"
indian-f3 = "mednet.libs.classification.config.data.indian.fold_3"
indian-f4 = "mednet.libs.classification.config.data.indian.fold_4"
indian-f5 = "mednet.libs.classification.config.data.indian.fold_5"
indian-f6 = "mednet.libs.classification.config.data.indian.fold_6"
indian-f7 = "mednet.libs.classification.config.data.indian.fold_7"
indian-f8 = "mednet.libs.classification.config.data.indian.fold_8"
indian-f9 = "mednet.libs.classification.config.data.indian.fold_9"
# TBX11K dataset split 1: healthy vs active tb, and cross-validation folds
tbx11k-v1-healthy-vs-atb = "mednet.libs.classification.config.data.tbx11k.v1_healthy_vs_atb"
tbx11k-v1-f0 = "mednet.libs.classification.config.data.tbx11k.v1_fold_0"
tbx11k-v1-f1 = "mednet.libs.classification.config.data.tbx11k.v1_fold_1"
tbx11k-v1-f2 = "mednet.libs.classification.config.data.tbx11k.v1_fold_2"
tbx11k-v1-f3 = "mednet.libs.classification.config.data.tbx11k.v1_fold_3"
tbx11k-v1-f4 = "mednet.libs.classification.config.data.tbx11k.v1_fold_4"
tbx11k-v1-f5 = "mednet.libs.classification.config.data.tbx11k.v1_fold_5"
tbx11k-v1-f6 = "mednet.libs.classification.config.data.tbx11k.v1_fold_6"
tbx11k-v1-f7 = "mednet.libs.classification.config.data.tbx11k.v1_fold_7"
tbx11k-v1-f8 = "mednet.libs.classification.config.data.tbx11k.v1_fold_8"
tbx11k-v1-f9 = "mednet.libs.classification.config.data.tbx11k.v1_fold_9"
# TBX11K dataset split 2: others vs active tb, and cross-validation folds
tbx11k-v2-others-vs-atb = "mednet.libs.classification.config.data.tbx11k.v2_others_vs_atb"
tbx11k-v2-f0 = "mednet.libs.classification.config.data.tbx11k.v2_fold_0"
tbx11k-v2-f1 = "mednet.libs.classification.config.data.tbx11k.v2_fold_1"
tbx11k-v2-f2 = "mednet.libs.classification.config.data.tbx11k.v2_fold_2"
tbx11k-v2-f3 = "mednet.libs.classification.config.data.tbx11k.v2_fold_3"
tbx11k-v2-f4 = "mednet.libs.classification.config.data.tbx11k.v2_fold_4"
tbx11k-v2-f5 = "mednet.libs.classification.config.data.tbx11k.v2_fold_5"
tbx11k-v2-f6 = "mednet.libs.classification.config.data.tbx11k.v2_fold_6"
tbx11k-v2-f7 = "mednet.libs.classification.config.data.tbx11k.v2_fold_7"
tbx11k-v2-f8 = "mednet.libs.classification.config.data.tbx11k.v2_fold_8"
tbx11k-v2-f9 = "mednet.libs.classification.config.data.tbx11k.v2_fold_9"
montgomery-shenzhen = "mednet.libs.classification.config.data.montgomery_shenzhen.default"
montgomery-shenzhen-f0 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_0"
montgomery-shenzhen-f1 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_1"
montgomery-shenzhen-f2 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_2"
montgomery-shenzhen-f3 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_3"
montgomery-shenzhen-f4 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_4"
montgomery-shenzhen-f5 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_5"
montgomery-shenzhen-f6 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_6"
montgomery-shenzhen-f7 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_7"
montgomery-shenzhen-f8 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_8"
montgomery-shenzhen-f9 = "mednet.libs.classification.config.data.montgomery_shenzhen.fold_9"
montgomery-shenzhen-indian = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.default"
montgomery-shenzhen-indian-f0 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_0"
montgomery-shenzhen-indian-f1 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_1"
montgomery-shenzhen-indian-f2 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_2"
montgomery-shenzhen-indian-f3 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_3"
montgomery-shenzhen-indian-f4 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_4"
montgomery-shenzhen-indian-f5 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_5"
montgomery-shenzhen-indian-f6 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_6"
montgomery-shenzhen-indian-f7 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_7"
montgomery-shenzhen-indian-f8 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_8"
montgomery-shenzhen-indian-f9 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian.fold_9"
# montgomery-shenzhen-indian-tbx11k aggregated dataset
montgomery-shenzhen-indian-tbx11k-v1 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb"
montgomery-shenzhen-indian-tbx11k-v1-f0 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0"
montgomery-shenzhen-indian-tbx11k-v1-f1 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_1"
montgomery-shenzhen-indian-tbx11k-v1-f2 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_2"
montgomery-shenzhen-indian-tbx11k-v1-f3 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_3"
montgomery-shenzhen-indian-tbx11k-v1-f4 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_4"
montgomery-shenzhen-indian-tbx11k-v1-f5 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_5"
montgomery-shenzhen-indian-tbx11k-v1-f6 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_6"
montgomery-shenzhen-indian-tbx11k-v1-f7 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_7"
montgomery-shenzhen-indian-tbx11k-v1-f8 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_8"
montgomery-shenzhen-indian-tbx11k-v1-f9 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v1_fold_9"
montgomery-shenzhen-indian-tbx11k-v2 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb"
montgomery-shenzhen-indian-tbx11k-v2-f0 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0"
montgomery-shenzhen-indian-tbx11k-v2-f1 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_1"
montgomery-shenzhen-indian-tbx11k-v2-f2 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_2"
montgomery-shenzhen-indian-tbx11k-v2-f3 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_3"
montgomery-shenzhen-indian-tbx11k-v2-f4 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_4"
montgomery-shenzhen-indian-tbx11k-v2-f5 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_5"
montgomery-shenzhen-indian-tbx11k-v2-f6 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_6"
montgomery-shenzhen-indian-tbx11k-v2-f7 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_7"
montgomery-shenzhen-indian-tbx11k-v2-f8 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_8"
montgomery-shenzhen-indian-tbx11k-v2-f9 = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_tbx11k.v2_fold_9"
# tbpoc dataset (only cross-validation folds)
tbpoc-f0 = "mednet.libs.classification.config.data.tbpoc.fold_0"
tbpoc-f1 = "mednet.libs.classification.config.data.tbpoc.fold_1"
tbpoc-f2 = "mednet.libs.classification.config.data.tbpoc.fold_2"
tbpoc-f3 = "mednet.libs.classification.config.data.tbpoc.fold_3"
tbpoc-f4 = "mednet.libs.classification.config.data.tbpoc.fold_4"
tbpoc-f5 = "mednet.libs.classification.config.data.tbpoc.fold_5"
tbpoc-f6 = "mednet.libs.classification.config.data.tbpoc.fold_6"
tbpoc-f7 = "mednet.libs.classification.config.data.tbpoc.fold_7"
tbpoc-f8 = "mednet.libs.classification.config.data.tbpoc.fold_8"
tbpoc-f9 = "mednet.libs.classification.config.data.tbpoc.fold_9"
# hivtb dataset (only cross-validation folds)
hivtb-f0 = "mednet.libs.classification.config.data.hivtb.fold_0"
hivtb-f1 = "mednet.libs.classification.config.data.hivtb.fold_1"
hivtb-f2 = "mednet.libs.classification.config.data.hivtb.fold_2"
hivtb-f3 = "mednet.libs.classification.config.data.hivtb.fold_3"
hivtb-f4 = "mednet.libs.classification.config.data.hivtb.fold_4"
hivtb-f5 = "mednet.libs.classification.config.data.hivtb.fold_5"
hivtb-f6 = "mednet.libs.classification.config.data.hivtb.fold_6"
hivtb-f7 = "mednet.libs.classification.config.data.hivtb.fold_7"
hivtb-f8 = "mednet.libs.classification.config.data.hivtb.fold_8"
hivtb-f9 = "mednet.libs.classification.config.data.hivtb.fold_9"
# NIH CXR14 (relabeled), multi-class (14 labels)
nih-cxr14 = "mednet.libs.classification.config.data.nih_cxr14.default"
nih-cxr14-cardiomegaly = "mednet.libs.classification.config.data.nih_cxr14.cardiomegaly"
# PadChest, multi-class (varied number of labels)
padchest-idiap = "mednet.libs.classification.config.data.padchest.idiap"
padchest-tb-idiap = "mednet.libs.classification.config.data.padchest.tb_idiap"
padchest-no-tb-idiap = "mednet.libs.classification.config.data.padchest.no_tb_idiap"
padchest-cardiomegaly-idiap = "mednet.libs.classification.config.data.padchest.cardiomegaly_idiap"
nih-cxr14-padchest = "mednet.libs.classification.config.data.nih_cxr14_padchest.idiap"
# montgomery-shenzhen-indian-padchest aggregated dataset
montgomery-shenzhen-indian-padchest = "mednet.libs.classification.config.data.montgomery_shenzhen_indian_padchest.default"
# VISCERAL dataset
visceral = "mednet.config.data.visceral.default"
[project.entry-points."mednet.libs.segmentation.config"]
# models
driu = "mednet.libs.segmentation.config.models.driu"
driu-bn = "mednet.libs.segmentation.config.models.driu_bn"
driu-od = "mednet.libs.segmentation.config.models.driu_od"
driu-pix = "mednet.libs.segmentation.config.models.driu_pix"
hed = "mednet.libs.segmentation.config.models.hed"
lwnet = "mednet.libs.segmentation.config.models.lwnet"
m2unet = "mednet.libs.segmentation.config.models.m2unet"
unet = "mednet.libs.segmentation.config.models.unet"
affine = "mednet.libs.common.config.augmentations.affine"
elastic = "mednet.libs.common.config.augmentations.elastic"
hflip = "mednet.libs.common.config.augmentations.hflip"
jitter = "mednet.libs.common.config.augmentations.jitter"
hflip-affine = "mednet.libs.common.config.augmentations.hflip_affine"
hflip-jitter-affine = "mednet.libs.common.config.augmentations.hflip_jitter_affine"
# chase-db1 - retinography
chasedb1 = "mednet.libs.segmentation.config.data.chasedb1.first_annotator"
chasedb1-2nd = "mednet.libs.segmentation.config.data.chasedb1.second_annotator"
# cxr8 - cxr
cxr8 = "mednet.libs.segmentation.config.data.cxr8.default"
# drhagis dataset - retinography
drhagis = "mednet.libs.segmentation.config.data.drhagis.default"
# drionsdb - retinography
drionsdb = "mednet.libs.segmentation.config.data.drionsdb.expert1"
drionsdb-2nd = "mednet.libs.segmentation.config.data.drionsdb.expert2"
drive = "mednet.libs.segmentation.config.data.drive.default"
drive-2nd = "mednet.libs.segmentation.config.data.drive.drive_2nd"
# drishti-gs1 - retinography
drishtigs1-disc-all = "mednet.libs.segmentation.config.data.drishtigs1.optic_disc_all"
drishtigs1-disc-any = "mednet.libs.segmentation.config.data.drishtigs1.optic_disc_any"
drishtigs1-cup-all = "mednet.libs.segmentation.config.data.drishtigs1.optic_cup_all"
drishtigs1-cup-any = "mednet.libs.segmentation.config.data.drishtigs1.optic_cup_any"
# hrf - retinography
hrf = "mednet.libs.segmentation.config.data.hrf.default"
# iostar - retinography
iostar-vessel = "mednet.libs.segmentation.config.data.iostar.vessel"
iostar-disc = "mednet.libs.segmentation.config.data.iostar.optic_disc"
# jsrt - cxr
jsrt = "mednet.libs.segmentation.config.data.jsrt.default"
montgomery = "mednet.libs.segmentation.config.data.montgomery.default"
# refuge - retinography
refuge-cup = "mednet.libs.segmentation.config.data.refuge.cup"
refuge-disc = "mednet.libs.segmentation.config.data.refuge.disc"
# rim one r3 - retinography
rimoner3-cup = "mednet.libs.segmentation.config.data.rimoner3.cup_exp1"
rimoner3-disc = "mednet.libs.segmentation.config.data.rimoner3.disc_exp1"
rimoner3-cup-2nd = "mednet.libs.segmentation.config.data.rimoner3.cup_exp2"
rimoner3-disc-2nd = "mednet.libs.segmentation.config.data.rimoner3.disc_exp2"
# shenzhen - cxr
shenzhen = "mednet.libs.segmentation.config.data.shenzhen.default"
stare = "mednet.libs.segmentation.config.data.stare.ah"
stare-2nd = "mednet.libs.segmentation.config.data.stare.vk"

André Anjos
committed
line-length = 88
target-version = "py310"

André Anjos
committed
[tool.ruff.format]
docstring-code-format = true
[tool.ruff.lint]

André Anjos
committed
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
select = [
"A", # https://docs.astral.sh/ruff/rules/#flake8-builtins-a
"COM", # https://docs.astral.sh/ruff/rules/#flake8-commas-com
"D", # https://docs.astral.sh/ruff/rules/#pydocstyle-d
"E", # https://docs.astral.sh/ruff/rules/#error-e
"F", # https://docs.astral.sh/ruff/rules/#pyflakes-f
"I", # https://docs.astral.sh/ruff/rules/#isort-i
"ISC", # https://docs.astral.sh/ruff/rules/#flake8-implicit-str-concat-isc
"LOG", # https://docs.astral.sh/ruff/rules/#flake8-logging-log
"N", # https://docs.astral.sh/ruff/rules/#pep8-naming-n
"PTH", # https://docs.astral.sh/ruff/rules/#flake8-use-pathlib-pth
"Q", # https://docs.astral.sh/ruff/rules/#flake8-quotes-q
"RET", # https://docs.astral.sh/ruff/rules/#flake8-return-ret
"SLF", # https://docs.astral.sh/ruff/rules/#flake8-self-slf
"T10", # https://docs.astral.sh/ruff/rules/#flake8-debugger-t10
"T20", # https://docs.astral.sh/ruff/rules/#flake8-print-t20
"UP", # https://docs.astral.sh/ruff/rules/#pyupgrade-up
"W", # https://docs.astral.sh/ruff/rules/#warning-w
#"G", # https://docs.astral.sh/ruff/rules/#flake8-logging-format-g
#"ICN", # https://docs.astral.sh/ruff/rules/#flake8-import-conventions-icn
#"NPY", # https://docs.astral.sh/ruff/rules/#numpy-specific-rules-npy
]
ignore = [
"COM812", # https://docs.astral.sh/ruff/rules/missing-trailing-comma/
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
"D102", # https://docs.astral.sh/ruff/rules/undocumented-public-method/
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
"D105", # https://docs.astral.sh/ruff/rules/undocumented-magic-method/
"D107", # https://docs.astral.sh/ruff/rules/undocumented-public-init/
"D202", # https://docs.astral.sh/ruff/rules/no-blank-line-after-function/
"D205", # https://docs.astral.sh/ruff/rules/blank-line-after-summary/
"D212", # https://docs.astral.sh/ruff/rules/multi-line-summary-first-line/
"D213", # https://docs.astral.sh/ruff/rules/multi-line-summary-second-line/
"E302", # https://docs.astral.sh/ruff/rules/blank-lines-top-level/
"E402", # https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file/
"E501", # https://docs.astral.sh/ruff/rules/line-too-long/
"ISC001", # https://docs.astral.sh/ruff/rules/single-line-implicit-string-concatenation/
]
[tool.ruff.lint.pydocstyle]
convention = "numpy"
[tool.ruff.lint.per-file-ignores]
"helpers/*.py" = ["T201", "D103"]

André Anjos
committed
"doc/conf.py" = ["D"]
"**/scripts/*.py" = ["E501"]

André Anjos
committed
"all", # report on all checks, except the ones below
"ES01", # Not all functions require extended summaries
"EX01", # Not all functions require examples
"GL01", # Expects text to be on the line after the opening quotes but that is in direct opposition of the sphinx recommendations and conflicts with other pre-commit hooks.
"GL08", # Causes issues if we don't have a docstring at the top of the file. Disabling this might fail to catch actual missing docstrings.
"PR04", # numpydoc does not currently support PEP484 typehints, which we are using
"RT03", # Since sphinx is unable to understand type annotations we need to remove some types from 'Returns', which breaks this check.
"SA01", # We do not use Also sections
"SS06", # Summary will span multiple lines if too long because of reformatting by other hooks.
exclude = [ # don't report on objects that match any of these regex
'\.__len__$',
'\.__getitem__$',
'\.__iter__$',
override_SS05 = [ # override SS05 to allow docstrings starting with these words
'^Process ',
'^Assess ',
'^Access ',
'^This',
[tool.pytest.ini_options]
addopts = ["--cov=mednet", "--cov-report=term-missing", "--import-mode=append"]
junit_logging = "all"
junit_log_passing_tests = false
markers = ["slow: marks tests as slow (deselect with '-m \"not slow\"')"]