{"id":13528582,"url":"https://github.com/pastas/pastas","last_synced_at":"2025-10-23T19:54:19.929Z","repository":{"id":37484345,"uuid":"56300322","full_name":"pastas/pastas","owner":"pastas","description":"Pastas is an open-source Python framework for the analysis of groundwater time series.","archived":false,"fork":false,"pushed_at":"2025-10-08T09:11:34.000Z","size":160213,"stargazers_count":402,"open_issues_count":56,"forks_count":96,"subscribers_count":14,"default_branch":"dev","last_synced_at":"2025-10-14T12:03:19.852Z","etag":null,"topics":["analysis","groundwater","hydrology","pastas","python","timeseries"],"latest_commit_sha":null,"homepage":"https://pastas.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pastas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-04-15T07:29:20.000Z","updated_at":"2025-10-10T22:50:08.000Z","dependencies_parsed_at":"2023-02-17T20:45:52.997Z","dependency_job_id":"d57eb389-836e-41cd-acbd-924ec7eea482","html_url":"https://github.com/pastas/pastas","commit_stats":{"total_commits":2236,"total_committers":16,"mean_commits":139.75,"dds":"0.48389982110912344","last_synced_commit":"fe60338de8009d69d3486180fa5fa7fd33735397"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/pastas/pastas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pastas%2Fpastas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pastas%2Fpastas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pastas%2Fpastas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pastas%2Fpastas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pastas","download_url":"https://codeload.github.com/pastas/pastas/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pastas%2Fpastas/sbom","scorecard":{"id":228829,"data":{"date":"2025-08-11","repo":{"name":"github.com/pastas/pastas","commit":"a6a72e3985bb009f96cf37593ac83474146289fd"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.1,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 13 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/code_spell.yml:1","Warn: no topLevel permission defined: .github/workflows/python-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/test_benchmark_notebooks.yml:1","Warn: no topLevel permission defined: .github/workflows/test_format_lint.yml:1","Warn: no topLevel permission defined: .github/workflows/test_unit_pytest.yml:1","Warn: no topLevel permission defined: .github/workflows/url_check.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/python-publish.yml:11"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/auto-author-assign.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/auto-author-assign.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/code_spell.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/code_spell.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/python-publish.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/python-publish.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_benchmark_notebooks.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_benchmark_notebooks.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_benchmark_notebooks.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_benchmark_notebooks.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_format_lint.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_format_lint.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_format_lint.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_format_lint.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_unit_pytest.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_unit_pytest.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_unit_pytest.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_unit_pytest.yml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_unit_pytest.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/test_unit_pytest.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/url_check.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/url_check.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/url_check.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/pastas/pastas/url_check.yml/dev?enable=pin","Warn: pipCommand not pinned by hash: .devcontainer/setup.sh:4","Warn: pipCommand not pinned by hash: .github/workflows/code_spell.yml:16","Warn: pipCommand not pinned by hash: .github/workflows/code_spell.yml:17","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/test_benchmark_notebooks.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/test_benchmark_notebooks.yml:41","Warn: pipCommand not pinned by hash: .github/workflows/test_format_lint.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/test_format_lint.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/test_unit_pytest.yml:63","Warn: pipCommand not pinned by hash: .github/workflows/test_unit_pytest.yml:64","Warn: pipCommand not pinned by hash: .github/workflows/url_check.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/url_check.yml:24","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of  13 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-17T04:24:37.192Z","repository_id":37484345,"created_at":"2025-08-17T04:24:37.193Z","updated_at":"2025-08-17T04:24:37.193Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280263286,"owners_count":26300763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis","groundwater","hydrology","pastas","python","timeseries"],"created_at":"2024-08-01T07:00:21.499Z","updated_at":"2025-10-23T19:54:19.924Z","avatar_url":"https://github.com/pastas.png","language":"Python","funding_links":[],"categories":["Libraries","Software","Hydrosphere","Software and Tools","📦 Packages"],"sub_categories":["Seismic and Seismology","Freshwater and Hydrology","Python"],"readme":"# Pastas: Analysis of Groundwater Time Series\n\n\u003cimg align=\"left\" height=\"100\" src=\"/doc/_static/logo_small.png\"\u003e\n\n[![image](https://img.shields.io/pypi/v/pastas.svg)](https://pypi.python.org/pypi/pastas)\n[![image](https://img.shields.io/pypi/l/pastas.svg)](https://mit-license.org/)\n[![image](https://img.shields.io/pypi/pyversions/pastas)](https://pypi.python.org/pypi/pastas)\n[![image](https://img.shields.io/pypi/dm/pastas)](https://pypi.org/project/pastas/)\n[![image](https://zenodo.org/badge/DOI/10.5281/zenodo.1465866.svg)](https://doi.org/10.5281/zenodo.1465866)\n\n[![image](https://app.codacy.com/project/badge/Grade/952f41c453854064ba0ee1fa0a0b4434)](https://app.codacy.com/gh/pastas/pastas/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n[![image](https://api.codacy.com/project/badge/Coverage/952f41c453854064ba0ee1fa0a0b4434)](https://app.codacy.com/gh/pastas/pastas/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_coverage9)\n[![image](https://readthedocs.org/projects/pastas/badge/?version=stable)](https://pastas.readthedocs.io/)\n[\u003cimg src=\"https://github.com/codespaces/badge.svg\" height=\"20\"\u003e](https://codespaces.new/pastas/pastas?quickstart=1)\n[![image](https://github.com/pastas/pastas/actions/workflows/test_unit_pytest.yml/badge.svg?branch=master)](https://github.com/pastas/pastas/actions/workflows/test_unit_pytest.yml)\n[![image](https://github.com/pastas/pastas/actions/workflows/test_format_lint.yml/badge.svg?branch=master)](https://github.com/pastas/pastas/actions/workflows/test_format_lint.yml)\n\n## Pastas: what is it?\n\nPastas is an open source python package for processing, simulating and\nanalyzing groundwater time series. The object oriented structure allows\nfor the quick implementation of new model components. Time series models\ncan be created, calibrated, and analysed with just a few lines of python\ncode with the built-in optimization, visualisation, and statistical\nanalysis tools.\n\n## Documentation \u0026 Examples\n\n-   Documentation is provided on the dedicated website\n    [pastas.dev](http://www.pastas.dev/)\n-   Examples can be found on the [examples directory on the\n    documentation website](https://pastas.readthedocs.io/stable/examples/)\n-   A list of publications that use Pastas is available in a\n    [dedicated Zotero group](https://www.zotero.org/groups/4846685/pastas/items/32FS5PTW/item-list)\n-   View and edit the example notebooks of Pastas in\n    [GitHub Codespaces](https://codespaces.new/pastas/pastas?quickstart=1))\n\n## Get in Touch\n\n-   Questions on Pastas can be asked and answered on [Github\n    Discussions](https://github.com/pastas/pastas/discussions).\n-   Bugs, feature requests and other improvements can be posted as\n    [Github Issues](https://github.com/pastas/pastas/issues).\n-   Pull requests will only be accepted on the development branch (dev)\n    of this repository. Please take a look at the [developers\n    section](http://pastas.readthedocs.io/) on the documentation website\n    for more information on how to contribute to Pastas.\n\n## Quick installation guide\n\nTo install Pastas, a working version of Python has to be installed on your computer.\nWe recommend using the [Anaconda Distribution](https://www.continuum.io/downloads) as it\nincludes most of the python package dependencies and the Jupyter Notebook software to\nrun the notebooks. However, you are free to install any Python distribution you want.\n\n### Stable version\n\nTo get the latest stable version, use:\n\n    pip install pastas\n\n### Update\n\nTo update pastas, use:\n\n    pip install pastas --upgrade\n\n### Developers\n\nTo get the latest development version, use:\n\n    pip install git+https://github.com/pastas/pastas.git@dev#egg=pastas\n\n## Related packages\n\n-   [Pastastore](https://github.com/pastas/pastastore) is a Python\n    package for managing multiple timeseries and pastas models\n-   [Metran](https://github.com/pastas/metran) is a Python package to\n    perform multivariate timeseries analysis using a technique called\n    dynamic factor modelling.\n-   [Hydropandas](https://hydropandas.readthedocs.io/en/stable/examples/03_hydropandas_and_pastas.html)\n    can be used to obtain Dutch timeseries (KNMI, Dinoloket, ..)\n-   [PyEt](https://github.com/phydrus/pyet) can be used to compute\n    potential evaporation from meteorological variables.\n\n## Dependencies\n\nPastas depends on a number of Python packages, of which all of the necessary are\nautomatically installed when using the pip install manager. To know which dependencies\nexist, check the `pyproject.toml` file.\n\nTo install the most important optional dependencies (solver LmFit and\nfunction visualisation Latexify) at the same time with Pastas use:\n\n    pip install pastas[full]\n\nor for the development version use:\n\n    pip install git+https://github.com/pastas/pastas.git@dev#egg=pastas[full]\n\n## How to Cite Pastas?\n\nIf you use Pastas in one of your studies, please cite the Pastas article\nin Groundwater:\n\n-   Collenteur, R.A., Bakker, M., Caljé, R., Klop, S.A., Schaars, F.\n    (2019) [Pastas: open source software for the analysis of groundwater\n    time\n    series](https://ngwa.onlinelibrary.wiley.com/doi/abs/10.1111/gwat.12925).\n    Groundwater. doi: 10.1111/gwat.12925.\n\nTo cite a specific version of Pastas, you can use the DOI provided for\neach official release (\\\u003e0.9.7) through Zenodo. Click on the link to get\na specific version and DOI, depending on the Pastas version.\n\n-   Collenteur, R., Bakker, M., Caljé, R. \u0026 Schaars, F. (XXXX). Pastas:\n    open-source software for time series analysis in hydrology (Version\n    X.X.X). Zenodo. \u003chttp://doi.org/10.5281/zenodo.1465866\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpastas%2Fpastas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpastas%2Fpastas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpastas%2Fpastas/lists"}