ASIMTools

ASIMTools: A lightweight framework for scalable and reproducible atomic simulations - Published in JOSS (2024)

https://github.com/battmodels/asimtools

Science Score: 67.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 3 DOI reference(s) in README
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    5 of 11 committers (45.5%) from academic institutions
  • Institutional organization owner
    Organization battmodels has institutional domain (andrew.cmu.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.2%) to scientific vocabulary

Scientific Fields

Psychology Social Sciences - 40% confidence
Last synced: 4 months ago · JSON representation

Repository

Optimized workflow management and script handling for atomistic simulations

Basic Info
  • Host: GitHub
  • Owner: BattModels
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 16.6 MB
Statistics
  • Stars: 4
  • Watchers: 2
  • Forks: 1
  • Open Issues: 7
  • Releases: 3
Created over 2 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License

README.md

Documentation | GitHub

Atomic SIMulation Tools

This package is a lightweight workflow and simulation manager for reproducible atomistic simulations that can be transferred across environments, calculators and structures on Unix systems. By using in-built or user-defined asimmodules and utilities, users can run/build their own simulation recipes and automagically scale them locally or on slurm based clusters. The core idea is to separate the dependence of the atomistic potential/calculator and the simulations steps thereby allowing the same simulation to be run with multiple calculators/codes and the same calculator to be used for multiple simulation parameters without altering simulation code. Input and output files follow a simple consistent file structure and format so that consistent analysis pipelines can be used across users. For a concrete example of how ASIMTools achieves this, see the Developing Custom Asimmodules page.

Developer philosophy

The goal of asimtools is to push all the complexity of workflow management, best-practices, file management etc. into the backend such that the everyday user only has to handle input files for existing workflows and asimmodule files for workflows they want to implement.This allows the user to focus on doing the science and designing experiments. The following are the guiding principles for how asimtools should work:

  • Asimmodules should resemble boilerplate ASE code as much as possible.
  • Asimmodules should avoid explicitly depending on a calculator
  • Asimmodules should not explicitly depend on the context/environment in which they run
  • It should be easy to debug individual asimmodules/parts in large workflows. In addition, it should always be possible to debug/resubmit jobs without using asimtools.
  • Input file structure and format should be standard across all asimmodules. In addition all input parameters should match how they would like without asimtools i.e. do not provide an API!
  • Job progress tracking must be incorporated for easy debugging
  • Best practices should be built-in e.g. if multiple jobs of the same slurm context are submitted simulataneously, it must be a job array.

Philosophy on User Experience

The philosophy is to build "simulations" using building blocks of asimmodules. Asimmodules are nothing but Python functions that return a dictionary, anything can be done in the function code. These asimmodules can be as complicated/efficient as you make them using any external packages you want and can be optimized with time but can still be run within the framework. This allows a test friendly way to transition from say a tutorial on the ASE/pymatgen website to an asimtools asimmodule. So while complicated wrappers are discouraged, they would still work as long as the asimmodule works. The benefit out of the box is that you can make your asimmodule independent of calculator or input structures and submit them easily.

We also aim to provide a standard set of robust and efficient simulation protocols as we develop. You can see all the implemented workflows provided with the package in the examples directory and modify them to your application. If you have suggestions for improvements in methodology or code, please bring up an issue on github!

Getting Started

These instructions will give you a copy of the project up and running.

Installing ASIMTools

If you prefer to use a conda a environment, you can create and activate one using: conda create -n asimtools python=3.9 conda activate asimtools

Then you can install asimtools either using pip or by cloning the source code from github. Note that the cloned version might have some minor bug fixes that are not included in the official PyPI release. It is also easier to go through the examples if you clone the repository.

To install the latest asimtools release from PyPI, you can simply use

pip install asimtools

To install from source use

``` git clone https://gitlab.com/ase/ase.git && cd ase pip install . cd ../

git clone https://github.com/BattModels/asimtools.git cd asimtools pip install . ```

We recommend you use the latest version of ASE since the ones on PyPI and conda are quite outdated.

git clone https://gitlab.com/ase/ase.git cd ase pip install .

You can optionally install the dependencies used for development using

pip install ".[dev]" Or install some popular Universal Machine Learning Interactomic Potentials (matgl, mace-torh, chgnet) using

pip install ".[mlip]" Making sure the correct versions and dependencies are installed correctly is probably more stable if you follow their individual installation instructions.

Other individual calculators may need external packages for running them. For example if you want to use Quantum Espresso or CASTEP, you will have to install them. Similarly some asimmodules e.g. lammps.py might also need external packages to be used. It is up to the user to make sure those are installed.

You will also need to setup some environment variables, these variables point to global env_input.yaml and calc_input.yaml files with your favorite configurations since these are commonly shared among simulations. You can also directly specify them when running asim-execute (See asim-execute -h). You can also provide a directory for ASIMTools to search for your custom asimmodules. Examples of these files can be found in the examples.

Add the following to your .bashrc export ASIMTOOLS_ENV_INPUT=/path/to/my/global/env_input.yaml export ASIMTOOLS_CALC_INPUT=/path/to/my/global/calc_input.yaml export ASIMTOOLS_ASIMMODULE_DIR=/path/to/my/asimmodule/dir

Running the tests

To run tests for the workflow tools, from the tests directory, call:

pytest

To run the test suite on a component component.py , call:

pytest test_component.py

To run all tests for the provided asimmodules, cd into the examples directory and call:

source run_all.sh

Or you can run a test for each individual example in its directory using:

source run.sh

If no errors are reported, the tests have passed. These tests simply test the functionality of the code, not the scientific validity of the simulations!

To run tests for the provided asimmodules using slurm, you can similarly run the bash scripts ending with _slurm.sh. This will submit a number of jobs, none longer than 1 minute.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License

Owner

  • Name: BatteryModels
  • Login: BattModels
  • Kind: organization
  • Email: venkvis@cmu.edu

This will consist of first-principles, multi-physics battery and electric mobility models developed in group of V. Viswanathan at Carnegie Mellon.

GitHub Events

Total
  • Create event: 4
  • Issues event: 1
  • Release event: 3
  • Watch event: 2
  • Delete event: 1
  • Issue comment event: 3
  • Push event: 64
  • Pull request event: 4
  • Fork event: 1
Last Year
  • Create event: 4
  • Issues event: 1
  • Release event: 3
  • Watch event: 2
  • Delete event: 1
  • Issue comment event: 3
  • Push event: 64
  • Pull request event: 4
  • Fork event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 256
  • Total Committers: 11
  • Avg Commits per committer: 23.273
  • Development Distribution Score (DDS): 0.063
Past Year
  • Commits: 92
  • Committers: 9
  • Avg Commits per committer: 10.222
  • Development Distribution Score (DDS): 0.098
Top Committers
Name Email Commits
mkphuthi m****i@g****m 240
emilannevelink e****k@h****m 6
Rohit Goswami r****2@h****s 2
mkphuthi k****h@K****l 1
kianpu34593 k****3 1
hancheng2000 h****0 1
Mgcini Keith Phuthi m****i@l****u 1
Mgcini Keith Phuthi m****i@l****u 1
Kian Pu k****u@l****u 1
Keith Phuthi m****i@l****u 1
Hancheng Zhao z****c@l****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 29
  • Total pull requests: 24
  • Average time to close issues: 3 months
  • Average time to close pull requests: 10 days
  • Total issue authors: 6
  • Total pull request authors: 5
  • Average comments per issue: 0.55
  • Average comments per pull request: 0.58
  • Merged pull requests: 21
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 4
  • Pull requests: 6
  • Average time to close issues: 15 days
  • Average time to close pull requests: about 2 hours
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 1.75
  • Average comments per pull request: 0.5
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mkphuthi (21)
  • imtambovtcev (2)
  • kianpu34593 (2)
  • emilannevelink (2)
  • HaoZeke (1)
  • abhishektiwari (1)
Pull Request Authors
  • mkphuthi (24)
  • hancheng2000 (4)
  • kianpu34593 (2)
  • emilannevelink (2)
  • HaoZeke (2)
Top Labels
Issue Labels
enhancement (2)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 48 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
  • Total maintainers: 1
pypi.org: asimtools

A lightweight python package for managing and running atomic simulation workflows

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 48 Last month
Rankings
Dependent packages count: 10.3%
Average: 34.1%
Dependent repos count: 58.0%
Maintainers (1)
Last synced: 4 months ago