forked from ANCPLabOldenburg/BIDS-Manager
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpyproject.toml
More file actions
168 lines (148 loc) · 6.2 KB
/
Copy pathpyproject.toml
File metadata and controls
168 lines (148 loc) · 6.2 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "bids-manager"
version = "1.2.5.2"
description = "Schema-driven BIDS converter, curator, and editor (re-imagination of BIDS-Manager v0.2.5)"
readme = "README.md"
license = "MIT"
license-files = ["LICENSE"]
authors = [
{name = "Karel Lopez Vilaret", email = "karel.mauricio.lopez.vilaret@uni-oldenburg.de"},
{name = "Karel Lopez Vilaret"},
{name = "Jochem Rieger"},
]
maintainers = [
{name = "ANCP Lab, University of Oldenburg", email = "karel.mauricio.lopez.vilaret@uni-oldenburg.de"},
]
keywords = ["BIDS", "DICOM", "EEG", "MEG", "GUI", "Neuroimaging"]
requires-python = ">=3.10,<3.15"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: X11 Applications :: Qt",
"Intended Audience :: Science/Research",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Medical Science Apps.",
]
# Core dependencies.
# Bounds strategy:
# lower bound = oldest version that works with any supported Python (3.10+).
# upper bound = latest version tested in the reference env (Python 3.10 venv
# with pandas-3 strict-string-dtype simulated via
# pd.options.future.infer_string; Python 3.14 venv tested
# separately by the user).
# On older Pythons pip picks the newest release that fits both the version
# range AND that Python's compatibility.
dependencies = [
# Schema engine. The keystone of the architecture.
"bidsschematools>=1.0,<=1.2.2",
"ancpbids>=0.3,<=0.3.1",
# BIDS validation engine, and the interpreter of the BIDS schema. The Editor
# validator + ``bidsmgr-validate`` delegate to bidsval (schema-driven,
# pydantic-typed, false-positive-verified against the reference validator),
# and since 0.1.0 ``bidsmgr/schema/`` reads which sidecar fields the standard
# declares from ``bidsval.schema`` rather than deriving them again here (see
# CLAUDE.md guard 8). It pulls only deps BIDS Manager already ships
# (bidsschematools, pydantic, nibabel, pandas, mne), so the footprint barely
# changes. 0.1.0 is the first release carrying that namespace.
"bidsval>=0.1.0,<0.2.0",
# GUI.
"pyqt6>=6.5,<=6.11.0",
# Strongly-typed core abstractions.
"pydantic>=2.6,<=2.13.4",
# MRI conversion stack. dcm2niix invoked directly.
"dcm2niix>=1.0.20240202,<=1.0.20260416",
"pydicom>=2.4,<=3.0.2",
"nibabel>=5.0,<=5.4.2",
# PET. pet2bids is the reference implementation from the OpenNeuroPET group,
# and the work it does that we would otherwise duplicate is real: reading
# PMOD blood curves, and parsing the ECAT7 headers our own reader skims.
#
# It does NOT bring its own dcm2niix. It looks for one on PATH and only
# unzips its bundled copy when it finds none, so the binary pinned above is
# the one both of us use. BIDS Manager sets DCM2NIIX_PATH explicitly so
# there is never a question about which.
"pypet2bids>=1.5.1,<2",
# EEG / MEG / iEEG conversion stack.
"mne>=1.6,<=1.12.1",
"mne-bids>=0.15,<=0.17.0",
"edfio>=0.3,<=0.4.13",
# Physio (Siemens PhysioLog DICOM to BIDS): vendored at
# ``bidsmgr.vendor.bidsphysio`` (MIT, see that subdir's LICENSE).
# No transitive setuptools cap required as a result.
# Data handling.
"pandas>=2.0,<3.0",
"numpy>=1.26,<3.0",
"joblib>=1.3,<=1.5.3",
# System info (CPU thread count, total RAM) shown in Settings and used
# to cap the parallel-workers spinboxes. Already pulled in transitively
# by joblib/loky; declared explicitly so the cap never silently breaks.
"psutil>=5.9,<=7.0.0",
# Editor viewer (NIfTI slices + MEG/EEG time-series + PSD, all
# rendered in-app with pyqtgraph - no matplotlib dependency).
"pyqtgraph>=0.13,<=0.14.0",
"PyOpenGL>=3.1,<=3.1.10",
# GUI icons. Ships its own MDI6 / Font Awesome / Phosphor TTFs so
# toolbar / tab / chip glyphs render identically on macOS, Linux,
# and Windows instead of falling back to per-OS emoji fonts.
"qtawesome>=1.3,<=1.4.2",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-qt>=4.4",
"ruff>=0.4",
"build>=1.0",
"twine>=4.0",
]
[project.urls]
Homepage = "https://github.com/ANCPLabOldenburg/BIDS-Manager"
Repository = "https://github.com/ANCPLabOldenburg/BIDS-Manager"
Documentation = "https://ancplaboldenburg.github.io/bids_manager_documentation/"
Tracker = "https://github.com/ANCPLabOldenburg/BIDS-Manager/issues"
# Console entry points. All routed through the ``bidsmgr`` package.
# The PyPI distribution is ``bids-manager`` but the import name is
# ``bidsmgr`` (same pattern as ``pip install scikit-learn`` then
# ``import sklearn``).
[project.scripts]
bidsmgr = "bidsmgr.main:main"
bidsmgr-create = "bidsmgr.cli.create:main"
bidsmgr-project = "bidsmgr.cli.project:main"
bidsmgr-scan = "bidsmgr.cli.scan:main"
bidsmgr-convert = "bidsmgr.cli.convert:main"
bidsmgr-rebuild = "bidsmgr.cli.rebuild:main"
bidsmgr-metadata = "bidsmgr.cli.metadata:main"
bidsmgr-validate = "bidsmgr.cli.validate:main"
[tool.setuptools]
include-package-data = true
[tool.setuptools.packages.find]
include = ["bidsmgr*"]
[tool.setuptools.package-data]
"bidsmgr.gui" = [
"*.qss",
"assets/*.png",
"assets/*.jpg",
"assets/*.jpeg",
"assets/macos/*.png",
"assets/macos/*.icns",
"assets/windows/*.ico",
]
"bidsmgr.schema" = ["bundled/**/*"]
"bidsmgr.vendor" = ["README.md"]
"bidsmgr.vendor.bidsphysio" = ["LICENSE"]
[tool.pytest.ini_options]
pythonpath = ["."]
testpaths = ["tests"]
markers = [
"real_data: requires real datasets at /Users/karelo/Development/datasets/BIDS_Manager/raw_data, gated on env vars BIDS_MANAGER_REAL_{MRI,MEG,EEG}_DATA",
"gui: pytest-qt smoke tests, headless OK with QT_QPA_PLATFORM=offscreen",
]