BurnMan -- a Python toolkit for planetary geophysics, geochemistry and thermodynamics

BurnMan -- a Python toolkit for planetary geophysics, geochemistry and thermodynamics - Published in JOSS (2023)

https://github.com/geodynamics/burnman

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 13 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    4 of 19 committers (21.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Mathematics Computer Science - 40% confidence
Last synced: 4 months ago · JSON representation

Repository

BurnMan is a Python toolkit for planetary geophysics, geochemistry and thermodynamics

Basic Info
Statistics
  • Stars: 66
  • Watchers: 15
  • Forks: 43
  • Open Issues: 3
  • Releases: 8
Created over 11 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Authors

Readme.md

DOI DOI coverage

BurnMan - a Python toolkit for planetary geophysics, geochemistry and thermodynamics

About

BurnMan is a Python library for generating thermodynamic and thermoelastic models of planetary interiors.

It began as a working-group at the 2012 CIDER workshop in Santa Barbara.

BurnMan is released under the GNU GPL v2 or newer

Homepage: https://geodynamics.github.io/burnman/

Documentation: http://burnman.readthedocs.io

Source code: https://github.com/geodynamics/burnman

Forums: https://community.geodynamics.org/c/burnman

Authors (as of 2024): * Bob (Robert) Myhill (main contributor) * Cayman Unterborn * Ian Rose * Sanne Cottaar * Timo Heister * Juliane Dannberg * Rene Gassmoeller * Robert Farla

Citing BurnMan

If you use BurnMan in your work, we ask that you cite the following publications:

  • Myhill, R., Cottaar, S., Heister, T., Rose, I., Unterborn, C., Dannberg, J. and Gassmoeller, R. (2023). BurnMan - a Python toolkit for planetary geophysics, geochemistry and thermodynamics. Journal of Open Source Software. https://doi.org/10.21105/joss.05389

  • Myhill, R., Cottaar, S., Heister, T., Rose, I., Unterborn, C., Dannberg, J., Gassmoeller, R. and Farla, R. (2024): BurnMan v2.1.0 [Software]. Computational Infrastructure for Geodynamics. Zenodo. https://doi.org/10.5281/zenodo.14238360

  • Cottaar S., Heister, T., Rose, I., and Unterborn, C., (2014). BurnMan: A lower mantle mineral physics toolkit, Geochemistry, Geophysics, and Geosystems, 15(4), 1164-1179 https://doi.org/10.1002/2013GC005122

Installation requirements

  • Python 3.8+
  • Python modules: NumPy, SciPy, SymPy, Matplotlib

Optional packages needed for some functionality

  • cvxpy - required for some least squares fitting routines and solution polytope calculations.
  • pycddlib - required for solution polytope calculations.
  • autograd - required for esoteric solution models defined using a single excess function. Not required for the vast majority of users.

Installation process

Installation of BurnMan is mostly platform independent. As long as you know how to use a terminal, the process should be straightforward. The following instructions should help, but let us know if you have any problems.

Environment management

We strongly recommend using a python environment manager like conda or pyenv to install BurnMan and its dependencies. This is especially the case for installations on modern Mac systems.

For pyenv, we suggest you select the most recent version of python supported by BurnMan, install all of the dependencies into that environment and set the burnman root directory to use that environment automatically.

For conda, we suggest making a new environment for the burnman installation, install the most recent version of python supported by BurnMan into that environment, and install all of the dependencies into that environment. Remember to activate the environment before installing new dependencies or using BurnMan.

Dependencies

First, make sure you have a sufficiently recent version of python installed on your machine (see above for the latest requirements). To check your version of python, type the following in a terminal: python --version If your version is not recent enough, visit https://www.python.org/ to find out how to install a newer version.

Once you have checked your version of python, you should make sure you have installed the python module pip. We will use this module to install BurnMan. If you don't have it already, you can install it by opening a terminal window and typing:

python -m ensurepip --upgrade

Mac users will also need to install Xcode, which can be found in the MacStore, or can be installed with:

xcode-select --install

Stable version

If you are only interested in using BurnMan (rather than developing the software), and you aren't interested in any of the latest changes, you can install the stable version by typing the following into a terminal window:

python -m pip install burnman

This method of installation does not give you easy access to all the examples, or the test suite. These can be found in the latest release package which can be downloaded from https://github.com/geodynamics/burnman/releases.

Development version

If you want to install the development version of BurnMan (with all the latest features), you will first need to download the source code. The best way to do this is by using git (a version control system). To install git, follow the instructions at https://git-scm.com/downloads.

Then, using a terminal, navigate to the directory into which you want to clone the BurnMan repository, and type

git clone https://github.com/geodynamics/burnman.git

(If you don't want to use git, you can download the current master branch from https://github.com/geodynamics/burnman/archive/master.zip.)

Once the repository is cloned, navigate to the top-level directory by typing cd burnman in the terminal, and then install BurnMan, either in static mode: python -m pip install . or in development mode (if you want to develop or modify the code): python -m pip install -e ..

Checking that the installation worked

To check that the installation has worked, you can run the test suite (./test.sh). This takes a few minutes to run. You may find that you need to install some other dependencies (latex, pycddlib) if you don't already have them on your system.

A more basic check that BurnMan is installed is to navigate to the Burnman examples directory and type:

python example_beginner.py

If figures show up, BurnMan has been installed.

Getting started: The BurnMan Tutorial

An introduction to the tools available in BurnMan can be found in the BurnMan Tutorial. These are ipython notebooks that can be run from inside jupyterlab.

If you want to run these notebooks without installing BurnMan, you can access them on binder.org via the links below.

  1. tutorial01material_classes.ipynb (introduces the main classes in BurnMan, which are used to calculate material properties)
  2. tutorial02composition_class.ipynb (introduces the composition class, used for processing and converting chemical compositions)
  3. tutorial03layersandplanets.ipynb (introduces the layer and planet classes used to create models of planetary interiors)
  4. tutorial04fitting.ipynb (introduces the various functions used to fit model parameters to experimental and analytical data)
  5. tutorial05equilibrium.ipynb (introduces the equilibrate function, used to equilibrate mineral assemblages)

More detail: The Examples Suite

The BurnMan tutorials provide a basic but incomplete understanding of what the module can do. To supplement the tutorials, BurnMan includes a large suite of examples that provide more in-depth coverage of the potential uses of the module.

For an up-to-date summary of all the examples, including the generated figures, the user is referred to the BurnMan manual (http://burnman.readthedocs.io).

About scripting in Python

Burnman has the advantage of being adaptable and extensible in easy scripts. As BurnMan is a toolkit, a graphical user interface would be impractical (although we do plan to add GUIs for some functionality in the future). Nevertheless, we hope that we have succeeded in making BurnMan accessible to coding novices. For those of you who have little experience with Python, here are some specific features and pitfalls of the language:

  • Python uses specific indentation. A script might fail if a code block is not indented correctly. We use four spaces and no tabs. Mixing spaces and tabs can cause trouble.
  • Indices should be given inside square brackets and function or method call arguments inside parentheses (different from Matlab).
  • The first index of an array or list is 0 (e.g. x[0]), not 1.
  • Put dots after numbers to make them floats instead of integers.

Owner

  • Name: Computational Infrastructure for Geodynamics
  • Login: geodynamics
  • Kind: organization
  • Email: help@geodynamics.org

JOSS Publication

BurnMan -- a Python toolkit for planetary geophysics, geochemistry and thermodynamics
Published
July 11, 2023
Volume 8, Issue 87, Page 5389
Authors
Robert Myhill ORCID
University of Bristol, UK
Sanne Cottaar ORCID
University of Cambridge, UK
Timo Heister ORCID
Clemson University, USA
Ian Rose
Independent Researcher, USA
Cayman Unterborn ORCID
Southwest Research Institute, USA
Juliane Dannberg ORCID
University of Florida, USA
Rene Gassmoeller ORCID
University of Florida, USA
Editor
Jed Brown ORCID
Tags
planetary geophysics geochemistry thermodynamics

Papers & Mentions

Total mentions: 1

The elastic solid solution model for minerals at high pressures and temperatures
Last synced: 3 months ago

GitHub Events

Total
  • Create event: 9
  • Issues event: 22
  • Release event: 3
  • Watch event: 8
  • Delete event: 4
  • Issue comment event: 22
  • Push event: 61
  • Pull request event: 107
  • Fork event: 3
Last Year
  • Create event: 9
  • Issues event: 22
  • Release event: 3
  • Watch event: 8
  • Delete event: 4
  • Issue comment event: 22
  • Push event: 61
  • Pull request event: 107
  • Fork event: 3

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 2,292
  • Total Committers: 19
  • Avg Commits per committer: 120.632
  • Development Distribution Score (DDS): 0.575
Past Year
  • Commits: 128
  • Committers: 2
  • Avg Commits per committer: 64.0
  • Development Distribution Score (DDS): 0.008
Top Committers
Name Email Commits
Bob Myhill m****b@g****m 975
Timo Heister t****r@g****m 612
Sanne Cottaar s****r@g****m 308
ian-r-rose i****e@g****m 168
Ian Rose i****e@b****u 141
Cayman Unterborn k****n@g****m 59
tjesser t****r@u****u 7
Sanne Cottaar s****e@S****l 6
Rene Gassmoeller r****r@m****g 4
nknezek n****k@g****m 2
Katrin Leinweber 9****r 2
Joe Renaud - LapWIN j****d@g****m 1
Robert Farla r****a@g****m 1
S-Hunt 7****t 1
Wolfgang Bangerth b****h@m****u 1
Simon Hunt s****n@s****e 1
Nobody n****y@b****g 1
Elliott Sales de Andrade e****e@p****a 1
bjheinen b****n@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 42
  • Total pull requests: 230
  • Average time to close issues: over 1 year
  • Average time to close pull requests: 6 days
  • Total issue authors: 11
  • Total pull request authors: 4
  • Average comments per issue: 1.4
  • Average comments per pull request: 0.19
  • Merged pull requests: 222
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 9
  • Pull requests: 85
  • Average time to close issues: 4 days
  • Average time to close pull requests: about 11 hours
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.05
  • Merged pull requests: 79
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • bobmyhill (25)
  • kaylai (6)
  • stanroozen (2)
  • simonwmatthews (2)
  • vivianotieno (1)
  • SauravMaheshkar (1)
  • bjheinen (1)
  • Te-rex83 (1)
  • Francyrad (1)
  • tjhei (1)
  • trg818 (1)
Pull Request Authors
  • bobmyhill (264)
  • jdannberg (3)
  • tjhei (1)
  • bjheinen (1)
Top Labels
Issue Labels
enhancement (2) always open (1) documentation (1)
Pull Request Labels
ready to test (11)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 2,548 last-month
  • Total dependent packages: 1
    (may contain duplicates)
  • Total dependent repositories: 3
    (may contain duplicates)
  • Total versions: 17
  • Total maintainers: 2
proxy.golang.org: github.com/geodynamics/burnman
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.5%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
pypi.org: burnman

A thermoelastic and thermodynamic toolkit for the Earth and planetary sciences

  • Versions: 14
  • Dependent Packages: 1
  • Dependent Repositories: 3
  • Downloads: 2,548 Last month
Rankings
Dependent packages count: 4.7%
Forks count: 6.2%
Average: 9.0%
Dependent repos count: 9.0%
Stargazers count: 9.5%
Downloads: 15.4%
Maintainers (2)
Last synced: 12 months ago

Dependencies

docs/pip_requirements.txt pypi
  • autograd *
  • cvxpy *
  • jupyter *
  • matplotlib *
  • nbsphinx *
  • numpy *
  • numpydoc *
  • scipy *
  • sphinxcontrib.bibtex *
  • sympy *
requirements.txt pypi
  • cvxpy *
  • jupyter *
  • matplotlib *
  • numba *
  • numpy *
  • scipy *
  • sympy *
.github/workflows/main.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
.binder/environment.yml conda
  • appmode
  • ipympl
  • ipywidgets
  • jupyterlab >=3,<4.0.0a0
  • pip
  • python >=3.8,<3.10.0a0