splinekit 0.0.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 (402) hide show
  1. splinekit-0.0.4/.github/workflows/deploy-docs.yml +44 -0
  2. splinekit-0.0.4/.github/workflows/release.yml +35 -0
  3. splinekit-0.0.4/.github/workflows/test.yml +37 -0
  4. splinekit-0.0.4/.gitignore +222 -0
  5. splinekit-0.0.4/.virtual_documents/development/Jupyter/Untitled.ipynb +102 -0
  6. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_interactive_shape.ipynb +139 -0
  7. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_inverse_sequence.ipynb +98 -0
  8. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_numeric_stability.ipynb +157 -0
  9. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_poles.ipynb +45 -0
  10. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_random1D.ipynb +126 -0
  11. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_random2D.ipynb +299 -0
  12. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_static_shape.ipynb +119 -0
  13. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_vs_exponentials.ipynb +198 -0
  14. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_vs_pi.ipynb +86 -0
  15. splinekit-0.0.4/.virtual_documents/development/Jupyter/bspline_vs_trigonometry.ipynb +269 -0
  16. splinekit-0.0.4/LICENSE +21 -0
  17. splinekit-0.0.4/PKG-INFO +156 -0
  18. splinekit-0.0.4/README.md +109 -0
  19. splinekit-0.0.4/_build/.buildinfo +4 -0
  20. splinekit-0.0.4/_build/.doctrees/bases/01_bases.doctree +0 -0
  21. splinekit-0.0.4/_build/.doctrees/bases/index.doctree +0 -0
  22. splinekit-0.0.4/_build/.doctrees/bsplines/01_bsplines.doctree +0 -0
  23. splinekit-0.0.4/_build/.doctrees/bsplines/index.doctree +0 -0
  24. splinekit-0.0.4/_build/.doctrees/environment.pickle +0 -0
  25. splinekit-0.0.4/_build/.doctrees/glossary/glossary-numbers.doctree +0 -0
  26. splinekit-0.0.4/_build/.doctrees/glossary/glossary-polynomials.doctree +0 -0
  27. splinekit-0.0.4/_build/.doctrees/glossary/glossary-splines.doctree +0 -0
  28. splinekit-0.0.4/_build/.doctrees/glossary/glossary-terminology.doctree +0 -0
  29. splinekit-0.0.4/_build/.doctrees/glossary/index.doctree +0 -0
  30. splinekit-0.0.4/_build/.doctrees/index.doctree +0 -0
  31. splinekit-0.0.4/_build/.doctrees/installation/index.doctree +0 -0
  32. splinekit-0.0.4/_build/.doctrees/interval/bounded/01_bounded.doctree +0 -0
  33. splinekit-0.0.4/_build/.doctrees/interval/bounded/02_open.doctree +0 -0
  34. splinekit-0.0.4/_build/.doctrees/interval/bounded/03_open_closed.doctree +0 -0
  35. splinekit-0.0.4/_build/.doctrees/interval/bounded/04_closed.doctree +0 -0
  36. splinekit-0.0.4/_build/.doctrees/interval/bounded/05_closed_open.doctree +0 -0
  37. splinekit-0.0.4/_build/.doctrees/interval/bounded/index.doctree +0 -0
  38. splinekit-0.0.4/_build/.doctrees/interval/degenerate/01_degenerate.doctree +0 -0
  39. splinekit-0.0.4/_build/.doctrees/interval/degenerate/02_singleton.doctree +0 -0
  40. splinekit-0.0.4/_build/.doctrees/interval/degenerate/index.doctree +0 -0
  41. splinekit-0.0.4/_build/.doctrees/interval/half_bounded/01_half_bounded.doctree +0 -0
  42. splinekit-0.0.4/_build/.doctrees/interval/half_bounded/02_above.doctree +0 -0
  43. splinekit-0.0.4/_build/.doctrees/interval/half_bounded/03_not_below.doctree +0 -0
  44. splinekit-0.0.4/_build/.doctrees/interval/half_bounded/04_not_above.doctree +0 -0
  45. splinekit-0.0.4/_build/.doctrees/interval/half_bounded/05_below.doctree +0 -0
  46. splinekit-0.0.4/_build/.doctrees/interval/half_bounded/index.doctree +0 -0
  47. splinekit-0.0.4/_build/.doctrees/interval/index.doctree +0 -0
  48. splinekit-0.0.4/_build/.doctrees/interval/interval/01_interval.doctree +0 -0
  49. splinekit-0.0.4/_build/.doctrees/interval/interval/index.doctree +0 -0
  50. splinekit-0.0.4/_build/.doctrees/interval/universal/01_universal.doctree +0 -0
  51. splinekit-0.0.4/_build/.doctrees/interval/universal/02_empty.doctree +0 -0
  52. splinekit-0.0.4/_build/.doctrees/interval/universal/03_rr.doctree +0 -0
  53. splinekit-0.0.4/_build/.doctrees/interval/universal/index.doctree +0 -0
  54. splinekit-0.0.4/_build/.doctrees/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.doctree +0 -0
  55. splinekit-0.0.4/_build/.doctrees/periodic_nonuniform_piecewise/index.doctree +0 -0
  56. splinekit-0.0.4/_build/.doctrees/periodic_spline_1d/01_periodic_spline_1d.doctree +0 -0
  57. splinekit-0.0.4/_build/.doctrees/periodic_spline_1d/index.doctree +0 -0
  58. splinekit-0.0.4/_build/.doctrees/periodic_spline_1d/matplotlib-color.doctree +0 -0
  59. splinekit-0.0.4/_build/.doctrees/periodic_spline_1d/matplotlib-linestyle.doctree +0 -0
  60. splinekit-0.0.4/_build/.doctrees/periodic_spline_1d/matplotlib-marker.doctree +0 -0
  61. splinekit-0.0.4/_build/.doctrees/spline_padding/01_spline_padding.doctree +0 -0
  62. splinekit-0.0.4/_build/.doctrees/spline_padding/index.doctree +0 -0
  63. splinekit-0.0.4/_build/.doctrees/spline_utilities/01_spline_utilities.doctree +0 -0
  64. splinekit-0.0.4/_build/.doctrees/spline_utilities/index.doctree +0 -0
  65. splinekit-0.0.4/_build/.doctrees/tutorial/01_bsplines.doctree +0 -0
  66. splinekit-0.0.4/_build/.doctrees/tutorial/index.doctree +0 -0
  67. splinekit-0.0.4/_build/_images/01_periodic_spline_1d-1.png +0 -0
  68. splinekit-0.0.4/_build/_images/m00.png +0 -0
  69. splinekit-0.0.4/_build/_images/m01.png +0 -0
  70. splinekit-0.0.4/_build/_images/m02.png +0 -0
  71. splinekit-0.0.4/_build/_images/m03.png +0 -0
  72. splinekit-0.0.4/_build/_images/m04.png +0 -0
  73. splinekit-0.0.4/_build/_images/m05.png +0 -0
  74. splinekit-0.0.4/_build/_images/m06.png +0 -0
  75. splinekit-0.0.4/_build/_images/m07.png +0 -0
  76. splinekit-0.0.4/_build/_images/m08.png +0 -0
  77. splinekit-0.0.4/_build/_images/m09.png +0 -0
  78. splinekit-0.0.4/_build/_images/m10.png +0 -0
  79. splinekit-0.0.4/_build/_images/m11.png +0 -0
  80. splinekit-0.0.4/_build/_images/m12.png +0 -0
  81. splinekit-0.0.4/_build/_images/m13.png +0 -0
  82. splinekit-0.0.4/_build/_images/m14.png +0 -0
  83. splinekit-0.0.4/_build/_images/m15.png +0 -0
  84. splinekit-0.0.4/_build/_images/m16.png +0 -0
  85. splinekit-0.0.4/_build/_images/m17.png +0 -0
  86. splinekit-0.0.4/_build/_images/m18.png +0 -0
  87. splinekit-0.0.4/_build/_images/m19.png +0 -0
  88. splinekit-0.0.4/_build/_images/m20.png +0 -0
  89. splinekit-0.0.4/_build/_images/m21.png +0 -0
  90. splinekit-0.0.4/_build/_images/m22.png +0 -0
  91. splinekit-0.0.4/_build/_images/m23.png +0 -0
  92. splinekit-0.0.4/_build/_images/m24.png +0 -0
  93. splinekit-0.0.4/_build/_sources/bases/01_bases.rst.txt +12 -0
  94. splinekit-0.0.4/_build/_sources/bases/index.rst.txt +14 -0
  95. splinekit-0.0.4/_build/_sources/bsplines/01_bsplines.rst.txt +12 -0
  96. splinekit-0.0.4/_build/_sources/bsplines/index.rst.txt +14 -0
  97. splinekit-0.0.4/_build/_sources/glossary/glossary-numbers.rst.txt +29 -0
  98. splinekit-0.0.4/_build/_sources/glossary/glossary-polynomials.rst.txt +33 -0
  99. splinekit-0.0.4/_build/_sources/glossary/glossary-splines.rst.txt +37 -0
  100. splinekit-0.0.4/_build/_sources/glossary/glossary-terminology.rst.txt +37 -0
  101. splinekit-0.0.4/_build/_sources/glossary/index.rst.txt +13 -0
  102. splinekit-0.0.4/_build/_sources/index.rst.txt +21 -0
  103. splinekit-0.0.4/_build/_sources/installation/index.rst.txt +5 -0
  104. splinekit-0.0.4/_build/_sources/interval/bounded/01_bounded.rst.txt +12 -0
  105. splinekit-0.0.4/_build/_sources/interval/bounded/02_open.rst.txt +12 -0
  106. splinekit-0.0.4/_build/_sources/interval/bounded/03_open_closed.rst.txt +12 -0
  107. splinekit-0.0.4/_build/_sources/interval/bounded/04_closed.rst.txt +12 -0
  108. splinekit-0.0.4/_build/_sources/interval/bounded/05_closed_open.rst.txt +12 -0
  109. splinekit-0.0.4/_build/_sources/interval/bounded/index.rst.txt +18 -0
  110. splinekit-0.0.4/_build/_sources/interval/degenerate/01_degenerate.rst.txt +12 -0
  111. splinekit-0.0.4/_build/_sources/interval/degenerate/02_singleton.rst.txt +12 -0
  112. splinekit-0.0.4/_build/_sources/interval/degenerate/index.rst.txt +15 -0
  113. splinekit-0.0.4/_build/_sources/interval/half_bounded/01_half_bounded.rst.txt +12 -0
  114. splinekit-0.0.4/_build/_sources/interval/half_bounded/02_above.rst.txt +12 -0
  115. splinekit-0.0.4/_build/_sources/interval/half_bounded/03_not_below.rst.txt +12 -0
  116. splinekit-0.0.4/_build/_sources/interval/half_bounded/04_not_above.rst.txt +12 -0
  117. splinekit-0.0.4/_build/_sources/interval/half_bounded/05_below.rst.txt +12 -0
  118. splinekit-0.0.4/_build/_sources/interval/half_bounded/index.rst.txt +18 -0
  119. splinekit-0.0.4/_build/_sources/interval/index.rst.txt +14 -0
  120. splinekit-0.0.4/_build/_sources/interval/interval/01_interval.rst.txt +12 -0
  121. splinekit-0.0.4/_build/_sources/interval/interval/index.rst.txt +15 -0
  122. splinekit-0.0.4/_build/_sources/interval/universal/01_universal.rst.txt +12 -0
  123. splinekit-0.0.4/_build/_sources/interval/universal/02_empty.rst.txt +12 -0
  124. splinekit-0.0.4/_build/_sources/interval/universal/03_rr.rst.txt +12 -0
  125. splinekit-0.0.4/_build/_sources/interval/universal/index.rst.txt +16 -0
  126. splinekit-0.0.4/_build/_sources/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst.txt +12 -0
  127. splinekit-0.0.4/_build/_sources/periodic_nonuniform_piecewise/index.rst.txt +14 -0
  128. splinekit-0.0.4/_build/_sources/periodic_spline_1d/01_periodic_spline_1d.rst.txt +12 -0
  129. splinekit-0.0.4/_build/_sources/periodic_spline_1d/index.rst.txt +15 -0
  130. splinekit-0.0.4/_build/_sources/periodic_spline_1d/matplotlib-color.rst.txt +46 -0
  131. splinekit-0.0.4/_build/_sources/periodic_spline_1d/matplotlib-linestyle.rst.txt +20 -0
  132. splinekit-0.0.4/_build/_sources/periodic_spline_1d/matplotlib-marker.rst.txt +67 -0
  133. splinekit-0.0.4/_build/_sources/spline_padding/01_spline_padding.rst.txt +12 -0
  134. splinekit-0.0.4/_build/_sources/spline_padding/index.rst.txt +14 -0
  135. splinekit-0.0.4/_build/_sources/spline_utilities/01_spline_utilities.rst.txt +12 -0
  136. splinekit-0.0.4/_build/_sources/spline_utilities/index.rst.txt +14 -0
  137. splinekit-0.0.4/_build/_sources/tutorial/01_bsplines.rst.txt +11 -0
  138. splinekit-0.0.4/_build/_sources/tutorial/index.rst.txt +15 -0
  139. splinekit-0.0.4/_build/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  140. splinekit-0.0.4/_build/_static/basic.css +914 -0
  141. splinekit-0.0.4/_build/_static/css/badge_only.css +1 -0
  142. splinekit-0.0.4/_build/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  143. splinekit-0.0.4/_build/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  144. splinekit-0.0.4/_build/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  145. splinekit-0.0.4/_build/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  146. splinekit-0.0.4/_build/_static/css/fonts/fontawesome-webfont.eot +0 -0
  147. splinekit-0.0.4/_build/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  148. splinekit-0.0.4/_build/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  149. splinekit-0.0.4/_build/_static/css/fonts/fontawesome-webfont.woff +0 -0
  150. splinekit-0.0.4/_build/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  151. splinekit-0.0.4/_build/_static/css/fonts/lato-bold-italic.woff +0 -0
  152. splinekit-0.0.4/_build/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  153. splinekit-0.0.4/_build/_static/css/fonts/lato-bold.woff +0 -0
  154. splinekit-0.0.4/_build/_static/css/fonts/lato-bold.woff2 +0 -0
  155. splinekit-0.0.4/_build/_static/css/fonts/lato-normal-italic.woff +0 -0
  156. splinekit-0.0.4/_build/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  157. splinekit-0.0.4/_build/_static/css/fonts/lato-normal.woff +0 -0
  158. splinekit-0.0.4/_build/_static/css/fonts/lato-normal.woff2 +0 -0
  159. splinekit-0.0.4/_build/_static/css/theme.css +4 -0
  160. splinekit-0.0.4/_build/_static/custom.css +20 -0
  161. splinekit-0.0.4/_build/_static/doctools.js +149 -0
  162. splinekit-0.0.4/_build/_static/documentation_options.js +13 -0
  163. splinekit-0.0.4/_build/_static/file.png +0 -0
  164. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bold.eot +0 -0
  165. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bold.ttf +0 -0
  166. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bold.woff +0 -0
  167. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bold.woff2 +0 -0
  168. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  169. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  170. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  171. splinekit-0.0.4/_build/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  172. splinekit-0.0.4/_build/_static/fonts/Lato/lato-italic.eot +0 -0
  173. splinekit-0.0.4/_build/_static/fonts/Lato/lato-italic.ttf +0 -0
  174. splinekit-0.0.4/_build/_static/fonts/Lato/lato-italic.woff +0 -0
  175. splinekit-0.0.4/_build/_static/fonts/Lato/lato-italic.woff2 +0 -0
  176. splinekit-0.0.4/_build/_static/fonts/Lato/lato-regular.eot +0 -0
  177. splinekit-0.0.4/_build/_static/fonts/Lato/lato-regular.ttf +0 -0
  178. splinekit-0.0.4/_build/_static/fonts/Lato/lato-regular.woff +0 -0
  179. splinekit-0.0.4/_build/_static/fonts/Lato/lato-regular.woff2 +0 -0
  180. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  181. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  182. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  183. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  184. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  185. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  186. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  187. splinekit-0.0.4/_build/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  188. splinekit-0.0.4/_build/_static/jquery.js +2 -0
  189. splinekit-0.0.4/_build/_static/js/badge_only.js +1 -0
  190. splinekit-0.0.4/_build/_static/js/theme.js +1 -0
  191. splinekit-0.0.4/_build/_static/js/versions.js +228 -0
  192. splinekit-0.0.4/_build/_static/language_data.js +192 -0
  193. splinekit-0.0.4/_build/_static/minus.png +0 -0
  194. splinekit-0.0.4/_build/_static/nbsphinx-broken-thumbnail.svg +9 -0
  195. splinekit-0.0.4/_build/_static/nbsphinx-code-cells.css +259 -0
  196. splinekit-0.0.4/_build/_static/nbsphinx-gallery.css +31 -0
  197. splinekit-0.0.4/_build/_static/nbsphinx-no-thumbnail.svg +9 -0
  198. splinekit-0.0.4/_build/_static/plot_directive.css +16 -0
  199. splinekit-0.0.4/_build/_static/plus.png +0 -0
  200. splinekit-0.0.4/_build/_static/pygments.css +75 -0
  201. splinekit-0.0.4/_build/_static/searchtools.js +632 -0
  202. splinekit-0.0.4/_build/_static/sphinx_highlight.js +154 -0
  203. splinekit-0.0.4/_build/bases/01_bases.html +203 -0
  204. splinekit-0.0.4/_build/bases/index.html +145 -0
  205. splinekit-0.0.4/_build/bsplines/01_bsplines.html +1116 -0
  206. splinekit-0.0.4/_build/bsplines/index.html +161 -0
  207. splinekit-0.0.4/_build/genindex.html +1342 -0
  208. splinekit-0.0.4/_build/glossary/glossary-numbers.html +136 -0
  209. splinekit-0.0.4/_build/glossary/glossary-polynomials.html +137 -0
  210. splinekit-0.0.4/_build/glossary/glossary-splines.html +138 -0
  211. splinekit-0.0.4/_build/glossary/glossary-terminology.html +138 -0
  212. splinekit-0.0.4/_build/glossary/index.html +139 -0
  213. splinekit-0.0.4/_build/index.html +695 -0
  214. splinekit-0.0.4/_build/installation/index.html +216 -0
  215. splinekit-0.0.4/_build/interval/bounded/01_bounded.html +214 -0
  216. splinekit-0.0.4/_build/interval/bounded/02_open.html +311 -0
  217. splinekit-0.0.4/_build/interval/bounded/03_open_closed.html +311 -0
  218. splinekit-0.0.4/_build/interval/bounded/04_closed.html +311 -0
  219. splinekit-0.0.4/_build/interval/bounded/05_closed_open.html +311 -0
  220. splinekit-0.0.4/_build/interval/bounded/index.html +267 -0
  221. splinekit-0.0.4/_build/interval/degenerate/01_degenerate.html +181 -0
  222. splinekit-0.0.4/_build/interval/degenerate/02_singleton.html +338 -0
  223. splinekit-0.0.4/_build/interval/degenerate/index.html +184 -0
  224. splinekit-0.0.4/_build/interval/half_bounded/01_half_bounded.html +184 -0
  225. splinekit-0.0.4/_build/interval/half_bounded/02_above.html +309 -0
  226. splinekit-0.0.4/_build/interval/half_bounded/03_not_below.html +310 -0
  227. splinekit-0.0.4/_build/interval/half_bounded/04_not_above.html +310 -0
  228. splinekit-0.0.4/_build/interval/half_bounded/05_below.html +309 -0
  229. splinekit-0.0.4/_build/interval/half_bounded/index.html +265 -0
  230. splinekit-0.0.4/_build/interval/index.html +167 -0
  231. splinekit-0.0.4/_build/interval/interval/01_interval.html +2083 -0
  232. splinekit-0.0.4/_build/interval/interval/index.html +201 -0
  233. splinekit-0.0.4/_build/interval/universal/01_universal.html +149 -0
  234. splinekit-0.0.4/_build/interval/universal/02_empty.html +285 -0
  235. splinekit-0.0.4/_build/interval/universal/03_rr.html +285 -0
  236. splinekit-0.0.4/_build/interval/universal/index.html +205 -0
  237. splinekit-0.0.4/_build/objects.inv +0 -0
  238. splinekit-0.0.4/_build/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.html +232 -0
  239. splinekit-0.0.4/_build/periodic_nonuniform_piecewise/index.html +155 -0
  240. splinekit-0.0.4/_build/periodic_spline_1d/01_periodic_spline_1d.html +2834 -0
  241. splinekit-0.0.4/_build/periodic_spline_1d/index.html +205 -0
  242. splinekit-0.0.4/_build/periodic_spline_1d/matplotlib-color.html +153 -0
  243. splinekit-0.0.4/_build/periodic_spline_1d/matplotlib-linestyle.html +129 -0
  244. splinekit-0.0.4/_build/periodic_spline_1d/matplotlib-marker.html +150 -0
  245. splinekit-0.0.4/_build/plot_directive/periodic_spline_1d/01_periodic_spline_1d-1.hires.png +0 -0
  246. splinekit-0.0.4/_build/plot_directive/periodic_spline_1d/01_periodic_spline_1d-1.pdf +0 -0
  247. splinekit-0.0.4/_build/plot_directive/periodic_spline_1d/01_periodic_spline_1d-1.png +0 -0
  248. splinekit-0.0.4/_build/py-modindex.html +242 -0
  249. splinekit-0.0.4/_build/search.html +132 -0
  250. splinekit-0.0.4/_build/searchindex.js +1 -0
  251. splinekit-0.0.4/_build/spline_padding/01_spline_padding.html +1418 -0
  252. splinekit-0.0.4/_build/spline_padding/index.html +162 -0
  253. splinekit-0.0.4/_build/spline_utilities/01_spline_utilities.html +682 -0
  254. splinekit-0.0.4/_build/spline_utilities/index.html +162 -0
  255. splinekit-0.0.4/_build/tutorial/01_bsplines.html +130 -0
  256. splinekit-0.0.4/_build/tutorial/index.html +141 -0
  257. splinekit-0.0.4/activate +70 -0
  258. splinekit-0.0.4/dev/01_public_spline_utilities.rst +18 -0
  259. splinekit-0.0.4/dev/02_private_spline_utilities.rst +31 -0
  260. splinekit-0.0.4/dev/Jupyter/bspline_bases.ipynb +1451 -0
  261. splinekit-0.0.4/dev/Jupyter/bspline_interactive_shape.ipynb +458 -0
  262. splinekit-0.0.4/dev/Jupyter/bspline_inverse_sequence.ipynb +557 -0
  263. splinekit-0.0.4/dev/Jupyter/bspline_numeric_stability.ipynb +364 -0
  264. splinekit-0.0.4/dev/Jupyter/bspline_poles.ipynb +134 -0
  265. splinekit-0.0.4/dev/Jupyter/bspline_random1D.ipynb +1914 -0
  266. splinekit-0.0.4/dev/Jupyter/bspline_random2D.ipynb +1040 -0
  267. splinekit-0.0.4/dev/Jupyter/bspline_static_shape.ipynb +229 -0
  268. splinekit-0.0.4/dev/Jupyter/bspline_vs_exponentials.ipynb +572 -0
  269. splinekit-0.0.4/dev/Jupyter/bspline_vs_pi.ipynb +172 -0
  270. splinekit-0.0.4/dev/Jupyter/bspline_vs_trigonometry.ipynb +699 -0
  271. splinekit-0.0.4/dev/Wolfram/Bspline Poles.nb +2047 -0
  272. splinekit-0.0.4/dev/Wolfram/IntervalChecks.nb +2610 -0
  273. splinekit-0.0.4/dev/Wolfram/PeriodicSplinesChecks.nb +11404 -0
  274. splinekit-0.0.4/dev/Wolfram/SplinePaddingChecks.nb +7539 -0
  275. splinekit-0.0.4/dev/Wolfram/Test BSplines.nb +3205 -0
  276. splinekit-0.0.4/dev/Wolfram/Test PeriodicNonuniformPiecewise.nb +453 -0
  277. splinekit-0.0.4/dev/Wolfram/Test PeriodicSpline1D.nb +14686 -0
  278. splinekit-0.0.4/dev/Wolfram/Test SplinePadding.nb +3861 -0
  279. splinekit-0.0.4/dev/Wolfram/Test SplineUtilities.nb +2571 -0
  280. splinekit-0.0.4/dev/Wolfram/Verify doc.nb +3658 -0
  281. splinekit-0.0.4/dev/Wolfram/rescued Test SplinePadding.nb +3935 -0
  282. splinekit-0.0.4/dev/sk.numbers +0 -0
  283. splinekit-0.0.4/docs/_static/custom.css +20 -0
  284. splinekit-0.0.4/docs/bases/01_bases.rst +12 -0
  285. splinekit-0.0.4/docs/bases/index.rst +14 -0
  286. splinekit-0.0.4/docs/bases/noxfile.py +18 -0
  287. splinekit-0.0.4/docs/bsplines/01_bsplines.rst +12 -0
  288. splinekit-0.0.4/docs/bsplines/index.rst +14 -0
  289. splinekit-0.0.4/docs/bsplines/noxfile.py +18 -0
  290. splinekit-0.0.4/docs/conf.py +54 -0
  291. splinekit-0.0.4/docs/glossary/glossary-numbers.rst +29 -0
  292. splinekit-0.0.4/docs/glossary/glossary-polynomials.rst +33 -0
  293. splinekit-0.0.4/docs/glossary/glossary-splines.rst +37 -0
  294. splinekit-0.0.4/docs/glossary/glossary-terminology.rst +37 -0
  295. splinekit-0.0.4/docs/glossary/index.rst +13 -0
  296. splinekit-0.0.4/docs/index.rst +21 -0
  297. splinekit-0.0.4/docs/installation/index.rst +5 -0
  298. splinekit-0.0.4/docs/interval/bounded/01_bounded.rst +12 -0
  299. splinekit-0.0.4/docs/interval/bounded/02_open.rst +12 -0
  300. splinekit-0.0.4/docs/interval/bounded/03_open_closed.rst +12 -0
  301. splinekit-0.0.4/docs/interval/bounded/04_closed.rst +12 -0
  302. splinekit-0.0.4/docs/interval/bounded/05_closed_open.rst +12 -0
  303. splinekit-0.0.4/docs/interval/bounded/index.rst +18 -0
  304. splinekit-0.0.4/docs/interval/bounded/noxfile.py +18 -0
  305. splinekit-0.0.4/docs/interval/degenerate/01_degenerate.rst +12 -0
  306. splinekit-0.0.4/docs/interval/degenerate/02_singleton.rst +12 -0
  307. splinekit-0.0.4/docs/interval/degenerate/index.rst +15 -0
  308. splinekit-0.0.4/docs/interval/degenerate/noxfile.py +18 -0
  309. splinekit-0.0.4/docs/interval/half_bounded/01_half_bounded.rst +12 -0
  310. splinekit-0.0.4/docs/interval/half_bounded/02_above.rst +12 -0
  311. splinekit-0.0.4/docs/interval/half_bounded/03_not_below.rst +12 -0
  312. splinekit-0.0.4/docs/interval/half_bounded/04_not_above.rst +12 -0
  313. splinekit-0.0.4/docs/interval/half_bounded/05_below.rst +12 -0
  314. splinekit-0.0.4/docs/interval/half_bounded/index.rst +18 -0
  315. splinekit-0.0.4/docs/interval/half_bounded/noxfile.py +18 -0
  316. splinekit-0.0.4/docs/interval/index.rst +14 -0
  317. splinekit-0.0.4/docs/interval/interval/01_interval.rst +12 -0
  318. splinekit-0.0.4/docs/interval/interval/index.rst +15 -0
  319. splinekit-0.0.4/docs/interval/interval/noxfile.py +18 -0
  320. splinekit-0.0.4/docs/interval/noxfile.py +18 -0
  321. splinekit-0.0.4/docs/interval/universal/01_universal.rst +12 -0
  322. splinekit-0.0.4/docs/interval/universal/02_empty.rst +12 -0
  323. splinekit-0.0.4/docs/interval/universal/03_rr.rst +12 -0
  324. splinekit-0.0.4/docs/interval/universal/index.rst +16 -0
  325. splinekit-0.0.4/docs/interval/universal/noxfile.py +18 -0
  326. splinekit-0.0.4/docs/noxfile.py +18 -0
  327. splinekit-0.0.4/docs/periodic_nonuniform_piecewise/01_periodic_nonuniform_piecewise.rst +12 -0
  328. splinekit-0.0.4/docs/periodic_nonuniform_piecewise/index.rst +14 -0
  329. splinekit-0.0.4/docs/periodic_nonuniform_piecewise/noxfile.py +18 -0
  330. splinekit-0.0.4/docs/periodic_spline_1d/01_periodic_spline_1d.rst +12 -0
  331. splinekit-0.0.4/docs/periodic_spline_1d/index.rst +15 -0
  332. splinekit-0.0.4/docs/periodic_spline_1d/m00.png +0 -0
  333. splinekit-0.0.4/docs/periodic_spline_1d/m01.png +0 -0
  334. splinekit-0.0.4/docs/periodic_spline_1d/m02.png +0 -0
  335. splinekit-0.0.4/docs/periodic_spline_1d/m03.png +0 -0
  336. splinekit-0.0.4/docs/periodic_spline_1d/m04.png +0 -0
  337. splinekit-0.0.4/docs/periodic_spline_1d/m05.png +0 -0
  338. splinekit-0.0.4/docs/periodic_spline_1d/m06.png +0 -0
  339. splinekit-0.0.4/docs/periodic_spline_1d/m07.png +0 -0
  340. splinekit-0.0.4/docs/periodic_spline_1d/m08.png +0 -0
  341. splinekit-0.0.4/docs/periodic_spline_1d/m09.png +0 -0
  342. splinekit-0.0.4/docs/periodic_spline_1d/m10.png +0 -0
  343. splinekit-0.0.4/docs/periodic_spline_1d/m11.png +0 -0
  344. splinekit-0.0.4/docs/periodic_spline_1d/m12.png +0 -0
  345. splinekit-0.0.4/docs/periodic_spline_1d/m13.png +0 -0
  346. splinekit-0.0.4/docs/periodic_spline_1d/m14.png +0 -0
  347. splinekit-0.0.4/docs/periodic_spline_1d/m15.png +0 -0
  348. splinekit-0.0.4/docs/periodic_spline_1d/m16.png +0 -0
  349. splinekit-0.0.4/docs/periodic_spline_1d/m17.png +0 -0
  350. splinekit-0.0.4/docs/periodic_spline_1d/m18.png +0 -0
  351. splinekit-0.0.4/docs/periodic_spline_1d/m19.png +0 -0
  352. splinekit-0.0.4/docs/periodic_spline_1d/m20.png +0 -0
  353. splinekit-0.0.4/docs/periodic_spline_1d/m21.png +0 -0
  354. splinekit-0.0.4/docs/periodic_spline_1d/m22.png +0 -0
  355. splinekit-0.0.4/docs/periodic_spline_1d/m23.png +0 -0
  356. splinekit-0.0.4/docs/periodic_spline_1d/m24.png +0 -0
  357. splinekit-0.0.4/docs/periodic_spline_1d/matplotlib-color.rst +46 -0
  358. splinekit-0.0.4/docs/periodic_spline_1d/matplotlib-linestyle.rst +20 -0
  359. splinekit-0.0.4/docs/periodic_spline_1d/matplotlib-marker.rst +67 -0
  360. splinekit-0.0.4/docs/periodic_spline_1d/noxfile.py +18 -0
  361. splinekit-0.0.4/docs/spline_padding/01_spline_padding.rst +12 -0
  362. splinekit-0.0.4/docs/spline_padding/index.rst +14 -0
  363. splinekit-0.0.4/docs/spline_padding/noxfile.py +18 -0
  364. splinekit-0.0.4/docs/spline_utilities/01_spline_utilities.rst +12 -0
  365. splinekit-0.0.4/docs/spline_utilities/index.rst +14 -0
  366. splinekit-0.0.4/docs/spline_utilities/noxfile.py +18 -0
  367. splinekit-0.0.4/docs/tutorial/01_bsplines.rst +11 -0
  368. splinekit-0.0.4/docs/tutorial/index.rst +15 -0
  369. splinekit-0.0.4/docs/tutorial/noxfile.py +18 -0
  370. splinekit-0.0.4/pyproject.toml +91 -0
  371. splinekit-0.0.4/src/splinekit/__init__.py +1 -0
  372. splinekit-0.0.4/src/splinekit/bases.py +81 -0
  373. splinekit-0.0.4/src/splinekit/bsplines.py +1392 -0
  374. splinekit-0.0.4/src/splinekit/interval/__init__.py +1 -0
  375. splinekit-0.0.4/src/splinekit/interval/_known_intervals.py +63 -0
  376. splinekit-0.0.4/src/splinekit/interval/above.py +336 -0
  377. splinekit-0.0.4/src/splinekit/interval/below.py +336 -0
  378. splinekit-0.0.4/src/splinekit/interval/bounded.py +131 -0
  379. splinekit-0.0.4/src/splinekit/interval/closed.py +352 -0
  380. splinekit-0.0.4/src/splinekit/interval/closed_open.py +354 -0
  381. splinekit-0.0.4/src/splinekit/interval/degenerate.py +79 -0
  382. splinekit-0.0.4/src/splinekit/interval/empty.py +292 -0
  383. splinekit-0.0.4/src/splinekit/interval/half_bounded.py +80 -0
  384. splinekit-0.0.4/src/splinekit/interval/interval.py +2447 -0
  385. splinekit-0.0.4/src/splinekit/interval/mypy.ini +2 -0
  386. splinekit-0.0.4/src/splinekit/interval/not_above.py +337 -0
  387. splinekit-0.0.4/src/splinekit/interval/not_below.py +337 -0
  388. splinekit-0.0.4/src/splinekit/interval/open.py +352 -0
  389. splinekit-0.0.4/src/splinekit/interval/open_closed.py +353 -0
  390. splinekit-0.0.4/src/splinekit/interval/rr.py +294 -0
  391. splinekit-0.0.4/src/splinekit/interval/singleton.py +320 -0
  392. splinekit-0.0.4/src/splinekit/interval/universal.py +32 -0
  393. splinekit-0.0.4/src/splinekit/mypy.ini +2 -0
  394. splinekit-0.0.4/src/splinekit/periodic_nonuniform_piecewise.py +287 -0
  395. splinekit-0.0.4/src/splinekit/periodic_spline_1d.py +5946 -0
  396. splinekit-0.0.4/src/splinekit/spline_padding.py +1900 -0
  397. splinekit-0.0.4/src/splinekit/spline_utilities.py +4719 -0
  398. splinekit-0.0.4/tests/test_bsplines.py +6304 -0
  399. splinekit-0.0.4/tests/test_periodic_nonuniform_piecewise.py +284 -0
  400. splinekit-0.0.4/tests/test_periodic_spline_1d.py +8640 -0
  401. splinekit-0.0.4/tests/test_spline_padding.py +2120 -0
  402. splinekit-0.0.4/tests/test_spline_utilities.py +4530 -0
@@ -0,0 +1,44 @@
1
+ # splinekit/.github/workflows/deploy-docs.yml
2
+
3
+ name: Deploy Sphinx Documentation to GitHub Pages
4
+
5
+ on:
6
+ push:
7
+ branches: [ main ] # run on pushes to main
8
+
9
+ permissions:
10
+ contents: read # we only need to read this repo's contents
11
+
12
+ concurrency:
13
+ group: pages
14
+ cancel-in-progress: false
15
+
16
+ jobs:
17
+ build:
18
+ runs-on: ubuntu-latest
19
+
20
+ steps:
21
+ - name: Checkout repository
22
+ uses: actions/checkout@v4
23
+
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.12"
28
+ cache: pip
29
+
30
+ - name: Install documentation requirements
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ pip install -e .[docs]
34
+
35
+ - name: Build Sphinx documentation
36
+ run: sphinx-build docs/ docs/_build/
37
+
38
+ - name: Deploy to splinekit.github.io
39
+ uses: peaceiris/actions-gh-pages@v4
40
+ with:
41
+ deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
42
+ external_repository: splinekit/splinekit.github.io
43
+ publish_branch: main
44
+ publish_dir: docs/_build
@@ -0,0 +1,35 @@
1
+ # splinekit/.github/workflows/release.yml
2
+
3
+ name: Build & publish to PyPI
4
+
5
+ on:
6
+ push:
7
+ tags:
8
+ - "v*"
9
+
10
+ permissions:
11
+ contents: read
12
+ id-token: write # OIDC for PyPI
13
+
14
+ jobs:
15
+ build-and-publish:
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.12"
26
+
27
+ - name: Install build tooling
28
+ run: |
29
+ python -m pip install -U pip build
30
+
31
+ - name: Build sdist and wheel (pure Python)
32
+ run: python -m build # creates dist/*.tar.gz and dist/*.whl
33
+
34
+ - name: Publish to PyPI
35
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,37 @@
1
+ # splinekit/.github/workflows/test.yml
2
+
3
+ name: Test Library
4
+
5
+ on:
6
+ push:
7
+ branches: [ main ]
8
+ pull_request:
9
+ branches: [ main ]
10
+
11
+ jobs:
12
+ test:
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, macos-latest, windows-latest]
17
+ python-version: ["3.11", "3.12"]
18
+
19
+ runs-on: ${{ matrix.os }}
20
+
21
+ steps:
22
+ - name: Checkout repository
23
+ uses: actions/checkout@v4
24
+
25
+ - name: Set up Python ${{ matrix.python-version }}
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: ${{ matrix.python-version }}
29
+ cache: pip
30
+
31
+ - name: Install splinekit with test extras
32
+ run: |
33
+ python -m pip install --upgrade pip
34
+ pip install -e .[tests]
35
+
36
+ - name: Run tests
37
+ run: pytest
@@ -0,0 +1,222 @@
1
+ .DS_Store
2
+ splinekit-env/
3
+
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[codz]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # macOS
13
+ .DS_Store
14
+
15
+ # Distribution / packaging
16
+ .Python
17
+ build/
18
+ develop-eggs/
19
+ dist/
20
+ downloads/
21
+ eggs/
22
+ .eggs/
23
+ lib/
24
+ lib64/
25
+ parts/
26
+ sdist/
27
+ var/
28
+ wheels/
29
+ share/python-wheels/
30
+ *.egg-info/
31
+ .installed.cfg
32
+ *.egg
33
+ MANIFEST
34
+
35
+ # Sphinx documentation
36
+ docs/_build/
37
+ docs/_contents/
38
+ docs/sg_execution_times.rst
39
+ docs/auto_examples/
40
+ docs/gen_modules/
41
+ docs/notebooks_binder/
42
+ docs/notebooks_jupyterlite/
43
+
44
+ # PyInstaller
45
+ # Usually these files are written by a python script from a template
46
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
47
+ *.manifest
48
+ *.spec
49
+
50
+ # Installer logs
51
+ pip-log.txt
52
+ pip-delete-this-directory.txt
53
+
54
+ # Unit test / coverage reports
55
+ htmlcov/
56
+ .tox/
57
+ .nox/
58
+ .coverage
59
+ .coverage.*
60
+ .cache
61
+ nosetests.xml
62
+ coverage.xml
63
+ *.cover
64
+ *.py.cover
65
+ .hypothesis/
66
+ .pytest_cache/
67
+ cover/
68
+
69
+ # Translations
70
+ *.mo
71
+ *.pot
72
+
73
+ # Django stuff:
74
+ *.log
75
+ local_settings.py
76
+ db.sqlite3
77
+ db.sqlite3-journal
78
+
79
+ # Flask stuff:
80
+ instance/
81
+ .webassets-cache
82
+
83
+ # Scrapy stuff:
84
+ .scrapy
85
+
86
+ # Sphinx documentation
87
+ docs/_build/
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
+ # UV
113
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
114
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
115
+ # commonly ignored for libraries.
116
+ #uv.lock
117
+
118
+ # poetry
119
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
120
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
121
+ # commonly ignored for libraries.
122
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
123
+ #poetry.lock
124
+ #poetry.toml
125
+
126
+ # pdm
127
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
128
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
129
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
130
+ #pdm.lock
131
+ #pdm.toml
132
+ .pdm-python
133
+ .pdm-build/
134
+
135
+ # pixi
136
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
137
+ #pixi.lock
138
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
139
+ # in the .venv directory. It is recommended not to include this directory in version control.
140
+ .pixi
141
+
142
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
143
+ __pypackages__/
144
+
145
+ # Celery stuff
146
+ celerybeat-schedule
147
+ celerybeat.pid
148
+
149
+ # SageMath parsed files
150
+ *.sage.py
151
+
152
+ # Environments
153
+ .env
154
+ .envrc
155
+ .venv
156
+ env/
157
+ venv/
158
+ ENV/
159
+ env.bak/
160
+ venv.bak/
161
+
162
+ # Spyder project settings
163
+ .spyderproject
164
+ .spyproject
165
+
166
+ # Rope project settings
167
+ .ropeproject
168
+
169
+ # mkdocs documentation
170
+ /site
171
+
172
+ # mypy
173
+ .mypy_cache/
174
+ .dmypy.json
175
+ dmypy.json
176
+
177
+ # Pyre type checker
178
+ .pyre/
179
+
180
+ # pytype static type analyzer
181
+ .pytype/
182
+
183
+ # Cython debug symbols
184
+ cython_debug/
185
+
186
+ # PyCharm
187
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
188
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
189
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
190
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
191
+ #.idea/
192
+
193
+ # Abstra
194
+ # Abstra is an AI-powered process automation framework.
195
+ # Ignore directories containing user credentials, local state, and settings.
196
+ # Learn more at https://abstra.io/docs
197
+ .abstra/
198
+
199
+ # Visual Studio Code
200
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
201
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
202
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
203
+ # you could uncomment the following to ignore the entire vscode folder
204
+ # .vscode/
205
+
206
+ # Ruff stuff:
207
+ .ruff_cache/
208
+
209
+ # PyPI configuration file
210
+ .pypirc
211
+
212
+ # Cursor
213
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
214
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
215
+ # refer to https://docs.cursor.com/context/ignore-files
216
+ .cursorignore
217
+ .cursorindexingignore
218
+
219
+ # Marimo
220
+ marimo/_static/
221
+ marimo/_lsp/
222
+ __marimo__/
@@ -0,0 +1,102 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ # Load the required libraries.
8
+ from ipywidgets import interactive
9
+ import matplotlib.pyplot as plt
10
+
11
+ import splinekit as sk # This library
12
+
13
+ # Define the plot function
14
+ def cardinal_b_spline_plot (
15
+ degree = 3
16
+ ):
17
+ # A cardinal B-spline has an infinite support but decays exponentially
18
+ # Here, we combine periodization and a wide margin to simplify the display effort
19
+ supp = sk.interval.Closed((-200, 200))
20
+ period = supp.diameter
21
+ # Construct a spline from a periodized cardinal B-spline
22
+ s = sk.PeriodicSpline1D.periodized_cardinal_b_spline(
23
+ period = int(period),
24
+ degree = degree
25
+ )
26
+ # Plot the cardinal B-spline
27
+ s.plot(
28
+ plt.subplots(),
29
+ plotdomain = sk.interval.Closed((-8, 8)),
30
+ plotrange = sk.interval.Closed((-0.25, 1.05)),
31
+ plotpoints = 200 + 1
32
+ )
33
+
34
+ # Interact with the degree
35
+ interactive(cardinal_b_spline_plot, degree = (0, 30))
36
+
37
+
38
+
39
+
40
+
41
+ # Load the required libraries.
42
+ from ipywidgets import interactive
43
+ import math
44
+ import matplotlib.pyplot as plt
45
+ import numpy as np
46
+
47
+ import splinekit as sk # This library
48
+
49
+ # Define the plot function
50
+ def cardinal_b_spline_as_sinc_plot (
51
+ degree = 3
52
+ ):
53
+ # Location of the samples
54
+ abscissa = np.linspace(-15, 15, num = 200 + 1, dtype = float)
55
+ # Sinc data
56
+ def sinc (
57
+ x
58
+ ):
59
+ if math.isclose(
60
+ 0,
61
+ x,
62
+ rel_tol = math.sqrt(math.ulp(1.0)),
63
+ abs_tol = math.sqrt(math.ulp(1.0))
64
+ ):
65
+ return 1
66
+ return math.sin(math.pi * x) / (math.pi * x)
67
+ sinc_data = np.array([sinc(x) for x in abscissa], dtype = float)
68
+ # Cardinal B-spline
69
+ spline_data = np.array(
70
+ [sk.cardinal_b_spline(x, degree) for x in abscissa],
71
+ dtype = float
72
+
73
+ )
74
+
75
+ # Spline plot
76
+ plt.subplot(211)
77
+ plt.xlim(-15.025, 15.025)
78
+ plt.ylim(-0.25, 1.05)
79
+ ax = plt.gca()
80
+ ax.spines.right.set_visible(False)
81
+ ax.spines.top.set_visible(False)
82
+ plt.plot(abscissa, sinc_data, "-C2", linewidth = 0.5)
83
+ plt.plot(abscissa, spline_data, "-C0")
84
+
85
+ # Difference plot
86
+ plt.subplot(212)
87
+ plt.xlim(-15.025, 15.025)
88
+ plt.ylim(-0.2, 0.2)
89
+ ax = plt.gca()
90
+ ax.spines.right.set_visible(False)
91
+ ax.spines.top.set_visible(False)
92
+ plt.plot([-3, 3], [0, 0], "-C2", linewidth = 0.5)
93
+ plt.plot(abscissa, sinc_data - spline_data, "-C0")
94
+
95
+ # Show the plot
96
+ plt.show()
97
+
98
+ # Interact with the degree
99
+ interactive(cardinal_b_spline_as_sinc_plot, degree = (0, 9))
100
+
101
+
102
+
@@ -0,0 +1,139 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ # Load the required libraries.
8
+ from ipywidgets import interactive
9
+ import matplotlib.pyplot as plt
10
+
11
+ import splinekit as sk # This library
12
+
13
+ # Define the plot function
14
+ def b_spline_plot (
15
+ degree = 3
16
+ ):
17
+ # Support of a B-spline
18
+ supp = sk.b_spline_support(degree)
19
+ # Avoid overlap and leave a margin
20
+ # The margin serves a purpose only for the B-spline of degree 0
21
+ period = supp.diameter + 1
22
+ # Construct a spline from a non-overlapping periodic B-spline
23
+ s = sk.PeriodicSpline1D.periodized_b_spline(
24
+ period = int(period),
25
+ degree = degree
26
+ )
27
+ # Plot the B-spline
28
+ s.plot(
29
+ plt.subplots(),
30
+ plotdomain = sk.interval.Closed((-0.5 * supp.diameter, 0.5 * supp.diameter)),
31
+ plotrange = sk.interval.Closed((-0.05, 1.05)),
32
+ plotpoints = 200 + 1
33
+ )
34
+
35
+ # Interact with the degree
36
+ interactive(b_spline_plot, degree = (0, 30))
37
+
38
+
39
+
40
+
41
+
42
+ # Load the required libraries.
43
+ from ipywidgets import interactive
44
+ import matplotlib.pyplot as plt
45
+
46
+ import splinekit as sk # This library
47
+
48
+ # Define the plot function
49
+ def b_spline_plot (
50
+ degree = 3
51
+ ):
52
+ # Support of a B-spline
53
+ supp = sk.b_spline_support(degree)
54
+ # Avoid overlap and leave a margin
55
+ # The margin serves a purpose only for the B-spline of degree 0
56
+ period = supp.diameter + 1
57
+ # Construct a spline from a non-overlapping periodic B-spline
58
+ s = sk.PeriodicSpline1D.periodized_b_spline(
59
+ period = int(period),
60
+ degree = degree
61
+ )
62
+ # Get all finite derivatives
63
+ ds = [s.differentiated(m) for m in range(degree + 1)]
64
+ # Range of the plot
65
+ minrange = 0
66
+ maxrange = 0
67
+ if 0 == degree % 4:
68
+ minrange = ds[-1].at(1)
69
+ maxrange = ds[-1].at(0)
70
+ elif 1 == degree % 4:
71
+ minrange = ds[-1].at(0.5)
72
+ maxrange = ds[-1].at(-0.5)
73
+ elif 2 == degree % 4:
74
+ minrange = ds[-1].at(0)
75
+ maxrange = ds[-1].at(1)
76
+ elif 3 == degree % 4:
77
+ minrange = ds[-1].at(-0.5)
78
+ maxrange = ds[-1].at(0.5)
79
+ # Plot the B-spline and its derivatives
80
+ subplot = plt.subplots()
81
+ for m in range(degree + 1):
82
+ ds[m].plot(
83
+ subplot,
84
+ plotdomain = sk.interval.Closed((-0.5 * supp.diameter, 0.5 * supp.diameter)),
85
+ plotrange = sk.interval.Closed((minrange * 1.1, maxrange * 1.1)),
86
+ plotpoints = 200 + 1,
87
+ line_fmt = "-C" + str(m % 10),
88
+ marker_fmt = "",
89
+ stem_fmt = "None",
90
+ knot_marker = "",
91
+ periodbound_marker_fmt = "",
92
+ periodbound_stem_fmt = "None"
93
+ )
94
+
95
+ # Interact with the degree
96
+ interactive(b_spline_plot, degree = (0, 30))
97
+
98
+
99
+
100
+
101
+
102
+ # Load the required libraries.
103
+ from ipywidgets import interactive
104
+ import matplotlib.pyplot as plt
105
+ import numpy as np
106
+
107
+ import splinekit as sk # This library
108
+
109
+ # Define the plot function
110
+ def int_b_spline_plot (
111
+ degree = 3
112
+ ):
113
+ # Support of a B-spline
114
+ supp = sk.b_spline_support(degree)
115
+ # Give space for the integral to rise and fall
116
+ period = 2 * int(supp.diameter)
117
+ # Construct a spline from a non-overlapping periodic B-spline
118
+ s = sk.PeriodicSpline1D.periodized_b_spline(period = period, degree = degree)
119
+ # Integration is equivalent to convolution with a box
120
+ b = np.concat((
121
+ np.ones(period // 2, dtype = float),
122
+ np.zeros(period // 2, dtype = float)
123
+ ))
124
+ box = sk.PeriodicSpline1D.from_spline_coeff(b, degree = 0, delay = 0.5)
125
+ s = sk.PeriodicSpline1D.convolve(s, box)
126
+ # Plot the integrated B-spline
127
+ s.plot(
128
+ plt.subplots(),
129
+ plotdomain = sk.interval.Closed((-0.5 * supp.diameter, 0.5 * supp.diameter)),
130
+ plotrange = sk.interval.Closed((-0.05, 1.05)),
131
+ plotpoints = 200 + 1,
132
+ knot_marker = ""
133
+ )
134
+
135
+ # Interact with the degree
136
+ interactive(int_b_spline_plot, degree = (0, 30))
137
+
138
+
139
+
@@ -0,0 +1,98 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ # Load the required libraries.
8
+ from ipywidgets import interactive
9
+ import matplotlib.pyplot as plt
10
+
11
+ import splinekit as sk # This library
12
+
13
+ # Setup
14
+ min_arg = -6 # Leftmost integer argument of the domain
15
+ max_arg = 6 # Rightmost integer argument of the domain
16
+ k = range(min_arg, max_arg + 1)
17
+
18
+ # Define the plot function
19
+ def inv_b_spline_plot (
20
+ degree = 3
21
+ ):
22
+ # Data
23
+ ib = [sk.ib_coeff(q, degree) for q in k]
24
+ # Layout of the plot
25
+ (fig, ax) = plt.subplots()
26
+ ax.spines.right.set_visible(False)
27
+ ax.spines.top.set_visible(False)
28
+ plt.xticks(range(min_arg, max_arg + 1))
29
+ plt.ylim(-8, 10)
30
+ # Plot
31
+ (_, stemlines, baseline) = ax.stem(k, ib)
32
+ baseline.set_color("k")
33
+ baseline.set_linewidth(0.5)
34
+ stemlines.set_linewidth(0.25)
35
+ fig.tight_layout()
36
+
37
+ # Interact with the degree
38
+ interactive(inv_b_spline_plot, degree = (0, 9))
39
+
40
+
41
+
42
+
43
+
44
+ # Load the required libraries.
45
+ from ipywidgets import interactive
46
+ import matplotlib.pyplot as plt
47
+
48
+ import splinekit as sk # This library
49
+
50
+ # Define the plot function
51
+ def inv_b_spline_plot (
52
+ degree = 3,
53
+ period = 8
54
+ ):
55
+ # Non-periodized data
56
+ k = range(0, period // 2 + 1)
57
+ ib = [sk.ib_coeff(q, degree) for q in k]
58
+
59
+ # Periodized data
60
+ kp = range(0, period - 1 + 1)
61
+ ibp = sk.PeriodicSpline1D.periodized_cardinal_b_spline(
62
+ degree = degree,
63
+ period = period
64
+ ).spline_coeff
65
+
66
+ # Periodized plot
67
+ plt.subplot(211)
68
+ ax = plt.gca()
69
+ ax.spines.right.set_visible(False)
70
+ ax.spines.top.set_visible(False)
71
+ plt.xticks(kp)
72
+ plt.ylim(-9, 11)
73
+ (_, stemlines, baseline) = ax.stem(kp, ibp)
74
+ baseline.set_color("k")
75
+ baseline.set_linewidth(0.5)
76
+ stemlines.set_linewidth(0.25)
77
+ xlimp = plt.xlim()
78
+
79
+ # Difference plot
80
+ plt.subplot(212)
81
+ ax = plt.gca()
82
+ ax.spines.right.set_visible(False)
83
+ ax.spines.top.set_visible(False)
84
+ plt.xticks(kp)
85
+ plt.xlim(xlimp)
86
+ (_, stemlines, baseline) = ax.stem(k, ib - ibp[ : len(k)])
87
+ baseline.set_color("k")
88
+ baseline.set_linewidth(0.5)
89
+ stemlines.set_linewidth(0.25)
90
+
91
+ # Show the plot
92
+ plt.show()
93
+
94
+ # Interact with the degree
95
+ interactive(inv_b_spline_plot, degree = (0, 9), period = (1, 15))
96
+
97
+
98
+