splineops 0.3.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. splineops-0.3.4/.gitignore +168 -0
  2. splineops-0.3.4/LICENSE +30 -0
  3. splineops-0.3.4/PKG-INFO +241 -0
  4. splineops-0.3.4/README.md +151 -0
  5. splineops-0.3.4/pyproject.toml +99 -0
  6. splineops-0.3.4/splineops/__init__.py +3 -0
  7. splineops-0.3.4/splineops/bases/__init__.py +0 -0
  8. splineops-0.3.4/splineops/bases/bspline0basis.py +60 -0
  9. splineops-0.3.4/splineops/bases/bspline1basis.py +30 -0
  10. splineops-0.3.4/splineops/bases/bspline2basis.py +39 -0
  11. splineops-0.3.4/splineops/bases/bspline3basis.py +38 -0
  12. splineops-0.3.4/splineops/bases/bspline4basis.py +54 -0
  13. splineops-0.3.4/splineops/bases/bspline5basis.py +63 -0
  14. splineops-0.3.4/splineops/bases/bspline6basis.py +98 -0
  15. splineops-0.3.4/splineops/bases/bspline7basis.py +96 -0
  16. splineops-0.3.4/splineops/bases/bspline8basis.py +141 -0
  17. splineops-0.3.4/splineops/bases/bspline9basis.py +167 -0
  18. splineops-0.3.4/splineops/bases/keysbasis.py +42 -0
  19. splineops-0.3.4/splineops/bases/linearbasis.py +3 -0
  20. splineops-0.3.4/splineops/bases/nearestneighborbasis.py +4 -0
  21. splineops-0.3.4/splineops/bases/omoms0basis.py +4 -0
  22. splineops-0.3.4/splineops/bases/omoms1basis.py +3 -0
  23. splineops-0.3.4/splineops/bases/omoms2basis.py +94 -0
  24. splineops-0.3.4/splineops/bases/omoms3basis.py +46 -0
  25. splineops-0.3.4/splineops/bases/omoms4basis.py +162 -0
  26. splineops-0.3.4/splineops/bases/omoms5basis.py +84 -0
  27. splineops-0.3.4/splineops/bases/splinebasis.py +93 -0
  28. splineops-0.3.4/splineops/bases/utils.py +77 -0
  29. splineops-0.3.4/splineops/interpolate/__init__.py +0 -0
  30. splineops-0.3.4/splineops/interpolate/tensorspline.py +422 -0
  31. splineops-0.3.4/splineops/interpolate/utils.py +308 -0
  32. splineops-0.3.4/splineops/modes/__init__.py +0 -0
  33. splineops-0.3.4/splineops/modes/extensionmode.py +22 -0
  34. splineops-0.3.4/splineops/modes/finitesupportcoefficients.py +89 -0
  35. splineops-0.3.4/splineops/modes/narrowmirroring.py +54 -0
  36. splineops-0.3.4/splineops/modes/utils.py +35 -0
  37. splineops-0.3.4/splineops/utils/__init__.py +0 -0
  38. splineops-0.3.4/splineops/utils/interop.py +13 -0
@@ -0,0 +1,168 @@
1
+ # JetBrains
2
+ .idea/
3
+
4
+ # VS Code
5
+ .vscode/
6
+
7
+ # macOS
8
+ .DS_Store
9
+
10
+ # Byte-compiled / optimized / DLL files
11
+ __pycache__/
12
+ *.py[cod]
13
+ *$py.class
14
+
15
+ # C extensions
16
+ *.so
17
+
18
+ # Distribution / packaging
19
+ .Python
20
+ build/
21
+ develop-eggs/
22
+ dist/
23
+ downloads/
24
+ eggs/
25
+ .eggs/
26
+ lib/
27
+ lib64/
28
+ parts/
29
+ sdist/
30
+ var/
31
+ wheels/
32
+ share/python-wheels/
33
+ *.egg-info/
34
+ .installed.cfg
35
+ *.egg
36
+ MANIFEST
37
+
38
+ # PyInstaller
39
+ # Usually these files are written by a python script from a template
40
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
41
+ *.manifest
42
+ *.spec
43
+
44
+ # Installer logs
45
+ pip-log.txt
46
+ pip-delete-this-directory.txt
47
+
48
+ # Unit test / coverage reports
49
+ htmlcov/
50
+ .tox/
51
+ .nox/
52
+ .coverage
53
+ .coverage.*
54
+ .cache
55
+ nosetests.xml
56
+ coverage.xml
57
+ *.cover
58
+ *.py,cover
59
+ .hypothesis/
60
+ .pytest_cache/
61
+ cover/
62
+
63
+ # Translations
64
+ *.mo
65
+ *.pot
66
+
67
+ # Django stuff:
68
+ *.log
69
+ local_settings.py
70
+ db.sqlite3
71
+ db.sqlite3-journal
72
+
73
+ # Flask stuff:
74
+ instance/
75
+ .webassets-cache
76
+
77
+ # Scrapy stuff:
78
+ .scrapy
79
+
80
+ # Sphinx documentation
81
+ docs/_build/
82
+ docs/_contents/
83
+ docs/sg_execution_times.rst
84
+ docs/auto_examples/
85
+ docs/gen_modules/
86
+ docs/notebooks_binder/
87
+ docs/notebooks_jupyterlite/
88
+
89
+ # PyBuilder
90
+ .pybuilder/
91
+ target/
92
+
93
+ # Jupyter Notebook
94
+ .ipynb_checkpoints
95
+
96
+ # IPython
97
+ profile_default/
98
+ ipython_config.py
99
+
100
+ # pyenv
101
+ # For a library or package, you might want to ignore these files since the code is
102
+ # intended to run in multiple environments; otherwise, check them in:
103
+ # .python-version
104
+
105
+ # pipenv
106
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
107
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
108
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
109
+ # install all needed dependencies.
110
+ #Pipfile.lock
111
+
112
+ # poetry
113
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
114
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
115
+ # commonly ignored for libraries.
116
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
117
+ #poetry.lock
118
+
119
+ # pdm
120
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
121
+ #pdm.lock
122
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
123
+ # in version control.
124
+ # https://pdm.fming.dev/#use-with-ide
125
+ .pdm.toml
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .venv
140
+ env/
141
+ venv/
142
+ ENV/
143
+ env.bak/
144
+ venv.bak/
145
+
146
+ # Spyder project settings
147
+ .spyderproject
148
+ .spyproject
149
+
150
+ # Rope project settings
151
+ .ropeproject
152
+
153
+ # mkdocs documentation
154
+ /site
155
+
156
+ # mypy
157
+ .mypy_cache/
158
+ .dmypy.json
159
+ dmypy.json
160
+
161
+ # Pyre type checker
162
+ .pyre/
163
+
164
+ # pytype static type analyzer
165
+ .pytype/
166
+
167
+ # Cython debug symbols
168
+ cython_debug/
@@ -0,0 +1,30 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2024, splineops
4
+ Copyright (c) 2023-2024, EPFL (Dimitris Perdios, Pablo Garcia-Amorena)
5
+ Copyright (c) 2021-2022, EPFL (Dimitris Perdios)
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions are met:
9
+
10
+ 1. Redistributions of source code must retain the above copyright notice, this
11
+ list of conditions and the following disclaimer.
12
+
13
+ 2. Redistributions in binary form must reproduce the above copyright notice,
14
+ this list of conditions and the following disclaimer in the documentation
15
+ and/or other materials provided with the distribution.
16
+
17
+ 3. Neither the name of the copyright holder nor the names of its
18
+ contributors may be used to endorse or promote products derived from
19
+ this software without specific prior written permission.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,241 @@
1
+ Metadata-Version: 2.3
2
+ Name: splineops
3
+ Version: 0.3.4
4
+ Summary: Spline signal processing in N-D with support for GPU computing.
5
+ Project-URL: download, https://github.com/splineops/splineops.git
6
+ Project-URL: homepage, https://splineops.github.io/
7
+ Author: Dimitris Perdios, Pablo Garcia-Amorena
8
+ License: BSD 3-Clause License
9
+
10
+ Copyright (c) 2024, splineops
11
+ Copyright (c) 2023-2024, EPFL (Dimitris Perdios, Pablo Garcia-Amorena)
12
+ Copyright (c) 2021-2022, EPFL (Dimitris Perdios)
13
+
14
+ Redistribution and use in source and binary forms, with or without
15
+ modification, are permitted provided that the following conditions are met:
16
+
17
+ 1. Redistributions of source code must retain the above copyright notice, this
18
+ list of conditions and the following disclaimer.
19
+
20
+ 2. Redistributions in binary form must reproduce the above copyright notice,
21
+ this list of conditions and the following disclaimer in the documentation
22
+ and/or other materials provided with the distribution.
23
+
24
+ 3. Neither the name of the copyright holder nor the names of its
25
+ contributors may be used to endorse or promote products derived from
26
+ this software without specific prior written permission.
27
+
28
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ License-File: LICENSE
39
+ Classifier: Development Status :: 4 - Beta
40
+ Classifier: Intended Audience :: Science/Research
41
+ Classifier: License :: OSI Approved :: BSD License
42
+ Classifier: Programming Language :: Python :: 3.10
43
+ Classifier: Programming Language :: Python :: 3.11
44
+ Classifier: Programming Language :: Python :: 3.12
45
+ Classifier: Topic :: Scientific/Engineering
46
+ Requires-Python: >=3.10
47
+ Requires-Dist: numpy>=1.26
48
+ Requires-Dist: scipy>=1.11
49
+ Provides-Extra: dev
50
+ Requires-Dist: cupy>=12.2; extra == 'dev'
51
+ Requires-Dist: hatch>=1.9; extra == 'dev'
52
+ Requires-Dist: ipython>=8.26; extra == 'dev'
53
+ Requires-Dist: matplotlib>=3.8; extra == 'dev'
54
+ Requires-Dist: pooch>=1.8; extra == 'dev'
55
+ Requires-Dist: pytest>=6.0; extra == 'dev'
56
+ Requires-Dist: tox>=4.13; extra == 'dev'
57
+ Provides-Extra: dev-cupy
58
+ Requires-Dist: black>=23.10; extra == 'dev-cupy'
59
+ Requires-Dist: cupy>=12.2; extra == 'dev-cupy'
60
+ Requires-Dist: hatch>=1.9; extra == 'dev-cupy'
61
+ Requires-Dist: ipython>=8.26; extra == 'dev-cupy'
62
+ Requires-Dist: matplotlib>=3.8; extra == 'dev-cupy'
63
+ Requires-Dist: mypy>=1.8; extra == 'dev-cupy'
64
+ Requires-Dist: pooch>=1.8; extra == 'dev-cupy'
65
+ Requires-Dist: pytest>=6.0; extra == 'dev-cupy'
66
+ Requires-Dist: tox>=4.13; extra == 'dev-cupy'
67
+ Provides-Extra: docs
68
+ Requires-Dist: ipython>=8.26; extra == 'docs'
69
+ Requires-Dist: jupyterlite-pyodide-kernel>=0.4; extra == 'docs'
70
+ Requires-Dist: jupyterlite-sphinx>=0.16; extra == 'docs'
71
+ Requires-Dist: matplotlib>=3.8; extra == 'docs'
72
+ Requires-Dist: myst-parser>=3.0; extra == 'docs'
73
+ Requires-Dist: pooch>=1.8; extra == 'docs'
74
+ Requires-Dist: pydata-sphinx-theme>=0.15; extra == 'docs'
75
+ Requires-Dist: sphinx-copybutton>=0.5; extra == 'docs'
76
+ Requires-Dist: sphinx-design>=0.6; extra == 'docs'
77
+ Requires-Dist: sphinx-gallery>=0.17; extra == 'docs'
78
+ Requires-Dist: sphinx-prompt>=1.8; extra == 'docs'
79
+ Requires-Dist: sphinx-remove-toctrees>=1.0; extra == 'docs'
80
+ Requires-Dist: sphinx>=7.3; extra == 'docs'
81
+ Provides-Extra: tests
82
+ Requires-Dist: hatch>=1.9; extra == 'tests'
83
+ Requires-Dist: pytest>=6.0; extra == 'tests'
84
+ Requires-Dist: tox>=4.13; extra == 'tests'
85
+ Provides-Extra: visualization
86
+ Requires-Dist: ipython>=8.26; extra == 'visualization'
87
+ Requires-Dist: matplotlib>=3.8; extra == 'visualization'
88
+ Requires-Dist: pooch>=1.8; extra == 'visualization'
89
+ Description-Content-Type: text/markdown
90
+
91
+ # SplineOps: Spline Operations
92
+
93
+ SplineOps is a Python-based N-dimensional signal processing library with
94
+ support for GPU computing.
95
+
96
+ ## Installation
97
+
98
+ Install minimal dependencies in a dedicated environment
99
+ (shown here using [Mamba](https://mamba.readthedocs.io/en/latest/)).
100
+
101
+ Create and activate your environment
102
+
103
+ ```shell
104
+ mamba create -n myenv
105
+ mamba activate myenv
106
+ ```
107
+
108
+ Make sure you have the conda-forge channel added to your conda configuration.
109
+ If not, you can add it using
110
+
111
+ ```shell
112
+ conda config --add channels conda-forge
113
+ ```
114
+
115
+ Minimal requirements:
116
+
117
+ ```shell
118
+ mamba install numpy scipy
119
+ ```
120
+
121
+ Simply install `splineops` from its wheel using `pip`.
122
+ *IMPORTANT:*
123
+ Not yet uploaded on pypi or anaconda/mamba.
124
+ A wheel is needed and can be obtained from the source (see Packaging below)
125
+
126
+ ```shell
127
+ pip install splineops
128
+ ```
129
+
130
+ To run the examples, `matplotlib`, `pooch` (for built-in image datasets)
131
+ and `IPython` (for Python UI widgets) will also be required.
132
+
133
+ ```shell
134
+ mamba install matplotlib pooch IPython
135
+ ```
136
+
137
+ ## Formatting, type checking, and testing
138
+
139
+ Formatting and type checking is performed using the following commands
140
+
141
+ ```shell
142
+ tox -e format
143
+ tox -e type
144
+ ```
145
+
146
+ Testing requires a valid environment with a supported Python version and `tox`
147
+ installed. Tests can be run with the following command (automatic pick of the
148
+ Python version).
149
+
150
+ ```shell
151
+ tox
152
+ ```
153
+
154
+ Tests can also be launched for a specific Python version (must match the one
155
+ installed in the active environment)
156
+
157
+ ```shell
158
+ tox -e py310
159
+ tox -e py311
160
+ tox -e py312
161
+ ```
162
+
163
+ *IMPORTANT:* Since CI is not implemented, make sure to run, pass and/or fix
164
+ `tox -e format`, `tox -e type` and `tox`.
165
+
166
+ ## Packaging
167
+
168
+ Using `tox` (preferred)
169
+
170
+ ```shell
171
+ tox -e build
172
+ ```
173
+
174
+ Using `hatch`
175
+
176
+ ```shell
177
+ hatch build -t wheel
178
+ ```
179
+
180
+ ## Development environment
181
+
182
+ Easiest way to install dev dependencies
183
+
184
+ ```shell
185
+ mamba install numpy scipy matplotlib pooch IPython black mypy tox hatch pytest
186
+ ```
187
+
188
+ Install `splineops` development environment in editable mode
189
+
190
+ ```shell
191
+ pip install -e .[dev]
192
+ ```
193
+
194
+ ## GPU compatibility
195
+
196
+ You can use SplineOps with `cupy`. If a specific CUDA version is required do
197
+
198
+ ```shell
199
+ mamba install cupy cuda-version=12.3
200
+ ```
201
+
202
+ Install `splineops` cupy development environment in editable mode
203
+
204
+ ```shell
205
+ pip install -e .[dev_cupy]
206
+ ```
207
+
208
+ Potential other CuPy libraries
209
+ ([CuPy from Conda-Forge](https://docs.cupy.dev/en/stable/install.html#installing-cupy-from-conda-forge))
210
+
211
+ ```shell
212
+ mamba install cupy cutensor cudnn nccl
213
+ ```
214
+
215
+ ## Building the documentation
216
+
217
+ To build the Sphinx documentation, install `splineops` doc dependencies
218
+
219
+ ```shell
220
+ mamba install numpy scipy matplotlib pooch IPython sphinx sphinx-gallery sphinx-prompt sphinx-copybutton sphinx-remove-toctrees pydata-sphinx-theme sphinx-design myst-parser jupyterlite-sphinx jupyterlite-pyodide-kernel
221
+ ```
222
+
223
+ Install `splineops` doc environment in editable mode
224
+
225
+ ```shell
226
+ pip install -e .[docs]
227
+ ```
228
+
229
+ Navigate to the `docs` directory and run the `make html` command
230
+
231
+ ```shell
232
+ cd docs
233
+ make html
234
+ ```
235
+
236
+ Then, go to `docs/_build/html` and open `index.html` to navigate the
237
+ documentation locally.
238
+
239
+ If you want to make a "clean" build, go to `docs` and manually delete the folders `_build`, `auto_examples`, `gen_modules`, `notebooks_jupyterlite` and the file `sg_execution_times.rst`.
240
+ Why isn't this done automatically? Because Sphinx optimizes speed and removes redundant tasks, by not re-creating the examples' notebooks if they have already been created.
241
+ If you for example modify the name of the examples' files, you will have to delete at least the folder `auto_examples`. Otherwise, the old examples' files will not have disappeared automatically, and Sphinx will raise an internal warning referring to a toctree.
@@ -0,0 +1,151 @@
1
+ # SplineOps: Spline Operations
2
+
3
+ SplineOps is a Python-based N-dimensional signal processing library with
4
+ support for GPU computing.
5
+
6
+ ## Installation
7
+
8
+ Install minimal dependencies in a dedicated environment
9
+ (shown here using [Mamba](https://mamba.readthedocs.io/en/latest/)).
10
+
11
+ Create and activate your environment
12
+
13
+ ```shell
14
+ mamba create -n myenv
15
+ mamba activate myenv
16
+ ```
17
+
18
+ Make sure you have the conda-forge channel added to your conda configuration.
19
+ If not, you can add it using
20
+
21
+ ```shell
22
+ conda config --add channels conda-forge
23
+ ```
24
+
25
+ Minimal requirements:
26
+
27
+ ```shell
28
+ mamba install numpy scipy
29
+ ```
30
+
31
+ Simply install `splineops` from its wheel using `pip`.
32
+ *IMPORTANT:*
33
+ Not yet uploaded on pypi or anaconda/mamba.
34
+ A wheel is needed and can be obtained from the source (see Packaging below)
35
+
36
+ ```shell
37
+ pip install splineops
38
+ ```
39
+
40
+ To run the examples, `matplotlib`, `pooch` (for built-in image datasets)
41
+ and `IPython` (for Python UI widgets) will also be required.
42
+
43
+ ```shell
44
+ mamba install matplotlib pooch IPython
45
+ ```
46
+
47
+ ## Formatting, type checking, and testing
48
+
49
+ Formatting and type checking is performed using the following commands
50
+
51
+ ```shell
52
+ tox -e format
53
+ tox -e type
54
+ ```
55
+
56
+ Testing requires a valid environment with a supported Python version and `tox`
57
+ installed. Tests can be run with the following command (automatic pick of the
58
+ Python version).
59
+
60
+ ```shell
61
+ tox
62
+ ```
63
+
64
+ Tests can also be launched for a specific Python version (must match the one
65
+ installed in the active environment)
66
+
67
+ ```shell
68
+ tox -e py310
69
+ tox -e py311
70
+ tox -e py312
71
+ ```
72
+
73
+ *IMPORTANT:* Since CI is not implemented, make sure to run, pass and/or fix
74
+ `tox -e format`, `tox -e type` and `tox`.
75
+
76
+ ## Packaging
77
+
78
+ Using `tox` (preferred)
79
+
80
+ ```shell
81
+ tox -e build
82
+ ```
83
+
84
+ Using `hatch`
85
+
86
+ ```shell
87
+ hatch build -t wheel
88
+ ```
89
+
90
+ ## Development environment
91
+
92
+ Easiest way to install dev dependencies
93
+
94
+ ```shell
95
+ mamba install numpy scipy matplotlib pooch IPython black mypy tox hatch pytest
96
+ ```
97
+
98
+ Install `splineops` development environment in editable mode
99
+
100
+ ```shell
101
+ pip install -e .[dev]
102
+ ```
103
+
104
+ ## GPU compatibility
105
+
106
+ You can use SplineOps with `cupy`. If a specific CUDA version is required do
107
+
108
+ ```shell
109
+ mamba install cupy cuda-version=12.3
110
+ ```
111
+
112
+ Install `splineops` cupy development environment in editable mode
113
+
114
+ ```shell
115
+ pip install -e .[dev_cupy]
116
+ ```
117
+
118
+ Potential other CuPy libraries
119
+ ([CuPy from Conda-Forge](https://docs.cupy.dev/en/stable/install.html#installing-cupy-from-conda-forge))
120
+
121
+ ```shell
122
+ mamba install cupy cutensor cudnn nccl
123
+ ```
124
+
125
+ ## Building the documentation
126
+
127
+ To build the Sphinx documentation, install `splineops` doc dependencies
128
+
129
+ ```shell
130
+ mamba install numpy scipy matplotlib pooch IPython sphinx sphinx-gallery sphinx-prompt sphinx-copybutton sphinx-remove-toctrees pydata-sphinx-theme sphinx-design myst-parser jupyterlite-sphinx jupyterlite-pyodide-kernel
131
+ ```
132
+
133
+ Install `splineops` doc environment in editable mode
134
+
135
+ ```shell
136
+ pip install -e .[docs]
137
+ ```
138
+
139
+ Navigate to the `docs` directory and run the `make html` command
140
+
141
+ ```shell
142
+ cd docs
143
+ make html
144
+ ```
145
+
146
+ Then, go to `docs/_build/html` and open `index.html` to navigate the
147
+ documentation locally.
148
+
149
+ If you want to make a "clean" build, go to `docs` and manually delete the folders `_build`, `auto_examples`, `gen_modules`, `notebooks_jupyterlite` and the file `sg_execution_times.rst`.
150
+ Why isn't this done automatically? Because Sphinx optimizes speed and removes redundant tasks, by not re-creating the examples' notebooks if they have already been created.
151
+ If you for example modify the name of the examples' files, you will have to delete at least the folder `auto_examples`. Otherwise, the old examples' files will not have disappeared automatically, and Sphinx will raise an internal warning referring to a toctree.
@@ -0,0 +1,99 @@
1
+ # https://learn.scientific-python.org/development/guides/packaging-simple/
2
+
3
+ [build-system]
4
+ requires = [
5
+ "hatchling",
6
+ "hatch-vcs",
7
+ ]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "splineops"
12
+ description = "Spline signal processing in N-D with support for GPU computing."
13
+ readme = "README.md"
14
+ license.file = "LICENSE"
15
+ authors = [
16
+ { name = "Dimitris Perdios" },
17
+ { name = "Pablo Garcia-Amorena" },
18
+ ]
19
+ dynamic = ["version"]
20
+ requires-python = ">=3.10"
21
+ dependencies = [
22
+ "numpy >=1.26",
23
+ "scipy >=1.11",
24
+ ]
25
+ classifiers = [
26
+ "Topic :: Scientific/Engineering",
27
+ "Intended Audience :: Science/Research",
28
+ "Development Status :: 4 - Beta",
29
+ "License :: OSI Approved :: BSD License",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ ]
34
+ urls.download = "https://github.com/splineops/splineops.git"
35
+ urls.homepage = "https://splineops.github.io/"
36
+
37
+ [project.optional-dependencies]
38
+ visualization = [
39
+ "matplotlib >=3.8",
40
+ "pooch >= 1.8",
41
+ "IPython >= 8.26",
42
+ ]
43
+ tests = [
44
+ "tox >=4.13",
45
+ "hatch >=1.9",
46
+ "pytest >=6.0",
47
+ ]
48
+ dev_cupy = [
49
+ "splineops[dev]",
50
+ "black >=23.10",
51
+ "mypy >=1.8",
52
+ ]
53
+ dev = [
54
+ "splineops[visualization]",
55
+ "splineops[tests]",
56
+ "cupy >=12.2",
57
+ ]
58
+ docs = [
59
+ "splineops[visualization]",
60
+ "sphinx >=7.3",
61
+ "sphinx-gallery >=0.17",
62
+ "sphinx-prompt >=1.8",
63
+ "sphinx-copybutton >=0.5",
64
+ "sphinx-remove-toctrees >=1.0",
65
+ "sphinx-design >=0.6",
66
+ "pydata-sphinx-theme >=0.15",
67
+ "myst-parser >= 3.0",
68
+ "jupyterlite-sphinx >= 0.16",
69
+ "jupyterlite-pyodide-kernel >= 0.4",
70
+ ]
71
+
72
+ # Hatch tool: dynamic version from git
73
+ [tool.hatch.version]
74
+ source = "vcs"
75
+
76
+ # Hatch build
77
+ [tool.hatch.build]
78
+ exclude = [
79
+ "/docs",
80
+ "/tests",
81
+ "/examples",
82
+ ]
83
+ #include = [
84
+ # "/src",
85
+ #]
86
+ packages = [
87
+ "src/splineops",
88
+ ]
89
+
90
+ # Tests: pytest config
91
+ [tool.pytest.ini_options]
92
+ minversion = "6.0"
93
+ addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"]
94
+ xfail_strict = true
95
+ filterwarnings = ["error"]
96
+ log_cli_level = "info"
97
+ testpaths = [
98
+ "tests",
99
+ ]
@@ -0,0 +1,3 @@
1
+ import importlib.metadata
2
+
3
+ __version__ = importlib.metadata.version("splineops")
File without changes