splinekit 0.2.5__tar.gz → 0.2.7__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 (317) hide show
  1. {splinekit-0.2.5 → splinekit-0.2.7}/.github/workflows/release.yml +0 -35
  2. splinekit-0.2.7/.virtual_documents/dev/Jupyter/spline_plot.ipynb +323 -0
  3. {splinekit-0.2.5 → splinekit-0.2.7}/PKG-INFO +9 -1
  4. {splinekit-0.2.5 → splinekit-0.2.7}/README.md +8 -0
  5. splinekit-0.2.7/dev/Accelerated/dispatch.sh +7 -0
  6. {splinekit-0.2.5 → splinekit-0.2.7/dev/Accelerated}/pyproject.toml +1 -3
  7. splinekit-0.2.7/dev/Accelerated/release.yml +105 -0
  8. {splinekit-0.2.5/src/splinekit → splinekit-0.2.7/dev/Accelerated}/spline_padding.py +2 -2
  9. splinekit-0.2.7/dev/Jupyter/bspline/members/bspline_member.ipynb +109 -0
  10. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/stability}/bspline_numeric_stability.ipynb +6 -3
  11. splinekit-0.2.7/dev/Jupyter/padding/change-basis/padding_bases.ipynb +222 -0
  12. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/padding/padding}/padding_data.ipynb +6 -2
  13. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/padding/padding}/padding_speed.ipynb +2 -1
  14. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/bounds}/spline_bounds.ipynb +4 -1
  15. splinekit-0.2.7/dev/Jupyter/periodic-spline/eval/spline_at_array.ipynb +149 -0
  16. splinekit-0.2.7/dev/Jupyter/periodic-spline/eval/spline_at_scalar.ipynb +162 -0
  17. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/eval}/spline_evaluation_speed.ipynb +8 -4
  18. splinekit-0.2.7/dev/Jupyter/periodic-spline/fourier/spline_fourier.ipynb +186 -0
  19. splinekit-0.2.7/dev/Jupyter/periodic-spline/ops/spline_simple_ops.ipynb +192 -0
  20. splinekit-0.2.7/dev/Jupyter/periodic-spline/plot/spline_plot.ipynb +562 -0
  21. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/poly}/spline_polynomials.ipynb +5 -2
  22. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/random-1d}/spline_random_1d.ipynb +5 -2
  23. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/random-2d}/spline_random_2d.ipynb +7 -4
  24. splinekit-0.2.7/dev/Jupyter/periodic-spline/stats/spline_stats.ipynb +218 -0
  25. splinekit-0.2.7/dev/PurePython/dispatch.sh +10 -0
  26. splinekit-0.2.7/dev/PurePython/pyproject.toml +97 -0
  27. splinekit-0.2.7/dev/PurePython/release.yml +36 -0
  28. {splinekit-0.2.5/dev/PythonSrc → splinekit-0.2.7/dev}/PurePython/spline_padding.py +37 -10
  29. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_bases.rst +20 -21
  30. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_inverse.rst +2 -2
  31. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_m_scale.rst +3 -2
  32. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_members.rst +4 -5
  33. splinekit-0.2.7/docs/demos/bspline/bspline_numeric_stability.ipynb.gz +0 -0
  34. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_poles.rst +2 -2
  35. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_stability.rst +3 -4
  36. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/bspline_vs_pi.rst +2 -2
  37. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/hello_bspline.rst +4 -5
  38. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/spline_engineer_func.rst +7 -9
  39. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/spline_vs_poly.rst +5 -5
  40. splinekit-0.2.7/docs/demos/padding/change_basis.rst +127 -0
  41. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/padding/index.rst +1 -0
  42. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/padding/padding.rst +20 -18
  43. splinekit-0.2.7/docs/demos/padding/padding_speed.ipynb.gz +0 -0
  44. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/bounds.rst +2 -2
  45. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/constructors.rst +4 -4
  46. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/evaluation.rst +5 -5
  47. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/index.rst +3 -0
  48. splinekit-0.2.7/docs/demos/spline1d/plot.rst +23 -0
  49. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/polynomials.rst +3 -3
  50. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/random1d.rst +4 -4
  51. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/spline1d/random2d.rst +1 -1
  52. splinekit-0.2.7/docs/demos/spline1d/simple_ops.rst +41 -0
  53. splinekit-0.2.7/docs/demos/spline1d/spline_evaluation_speed.ipynb.gz +0 -0
  54. splinekit-0.2.7/docs/demos/spline1d/stats.rst +47 -0
  55. {splinekit-0.2.5 → splinekit-0.2.7}/docs/glossary/glossary-numbers.rst +2 -2
  56. splinekit-0.2.7/pyproject.toml +100 -0
  57. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/bases.py +9 -7
  58. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/periodic_spline_1d.py +4 -4
  59. {splinekit-0.2.5/dev/PythonSrc/Accelerated → splinekit-0.2.7/src/splinekit}/spline_padding.py +2 -2
  60. splinekit-0.2.5/dev/Jupyter/padding_bases.ipynb +0 -335
  61. splinekit-0.2.5/dev/Jupyter/spline_at_array.ipynb +0 -365
  62. splinekit-0.2.5/dev/Jupyter/spline_at_scalar.ipynb +0 -1107
  63. splinekit-0.2.5/dev/cpJupyter.sh +0 -6
  64. splinekit-0.2.5/dev/gzJupyter.sh +0 -10
  65. splinekit-0.2.5/dev/sk.numbers +0 -0
  66. splinekit-0.2.5/dev/zipJupyter.sh +0 -11
  67. splinekit-0.2.5/docs/demos/bspline/bspline_numeric_stability.ipynb.gz +0 -0
  68. splinekit-0.2.5/docs/demos/padding/padding_speed.ipynb.gz +0 -0
  69. splinekit-0.2.5/docs/demos/spline1d/spline_evaluation_speed.ipynb.gz +0 -0
  70. {splinekit-0.2.5 → splinekit-0.2.7}/.github/workflows/deploy-docs.yml +0 -0
  71. {splinekit-0.2.5 → splinekit-0.2.7}/.github/workflows/test.yml +0 -0
  72. {splinekit-0.2.5 → splinekit-0.2.7}/.gitignore +0 -0
  73. {splinekit-0.2.5 → splinekit-0.2.7}/.jupyterlite.doit.db +0 -0
  74. {splinekit-0.2.5 → splinekit-0.2.7}/CMakeLists.txt +0 -0
  75. {splinekit-0.2.5 → splinekit-0.2.7}/LICENSE +0 -0
  76. {splinekit-0.2.5 → splinekit-0.2.7}/_output/api/translations/all.json +0 -0
  77. {splinekit-0.2.5 → splinekit-0.2.7}/_output/api/translations/en.json +0 -0
  78. {splinekit-0.2.5 → splinekit-0.2.7}/_output/api/workspaces/all.json +0 -0
  79. {splinekit-0.2.5 → splinekit-0.2.7}/_output/bootstrap.js +0 -0
  80. {splinekit-0.2.5 → splinekit-0.2.7}/_output/config-utils.js +0 -0
  81. {splinekit-0.2.5 → splinekit-0.2.7}/_output/consoles/favicon.ico +0 -0
  82. {splinekit-0.2.5 → splinekit-0.2.7}/_output/consoles/index.html +0 -0
  83. {splinekit-0.2.5 → splinekit-0.2.7}/_output/consoles/jupyter-lite.ipynb +0 -0
  84. {splinekit-0.2.5 → splinekit-0.2.7}/_output/consoles/jupyter-lite.json +0 -0
  85. {splinekit-0.2.5 → splinekit-0.2.7}/_output/consoles/package.json +0 -0
  86. {splinekit-0.2.5 → splinekit-0.2.7}/_output/doc/tree/index.html +0 -0
  87. {splinekit-0.2.5 → splinekit-0.2.7}/_output/doc/workspaces/index.html +0 -0
  88. {splinekit-0.2.5 → splinekit-0.2.7}/_output/edit/favicon.ico +0 -0
  89. {splinekit-0.2.5 → splinekit-0.2.7}/_output/edit/index.html +0 -0
  90. {splinekit-0.2.5 → splinekit-0.2.7}/_output/edit/jupyter-lite.ipynb +0 -0
  91. {splinekit-0.2.5 → splinekit-0.2.7}/_output/edit/jupyter-lite.json +0 -0
  92. {splinekit-0.2.5 → splinekit-0.2.7}/_output/edit/package.json +0 -0
  93. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/install.json +0 -0
  94. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/package.json +0 -0
  95. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/package.json.orig +0 -0
  96. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/plugin.json +0 -0
  97. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js +0 -0
  98. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/48.0570848d2b31a5354b7d.js.LICENSE.txt +0 -0
  99. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/509.d51a8122d1920ac82323.js +0 -0
  100. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/720.094c38d70b1dec0ceea7.js +0 -0
  101. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/remoteEntry.94495aac41d2fef6ad41.js +0 -0
  102. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/style.js +0 -0
  103. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab-jupytext/static/third-party-licenses.json +0 -0
  104. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/install.json +0 -0
  105. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/package.json +0 -0
  106. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/static/568.1e2faa2ba0bbe59c4780.js +0 -0
  107. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/static/747.67662283a5707eeb4d4c.js +0 -0
  108. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/static/remoteEntry.5cbb9d2323598fbda535.js +0 -0
  109. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/static/style.js +0 -0
  110. {splinekit-0.2.5 → splinekit-0.2.7}/_output/extensions/jupyterlab_pygments/static/third-party-licenses.json +0 -0
  111. {splinekit-0.2.5 → splinekit-0.2.7}/_output/icon-120x120.png +0 -0
  112. {splinekit-0.2.5 → splinekit-0.2.7}/_output/icon-512x512.png +0 -0
  113. {splinekit-0.2.5 → splinekit-0.2.7}/_output/index.html +0 -0
  114. {splinekit-0.2.5 → splinekit-0.2.7}/_output/jupyter-lite.ipynb +0 -0
  115. {splinekit-0.2.5 → splinekit-0.2.7}/_output/jupyter-lite.json +0 -0
  116. {splinekit-0.2.5 → splinekit-0.2.7}/_output/jupyterlite.schema.v0.json +0 -0
  117. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/favicon.ico +0 -0
  118. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/index.html +0 -0
  119. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/jupyter-lite.ipynb +0 -0
  120. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/jupyter-lite.json +0 -0
  121. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/package.json +0 -0
  122. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/tree/index.html +0 -0
  123. {splinekit-0.2.5 → splinekit-0.2.7}/_output/lab/workspaces/index.html +0 -0
  124. {splinekit-0.2.5 → splinekit-0.2.7}/_output/manifest.webmanifest +0 -0
  125. {splinekit-0.2.5 → splinekit-0.2.7}/_output/notebooks/favicon.ico +0 -0
  126. {splinekit-0.2.5 → splinekit-0.2.7}/_output/notebooks/index.html +0 -0
  127. {splinekit-0.2.5 → splinekit-0.2.7}/_output/notebooks/jupyter-lite.ipynb +0 -0
  128. {splinekit-0.2.5 → splinekit-0.2.7}/_output/notebooks/jupyter-lite.json +0 -0
  129. {splinekit-0.2.5 → splinekit-0.2.7}/_output/notebooks/package.json +0 -0
  130. {splinekit-0.2.5 → splinekit-0.2.7}/_output/package.json +0 -0
  131. {splinekit-0.2.5 → splinekit-0.2.7}/_output/repl/index.html +0 -0
  132. {splinekit-0.2.5 → splinekit-0.2.7}/_output/repl/jupyter-lite.ipynb +0 -0
  133. {splinekit-0.2.5 → splinekit-0.2.7}/_output/repl/jupyter-lite.json +0 -0
  134. {splinekit-0.2.5 → splinekit-0.2.7}/_output/repl/package.json +0 -0
  135. {splinekit-0.2.5 → splinekit-0.2.7}/_output/service-worker.js +0 -0
  136. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon-busy-1.ico +0 -0
  137. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon-busy-2.ico +0 -0
  138. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon-busy-3.ico +0 -0
  139. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon-file.ico +0 -0
  140. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon-notebook.ico +0 -0
  141. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon-terminal.ico +0 -0
  142. {splinekit-0.2.5 → splinekit-0.2.7}/_output/static/favicons/favicon.ico +0 -0
  143. {splinekit-0.2.5 → splinekit-0.2.7}/_output/tree/favicon.ico +0 -0
  144. {splinekit-0.2.5 → splinekit-0.2.7}/_output/tree/index.html +0 -0
  145. {splinekit-0.2.5 → splinekit-0.2.7}/_output/tree/jupyter-lite.ipynb +0 -0
  146. {splinekit-0.2.5 → splinekit-0.2.7}/_output/tree/jupyter-lite.json +0 -0
  147. {splinekit-0.2.5 → splinekit-0.2.7}/_output/tree/package.json +0 -0
  148. {splinekit-0.2.5 → splinekit-0.2.7}/ansi_c/spline_padding/src/spline_padding.c +0 -0
  149. {splinekit-0.2.5 → splinekit-0.2.7}/ansi_c/spline_padding/src/spline_padding.h +0 -0
  150. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_cmake/CMakeLists.txt +0 -0
  151. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_cmake/spline_padding.c +0 -0
  152. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_cmake/spline_padding.h +0 -0
  153. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/libspline_padding.dylib +0 -0
  154. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/spline_padding.c +0 -0
  155. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/spline_padding.h +0 -0
  156. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.pbxproj +0 -0
  157. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  158. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/project.xcworkspace/xcuserdata/pthevena.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  159. {splinekit-0.2.5 → splinekit-0.2.7}/dev/ANSI-C/spline_padding_xcode/spline_padding.xcodeproj/xcuserdata/pthevena.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  160. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_cardinal.ipynb +0 -0
  161. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_dual.ipynb +0 -0
  162. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_dual_property.ipynb +0 -0
  163. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_member.ipynb +0 -0
  164. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_ortho.ipynb +0 -0
  165. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_ortho_property.ipynb +0 -0
  166. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/bases}/bspline_sinc.ipynb +0 -0
  167. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/hello}/bspline_hello.ipynb +0 -0
  168. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/hello}/bspline_hello_grad.ipynb +0 -0
  169. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/hello}/bspline_hello_integral.ipynb +0 -0
  170. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/inverse}/bspline_inv.ipynb +0 -0
  171. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/inverse}/bspline_periodic_inv.ipynb +0 -0
  172. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/m-scale}/bspline_m_scale.ipynb +0 -0
  173. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/mathfunc}/bspline_gauss_exo.ipynb +0 -0
  174. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/mathfunc}/bspline_trigo_exo.ipynb +0 -0
  175. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/mathfunc}/bspline_vs_cos.ipynb +0 -0
  176. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/mathfunc}/bspline_vs_erf.ipynb +0 -0
  177. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/mathfunc}/bspline_vs_exp.ipynb +0 -0
  178. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/mathfunc}/bspline_vs_sin.ipynb +0 -0
  179. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/members}/bspline_member_diff.ipynb +0 -0
  180. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/members}/bspline_member_integral.ipynb +0 -0
  181. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/poles}/bspline_annihilate.ipynb +0 -0
  182. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/poles}/bspline_poles.ipynb +0 -0
  183. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/poly}/bspline_convolve_mono.ipynb +0 -0
  184. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/poly}/bspline_partition_mono.ipynb +0 -0
  185. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/poly}/bspline_spline_poly.ipynb +0 -0
  186. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/vs-pi}/bspline_vs_pi_as_sum.ipynb +0 -0
  187. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/bspline/vs-pi}/bspline_vs_pi_at0.ipynb +0 -0
  188. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/construct}/spline_approximation.ipynb +0 -0
  189. {splinekit-0.2.5/dev/Jupyter → splinekit-0.2.7/dev/Jupyter/periodic-spline/construct}/spline_interpolation.ipynb +0 -0
  190. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Bspline Poles.nb +0 -0
  191. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/IntervalChecks.nb +0 -0
  192. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/PeriodicSplinesChecks.nb +0 -0
  193. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/SplinePaddingChecks.nb +0 -0
  194. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Test BSplines.nb +0 -0
  195. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Test PeriodicNonuniformPiecewise.nb +0 -0
  196. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Test PeriodicSpline1D.nb +0 -0
  197. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Test SplinePadding.nb +0 -0
  198. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Test SplineUtilities.nb +0 -0
  199. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/Verify doc.nb +0 -0
  200. {splinekit-0.2.5 → splinekit-0.2.7}/dev/Wolfram/rescued Test SplinePadding.nb +0 -0
  201. {splinekit-0.2.5 → splinekit-0.2.7}/docs/.jupyterlite.doit.db +0 -0
  202. {splinekit-0.2.5 → splinekit-0.2.7}/docs/_static/custom.css +0 -0
  203. {splinekit-0.2.5 → splinekit-0.2.7}/docs/bases/01_bases.rst +0 -0
  204. {splinekit-0.2.5 → splinekit-0.2.7}/docs/bases/index.rst +0 -0
  205. {splinekit-0.2.5 → splinekit-0.2.7}/docs/bases/noxfile.py +0 -0
  206. {splinekit-0.2.5 → splinekit-0.2.7}/docs/bsplines/01_bsplines.rst +0 -0
  207. {splinekit-0.2.5 → splinekit-0.2.7}/docs/bsplines/index.rst +0 -0
  208. {splinekit-0.2.5 → splinekit-0.2.7}/docs/bsplines/noxfile.py +0 -0
  209. {splinekit-0.2.5 → splinekit-0.2.7}/docs/conf.py +0 -0
  210. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/bspline/index.rst +0 -0
  211. {splinekit-0.2.5 → splinekit-0.2.7}/docs/demos/index.rst +0 -0
  212. {splinekit-0.2.5 → splinekit-0.2.7}/docs/environment.yml +0 -0
  213. {splinekit-0.2.5 → splinekit-0.2.7}/docs/glossary/glossary-polynomials.rst +0 -0
  214. {splinekit-0.2.5 → splinekit-0.2.7}/docs/glossary/glossary-splines.rst +0 -0
  215. {splinekit-0.2.5 → splinekit-0.2.7}/docs/glossary/glossary-terminology.rst +0 -0
  216. {splinekit-0.2.5 → splinekit-0.2.7}/docs/glossary/index.rst +0 -0
  217. {splinekit-0.2.5 → splinekit-0.2.7}/docs/index.rst +0 -0
  218. {splinekit-0.2.5 → splinekit-0.2.7}/docs/installation/index.rst +0 -0
  219. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/01_bounded.rst +0 -0
  220. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/02_open.rst +0 -0
  221. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/03_open_closed.rst +0 -0
  222. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/04_closed.rst +0 -0
  223. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/05_closed_open.rst +0 -0
  224. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/index.rst +0 -0
  225. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/bounded/noxfile.py +0 -0
  226. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/degenerate/01_degenerate.rst +0 -0
  227. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/degenerate/02_singleton.rst +0 -0
  228. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/degenerate/index.rst +0 -0
  229. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/degenerate/noxfile.py +0 -0
  230. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/01_half_bounded.rst +0 -0
  231. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/02_above.rst +0 -0
  232. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/03_not_below.rst +0 -0
  233. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/04_not_above.rst +0 -0
  234. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/05_below.rst +0 -0
  235. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/index.rst +0 -0
  236. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/half_bounded/noxfile.py +0 -0
  237. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/index.rst +0 -0
  238. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/interval/01_interval.rst +0 -0
  239. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/interval/index.rst +0 -0
  240. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/interval/noxfile.py +0 -0
  241. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/noxfile.py +0 -0
  242. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/universal/01_universal.rst +0 -0
  243. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/universal/02_empty.rst +0 -0
  244. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/universal/03_rr.rst +0 -0
  245. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/universal/index.rst +0 -0
  246. {splinekit-0.2.5 → splinekit-0.2.7}/docs/interval/universal/noxfile.py +0 -0
  247. {splinekit-0.2.5 → splinekit-0.2.7}/docs/noxfile.py +0 -0
  248. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst +0 -0
  249. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_nonuniform_piecewise/index.rst +0 -0
  250. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_nonuniform_piecewise/noxfile.py +0 -0
  251. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/01_periodic_spline_1d.rst +0 -0
  252. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/index.rst +0 -0
  253. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m00.png +0 -0
  254. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m01.png +0 -0
  255. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m02.png +0 -0
  256. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m03.png +0 -0
  257. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m04.png +0 -0
  258. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m05.png +0 -0
  259. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m06.png +0 -0
  260. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m07.png +0 -0
  261. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m08.png +0 -0
  262. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m09.png +0 -0
  263. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m10.png +0 -0
  264. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m11.png +0 -0
  265. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m12.png +0 -0
  266. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m13.png +0 -0
  267. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m14.png +0 -0
  268. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m15.png +0 -0
  269. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m16.png +0 -0
  270. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m17.png +0 -0
  271. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m18.png +0 -0
  272. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m19.png +0 -0
  273. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m20.png +0 -0
  274. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m21.png +0 -0
  275. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m22.png +0 -0
  276. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m23.png +0 -0
  277. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/m24.png +0 -0
  278. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/matplotlib-color.rst +0 -0
  279. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/matplotlib-linestyle.rst +0 -0
  280. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/matplotlib-marker.rst +0 -0
  281. {splinekit-0.2.5 → splinekit-0.2.7}/docs/periodic_spline_1d/noxfile.py +0 -0
  282. {splinekit-0.2.5 → splinekit-0.2.7}/docs/spline_padding/01_spline_padding.rst +0 -0
  283. {splinekit-0.2.5 → splinekit-0.2.7}/docs/spline_padding/index.rst +0 -0
  284. {splinekit-0.2.5 → splinekit-0.2.7}/docs/spline_padding/noxfile.py +0 -0
  285. {splinekit-0.2.5 → splinekit-0.2.7}/docs/spline_utilities/01_spline_utilities.rst +0 -0
  286. {splinekit-0.2.5 → splinekit-0.2.7}/docs/spline_utilities/index.rst +0 -0
  287. {splinekit-0.2.5 → splinekit-0.2.7}/docs/spline_utilities/noxfile.py +0 -0
  288. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/__init__.py +0 -0
  289. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/bsplines.py +0 -0
  290. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/__init__.py +0 -0
  291. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/_known_intervals.py +0 -0
  292. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/above.py +0 -0
  293. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/below.py +0 -0
  294. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/bounded.py +0 -0
  295. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/closed.py +0 -0
  296. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/closed_open.py +0 -0
  297. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/degenerate.py +0 -0
  298. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/empty.py +0 -0
  299. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/half_bounded.py +0 -0
  300. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/interval.py +0 -0
  301. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/mypy.ini +0 -0
  302. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/not_above.py +0 -0
  303. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/not_below.py +0 -0
  304. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/open.py +0 -0
  305. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/open_closed.py +0 -0
  306. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/rr.py +0 -0
  307. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/singleton.py +0 -0
  308. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/interval/universal.py +0 -0
  309. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/mypy.ini +0 -0
  310. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/periodic_nonuniform_piecewise.py +0 -0
  311. {splinekit-0.2.5 → splinekit-0.2.7}/src/splinekit/spline_utilities.py +0 -0
  312. {splinekit-0.2.5 → splinekit-0.2.7}/temp/bspline_stability.py +0 -0
  313. {splinekit-0.2.5 → splinekit-0.2.7}/tests/test_bsplines.py +0 -0
  314. {splinekit-0.2.5 → splinekit-0.2.7}/tests/test_periodic_nonuniform_piecewise.py +0 -0
  315. {splinekit-0.2.5 → splinekit-0.2.7}/tests/test_periodic_spline_1d.py +0 -0
  316. {splinekit-0.2.5 → splinekit-0.2.7}/tests/test_spline_padding.py +0 -0
  317. {splinekit-0.2.5 → splinekit-0.2.7}/tests/test_spline_utilities.py +0 -0
@@ -1,40 +1,5 @@
1
1
  # splinekit/.github/workflows/release.yml
2
2
 
3
- ### Pure Python
4
- # name: Build & publish to PyPI
5
- #
6
- # on:
7
- # push:
8
- # tags:
9
- # - "v*"
10
- #
11
- # permissions:
12
- # contents: read
13
- # id-token: write # OIDC for PyPI
14
- #
15
- # jobs:
16
- # build-and-publish:
17
- # runs-on: ubuntu-latest
18
- #
19
- # steps:
20
- # - name: Checkout repository
21
- # uses: actions/checkout@v4
22
- #
23
- # - name: Set up Python
24
- # uses: actions/setup-python@v5
25
- # with:
26
- # python-version: "3.12"
27
- #
28
- # - name: Install build tooling
29
- # run: |
30
- # python -m pip install -U pip build
31
- #
32
- # - name: Build sdist and wheel (pure Python)
33
- # run: python -m build # creates dist/*.tar.gz and dist/*.whl
34
- #
35
- # - name: Publish to PyPI
36
- # uses: pypa/gh-action-pypi-publish@release/v1
37
-
38
3
  ### Activate for C dynamic library
39
4
  name: Build & publish to PyPI
40
5
 
@@ -0,0 +1,323 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ # Load the required libraries
8
+ import ipywidgets as widgets
9
+ import matplotlib.pyplot as plt
10
+ import numpy as np
11
+
12
+ import splinekit as sk # This library
13
+
14
+ # Setup
15
+ max_degree = 3 # Maximal spline degree
16
+ max_samples = 10 # Maximal support
17
+
18
+ # Initial random periodic cubic spline
19
+ s0 = sk.PeriodicSpline1D.from_spline_coeff(np.random.standard_normal(6), degree = 3)
20
+
21
+ #widget controls
22
+ linestyle_options = [
23
+ ("'-' solid", 0),
24
+ ("'--' dashed", 1),
25
+ ("'-.' mixed", 2),
26
+ ("':' dotted", 3)
27
+ ]
28
+ linestyle_codes = [
29
+ "-",
30
+ "--",
31
+ "-.",
32
+ ":"
33
+ ]
34
+ color_options = [
35
+ ("'C0' default blue", 0),
36
+ ("'C1' default orange", 1),
37
+ ("'C2' default green", 2),
38
+ ("'C3' default red", 3),
39
+ ("'C4' default purple", 4),
40
+ ("'C5' default brown", 5),
41
+ ("'C6' default pink", 6),
42
+ ("'C7' default gray", 7),
43
+ ("'C8' default olive", 8),
44
+ ("'C9' default cyan", 9),
45
+ ("'b' named blue", 10),
46
+ ("'g' named green", 11),
47
+ ("'r' named red", 12),
48
+ ("'c' named cyan", 13),
49
+ ("'m' named magenta", 14),
50
+ ("'y' named yellow", 15),
51
+ ("'k' named black", 16),
52
+ ("'w' named white", 17)
53
+ ]
54
+ color_codes = [
55
+ "C0",
56
+ "C1",
57
+ "C2",
58
+ "C3",
59
+ "C4",
60
+ "C5",
61
+ "C6",
62
+ "C7",
63
+ "C8",
64
+ "C9",
65
+ "b",
66
+ "g",
67
+ "r",
68
+ "c",
69
+ "m",
70
+ "y",
71
+ "k",
72
+ "w"
73
+ ]
74
+ marker_options = [
75
+ ("' ' ---NONE---", 0),
76
+ ("'.' point", 1),
77
+ ("',' pixel", 2),
78
+ ("'o' circle", 3),
79
+ ("'v' triangle down", 4),
80
+ ("'^' triangle up", 5),
81
+ ("'<' triangle left", 6),
82
+ ("'>' triangle right", 7),
83
+ ("'1' tri_down", 8),
84
+ ("'2' tri_up", 9),
85
+ ("'3' tri_left", 10),
86
+ ("'4' tri_right", 11),
87
+ ("'8' octagon", 12),
88
+ ("'s' square", 13),
89
+ ("'p' pentagon", 14),
90
+ ("'P' plus (filled)", 15),
91
+ ("'*' star", 16),
92
+ ("'h' hexagon1", 17),
93
+ ("'H' hexagon2", 18),
94
+ ("'+' plus", 19),
95
+ ("'x' cross", 20),
96
+ ("'X' cross (filled)", 21),
97
+ ("'D' diamond", 22),
98
+ ("'d' thin diamond", 23),
99
+ ("'|' vline", 24),
100
+ ("'_' hline", 25)
101
+ ]
102
+ marker_codes = [
103
+ " ",
104
+ ".",
105
+ ",",
106
+ "o",
107
+ "v",
108
+ "^",
109
+ "<",
110
+ ">",
111
+ "1",
112
+ "2",
113
+ "3",
114
+ "4",
115
+ "8",
116
+ "s",
117
+ "p",
118
+ "P",
119
+ "*",
120
+ "h",
121
+ "H",
122
+ "+",
123
+ "x",
124
+ "X",
125
+ "D",
126
+ "d",
127
+ "|",
128
+ "_"
129
+ ]
130
+ plotdomain_widget = widgets.FloatRangeSlider(
131
+ value = [-1.0, 7.0],
132
+ min = -1.0 * max_samples,
133
+ max = 2.0 * max_samples,
134
+ step = 0.25,
135
+ description = "domain:",
136
+ readout_format = ".2f"
137
+ )
138
+ plotrange_widget = widgets.FloatRangeSlider(
139
+ value = [-2.0, 2.0],
140
+ min = -5.0,
141
+ max = 5.0,
142
+ step = 0.2,
143
+ description = "range:",
144
+ readout_format = ".1f"
145
+ )
146
+ curve_fmt_linestyle_widget = widgets.Dropdown(
147
+ options = linestyle_options,
148
+ value = 0,
149
+ description = "curve:"
150
+ )
151
+ curve_fmt_linecolor_widget = widgets.Dropdown(
152
+ options = color_options,
153
+ value = 0,
154
+ description = "curve:"
155
+ )
156
+ curve_lw_widget = widgets.FloatSlider(
157
+ value = 1.0,
158
+ min = 0.1,
159
+ max = 3.0,
160
+ step = 0.1,
161
+ description = "curve:",
162
+ readout_format = ".1f"
163
+ )
164
+ curve_markerfmt_style_widget = widgets.Dropdown(
165
+ options = marker_options,
166
+ value = 3,
167
+ description = "curve mrkr:"
168
+ )
169
+ curve_markerfmt_color_widget = widgets.Dropdown(
170
+ options = color_options,
171
+ value = 0,
172
+ description = "curve mrkr:"
173
+ )
174
+
175
+ # Plot
176
+ def update_plot (
177
+ default_plotdomain = True,
178
+ default_plotrange = True,
179
+ default_curve_fmt = True,
180
+ default_curve_lw = True,
181
+ default_curve_markerfmt = True,
182
+ degree = 3,
183
+ samples = 5,
184
+ plotdomain = [-1.0, 7.0],
185
+ plotrange = [-2.0, 2.0],
186
+ plotpoints = 51,
187
+ curve_fmt_linestyle = 0,
188
+ curve_fmt_linecolor = 0,
189
+ curve_lw = 1.0,
190
+ curve_markerfmt_style = 3,
191
+ curve_markerfmt_color = 0
192
+ ):
193
+ global s0
194
+
195
+ # Update of the spline
196
+ f = s0.get_samples(0, support_length = s0.period)
197
+ if s0.period < samples:
198
+ f = np.append(f, np.random.standard_normal(samples - len(f)))
199
+ else:
200
+ f = f[ : samples]
201
+ s0 = sk.PeriodicSpline1D.from_samples(f, degree = degree)
202
+
203
+ # plotdomain
204
+ plotdomain_interval = sk.interval.Closed(plotdomain)
205
+ if default_plotdomain:
206
+ plotdomain_interval = sk.interval.RR()
207
+ plotdomain_widget.disabled = default_plotdomain
208
+
209
+ # plotrange
210
+ plotrange_interval = sk.interval.Closed(plotrange)
211
+ if default_plotrange:
212
+ plotrange_interval = sk.interval.RR()
213
+ plotrange_widget.disabled = default_plotrange
214
+
215
+ # curve_fmt
216
+ curve_fmt_linestyle_string = linestyle_codes[curve_fmt_linestyle]
217
+ if default_curve_fmt:
218
+ curve_fmt_linestyle_string = "-"
219
+ curve_fmt_linestyle_widget.disabled = default_curve_fmt
220
+ curve_fmt_linecolor_string = color_codes[curve_fmt_linecolor]
221
+ if default_curve_fmt:
222
+ curve_fmt_linecolor_string = "C0"
223
+ curve_fmt_linecolor_widget.disabled = default_curve_fmt
224
+
225
+ # curve_lw
226
+ curve_linewidth = curve_lw
227
+ if default_curve_lw:
228
+ curve_linewidth = 1.0
229
+ curve_lw_widget.disabled = default_curve_lw
230
+
231
+ # curve_markerfmt
232
+ curve_markerfmt_style_string = marker_codes[curve_markerfmt_style]
233
+ if default_curve_markerfmt:
234
+ curve_markerfmt_style_string = "o"
235
+ curve_markerfmt_style_widget.disabled = default_curve_markerfmt
236
+ curve_markerfmt_color_string = ""
237
+ if 0 != curve_markerfmt_style:
238
+ curve_markerfmt_color_string = color_codes[curve_markerfmt_color]
239
+ if default_curve_markerfmt:
240
+ curve_markerfmt_color_string = "C0"
241
+ curve_markerfmt_color_widget.disabled = default_curve_markerfmt
242
+
243
+ # Plot of the spline
244
+ subplot = plt.subplots()
245
+ s0.plot(
246
+ subplot,
247
+ plotdomain = plotdomain_interval,
248
+ plotrange = plotrange_interval,
249
+ plotpoints = plotpoints,
250
+ curve_fmt = curve_fmt_linestyle_string + curve_fmt_linecolor_string,
251
+ curve_lw = curve_linewidth,
252
+ curve_markerfmt = curve_markerfmt_style_string + curve_markerfmt_color_string,
253
+ curvestem_linefmt = "None",
254
+ knot_marker = "",
255
+ periodbound_markerfmt = "",
256
+ periodboundstem_linefmt = "None"
257
+ )
258
+ plt.show()
259
+
260
+ # interactive
261
+ widgets.interactive(
262
+ update_plot,
263
+ default_plotdomain = widgets.Checkbox(
264
+ value = True,
265
+ description = "plotdomain = sk.interval.RR()"
266
+ ),
267
+ default_plotrange = widgets.Checkbox(
268
+ value = True,
269
+ description = "plotrange = sk.interval.RR()"
270
+ ),
271
+ default_curve_fmt = widgets.Checkbox(
272
+ value = True,
273
+ description = "curve_fmt = '-C0'"
274
+ ),
275
+ default_curve_lw = widgets.Checkbox(
276
+ value = True,
277
+ description = "curve_lw = 1.0"
278
+ ),
279
+ default_curve_markerfmt = widgets.Checkbox(
280
+ value = True,
281
+ description = "curve_markerfmt = 'oC0'"
282
+ ),
283
+ degree = (0, max_degree),
284
+ samples = (1, max_samples),
285
+ plotdomain = plotdomain_widget,
286
+ plotrange = plotrange_widget,
287
+ plotpoints = widgets.IntSlider(
288
+ value = 51,
289
+ min = 2,
290
+ max = 101,
291
+ step = 1,
292
+ description = "plotpoints"
293
+ ),
294
+ curve_fmt_linestyle = curve_fmt_linestyle_widget,
295
+ curve_fmt_linecolor = curve_fmt_linecolor_widget,
296
+ curve_lw = curve_lw_widget,
297
+ curve_markerfmt_style = curve_markerfmt_style_widget,
298
+ curve_markerfmt_color = curve_markerfmt_color_widget
299
+ )
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splinekit
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: A set of functions and classes to handle periodic 1D polynomial splines
5
5
  Author-Email: =?utf-8?q?Philippe_Th=C3=A9venaz?= <philippe.thevenaz@icloud.com>
6
6
  Maintainer-Email: =?utf-8?q?Philippe_Th=C3=A9venaz?= <philippe.thevenaz@icloud.com>
@@ -51,6 +51,8 @@ Description-Content-Type: text/markdown
51
51
 
52
52
  <!-- splinekit/README.md -->
53
53
 
54
+ # Version 0.2.7
55
+
54
56
  # splinekit: Spline Operations
55
57
  `splinekit` is a Python-based open-source software library aimed at the manipulation of one-dimensional periodic splines.
56
58
 
@@ -125,3 +127,9 @@ Some demos added.
125
127
 
126
128
  ### 0.2.5
127
129
  Minor debug of least-significant-bit edge cases.
130
+
131
+ ### 0.2.6
132
+ Some demos added. Documentation minor updates.
133
+
134
+ ### 0.2.7
135
+ Upgraded to jupyterlite 0.7
@@ -1,5 +1,7 @@
1
1
  <!-- splinekit/README.md -->
2
2
 
3
+ # Version 0.2.7
4
+
3
5
  # splinekit: Spline Operations
4
6
  `splinekit` is a Python-based open-source software library aimed at the manipulation of one-dimensional periodic splines.
5
7
 
@@ -74,3 +76,9 @@ Some demos added.
74
76
 
75
77
  ### 0.2.5
76
78
  Minor debug of least-significant-bit edge cases.
79
+
80
+ ### 0.2.6
81
+ Some demos added. Documentation minor updates.
82
+
83
+ ### 0.2.7
84
+ Upgraded to jupyterlite 0.7
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ devDir="/Users/pthevena/Documents/Programmation/Python/splinekit/dev/Accelerated"
4
+ splinekitDir="/Users/pthevena/Documents/Programmation/Python/splinekit"
5
+ cp $devDir/release.yml $splinekitDir/.github/workflows/release.yml
6
+ cp $devDir/pyproject.toml $splinekitDir/pyproject.toml
7
+ cp $devDir/spline_padding.py $splinekitDir/src/splinekit/spline_padding.py
@@ -3,16 +3,14 @@
3
3
  # Build
4
4
  [build-system]
5
5
  requires = [
6
- # "hatchling >=1.26" # Not compatible with C dynamic library
7
6
  "scikit-build-core>=0.10", # Activate for C dynamic library
8
7
  ]
9
- #build-backend = "hatchling.build" # Not compatible with C dynamic library
10
8
  build-backend = "scikit_build_core.build" # Activate for C dynamic library
11
9
 
12
10
  # Project
13
11
  [project]
14
12
  name = "splinekit"
15
- version = "0.2.5"
13
+ version = "0.2.7"
16
14
  dependencies = [
17
15
  "numpy >=1.26",
18
16
  "scipy >=1.15",
@@ -0,0 +1,105 @@
1
+ # splinekit/.github/workflows/release.yml
2
+
3
+ ### Activate for C dynamic library
4
+ name: Build & publish to PyPI
5
+
6
+ on:
7
+ push:
8
+ tags:
9
+ - "v*"
10
+
11
+ permissions:
12
+ contents: read
13
+ id-token: write # OIDC for PyPI
14
+
15
+ jobs:
16
+ build_wheels:
17
+ name: Build wheels on ${{ matrix.os }}
18
+ runs-on: ${{ matrix.os }}
19
+
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ include:
24
+ # Linux + Windows
25
+ - os: ubuntu-latest
26
+ mac_arch: x86_64 # unused on Linux, but keeps env simple
27
+ - os: windows-latest
28
+ mac_arch: x86_64 # unused on Windows, but keeps env simple
29
+
30
+ # macOS Intel (x86_64) and Apple Silicon (arm64)
31
+ - os: macos-15-intel
32
+ mac_arch: x86_64
33
+ - os: macos-15 # or macos-latest
34
+ mac_arch: arm64
35
+
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+
39
+ - uses: actions/setup-python@v5
40
+ with:
41
+ python-version: "3.12"
42
+
43
+ - name: Install build tools
44
+ run: python -m pip install -U pip cibuildwheel build
45
+
46
+ - name: Build wheels
47
+ run: python -m cibuildwheel --output-dir dist
48
+ env:
49
+ # CPython only, for versions we support
50
+ CIBW_BUILD: "cp311-* cp312-*"
51
+
52
+ # Avoid unsupported/undesired targets
53
+ CIBW_SKIP: "*musllinux*"
54
+
55
+ # Architectures
56
+ CIBW_ARCHS_LINUX: "x86_64"
57
+ CIBW_ARCHS_WINDOWS: "AMD64"
58
+ CIBW_ARCHS_MACOS: ${{ matrix.mac_arch }}
59
+
60
+ # macOS: ensure wheels target a realistic minimum for C++17
61
+ # (Intel: 10.13+ matches cp312 minimum; arm64 will still be 11.0+)
62
+ CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.13
63
+
64
+ # Simple smoke test: import and check native module presence
65
+ CIBW_TEST_COMMAND: >
66
+ python -c "import importlib.util, numpy as np, splinekit;
67
+ print('ok', importlib.util.find_spec('splinekit._padding') is not None)"
68
+
69
+ - name: Build sdist (once on Ubuntu)
70
+ if: matrix.os == 'ubuntu-latest'
71
+ run: python -m build -s -o dist
72
+
73
+ - name: Upload wheel artifacts
74
+ uses: actions/upload-artifact@v4
75
+ with:
76
+ name: wheels-${{ matrix.os }}-${{ matrix.mac_arch }}
77
+ path: dist/*.whl
78
+ if-no-files-found: error
79
+
80
+ - name: Upload sdist artifact
81
+ if: matrix.os == 'ubuntu-latest'
82
+ uses: actions/upload-artifact@v4
83
+ with:
84
+ name: sdist
85
+ path: dist/*.tar.gz
86
+ if-no-files-found: error
87
+
88
+ publish:
89
+ needs: [build_wheels]
90
+ runs-on: ubuntu-latest
91
+
92
+ steps:
93
+ - uses: actions/download-artifact@v4
94
+ with:
95
+ pattern: wheels-*
96
+ merge-multiple: true
97
+ path: dist
98
+
99
+ - uses: actions/download-artifact@v4
100
+ with:
101
+ name: sdist
102
+ path: dist
103
+
104
+ - name: Publish to PyPI
105
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -210,11 +210,11 @@ def change_basis_p (
210
210
  coefficients that is expressing the periodic
211
211
  :ref:`uniform spline<def-uniform_spline>` :math:`f` of
212
212
  :ref:`nonnegative<def-negative>` degree :math:`n` as a weighted sum of
213
- integer-shifted bases of the type ``source_basis``.
213
+ integer-shifted synthesis functions of the type ``source_basis``.
214
214
 
215
215
  At output time, ``data`` is a one-dimensional ``numpy.ndarray`` of
216
216
  coefficients that is expressing the same spline :math:`f` as a weighted
217
- sum of integer-shifted bases of the type ``target_basis``.
217
+ sum of integer-shifted synthesis functions of the type ``target_basis``.
218
218
 
219
219
  Parameters
220
220
  ----------
@@ -0,0 +1,109 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "0c723be4-e5f6-4b5a-a6a2-11ece85e5f1b",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Polynomial B-Spline\n",
9
+ "Here is the plot of a B-spline of a given degree, over precisely its support. The hollow (blue or red) circles indicate the samples at the integers. The function is made of polynomial pieces that lie between so-called knots. The small filled (black) discs indicate the location of the knots of the spline. They lie at the half integers for even degrees and at the integers for odd degrees."
10
+ ]
11
+ },
12
+ {
13
+ "cell_type": "code",
14
+ "execution_count": null,
15
+ "id": "65fb414e-a36a-4bff-ae5a-a03e6498deb8",
16
+ "metadata": {},
17
+ "outputs": [],
18
+ "source": [
19
+ "# Load the required libraries\n",
20
+ "from ipywidgets import interactive\n",
21
+ "import matplotlib.pyplot as plt\n",
22
+ "\n",
23
+ "import splinekit as sk # This library\n",
24
+ "\n",
25
+ "# Define the plot function\n",
26
+ "def b_spline_plot (\n",
27
+ " degree = 3\n",
28
+ "):\n",
29
+ " # Support of a B-spline\n",
30
+ " supp = sk.b_spline_support(degree)\n",
31
+ " # Avoid overlap and leave a margin\n",
32
+ " # The margin serves a purpose only for the B-spline of degree 0\n",
33
+ " period = supp.diameter + 1\n",
34
+ " # Construct a spline from a non-overlapping periodic B-spline\n",
35
+ " s = sk.PeriodicSpline1D.periodized_b_spline(\n",
36
+ " period = int(period),\n",
37
+ " degree = degree\n",
38
+ " )\n",
39
+ " # Plot the B-spline\n",
40
+ " s.plot(\n",
41
+ " plt.subplots(),\n",
42
+ " plotdomain = sk.interval.Closed((-0.5 * supp.diameter, 0.5 * supp.diameter)),\n",
43
+ " plotrange = sk.interval.Closed((-0.05, 1.05)),\n",
44
+ " plotpoints = 200 + 1\n",
45
+ " )\n",
46
+ "\n",
47
+ "# Interact with the degree\n",
48
+ "interactive(b_spline_plot, degree = (0, 30))\n"
49
+ ]
50
+ },
51
+ {
52
+ "cell_type": "code",
53
+ "execution_count": null,
54
+ "id": "b80ced66-8818-4b26-9ea0-effa40d17b3e",
55
+ "metadata": {},
56
+ "outputs": [],
57
+ "source": [
58
+ "\n",
59
+ "\n",
60
+ "\n",
61
+ "\n",
62
+ "\n",
63
+ "\n",
64
+ "\n",
65
+ "\n",
66
+ "\n",
67
+ "\n",
68
+ "\n",
69
+ "\n",
70
+ "\n",
71
+ "\n",
72
+ "\n",
73
+ "\n",
74
+ "\n",
75
+ "\n",
76
+ "\n",
77
+ "\n"
78
+ ]
79
+ }
80
+ ],
81
+ "metadata": {
82
+ "kernelspec": {
83
+ "display_name": "Python 3 (ipykernel)",
84
+ "language": "python",
85
+ "name": "python3"
86
+ },
87
+ "language_info": {
88
+ "codemirror_mode": {
89
+ "name": "ipython",
90
+ "version": 3
91
+ },
92
+ "file_extension": ".py",
93
+ "mimetype": "text/x-python",
94
+ "name": "python",
95
+ "nbconvert_exporter": "python",
96
+ "pygments_lexer": "ipython3",
97
+ "version": "3.12.6"
98
+ },
99
+ "widgets": {
100
+ "application/vnd.jupyter.widget-state+json": {
101
+ "state": {},
102
+ "version_major": 2,
103
+ "version_minor": 0
104
+ }
105
+ }
106
+ },
107
+ "nbformat": 4,
108
+ "nbformat_minor": 5
109
+ }
@@ -172,7 +172,8 @@
172
172
  "# #\n",
173
173
  "###################\n",
174
174
  "\n",
175
- "# Duration of the computations on a desktop computer of year 2021: ~20s\n",
175
+ "# Duration of the native computations on a desktop computer of year 2021: ~20s\n",
176
+ "# Duration of the WebAssembly computations: about twice\n",
176
177
  "\n",
177
178
  "\n"
178
179
  ]
@@ -321,7 +322,8 @@
321
322
  "# #\n",
322
323
  "###################\n",
323
324
  "\n",
324
- "# Duration of the computations on a desktop computer of year 2021: ~20s\n",
325
+ "# Duration of the native computations on a desktop computer of year 2021: ~20s\n",
326
+ "# Duration of the WebAssembly computations: about twice\n",
325
327
  "\n",
326
328
  "\n"
327
329
  ]
@@ -447,7 +449,8 @@
447
449
  "# #\n",
448
450
  "###################\n",
449
451
  "\n",
450
- "# Duration of the computations on a desktop computer of year 2021: ~5s\n",
452
+ "# Duration of the native computations on a desktop computer of year 2021: ~5s\n",
453
+ "# Duration of the WebAssembly computations: about twice\n",
451
454
  "\n",
452
455
  "\n"
453
456
  ]