schrodinger.application.transforms.epik module

Apache Beam transform for Epik Classic ionization and tautomer enumeration.

Wraps the generic Epik Classic engine (schrodinger.application.epik.pyepik) directly. This is the -epik counterpart to the EpikX (-epikx) transform in epikx.py. The engine is a process-global singleton, so each worker process runs a single _EpikDoFn.

class schrodinger.application.transforms.epik.EpikConfig(*, ph: float = 7.0, ph_tolerance: float = 1.0, tautomerize: bool = True, max_tautomers: int = 8, max_atom: int = 200, metal_binding: bool = False)

Bases: BaseModel

Configuration for the Epik transform.

Defaults match the legacy ligprep workflow’s invocation of Epik.

ph: float
ph_tolerance: float
tautomerize: bool
max_tautomers: int
max_atom: int
metal_binding: bool
model_config: ClassVar[ConfigDict] = {'frozen': True}

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

toArgList() → list

Build the engine argument list (excluding argv[0]).

class schrodinger.application.transforms.epik.Epik(*, _config: pydantic.main.BaseModel | None = None, **kwargs)

Bases: PTransformWithConfig

Enumerate ionization and tautomer states with the Epik Classic engine. Structures that fail are dropped.

Example usage:

>>> from schrodinger import adapter
>>> import apache_beam as beam
>>> st = adapter.to_structure('CC(=O)O')
>>> with beam.Pipeline() as p:
...     states = (p
...         | beam.Create([st])
...         | Epik(ph=7.4))
config_class

alias of EpikConfig

expand(pcoll) → OutcomePCollections