@@ -46,27 +46,26 @@ class RdKitEnergyCalculator(AbstractEnergyCalculator):
46
46
def calculate (self , mol : Chem .Mol ) -> float :
47
47
mol = Chem .MolFromSmiles (Chem .MolToSmiles (mol ))
48
48
Chem .GetSymmSSSR (mol )
49
-
49
+ cids = AllChem . EmbedMultipleConfs ( mol , numConfs = self . RECALCULATION_LOOPS )
50
50
values = []
51
- for _ in range (self .RECALCULATION_LOOPS ):
52
- force_field = self .get_force_field (mol )
51
+ for i in range (self .RECALCULATION_LOOPS ):
52
+ force_field = self .get_force_field (mol , confId = cids [ i ] )
53
53
force_field .Initialize ()
54
54
force_field .Minimize ()
55
55
56
56
values .append (force_field .CalcEnergy ())
57
-
58
57
return min (values )
59
58
60
- def get_force_field (self , molecule : Chem .Mol ) -> AllChem .ForceField :
59
+ def get_force_field (self , molecule : Chem .Mol , confId ) -> AllChem .ForceField :
61
60
Chem .AddHs (molecule )
62
61
AllChem .EmbedMolecule (molecule )
63
62
64
63
if self .force_field == self .FORCE_FIELD_MMFF :
65
64
properties = AllChem .MMFFGetMoleculeProperties (molecule )
66
- return AllChem .MMFFGetMoleculeForceField (molecule , properties )
65
+ return AllChem .MMFFGetMoleculeForceField (molecule , properties , confId )
67
66
68
67
if self .force_field == self .FORCE_FIELD_UFF :
69
- return AllChem .UFFGetMoleculeForceField (molecule )
68
+ return AllChem .UFFGetMoleculeForceField (molecule , confId )
70
69
71
70
72
71
class BabelEnergyCalculator (AbstractEnergyCalculator ):
0 commit comments