-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathpyproject.toml
More file actions
124 lines (117 loc) · 4.33 KB
/
Copy pathpyproject.toml
File metadata and controls
124 lines (117 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
[build-system]
requires = ["setuptools>=64", "setuptools_scm>=8"]
build-backend = "setuptools.build_meta"
[project]
name = "pycerr"
dynamic = ["version"]
authors = [
{ name="Aditya P. Apte", email="aptea@mskcc.org" },
{ name="Aditi Iyer", email="iyera@mskcc.org" },
{ name="Eve LoCastro", email="locastre@mskcc.org" },
{ name="Joseph O. Deasy", email="deasyj@mskcc.org" }
]
description = "A Computational Environment for Radiological Research"
readme = "README.md"
requires-python = ">=3.8"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: GNU General Public License (GPL)",
"Operating System :: OS Independent",
]
dependencies = [
'scipy',
'pydicom',
# Decoders for compressed DICOM pixel data (JPEG Lossless / JPEG-LS /
# JPEG 2000). pydicom needs one of these plugins to decode `pixel_array`
# for compressed transfer syntaxes; without it, reading such scans raises
# "Unable to decompress ... pixel data". python-gdcm is an alternative
# single-package decoder (also adds RLE): `pip install python-gdcm`.
'pylibjpeg',
'pylibjpeg-libjpeg',
'pylibjpeg-openjpeg',
'python-dateutil',
'h5py',
'pandas',
'SimpleITK',
'nibabel',
'scikit-learn',
'scikit-image',
'PyWavelets',
'shapelysmooth',
'matplotlib >= 3.5',
'ipywidgets',
'surface-distance-based-measures',
'itk-strain',
# JIT-compiled, multi-threaded kernels for the urOMT solver
# (cerr.uromt.kernels): the trilinear gather/scatter/derivative operators
# that dominate its Gauss-Newton CG matvec. ~90x on the derivative operator
# versus the vectorized numpy form.
'numba',
# Desktop Qt viewer (cerr.viewer.pycerr_gui): PyQt5 is the Qt binding;
# pyvista/pyvistaqt drive the GPU-accelerated 3D view (vtk is pulled in
# transitively by pyvista).
'PyQt5',
'pyvista',
'pyvistaqt'
]
[project.urls]
"Homepage" = "https://github.com/cerr/pyCERR"
"Bug Tracker" = "https://github.com/cerr/pyCERR/issues"
[project.optional-dependencies]
napari = [
"napari[all]",
"napari-animation"
]
# NOTE: model_installer is only distributed as a git repo, and PyPI rejects
# direct URL (git+) dependencies in package metadata. So it is NOT declared as
# an extra here; install it alongside pyCERR when needed with:
# pip install "model_installer @ git+https://github.com/cerr/model_installer.git"
ants = [
"antspyx",
]
# Optional GPU acceleration for the urOMT solver (cerr.uromt.gpu), enabled with
# the `gpu` setting. Without it urOMT runs on the CPU (numba, multi-threaded)
# and a `gpu=1` request warns and falls back.
#
# This extra targets a CUDA 13.x driver. For CUDA 12.x install `cupy-cuda12x`
# plus the `nvidia-*-cu12` library wheels instead; for CUDA 11.x,
# `cupy-cuda11x`. Check what your driver supports with:
# python -c "import ctypes;v=ctypes.c_int();ctypes.WinDLL('nvcuda.dll').cuDriverGetVersion(ctypes.byref(v));print(v.value)"
#
# The nvidia-* wheels are NOT optional on a machine that also has an older CUDA
# toolkit installed: cupy resolves its libraries through cuda-pathfinder, which
# prefers site-packages over CUDA_PATH/PATH, so shipping them here is what stops
# a stale toolkit's NVRTC being loaded (see cerr/uromt/gpu.py).
gpu = [
"cupy-cuda13x",
"nvidia-cuda-nvrtc",
"nvidia-cuda-runtime",
"nvidia-cufft",
"nvidia-cublas",
"nvidia-cusparse",
"nvidia-cusolver",
"nvidia-curand",
]
[tool.setuptools]
include-package-data = true
[tool.setuptools.exclude-package-data]
# Test-only datasets (mirrors MANIFEST.in) - keep them out of the wheel.
# The notebook-facing datasets (radiomics_phantom_dicom, sample_ct,
# radiomics_settings, convolutional_filter_settings) are retained.
"cerr.datasets" = [
"ibsi_radiomics_dicom/*",
"ibsi_radiomics_dicom/**/*",
"reference_values_for_tests/*",
"reference_values_for_tests/**/*",
# head_and_neck is downloaded on demand (fetch_sample_data); keep it out of
# the wheel. dosimetric_model_test_data stays bundled (NTCP notebook).
"sample_ct/head_and_neck/*",
"sample_ct/head_and_neck/**/*",
]
[tool.setuptools_scm]
version_file = "cerr/_version.py"
# Drop the +g<sha> local segment so dev builds are uploadable to TestPyPI
# (PyPI rejects local versions). A clean tag still yields e.g. 0.7.0.
local_scheme = "no-local-version"
[tool.ruff.lint]
select = ["NPY201"]