{"id":19855810,"url":"https://github.com/ray-chew/pybella","last_synced_at":"2025-09-18T14:32:01.379Z","repository":{"id":229377434,"uuid":"774549455","full_name":"ray-chew/pyBELLA","owner":"ray-chew","description":"A Python-based Blended sEamLess soLver for Atmospheric dynamics coupled to an ensemble data assimilation engine","archived":false,"fork":false,"pushed_at":"2025-01-06T10:20:25.000Z","size":180547,"stargazers_count":4,"open_issues_count":13,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-01-06T11:27:30.973Z","etag":null,"topics":["blended-models","data-assimilation","dynamical-core","finite-volume","iterative-solvers","letkf"],"latest_commit_sha":null,"homepage":"https://ray-chew.github.io/pyBELLA/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ray-chew.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-19T18:36:49.000Z","updated_at":"2024-12-20T20:44:31.000Z","dependencies_parsed_at":"2024-03-23T23:22:09.361Z","dependency_job_id":"e2ccda81-8b3f-491b-8740-7bad37c4034c","html_url":"https://github.com/ray-chew/pyBELLA","commit_stats":null,"previous_names":["ray-chew/pybella"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-chew%2FpyBELLA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-chew%2FpyBELLA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-chew%2FpyBELLA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray-chew%2FpyBELLA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ray-chew","download_url":"https://codeload.github.com/ray-chew/pyBELLA/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233490175,"owners_count":18684006,"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","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":["blended-models","data-assimilation","dynamical-core","finite-volume","iterative-solvers","letkf"],"created_at":"2024-11-12T14:13:46.466Z","updated_at":"2025-09-18T14:32:01.363Z","avatar_url":"https://github.com/ray-chew.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\n  \u003cimg alt=\"pyBELLA Logo\" src=\"/docs/source/_static/logo.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003e\u003cb\u003e\u003cfont color=\"#417b95\"\u003eB\u003c/font\u003e\u003c/b\u003elended s\u003cb\u003e\u003cfont color=\"#417b95\"\u003eE\u003c/font\u003e\u003c/b\u003eam\u003cb\u003e\u003cfont color=\"#417b95\"\u003eL\u003c/font\u003e\u003c/b\u003eess so\u003cb\u003e\u003cfont color=\"#417b95\"\u003eL\u003c/font\u003e\u003c/b\u003ever for \u003cb\u003e\u003cfont color=\"#417b95\"\u003eA\u003c/font\u003e\u003c/b\u003etmospheric dynamics\u003c/h2\u003e\n\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/ray-chew/pyBELLA/actions/workflows/deploy.yml\"\u003e\n\u003cimg alt=\"GitHub Actions: docs\" src=https://img.shields.io/github/actions/workflow/status/ray-chew/pyBELLA/deploy.yml?logo=github\u0026label=docs\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/ray-chew/pyBELLA/issues\"\u003e\n\u003cimg alt=\"open issues\" src=https://img.shields.io/github/issues/ray-chew/pyBELLA\u003e\n\u003c/a\u003e\n\u003ca href=\"https://opensource.org/licenses/BSD-3-Clause\"\u003e\n\u003cimg alt=\"License: BSD-3\" src=https://img.shields.io/badge/License-BSD_3--Clause-blue.svg\u003e\n\u003c/a\u003e\n\u003c!-- \u003ca href=\"https://github.com/psf/black\"\u003e\n\u003cimg alt=\"Code style: black\" src=https://img.shields.io/badge/code%20style-black-000000.svg\u003e\n\u003c/a\u003e --\u003e\n\u003c/p\u003e\n\n\nThe Blended sEamLess soLver for Atmospheric dynamics (pyBELLA) is a Python-based numerical flow solver. The current version features PyBELLA+ as it is coupled to an ensemble data assimillation engine based on the [Local Ensemble Transform Kalman Filter](https://www.sciencedirect.com/science/article/abs/pii/S0167278906004647).\n\nThe numerical scheme for pyBELLA was introduced by [Benacchio and Klein (2019)](https://journals.ametsoc.org/view/journals/mwre/147/11/mwr-d-19-0073.1.xml), and the seamless blending between physical model regimes within a simulation run was extended in [Chew et al. (2022)](https://journals.ametsoc.org/view/journals/mwre/150/9/MWR-D-21-0175.1.xml); see [`v0.3.0-localdab`](https://github.com/ray-chew/pyBELLA/releases/tag/archive%2Flocaldab) for the source code.\n\nThis code was also used to produce the results in\n* [Chew (2022)](https://refubium.fu-berlin.de/bitstream/handle/fub188/37313/thesis_final.pdf); [`v0.2.0-thesis`](https://github.com/ray-chew/pyBELLA/releases/tag/archive%2Fthesis)\n* [Chew et al. (2023)](https://tinyurl.com/2dc7hjqa); [`v0.4.0-coriolis`](https://github.com/ray-chew/pyBELLA/releases/tag/archive%2Ffull_coriolis)\n\n\n---\n\n**[Read the documentation here](https://ray-chew.github.io/pyBELLA/index.html)**\n\n---\n\n## Requirements\n\nSee [`requirements.txt`](https://github.com/ray-chew/pyBELLA/blob/develop/requirements.txt)\n\n**Note**:  The development dependencies can be found in [`dev-requirements.txt`](https://github.com/ray-chew/pyBELLA/blob/develop/dev-requirements.txt).\n\nTo install the requirements:\n```console\npip install -r requirements.txt\n```\n\n\n## Usage\n\n### Installation\n\nFork this repository and clone your remote fork. `cd` into your local forked repository and execute:\n\n```console\npip install -e . \n```\n\n**Note**: depending on your IDE, you may need to add the `--config-settings editable_mode` at the end of the above command for the pyBELLA package to be visible to the linter. However, this comes with limitations to the development mode, see [here for more details](https://setuptools.pypa.io/en/latest/userguide/development_mode.html).\n\n### Configuration\n\nThe user-defined input parameters are in the [`inputs`](https://github.com/ray-chew/pyBELLA/tree/develop/inputs) subpackage. These parameters are imported into the run scripts in [`run_scripts`](https://github.com/ray-chew/pyBELLA/tree/develop/run_scripts). \n\n### Execution\n\nA simple test can be found in [`run_scripts.test_dycore`](https://github.com/ray-chew/pyBELLA/blob/develop/run_scripts/test_dycore.py). To execute this test script from the pyBELLA parent directory:\n\n```console\npytest ./run_scripts/test_dycore.py -v\n```\n\nTo run a simulation:\n```console\npybella -ic rb -N 1\n```\nNote that only the rising bubble initial condition is implemented for now with ensemble size of 1. \n\nThe codebase is structured such that the user can easily assemble a run script to define their own experiments. Refer to the documentation for the [available APIs](https://ray-chew.github.io/pyBELLA/apis.html).\n\n## License\n\n[BSD License v3.0](https://fossa.com/blog/open-source-software-licenses-101-bsd-3-clause-license/)\n\n## Contributions\n\nRefer to the [open issues](https://github.com/ray-chew/pyBELLA/issues), in particular issues with the [`help wanted` label](https://github.com/ray-chew/pyBELLA/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22).\n\nAny changes, improvements, or bug fixes can be submitted from your remote to upstream via a pull request.\n\n## To be tidied up\n\n### Profiler \n```bash\n$ PYTHONPATH=src scalene -m pybella -ic test_lamb_wave -N 1\n```\n\n### Coverage\n```bash\n$ pytest --cov test_scripts/ --cov-report=html \n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray-chew%2Fpybella","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fray-chew%2Fpybella","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray-chew%2Fpybella/lists"}