parafields

parafields: A generator for distributed, stationary Gaussian processes - Published in JOSS (2023)

https://github.com/parafields/parafields

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    2 of 6 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

hacktoberfest iwr-hacktoberfest

Keywords from Contributors

hydrology energy-system ode turing-machine pde standardization mesh exoplanet electron-microscopy materials-design
Last synced: 6 months ago · JSON representation

Repository

Parallel Parameter Field Generator for Python

Basic Info
  • Host: GitHub
  • Owner: parafields
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 794 KB
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 4
  • Open Issues: 7
  • Releases: 5
Topics
hacktoberfest iwr-hacktoberfest
Created over 3 years ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

Welcome to parafields

License GitHub Workflow Status Documentation Status codecov DOI

parafields is a Python package that provides Gaussian random fields based on circulant embedding. Core features are:

  • Large variety of covariance functions: exponential, Gaussian, Matérn, spherical and cubic covariance functions, among others
  • Generation of distributed fields using domain decomposition and MPI through mpi4py
  • Uses numpy data structures to ease integration with the Python ecosystem of scientific software
  • Optional caching of matrix-vector products
  • Easy integration into e.g. FEniCSx-based PDE solvers (Example that is currently not tested as part of our CI)

parafields implements these features through Python bindings to the parafields-core C++ library. The following options are supported in the backend but not yet in the Python bindings:

  • axiparallel and full geometric anisotropy
  • value transforms like log-normal, folded normal, or sign function (excursion set)
  • Coarsening and refinement of random fields for multigrid/-scale methods

Installation

parafields is available from PyPI and can be installed using pip:

python -m pip install parafields

This will install a sequential, pre-compiled version of parafields. In order to use parafields in an MPI-parallel context, you need to instead build the package from source:

python -m pip install --no-binary parafields -v parafields

This will build the package from source and link against your system MPI.

Additionally, parafields defines the following optional dependency sets:

  • jupyter: All requirements for an interactive Jupyter interface to parafields
  • tests: All requirements for running parafields's unit tests
  • docs: All requirements for buildings parafields's Sphinx documentation

These optional dependencies can be installed by installing e.g. parafields[jupyter].

Usage

This is a minimal usage example of the parafields package:

Minimum usage example

For more examples, check out the parafields documentation.

Reporting Issues

If you need support with parafields or found a bug, consider a bug on the issue tracker.

Contributing

parafields welcomes external contributions. For the best possible contributor experience, consider opening an issue on the issue tracker before you start developing. Announcing your intended development in this way allows us to clarify whether it is in the scope of the package. Contributions are then done via a pull request on the GitHub repository. Please also add your name to the list of copyright holders.

For a development installation of parafields, use the following instructions:

bash git clone https://github.com/parafields/parafields.git cd parafields python -m pip install -v --editable .[tests,docs,jupyter]

Before contributing, make sure that the unit tests pass and that new functionality is covered by unit tests. The unit tests can be run using pytest:

```bash

Sequential tests

python -m pytest

Parallel tests

mpirun --oversubscribe -np 4 python -m pytest --only-mpi ```

In order to locally build the Sphinx documentation, use the following commands:

bash sphinx-build -t html ./doc ./html

Acknowledgments

The parafields-core C++ library is work by Ole Klein whichis supported by the federal ministry of education and research of Germany (Bundesministerium für Bildung und Forschung) and the ministry of science, research and arts of the federal state of Baden-Württemberg (Ministerium für Wissenschaft, Forschung und Kunst Baden-Württemberg).

The Python bindings are realized by the Scientific Software Center of Heidelberg University. The Scientific Software Center is funded as part of the Excellence Strategy of the German Federal and State Governments.

Owner

  • Name: parafields
  • Login: parafields
  • Kind: organization

JOSS Publication

parafields: A generator for distributed, stationary Gaussian processes
Published
December 18, 2023
Volume 8, Issue 92, Page 5735
Authors
Dominic Kempf ORCID
Scientific Software Center, Heidelberg University, Heidelberg, Germany, Interdisciplinary Center for Scientific Computing, Heidelberg University, Heidelberg, Germany
Ole Klein ORCID
Independent Researcher, Heidelberg, Germany
Robert Kutri ORCID
Interdisciplinary Center for Scientific Computing, Heidelberg University, Heidelberg, Germany, Institute for Mathematics, Heidelberg University, Heidelberg, Germany
Robert Scheichl ORCID
Interdisciplinary Center for Scientific Computing, Heidelberg University, Heidelberg, Germany, Institute for Mathematics, Heidelberg University, Heidelberg, Germany
Peter Bastian
Interdisciplinary Center for Scientific Computing, Heidelberg University, Heidelberg, Germany
Editor
Patrick Diehl ORCID
Tags
MPI scientific computing high performance computing uncertainty quantification random field generation circulant embedding

GitHub Events

Total
  • Issues event: 1
  • Delete event: 3
  • Issue comment event: 9
  • Push event: 46
  • Pull request event: 22
  • Create event: 6
Last Year
  • Issues event: 1
  • Delete event: 3
  • Issue comment event: 9
  • Push event: 46
  • Pull request event: 22
  • Create event: 6

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 227
  • Total Committers: 6
  • Avg Commits per committer: 37.833
  • Development Distribution Score (DDS): 0.423
Past Year
  • Commits: 18
  • Committers: 3
  • Avg Commits per committer: 6.0
  • Development Distribution Score (DDS): 0.444
Top Committers
Name Email Commits
Dominic Kempf d****f@i****e 131
pre-commit-ci[bot] 6****] 61
dependabot[bot] 4****] 26
Robert Kutri 5****i 6
Daniel S. Katz d****z@i****g 2
rKutri r****i@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 12
  • Total pull requests: 111
  • Average time to close issues: 3 months
  • Average time to close pull requests: 11 days
  • Total issue authors: 3
  • Total pull request authors: 5
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.37
  • Merged pull requests: 100
  • Bot issues: 0
  • Bot pull requests: 91
Past Year
  • Issues: 0
  • Pull requests: 28
  • Average time to close issues: N/A
  • Average time to close pull requests: 25 days
  • Issue authors: 0
  • Pull request authors: 3
  • Average comments per issue: 0
  • Average comments per pull request: 0.5
  • Merged pull requests: 21
  • Bot issues: 0
  • Bot pull requests: 24
Top Authors
Issue Authors
  • dokempf (5)
  • purusharths (3)
  • gchure (2)
Pull Request Authors
  • pre-commit-ci[bot] (62)
  • dependabot[bot] (33)
  • dokempf (14)
  • rkutri (4)
  • danielskatz (1)
Top Labels
Issue Labels
enhancement (4) good first issue (1) toolchain (1) bug (1)
Pull Request Labels
dependencies (33) github_actions (3) bug (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 307 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 7
  • Total maintainers: 2
pypi.org: parafields

Parallel Parameter Fields for Uncertainty Quantification

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 307 Last month
Rankings
Dependent packages count: 6.6%
Downloads: 15.2%
Average: 17.5%
Dependent repos count: 30.6%
Maintainers (2)
Last synced: 6 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
.github/workflows/pypi.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • pypa/cibuildwheel v2.12.0 composite
  • pypa/gh-action-pypi-publish release/v1 composite
pyproject.toml pypi
  • Pillow *
  • jsonschema <4
  • matplotlib *
  • mpi4py *
  • numpy *
setup.py pypi
.github/workflows/joss.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite