The Open Force Field Toolkit applies parameters based on the SMARTS/SMIRKS language. These examples are intended to expose how ForceField
assigns SMIRKS-based parameters to test molecules.
This example shows the parameters applied to a single molecule that is created from a SMILES string.
The first output section consists of Bond
parameters that would be assigned to the molecule. Each bond is described by the indices of the two atoms it connects, its "parameter ID", and the SMIRKS that caused it to match the target bond.
The other ParameterHandler
s print in order after that.
Note that the ToolkitAM1BCC
and Electrostatics
handlers do not assign SMIRKS-based parameters, therefore they do not print any match information.
from openff.toolkit.topology import Molecule, Topology
from openff.toolkit.typing.engines.smirnoff import ForceField
# Create a simple molecule from SMILES and turn it into a topology.
molecule = Molecule.from_smiles("C=C(N)(C)")
topology = Topology.from_molecules([molecule])
# Let's label using the Parsley force field
forcefield = ForceField("openff-1.0.0.offxml")
# Run the molecule labeling
molecule_force_list = forcefield.label_molecules(topology)
# Print out a formatted description of the parameters applied to this molecule
for mol_idx, mol_forces in enumerate(molecule_force_list):
print(f"Forces for molecule {mol_idx}")
for force_tag, force_dict in mol_forces.items():
print(f"\n{force_tag}:")
for (atom_indices, parameter) in force_dict.items():
atomstr = ""
for idx in atom_indices:
atomstr += "%3s" % idx
print(
f"atoms: {atomstr} parameter_id: {parameter.id} smirks {parameter.smirks}"
)
Forces for molecule 0 Constraints: atoms: 0 4 parameter_id: c1 smirks [#1:1]-[*:2] atoms: 0 5 parameter_id: c1 smirks [#1:1]-[*:2] atoms: 2 6 parameter_id: c1 smirks [#1:1]-[*:2] atoms: 2 7 parameter_id: c1 smirks [#1:1]-[*:2] atoms: 3 8 parameter_id: c1 smirks [#1:1]-[*:2] atoms: 3 9 parameter_id: c1 smirks [#1:1]-[*:2] atoms: 3 10 parameter_id: c1 smirks [#1:1]-[*:2] Bonds: atoms: 0 1 parameter_id: b6 smirks [#6X3:1]=[#6X3:2] atoms: 0 4 parameter_id: b84 smirks [#6X3:1]-[#1:2] atoms: 0 5 parameter_id: b84 smirks [#6X3:1]-[#1:2] atoms: 1 2 parameter_id: b8 smirks [#6X3:1]-[#7X3:2] atoms: 1 3 parameter_id: b2 smirks [#6X4:1]-[#6X3:2] atoms: 2 6 parameter_id: b86 smirks [#7:1]-[#1:2] atoms: 2 7 parameter_id: b86 smirks [#7:1]-[#1:2] atoms: 3 8 parameter_id: b83 smirks [#6X4:1]-[#1:2] atoms: 3 9 parameter_id: b83 smirks [#6X4:1]-[#1:2] atoms: 3 10 parameter_id: b83 smirks [#6X4:1]-[#1:2] Angles: atoms: 0 1 2 parameter_id: a10 smirks [*:1]~[#6X3:2]~[*:3] atoms: 0 1 3 parameter_id: a10 smirks [*:1]~[#6X3:2]~[*:3] atoms: 1 0 4 parameter_id: a11 smirks [#1:1]-[#6X3:2]~[*:3] atoms: 1 0 5 parameter_id: a11 smirks [#1:1]-[#6X3:2]~[*:3] atoms: 1 2 6 parameter_id: a20 smirks [#1:1]-[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]-[*:3] atoms: 1 2 7 parameter_id: a20 smirks [#1:1]-[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]-[*:3] atoms: 1 3 8 parameter_id: a1 smirks [*:1]~[#6X4:2]-[*:3] atoms: 1 3 9 parameter_id: a1 smirks [*:1]~[#6X4:2]-[*:3] atoms: 1 3 10 parameter_id: a1 smirks [*:1]~[#6X4:2]-[*:3] atoms: 2 1 3 parameter_id: a10 smirks [*:1]~[#6X3:2]~[*:3] atoms: 4 0 5 parameter_id: a12 smirks [#1:1]-[#6X3:2]-[#1:3] atoms: 6 2 7 parameter_id: a20 smirks [#1:1]-[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]-[*:3] atoms: 8 3 9 parameter_id: a2 smirks [#1:1]-[#6X4:2]-[#1:3] atoms: 8 3 10 parameter_id: a2 smirks [#1:1]-[#6X4:2]-[#1:3] atoms: 9 3 10 parameter_id: a2 smirks [#1:1]-[#6X4:2]-[#1:3] ProperTorsions: atoms: 0 1 2 6 parameter_id: t69 smirks [*:1]~[#7X3,#7X2-1:2]-!@[#6X3:3]~[*:4] atoms: 0 1 2 7 parameter_id: t69 smirks [*:1]~[#7X3,#7X2-1:2]-!@[#6X3:3]~[*:4] atoms: 0 1 3 8 parameter_id: t19 smirks [#1:1]-[#6X4:2]-[#6X3:3]=[#6X3:4] atoms: 0 1 3 9 parameter_id: t19 smirks [#1:1]-[#6X4:2]-[#6X3:3]=[#6X3:4] atoms: 0 1 3 10 parameter_id: t19 smirks [#1:1]-[#6X4:2]-[#6X3:3]=[#6X3:4] atoms: 2 1 0 4 parameter_id: t45 smirks [*:1]-,:[#6X3:2]=[#6X3:3]-,:[*:4] atoms: 2 1 0 5 parameter_id: t45 smirks [*:1]-,:[#6X3:2]=[#6X3:3]-,:[*:4] atoms: 2 1 3 8 parameter_id: t17 smirks [*:1]~[#6X3:2]-[#6X4:3]-[*:4] atoms: 2 1 3 9 parameter_id: t17 smirks [*:1]~[#6X3:2]-[#6X4:3]-[*:4] atoms: 2 1 3 10 parameter_id: t17 smirks [*:1]~[#6X3:2]-[#6X4:3]-[*:4] atoms: 3 1 0 4 parameter_id: t45 smirks [*:1]-,:[#6X3:2]=[#6X3:3]-,:[*:4] atoms: 3 1 0 5 parameter_id: t45 smirks [*:1]-,:[#6X3:2]=[#6X3:3]-,:[*:4] atoms: 3 1 2 6 parameter_id: t69 smirks [*:1]~[#7X3,#7X2-1:2]-!@[#6X3:3]~[*:4] atoms: 3 1 2 7 parameter_id: t69 smirks [*:1]~[#7X3,#7X2-1:2]-!@[#6X3:3]~[*:4] ImproperTorsions: atoms: 0 1 2 3 parameter_id: i1 smirks [*:1]~[#6X3:2](~[*:3])~[*:4] atoms: 1 0 4 5 parameter_id: i1 smirks [*:1]~[#6X3:2](~[*:3])~[*:4] atoms: 1 2 6 7 parameter_id: i3 smirks [*:1]~[#7X3$(*~[#6X3]):2](~[*:3])~[*:4] vdW: atoms: 0 parameter_id: n14 smirks [#6:1] atoms: 1 parameter_id: n14 smirks [#6:1] atoms: 2 parameter_id: n20 smirks [#7:1] atoms: 3 parameter_id: n16 smirks [#6X4:1] atoms: 4 parameter_id: n7 smirks [#1:1]-[#6X3] atoms: 5 parameter_id: n7 smirks [#1:1]-[#6X3] atoms: 6 parameter_id: n11 smirks [#1:1]-[#7] atoms: 7 parameter_id: n11 smirks [#1:1]-[#7] atoms: 8 parameter_id: n2 smirks [#1:1]-[#6X4] atoms: 9 parameter_id: n2 smirks [#1:1]-[#6X4] atoms: 10 parameter_id: n2 smirks [#1:1]-[#6X4] Electrostatics: ToolkitAM1BCC:
Here we analyze which parameters are applied to a group of molecules.
This example uses get_molecule_parameterIDs
, a simple utility function similar to label_molecules
, but intended for use on large datasets. get_molecule_parameterIDs
processes a list of molecules using a specified ForceField
and returns the parameters that would be assigned to each molecule, grouping the results both by molecule and by parameter.
This example may be useful when adding new parameters, to ensure that they are applied to molecules in a given data set.
This example also highlights the difference between "specific" and "generic" parameters. In the SMIRNOFF format, more than one SMIRKS-based parameter may match a motif in a molecule. Therefore, some parameters have precedence over others. Parameters which are "generic" are listed near the top of a parameter section, while more "specific" parameters occur near the end of the section. During parameter assignment, the furthest-down parameter that matches a motif in the molecule is assigned.
During actual parameter assignment, if the toolkit is unable to assign SMIRKS-based parameters to any part of a molecule, an UnassignedValenceParameterException
will be raised.
from openff.toolkit.topology import Molecule
from openff.toolkit.typing.engines.smirnoff import ForceField
from openff.toolkit.utils import get_data_file_path, get_molecule_parameterIDs
# The set of molecules that we want to parametrize in SMILES format.
molecule_smiles = [
"[H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H]",
"[H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H]",
"[H]C1(C(C(O1)([H])[H])([H])O[H])[H]",
"[H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H]",
"[H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H]",
"[H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H]",
"[H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H]",
"[H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H]",
"[H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H]",
"[H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H]",
]
# Create the Molecule objects to parametrize.
mols = [Molecule.from_smiles(smiles) for smiles in molecule_smiles]
# Let's label using the original "Parsley" force field
forcefield = ForceField("openff-1.0.0.offxml")
# This utility function creates dictionaries describing parameter assignment,
# grouped both by molecule and by parameter
parameters_by_molecule, parameters_by_ID = get_molecule_parameterIDs(mols, forcefield)
print("Molecules with parameter IDs:")
# parameters_by_ID is a dictionary where keys are parameter IDs and values
# are molecules in which each parameter ID occurs.
pids_ordered = sorted(list(parameters_by_ID.keys()))
for pid in pids_ordered:
print(pid)
for ids in parameters_by_ID[pid]:
print("\t", ids)
Molecules with parameter IDs: a1 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] a2 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] a27 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] a7 [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] a8 [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] a9 [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] b1 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] b14 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] b15 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] b83 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] b87 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] c1 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n12 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n16 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n18 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n19 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n2 [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] n3 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n4 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] n5 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] t1 [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t2 [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] t3 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t4 [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t5 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t84 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t85 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t86 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t87 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t89 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H] t9 [H][C@@]1(C(O[C@](O1)([H])O[H])([H])[H])O[H] [H]C1(C(C(O1)([H])[H])([H])O[H])[H] [H][C@@]1([C@](OC(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1(C([C@](O1)([H])O[H])([H])[H])O[H] [H][C@@]1(C([C@@](OC1([H])[H])([H])O[H])([H])[H])O[H] [H][C@@]1([C@](C(C(C1([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H][C@]1([C@@](C(OC(C(C1([H])[H])([H])[H])([H])[H])([H])[H])([H])O[H])O[H] [H]C1(C(C(C1([H])O[H])([H])[H])([H])O[H])[H] [H][C@]1(C(OC(O1)([H])[H])([H])[H])O[H] [H][C@@]1([C@](OC1([H])[H])([H])O[H])O[H]