SurfinPy 2.0

SurfinPy 2.0: A Phase Diagram Generator for Surfaces and Bulk Phases - Published in JOSS (2022)

https://github.com/symmy596/surfinpy

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

Keywords

density-functional-theory thermodynamic-properties
Last synced: 6 months ago · JSON representation

Repository

Thermodynamic Phase Diagram Generator

Basic Info
  • Host: GitHub
  • Owner: symmy596
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 24.2 MB
Statistics
  • Stars: 55
  • Watchers: 6
  • Forks: 22
  • Open Issues: 5
  • Releases: 5
Topics
density-functional-theory thermodynamic-properties
Created over 7 years ago · Last pushed almost 4 years ago
Metadata Files
Readme Changelog Contributing License Code of conduct

README.md

SurfinPy

DOI status DOI Documentation Status Build Status Build status PyPI version Coverage Status Gitter chat

This is the documentation for the open-source Python project - surfinpy. A library designed to facilitate the generation of publication ready phase diagrams from ab initio calculations for both surface and bulk materials. surfinpy is built on existing Python packages that those in the solid state physics/chemistry community should already be familiar with. It is hoped that this tool will bring some benfits to the solid state community and facilitate the generation of publication ready phase diagrams (powered by Matplotlib.)

The main features include:

  1. Method to generate surface phase diagrams as a function of chemical potential.
  • Generate a diagram as a function of the chemical potential of two adsorbing species e.g. water and carbon dioxide.
  • Generate a diagram as a function of the chemical potential of one adsorbing species and a surface species e.g. water and oxygen vacancies.
  • Use experimental data combined with ab initio data to generate a temperature dependent phase diagram.
  1. Method to generate surface phase diagrams as a function of temperature and pressure.
  • Use experimental data combined with ab initio data to generate a pressure vs temperature plot showing the state of a surface as a function of temperature and pressure of one species.
  1. Use calculated surface energies to built crystal morphologies.
  • Use the surface energies produced by surfinpy alongside Pymatgen to built particle morphologies.
  • Evaulate how a particles shape changes with temperature and pressure.
  1. Method to generate bulk phase diagrams as a function of chemical potential.
  • Generate a diagram as a function of the chemical potential of two species e.g. water and carbon dioxide.
  • Use experimental data combined with ab initio data to generate a temperature dependent phase diagram.
  1. Method to generate bulk phase diagrams as a function of temperature and pressure.
  • Use experimental data combined with ab initio data to generate a pressure vs temperature plot showing the phase space as a function of temperature and pressure.
  1. Method to include vibrational properties in a phase diagram
  • Module to calculate the zero point energy and vibrational entropy
  • Encorporate the zero point energy and/or the vibrational entropy into a phase diagram.

The code has been developed to analyse VASP calculations but is compatible with other ab initio codes. surfinpy was developed across several PhD projects and as such the functionality focuses on the research questions encountered during those projects, which we should clarify are wide ranging. Code contributions aimed at expanding the code to new problems are encouraged.

surfinpy is free to use.

Usage

A full list of examples can be found in the examples folder of the git repository, these include jupyter notebook tutorials which combine the full theory with code examples.

Installation

surfinpy is a Python 3 package and requires a typical scientific Python stack. Use of the tutorials requires Anaconda/Jupyter to be installed.

To build from source:

pip install -r requirements.txt -e .

Or for jupyter compatable use

pip install -r requirements.txt -e .[Tutorials]

python setup.py test

Or alternatively install with pip

pip install surfinpy

Documentation

To build the documentation from scratch

cd docs
make html

Alternativly, documentation can be found here.

License

surfinpy is made available under the MIT License.

Detailed requirements

surfinpy is compatible with Python 3.5+ and relies on a number of open source Python packages, specifically:

  • Numpy
  • Scipy
  • Matplotlib
  • Pymatgen
  • Seaborn
  • Pyyaml
  • Jupyter (Examples using Jupyter Notebooks, use Tutorials install)

Contributing

Contact

If you have questions regarding any aspect of the software then please get in touch with the development team via email Adam Symington (symmy596@gmail.com), Joshua Tse (joshua.s.tse@gmail.com). Alternatively you can create an issue on the Issue Tracker or you can discuss your questions on our gitter channel.

Bugs

There may be bugs. If you think you've caught one, please report it on the Issue Tracker. This is also the place to propose new ideas for features or ask questions about the design of surfinpy. Poor documentation is considered a bug so feel free to request improvements.

Code contributions

We welcome help in improving and extending the package. This is managed through Github pull requests; for external contributions we prefer the "fork and pull"__ workflow while core developers use branches in the main repository:

  1. First open an Issue to discuss the proposed contribution. This discussion might include how the changes fit surfinpy's scope and a general technical approach.
  2. Make your own project fork and implement the changes there. Please keep your code style compliant with PEP8.
  3. Open a pull request to merge the changes into the main project. A more detailed discussion can take place there before the changes are accepted.

For further information please contact Adam Symington - symmy596@gmail.com, Joshua Tse - joshua.s.tse@gmail.com

Research

Author

  • Adam R.Symington
  • Joshua Tse (Uniersity of Huddersfield)

Acknowledgements

Owner

  • Name: Adam Symington
  • Login: symmy596
  • Kind: user
  • Location: Planet Earth
  • Company: Fraym

Data Science Lead at Fraym. A software developer who does data science. Cartographer and data vis enthusiast

JOSS Publication

surfinpy: A Surface Phase Diagram Generator
Published
February 20, 2019
Volume 4, Issue 34, Page 1210
Authors
Adam R. Symington ORCID
Department of Chemistry, University of Bath
Joshua Tse ORCID
Department of Chemistry, University of Huddersfield
Marco Molinari ORCID
Department of Chemistry, University of Huddersfield
Arnaud Marmier ORCID
FET - Engineering, Design and Mathematics, University of the West of England
Stephen C. Parker ORCID
Department of Chemistry, University of Bath
Editor
Lorena A Barba ORCID
Tags
Chemistry Physics Density Functional Theory Solid State Chemistry Simulation materials

GitHub Events

Total
  • Watch event: 3
  • Fork event: 3
Last Year
  • Watch event: 3
  • Fork event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 320
  • Total Committers: 7
  • Avg Commits per committer: 45.714
  • Development Distribution Score (DDS): 0.262
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
symmy596 a****4@b****k 236
jstse j****8@h****m 68
Benjamin Morgan b****2@g****m 6
Adam Symington s****6@g****m 6
AdamSymington 7****n 2
Sebastian Ehlert 2****k 1
Kyle Niemeyer k****r@f****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 9
  • Total pull requests: 19
  • Average time to close issues: 4 months
  • Average time to close pull requests: 28 days
  • Total issue authors: 4
  • Total pull request authors: 6
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.21
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • awvwgk (4)
  • dandavies99 (2)
  • symmy596 (2)
  • NeolithEra (1)
Pull Request Authors
  • jstse (12)
  • symmy596 (2)
  • bjmorgan (2)
  • kyleniemeyer (1)
  • dependabot[bot] (1)
  • awvwgk (1)
Top Labels
Issue Labels
help wanted (1) good first issue (1)
Pull Request Labels
dependencies (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 36 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 7
  • Total maintainers: 1
pypi.org: surfinpy

Surface Phase Diagram Plotting Tools

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 36 Last month
Rankings
Forks count: 8.5%
Stargazers count: 9.7%
Dependent packages count: 10.1%
Average: 16.6%
Dependent repos count: 21.6%
Downloads: 33.2%
Maintainers (1)
Last synced: 6 months ago
conda-forge.org: surfinpy
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.0%
Forks count: 36.1%
Stargazers count: 39.9%
Average: 40.3%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

requirements.txt pypi
  • jupyter-sphinx *
  • matplotlib *
  • nbsphinx *
  • numpy *
  • pandas *
  • pymatgen *
  • pyyaml *
  • scipy *
  • seaborn *
  • sphinx_rtd_theme *
setup.py pypi
  • matplotlib *
  • numpy *
  • pymatgen *
  • pyyaml *
  • scipy *
  • seaborn *