Getting the lowest energy conformer.ΒΆ
This is a simple script for iterating over an ensemble and getting the lowest
energy bbprepared.Conformer.
import stk
import stko
import bbprepared
building_block = stk.BuildingBlock(
smiles="C1=CC=NC(=C1)C=NBr",
functional_groups=[
stk.SmartsFunctionalGroupFactory(
smarts="[#6]~[#7X2]~[#35]",
bonders=(1,),
deleters=(),
),
stk.SmartsFunctionalGroupFactory(
smarts="[#6]~[#7X2]~[#6]",
bonders=(1,),
deleters=(),
),
],
)
# This uses the rdkit conformer generation.
ensemble = bbprepared.generators.ETKDG(num_confs=100).generate_conformers(
building_block
)
Note that you could couple this with any energy function, especially those
provided in stko. And in the new verstion, it is a one-liner!
calculator = bbprepared.EnergyCalculator(
name="MMFFEnergy",
function=stko.MMFFEnergy().get_energy,
)
# Iterate over ensemble without optimisation.
minimum_conformer = ensemble.get_lowest_energy_conformer(
calculator=calculator,
)
minimum_score_no_opt = minimum_conformer.score
# With optimisation...
optimiser = bbprepared.Optimiser(
name="MMFF",
function=stko.MMFF().optimize,
)
new_ensemble = ensemble.optimise_conformers(
optimiser=optimiser,
)
minimum_conformer = new_ensemble.get_lowest_energy_conformer(
calculator=calculator,
)
minimum_score_opt = minimum_conformer.score