{"id":21183182,"url":"https://github.com/jonathanschilling/pypspline3","last_synced_at":"2026-01-02T02:40:51.641Z","repository":{"id":59787512,"uuid":"539050067","full_name":"jonathanschilling/pypspline3","owner":"jonathanschilling","description":"1D to 3D splines with (optional) periodic boundary conditions","archived":false,"fork":false,"pushed_at":"2022-09-22T11:43:10.000Z","size":303,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-21T12:34:23.325Z","etag":null,"topics":["boundary-conditions","interpolation","spline","stellarator","tokamak","toroidal-coordinate"],"latest_commit_sha":null,"homepage":"","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanschilling.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-20T15:04:50.000Z","updated_at":"2023-09-07T15:00:20.000Z","dependencies_parsed_at":"2023-01-18T18:34:26.082Z","dependency_job_id":null,"html_url":"https://github.com/jonathanschilling/pypspline3","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanschilling%2Fpypspline3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanschilling%2Fpypspline3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanschilling%2Fpypspline3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanschilling%2Fpypspline3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanschilling","download_url":"https://codeload.github.com/jonathanschilling/pypspline3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243639400,"owners_count":20323505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boundary-conditions","interpolation","spline","stellarator","tokamak","toroidal-coordinate"],"created_at":"2024-11-20T17:59:32.317Z","updated_at":"2026-01-02T02:40:51.618Z","avatar_url":"https://github.com/jonathanschilling.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyPSPLINE\nPyPSPLINE is a Python interface to the Fortran spline library [PSPLINE](https://w3.pppl.gov/ntcc/PSPLINE/).\n\n![build](https://github.com/jonathanschilling/pypspline3/actions/workflows/pypspline.yaml/badge.svg)\n\nThe routines of the `compact` F77 interface are wrapped in Python classes.\nInternal documentation of the underlying Fortran routines can be found in the [PSPLINE Help](https://w3.pppl.gov/~pshare/help/pspline.htm)\nat [F77_standard_software](https://w3.pppl.gov/~pshare/help/body_pspline_hlp.html#outfile24.html) --\u003e [Compact_Splines](https://w3.pppl.gov/~pshare/help/body_pspline_hlp.html#outfile30.html) .\n\n## Usage\n\nThe use of this package is demonstrated in a few scripts in the [`demo`](demo/) folder:\n\n* [`demo/demo_1d_periodic_interp.py`](demo/demo_1d_periodic_interp.py)\n* [`demo/demo_pspline_1d.py`](demo/demo_pspline_1d.py)\n* [`demo/demo_pspline_2d.py`](demo/demo_pspline_2d.py)\n* [`demo/demo_pspline_3d.py`](demo/demo_pspline_3d.py)\n\n## Prerequisites\n\n* Python 3 (tested with 3.10.7): http://python.org\n* NumPy: http://numpy.org/\n\nA Fortran 90 and a C compiler.\n\nI assume the platform to be UNIX. If you manage to build PSPLINE/pypspline on Windows, let me know.\n\n## Building PyPSPLINE\n\nA minimal subset of PSPLINE required for 1D, 2D and 3D spline interpolation with periodic boundary conditions\nis included in this repository.\n\nThe setup relies on `numpy.disttools` as suggested in the [`f2py` documentation](https://numpy.org/doc/stable/f2py/buildtools/distutils.html).\nThis will likely shift to `meson` once [SciPy](https://github.com/scipy/scipy/issues/13615) and NumPy have migrated as well.\n\nFor now, the build and installation process goes as follows:\n\n```bash\npip install --user .\n```\n\nThe `f2py` signature file [`src/fpspline.pyf`](src/fpspline.pyf) was auto-generated using the included [`run_f2py.sh`](run_f2py.sh) script\nand then hand-adjusted to line up with the assumptions made in [the original](https://github.com/jonathanschilling/pypspline/blob/ab3a6858cb77345be1403be16061a27efdcd91a2/pypspline/fpspline/fpspline.pyf).\n\nFor Arch Linux users, a `PKGBUILD` is available at [`aur/PKGBUILD`](aur/PKGBUILD).\n\n## History\n\nThis package was originally created by Alexander Pletzer\nand published on SourceForce as [`pypspline`](https://sourceforge.net/projects/pypspline/).\n\nThe old [PyPSPLINE CVS repository](https://sourceforge.net/projects/pypspline/) was migrated to this Git repository.\nOne needs the `cvs` and `cvs2svn` packages to do this on Arch Linux.\n\n```bash\nrsync -ai a.cvs.sourceforge.net::cvsroot/pypspline/ cvs2git-pypspline\ncd cvs2git-pypspline\ncvs2git --blobfile=blob.dat --dumpfile=dump.dat \\\n    --username=pletzer --default-eol=native \\\n    --encoding=utf8 --encoding=latin1 --fallback-encoding=ascii \\\n    .\ncd ..\nmkdir pypspline\ncd pypspline\ngit init\ncat ../cvs2git-pypspline/blob.dat ../cvs2git-pypspline/dump.dat | git fast-import\ngit remote add origin git@github.com:jonathanschilling/pypspline.git\ngit checkout\ngit push origin --mirror\nmv pypspline{,_old}\nmv pypspline_old/* .\nrmdir pypspline_old\nrm -r CVSROOT\ngit add .\ngit commit -m \"one folder less\"\ngit branch --set-upstream-to=origin/master master\ngit pull\ngit push\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanschilling%2Fpypspline3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanschilling%2Fpypspline3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanschilling%2Fpypspline3/lists"}