schrodinger.application.transforms.ligprep.tautomerizer module

Apache Beam transform for tautomer enumeration.

Thin Beam adapter around the legacy ligprep3 Tautomerizer class (schrodinger.application.macromodel.packages.ligprep3.tautomerizer.Tautomerizer), which is reused verbatim.

class schrodinger.application.transforms.ligprep.tautomerizer.TautomerizerConfig(*, target_tautomers: int = 8, max_tautomers: int = 32, max_atom: int = 200, min_probability: float = 0.01, retain: bool = False, retain_labeled: bool = False, report_matches: bool = False, vcs_run: bool = False, solvent: str | None = None, tautomer_spec_file: str = '', verbosity: int = 0)

Bases: BaseModel

Configuration for the tautomerizer transform.

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

target_tautomers: int
max_tautomers: int
max_atom: int
min_probability: float
retain: bool
retain_labeled: bool
report_matches: bool
vcs_run: bool
solvent: str | None
tautomer_spec_file: str
verbosity: int
to_arg_list() → list

Build the legacy tautomerizer command-line argument list.

model_config: ClassVar[ConfigDict] = {}

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

class schrodinger.application.transforms.ligprep.tautomerizer.Tautomerizer(*, _config: pydantic.main.BaseModel | None = None, **kwargs)

Bases: PTransformWithConfig

Enumerate tautomers for structures using the legacy ligprep3 tautomerizer. Structures that fail are dropped.

Example usage:

>>> from schrodinger import adapter
>>> import apache_beam as beam
>>> st = adapter.to_structure('O=c1cc[nH]nc1')
>>> with beam.Pipeline() as p:
...     tautomers = (p
...         | beam.Create([st])
...         | Tautomerizer(target_tautomers=4))

See TautomerizerConfig for the available parameters.

config_class

alias of TautomerizerConfig

expand(pcoll) → OutcomePCollections