• Stars
    star
    313
  • Rank 133,714 (Top 3 %)
  • Language
    Python
  • License
    MIT License
  • Created over 7 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Open Forcefield Toolkit provides implementations of the SMIRNOFF format, parameterization engine, and other tools. Documentation available at http://open-forcefield-toolkit.readthedocs.io
Status GH Actions Status Codecov coverage
Latest Release Last release tag Commits since release DOI
Communication docs stable user & dev discussions
Foundation license platforms python Funding
Installation Releases Conda Last updated Anaconda Cloud downloads

The Open Force Field toolkit

The Open Force Field Toolkit, built by the Open Force Field Initiative, is a Python toolkit for the development and application of modern molecular mechanics force fields based on direct chemical perception and rigorous statistical parameterization methods.

The toolkit currently covers two main areas we have committed to stably maintain throughout their lifetimes:

Note: Prior to version 0.9.0, this toolkit and its associated repository were named openforcefield and used different import paths. For details on this change and migration instructions, see the release notes of version 0.9.0.

Documentation

Documentation for the Open Force Field Toolkit is hosted at readthedocs. Example notebooks are available in the examples/ directory and also hosted on the Open Force Field website.

How to cite

Please cite the OpenFF Toolkit using the Zenodo record of the latest release or the version that was used. The BibTeX reference of the latest release can be found here.

Installation

The Open Force Field Toolkit (openff-toolkit) is a Python toolkit, and supports Python 3.9 through 3.11.

Installing via conda

Detailed installation instructions can be found here.

Force Fields

Two major force field development efforts have been undertaken by the Open Force Field Initiative, with results hosted in separate repositories.

  • The Open Force Fields repository, which features the Parsley and Sage force field lines. These are the Open Force Field Initiative's efforts toward building new force fields. The initial parameters are taken from smirnoff99Frosst, but software and data produced by the Initiative's efforts have been used to refit parameter values and add new SMIRKS-based parameters.
  • The smirnoff99Frosst repository, which is descended from AMBER's parm99 force field as well as Merck-Frosst's parm@frosst. This line of force fields does not aim to alter parameter values, but is instead a test of accurately converting an atom type-based force field to the SMIRNOFF format.

Force fields from both of these packages are available in their respective GitHub repositories and also as conda packages. Tables detailing the individual file names/versions within these force field lines are in the README of each repository. By default, installing the Open Force Field toolkit using conda or the single-file toolkit installers will also install these conda packages. A plugin architecture is provided for other force field developers to produce python/conda packages that can be imported by the Open Force Field Toolkit as well.

Toolkit features

The SMIRKS Native Open Force Field (SMIRNOFF) format

This repository provides tools for using the SMIRKS Native Open Force Field (SMIRNOFF) specification, which currently supports an XML representation for force field definition files.

By convention, files containing XML representations of SMIRNOFF force fields carry .offxml extensions.

Example SMIRNOFF .offxml force field definitions can be found in openff/toolkit/data/test_forcefields/. These force fields are for testing only, and we neither record versions of these files, nor do we guarantee their correctness or completeness.

Working with SMIRNOFF parameter sets

SMIRNOFF force fields can be parsed by the ForceField class, which offers methods including create_openmm_system for exporting to OpenMM and create_interchange for exporting to other formats (GROMACS, Amber, LAMMPS) via Interchange.

# Load a molecule into the OpenFF Molecule object
from openff.toolkit import Molecule
from openff.toolkit.utils import get_data_file_path
sdf_file_path = get_data_file_path('molecules/ethanol.sdf')
molecule = Molecule.from_file(sdf_file_path)

# Create an OpenFF Topology object from the molecule
from openff.toolkit import Topology
topology = Topology.from_molecules(molecule)

# Load the latest OpenFF force field release: version 2.1.0, codename "Sage"
from openff.toolkit import ForceField
forcefield = ForceField('openff-2.1.0.offxml')

# Create an OpenMM system representing the molecule with SMIRNOFF-applied parameters
openmm_system = forcefield.create_openmm_system(topology)

# Create an Interchange object for representations in other formats
interchange = forcefield.create_interchange(topology)

Detailed examples of using SMIRNOFF with the toolkit can be found in the documentation.

Frequently asked questions (FAQ)

See FAQ.md for answers to a variety of common problems, such as:

  • Why do I need to provide molecules corresponding to the components of my system, or a Topology with bond orders?
  • Can I use an Amber, CHARMM, or GROMACS topology/coordinate file as a starting point for applying a SMIRNOFF force field?
  • What if I am starting from a PDB file?

Contributors

For a partial list of contributors, see the GitHub Contributors page. Others whose work constitutes significant contributions but did not make it into the git history include Shuzhe Wang.

More Repositories

1

protein-ligand-benchmark

Protein-Ligand Benchmark Dataset for Free Energy Calculations
Python
144
star
2

openff-forcefields

Force fields produced by the Open Force Field Initiative
Python
131
star
3

openff-interchange

A project (and object) for storing, manipulating, and converting molecular mechanics data.
Python
69
star
4

openff-evaluator

A physical property evaluation toolkit from the Open Forcefield Consortium.
Python
54
star
5

openff-bespokefit

Automated tools for the generation of bespoke SMIRNOFF format parameters for individual molecules.
Python
42
star
6

openff-fragmenter

Fragment molecules for quantum mechanics torsion scans
Python
41
star
7

qca-dataset-submission

Data generation and submission scripts for the QCArchive ecosystem.
Jupyter Notebook
31
star
8

smirnoff99Frosst

A general small molecule force field descended from AMBER99 and parm@Frosst, available in the SMIRNOFF format
Python
28
star
9

openff-qcsubmit

Automated tools for submitting molecules to QCFractal
Python
26
star
10

cmiles

Generate canonical molecule identifiers for quantum chemistry database
Jupyter Notebook
23
star
11

alchemiscale

a high-throughput alchemical free energy execution system for use with HPC, cloud, bare metal, and Folding@Home
Python
23
star
12

openff-recharge

An automated framework for generating optimized partial charges for molecules
Python
20
star
13

smarty

Chemical perception tree automated exploration tool.
Python
19
star
14

openff-sage

Scripts, inputs and the results generated as part of the training the Sage line of OpenFF force fields.
Python
19
star
15

protein-ligand-benchmark-livecoms

Jupyter Notebook
17
star
16

open-forcefield-group

For discussing and aggregating data for force field development
Python
14
star
17

openff-nagl

OpenFF NAGL
Python
12
star
18

open-forcefield-data

Datasets for open forcefield parameterization and development
Jupyter Notebook
11
star
19

openforcefield-forcebalance

Optimization of OpenFF parameters using ForceBalance and QCArchive
Python
11
star
20

openff-benchmark

Comparison benchmarks between public force fields and Open Force Field Initiative force fields
Python
10
star
21

openff-units

A common units module for the OpenFF software stack
Python
8
star
22

open-forcefield-tools

Tools for open forcefield development
Python
8
star
23

openff-arsenic

Package for consistent reporting of relative free energy results
Jupyter Notebook
8
star
24

polymer_examples

Example polymers for testing.
Jupyter Notebook
7
star
25

openforcefield.org

Hugo website source for openforcefield.org
JavaScript
7
star
26

smirnoff-plugins

Plugins to enable using custom functional forms in SMIRNOFF based force fields
Python
6
star
27

2021-bespokefit-workshop

Jupyter Notebook
6
star
28

MiniDrugBank

A repository to track the creation and evolution of the MiniDrugBank Molecule set
Jupyter Notebook
6
star
29

bayes-implicit-solvent

experiments with Bayesian calibration of implicit solvent models
Jupyter Notebook
6
star
30

release-1-benchmarking

Benchmarking relating to OpenFF release 1.0 (currently OpenFF 1.0 pre-release), Parsley.
Jupyter Notebook
6
star
31

status

Assorted maintenance tools within the Open Force Field software stack
5
star
32

proteinbenchmark

Benchmarks for OpenFF protein force fields
Python
4
star
33

nistdataselection

Records the tools and decisions used to select NIST data for curation.
Python
3
star
34

openff-models

Helper classes for Pydantic compatibility in the OpenFF stack
Python
3
star
35

openff-sphinx-theme

A material-based, responsive theme inspired by mkdocs-material
Sass
3
star
36

yammbs

Internal tool for benchmarking force fields
Python
3
star
37

CMILES-Cloud

CMILES, but in the cloud.
Python
2
star
38

openff-amber-ff-ports

Data repository for distributing Amber force fields in the SMIRNOFF format
Python
2
star
39

alchemiscale-fah

protocols and compute service for using alchemiscale with Folding@Home
Python
2
star
40

amber-ff-porting

Scratch space for porting amber FFs into SMIRNOFF format
Jupyter Notebook
1
star
41

standards

A repository of the standards employed across the Open Force Field Consortium.
1
star
42

best-practices-observables

Best practices for calculating observables via simulation
TeX
1
star
43

cheminformatics-toolkit-equivalence

Resources for benchmarking cheminformatics toolkits for equivalent molecule processing behavior
Jupyter Notebook
1
star
44

dangerbot

A bot that applies OpenFF software best practices
Ruby
1
star
45

qca-dataset-submission-next-test

Jupyter Notebook
1
star
46

toolkit-installer-constructor

Recipe for making single-file installers of the Open Force Field toolkit
Python
1
star
47

openff-reference

(EXPERIMENTAL) Distributing reference energies for SMIRNOFF implementations
Python
1
star
48

openff-nagl-models

This repository contains NAGL models released by the Open Force Field Initiative. They are intended to be used by OpenFF NAGL.
Python
1
star