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.
- splineops-0.3.4/.gitignore +168 -0
- splineops-0.3.4/LICENSE +30 -0
- splineops-0.3.4/PKG-INFO +241 -0
- splineops-0.3.4/README.md +151 -0
- splineops-0.3.4/pyproject.toml +99 -0
- splineops-0.3.4/splineops/__init__.py +3 -0
- splineops-0.3.4/splineops/bases/__init__.py +0 -0
- splineops-0.3.4/splineops/bases/bspline0basis.py +60 -0
- splineops-0.3.4/splineops/bases/bspline1basis.py +30 -0
- splineops-0.3.4/splineops/bases/bspline2basis.py +39 -0
- splineops-0.3.4/splineops/bases/bspline3basis.py +38 -0
- splineops-0.3.4/splineops/bases/bspline4basis.py +54 -0
- splineops-0.3.4/splineops/bases/bspline5basis.py +63 -0
- splineops-0.3.4/splineops/bases/bspline6basis.py +98 -0
- splineops-0.3.4/splineops/bases/bspline7basis.py +96 -0
- splineops-0.3.4/splineops/bases/bspline8basis.py +141 -0
- splineops-0.3.4/splineops/bases/bspline9basis.py +167 -0
- splineops-0.3.4/splineops/bases/keysbasis.py +42 -0
- splineops-0.3.4/splineops/bases/linearbasis.py +3 -0
- splineops-0.3.4/splineops/bases/nearestneighborbasis.py +4 -0
- splineops-0.3.4/splineops/bases/omoms0basis.py +4 -0
- splineops-0.3.4/splineops/bases/omoms1basis.py +3 -0
- splineops-0.3.4/splineops/bases/omoms2basis.py +94 -0
- splineops-0.3.4/splineops/bases/omoms3basis.py +46 -0
- splineops-0.3.4/splineops/bases/omoms4basis.py +162 -0
- splineops-0.3.4/splineops/bases/omoms5basis.py +84 -0
- splineops-0.3.4/splineops/bases/splinebasis.py +93 -0
- splineops-0.3.4/splineops/bases/utils.py +77 -0
- splineops-0.3.4/splineops/interpolate/__init__.py +0 -0
- splineops-0.3.4/splineops/interpolate/tensorspline.py +422 -0
- splineops-0.3.4/splineops/interpolate/utils.py +308 -0
- splineops-0.3.4/splineops/modes/__init__.py +0 -0
- splineops-0.3.4/splineops/modes/extensionmode.py +22 -0
- splineops-0.3.4/splineops/modes/finitesupportcoefficients.py +89 -0
- splineops-0.3.4/splineops/modes/narrowmirroring.py +54 -0
- splineops-0.3.4/splineops/modes/utils.py +35 -0
- splineops-0.3.4/splineops/utils/__init__.py +0 -0
- 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/
|
splineops-0.3.4/LICENSE
ADDED
|
@@ -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.
|
splineops-0.3.4/PKG-INFO
ADDED
|
@@ -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
|
+
]
|
|
File without changes
|