Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update master-branch to Pastas 1.0: Arrabiata #529

Merged
merged 100 commits into from
Feb 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
b56f3b6
update dev-branch to v0.23.0b
raoulcollenteur Jan 9, 2023
7acc504
wait with Python 3.11 support
raoulcollenteur Jan 10, 2023
4e2b8b0
bump minimum scipy to 1.8 to fix #177
raoulcollenteur Jan 10, 2023
900a182
Implement Type Hints (#441)
martinvonk Jan 10, 2023
f1b5e8f
448 black formatting (#457)
dbrakenhoff Jan 10, 2023
08fe3d7
update contributing.rst
dbrakenhoff Jan 10, 2023
a366d4b
454 Add .gitattribute file for linguist settings (#456)
martinvonk Jan 10, 2023
9c67ffd
remove ReservoirModel and StressModel2
raoulcollenteur Jan 10, 2023
32df37c
remove import of Reservoir model
raoulcollenteur Jan 10, 2023
881a2b1
update ci with black formatting check
dbrakenhoff Jan 10, 2023
9f58ed5
black and isort formatting part2
dbrakenhoff Jan 10, 2023
6d6c6e3
update git ignore blame refs
dbrakenhoff Jan 10, 2023
81550df
introduce new validate_timeseries method
raoulcollenteur Jan 10, 2023
7b866e3
Merge branch 'dev' of https://github.com/pastas/pastas into dev
raoulcollenteur Jan 10, 2023
fc2ff9f
Revert "introduce new validate_timeseries method"
raoulcollenteur Jan 10, 2023
00054dc
Transition to pyproject.toml (#443)
martinvonk Jan 11, 2023
b8a8312
change iteritems to items
raoulcollenteur Jan 11, 2023
59e85ab
Delete 19_reservoir.ipynb
raoulcollenteur Jan 11, 2023
5b2ed08
update ci
dbrakenhoff Jan 12, 2023
fa3cb5a
Delete reservoir.py
raoulcollenteur Jan 12, 2023
0f37d1e
442 fix python-publish.yml and improve version.py (#461)
martinvonk Jan 13, 2023
8039221
Update pull_request_template.md
raoulcollenteur Jan 13, 2023
afcfd36
Fix runtime error in ChangeModel (#464)
raoulcollenteur Jan 16, 2023
db33a67
Have acf return conf instead of stderr (#465)
raoulcollenteur Jan 16, 2023
0521b51
455 only allow pandas series as user input (#459)
raoulcollenteur Jan 16, 2023
264b584
Require user-provided response function to be instances (#466)
raoulcollenteur Jan 17, 2023
30bf8c7
Update (docstring) formatting on model.py
raoulcollenteur Jan 17, 2023
860b2fe
Update docstrings from recharge.py
raoulcollenteur Jan 17, 2023
b99e933
Format docstrings in plots.py
raoulcollenteur Jan 17, 2023
dceeaa2
Format docstring for rfunc, solver, and decorators
raoulcollenteur Jan 17, 2023
530417c
Format docstring of stats files and add references
raoulcollenteur Jan 17, 2023
9214752
Fix RTD warnings and update api-docs a bit.
raoulcollenteur Jan 17, 2023
9053ff0
Fix all warnings on RTD
raoulcollenteur Jan 17, 2023
0cdb7a8
452 Change Numba from optional to full dependency (#468)
martinvonk Jan 18, 2023
043c31b
Raise deprecation warnings for all read methods (#470)
raoulcollenteur Jan 19, 2023
bf1da48
remove dump menyanthes method (#471)
raoulcollenteur Jan 19, 2023
0eaa94a
Don't make stats docs twice anymore
raoulcollenteur Jan 19, 2023
84bedbe
Fix a couple of pytest warnings
raoulcollenteur Jan 19, 2023
75fbb60
Fix GH actions errors for tests
raoulcollenteur Jan 19, 2023
5218cd6
fix #473 (#474)
dbrakenhoff Jan 19, 2023
d1f56bf
Add impulse response functions to all rfunc (#472)
raoulcollenteur Jan 19, 2023
4bb0c5f
Update __init__.py
mbakker7 Jan 20, 2023
ba9a4c1
Update check_response_functions.ipynb
mbakker7 Jan 20, 2023
62cede5
Add a warning when fit_constanc is False and transform is used
rubencalje Jan 24, 2023
db86460
460 enhancement streamline time series pre processing utilities (#467)
dbrakenhoff Jan 24, 2023
e09217f
Fix readthedocs issues
raoulcollenteur Jan 24, 2023
11e1ddd
Merge branch 'dev' of https://github.com/pastas/pastas into dev
raoulcollenteur Jan 24, 2023
3d1ca76
Fix example gallery
raoulcollenteur Jan 24, 2023
96a8269
Update 13_timestep_analysis.ipynb
raoulcollenteur Jan 24, 2023
b6faec2
Updated all docstrings to linewidth=88 format
raoulcollenteur Jan 25, 2023
4426ea1
Merge branch 'master' into dev
raoulcollenteur Jan 25, 2023
7686544
Update pyproject.toml
raoulcollenteur Jan 25, 2023
db6f953
change meanstress to gain_scale_factor (#483)
raoulcollenteur Jan 25, 2023
20190c3
Update development.md (#489)
martinvonk Jan 25, 2023
9d48f37
Move configuration files to pyproject.toml and delete setup.cfg (#490)
martinvonk Jan 25, 2023
702a6bd
No need for this check anymore
raoulcollenteur Jan 26, 2023
c894dbf
Delete B28H1808_2.pas
raoulcollenteur Jan 26, 2023
4546b93
Properly store recharge models and settings (#493)
raoulcollenteur Jan 26, 2023
1f1b663
Update response arguments (#491)
raoulcollenteur Jan 26, 2023
622e9f7
Fix to_dict methods for stressmodels (#497)
raoulcollenteur Jan 26, 2023
f8b4bdd
Stop storing stresses as list if not necessary (#498)
raoulcollenteur Jan 26, 2023
c17740b
Remove scipy 1.8 check (#496)
mbakker7 Jan 27, 2023
4b1f359
make "class" keyword consistent in to_dict methods (#499)
raoulcollenteur Jan 27, 2023
f15f5ec
Solver as instance instead of classes (#487)
raoulcollenteur Jan 30, 2023
436c35b
typos and fix some nb issues
dbrakenhoff Jan 30, 2023
9a2e2fe
typos and fix some nb issues
dbrakenhoff Jan 30, 2023
e3fe33b
codacy
dbrakenhoff Jan 30, 2023
2ec899e
rename some series to avoid name validation messages
dbrakenhoff Jan 30, 2023
13e8913
remove kwargs from rfunc.to_dict
raoulcollenteur Jan 30, 2023
7b31a66
Update dev-branch to pastas 1.0.0b
raoulcollenteur Jan 30, 2023
a7f7ff6
remove menyanthes dump method (#501)
raoulcollenteur Jan 30, 2023
5f661b3
update tarso file
raoulcollenteur Jan 30, 2023
dc63420
fix annoying pas-files.
raoulcollenteur Jan 30, 2023
13a5b0b
Update 01_basic_model.ipynb
mbakker7 Jan 30, 2023
460c425
remove read module (#494)
raoulcollenteur Jan 31, 2023
9e67cba
remove deprecated time series and pas-files code (#503)
raoulcollenteur Jan 31, 2023
7277990
remove deprecations from stressmodels and rfunc (#504)
raoulcollenteur Jan 31, 2023
caac841
remove old model code (#506)
raoulcollenteur Jan 31, 2023
58f9708
fix some grammar in docstrings
raoulcollenteur Jan 31, 2023
6ab8205
Dynamic versioning (#507)
martinvonk Jan 31, 2023
0a906fd
Add PyPI downloads badge to readme.rst (#512)
martinvonk Jan 31, 2023
e212dcd
probably smarter to check file version first, then load model
dbrakenhoff Feb 1, 2023
c448676
Fix TarsoModel
rubencalje Feb 2, 2023
38364d3
Update example_tarso.py
rubencalje Feb 2, 2023
4bd4b3d
Update timeseries.py
raoulcollenteur Feb 2, 2023
63c9127
fix black formatting
raoulcollenteur Feb 2, 2023
7df0c3d
fix black formatting again
raoulcollenteur Feb 2, 2023
00ccb0b
Merge branch 'dev' into 510-bug-multiple-info-warnings-about-replacem…
raoulcollenteur Feb 2, 2023
f9c04c9
Fix bug #510 (#520)
raoulcollenteur Feb 2, 2023
864d54f
Improve testing routine and GitHub CI (#515)
dbrakenhoff Feb 2, 2023
d6a927b
Update metrics.py (#521)
raoulcollenteur Feb 3, 2023
67c3eec
fix docstrings and unused code in acf (#524)
raoulcollenteur Feb 3, 2023
292d402
522 fix some bugs in time series and make more efficient (#523)
raoulcollenteur Feb 3, 2023
8419b18
add error when simulating NaNs (#348) (#526)
dbrakenhoff Feb 3, 2023
1fb9fc0
Pastas docs 1.0 (#502)
raoulcollenteur Feb 6, 2023
b70b792
Merge branch 'master' of https://github.com/pastas/pastas into dev
raoulcollenteur Feb 6, 2023
9f327b8
Update stressmodels.py
raoulcollenteur Feb 6, 2023
183463b
update master to 1.0.0 and status to stable
raoulcollenteur Feb 6, 2023
62cb803
fix some things codacy found
dbrakenhoff Feb 6, 2023
9a4c525
Update metrics.py
raoulcollenteur Feb 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
87 changes: 65 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,41 +14,84 @@ on:

jobs:
test:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.9', '3.10']
include:
- name: Test suite with py38-ubuntu
python: "3.8"
toxenv: py38
- name: Test suite with py39-ubuntu
python: "3.9"
toxenv: py39
- name: Test suite with py310-ubuntu
python: "3.10"
toxenv: py310
- name: Formatting with black + isort
python: "3.9"
toxenv: format
- name: Linting with flake8
python: "3.9"
toxenv: lint
- name: Test suite for Jupyter Notebooks
python: "3.9"
toxenv: notebooks
env:
# Color Output
# Rich (pip)
FORCE_COLOR: 1
# Tox
PY_COLORS: 1
# Pytest
PYTEST_ADDOPTS: "--color=yes"
steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

python-version: ${{ matrix.python }}
check-latest: true
cache: "pip"
cache-dependency-path: pyproject.toml

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[ci]

- name: Lint with black
uses: psf/black@stable
pip install tox

- name: Setup tox environment
run: tox -e ${{ matrix.toxenv }} --notest

- name: Test
run: tox -e ${{ matrix.toxenv }} --skip-pkg-install

- name: Store coverage
uses: actions/upload-artifact@v3
with:
options: "--check"
jupyter: true

- name: Run tests and notebooks
if: ${{ github.event_name == 'pull_request' }}
run: |
py.test ./tests

- name: Run tests only
if: ${{ github.event_name == 'push' }}
run: |
py.test ./tests -m "not notebooks"

name: coverage
path: coverage.xml
if-no-files-found: ignore

coverage:
name: Coverage
runs-on: ubuntu-latest
needs: test
steps:
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
check-latest: true

- name: Get coverage
uses: actions/download-artifact@v3
with:
name: coverage

- name: Run codacy-coverage-reporter
if: github.repository == 'pastas/pastas'
if: ${{ github.repository == 'pastas/pastas' && success() }}
uses: codacy/codacy-coverage-reporter-action@master
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ examples/notebooks/.ipynb_checkpoints/
gui/settings
build
dist
.tox

.idea/.name
.cache/v/cache/lastfailed
Expand All @@ -32,3 +33,7 @@ dist

.DS_Store
/doc/api/generated/
Test_Model.pdf
test.pas
doc/about/publications.bib
doc/about/references.bib
18 changes: 10 additions & 8 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,18 @@ Pastas: Analysis of Groundwater Time Series
:target: https://mit-license.org/
.. image:: https://img.shields.io/pypi/pyversions/pastas
:target: https://pypi.python.org/pypi/pastas
.. image:: https://img.shields.io/pypi/dm/pastas
:target: https://pypi.org/project/pastas/
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1465866.svg
:target: https://doi.org/10.5281/zenodo.1465866
.. image:: https://api.codacy.com/project/badge/Grade/952f41c453854064ba0ee1fa0a0b4434
:target: https://www.codacy.com/gh/pastas/pastas
.. image:: https://api.codacy.com/project/badge/Coverage/952f41c453854064ba0ee1fa0a0b4434
:target: https://www.codacy.com/gh/pastas/pastas
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1465866.svg
:target: https://doi.org/10.5281/zenodo.1465866
.. image:: https://mybinder.org/badge_logo.svg
:target: https://mybinder.org/v2/gh/pastas/pastas/master?filepath=examples%2Fnotebooks%2F1_basic_model.ipynb
.. image:: https://readthedocs.org/projects/pastas/badge/?version=latest
:target: https://pastas.readthedocs.io/en/latest/?badge=latest
.. image:: https://mybinder.org/badge_logo.svg
:target: https://mybinder.org/v2/gh/pastas/pastas/master?filepath=examples%2Fnotebooks%2F1_basic_model.ipynb

Pastas: what is it?
~~~~~~~~~~~~~~~~~~~
Expand All @@ -34,10 +36,10 @@ built-in optimization, visualisation, and statistical analysis tools.

Documentation & Examples
~~~~~~~~~~~~~~~~~~~~~~~~
- Documentation is provided on a dedicated website: http://pastas.readthedocs.io/
- Documentation is provided on the dedicated website `pastas.dev <http://www.pastas.dev/>`_
- Examples can be found on the `examples directory on the documentation website <https://pastas.readthedocs.io/en/dev/examples/index.html>`_
- View and edit a working example notebook of a Pastas model in `MyBinder <https://mybinder.org/v2/gh/pastas/pastas/master?filepath=examples%2Fnotebooks%2F1_basic_model.ipynb>`_
- A list of Publications that used Pastas is available in a `dedicated GitHub repo <https://github.com/pastas/pastas_research>`_
- A list of publications that use Pastas is available in a `dedicated Zotero group <https://www.zotero.org/groups/4846685/pastas/items/32FS5PTW/item-list>`_

Get in Touch
~~~~~~~~~~~~
Expand All @@ -50,7 +52,7 @@ Get in Touch

Quick installation guide
~~~~~~~~~~~~~~~~~~~~~~~~
To install Pastas, a working version of Python 3.7, 3.8 or 3.9 has to be
To install Pastas, a working version of Python 3.8, 3.9 or 3.10 has to be
installed on your computer. We recommend using the `Anaconda Distribution
<https://www.continuum.io/downloads>`_ as it includes most of the python
package dependencies and the Jupyter Notebook software to run the notebooks.
Expand Down Expand Up @@ -90,7 +92,7 @@ Pastas
- numpy>=1.7
- matplotlib>=3.1
- pandas>=1.1
- scipy>=1.3
- scipy>=1.8
- numba>=0.51

To install the most important optional dependencies (solver LmFit and function visualisation Latexify) at the same time with Pastas use::
Expand Down
Binary file added doc/_static/Eawag_logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/_static/TUD_logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/_static/example_output.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_static/history_initial.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions doc/about/01_history.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
History
=======

The Development of Pastas started in the spring of 2016 at the TU Delft and Artesia in the Netherlands. Researchers
at the TU Delft required a flexible framework that could support future research on time series analysis of
groundwater data. Consulting company `Artesia <https://www.artesia-water.nl>`_ on the other hand, needed a tool
that allowed them to perform more complex analyses in a scripted environment. As such, Pastas was developed under
a fruitful partnership between academia and private industry, a collaboration that continues to this day.

.. figure:: ./../_static/history_initial.jpg
:figwidth: 600px

Drawing the initial design of Pastas on a whiteboard (5th of April, 2016)

Python was chosen as the programming language for Pastas, being a flexible and open-source language that allows for
quick prototyping. Moreover, many if not most hydrologists learn Python during their education, making the software
available to many. From the start, all code was made completely open-source under MIT license, embracing open science
and FAIR (Findability, Accessibility, Interoperability, and Reuse) data practices.

International use of Pastas and research grew substantially after the publication of the Pastas article in the
international journal Groundwater :cite:p:`collenteur_pastas_2019`. In addition, the University of Graz in Austria
and now the Swiss research institute Eawag employed one of the maintainers, further pushing the international use and
development of Pastas. Since its inception, Pastas has been applied in over a dozen countries worldwide. Supporting
international research continues to be an important goal of Pastas. For a list of peer-reviewed publications using
Pastas please see the :doc:`Publications page <05_publications>`.

Pastas 1.0
----------

In february 2023, Pastas version 1.0 was released, the celebration of 7 years of research and development of Pastas.
Pastas was already operational for a couple of years, but the a lot of features were still changing. In Pastas 1.0
focus lies on Pastas main goal: time series analysis on groundwater levels. This was done by improving the
documentation, removing unused features, unifying the API and relying more on high quality Python packages such as
Pandas, NumPy and Numba. With version 1.0, Pastas is ready for further future developments!


110 changes: 110 additions & 0 deletions doc/about/02_team.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
Pastas Team
===========

Active maintainers
------------------

Core team
~~~~~~~~~
The following people are part of the core team of Pastas and can merge pull requests on the Pastas GitHub.


.. grid:: 1 2 3 4

.. grid-item::

.. figure:: https://avatars2.githubusercontent.com/u/12051167?s=460&u=ad0baaa3520ab942c93af44ea8e296b44ea459ac&v=4
:figwidth: 150px
:target: https://github.com/raoulcollenteur

Raoul Collenteur
(Eawag)

.. grid-item::
.. figure:: https://avatars3.githubusercontent.com/u/1363400?s=460&u=8d34d0824bd0f43a63f29c0b71fbfae435a15565&v=4
:figwidth: 150px
:target: https://github.com/mbakker7

Mark Bakker
(TU Delft)

.. grid-item::
.. figure:: https://avatars3.githubusercontent.com/u/18527362?s=460&u=3e1faab416c86e141ff0860017a5a02133830b08&v=4
:figwidth: 150px
:target: https://github.com/rubencalje

Ruben Caljé
(Artesia)

.. grid-item::
.. figure:: https://avatars1.githubusercontent.com/u/6552225?s=460&u=ba73dc4a63fe3d5707a2da9276143d16672ad413&v=4
:figwidth: 150px
:target: https://github.com/dbrakenhoff

Davíd Brakenhoff
(Artesia)

Developers
~~~~~~~~~~

The following people are part of the development team of Pastas and help develop new features.

.. grid:: 1 2 3 4

.. grid-item::
.. figure:: https://avatars.githubusercontent.com/u/10562903?v=4
:figwidth: 120px
:target: https://github.com/OnnoEbbens

Onno Ebbens
(Artesia)

.. grid-item::
.. figure:: https://avatars.githubusercontent.com/u/66305055?v=4
:figwidth: 120px
:target: https://github.com/martinvonk

Martin Vonk
(Artesia & TU Delft)

All the people who have contributed code to the Pastas project can be found on `GitHub Contributor list <https://github
.com/pastas/pastas/graphs/contributors>`_.


Institutional partners
----------------------
Institutional partners are companies and universities that support the project by employing maintainers and developers.
Current institutional partners include:

.. grid:: 1 2 3 3

.. grid-item-card::


.. figure:: ./../_static/Eawag_logo.png
:figwidth: 150px
:target: https://www.eawag.ch/en/

.. grid-item-card::

.. figure:: ./../_static/TUD_logo.png
:figwidth: 150px
:target: https://www.tudelft.nl

.. grid-item-card::

.. figure:: ./../_static/Art_logo.jpg
:figwidth: 150px
:target: http://www.artesia-water.nl

Past Institutional support
--------------------------
The following institutions have employed maintainers in the past or past maintainers:

.. grid:: 1 2 3 3

.. grid-item-card::

.. figure:: ./../_static/logo_graz.png
:figwidth: 150px
:target: https://erdwissenschaften.uni-graz.at/en/
73 changes: 73 additions & 0 deletions doc/about/03_citing.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
Citing and logo
===============

If you find Pastas useful in your work, please cite the `Pastas article published in Groundwater journal <https://doi.org/10.1111/gwat.12925>`_:

Collenteur, R., Caljé, R., Klop, S., Schaars, F., & Bakker, M. (2019). Pastas: open source software for the analysis of groundwater time series. Groundwater, 57. https://doi.org/10.1111/gwat.12925

.. code-block:: text

@article{Collenteur_Pastas_open_source_2019,
author = {Collenteur, R.A. and
Caljé, R. and
Klop, S.A. and
Schaars, F. and
Bakker, M.},
doi = {10.1111/gwat.12925},
journal = {Groundwater},
month = {7},
title = {{Pastas: open source software for the analysis of groundwater time series}},
volume = {57},
year = {2019}
}

To cite a specific version of Pastas, you can cite `one of the releases on Zenodo <https://doi.org/10.5281/zenodo
.7585471>`_:

.. code-block:: text

@software{raoul_collenteur_2023_7585471,
author = {Raoul Collenteur and
Mark Bakker and
Ruben Caljé and
Frans Schaars},
title = {{Pastas: open-source software for the analysis of
hydrogeological time series}},
month = jan,
year = 2023,
publisher = {Zenodo},
version = {v1.0.0},
doi = {10.5281/zenodo.7585471},
url = {https://doi.org/10.5281/zenodo.7585471}
}

Naming
------

Pastas is written as one, non-capitalized word: "Pastas".

Logo
----

.. figure::
./../_static/logo.png
:figwidth: 200px

Color
-----

.. raw:: html

<table class="table">
<tr>
<td style="text-align: center;">
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
<circle cx="50" cy="50" r="50" fill="#009BE0"/>
</svg>
<br/>
<b style="color: #009BE0;">Pastas Blue</b><br/>
RGB: R0 G155 B224<br/>
HEX: #009BE0
</td>
</tr>
</table>