Skip to content

openforcefield/openff-fragmenter

Repository files navigation

Fragmenter

Test Status Documentation Status codecov License: MIT Software DOI Paper DOI

A package for fragmenting molecules for quantum mechanics torsion scans.

More information about using this package and its features can be found in the documentation.

Warning: This code is currently experimental and under active development. If you are using this code, be aware that it is not guaranteed to provide the correct results, and the API can change without notice.

Installation

The package and its dependencies can be installed using the conda package manager:

conda install -c conda-forge openff-fragmenter

Getting Started

We recommend viewing the getting started example in a Jupyter notebook. This full example can be found here.

Here will will show how a drug-like molecule can be fragmented using this framework, and how those fragments can be easily visualised using its built-in helper utilities.

To begin with we load in the molecule to be fragmented. Here we load Cobimetinib directly using its SMILES representation using the Open Force Field toolkit:

from openff.toolkit.topology import Molecule

parent_molecule = Molecule.from_smiles(
    "OC1(CN(C1)C(=O)C1=C(NC2=C(F)C=C(I)C=C2)C(F)=C(F)C=C1)[C@@H]1CCCCN1"
)

Next we create the fragmentation engine which will perform the actual fragmentation. Here we will use the recommended WBOFragmenter with default options:

from openff.fragmenter.fragment import WBOFragmenter

frag_engine = WBOFragmenter()
# Export the engine's settings directly to JSON
frag_engine.json()

Use the engine to fragment the molecule:

result = frag_engine.fragment(parent_molecule)
# Export the result directly to JSON
result.json()

Any generated fragments will be returned in a FragmentationResult object. We can loop over each of the generated fragments and print both the SMILES representation of the fragment as well as the map indices of the bond that the fragment was built around:

for fragment in result.fragments:
    print(f"{fragment.bond_indices}: {fragment.smiles}")

Finally, we can visualize the produced fragments:

from openff.fragmenter.depiction import depict_fragmentation_result

depict_fragmentation_result(result=result, output_file="example_fragments.html")

Copyright

Copyright (c) 2018, Chaya D. Stern

Acknowledgements

Project based on the Computational Molecular Science Python Cookiecutter version 1.5.