BESMARTS

BESMARTS: A toolkit for data-driven force field design using binary-encoded SMARTS - Published in JOSS (2025)

https://github.com/trevorgokey/besmarts

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 3 DOI reference(s) in README and JOSS metadata
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

cheminformatics forcefields smarts
Last synced: 6 months ago · JSON representation

Repository

A toolkit for data-driven force field design based on binary-encoded SMARTS

Basic Info
Statistics
  • Stars: 5
  • Watchers: 2
  • Forks: 3
  • Open Issues: 3
  • Releases: 0
Topics
cheminformatics forcefields smarts
Created almost 3 years ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License

README.md

BESMARTS

A toolkit for data-driven force field design based on binary-encoded SMARTS

Highlights of this package are:

  • Map and perform bitwise operations between two molecular substructures of arbitrary size
  • Search/iterate a substructure at the SMARTS-primitive level, using both numerical and analytic approaches
  • Cluster molecular data by SMARTS using a SMARTS hierarchy
  • Calculate energy and gradients using a classical force field based on (a basic implementation of) the SMIRNOFF format
  • Geometry optimization
  • Force field parameter optimization (under development)

See the ChemRxiv preprint for the theoretical unpinnings on which this package is based.

Installation

BESMARTS is on PyPI, but certain dependencies are not and only exist on conda unless they are built from source. Currently, the best way to install all functionality is to use conda to create a python environment with Ambertools: conda create -n besmarts -c conda-forge python ambertools conda activate besmarts

and then install BESMARTS via pip:

pip install 'besmarts[rdkit,scipy,openmm]'

For a more custom installation, one can install from git. If ambertools is not needed, one may set up an environment via ``` python -m venv besmarts . besmarts/bin/activate

```

followed by the actual install in develop mode:

git clone https://github.com/trevorgokey/besmarts besmarts-git cd besmarts-git/besmarts-core/python python -m pip install -e . cd ../../besmarts-rdkit/python python -m pip install -e . cd ../../besmarts-mechanics/python python -m pip install -e . cd ../../besmarts-openmm/python python -m pip install -e . cd ../../besmarts-scipy/python python -m pip install -e .

RDKit is needed to decode SMILES into graphs and offers a faster implementation of SMARTS matching when labeling from a SMARTS hierarchy.

Geometry optimization uses the SciPy minimizer and can be installed using a similar process as above with besmarts-scipy. There is also an interface to OpenMM and its molecule energy minimizer can be used instead after installing besmarts-openmm. The OpenMM plugin is quite a bit faster and is recommended if large or heavily numerical computations are needed. The native interface to calculating energies and gradients is useful if novel functional forms are needed and not in standard packages (e.g. OpenMM). We recommend using OpenMM if it is supported and available on your system. The energies, hessians, and gradients compared between the native and OpenMM implementations are nearly exact; for energy/gradient down to 12 decimal places for linear terms, around 6 places for torsions, and between 4-12 places for Hessians. Included in the native implementation is a very fast analytic MM hessian method that can produce the entire matrix in the time it takes OpenMM to evalulate a single energy.

Molecular mechanics energy and gradient evaluations are implemented, but require partial charges. By default, besmarts will try to charge molecules with am1bcc using the sqm program from ambertools suite. Consequently, make sure sqm is in your PATH by installing via conda or by other means.

Documentation

Documentation in this repository is hosted on RTD

Contributing

Contributions in the form of bug reports, enhancements, and general discussions are very welcome. See CONTRIBUTING.md for more details.

Owner

  • Login: trevorgokey
  • Kind: user

JOSS Publication

BESMARTS: A toolkit for data-driven force field design using binary-encoded SMARTS
Published
May 09, 2025
Volume 10, Issue 109, Page 6653
Authors
Trevor Gokey ORCID
Department of Chemistry, University of California, Irvine, United States of America
Editor
Lucy Whalley ORCID
Tags
cheminformatics graphs forcefields

GitHub Events

Total
  • Issues event: 2
  • Watch event: 2
  • Issue comment event: 3
  • Push event: 24
  • Pull request event: 1
  • Fork event: 1
  • Create event: 2
Last Year
  • Issues event: 2
  • Watch event: 2
  • Issue comment event: 3
  • Push event: 24
  • Pull request event: 1
  • Fork event: 1
  • Create event: 2

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 2
  • Total pull requests: 4
  • Average time to close issues: 10 months
  • Average time to close pull requests: N/A
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 3.0
  • Average comments per pull request: 0.75
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 3.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Yoshanuikabundi (1)
  • AntObi (1)
Pull Request Authors
  • Yoshanuikabundi (2)
  • lilyminium (2)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 5
  • Total downloads:
    • pypi 126 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 6
  • Total maintainers: 1
pypi.org: besmarts-scipy

BESMARTS SciPy plugin

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 21 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.6%
Dependent repos count: 53.7%
Maintainers (1)
Last synced: 6 months ago
pypi.org: besmarts-mechanics

BESMARTS molecular mechanics force field fitting

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 28 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.6%
Dependent repos count: 53.7%
Maintainers (1)
Last synced: 6 months ago
pypi.org: besmarts

Binary Encoded SMARTS

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 40 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.6%
Dependent repos count: 53.7%
Maintainers (1)
Last synced: 6 months ago
pypi.org: besmarts-openmm

BESMARTS OpenMM plugin

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 18 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.6%
Dependent repos count: 53.7%
Maintainers (1)
Last synced: 6 months ago
pypi.org: besmarts-rdkit

BESMARTS RDKit plugin

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 19 Last month
Rankings
Dependent packages count: 9.5%
Average: 31.6%
Dependent repos count: 53.7%
Maintainers (1)
Last synced: 6 months ago

Dependencies

besmarts-core/python/setup.py pypi
besmarts-rdkit/python/setup.py pypi
besmarts-scipy/python/setup.py pypi