Skip to content
Snippets Groups Projects
pyproject.toml 10.88 KiB
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "ptbench"
version = "1.0.0b0"
requires-python = ">=3.10"
description = "Benchmarks for training and evaluating deep models for the detection of active Pulmonary Tuberculosis from Chest X-Ray imaging."
dynamic = ["readme"]
license = { text = "GNU General Public License v3 (GPLv3)" }
authors = [{ name = "Geoffrey Raposo", email = "geoffrey@raposo.ch" }]
maintainers = [
  { name = "Andre Anjos", email = "andre.anjos@idiap.ch" },
  { name = "Daniel Carron", email = "daniel.carron@idiap.ch" },
]
classifiers = [
  "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",
]
dependencies = [
  "clapper",
  "click",
  "numpy",
  "pandas",
  "scipy",
  "scikit-learn",
  "tqdm",
  "psutil",
  "tabulate",
  "matplotlib",
  "pillow",
  "torch>=1.8",
  "torchvision>=0.10",
  "lightning>=2.0.3",
  "tensorboard",
]

[project.urls]
documentation = "https://www.idiap.ch/software/biosignal/software/docs/biosignal/software/ptbench/main/sphinx/"
homepage = "https://pypi.org/project/ptbench"
repository = "https://gitlab.idiap.ch/biosignal/software/ptbench"
changelog = "https://gitlab.idiap.ch/biosignal/software/ptbench/-/releases"

[project.optional-dependencies]
qa = ["pre-commit"]
doc = [
  "sphinx",
  "furo",
  "sphinx-autodoc-typehints",
  "auto-intersphinx",
  "sphinx-copybutton",
  "sphinx-inline-tabs",
  "sphinx-click",
]
test = ["pytest", "pytest-cov", "coverage"]

[project.scripts]
ptbench = "ptbench.scripts.cli:cli"

[project.entry-points."ptbench.config"]

# models
pasa = "ptbench.configs.models.pasa"
signs-to-tb = "ptbench.configs.models.signs_to_tb"
logistic-regression = "ptbench.configs.models.logistic_regression"
densenet-rs = "ptbench.configs.models_datasets.densenet_rs"
alexnet = "ptbench.configs.models.alexnet"
alexnet-pretrained = "ptbench.configs.models.alexnet_pretrained"
densenet = "ptbench.configs.models.densenet"
densenet-pretrained = "ptbench.configs.models.densenet_pretrained"

# montgomery dataset (and cross-validation folds)
montgomery = "ptbench.data.montgomery.default"
montgomery-f0 = "ptbench.data.montgomery.fold_0"
montgomery-f1 = "ptbench.data.montgomery.fold_1"
montgomery-f2 = "ptbench.data.montgomery.fold_2"
montgomery-f3 = "ptbench.data.montgomery.fold_3"
montgomery-f4 = "ptbench.data.montgomery.fold_4"
montgomery-f5 = "ptbench.data.montgomery.fold_5"
montgomery-f6 = "ptbench.data.montgomery.fold_6"
montgomery-f7 = "ptbench.data.montgomery.fold_7"
montgomery-f8 = "ptbench.data.montgomery.fold_8"
montgomery-f9 = "ptbench.data.montgomery.fold_9"

# shenzhen dataset (and cross-validation folds)
shenzhen = "ptbench.data.shenzhen.default"
shenzhen-f0 = "ptbench.data.shenzhen.fold_0"
shenzhen-f1 = "ptbench.data.shenzhen.fold_1"
shenzhen-f2 = "ptbench.data.shenzhen.fold_2"
shenzhen-f3 = "ptbench.data.shenzhen.fold_3"
shenzhen-f4 = "ptbench.data.shenzhen.fold_4"
shenzhen-f5 = "ptbench.data.shenzhen.fold_5"
shenzhen-f6 = "ptbench.data.shenzhen.fold_6"
shenzhen-f7 = "ptbench.data.shenzhen.fold_7"
shenzhen-f8 = "ptbench.data.shenzhen.fold_8"
shenzhen-f9 = "ptbench.data.shenzhen.fold_9"

# indian dataset (and cross-validation folds)
indian = "ptbench.data.indian.default"
indian-f0 = "ptbench.data.indian.fold_0"
indian-f1 = "ptbench.data.indian.fold_1"
indian-f2 = "ptbench.data.indian.fold_2"
indian-f3 = "ptbench.data.indian.fold_3"
indian-f4 = "ptbench.data.indian.fold_4"
indian-f5 = "ptbench.data.indian.fold_5"
indian-f6 = "ptbench.data.indian.fold_6"
indian-f7 = "ptbench.data.indian.fold_7"
indian-f8 = "ptbench.data.indian.fold_8"
indian-f9 = "ptbench.data.indian.fold_9"

# TBX11K dataset split 1: healthy vs active tb, and cross-validation folds
tbx11k-v1-healthy-vs-atb = "ptbench.data.tbx11k.v1_healthy_vs_atb"
tbx11k-v1-f0 = "ptbench.data.tbx11k.v1_fold_0"
tbx11k-v1-f1 = "ptbench.data.tbx11k.v1_fold_1"
tbx11k-v1-f2 = "ptbench.data.tbx11k.v1_fold_2"
tbx11k-v1-f3 = "ptbench.data.tbx11k.v1_fold_3"
tbx11k-v1-f4 = "ptbench.data.tbx11k.v1_fold_4"
tbx11k-v1-f5 = "ptbench.data.tbx11k.v1_fold_5"
tbx11k-v1-f6 = "ptbench.data.tbx11k.v1_fold_6"
tbx11k-v1-f7 = "ptbench.data.tbx11k.v1_fold_7"
tbx11k-v1-f8 = "ptbench.data.tbx11k.v1_fold_8"
tbx11k-v1-f9 = "ptbench.data.tbx11k.v1_fold_9"

# TBX11K dataset split 2: others vs active tb, and cross-validation folds
tbx11k-v2-others-vs-atb = "ptbench.data.tbx11k.v2_others_vs_atb"
tbx11k-v2-f0 = "ptbench.data.tbx11k.v2_fold_0"
tbx11k-v2-f1 = "ptbench.data.tbx11k.v2_fold_1"
tbx11k-v2-f2 = "ptbench.data.tbx11k.v2_fold_2"
tbx11k-v2-f3 = "ptbench.data.tbx11k.v2_fold_3"
tbx11k-v2-f4 = "ptbench.data.tbx11k.v2_fold_4"
tbx11k-v2-f5 = "ptbench.data.tbx11k.v2_fold_5"
tbx11k-v2-f6 = "ptbench.data.tbx11k.v2_fold_6"
tbx11k-v2-f7 = "ptbench.data.tbx11k.v2_fold_7"
tbx11k-v2-f8 = "ptbench.data.tbx11k.v2_fold_8"
tbx11k-v2-f9 = "ptbench.data.tbx11k.v2_fold_9"

# montgomery-shenzhen aggregated dataset
montgomery-shenzhen = "ptbench.data.montgomery_shenzhen.default"
montgomery-shenzhen-f0 = "ptbench.data.montgomery_shenzhen.fold_0"
montgomery-shenzhen-f1 = "ptbench.data.montgomery_shenzhen.fold_1"
montgomery-shenzhen-f2 = "ptbench.data.montgomery_shenzhen.fold_2"
montgomery-shenzhen-f3 = "ptbench.data.montgomery_shenzhen.fold_3"
montgomery-shenzhen-f4 = "ptbench.data.montgomery_shenzhen.fold_4"
montgomery-shenzhen-f5 = "ptbench.data.montgomery_shenzhen.fold_5"
montgomery-shenzhen-f6 = "ptbench.data.montgomery_shenzhen.fold_6"
montgomery-shenzhen-f7 = "ptbench.data.montgomery_shenzhen.fold_7"
montgomery-shenzhen-f8 = "ptbench.data.montgomery_shenzhen.fold_8"
montgomery-shenzhen-f9 = "ptbench.data.montgomery_shenzhen.fold_9"

# montgomery-shenzhen-indian aggregated dataset
montgomery-shenzhen-indian = "ptbench.data.montgomery_shenzhen_indian.default"
montgomery-shenzhen-indian-f0 = "ptbench.data.montgomery_shenzhen_indian.fold_0"
montgomery-shenzhen-indian-f1 = "ptbench.data.montgomery_shenzhen_indian.fold_1"
montgomery-shenzhen-indian-f2 = "ptbench.data.montgomery_shenzhen_indian.fold_2"
montgomery-shenzhen-indian-f3 = "ptbench.data.montgomery_shenzhen_indian.fold_3"
montgomery-shenzhen-indian-f4 = "ptbench.data.montgomery_shenzhen_indian.fold_4"
montgomery-shenzhen-indian-f5 = "ptbench.data.montgomery_shenzhen_indian.fold_5"
montgomery-shenzhen-indian-f6 = "ptbench.data.montgomery_shenzhen_indian.fold_6"
montgomery-shenzhen-indian-f7 = "ptbench.data.montgomery_shenzhen_indian.fold_7"
montgomery-shenzhen-indian-f8 = "ptbench.data.montgomery_shenzhen_indian.fold_8"
montgomery-shenzhen-indian-f9 = "ptbench.data.montgomery_shenzhen_indian.fold_9"

# montgomery-shenzhen-indian-tbx11k aggregated dataset
montgomery-shenzhen-indian-tbx11k-v1 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_healthy_vs_atb"
montgomery-shenzhen-indian-tbx11k-v1-f0 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_0"
montgomery-shenzhen-indian-tbx11k-v1-f1 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_1"
montgomery-shenzhen-indian-tbx11k-v1-f2 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_2"
montgomery-shenzhen-indian-tbx11k-v1-f3 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_3"
montgomery-shenzhen-indian-tbx11k-v1-f4 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_4"
montgomery-shenzhen-indian-tbx11k-v1-f5 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_5"
montgomery-shenzhen-indian-tbx11k-v1-f6 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_6"
montgomery-shenzhen-indian-tbx11k-v1-f7 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_7"
montgomery-shenzhen-indian-tbx11k-v1-f8 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_8"
montgomery-shenzhen-indian-tbx11k-v1-f9 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v1_fold_9"
montgomery-shenzhen-indian-tbx11k-v2 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_others_vs_atb"
montgomery-shenzhen-indian-tbx11k-v2-f0 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_0"
montgomery-shenzhen-indian-tbx11k-v2-f1 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_1"
montgomery-shenzhen-indian-tbx11k-v2-f2 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_2"
montgomery-shenzhen-indian-tbx11k-v2-f3 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_3"
montgomery-shenzhen-indian-tbx11k-v2-f4 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_4"
montgomery-shenzhen-indian-tbx11k-v2-f5 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_5"
montgomery-shenzhen-indian-tbx11k-v2-f6 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_6"
montgomery-shenzhen-indian-tbx11k-v2-f7 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_7"
montgomery-shenzhen-indian-tbx11k-v2-f8 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_8"
montgomery-shenzhen-indian-tbx11k-v2-f9 = "ptbench.data.montgomery_shenzhen_indian_tbx11k.v2_fold_9"

# tbpoc dataset (and cross-validation folds)
tbpoc_f0 = "ptbench.data.tbpoc.fold_0"
tbpoc_f1 = "ptbench.data.tbpoc.fold_1"
tbpoc_f2 = "ptbench.data.tbpoc.fold_2"
tbpoc_f3 = "ptbench.data.tbpoc.fold_3"
tbpoc_f4 = "ptbench.data.tbpoc.fold_4"
tbpoc_f5 = "ptbench.data.tbpoc.fold_5"
tbpoc_f6 = "ptbench.data.tbpoc.fold_6"
tbpoc_f7 = "ptbench.data.tbpoc.fold_7"
tbpoc_f8 = "ptbench.data.tbpoc.fold_8"
tbpoc_f9 = "ptbench.data.tbpoc.fold_9"

# hivtb dataset (and cross-validation folds)
hivtb_f0 = "ptbench.data.hivtb.fold_0"
hivtb_f1 = "ptbench.data.hivtb.fold_1"
hivtb_f2 = "ptbench.data.hivtb.fold_2"
hivtb_f3 = "ptbench.data.hivtb.fold_3"
hivtb_f4 = "ptbench.data.hivtb.fold_4"
hivtb_f5 = "ptbench.data.hivtb.fold_5"
hivtb_f6 = "ptbench.data.hivtb.fold_6"
hivtb_f7 = "ptbench.data.hivtb.fold_7"
hivtb_f8 = "ptbench.data.hivtb.fold_8"
hivtb_f9 = "ptbench.data.hivtb.fold_9"

# montgomery-shenzhen-indian-padchest aggregated dataset
mc_ch_in_pc = "ptbench.data.mc_ch_in_pc.default"

# NIH CXR14 (relabeled)
nih-cxr14 = "ptbench.data.nih_cxr14.default"
nih-cxr14-cardiomegaly = "ptbench.data.nih_cxr14.cardiomegaly"

# NIH CXR14 / PadChest aggregated dataset
nih_cxr14_pc_idiap = "ptbench.data.nih_cxr14_re_pc.idiap"

# PadChest
padchest_idiap = "ptbench.data.padchest.idiap"
padchest_tb_idiap = "ptbench.data.padchest.tb_idiap"
padchest_no_tb_idiap = "ptbench.data.padchest.no_tb_idiap"
padchest_cm_idiap = "ptbench.data.padchest.cardiomegaly_idiap"

[tool.setuptools]
zip-safe = true
package-dir = { "" = "src" }

[tool.setuptools.dynamic]
readme = { file = "README.md" }

[tool.distutils.bdist_wheel]
universal = true

[tool.isort]
profile = "black"
line_length = 80
order_by_type = true
lines_between_types = 1

[tool.black]
line-length = 80

[tool.pytest.ini_options]
addopts = ["--cov=ptbench", "--cov-report=term-missing", "--import-mode=append"]
junit_logging = "all"
junit_log_passing_tests = false