UCurv project - PyLops/pylops GitHub Wiki
This page is intended to provide a roadmap (and timelines) for the integration of https://github.com/yud08/ucurv
into PyLops. It contains tasks that should be accomplished in both projects to bring code and documentation quality to an acceptable level for PyLops to confidently include ucurv
as a trusted (optional) dependency.
UCurv
List of tasks (in no specific order):
-
Improve README providing info about
- info on how to install from pip and source
- simple example showcasing the main functionality of the library
- info on how to run tests and build doc
-
Add Makefile like https://github.com/PyLops/pylops/blob/dev/Makefile with basic commands used to build the environment used in ucurv development, run tests, build doc, and potentially do linting and type checking
-
Clean up tests (adding docstrings to each test explaining what it does). Consider using https://github.com/PyLops/pylops/blob/3ec6e05e8da4e8a00cd53cac251bc244fe992a22/pytests/test_ffts.py#L261 to build what is currently called
combinations
) -
Switch from
setup.py
topyproject.toml
(see https://github.com/PyLops/pylops/blob/dev/pyproject.toml). If brave could consider using this project also as a guinea pig for usinguv
instead (https://github.com/astral-sh/uv) -
Add github action to run tests (see https://github.com/PyLops/pylops/blob/dev/.github/workflows/build.yaml)
-
Move
devscript
(so far I see only notebooks) to another repository as notebooks pollute version control make it harder to follow the code history from commits. -
Add docstring to main
__init__
file (useful when runninghelp(ucurv)
) - see https://github.com/PyLops/pylops/blob/dev/pylops/__init__.py. Also add version part and usesetuptools_scm
to get automated versioning (follow PyLops pyproject.toml to set it up -
meyerwavelet.py
add docstrings to all functions and create some unittests. Note that using ChatGPT/CoPilot to get a first version of the docstrings and then refine them is becoming a good time saver (do NOT copy-paste without reading as sometimes these AI assistants make mistakes!) -
zoneplate.py
add docstrings to all functions and create some unittests -
fun_meyer.py
add docstrings to all functions and create some unittests. I see there is already a docstring forfun_meyer
but it uses an uncoventional format (need something standard like numpydoc - reccomended - to be able to later get nicely formatted HTML doc) -
ucurv.py
add docstrings to all functions/classes and create some unittests. Note that in python classes names should use CamelCase, so here eitherUDCT
orUdct
(I prefer the latter) but notudct
. -
test whether a dual backend (numpy/cupy) is feasible by just replacing all
np
withncp
where you can use something like https://github.com/PyLops/pylops/blob/3ec6e05e8da4e8a00cd53cac251bc244fe992a22/pylops/utils/backend.py#L126 to get the correct module handlers (numpy/cupy). One option would be to usecp
directly but this would require makingcupy
a dependency ofucurv
which however would be a roadblockt to the subsequent PyLops integration as we don't all cupy to be one of our mandatory dependencies.
UCurv integration in PyLops
- address all comments in https://github.com/PyLops/pylops/pull/610