Skip to main content

Enhance ASE for high-throughput DFT

Project description

QuAcc (🚧 Under Construction 🚧)

example workflow codecov CodeFactor This project supports Python 3.10 Pypi

The Quantum Accelerator (QuAcc) supercharges your code to support high-throughput, database-driven computational materials science and quantum chemistry. Primarily, QuAcc seeks to enable a seamless interface between the Atomic Simulation Environment (ASE) and Jobflow for rapid workflow development and prototyping.

This package is heavily inspired by Atomate2, which I also recommend checking out.

Warning: Currently, this package should be considered highly experimental.

Example: EMT + VASP Flow

from ase.build import bulk
from jobflow import Flow
from jobflow.managers.local import run_locally

from quacc.recipes.emt.core import RelaxMaker as EMTRelaxMaker
from quacc.recipes.vasp.core import RelaxMaker as VaspRelaxMaker

# Make a bulk Cu structure
atoms = bulk("Cu")

# Make a flow consisting of an EMT relaxation followed by a VASP relaxation.
# By default, VASP will be run using Custodian for on-the-fly error handling.
job1 = EMTRelaxMaker().make(atoms)
job2 = VaspRelaxMaker(preset="BulkRelaxSet").make(job1.output["atoms"])

flow = Flow([job1, job2])

# Run the flow locally, with all output data stored in a convenient schema
responses = run_locally(flow, create_folders=True)

Example: GFN2-xTB + Gaussian + ORCA Flow with FireWorks

from ase.build import molecule
from fireworks import LaunchPad
from jobflow import Flow
from jobflow.managers.fireworks import flow_to_workflow

from quacc.recipes.xtb.core import RelaxMaker as XTBRelaxMaker
from quacc.recipes.gaussian.core import RelaxMaker as GaussianRelaxMaker
from quacc.recipes.orca.core import StaticMaker as OrcaStaticMaker

# Make an H2 molecule
atoms = molecule("H2")

# Make a flow consisting of a GFN2-xTB relaxation followed by a Gaussian relaxation
# and then an ORCA static calculation
job1 = XTBRelaxMaker(method="GFN2-xTB").make(atoms)
job2 = GaussianRelaxMaker(xc="PBE").make(job1.output["atoms"])
job3 = OrcaStaticMaker(xc="wB97M-V").make(job2.output["atoms"])

flow = Flow([job1, job2, job3])

# Convert the flow to a FireWorks workflow and add it to the launchpad.
# Database-friendly results will be deposited in your JobFlow DB
wf = flow_to_workflow(flow)
lpad = LaunchPad.auto_load()
lpad.add_wf(wf)

Installation

  1. Run the following command, ideally in a fresh Python 3.10+ environment: pip install quacc. For the most recent development version, instead run pip install git+https://github.com/arosen93/quacc.git.

  2. Follow the instructions in ASE's documentation for how to set up the ASE calculator(s) you plan to use.

  3. Define the following environment variables (e.g. in your ~/.bashrc) to use Jobflow and Fireworks, in addition to any that you have set in Step 2. Example .yaml files are provided here.

# Jobflow requirements
# (details: https://materialsproject.github.io/jobflow/jobflow.settings.html)
export JOBFLOW_CONFIG_FILE="/path/to/config/jobflow_config/jobflow.yaml"

# FireWorks requirements
# (details: https://materialsproject.github.io/fireworks)
export FW_CONFIG_FILE='/path/to/config/fw_config/FW_config.yaml'

License

QuAcc is released under a modified BSD license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quacc-0.0.2.tar.gz (2.1 MB view hashes)

Uploaded Source

Built Distribution

quacc-0.0.2-py3-none-any.whl (2.2 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page