i-pi

i-PI: a universal force engine

https://github.com/i-pi/i-pi

Science Score: 49.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 2 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    22 of 55 committers (40.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.8%) to scientific vocabulary

Keywords from Contributors

materials-science molecular-dynamics lammps computational-chemistry molecule kokkos material-science
Last synced: 6 months ago · JSON representation

Repository

i-PI: a universal force engine

Basic Info
  • Host: GitHub
  • Owner: i-pi
  • Language: Python
  • Default Branch: main
  • Homepage: https://ipi-code.org/
  • Size: 24.4 MB
Statistics
  • Stars: 268
  • Watchers: 14
  • Forks: 129
  • Open Issues: 14
  • Releases: 17
Created over 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License

README.md

i-PI: a Universal Force Engine

A Python interface for ab initio path integral molecular dynamics simulations (and more). i-PI is a Python server (that does not need to be compiled and only requires a relatively recent version of Python and Numpy) that applies an algorithm to update the positions of the nuclei. One of many compatible external codes acts as client, and computes the electronic energy and forces.

This is typically a patched version of an electronic structure code, but a simple self-contained Fortran driver that implements several simple interatomic potentials is included for test purposes.

i-PI was originally developed to simulate the quantum mechanical nature of light nuclei by performing path integral molecular dynamics simulations, and it implements most of the state-of-the-art methods to accelerate this kind of calculations. It has since grown to also provide all sorts of simulation strategies, from replica exchange to geometry optimization.

If you use i-PI in your research, please cite the accompanying publication: for version 3, the relevant paper is Litman et al., J. Chem. Phys. 161, 062504 (2024)

@article{litman2024ipi, title={i-PI 3.0: a flexible and efficient framework for advanced atomistic simulations}, author={Yair Litman and Venkat Kapil and Yotam M. Y. Feldman and Davide Tisi and Tomislav Begušić and Karen Fidanyan and Guillaume Fraux and Jacob Higer and Matthias Kellner and Tao E. Li and Eszter S. Pós and Elia Stocco and George Trenins and Barak Hirshberg and Mariana Rossi and Michele Ceriotti}, journal = {J. Chem. Phys.}, pages = {062505}, volume = {161}, year = {2024} }

Quick Setup

To use i-PI with an existing driver, install and update using pip:

Last version:

bash python -m pip install git+https://github.com/i-pi/i-pi.git

Last Release:

bash pip install -U ipi

Documentation

You can find the online documentation at https://docs.ipi-code.org. Alternatively, you can build it locally by following instructions in the docs/README.md file.

Source installation

To develop i-PI or test it with the self-contained driver, follow these instructions. It is assumed that i-PI will be run from a Linux environment, with a recent version of Python, Numpy and gfortran, and that the terminal is initially in the i-pi package directory (the directory containing this file), which you can obtain by cloning the repository

bash git clone https://github.com/i-pi/i-pi.git

Source the environment settings file env.sh as source env.sh or . env.sh. It is useful to put this in your .bashrc or other settings file if you always want to have i-PI available.

Compile the driver code

The built-in driver requires a FORTRAN compiler, and can be built as

bash cd drivers/f90 make cd ../..

There is also a Python driver available in drivers/py, which however has limited functionalities.

Examples and demos

The examples and demos folders contain inputs for many different types of calculations based on i-PI. Examples are typically minimal use-cases of specific features, while demos are more structured, tutorial-like examples that show how to realize more complex setups, and also provide a brief discussion of the underlying algorithms.

To run these examples, you should typically start i-PI, redirecting the output to a log file, and then run a couple of instances of the driver code. The progress of the wrapper is followed by monitoring the log file with the tail Linux command.

Optionally, you can make a copy of the directory with the example somewhere else if you want to keep the i-PI directory clean. For example, after sourcing the env.sh file,

bash cd demos/para-h2-tutorial/tutorial-1/ i-pi tutorial-1.xml > log & i-pi-driver -a localhost -p 31415 -m sg -o 15 & i-pi-driver -a localhost -p 31415 -m sg -o 15 & tail -f log

The monitoring can be interrupted with CTRL+C when the run has finished (5000 steps).

Tutorials and online resources

The i-PI documentation has a list of available tutorials, recipes and other useful online resources.

Run the automatic test suite

The automatic test suite can be run by calling the i-pi-tests script. You need to have the pytest package installed

i-pi-tests

You may also need to install some dependencies, listed in requirements.txt.

See more details in the README file inside the ipi_tests folder.

Contributing

If you have new features you want to implement into i-PI, your contributions are much welcome. See CONTRIBUTING.md for a brief set of style guidelines and best practices. Before embarking into a substantial project, it might be good to get in touch with the developers, e.g. by opening a wishlist issue.

Owner

  • Name: i-PI
  • Login: i-pi
  • Kind: organization

Development and distribution of i-PI

GitHub Events

Total
  • Create event: 29
  • Release event: 8
  • Issues event: 39
  • Watch event: 42
  • Delete event: 12
  • Issue comment event: 205
  • Push event: 175
  • Pull request review comment event: 67
  • Pull request review event: 118
  • Pull request event: 109
  • Fork event: 12
Last Year
  • Create event: 29
  • Release event: 8
  • Issues event: 39
  • Watch event: 42
  • Delete event: 12
  • Issue comment event: 205
  • Push event: 175
  • Pull request review comment event: 67
  • Pull request review event: 118
  • Pull request event: 109
  • Fork event: 12

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 978
  • Total Committers: 55
  • Avg Commits per committer: 17.782
  • Development Distribution Score (DDS): 0.822
Past Year
  • Commits: 57
  • Committers: 14
  • Avg Commits per committer: 4.071
  • Development Distribution Score (DDS): 0.789
Top Committers
Name Email Commits
Yair Litman y****n@g****m 174
Eszter Sarolta Pos e****s@g****m 173
Venkat Kapil v****l@g****m 109
Michele Ceriotti m****i@g****m 100
Karen Fidanyan f****n@f****e 54
Michele Ceriotti c****m 45
Mariana Rossi m****i@g****m 38
Barak Hirshberg h****b@c****t 32
Karen Fidanyan k****n@m****e 26
Michele Ceriotti m****t@e****h 22
Mariana Rossi m****i@c****k 17
Mariana Rossi m****i@m****e 17
Matthias Ernst Sachs m****s@d****u 14
Mariana Rossi r****i@f****e 14
George Trenins g****7@c****k 12
GY Liu l****o@o****m 11
Michele Ceriotti m****i@e****h 10
Ondrej Marsalek o****k@g****m 9
Eszter Sarolta Pos e****s@c****r 9
stur86 s****o@g****m 9
Mariana Rossi r****i@t****x 7
Tao Li t****i@s****u 6
Michael Willatt m****t@e****h 6
Luthaf l****f@l****r 5
Jan Hermann d****v@j****e 5
glensk a****k@g****m 4
robinzyb 3****b 4
Karen Fidanyan f****s@g****m 3
Taylor-96 t****7@g****m 3
Mariana Rossi r****i@v****e 3
and 25 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 80
  • Total pull requests: 275
  • Average time to close issues: 7 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 45
  • Total pull request authors: 35
  • Average comments per issue: 3.76
  • Average comments per pull request: 2.56
  • Merged pull requests: 226
  • Bot issues: 0
  • Bot pull requests: 3
Past Year
  • Issues: 24
  • Pull requests: 117
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 14 days
  • Issue authors: 15
  • Pull request authors: 15
  • Average comments per issue: 2.5
  • Average comments per pull request: 1.76
  • Merged pull requests: 87
  • Bot issues: 0
  • Bot pull requests: 3
Top Authors
Issue Authors
  • litman90 (10)
  • svandenhaute (6)
  • 1597446909 (5)
  • ceriottm (4)
  • Phyzch (3)
  • mahrossi (3)
  • wxwth (3)
  • weotao (3)
  • yunjian-hash (2)
  • ShubhangG (2)
  • venkatkapil24 (2)
  • sirmarcel (2)
  • Chenghao-Wu (2)
  • jorgecastro316 (2)
  • Satinelamp (2)
Pull Request Authors
  • ceriottm (147)
  • mahrossi (34)
  • EliaStocco (33)
  • litman90 (28)
  • venkatkapil24 (15)
  • frostedoyster (14)
  • Luthaf (10)
  • fidanyan (9)
  • yotamfe (9)
  • sirmarcel (7)
  • V-Alizade (5)
  • dependabot[bot] (4)
  • janberges (4)
  • tbegusic (3)
  • armaet (3)
Top Labels
Issue Labels
enhancement (4) good first issue (2)
Pull Request Labels
dependencies (4) github_actions (2) python (2)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 6,073 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 13
  • Total maintainers: 2
pypi.org: ipi

A Python interface for ab initio path integral molecular dynamics simulations

  • Versions: 12
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 6,073 Last month
Rankings
Forks count: 4.6%
Stargazers count: 5.2%
Dependent packages count: 10.1%
Average: 21.8%
Dependent repos count: 67.3%
Maintainers (2)
Last synced: 6 months ago
conda-forge.org: i-pi

i-PI is a universal force engine interface written in Python, designed to be used together with an ab-initio (or force-field based) evaluation of the interactions between the atoms. The main goal is to decouple the problem of evolving the ionic positions to sample the appropriate thermodynamic ensemble and the problem of computing the inter-atomic forces.

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 19.4%
Stargazers count: 29.0%
Average: 33.4%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

.github/workflows/documentation.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • peaceiris/actions-gh-pages v3 composite
.github/workflows/examples.yml actions
  • actions/checkout v2 composite
  • s-weigand/setup-conda v1 composite
.github/workflows/lint.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • psf/black stable composite
  • rbialon/flake8-annotations v1 composite
.github/workflows/unit_and_regtest.yml actions
  • actions/checkout v2 composite
  • s-weigand/setup-conda v1 composite
requirements.txt pypi
  • black >=23.1
  • blas =
  • coverage *
  • flake8 >=3.8.4
  • mkl *
  • mock *
  • numpy *
  • pathlib *
  • pytest *
  • pytest-cov *
  • pytest-mock *
pyproject.toml pypi
setup.py pypi
.github/workflows/release-pypi.yml actions
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite
  • sigstore/gh-action-sigstore-python v1.2.3 composite
docs/requirements.txt pypi
  • jinja2 <3.1
  • numpy *
  • pathlib *
  • sphinx >=3.2
  • sphinxcontrib-bibtex ==2.1.4
demos/ensemble-deltamu/requirements.txt pypi
  • ase ==3.22.1
  • pytorch-lightning ==2.0.8
  • wandb ==0.15.10
ipi/utils/setup.py pypi