schrodinger.application.transforms.macromodel module¶
MacroModel conformational search and minimization transforms.
This module provides Apache Beam transforms for running MacroModel conformational searches and energy minimizations on molecular structures.
- class schrodinger.application.transforms.macromodel.MacroModelConfig(*, force_field: Literal['oplsaa2005', 'OPLS3e', 'OPLS4'] = 'oplsaa2005', minimizer: Literal['prcg', 'tncg', 'sd', 'lbfgs'] = 'prcg', max_minimization_steps: int = 50000, convergence_threshold: float = 0.05, use_solvation: bool = False, search_method: Optional[Literal['mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd']] = None, steps: int = 1000, energy_window: float = 50.0, max_conformers: int = 0, random_seed: int = 0, crms_distance: float = 0.25, torsion_sampling: Literal['restricted', 'intermediate', 'enhanced', 'extended'] = 'intermediate')¶
Bases:
BaseModelConfiguration for MacroModel transforms.
When
search_methodis set, runs a conformational search. Whensearch_methodisNone, runs energy minimization only.- Parameters:
force_field – Force field for energy evaluation.
minimizer – Minimization algorithm.
max_minimization_steps – Maximum minimization iterations.
convergence_threshold – Gradient convergence threshold.
use_solvation – Enable GB/SA water solvation model.
search_method – Conformational search method (None = minimize only).
steps – Number of search steps.
energy_window – Energy window for conformer acceptance (kJ/mol).
max_conformers – Maximum conformers to keep (0 = no limit).
random_seed – Random seed (0 = random).
crms_distance – Max atom distance for duplicate detection (Angstroms).
torsion_sampling – Torsional sampling mode for conformational searches.
- force_field: Literal['oplsaa2005', 'OPLS3e', 'OPLS4']¶
- minimizer: Literal['prcg', 'tncg', 'sd', 'lbfgs']¶
- max_minimization_steps: int¶
- convergence_threshold: float¶
- use_solvation: bool¶
- search_method: Optional[Literal['mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd']]¶
- steps: int¶
- energy_window: float¶
- max_conformers: int¶
- random_seed: int¶
- crms_distance: float¶
- torsion_sampling: Literal['restricted', 'intermediate', 'enhanced', 'extended']¶
- model_config: ClassVar[ConfigDict] = {'frozen': True}¶
Configuration for the model, should be a dictionary conforming to [
ConfigDict][pydantic.config.ConfigDict].
- class schrodinger.application.transforms.macromodel.MacroModelResult(*, source_id: ~schrodinger.seam.io.sourceid.SourceID, input_structure: ~schrodinger.structure._structure.Structure, success: bool, output_structures: list[schrodinger.structure._structure.Structure] = <factory>, error_message: str | None = None)¶
Bases:
BaseModelResult of running MacroModel on a single structure.
For conformational searches,
output_structurescontains the conformers found. For minimization, it contains the single minimized structure (with energy stored as a structure property).- Parameters:
source_id – Source ID for tracking the input structure.
input_structure – The original input structure.
success – Whether the calculation succeeded.
output_structures – Output structures from the calculation.
error_message – Error message if the calculation failed.
- success: bool¶
- error_message: str | None¶
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}¶
Configuration for the model, should be a dictionary conforming to [
ConfigDict][pydantic.config.ConfigDict].
- class schrodinger.application.transforms.macromodel.RunMacroModel(**kwargs)¶
Bases:
PTransformWithConfigRun MacroModel on each input structure and return results.
Structures are batched and processed together in a single bmin invocation for efficiency. Returns a
MacroModelResultfor every input, regardless of success or failure. For conformational searches, results contain multiple conformers. For minimization, results contain a single minimized structure.Example usage:
>>> from schrodinger import adapter >>> st = adapter.smiles_to_3d_structure('CCCCCC') >>> with beam.Pipeline() as p: ... results = (p ... | beam.Create([st]) ... | RunMacroModel(search_method='mcmm', steps=500) ... | beam.Map(lambda r: len(r.output_structures)))
See
MacroModelConfigfor all available options.- config_class¶
alias of
MacroModelConfig
- class schrodinger.application.transforms.macromodel.MacroModelConformerSearch(**kwargs)¶
Bases:
PTransformWithConfigRun a MacroModel conformational search and yield conformer structures.
Input structures must have 3D coordinates. Use
LigPrepto generate 3D coordinates from SMILES or 2D structures.This is a convenience wrapper around
RunMacroModelthat filters to successful results and yields each conformer as a separate structure.Example usage:
>>> from schrodinger import adapter >>> from schrodinger.application.transforms.chemio import WriteStructures >>> st = adapter.smiles_to_3d_structure('CCCCCC') >>> with beam.Pipeline() as p: ... _ = (p ... | beam.Create([st]) ... | MacroModelConformerSearch(search_method='mcmm', steps=500) ... | WriteStructures('conformers.maegz'))
See
MacroModelConfigfor all available options.- config_class¶
alias of
MacroModelConfig
- class schrodinger.application.transforms.macromodel.MacroModelMinimize(**kwargs)¶
Bases:
PTransformWithConfigRun MacroModel minimization and yield minimized structures.
Input structures must have 3D coordinates. Use
LigPrepto generate 3D coordinates from SMILES or 2D structures.This is a convenience wrapper around
RunMacroModelthat filters to successful results and yields the minimized structure. Energy is stored as a structure property (r_mmod_Potential_Energy-*).Example usage:
>>> from schrodinger import adapter >>> from schrodinger.application.transforms.chemio import WriteStructures >>> st = adapter.smiles_to_3d_structure('CCCCCC') >>> with beam.Pipeline() as p: ... _ = (p ... | beam.Create([st]) ... | MacroModelMinimize(force_field='oplsaa2005') ... | WriteStructures('minimized.maegz'))
See
MacroModelConfigfor all available options.- config_class¶
alias of
MacroModelConfig
- class schrodinger.application.transforms.macromodel.MultiPhaseConformerSearch(**kwargs)¶
Bases:
PTransformWithConfigRun conformer search in gas and water phases and merge results.
Example usage:
>>> from schrodinger import adapter >>> st = adapter.smiles_to_3d_structure('CCCCCC') >>> with beam.Pipeline() as p: ... conformers = (p ... | beam.Create([st]) ... | MultiPhaseConformerSearch( ... search_method='lmod', ... max_conformers=12))
See
MacroModelConfigfor available options.- config_class¶
alias of
MacroModelConfig