Skip to content

Commit 8a35f0a

Browse files
authored
Read MOL strings instead of PDB strings (#117)
Reading and writing to PDB strings can alter the structure of output molecules due to poor information on bonding in PDB strings. Reading and writing to MOL strings maintains structural information of output molecules. Changes: Line 250 -> mol_string = cmd.get_str('mol',selection) 253 -> obconversion.SetInAndOutFormats('mol', 'mol') 255 -> obconversion.ReadString(mol, mol_string) 256 -> removed 269 -> mol_string = obconversion.WriteString(mol) 273 -> cmd.read_molstr(mol_string, name,state=0,finish=1,discrete=1) 280 -> mol_string = cmd.get_str('mol',selection) 283 -> obconversion.SetInAndOutFormats('mol', 'mol') 285 -> obconversion.ReadString(mol, mol_string) 286 -> removed 320 -> mol_string = obconversion.WriteString(mol) 321 -> cmd.read_molstr(mol_string, name_n,state=0,finish=1,discrete=1) 329 -> mol_string = obconversion.WriteString(mol) 331 -> cmd.read_molstr(mol_string, name,state=0,finish=1,discrete=1)
1 parent 4f9a8ed commit 8a35f0a

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

plugins/optimize.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,12 @@ def enable_disable_entry(var):
247247

248248

249249
def minimize(selection='all', forcefield='MMFF94s', method='Conjugate Gradients', nsteps0= 500, conv=0.0001, cutoff=False, cut_vdw=6.0, cut_elec=8.0):
250-
pdb_string = cmd.get_pdbstr(selection)
250+
mol_string = cmd.get_str('mol',selection)
251251
name = cmd.get_legal_name(selection)
252252
obconversion = ob.OBConversion()
253-
obconversion.SetInAndOutFormats('pdb', 'pdb')
253+
obconversion.SetInAndOutFormats('mol', 'mol')
254254
mol = ob.OBMol()
255-
obconversion.ReadString(mol, pdb_string)
256-
mol.AddHydrogens()
255+
obconversion.ReadString(mol, mol_string)
257256
ff = ob.OBForceField.FindForceField(forcefield) ## GAFF, MMFF94s, MMFF94, UFF, Ghemical
258257
ff.Setup(mol)
259258
if cutoff == True:
@@ -266,24 +265,23 @@ def minimize(selection='all', forcefield='MMFF94s', method='Conjugate Gradients'
266265
ff.SteepestDescent(nsteps0, conv)
267266
ff.GetCoordinates(mol)
268267
nrg = ff.Energy()
269-
pdb_string = obconversion.WriteString(mol)
268+
mol_string = obconversion.WriteString(mol)
270269
cmd.delete(name)
271270
if name == 'all':
272271
name = 'all_'
273-
cmd.read_pdbstr(pdb_string, name)
272+
cmd.read_molstr(mol_string, name,state=0,finish=1,discrete=1)
274273
print('#########################################')
275274
print('The Energy of %s is %8.2f %s ' % (name, nrg, ff.GetUnit()))
276275
print('#########################################')
277276

278277

279278
def conf_search(selection='all', forcefield='MMFF94s', method='Weighted', nsteps1= 500, conformers=25, lowest_conf=5):
280-
pdb_string = cmd.get_pdbstr(selection)
279+
mol_string = cmd.get_str('mol',selection)
281280
name = cmd.get_legal_name(selection)
282281
obconversion = ob.OBConversion()
283-
obconversion.SetInAndOutFormats('pdb', 'pdb')
282+
obconversion.SetInAndOutFormats('mol', 'mol')
284283
mol = ob.OBMol()
285-
obconversion.ReadString(mol, pdb_string)
286-
mol.AddHydrogens()
284+
obconversion.ReadString(mol, mol_string)
287285
ff = ob.OBForceField.FindForceField(forcefield) ## GAFF, MMFF94s, MMFF94, UFF, Ghemical
288286
ff.Setup(mol)
289287
if method == 'Weighted':
@@ -317,21 +315,22 @@ def conf_search(selection='all', forcefield='MMFF94s', method='Weighted', nsteps
317315
name_n = '%s%02d' % (name, i)
318316
cmd.delete(name_n)
319317
mol.SetConformer(orden)
320-
pdb_string = obconversion.WriteString(mol)
321-
cmd.read_pdbstr(pdb_string, name_n)
318+
mol_string = obconversion.WriteString(mol)
319+
cmd.read_molstr(mol_string, name_n,state=0,finish=1,discrete=1)
322320
if i != 0:
323321
rmsd = cmd.fit(name_n, '%s00' % name, quiet=1)
324322
print('%15s | %10.2f%9s |%6.1f' % (name_n, nrg, nrg_unit, rmsd))
325323
print('##############################################')
326324
else:
327325
ff.GetCoordinates(mol)
328326
nrg = ff.Energy()
329-
pdb_string = obconversion.WriteString(mol)
327+
mol_string = obconversion.WriteString(mol)
330328
cmd.delete(name)
331-
cmd.read_pdbstr(pdb_string, name)
329+
cmd.read_molstr(mol_string, name,state=0,finish=1,discrete=1)
332330
print('#########################################')
333331
print('The Energy of %s is %8.2f %s ' % (name, nrg, ff.GetUnit()))
334332
print('#########################################')
335333

336334
cmd.extend('minimize', minimize)
337335
cmd.extend('conf_search', conf_search)
336+

0 commit comments

Comments
 (0)