diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yaml similarity index 92% rename from .github/ISSUE_TEMPLATE/bug_report.yml rename to .github/ISSUE_TEMPLATE/bug_report.yaml index cf20a2237..34ac7880f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -40,8 +40,8 @@ body: attributes: label: Actual Behaviour description: >- - Be a specific and detailed as you can. - Paste any output or stack traces of errors you receive. + Be a specific and detailed as you can. Paste any output or stack traces + of errors you receive. validations: required: true - id: version diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/config.yml rename to .github/ISSUE_TEMPLATE/config.yaml diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yaml similarity index 87% rename from .github/ISSUE_TEMPLATE/documentation.yml rename to .github/ISSUE_TEMPLATE/documentation.yaml index 3f7798059..52ff8fc11 100644 --- a/.github/ISSUE_TEMPLATE/documentation.yml +++ b/.github/ISSUE_TEMPLATE/documentation.yaml @@ -25,5 +25,5 @@ body: attributes: label: How to Improve This Section description: >- - Do you have any specific suggestions we - could take to improve the documentation? + Do you have any specific suggestions we could take to improve the + documentation? diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yaml similarity index 90% rename from .github/ISSUE_TEMPLATE/feature_request.yml rename to .github/ISSUE_TEMPLATE/feature_request.yaml index 425b682a7..b54f5d8d0 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -26,8 +26,8 @@ body: attributes: label: Describe Alternatives You've Considered description: >- - A clear and concise description of any alternative - solutions or features you've considered. + A clear and concise description of any alternative solutions or features + you've considered. - id: additional type: textarea attributes: diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/question.yml rename to .github/ISSUE_TEMPLATE/question.yaml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yaml similarity index 72% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy.yaml index 4a7f1f109..a7ef77bd6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yaml @@ -13,7 +13,7 @@ jobs: id-token: write steps: # yamllint disable-line rule:line-length - - uses: paddyroddy/.github/actions/python/deployment@be31e8f5758700dafb58c5852530e750f1ea69d8 # v0 + - uses: paddyroddy/.github/actions/python/deployment@f8793becd1b97caa5b40ebc7556b21d9a272d700 # v0 with: pyproject-toml: ./pyproject.toml python-version: "3.11" diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yaml similarity index 83% rename from .github/workflows/documentation.yml rename to .github/workflows/documentation.yaml index b6c3a84cc..504bdb611 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: # yamllint disable-line rule:line-length - - uses: paddyroddy/.github/actions/python/pdoc@be31e8f5758700dafb58c5852530e750f1ea69d8 # v0 + - uses: paddyroddy/.github/actions/python/pdoc@f8793becd1b97caa5b40ebc7556b21d9a272d700 # v0 with: docs-dependency-section: .[docs] gh-pages-publish-directory: ./html/sleplet diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yaml similarity index 83% rename from .github/workflows/examples.yml rename to .github/workflows/examples.yaml index 86e7b6d11..eec0c73bb 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout source - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Set up python uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout source - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Set up python uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 @@ -63,8 +63,5 @@ jobs: - name: Run examples in the examples folder run: >- - find examples -name "*.py" - -exec sh -c 'for f; - do printf "\n$f\n"; - python "$f" || exit 1; - done' sh {} + + find examples -name "*.py" -exec sh -c 'for f; do printf "\n$f\n"; + python "$f" || exit 1; done' sh {} + diff --git a/.github/workflows/licence.yml b/.github/workflows/licence.yaml similarity index 75% rename from .github/workflows/licence.yml rename to .github/workflows/licence.yaml index f970a894c..c5c3aafdf 100644 --- a/.github/workflows/licence.yml +++ b/.github/workflows/licence.yaml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: # yamllint disable-line rule:line-length - - uses: paddyroddy/.github/actions/licence@be31e8f5758700dafb58c5852530e750f1ea69d8 # v0 + - uses: paddyroddy/.github/actions/licence@f8793becd1b97caa5b40ebc7556b21d9a272d700 # v0 with: github-token: ${{ secrets.GITHUB_TOKEN }} licence-file: ./LICENCE.txt diff --git a/.github/workflows/links.yaml b/.github/workflows/links.yaml new file mode 100644 index 000000000..f1f58fd92 --- /dev/null +++ b/.github/workflows/links.yaml @@ -0,0 +1,22 @@ +--- +name: Links + +on: + push: + branches: + - main + - renovate/** + pull_request: + +jobs: + links: + runs-on: ubuntu-latest + timeout-minutes: 2 + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Check links + uses: paddyroddy/.github/actions/links@v0 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yaml similarity index 73% rename from .github/workflows/linting.yml rename to .github/workflows/linting.yaml index 402642136..1623a6db4 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yaml @@ -13,6 +13,6 @@ jobs: runs-on: ubuntu-latest steps: # yamllint disable-line rule:line-length - - uses: paddyroddy/.github/actions/linting@be31e8f5758700dafb58c5852530e750f1ea69d8 # v0 + - uses: paddyroddy/.github/actions/linting@f8793becd1b97caa5b40ebc7556b21d9a272d700 # v0 with: pre-commit-config: ./.pre-commit-config.yaml diff --git a/.github/workflows/paper.yml b/.github/workflows/paper.yaml similarity index 75% rename from .github/workflows/paper.yml rename to .github/workflows/paper.yaml index cfb78a924..189573806 100644 --- a/.github/workflows/paper.yml +++ b/.github/workflows/paper.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Build draft PDF uses: openjournals/openjournals-draft-action@master @@ -25,7 +25,7 @@ jobs: - name: Upload # yamllint disable-line rule:line-length - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4 with: name: paper path: paper/paper.pdf diff --git a/.github/workflows/test.yml b/.github/workflows/test.yaml similarity index 93% rename from .github/workflows/test.yml rename to .github/workflows/test.yaml index 009d84a3e..b94fc97f6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yaml @@ -23,7 +23,7 @@ jobs: - "3.11" steps: # yamllint disable-line rule:line-length - - uses: paddyroddy/.github/actions/python/tox@be31e8f5758700dafb58c5852530e750f1ea69d8 # v0 + - uses: paddyroddy/.github/actions/python/tox@f8793becd1b97caa5b40ebc7556b21d9a272d700 # v0 with: cache-path: |- .tox diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 163556d05..b88975549 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ --- repos: - repo: https://github.com/paddyroddy/.github - rev: v0.157.0 + rev: v0.163.0 hooks: - id: general-hooks - id: python-hooks diff --git a/CITATION.cff b/CITATION.cff index 6694b977a..9322fc7d2 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -5,8 +5,8 @@ authors: orcid: https://orcid.org/0000-0002-6271-1700 doi: 10.5281/zenodo.7268074 message: >- - If you use this software, please cite our article in the - Journal of Open Source Software. + If you use this software, please cite our article in the Journal of Open + Source Software. preferred-citation: authors: - family-names: Roddy diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 15a16c314..75153f3eb 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -6,8 +6,8 @@ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. +nationality, personal appearance, race, religion, or sexual identity and +orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. @@ -22,17 +22,17 @@ community include: - Giving and gracefully accepting constructive feedback - Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -- Focusing on what is best not just for us as individuals, but for the - overall community +- Focusing on what is best not just for us as individuals, but for the overall + community Examples of unacceptable behavior include: -- The use of sexualized language or imagery, and sexual attention or - advances of any kind +- The use of sexualized language or imagery, and sexual attention or advances of + any kind - Trolling, insulting or derogatory comments, and personal or political attacks - Public or private harassment -- Publishing others' private information, such as a physical or email - address, without their explicit permission +- Publishing others' private information, such as a physical or email address, + without their explicit permission - Other conduct which could reasonably be considered inappropriate in a professional setting @@ -60,8 +60,8 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -. -All complaints will be reviewed and investigated promptly and fairly. +. All complaints will be reviewed and investigated +promptly and fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. @@ -82,15 +82,15 @@ behavior was inappropriate. A public apology may be requested. ### 2. Warning -**Community Impact**: A violation through a single incident or series -of actions. +**Community Impact**: A violation through a single incident or series of +actions. **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. +like social media. Violating these terms may lead to a temporary or permanent +ban. ### 3. Temporary Ban @@ -109,8 +109,8 @@ Violating these terms may lead to a permanent ban. standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. -**Consequence**: A permanent ban from any sort of public interaction within -the community. +**Consequence**: A permanent ban from any sort of public interaction within the +community. ## Attribution @@ -118,8 +118,8 @@ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at . -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). [homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a9abc8498..8795f4f36 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,7 +67,8 @@ steps in advance to help us fix any potential bug as fast as possible. - Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://astro-informatics.github.io/sleplet). If you are - looking for support, you might want to check [this section](#i-have-a-question)). + looking for support, you might want to check + [this section](#i-have-a-question)). - To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the @@ -87,19 +88,20 @@ steps in advance to help us fix any potential bug as fast as possible. > You must never report security related issues, vulnerabilities or bugs > including sensitive information to the issue tracker, or elsewhere in public. -> Instead, sensitive bugs must be sent by email to . +> Instead, sensitive bugs must be sent by email to +> . We use GitHub issues to track bugs and errors. If you run into an issue with the project: - Open an [Issue](https://github.com/astro-informatics/sleplet/issues/new). - (Since we can't be sure at this point whether it is a bug or not, we ask you not - to talk about a bug yet and not to label the issue.) + (Since we can't be sure at this point whether it is a bug or not, we ask you + not to talk about a bug yet and not to label the issue.) - Explain the behaviour you would expect and the actual behaviour. - Please provide as much context as possible and describe the _reproduction_ _steps_ that someone else can follow to recreate the issue on their own. This - usually includes your code. For good bug reports you should isolate the problem - and create a reduced test case. + usually includes your code. For good bug reports you should isolate the + problem and create a reduced test case. - Provide the information you collected in the previous section. Once it's filed: @@ -107,18 +109,18 @@ Once it's filed: - The project team will label the issue accordingly. - A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the - team will ask you for those steps and mark the issue as `needs-repro`. Bugs with - the `needs-repro` tag will not be addressed until they are reproduced. + team will ask you for those steps and mark the issue as `needs-repro`. Bugs + with the `needs-repro` tag will not be addressed until they are reproduced. - If the team is able to reproduce the issue, it will be marked `needs-fix`, as - well as possibly other tags (such as `critical`), and the issue will be left to - be implemented by someone. + well as possibly other tags (such as `critical`), and the issue will be left + to be implemented by someone. ### Suggesting Enhancements -This section guides you through submitting an enhancement suggestion for `SLEPLET`, -**including completely new features and minor improvements to existing** -**functionality**. Following these guidelines will help maintainers and the -community to understand your suggestion and find related suggestions. +This section guides you through submitting an enhancement suggestion for +`SLEPLET`, **including completely new features and minor improvements to +existing** **functionality**. Following these guidelines will help maintainers +and the community to understand your suggestion and find related suggestions. #### Before Submitting an Enhancement @@ -140,12 +142,13 @@ community to understand your suggestion and find related suggestions. Enhancement suggestions are tracked as [GitHub issues](https://github.com/astro-informatics/sleplet/issues). -- Use a **clear and descriptive title** for the issue to identify the suggestion. +- Use a **clear and descriptive title** for the issue to identify the + suggestion. - Provide a **step-by-step description of the suggested enhancement** in as many details as possible. -- **Describe the current behaviour** and **explain which behaviour you expected** - **to see instead** and why. At this point you can also tell which alternatives - do not work for you. +- **Describe the current behaviour** and **explain which behaviour you + expected** **to see instead** and why. At this point you can also tell which + alternatives do not work for you. - **Explain why this enhancement would be useful** to most `SLEPLET` users. You may also want to point out the other projects that solved it better and which could serve as inspiration. diff --git a/README.md b/README.md index 691ee1810..8e7ed1849 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![JOSS](https://joss.theoj.org/papers/55d9cf16a27bf2d3141f0f66c676b7f2/status.svg)](https://joss.theoj.org/papers/55d9cf16a27bf2d3141f0f66c676b7f2) [![Zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.7268074.svg)](https://doi.org/10.5281/zenodo.7268074) [![Documentation](https://img.shields.io/badge/Documentation-SLEPLET-blueviolet.svg)](https://astro-informatics.github.io/sleplet) -[![Test](https://github.com/astro-informatics/sleplet/actions/workflows/test.yml/badge.svg)](https://github.com/astro-informatics/sleplet/actions/workflows/test.yml) +[![Test](https://github.com/astro-informatics/sleplet/actions/workflows/test.yaml/badge.svg)](https://github.com/astro-informatics/sleplet/actions/workflows/test.yaml) [![Coverage Status](https://coveralls.io/repos/github/astro-informatics/sleplet/badge.svg?branch=main)](https://coveralls.io/github/astro-informatics/sleplet?branch=main) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) [![Renovate](https://img.shields.io/badge/renovate-enabled-orange?logo=renovatebot)](https://renovatebot.com) @@ -35,8 +35,8 @@ The recommended way to install `SLEPLET` is via pip install sleplet ``` -To install the latest development version of `SLEPLET` clone this repository -and run +To install the latest development version of `SLEPLET` clone this repository and +run ```sh pip install -e . @@ -52,11 +52,11 @@ the figures in [![Python](https://img.shields.io/pypi/pyversions/sleplet)](https://www.python.org). Windows is not currently supported as `SLEPLET` relies on [pyssht](https://pypi.org/project/pyssht) and -[pys2let](https://pypi.org/project/pys2let) which do not work on Windows. -These can hopefully be replaced with +[pys2let](https://pypi.org/project/pys2let) which do not work on Windows. These +can hopefully be replaced with [s2fft](https://github.com/astro-informatics/s2fft) and -[s2wav](https://github.com/astro-informatics/s2wav) in the future when they -are available on [PyPI](https://pypi.org). +[s2wav](https://github.com/astro-informatics/s2wav) in the future when they are +available on [PyPI](https://pypi.org). ## Example Usage @@ -128,5 +128,5 @@ If you use `SLEPLET` in your research, please cite the paper. Please also cite [S2LET](https://doi.org/10.1051/0004-6361/201220729) upon which `SLEPLET` is built, along with [SSHT](https://doi.org/10.1109/TSP.2011.2166394) -in the spherical setting or [libigl](https://doi.org/10.1145/3134472.3134497) -in the mesh setting. +in the spherical setting or [libigl](https://doi.org/10.1145/3134472.3134497) in +the mesh setting. diff --git a/documentation/DOCUMENTATION.md b/documentation/DOCUMENTATION.md index 41a54bbc9..56f17e55c 100644 --- a/documentation/DOCUMENTATION.md +++ b/documentation/DOCUMENTATION.md @@ -17,20 +17,20 @@ predictions. Slepian wavelets are built upon the eigenfunctions of the Slepian concentration problem of the manifold - a set of bandlimited functions which are maximally concentrated within a given region. Wavelets are constructed through a tiling of -the Slepian harmonic line by leveraging the existing scale-discretised framework. -A straightforward denoising formalism demonstrates a boost in signal-to-noise -for both a spherical and general manifold example. Whilst these wavelets were -inspired by spherical datasets, like in cosmology, the wavelet construction may -be utilised for manifold or graph data. +the Slepian harmonic line by leveraging the existing scale-discretised +framework. A straightforward denoising formalism demonstrates a boost in +signal-to-noise for both a spherical and general manifold example. Whilst these +wavelets were inspired by spherical datasets, like in cosmology, the wavelet +construction may be utilised for manifold or graph data. ## Bandlimit The bandlimit is set as `L` throughout the code and the CLIs. The default value is set to `L=16` and the figures created in [the figure section](#paper-figures) all use `L=128`. The pre-computed data exists on -[Zenodo](https://doi.org/10.5281/zenodo.7767698) for powers of two up to `L=128`. -Other values will be computed when running the appropriate code (and saved for -future use). Note that beyond `L=32` the code can be slow due to the +[Zenodo](https://doi.org/10.5281/zenodo.7767698) for powers of two up to +`L=128`. Other values will be computed when running the appropriate code (and +saved for future use). Note that beyond `L=32` the code can be slow due to the difficulties of computing the Slepian matrix prior to the eigendecomposition, as such it is recommended to stick to the powers of two up to `L=128`. diff --git a/paper/paper.md b/paper/paper.md index 8392fb215..424755447 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -74,8 +74,8 @@ convert these into real space for visualisation or other intended purposes. The construction of the sifting convolution [@Roddy2021] was required to create Slepian wavelets. As a result, there are also many examples of functions on the sphere in harmonic space (rather than Slepian) that were used to demonstrate its -effectiveness. `SLEPLET` has been used in the development of -[@Roddy2021; @Roddy2022; @Roddy2022a; @Roddy2023]. +effectiveness. `SLEPLET` has been used in the development of [@Roddy2021; +@Roddy2022; @Roddy2022a; @Roddy2023]. Whilst Slepian wavelets may be trivially computed from a set of Slepian functions, the computation of the spherical Slepian functions themselves are diff --git a/pyproject.toml b/pyproject.toml index 0432c329a..6d877f8dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "cmocean~=3.0", + "cmocean~=4.0", "gmpy2~=2.0", "hypothesis~=6.0", "libigl~=2.0",