schrodinger.forcefield.minimizer module

class schrodinger.forcefield.minimizer.Restraint(force_constant, target_value, atom_index1, atom_index2, atom_index3, atom_index4, flat_bottom_half_width)[source]

Bases: object

Class representing restraints.

__init__(force_constant, target_value, atom_index1, atom_index2, atom_index3, atom_index4, flat_bottom_half_width)[source]
classmethod from_atom_indices(st: schrodinger.structure._structure.Structure, atom_indices: Tuple[int, int, int, int], force_constant: float = 5.0, flat_bottom_half_width: float = 0.0, target_torsion_angle: Optional[float] = None)[source]

Given structure and atom indices, return a restraint for mmffld minimization with default force constant, flat bottom half width, and target torsion angle.

Parameters
  • st – structure

  • atom_indices – atom indices for a torsion

  • force_constant – restraint force constant

  • flat_bottom_half_width – flat bottom half width for restraints

  • target_torsion_angle – target torsion angle in degrees if None is given, the current torsion angle will be used

Returns

torsion restraint for minimization

class schrodinger.forcefield.minimizer.Constraint(atom_index1, atom_index2, type_index1, type_index2, use_rigorous=False)[source]

Bases: object

Class representing constraints.

__init__(atom_index1, atom_index2, type_index1, type_index2, use_rigorous=False)[source]
class schrodinger.forcefield.minimizer.MinimizationOptions(max_step: int = 1500, energy_convergence: float = 5e-09, gradient_convergence: float = 0.05, line_search_method: int = 1, min_method: int = 0, perturb: bool = False, restraints: Optional[List[schrodinger.forcefield.minimizer.Restraint]] = None, constraints: Optional[List[schrodinger.forcefield.minimizer.Constraint]] = None, debug_outfile: Optional[str] = None)[source]

Bases: tuple

Class for assigning the mmffld minimization options.

max_step: int

Alias for field number 0

energy_convergence: float

Alias for field number 1

gradient_convergence: float

Alias for field number 2

line_search_method: int

Alias for field number 3

min_method: int

Alias for field number 4

perturb: bool

Alias for field number 5

restraints: Optional[List[schrodinger.forcefield.minimizer.Restraint]]

Alias for field number 6

constraints: Optional[List[schrodinger.forcefield.minimizer.Constraint]]

Alias for field number 7

debug_outfile: Optional[str]

Alias for field number 8

__contains__(key, /)

Return key in self.

__len__()

Return len(self).

count(value, /)

Return number of occurrences of value.

index(value, start=0, stop=9223372036854775807, /)

Return first index of value.

Raises ValueError if the value is not present.

schrodinger.forcefield.minimizer.minimize_structure(st: schrodinger.structure._structure.Structure, options: Optional[schrodinger.forcefield.minimizer.MinimizationOptions] = None, force_field: Optional[Union[int, schrodinger.forcefield.common.ForceFieldOptions]] = None)[source]

Minimizes a single structure. For minimizing multiple structures, the performance improves drastically if the forcefield environment instantiation happens outside the iteration loop.

Parameters
  • st – structure

  • options – mmffld minimization options

  • force_field – either an existing force field handle or ForceFieldOptions, from which a handle will be created

Returns

minimization results

Return type

mm.MinimizeResults

schrodinger.forcefield.minimizer.iterate_minimize_structure(st: schrodinger.structure._structure.Structure, iteration: int, options: Optional[schrodinger.forcefield.minimizer.MinimizationOptions] = None) pymmlibs.MinimizeResults[source]

Minimize a single structure multiple times. This function instantiates the forcefield handle before the iteration loop and hence increases the performance by eliminating instantiation repetitions.

Parameters
  • st – structure

  • iteration – iteration number

  • options – mmffld minimization options

Returns

minimization results

schrodinger.forcefield.minimizer.minimize_substructure(st: schrodinger.structure._structure.Structure, atoms_to_minimize: Iterable[schrodinger.structure._structure._StructureAtom]) schrodinger.structure._structure.Structure[source]

Given a structure, minimizes the specified atoms in it, and returns it

Parameters
  • st – The structure containing the atoms to be minimized

  • atoms_to_minimize – The subset of atoms in the structure to be minimize

Returns

The structure with the atoms minimized

schrodinger.forcefield.minimizer.minimize_ligands(st: schrodinger.structure._structure.Structure, **kwargs) schrodinger.structure._structure.Structure[source]

Given a structure, returns that structure with all the ligands minimized.

Parameters
  • st – The structure containing ligands to be minimized

  • **kwargs – Any options to supply to analyze.find_ligands

Returns

The structure with the ligands minimized

schrodinger.forcefield.minimizer.write_restraints(filename: str, restraints: List[schrodinger.forcefield.minimizer.Restraint])[source]

Writes restraints into filename.

Parameters
  • filename – restraint filename

  • restraints – a list to be filled with restraints

schrodinger.forcefield.minimizer.read_restraints(filename: str, restraints: Optional[List[schrodinger.forcefield.minimizer.Restraint]] = None, constraints: Optional[List[schrodinger.forcefield.minimizer.Constraint]] = None)[source]

Reads restraints and constraints arguments from a file and creates separate lists for Restraint and Constraint objects.

Parameters
  • filename – restraint/constraint filename

  • restraints – a list to be filled with restraints

  • constraints – a list to be filled with constraints