PySphereX is a Python tool to perform spherical harmonics expansion of data given on a uniformly spaced grid on a sphere. Its features include:
Expansion
class that defines an arbitrary complex spherical harmonics expansion- Convenience constructor
Expansion.from_data
that initializesExpansion
object from gridded data on a sphere up to a maximum degree - Evaluation of
Expansion
object at arbitrary coordinates - Angular power spectrum
- Algebraic operations: Addition, subtraction and overlap between two
Expansion
objects
Make sure that Python 3.7 or newer is available and install pyspherex
using pip,
pip install pyspherex
As a "getting started guide" we provide an example (in folder examples/
) that shows the basic functionalities of this package. For further information see the doc-strings and the unit tests.
We use the issue-tracking management system associated with the project provided by Github. If you want to report a bug or request a feature, open an issue at https://github.com/marstaa/PySphereX/issues. You may also comment on existing issues.
We strongly recommend to use Python virtual environments.
To setup the development environment, use the following commands:
git clone [email protected]:marstaa/PySphereX.git
cd PySphereX
python -m venv venv
source ./venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install -e .
The project's development workflow is based on the issue-tracking system provided by Github, as well as peer-reviewed pull requests. This ensures high-quality standards.
Issues are solved by creating branches and opening pull requests. Only the assignee of the related issue and pull request can push commits on the branch. Once all the changes have been pushed, the pull request can be marked as ready for review and is assigned to a reviewer. They can push new changes to the branch, or request changes to the original author by re-assigning the pull request to them. When the pull request is accepted, the branch is merged onto main, deleted, and the associated issue is closed.
We enforce PEP 8 (Style Guide for Python Code) with Pylint syntax checking, and testing of the code via unit and integration tests with the pytest framework. Both are implemented in the continuous integration system. Only if all tests pass successfully a pull request can be merged.
You can run them locally
pylint */**.py
pytest
If you intend to use this package in your own research please be sure to cite it. For BibTex we suggest:
@misc{pyspherex,
author = {Martin Staab},
title = {PySphereX},
howpublished = {\url{http://github.com/marstaa/PySphereX}},
year = {2021},
DOI={<insert DOI from Zenodo>}
}
Many thanks to Ulrike Proske (prosku) for providing the example script.
- Martin Staab ([email protected])