Skip to content

Welcome!


Before you begin

This website is your go-to resource for all our tutorials and guides. Before diving in, you might want to explore:

What is Simmate?

Simmate, or the Simulated Materials Ecosystem, is a comprehensive toolbox and framework designed for computational materials research. It allows you to explore various crystal databases, predict new materials, and easily calculate properties such as electronic, elastic, thermodynamic, and more.

Computational research can be intimidating because there are so many programs to choose from, and it's challenging to select and combine them for your specific project. Simmate is designed to bridge this gap, acting as the link between these diverse programs, databases, and utilities. We take on the heavy lifting and teach you these programs along the way.

We also provide an extremely powerful toolbox and API for experts. Those familiar with the field can view Simmate as an alternative to the Materials Project stack (Atomate, PyMatGen, MatMiner, and more), where we operate under a different coding philosophy. Our top priorities are usability and readability. We therefore distribute Simmate as an "all-in-one" package, including a core material science toolkit, workflow management, database ORM, and a website interface. To learn more about the design choices in Simmate compared to other codes, visit our comparisons page.

A Sneak-Peak of Features

Prebuilt Workflows

Simmate comes with ready-to-use workflows for most common material properties, ranging from simple XRD pattern prediction to intensive dynamic simulations. All workflows can be submitted via a website user-interface, the command-line, or custom python scripts:

# in example.yaml
workflow_name: relaxation.vasp.matproj
structure: NaCl.cif
command: mpirun -n 8 vasp_std > vasp.out
simmate workflows run example.yaml
simmate workflows run-quick relaxation.vasp.matproj --structure NaCl.cif
# in example.toml
workflow_name = "relaxation.vasp.matproj"
structure = "NaCl.cif"
command = "mpirun -n 8 vasp_std > vasp.out"
simmate workflows run example.toml
from simmate.workflows.utilities import get_workflow

workflow = get_workflow("relaxation.vasp.matproj")
status = workflow.run(structure="NaCl.cif")
result = status.result()
https://simmate.org/workflows/static-energy/vasp/matproj/submit

Scalable Workflows

Simmate adjusts to your project's scale, whether on a single computer or across thousands of machines. It supports various settings, including university clusters with SLURM or PBS, and cloud platforms using Kubernetes and Docker.

from simmate.engine import workflow

@workflow
def hello(name, **kwargs):  # (1)
    print(f"Hello {name}!")
    print(f"Extra parameters configured for you: {kwargs}")
  1. We always use **kwargs because Simmate automatically provides extra variables at runtime, such as run_id and directory.
state = workflow.run_cloud(structure="NaCl.cif")  # (1)
result = state.result()  # (2)
  1. On your local computer, schedule your workflow run. This is as easy as replacing "run" with "run_cloud". This returns a "future-like" object.
  2. Calling result will wait until the job completes and grab the result! Note, the job won't run until you start a worker that is connected to the same database
simmate engine start-worker  # (1)
  1. In a separate terminal or even on a remote HPC cluster, you can start a worker that will start running any scheduled jobs

Full-Feature Database

Simmate's database manages your private data while also integrating with third-party databases such as COD, Materials Project, JARVIS, and others. It automatically constructs tables with common data types by including a wide range of standard columns. You can then access this data through a web interface, REST API, SQL, or Python ORM:

from simmate.database import connect # (1)
from simmate.database.third_parties import MatprojStructure

# Query the database
structures = MatprojStructure.objects.filter(  # (2)
    nsites__gte=3,
    energy__isnull=False,
    density__range=(1,5),
    elements__icontains='"C"',
    spacegroup__number=167,
).all()

# Convert to excel, a pandas dataframe, toolkit structures, etc.
df = structures.to_dataframe()
structures = structures.to_toolkit()
  1. Follow the database tutorial to build our initial database with the command simmate database reset
  2. This filter retrieves structures with: greater or equal to 3 sites, an energy value, density between 1 and 5, the element Carbon, and spacegroup number 167
SELECT *
FROM data_explorer_matprojstructure
WHERE nsites >= 3
  AND energy IS NOT NULL
  AND density BETWEEN 1 AND 5
  AND elements ILIKE '%"C"%'
  AND spacegroup_number = 167;
https://simmate.org/third-parties/MatprojStructure/?format=api
https://simmate.org/third-parties/MatprojStructure/

Need help?

Post your questions and feedback in our discussion section.