Into to GRiTS¶
import mbuild as mb
import numpy as np
from grits import backmap
from grits import CG_Compound
Coarse-graining¶
A CG_Compound is created using an mbuild.Compound and a
dictionary of the form {"bead name": "bead SMARTS"}.
SMILES/SMARTS strings are ways of specifying chemical information in a string format. GRiTS uses openbabel for SMARTS matching and RDKit for loading SMILES representations.
The CG_Compound class is built on the mbuild.Compound class
(more about mBuild) but has
some extra feautures which make it convenient for coarse grain
structures.
First we’ll load a 3-hexylthiophene polymer
(P3HT) into an
mbuild.Compound and define a color dictionary. (The color
definitions are unnecessary but helpful for distinguishing the
coarse-grained beads during visualization.)
p3ht = mb.load("../grits/tests/assets/P3HT_16.mol2")
p3ht_colors = {"_B": "blue", "_S": "orange"}
In the example below, the cg_beads dictionary specifies a thiophene
ring to be mapped to a "_B" bead (B for backbone!) with the string
"c1sccc1" and three alkyl carbons to be mapped to an "_S" bead
(S for sidechain!) with the string "CCC".
And that’s all you need to create a CG_Compound! All the information
for bonding and backmapping is inferred during initialization.
cg_beads = {"_B": "c1sccc1", "_S": "CCC"}
cg_p3ht = CG_Compound(p3ht, cg_beads)
cg_p3ht.visualize(color_scheme=p3ht_colors, show_atomistic=True).show()
cg_p3ht.visualize(color_scheme=p3ht_colors).show()
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
Backmapping¶
Finally, after using a CG_compound model for a simulation, we may
want to retrieve the atomistic structure. For this we can use the
backmap function. A CG_Compound keeps track of the bonding and
anchors during initialization and uses these to recreate the atomistic
positions and bonds.
fine_grained = backmap(cg_p3ht)
fine_grained.visualize().show()
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol