# 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