# Conformer Generator

The conformer generator takes a SMILES string input, and outputs a user-defined number of optimized geometry conformations. These conformations are rank-ordered by energy, which can be useful for identifying the minimum-energy conformation, or for exploring conformational effects on various molecular properties.

## Command line interface

A simple example can be tested to generate conformers of butane:

sierra conformers "smiles:CCCC"

which produces the following final ranked conformers:
 -------------------------------------------------------------------------------
Final Ranked Conformers
-------------------------------------------------------------------------------
Energy method:                          XTBMethod(model='GFN1')

-------------------------------------------------------------------------------
rank  geom          energy [eH]    ΔE [kcal/mol]       Rg [Å]    warnings
-------------------------------------------------------------------------------
1     1     -13.866303416749         0.000000     1.621134    []
2     2     -13.865710263976         0.372209     1.517271    []
3     3     -13.865709785354         0.372509     1.517738    []


It also generates a file conformer_result.xyz which contains the geometries of the conformers in concatenated XYZ+ format, and in the same order as the energy-ranked list.

The geometries can be written to an alternative file by typing

sierra conformers "CCCC" --output my_conformers.xyz


In addition to concatenated XYZ formats, the resulting conformers can also be saved to a SDF file

sierra conformers "CCCC" --output=my_conformers.sdf

the ENTOS_ABSOLUTE_ENERGY_HARTREE and ENTOS_RELATIVE_ENERGY_KCAL_MOL properties are available for each conformer.

Other options and settings can be accessed by typing

sierra conformers --help


## Python API

To get started, let's generate conformations for diglyme (COCCOCCOC) using the following code:

import sierra
from sierra.inputs import *

inp = ConformersInput(smiles="COCCOCCOC")

result = sierra.run(inp, stream_output=True)


Initial conformer geometries are randomly generated, and a diverse selection of these are then optimized at the GFN1-xTB level of theory. The energies of each resulting optimized conformer is displayed, by order of increasing energy. The result object contains conformer energies and structures, together with other information. For example, the energies and radii of gyration for butane conformers could be tabulated as follows:

import sierra
from sierra.inputs import *

inp = ConformersInput(smiles="CCCC")

result = sierra.run(inp, stream_output=True)
for i, (e, r) in enumerate(zip(result.energies, result.radii_of_gyration)):
print(i + 1, e, r)


There are a number of options available to refine the process as needed. The number of initial rotamer conformation guesses and the number of final optimized conformers to output can be specified via the details option, and a solvent can also be specified for the conformation optimization - see below for a list of available solvents.

This input sets the number of initial rotamer guesses to 500, specifies that at most 10 conformers will be optimized, and sets water as the solvent:

from sierra.inputs import *

inp = ConformersInput(
smiles="COCCOCCOC",
details={
"initial_conformers": 500,
"optimized_conformers": 10,
},
energy_method=XTBMethod(
model="GFN1",
solvation={"solvent": "water"},
),
)


## Specifying the method for final energy ranking

Any valid energy method can be used for ranking the conformer energies, including OrbNet:

import sierra
from sierra.inputs import *

inp = ConformersInput(smiles="CCCC", energy_method=OrbNetMethod())
result = sierra.run(inp, stream_output=True)


For further examples of how to specify energy methods, see Specifying Energy Methods.

## Available solvents

Solvation is treated through GBSA, and this model is parameterized in Sierra for the following solvents: water, benzene, octanol, hexadecane, chloroform, cyclohexane, carbontetrachloride, ether, heptane, hexane, toluene.

Others can be added on request, subject to availability of suitable training data.