schrodinger.application.transforms.esol module

Apache Beam transforms for computing E-Sol (Estimated Solvation energy).

E-Sol computes the solvation free energy of a molecule:

E-Sol = Hydration Energy - State Penalty

= (E_solution_phase - E_gas_phase) - Epik_penalty

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.transforms.esol.EsolConfig(*, scoring_method: Literal['jaguar', 'mlff'] = 'jaguar', geopt_functional: str = 'B3LYP', geopt_basis: str = 'LACVP*', sp_functional: str = 'M06-2X', sp_basis: str = 'LACVP**', search_method: Literal['mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd'] = 'lmod', energy_window: float = 21.0, max_conformers_from_search: int = 12, charge_low: int = -5, charge_high: int = 5, mlff_model: str = 'Organic_MPNICE_TB', mlff_prefilter: bool = False)

Bases: BaseModel

Configuration for E-Sol solvation energy calculations.

Parameters:
  • scoring_method – Method for computing single-point energies ('jaguar' or 'mlff').

  • geopt_functional – DFT functional for geometry optimization.

  • geopt_basis – Basis set for geometry optimization.

  • sp_functional – DFT functional for single-point energy.

  • sp_basis – Basis set for single-point energy.

  • search_method – Conformational search method.

  • energy_window – Conformer energy window (kJ/mol).

  • max_conformers_from_search – Maximum conformers to keep from each conformer search phase.

  • charge_low – Charge lower bound.

  • charge_high – Charge upper bound.

  • mlff_model – MLFF model name (used when scoring_method is 'mlff').

  • mlff_prefilter – Whether to pre-filter conformers before scoring.

scoring_method: Literal['jaguar', 'mlff']
geopt_functional: str
geopt_basis: str
sp_functional: str
sp_basis: str
search_method: Literal['mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd']
energy_window: float
charge_low: int
charge_high: int
mlff_model: str
mlff_prefilter: bool
model_config: ClassVar[ConfigDict] = {'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_post_init(context: Any, /) None

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

Args:

self: The BaseModel instance. context: The context.

class schrodinger.application.transforms.esol.EsolResult(*, source_id: SourceID, success: bool, input_structure: Structure | None = None, neutral_structure: Structure | None = None, esol_value: float | None = None, hydration_energy: float | None = None, state_penalty: float | None = None, gas_phase_structure: Structure | None = None, solution_phase_structure: Structure | None = None, error_message: str | None = None)

Bases: BaseModel

Result of an E-Sol calculation for a single input molecule.

Parameters:
  • source_id – Source ID of the input molecule.

  • success – Whether computation completed successfully.

  • input_structure – The original input structure.

  • neutral_structure – The neutralized form from EpikX.

  • esol_value – Final E-Sol value (kcal/mol).

  • hydration_energy – Hydration energy (kcal/mol).

  • state_penalty – EpikX state penalty (kcal/mol).

  • gas_phase_structure – Conformer with lowest gas-phase energy.

  • solution_phase_structure – Conformer with lowest solution-phase energy.

  • error_message – Error details if the calculation failed.

source_id: SourceID
success: bool
input_structure: Structure | None
neutral_structure: Structure | None
esol_value: float | None
hydration_energy: float | None
state_penalty: float | None
gas_phase_structure: Structure | None
solution_phase_structure: Structure | None
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.esol.RunEsol(**kwargs)

Bases: PTransformWithConfig

Compute E-Sol solvation energy for input structures.

Example usage:

>>> from schrodinger import adapter
>>> st = adapter.smiles_to_3d_structure('CC(=O)O')
>>> with beam.Pipeline() as p:
...     results = (p
...         | beam.Create([st])
...         | RunEsol())

See EsolConfig for available configuration options.

config_class

alias of EsolConfig

class schrodinger.application.transforms.esol.AnnotateEsol(**kwargs)

Bases: PTransformWithConfig

Compute E-Sol and return the annotated input structure.

Failed calculations are silently filtered out.

Example usage:

>>> from schrodinger import adapter
>>> st = adapter.smiles_to_3d_structure('CC(=O)O')
>>> with beam.Pipeline() as p:
...     structures = (p
...         | beam.Create([st])
...         | AnnotateEsol())

See EsolConfig for available configuration options.

config_class

alias of EsolConfig