# PySHbundle: A Python implementation of MATLAB codes SHbundle <br>
![](https://visitor-badge.glitch.me/badge?page_id=mn5hk.mat2py) <br>
PySHBundle is the python implementation of the popular SHBundle toolbox originally written using MATLAB.
TODO: Badges and and banner for the project
## Usage
1. Read and Load level-2 spherical harmonic data
2. Create basin time series for TWS
3. Perform grace data driven correction
4. Plot spherical harmonic related plots
## 1. How to install <br>
### 1.1 For Users
Currently the package is not yet finalized hence the version on PyPI is outdated and should not be used (as of now). Please follow the steps mentioned in the following section till things are finalized. <br>
### 1.2 Till things get finalized
1. Fork the pyshbundle repo on GitHub.
2. Clone your fork locally:
```shell
$ git clone git@github.com:your_name_here/pyshbundle.git
```
3. Create a new virtual environment or conda environment to install all the necessary dependencies. using `conda` is recommended along with `jupyter lab`. Use of python 3.x is recommended
```shell
$ conda create -n pyshbundle-env
$ conda activate pyshbundle-env
$ conda install -c conda-forge --file requirements_dev.txt -y
```
4. Note that the base path to the entire repo is important while importing (this is tempoary only, after PyPi module gets updated this approach will not be required)
```
Example base repo path -> ../open_source/pyshbundle
pyshbundle (base container repo)
| - pyshbundle (codes and functions reside here)
| - all the codes
| - notebooks
| - docs
| - and rest of the other folders
```
5. In order to use any of the functions change the current directory to the pyshbundle (base repo) then use import as usual
```python
import os
os.chdir(../open_source/pyshbundle)
import pyshbundle
# or import individual functions
from pyshbundle import read_jpl
```
after importing the fucntions this way you are all good to go.
## Read the Docs
Please find the docs here - [PySHBundle](https://abhimhamane.github.io/pyshbundle/)
## Contributing
Contributions are welcome, and they are greatly appreciated! Every
little bit helps, and credit will always be given.
You can contribute in many ways:
## Types of Contributions
### Report Bugs
Report bugs at [GitHub Issues](https://github.com/mn5hk/pyshbundle/issues)
If you are reporting a bug, please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
### Fix Bugs
Look through the GitHub issues for bugs. Anything tagged with `bug` and
`help wanted` is open to whoever wants to implement it.
### Implement Features
Look through the GitHub issues for features. Anything tagged with
`enhancement` and `help wanted` is open to whoever wants to implement it.
### Write Documentation
pyshbundle could always use more documentation,
whether as part of the official pyshbundle docs,
in docstrings, or even on the web in blog posts, articles, and such.
### Submit Feedback
The best way to send feedback is to file an issue at
[GitHub Issues](https://github.com/mn5hk/pyshbundle/issues)
If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome :)
## Known Issues
1. New implementation of reading data has some bug. It works for CSR but not properly properly for JPL and ITSG sources. For more information check the current issues.
2. There is some inconsistency related to importing functions it is recommended to always use `import pyshbundle` along with any of the targeted imports you want.
## License Statement
This file is part of PySHbundle. <br>
PySHbundle is free software: you can redistribute it and/or modify<br>
it under the terms of the GNU General Public License as published by<br>
the Free Software Foundation, either version 3 of the License, or<br>
(at your option) any later version.<br>
<br>
This program is distributed in the hope that it will be useful,<br>
but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
GNU General Public License for more details.<br>
<br>
You should have received a copy of the GNU General Public License<br>
along with this program. If not, see <http://www.gnu.org/licenses/>.<br>
## Acknowledgement:
Please note that PySHbundle has adapted the following code packages,both licensed under GNU General Public License
1. SHbundle: https://www.gis.uni-stuttgart.de/en/research/downloads/shbundle/
2. Downscaling GRACE Total Water Storage Change using Partial Least Squares Regression: https://springernature.figshare.com/collections/downscaling_GRACE_Total_Water_Storage_Change_using_Partial_Least_Squares_Regression/5054564
## Key Papers Referred:
1. Vishwakarma, B. D., Horwath, M., Devaraju, B., Groh, A., & Sneeuw, N. (2017).
A data‐driven approach for repairing the hydrological catchment signal damage
due to filtering of GRACE products. Water Resources Research,
53(11), 9824-9844. https://doi.org/10.1002/2017WR021150
2. Vishwakarma, B. D., Zhang, J., & Sneeuw, N. (2021).
Downscaling GRACE total water storage change using
partial least squares regression. Scientific data, 8(1), 95.
https://doi.org/10.1038/s41597-021-00862-6
## How to Cite?
TODO: Add citing info
## Follow the Research Group
<a href="https://ultra-pluto-7f6d1.netlify.app" rel="Geodesy for Earth system science (GESS) research Group at ICWaR, IISc">![Geodesy for Earth system science (GESS) research Group at ICWaR, IISc](../notebooks/imgs/logoGESS.jpg)</a>
Raw data
{
"_id": null,
"home_page": "https://github.com/mn5hk/pyshbundle",
"name": "pyshbundle",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "pyshbundle",
"author": "Amin Shakya",
"author_email": "aminshk50@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/2f/e8/1cd4a93498795f2f5e286ca6a336c763dc1eb8d7c6670012af4854b6dcc9/pyshbundle-0.2.tar.gz",
"platform": null,
"description": "# PySHbundle: A Python implementation of MATLAB codes SHbundle <br>\n\n![](https://visitor-badge.glitch.me/badge?page_id=mn5hk.mat2py) <br>\n\n\nPySHBundle is the python implementation of the popular SHBundle toolbox originally written using MATLAB. \n\nTODO: Badges and and banner for the project\n\n\n## Usage\n\n1. Read and Load level-2 spherical harmonic data\n2. Create basin time series for TWS\n3. Perform grace data driven correction\n4. Plot spherical harmonic related plots\n\n## 1. How to install <br>\n### 1.1 For Users\nCurrently the package is not yet finalized hence the version on PyPI is outdated and should not be used (as of now). Please follow the steps mentioned in the following section till things are finalized. <br>\n\n### 1.2 Till things get finalized\n\n1. Fork the pyshbundle repo on GitHub.\n\n2. Clone your fork locally:\n\n ```shell\n $ git clone git@github.com:your_name_here/pyshbundle.git\n ```\n\n3. Create a new virtual environment or conda environment to install all the necessary dependencies. using `conda` is recommended along with `jupyter lab`. Use of python 3.x is recommended\n\n ```shell\n $ conda create -n pyshbundle-env\n $ conda activate pyshbundle-env\n $ conda install -c conda-forge --file requirements_dev.txt -y\n ```\n4. Note that the base path to the entire repo is important while importing (this is tempoary only, after PyPi module gets updated this approach will not be required) \n ```\n Example base repo path -> ../open_source/pyshbundle\n\n pyshbundle (base container repo)\n | - pyshbundle (codes and functions reside here)\n | - all the codes\n | - notebooks\n | - docs\n | - and rest of the other folders\n ```\n\n5. In order to use any of the functions change the current directory to the pyshbundle (base repo) then use import as usual\n ```python\n import os\n os.chdir(../open_source/pyshbundle)\n\n import pyshbundle\n # or import individual functions\n from pyshbundle import read_jpl\n ```\n after importing the fucntions this way you are all good to go.\n\n\n## Read the Docs\n\nPlease find the docs here - [PySHBundle](https://abhimhamane.github.io/pyshbundle/)\n\n\n## Contributing\n\nContributions are welcome, and they are greatly appreciated! Every\nlittle bit helps, and credit will always be given.\n\nYou can contribute in many ways:\n\n## Types of Contributions\n\n### Report Bugs\n\nReport bugs at [GitHub Issues](https://github.com/mn5hk/pyshbundle/issues)\n\n\nIf you are reporting a bug, please include:\n\n- Your operating system name and version.\n- Any details about your local setup that might be helpful in troubleshooting.\n- Detailed steps to reproduce the bug.\n\n### Fix Bugs\n\nLook through the GitHub issues for bugs. Anything tagged with `bug` and\n`help wanted` is open to whoever wants to implement it.\n\n### Implement Features\n\nLook through the GitHub issues for features. Anything tagged with\n`enhancement` and `help wanted` is open to whoever wants to implement it.\n\n### Write Documentation\n\npyshbundle could always use more documentation,\nwhether as part of the official pyshbundle docs,\nin docstrings, or even on the web in blog posts, articles, and such.\n\n### Submit Feedback\n\nThe best way to send feedback is to file an issue at\n[GitHub Issues](https://github.com/mn5hk/pyshbundle/issues)\n\nIf you are proposing a feature:\n\n- Explain in detail how it would work.\n- Keep the scope as narrow as possible, to make it easier to implement.\n- Remember that this is a volunteer-driven project, and that contributions are welcome :)\n\n## Known Issues\n\n1. New implementation of reading data has some bug. It works for CSR but not properly properly for JPL and ITSG sources. For more information check the current issues.\n2. There is some inconsistency related to importing functions it is recommended to always use `import pyshbundle` along with any of the targeted imports you want.\n\n\n## License Statement\n\nThis file is part of PySHbundle. <br>\n PySHbundle is free software: you can redistribute it and/or modify<br>\n it under the terms of the GNU General Public License as published by<br>\n the Free Software Foundation, either version 3 of the License, or<br>\n (at your option) any later version.<br>\n<br>\n This program is distributed in the hope that it will be useful,<br>\n but WITHOUT ANY WARRANTY; without even the implied warranty of<br>\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>\n GNU General Public License for more details.<br>\n<br>\n You should have received a copy of the GNU General Public License<br>\n along with this program. If not, see <http://www.gnu.org/licenses/>.<br>\n \n\n## Acknowledgement:\nPlease note that PySHbundle has adapted the following code packages,both licensed under GNU General Public License\n\n 1. SHbundle: https://www.gis.uni-stuttgart.de/en/research/downloads/shbundle/ \n 2. Downscaling GRACE Total Water Storage Change using Partial Least Squares Regression: https://springernature.figshare.com/collections/downscaling_GRACE_Total_Water_Storage_Change_using_Partial_Least_Squares_Regression/5054564 \n\n\n## Key Papers Referred:\n 1. Vishwakarma, B. D., Horwath, M., Devaraju, B., Groh, A., & Sneeuw, N. (2017). \n A data\u2010driven approach for repairing the hydrological catchment signal damage \n due to filtering of GRACE products. Water Resources Research, \n 53(11), 9824-9844. https://doi.org/10.1002/2017WR021150 \n\n 2. Vishwakarma, B. D., Zhang, J., & Sneeuw, N. (2021). \n Downscaling GRACE total water storage change using \n partial least squares regression. Scientific data, 8(1), 95.\n https://doi.org/10.1038/s41597-021-00862-6 \n \n\n## How to Cite?\nTODO: Add citing info\n\n\n\n\n\n\n\n## Follow the Research Group\n\n<a href=\"https://ultra-pluto-7f6d1.netlify.app\" rel=\"Geodesy for Earth system science (GESS) research Group at ICWaR, IISc\">![Geodesy for Earth system science (GESS) research Group at ICWaR, IISc](../notebooks/imgs/logoGESS.jpg)</a>\n",
"bugtrack_url": null,
"license": "GNU General Public License v3",
"summary": "PySHbundle: A Python implementation of MATLAB codes SHbundle",
"version": "0.2",
"project_urls": {
"Homepage": "https://github.com/mn5hk/pyshbundle"
},
"split_keywords": [
"pyshbundle"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2fe81cd4a93498795f2f5e286ca6a336c763dc1eb8d7c6670012af4854b6dcc9",
"md5": "83c0cdd3faf68e1e73c0cab25d81fd42",
"sha256": "fab138ce43bad292ed3ac3573b6629f372811b38f354607bf336b217dc05fd3c"
},
"downloads": -1,
"filename": "pyshbundle-0.2.tar.gz",
"has_sig": false,
"md5_digest": "83c0cdd3faf68e1e73c0cab25d81fd42",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 54244,
"upload_time": "2024-01-20T14:58:19",
"upload_time_iso_8601": "2024-01-20T14:58:19.280240Z",
"url": "https://files.pythonhosted.org/packages/2f/e8/1cd4a93498795f2f5e286ca6a336c763dc1eb8d7c6670012af4854b6dcc9/pyshbundle-0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-20 14:58:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mn5hk",
"github_project": "pyshbundle",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pip",
"specs": []
},
{
"name": "bump2version",
"specs": []
},
{
"name": "wheel",
"specs": []
},
{
"name": "watchdog",
"specs": []
},
{
"name": "flake8",
"specs": []
},
{
"name": "tox",
"specs": []
},
{
"name": "coverage",
"specs": []
},
{
"name": "Sphinx",
"specs": []
},
{
"name": "twine",
"specs": []
},
{
"name": "grip",
"specs": []
},
{
"name": "numpy",
"specs": []
},
{
"name": "pandas",
"specs": []
},
{
"name": "netCDF4",
"specs": []
},
{
"name": "scipy",
"specs": []
},
{
"name": "xarray",
"specs": []
},
{
"name": "julian",
"specs": []
},
{
"name": "scipy",
"specs": []
},
{
"name": "geopandas",
"specs": []
},
{
"name": "matplotlib",
"specs": []
},
{
"name": "rasterio",
"specs": []
},
{
"name": "shapely",
"specs": []
},
{
"name": "tqdm",
"specs": []
},
{
"name": "cartopy",
"specs": []
},
{
"name": "ipykernel",
"specs": []
},
{
"name": "jupyterlab",
"specs": []
},
{
"name": "rioxarray",
"specs": []
},
{
"name": "salem",
"specs": []
}
],
"lcname": "pyshbundle"
}