pylattica

pylattica: a package for prototyping lattice models in chemistry and materials science - Published in JOSS (2024)

https://github.com/mcgalcode/pylattica

Science Score: 93.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 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

chemistry lattice materials-science simulation

Scientific Fields

Physics Physical Sciences - 60% confidence
Last synced: 4 months ago · JSON representation

Repository

A simple framework for prototyping lattice evolution simulations e.g. cellular automata, lattice gas simulations, lattice Monte Carlo etc.

Basic Info
Statistics
  • Stars: 10
  • Watchers: 1
  • Forks: 2
  • Open Issues: 2
  • Releases: 4
Topics
chemistry lattice materials-science simulation
Created almost 4 years ago · Last pushed 9 months ago
Metadata Files
Readme Contributing License Code of conduct

README.md

pylattica - A Framework for Lattice and Cellular Automata Simulation

GitHub Workflow Status Codecov

pylattica is a Python library for prototyping and constructing cellular automaton and lattice models. The core features of these models are:

  • There is a simulation state that evolves over time by repeatedly applying some unchanging rule
  • The state of the simulation has a topology defined by a network of sites (i.e. each site has an unchanging set of neighbor sites)
  • Each site has a state value associated with it that could change at each simulation step
  • The future state of a site is determined by the state of its neighbor sites

These rules capture many common models in chemistry and materials science. For instance, in the Ising Model, spins are updated with probabilities related to the neighboring spins. In a Lattice Gas Automaton, the velocities of particles are determined collisions with neighboring particles. In lattice Monte Carlo simulations of surface catalysis, adsorption, desorption, and surface diffusion are dependent on the occupancy of neighboring sites.

pylattica aims to provide a general framework for prototyping these types of lattice simulations. It prioritizes providing a straightforward method for experimenting with different interaction rules and interaction neighborhoods. It provides some simple utilities for analyzing simulation states, and in the case of square grid systems, it provides visualization tools for the system state itself. Additionally, since this tool is focused on materials science, there is functionality for mapping system states to CIF files (for use in crystal lattice simulations).

Installation

pylattica can be installed from the PyPi source by running:

pip install pylattica

It can also be installed by cloning this repository, then running the following in the root of the repository:

pip install .

Documentation

Detailed documentation for this library can be found here.

Jupyter Notebook Examples

Example notebooks are included in docs/guides.

Note about Windows

pylattica makes use of Python's fork functionality in the multiprocessing library. This functionality is not available on windows, so certain features (the parallel keyword for the SynchronousRunner) will not be available on Windows platforms.

Development

Installation for development

To install pylattica for development purposes, use the standard editable installation command:

pip install -e .

from the root of the repository.

Running tests

After you have installed the repository, ensure that pytest is installed, then run:

pytest

from the root of the repository.

Building Documentation

The docs for this project are built using mkdocs. To build the documentation

pip install '.[docs]' mkdocs build

To run the documentation server locally:

mkdocs serve

Linting

This project uses the black package for style and formatting, and prospector for type checking and other lint warnings. These packages are not listed as dependencies of this project, so you can install them manually. This is partially because this project doesn't rely on specific versions of them, and we expect developers to have their own installations already. You can run them as follows:

To assess the changes that will happen if you run the black linter, run the following:

black --check src

To automatically make the changes, remove the --check flag:

black src

To run all other linters with prospector, use this:

prospector

In the top of this repository.

Owner

  • Name: Max Gallant
  • Login: mcgalcode
  • Kind: user

JOSS Publication

pylattica: a package for prototyping lattice models in chemistry and materials science
Published
May 25, 2024
Volume 9, Issue 97, Page 6170
Authors
Max C. Gallant ORCID
Materials Sciences Division, Lawrence Berkeley National Laboratory, Berkeley, California, United States of America, Department of Materials Science and Engineering, University of California, Berkeley, California, United States of America
Kristin A. Persson ORCID
Materials Sciences Division, Lawrence Berkeley National Laboratory, Berkeley, California, United States of America, Department of Materials Science and Engineering, University of California, Berkeley, California, United States of America
Editor
Richard Gowers ORCID
Tags
chemistry materials science lattice models cellular automaton monte carlo

GitHub Events

Total
  • Release event: 1
  • Watch event: 1
  • Issue comment event: 1
  • Push event: 2
  • Pull request event: 2
  • Create event: 1
Last Year
  • Release event: 1
  • Watch event: 1
  • Issue comment event: 1
  • Push event: 2
  • Pull request event: 2
  • Create event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 218
  • Total Committers: 3
  • Avg Commits per committer: 72.667
  • Development Distribution Score (DDS): 0.009
Past Year
  • Commits: 4
  • Committers: 1
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Max Gallant m****2@g****m 216
Max Gallant m****t@b****s 1
Max Gallant m****t@M****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 5
  • Total pull requests: 6
  • Average time to close issues: 29 days
  • Average time to close pull requests: about 4 hours
  • Total issue authors: 4
  • Total pull request authors: 1
  • Average comments per issue: 3.8
  • Average comments per pull request: 0.67
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • amkrajewski (2)
  • mcgalcode (1)
  • xperrylinn (1)
  • RiesBen (1)
Pull Request Authors
  • mcgalcode (11)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 35 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 5
  • Total maintainers: 1
pypi.org: pylattica

pylattica is a package for fast prototyping of lattice models for chemistry and materials science

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 35 Last month
Rankings
Dependent packages count: 10.0%
Average: 38.8%
Dependent repos count: 67.7%
Maintainers (1)
Last synced: 4 months ago

Dependencies

.github/workflows/testing.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v4.3.0 composite
  • codecov/codecov-action v3.1.1 composite
pyproject.toml pypi
  • Pillow >= 9.0
  • maggma >= 0.49.5
  • matplotlib >= 3.5.1
  • monty >= 2022.9.9
  • numpy >= 1.21.5
  • plotly >= 5.6.0
  • pydantic >= 1.10.2
  • pymatgen >= 2022.3.29
  • rustworkx >= 0.12.0
  • scipy >= 1.8.0
  • tqdm >= 4.63.0