The Python implementation of DePSI is under development. At present you can only install it from the GitHub repository.
It is assumed that you have mamba installed. If not, you can find the installation instructions here. Other package managers like conda or venv can be used as well.
Before you start, make sure you have access to the correct DePSI repository. You can contribute to the pubilic DePSI repository by forking it to your own GitHub account. If you are a member of the TUDelftGeodesy organization, you can also contribute to the group DePSI repository.
Clone this GitHub repository, then cd into the cloned repository.
cd DePSICreate a new conda environment (here we give an example name depsi-dev) with mamba.:
mamba create -c conda-forge -n depsi-dev python=3.12Here we use Python 3.12 since we aim to support python 3.10 and above.
Activate the environment:
mamba activate depsi-devInstall this package in development mode, with extra dependencies for development and documentation:
pip install -e ".[dev,docs]"In the end, install the pre-commit hooks, which will run the checks before each commit:
pre-commit installWe use ruff for linting and formatting. If the pre-commit hooks are installed, the checks will be run automatically before each commit.
To manually run the checks, use the following command in the root directory of the repository:
ruff check .We use pytest for testing. All tests are located in the tests directory.
To run the tests, use the following command in the root directory of the repository:
pytest testsThe GitHub Actions will run the tests automatically for each push and pull-request
on the main branch.
We use mkdocs for documentation.
To check the documentation at local, use the following command in the root directory of the repository:
mkdocs serveThis will build and render the documentation at a local server. Follow the link provided in the terminal to view the documentation in the browser.
We use dask in many functions for delayed computation and parallelization. Since DePSI operates with Xarray, in most cases, we us Xarray's interface with Dask Arrays, such as xarray.apply_gufunc or xarray.map_blocks to perform parallel computation. Please refer to the Xarray Tutorial of Parallelizing Custom Functions as the best practices for implementing parallelization in DePSI.