Seam YAML Transform Index


AnnotateEsol

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.

Input: Structure
Output: Structure

Configuration

  • scoring_method Literal
    • Default: 'jaguar'
    • Allowed: 'jaguar', 'mlff'
    • Method for computing single-point energies
  • geopt_functional str
    • Default: 'B3LYP'
    • DFT functional for geometry optimization
  • geopt_basis str
    • Default: 'LACVP*'
    • Basis set for geometry optimization
  • sp_functional str
    • Default: 'M06-2X'
    • DFT functional for single-point energy
  • sp_basis str
    • Default: 'LACVP**'
    • Basis set for single-point energy
  • search_method Literal
    • Default: 'lmod'
    • Allowed: 'mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd'
    • Conformational search method
  • energy_window float
    • Default: 21.0
    • Conformer energy window (kJ/mol)
  • max_conformers_from_search int
    • Default: 12
    • Maximum conformers from each search phase
  • charge_low int
    • Default: -5
    • Charge lower bound
  • charge_high int
    • Default: 5
    • Charge upper bound
  • mlff_model str
    • Default: 'Organic_MPNICE_TB'
    • MLFF model name
  • mlff_prefilter bool
    • Default: False
    • Pre-filter conformers before scoring

CalculateJaguarEnergy

Calculate energies for structures using Jaguar. The energy is stored

as a property on each structure, which can be obtained using the ExtractJaguarEnergy transform

This is a backward-compatible wrapper around RunJaguar that a Structure. Raises FaultySystemFailure on failure. For resilient failure handling, use RunJaguar directly.

Example usage::

>>> with beam.Pipeline() as p:
...     structures = p | beam.Create([water_structure])
...     structures = structures | CalculateJaguarEnergy(optimize=False)
...     energies = structures | ExtractJaguarEnergy
...     energies | beam.Map(lambda x: print(f"Energy: {x} Hartrees"))

Input: Structure
Output: Structure

Configuration

  • dftname str
    • Default: 'B3LYP'
    • DFT functional to use.
  • basis str
    • Default: '6-31G**'
    • Basis set to use.
  • optimize bool
    • Default: False
    • Perform geometry optimization if True.

ConfGenX

Generate conformers using the fast3d engine and yield conformer structures.

This is a convenience wrapper around RunFast3D that filters to successful results and yields each conformer as a separate structure.

Example usage::

>>> from schrodinger import adapter
>>> from schrodinger.structure import count_structures
>>> from schrodinger.seam.io import chemio
>>> st = adapter.smiles_to_3d_structure('CCOc1ccccc1')
>>> phenyl_carbons = adapter.evaluate_smarts(st, 'c1ccccc1')[0]
>>> with beam.Pipeline() as p:
...    _ = (
...      p
...      | beam.Create([st])
...      | FastConfGen(max_conformers=10,
...         frozen_atoms=phenyl_carbons,
...         minimize=True)
...      | chemio.WriteStructuresToFile('conformers.maegz')
...     )
>>> assert count_structures('conformers.maegz') == 3

See Fast3DConfig for all available options.

Input: Structure
Output: Structure

Configuration

  • max_conformers int
    • Default: 1000
    • Maximum number of conformers to generate
  • frozen_atoms list[int] | str | None
    • Default: None
    • Atom indices or ASL for atoms to freeze
  • mode Literal
    • Default: 'basic'
    • Allowed: 'basic', 'default'
    • Fast3D engine mode
  • minimize bool
    • Default: False
    • Whether to minimize conformer energies with OPLS
  • stereo Literal
    • Default: 1
    • Allowed: 0, 1, 2
    • Stereochemistry handling mode
  • force_field Literal
    • Default: 'OPLS_2005'
    • Allowed: 'OPLS_2005', 'S-OPLS', 'SPFF'
    • OPLS force field for geometry optimization
  • dont_vary_nitrogens bool
    • Default: False
    • Whether to keep pyramidal nitrogen centers fixed
  • keep_amides bool
    • Default: False
    • Whether to preserve amide bond input configurations

CreateMolsFromSmiles

Create RDKit Mol objects from a list of SMILES strings.

This is a source transform that creates molecules from SMILES.

Example usage in YAML::

pipeline:
  - type: CreateMolsFromSmiles
    config:
      elements:
        - "c1ccccc1"
        - "CCO"

Output: Mol

Configuration

  • elements list[str]
    • Required
    • List of SMILES strings to convert to molecules.

CreateStructuresFromSmiles

Create Structure objects from a list of SMILES strings.

This is a source transform that creates structures from SMILES.

Example usage in YAML::

pipeline:
  - type: CreateStructuresFromSmiles
    config:
      elements:
        - "c1ccccc1"
        - "CCO"

Output: Structure

Configuration

  • elements list[str]
    • Required
    • List of SMILES strings to convert to structures.

Epik

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))

Input: Structure
Output: Structure

Configuration

  • ph float
    • Default: 7.0
    • Target pH (-ph)
  • ph_tolerance float
    • Default: 1.0
    • pH tolerance for states (-pht)
  • tautomerize bool
    • Default: True
    • Enumerate tautomers (-nt disables)
  • max_tautomers int
    • Default: 8
    • Maximum tautomers per state (-tn)
  • max_atom int
    • Default: 200
    • Maximum atoms to adjust (-ma)
  • metal_binding bool
    • Default: False
    • Generate metal-binding states (-metal_binding)

EpikXWithProps

Enumerate protonation states and annotate with derived pKa properties.

Example usage::

>>> from schrodinger import adapter
>>> st = adapter.to_structure('CC(=O)O')
>>> st.title = "acetic_acid"
>>> with beam.Pipeline() as p:
...     structures = (p
...         | beam.Create([st])
...         | EpikXWithProps(ph=7.0)
...         | beam.Map(lambda st: st.property.get('r_epik_Most_acidic_pKa'))
...         | beam.LogElements())

See EpikXConfig for available configuration options.

Input: Structure
Output: Structure

Configuration

  • legacy_arg_string str | None
    • Default: None
    • Legacy CLI argument string (mutually exclusive with other parameters)
  • ph float
    • Default: 7.4
    • Query pH for protonation state prediction
  • pht float
    • Default: 2.0
    • pH tolerance for generated structures (mutually exclusive with population_cutoff)
  • population_cutoff float | None
    • Default: None
    • State population cutoff (mutually exclusive with pht)
  • max_structures int
    • Default: 16
    • Maximum number of returned structures per input
  • max_tautomers int
    • Default: 8
    • Maximum number of tautomers to enumerate
  • max_atoms int
    • Default: 200
    • Max atoms for state enumeration
  • max_atoms_pka int
    • Default: 500
    • Max atoms for pKa prediction
  • charge_low int
    • Default: -2
    • Lower bound for the charge level window
  • charge_high int
    • Default: 2
    • Upper bound for the charge level window
  • highest_pka float
    • Default: 14.0
    • Highest pKa value to display
  • lowest_pka float
    • Default: 0.0
    • Lowest pKa value to display
  • query_only bool
    • Default: False
    • Query pKas only, do not predict states
  • taut_only bool
    • Default: False
    • Tautomerize only, do not evaluate pKas
  • no_tautomerize bool
    • Default: False
    • Do not tautomerize
  • best_neutral bool
    • Default: False
    • Provide the most populated neutral tautomer
  • best_neutral_zwit bool
    • Default: False
    • Provide neutral tautomer and optionally a zwitterion
  • metal_binding bool
    • Default: False
    • Generate states appropriate for metal ion binding
  • racemize bool
    • Default: False
    • Enumerate and score individual racemers
  • retain_input_state bool
    • Default: False
    • Retain input ionization/tautomerization state
  • refine bool
    • Default: True
    • Refine prioritization step to remove unwanted states
  • add_hydrogen_coords bool
    • Default: False
    • Add coordinates to non-polar hydrogens
  • single_model bool
    • Default: False
    • Use single best model instead of ensemble
  • custom_model str | None
    • Default: None
    • Path to custom model
  • cpu_only bool
    • Default: False
    • Run on CPU only (no GPU acceleration)
  • match_exp str | None
    • Default: None
    • Property label of experimental pKa value for matching
  • report bool
    • Default: False
    • Generate pKa report (single structure only)

ExtractFieldFromRow

Extract a field from Row objects, yielding the field value.

This is useful when a transform expects a specific type (like Structure) but the pipeline uses Row objects. Extract the field before the transform, then optionally wrap it back in a Row after.

Example usage in YAML::

pipeline:
  - type: ReadFromPDB
    config:
      pdb_codes:
        - "1A2B"
  - type: StructureToRow
  - type: ExtractFieldFromRow
    config:
      field_name: "structure"

This would transform Row(structure=Structure(...), other=value) into just the Structure object.

Configuration

  • field_name str
    • Required
    • The name of the Row field to extract.

FilterByProp

Filter structures based on structure-level property values.

Supports three filter modes per criterion:

  • exists: check if a property is present (or absent)
  • min/max: check if a numeric property is within a range
  • allowed_values: check if a property value is in a set

When min, max, or allowed_values are specified, existence is implied — the property must be present. Use exists alone to check only for presence or absence.

All criteria must pass for a structure to be kept (AND logic).

Example YAML usage::

- type: FilterByProp
  config:
    criteria:
      - property: "r_epik_State_Penalty"
        max: 5.0
      - property: "i_epik_Tot_Q"
        allowed_values: [0, -1, 1]

Input: Structure

Configuration

  • criteria list[PropertyCriterion]
    • Required

LigFilter

A PTransform that filters molecules based on LigFilter criteria.

This is the YAML-facing transform that returns a plain PCollection of structures that passed the filter. For access to dropped records, use RunLigFilter directly.

Example usage with standard args::

>>> from schrodinger import adapter
>>> st1 = adapter.to_structure('c1ccccc1')
>>> st1.title = "benzene_fail"
>>> st2 = adapter.to_structure('CCO')
>>> st2.title = "ethanol_pass"
>>> with beam.Pipeline() as p:
...     filtered_structures = (p
...         | beam.Create([st1, st2])
...         | FilterLigands(criteria=['Num_heavy_atoms==3'])
...         | beam.Map(lambda st: st.title)
...         | beam.LogElements())
ethanol_pass

Example usage with legacy arg string::

>>> from schrodinger import adapter
>>> st1 = adapter.to_structure('c1ccccc1')
>>> st1.title = "benzene_pass"
>>> st2 = adapter.to_structure('CCO')
>>> st2.title = "ethanol_fail"
>>> with beam.Pipeline() as p:
...     filtered_structures = (p
...         | beam.Create([st1, st2])
...         | FilterLigands(legacy_arg_string='-e Num_heavy_atoms>3')
...         | beam.Map(lambda st: st.title)
...         | beam.LogElements())
Filtering criteria:
  Num_heavy_atoms>3
benzene_pass

Input: Mol | Structure
Output: Structure

Configuration

  • match_any bool
    • Default: False
    • Match any criteria instead of all
  • invert_criteria bool
    • Default: False
    • Invert the filter (remove matching structures)
  • criteria list[Criterion]
    • Default: []
    • List of compiled filter criteria
  • add_props bool
    • Default: False
    • Whether to add properties to structures (not supported)
  • legacy_arg_string str | None
    • Default: None
    • Legacy command line argument string (mutually exclusive with other fields)

LigPrep

A PTransform that prepares ligands using LigPrep.

Returns an OutcomePCollections with: - main: PCollection[Structure] of prepared structures (with DerivedSourceIDs) - dropped: PCollection[DroppedRecord] of structures that produced no output

Example usage with explicit fields::

>>> from rdkit import Chem
>>> benzene = Chem.MolFromSmiles('c1ccccc1')
>>> with beam.Pipeline() as p:
...     ligprepped_benzene = (p
...         | beam.Create([benzene])
...         | PrepareLigands(max_stereo=32)
...         | beam.Map(adapter.to_smiles)
...         | beam.LogElements())
c1ccccc1

Example usage with legacy arg string::

>>> from rdkit import Chem
>>> benzene = Chem.MolFromSmiles('c1ccccc1')
>>> with beam.Pipeline() as p:
...     ligprepped_benzene = (p
...         | beam.Create([benzene])
...         | PrepareLigands(legacy_arg_string='-s 32')
...         | beam.Map(adapter.to_smiles)
...         | beam.LogElements())
c1ccccc1

Input: Mol | Structure
Output: Structure

Configuration

  • use_epik bool
    • Default: False
    • Use Epik Classic for ionization/tautomerization
  • use_epikx bool
    • Default: False
    • Use EpikX for ionization/tautomerization
  • epik_metal_binding bool
    • Default: False
    • Generate metal-binding states
  • ionization_level int | None
    • Default: None
    • Ionization level (0=none, 1=neutralize, 2=neutralize+ionize)
  • ph float | None
    • Default: None
    • Target pH (default 7.0 for Epik, 7.4 for EpikX)
  • pht float | None
    • Default: None
    • pH tolerance
  • disable_tautomerizer bool
    • Default: False
    • Disable tautomer generation
  • max_tautomers int
    • Default: 8
    • Max tautomers per structure
  • max_stereo int
    • Default: 32
    • Max stereoisomers per input
  • generate_all_stereo bool
    • Default: False
    • Generate all stereoisomer combinations
  • use_geometry_stereo bool
    • Default: False
    • Respect chiralities from input geometry
  • force_field Literal
    • Default: 14
    • Allowed: 14, 16
    • OPLS version
  • disable_desalter bool
    • Default: False
    • Disable desalter
  • filter_string str
    • Default: ''
    • Optional filter string (mutually exclusive with filter_path)
  • filter_path FilePath | None
    • Default: None
    • Optional filter file path (mutually exclusive with filter_string)
  • legacy_infile_path FilePath | None
    • Default: None
    • Path to a LigPrep .inp config file (mutually exclusive with legacy_arg_string and explicit fields)
  • legacy_arg_string str | None
    • Default: None
    • Legacy CLI args (mutually exclusive with other fields)

MacroModelConformerSearch

Run a MacroModel conformational search and yield conformer structures.

Input structures must have 3D coordinates. Use LigPrep to generate 3D coordinates from SMILES or 2D structures.

This is a convenience wrapper around RunMacroModel that 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 MacroModelConfig for all available options.

Input: Structure
Output: Structure

Configuration

  • force_field Literal
    • Default: 'oplsaa2005'
    • Allowed: 'oplsaa2005', 'OPLS3e', 'OPLS4'
    • Force field for energy evaluation
  • minimizer Literal
    • Default: 'prcg'
    • Allowed: 'prcg', 'tncg', 'sd', 'lbfgs'
    • Minimization algorithm
  • max_minimization_steps int
    • Default: 50000
    • Maximum minimization iterations
  • convergence_threshold float
    • Default: 0.05
    • Gradient convergence threshold
  • use_solvation bool
    • Default: False
    • Enable GB/SA water solvation model
  • search_method Literal | None
    • Default: None
    • Allowed: 'mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd'
    • Conformational search method (None = minimize only)
  • steps int
    • Default: 1000
    • Number of search steps
  • energy_window float
    • Default: 50.0
    • Energy window for conformer acceptance (kJ/mol)
  • max_conformers int
    • Default: 0
    • Maximum conformers to keep (0 = no limit)
  • random_seed int
    • Default: 0
    • Random seed (0 = random)
  • crms_distance float
    • Default: 0.25
    • Max atom distance for duplicate detection (Angstroms)
  • torsion_sampling Literal
    • Default: 'intermediate'
    • Allowed: 'restricted', 'intermediate', 'enhanced', 'extended'
    • Torsional sampling mode for conformational searches

MacroModelMinimize

Run MacroModel minimization and yield minimized structures.

Input structures must have 3D coordinates. Use LigPrep to generate 3D coordinates from SMILES or 2D structures.

This is a convenience wrapper around RunMacroModel that 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 MacroModelConfig for all available options.

Input: Structure
Output: Structure

Configuration

  • force_field Literal
    • Default: 'oplsaa2005'
    • Allowed: 'oplsaa2005', 'OPLS3e', 'OPLS4'
    • Force field for energy evaluation
  • minimizer Literal
    • Default: 'prcg'
    • Allowed: 'prcg', 'tncg', 'sd', 'lbfgs'
    • Minimization algorithm
  • max_minimization_steps int
    • Default: 50000
    • Maximum minimization iterations
  • convergence_threshold float
    • Default: 0.05
    • Gradient convergence threshold
  • use_solvation bool
    • Default: False
    • Enable GB/SA water solvation model
  • search_method Literal | None
    • Default: None
    • Allowed: 'mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd'
    • Conformational search method (None = minimize only)
  • steps int
    • Default: 1000
    • Number of search steps
  • energy_window float
    • Default: 50.0
    • Energy window for conformer acceptance (kJ/mol)
  • max_conformers int
    • Default: 0
    • Maximum conformers to keep (0 = no limit)
  • random_seed int
    • Default: 0
    • Random seed (0 = random)
  • crms_distance float
    • Default: 0.25
    • Max atom distance for duplicate detection (Angstroms)
  • torsion_sampling Literal
    • Default: 'intermediate'
    • Allowed: 'restricted', 'intermediate', 'enhanced', 'extended'
    • Torsional sampling mode for conformational searches

Models.GroupByCorpID

Group structures by their root SourceID (corporate compound ID).

See also application.transforms.sourceid for related transforms that key/group by tagged ancestor SourceIDs.

Input: Structure
Output: tuple[Any, Iterable[Structure]]

Configuration

  • label Any
    • Default: None

Models.TakeBestOfGroup

Select the best N structures per group by a structure property.

Example YAML usage::

- type: Models.GroupByCorpID
- type: Models.TakeBestOfGroup
  config:
    property: "r_i_docking_score"
    n: 3
    criteria: min
- type: Models.Ungroup

See TakeBestOfGroupConfig for all available configuration options.

Input: tuple[Any, Iterable[Structure]]
Output: tuple[Any, Iterable[Structure]]

Configuration

  • property str
    • Required
    • Structure property to select by.
  • n int
    • Default: 1
    • Number of results per group.
  • criteria SelectionCriteria
    • Default: 'min'
    • Allowed: 'min', 'max'
    • Selection criteria: 'min' keeps lowest, 'max' keeps highest values.
  • strict bool
    • Default: True
    • If True, raise on missing properties. If False, skip structures missing the target property.

Models.Ungroup

Flatten grouped collections back into individual elements.

Configuration

  • label Any
    • Default: None

MolToSmiles

Convert RDKit Mol objects to SMILES strings.

Example usage in YAML::

pipeline:
  - type: CreateMolsFromSmiles
    config:
      elements:
        - "c1ccccc1"
  - type: MolToSmiles

Input: Mol
Output: str

Configuration

  • label Any
    • Default: None

MolToStructure

Convert RDKit Mol objects to Schrodinger Structure objects.

Example usage in YAML::

pipeline:
  - type: CreateMolsFromSmiles
    config:
      elements:
        - "c1ccccc1"
  - type: MolToStructure

Input: Mol
Output: Structure

Configuration

  • label Any
    • Default: None

MultiPhaseConformerSearch

Run 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 MacroModelConfig for available options.

Input: Structure
Output: Structure

Configuration

  • force_field Literal
    • Default: 'oplsaa2005'
    • Allowed: 'oplsaa2005', 'OPLS3e', 'OPLS4'
    • Force field for energy evaluation
  • minimizer Literal
    • Default: 'prcg'
    • Allowed: 'prcg', 'tncg', 'sd', 'lbfgs'
    • Minimization algorithm
  • max_minimization_steps int
    • Default: 50000
    • Maximum minimization iterations
  • convergence_threshold float
    • Default: 0.05
    • Gradient convergence threshold
  • use_solvation bool
    • Default: False
    • Enable GB/SA water solvation model
  • search_method Literal | None
    • Default: None
    • Allowed: 'mcmm', 'lmod', 'llmd', 'spmc', 'cgen', 'mcmmlmod', 'mcmmllmd'
    • Conformational search method (None = minimize only)
  • steps int
    • Default: 1000
    • Number of search steps
  • energy_window float
    • Default: 50.0
    • Energy window for conformer acceptance (kJ/mol)
  • max_conformers int
    • Default: 0
    • Maximum conformers to keep (0 = no limit)
  • random_seed int
    • Default: 0
    • Random seed (0 = random)
  • crms_distance float
    • Default: 0.25
    • Max atom distance for duplicate detection (Angstroms)
  • torsion_sampling Literal
    • Default: 'intermediate'
    • Allowed: 'restricted', 'intermediate', 'enhanced', 'extended'
    • Torsional sampling mode for conformational searches

Neutralize

Return the best neutral tautomer with state penalty annotated.

Raises RuntimeError if EpikX fails for any input structure.

Example usage::

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

See EpikXConfig for available configuration options.

Input: Structure
Output: Structure

Configuration

  • legacy_arg_string str | None
    • Default: None
    • Legacy CLI argument string (mutually exclusive with other parameters)
  • ph float
    • Default: 7.4
    • Query pH for protonation state prediction
  • pht float
    • Default: 2.0
    • pH tolerance for generated structures (mutually exclusive with population_cutoff)
  • population_cutoff float | None
    • Default: None
    • State population cutoff (mutually exclusive with pht)
  • max_structures int
    • Default: 16
    • Maximum number of returned structures per input
  • max_tautomers int
    • Default: 8
    • Maximum number of tautomers to enumerate
  • max_atoms int
    • Default: 200
    • Max atoms for state enumeration
  • max_atoms_pka int
    • Default: 500
    • Max atoms for pKa prediction
  • charge_low int
    • Default: -2
    • Lower bound for the charge level window
  • charge_high int
    • Default: 2
    • Upper bound for the charge level window
  • highest_pka float
    • Default: 14.0
    • Highest pKa value to display
  • lowest_pka float
    • Default: 0.0
    • Lowest pKa value to display
  • query_only bool
    • Default: False
    • Query pKas only, do not predict states
  • taut_only bool
    • Default: False
    • Tautomerize only, do not evaluate pKas
  • no_tautomerize bool
    • Default: False
    • Do not tautomerize
  • best_neutral bool
    • Default: False
    • Provide the most populated neutral tautomer
  • best_neutral_zwit bool
    • Default: False
    • Provide neutral tautomer and optionally a zwitterion
  • metal_binding bool
    • Default: False
    • Generate states appropriate for metal ion binding
  • racemize bool
    • Default: False
    • Enumerate and score individual racemers
  • retain_input_state bool
    • Default: False
    • Retain input ionization/tautomerization state
  • refine bool
    • Default: True
    • Refine prioritization step to remove unwanted states
  • add_hydrogen_coords bool
    • Default: False
    • Add coordinates to non-polar hydrogens
  • single_model bool
    • Default: False
    • Use single best model instead of ensemble
  • custom_model str | None
    • Default: None
    • Path to custom model
  • cpu_only bool
    • Default: False
    • Run on CPU only (no GPU acceleration)
  • match_exp str | None
    • Default: None
    • Property label of experimental pKa value for matching
  • report bool
    • Default: False
    • Generate pKa report (single structure only)

PrettyPrint

Pretty-print Beam Rows as JSON strings.

The expand configuration option controls the formatting:

  • If expand is True, the JSON output is printed with indentation across multiple lines.
  • If expand is False (default), the JSON output is compact and printed on a single line.

Example usage in YAML::

pipeline:
  - type: ReadFileToStructures
    config:
      input_file: "ligands.maegz"
  - type: StructureToRow
  - type: PrettyPrint
    config:
      expand: true

Configuration

  • expand bool
    • Default: False
    • Whether to pretty-print with indentation.

ProteinPrep

Prepare protein structures using PrepWizard.

Example usage::

>>> from schrodinger.seam.io import chemio
>>> with beam.Pipeline() as p:
...     _ = (p
...     | chemio.ReadStructuresFromFile(infile)
...     | ProteinPrep(run_epik=False, cap_termini=True)
...     | chemio.WriteStructuresToFile('output.mae'))

Input: Structure
Output: Structure

Configuration

  • settings PrepWizardSettings | None
    • Default: None
    • Optional prebuilt PrepWizardSettings instance.
  • force_field Literal
    • Default: 'OPLS_2005'
    • Allowed: 'OPLS_2005', 'S-OPLS'
    • Force field used during refinement.
  • preserve_st_titles bool
    • Default: False
    • Keep the original structure titles on output.
  • max_states int
    • Default: 1
    • Maximum number of protonation/tautomeric states per input structure.
  • preprocess bool
    • Default: True
    • Run the preprocessing stage.
  • assign_bond_orders bool
    • Default: True
    • Reassign bond orders during preprocessing.
  • use_ccd bool
    • Default: True
    • Use the Chemical Component Dictionary when assigning bond orders.
  • skip_assigned_residues bool
    • Default: False
    • Skip residues that already have assigned bond orders.
  • add_missing_inter_residue_bonds bool
    • Default: True
    • Add missing inter-residue bonds (requires sequence data).
  • add_terminal_oxygens bool
    • Default: False
    • Add terminal oxygen atoms where missing.
  • add_hydrogens bool
    • Default: False
    • Add hydrogens to the structure.
  • readd_hydrogens bool
    • Default: True
    • Remove existing hydrogens and re-add them from scratch.
  • idealize_hydrogen_tf bool
    • Default: True
    • Idealize hydrogen positions after addition.
  • preprocess_delete_far_waters bool
    • Default: False
    • Delete waters far from het groups during preprocessing.
  • preprocess_watdist float | None
    • Default: None
    • Distance cutoff (Å) for preprocess water deletion; defaults to watdist.
  • delete_far_waters bool
    • Default: True
    • Delete waters far from het groups during cleanup.
  • watdist float
    • Default: 5.0
    • Distance cutoff (Å) for water deletion.
  • delete_nonbridging_waters bool
    • Default: False
    • Delete waters that do not bridge two or more H-bond partners.
  • delwater_hbond_cutoff int
    • Default: 0
    • Minimum H-bond count to retain a water (used with non-bridging deletion).
  • treat_metals bool
    • Default: True
    • Apply special metal-coordination treatment.
  • treat_disulfides bool
    • Default: True
    • Detect and treat disulfide bridges.
  • treat_glycosylation bool
    • Default: True
    • Detect and treat glycosylation linkages.
  • treat_palmitoylation bool
    • Default: False
    • Detect and treat palmitoylation linkages.
  • selenomethionines bool
    • Default: True
    • Convert selenomethionines to methionines.
  • cap_termini bool
    • Default: False
    • Cap chain N- and C-termini with ACE/NMA groups.
  • cap_termini_min_atoms int
    • Default: 200
    • Minimum atom count for a chain to be eligible for terminus capping.
  • fillsidechains bool
    • Default: False
    • Build missing side chains.
  • fillloops bool
    • Default: False
    • Build missing loops.
  • custom_fasta_file FilePath | None
    • Default: None
    • Path to a custom FASTA file used when filling loops.
  • annotate_gpcr bool
    • Default: False
    • Annotate GPCR-specific features.
  • antibody_cdr_scheme Literal
    • Default: 'Kabat'
    • Allowed: 'Chothia', 'Kabat', 'IMGT', 'EnhancedChothia', 'AHo'
    • CDR-numbering scheme used for antibody chains.
  • renumber_ab_residues bool
    • Default: False
    • Renumber antibody residues to match the CDR scheme.
  • tcr_cdr_scheme Literal | None
    • Default: 'IMGT'
    • Allowed: 'Chothia', 'Kabat', 'IMGT', 'EnhancedChothia', 'AHo'
    • CDR-numbering scheme used for TCR chains; None disables TCR handling.
  • renumber_tcr_residues bool
    • Default: False
    • Renumber TCR residues to match the CDR scheme.
  • run_epik bool
    • Default: True
    • Run Epik to enumerate protonation/tautomeric het states.
  • include_epik_states bool
    • Default: True
    • Include Epik-generated states in the output.
  • epik_pH float
    • Default: 7.4
    • Target pH passed to Epik.
  • epik_pHt float
    • Default: 2.0
    • pH tolerance window passed to Epik.
  • xtal bool
    • Default: False
    • Treat input as a crystal (preserve packing).
  • run_protassign bool
    • Default: True
    • Run H-bond / protonation assignment.
  • sample_water_orientation bool
    • Default: True
    • Sample water orientations during protassign.
  • use_propka bool
    • Default: True
    • Use PROPKA for pKa predictions during protassign.
  • propka_pH float
    • Default: 7.4
    • Target pH used by PROPKA.
  • pH float
    • Default: 7.4
    • Overall target pH for protonation states.
  • simplified_pH Literal
    • Default: 'neutral'
    • Allowed: 'very_low', 'low', 'neutral', 'high'
    • pH label used when PROPKA is disabled.
  • label_pkas bool
    • Default: False
    • Annotate residues with predicted pKa values.
  • minimize_adj_h bool
    • Default: False
    • Minimize hydrogens adjacent to adjusted titratable groups.
  • protassign_number_sequential_cycles int | None
    • Default: None
    • Number of sequential protassign cycles to run.
  • protassign_max_cluster_size int | None
    • Default: None
    • Maximum H-bond cluster size considered.
  • run_refine bool
    • Default: True
    • Run restrained minimization on the final structure.
  • rmsd float
    • Default: 0.3
    • Heavy-atom RMSD convergence threshold (Å) for refinement.
  • fixheavy bool
    • Default: False
    • Restrain heavy atoms during refinement.
  • reference_struct_path FilePath | None
    • Default: None
    • Path to a reference Structure for alignment; loaded lazily so the Structure isn't serialized across the pipeline.
  • use_PDB_pH bool
    • Default: False
    • Use a PDB-derived pH instead of the explicit pH.
  • force_list list[str]
    • Default: []
    • Residue identifiers forced to specific states.

ProtonateLigands

Enumerate protonation states and return output structures.

Example usage::

>>> from schrodinger import adapter
>>> st1 = adapter.to_structure('CC(=O)O')
>>> st1.title = "acetic_acid"
>>> with beam.Pipeline() as p:
...     structures = (p
...         | beam.Create([st1])
...         | ProtonateLigands(ph=7.0)
...         | beam.Map(lambda st: st.title)
...         | beam.LogElements())

See EpikXConfig for available configuration options.

Input: Structure
Output: Structure

Configuration

  • legacy_arg_string str | None
    • Default: None
    • Legacy CLI argument string (mutually exclusive with other parameters)
  • ph float
    • Default: 7.4
    • Query pH for protonation state prediction
  • pht float
    • Default: 2.0
    • pH tolerance for generated structures (mutually exclusive with population_cutoff)
  • population_cutoff float | None
    • Default: None
    • State population cutoff (mutually exclusive with pht)
  • max_structures int
    • Default: 16
    • Maximum number of returned structures per input
  • max_tautomers int
    • Default: 8
    • Maximum number of tautomers to enumerate
  • max_atoms int
    • Default: 200
    • Max atoms for state enumeration
  • max_atoms_pka int
    • Default: 500
    • Max atoms for pKa prediction
  • charge_low int
    • Default: -2
    • Lower bound for the charge level window
  • charge_high int
    • Default: 2
    • Upper bound for the charge level window
  • highest_pka float
    • Default: 14.0
    • Highest pKa value to display
  • lowest_pka float
    • Default: 0.0
    • Lowest pKa value to display
  • query_only bool
    • Default: False
    • Query pKas only, do not predict states
  • taut_only bool
    • Default: False
    • Tautomerize only, do not evaluate pKas
  • no_tautomerize bool
    • Default: False
    • Do not tautomerize
  • best_neutral bool
    • Default: False
    • Provide the most populated neutral tautomer
  • best_neutral_zwit bool
    • Default: False
    • Provide neutral tautomer and optionally a zwitterion
  • metal_binding bool
    • Default: False
    • Generate states appropriate for metal ion binding
  • racemize bool
    • Default: False
    • Enumerate and score individual racemers
  • retain_input_state bool
    • Default: False
    • Retain input ionization/tautomerization state
  • refine bool
    • Default: True
    • Refine prioritization step to remove unwanted states
  • add_hydrogen_coords bool
    • Default: False
    • Add coordinates to non-polar hydrogens
  • single_model bool
    • Default: False
    • Use single best model instead of ensemble
  • custom_model str | None
    • Default: None
    • Path to custom model
  • cpu_only bool
    • Default: False
    • Run on CPU only (no GPU acceleration)
  • match_exp str | None
    • Default: None
    • Property label of experimental pKa value for matching
  • report bool
    • Default: False
    • Generate pKa report (single structure only)

QikProp

A PTransform that computes QikProp ADME properties on structures.

Returns an OutcomePCollections with:

  • main: PCollection[Structure] of structures with QikProp properties

Example usage::

>>> with beam.Pipeline() as p:
...     result = (p
...         | beam.Create([st])
...         | ComputeQikPropProperties(fast=True))
...     structures_with_props = result.main

See QikPropConfig for all available configuration options.

Input: Structure
Output: Structure

Configuration

  • fast bool
    • Default: False
    • Run in fast mode (skip dipole/HOMO/LUMO)
  • neutralize bool
    • Default: True
    • Neutralize molecules before processing
  • altclass bool
    • Default: False
    • Alternative SASA/PSA class definition
  • altprobe float | None
    • Default: None
    • Alternative probe radius (must be positive)
  • recap bool
    • Default: False
    • CombiGlide preprocessing
  • nofailout bool
    • Default: False
    • Do not write failed structures to output
  • legacy_arg_string str | None
    • Default: None
    • Legacy CLI args (mutually exclusive with explicit fields)

QuickProperties

Compute RDKit molecular properties on structures.

Lightweight, fast, in-process property calculation. Properties are written as structure-level properties with r_qkp_, i_qkp_, or b_qkp_ prefixes.

Example usage in YAML::

pipeline:
  type: chain
  transforms:
    - type: CreateStructuresFromSmiles
      config:
        elements:
          - "c1ccccc1"
    - type: QuickProperties
      config:
        properties:
          - MW
          - AlogP
          - HBD
    - type: WriteStructures
      config:
        output_file: "output.maegz"

Input: Structure
Output: Structure

Configuration

  • properties list[str] | None
    • Default: None
    • Property keys to compute. If omitted, all are computed.

ReadFileToStructures

Read Structure objects from a file.

This is a source transform that reads structures from a file.

Example usage in YAML::

pipeline:
  - type: ReadFileToStructures
    config:
      input_file: "ligands.maegz"

Output: Structure

Configuration

  • input_file str
    • Required
    • Path to the structure file to read.

ReadMolsFromFile

Read RDKit Mol objects from a SMILES file.

This is a source transform that reads molecules from a file containing newline-separated SMILES strings.

Example usage in YAML::

pipeline:
  - type: ReadMolsFromFile
    config:
      input_file: "ligands.smi"

Output: Mol

Configuration

  • input_file str
    • Required
    • Path to the SMILES file to read.
  • silent bool
    • Default: False
    • If True, suppress warnings for invalid SMILES.

RunEpikX

Run EpikX on input structures.

Example usage::

>>> from schrodinger import adapter
>>> st1 = adapter.to_structure('CC(=O)O')
>>> st1.title = "acetic_acid"
>>> with beam.Pipeline() as p:
...     results = (p
...         | beam.Create([st1])
...         | RunEpikX(ph=7.0)
...         | beam.Map(lambda r: (r.source_id, r.success, len(r.output_structures)))
...         | beam.LogElements())

See EpikXConfig for available configuration options.

Input: Structure
Output: EpikXResult

Configuration

  • legacy_arg_string str | None
    • Default: None
    • Legacy CLI argument string (mutually exclusive with other parameters)
  • ph float
    • Default: 7.4
    • Query pH for protonation state prediction
  • pht float
    • Default: 2.0
    • pH tolerance for generated structures (mutually exclusive with population_cutoff)
  • population_cutoff float | None
    • Default: None
    • State population cutoff (mutually exclusive with pht)
  • max_structures int
    • Default: 16
    • Maximum number of returned structures per input
  • max_tautomers int
    • Default: 8
    • Maximum number of tautomers to enumerate
  • max_atoms int
    • Default: 200
    • Max atoms for state enumeration
  • max_atoms_pka int
    • Default: 500
    • Max atoms for pKa prediction
  • charge_low int
    • Default: -2
    • Lower bound for the charge level window
  • charge_high int
    • Default: 2
    • Upper bound for the charge level window
  • highest_pka float
    • Default: 14.0
    • Highest pKa value to display
  • lowest_pka float
    • Default: 0.0
    • Lowest pKa value to display
  • query_only bool
    • Default: False
    • Query pKas only, do not predict states
  • taut_only bool
    • Default: False
    • Tautomerize only, do not evaluate pKas
  • no_tautomerize bool
    • Default: False
    • Do not tautomerize
  • best_neutral bool
    • Default: False
    • Provide the most populated neutral tautomer
  • best_neutral_zwit bool
    • Default: False
    • Provide neutral tautomer and optionally a zwitterion
  • metal_binding bool
    • Default: False
    • Generate states appropriate for metal ion binding
  • racemize bool
    • Default: False
    • Enumerate and score individual racemers
  • retain_input_state bool
    • Default: False
    • Retain input ionization/tautomerization state
  • refine bool
    • Default: True
    • Refine prioritization step to remove unwanted states
  • add_hydrogen_coords bool
    • Default: False
    • Add coordinates to non-polar hydrogens
  • single_model bool
    • Default: False
    • Use single best model instead of ensemble
  • custom_model str | None
    • Default: None
    • Path to custom model
  • cpu_only bool
    • Default: False
    • Run on CPU only (no GPU acceleration)
  • match_exp str | None
    • Default: None
    • Property label of experimental pKa value for matching
  • report bool
    • Default: False
    • Generate pKa report (single structure only)

SimilarityScore

Score structures by similarity to reference molecules and yield the

annotated structures directly.

Returns an OutcomePCollections with:

  • main: PCollection[Structure] annotated with similarity properties
  • dropped: PCollection[DroppedRecord] for inputs routed to dropped by RunSimilarityScore (fingerprint failure, no references scored, or below min_similarity)

Example usage::

>>> with beam.Pipeline() as p:
...     scored = (p
...         | beam.Create([st1, st2])
...         | SimilarityScore(reference_file='refs.sdf'))

See SimilarityScoreConfig for available configuration options.

Input: Structure
Output: Structure

Configuration

  • reference_file str | None
    • Default: None
    • Path to a SDF / MAE / SMI / CSV reference file
  • reference_smiles list[str] | None
    • Default: None
    • Inline list of SMILES strings for reference set
  • fingerprint Fingerprint
    • Default: 'ECFP4'
    • Allowed: 'ECFP4', 'ECFP6', 'FCFP4', 'FCFP6'
    • Fingerprint type to use
  • metric SimilarityMetric
    • Default: 'tanimoto'
    • Allowed: 'tanimoto', 'dice', 'cosine'
    • Similarity metric to use
  • top_k int
    • Default: 1
    • Number of top neighbors to return
  • min_similarity float | None
    • Default: None
    • Minimum similarity threshold

SmilesToMol

Convert SMILES strings to RDKit Mol objects.

Example usage in YAML::

pipeline:
  - type: CreateStructuresFromSmiles
    config:
      elements:
        - "c1ccccc1"
  - type: SmilesToMol

Input: str
Output: Mol

Configuration

  • label Any
    • Default: None

SmilesToStructure

Convert SMILES strings to Schrodinger Structure objects.

Example usage in YAML::

pipeline:
  - type: Create
    config:
      elements:
        - "c1ccccc1"
  - type: SmilesToStructure

Input: str
Output: Structure

Configuration

  • label Any
    • Default: None

StructurePropertiesToRow

Extract structure properties and built-in attributes into Beam Rows.

Properties can be specified as plain strings (for valid Python identifiers) or as single-key dicts to alias non-identifier property names

Example usage in YAML::

pipeline:
  - type: ReadFileToStructures
    config:
      input_file: "docked.maegz"
  - type: StructurePropertiesToRow
    config:
      properties:
        - "title"
        - "r_i_GlideScore"
        - rotor_count: "i_qp_#rotor"
        - qp_ip_ev: "r_qp_IP(eV)"

Input: Structure

Configuration

  • properties list[dict[str, str] | str]
    • Required
    • Property specifications to extract. Each element is either a string or a {output_name: property_key} dict for aliasing properties whose keys are not valid Python identifiers.
  • include_structure bool
    • Default: False
    • If True, include the original Structure object in a DEFAULT_STRUCTURE_NAME field of the output Row.
  • strict bool
    • Default: True
    • If True, raise an error if any specified property is not found on a structure. If False, missing properties will be set to None.

StructureToMol

Convert Schrodinger Structure objects to RDKit Mol objects.

Example usage in YAML::

pipeline:
  - type: ReadFileToStructures
    config:
      input_file: "ligands.maegz"
  - type: StructureToMol

Input: Structure
Output: Mol

Configuration

  • label Any
    • Default: None

StructureToRow

Convert Structure objects to Beam Rows.

This transform wraps each Structure in a Row with a 'structure' field, enabling use of Row-based transforms like MapToFields.

Example usage in YAML::

pipeline:
  - type: CreateStructuresFromSmiles
    config:
      elements:
        - "c1ccccc1"
  - type: LigFilter
    config:
      criteria: ["Num_heavy_atoms > 3"]
  - type: StructureToRow
  - type: MapToFields
    config:
      fields:
        title:
          callable: "lambda row: row.structure.title"

Input: Structure

Configuration

  • label Any
    • Default: None

StructureToSmiles

Convert Schrodinger Structure objects to SMILES strings.

Example usage in YAML::

pipeline:
  - type: ReadFileToStructures
    config:
      input_file: "ligands.maegz"
  - type: StructureToSmiles

Input: Structure
Output: str

Configuration

  • label Any
    • Default: None

WrapInRow

Wrap values in a Row with a specified field name.

This is useful when a transform returns bare values (like Structure) but the pipeline expects Row objects. Wrap the values in a Row so subsequent transforms can access them via the field name.

Example usage in YAML::

pipeline:
  - type: CreateMolsFromSmiles
    config:
      elements:
        - "c1ccccc1"
  - type: WrapInRow
    config:
      field_name: "mol"

This would transform a bare Mol into Row(mol=Mol(...)).

Configuration

  • field_name str
    • Required
    • The name of the Row field to create.

WriteMolsToSmilesFile

Write RDKit Mol objects to a SMILES file.

This is a sink transform that writes molecules to a file as newline-separated SMILES strings. It passes through the input molecules unchanged for chaining.

Example usage in YAML::

pipeline:
  - type: CreateMolsFromSmiles
    config:
      elements:
        - "c1ccccc1"
  - type: WriteMolsToSmilesFile
    config:
      output_file: "output.smi"

Input: Mol
Output: Mol

Configuration

  • output_file str
    • Required
    • Path to the output SMILES file.

WriteStructures

Write Structure objects to a file.

This is a sink transform that writes structures to a file. It passes through the input structures unchanged for chaining.

Example usage in YAML::

pipeline:
  - type: ReadFileToStructures
    config:
      input_file: "ligands.maegz"
  - type: LigFilter
    config:
      criteria: ["Num_heavy_atoms > 5"]
  - type: WriteStructures
    config:
      output_file: "filtered.maegz"

Input: Structure
Output: Structure

Configuration

  • output_file str
    • Required
    • Path to the output structure file.

glide.Dock

Dock structures with Glide and yield the resulting poses.

This is a convenience wrapper that runs docking and yields only the successfully docked poses. Failed inputs are silently dropped.

Example usage::

>>> from schrodinger.application.transforms import glide
>>> with beam.Pipeline() as p:
...     poses = (p
...         | chemio.ReadStructuresFromFile('ligands.maegz')
...         | glide.Dock(grid_file='receptor.zip', precision='SP')
...         | chemio.WriteStructuresToFile('poses.maegz'))

See GlideDockingConfig for all available configuration options.

Input: Structure
Output: Structure

Configuration

  • grid_file FilePath
    • Required
    • Path to the Glide grid file
  • glide_in_file FilePath | None
    • Default: None
    • Path to a glide.in configuration file
  • precision Literal | None
    • Default: None
    • Allowed: 'SP', 'HTVS', 'XP'
    • Docking precision level
  • poses_per_lig int
    • Default: 1
    • Number of poses to return per ligand
  • ref_ligand_file FilePath | None
    • Default: None
    • Path to reference ligand for constraints
  • constraint_type Literal
    • Default: 'core'
    • Allowed: 'core', 'shape', 'both'
    • How ref_ligand constraints are applied
  • report_strain_energy bool
    • Default: False
    • Calculate post-dock strain energy
  • use_confgenx bool
    • Default: False
    • Enable ConfGenX conformer generation within docking
  • opls_dir DirectoryPath | None
    • Default: None
    • Path to custom OPLS directory (enables OPLS4)
  • mcs_timeout_no_skip bool
    • Default: False
    • Prevent skipping on MCS timeout
  • glide_keywords dict[str, Any] | None
    • Default: None
    • Additional Glide keywords (see Glide documentation)

ldmodels.ExtractStructure

Extract a Structure-valued field from a Row.

Input: Row
Output: Structure

Configuration

  • field str
    • Default: 'structure'

ldmodels.StructureToRow

Convert Structures to Rows for an LD-model row sink.

Input: Structure
Output: Row

Configuration

  • properties list[dict[str, str] | str] | None
    • Default: None
    • List of property keys / built-in attribute names to extract from each structure. Each element is either a plain string (when the key is a valid field name) or a {output_name: property_key} dict to alias properties with non-identifier keys.
  • strict bool
    • Default: False
    • If True, raise when a requested property is missing. If False, missing properties yield empty cells in the LD output.

ReadFromChembl

Read molecules from the ChEMBL database.

This is a source transform that fetches molecules from the ChEMBL API and yields Structure objects with the ChEMBL ID stored as property s_seam_chembl_id.

Example usage in YAML::

pipeline:
  - type: ReadFromChembl
    config:
      sample_size: 100

Output: Structure

Configuration

  • sample_size int | None
    • Default: None
    • Maximum number of molecules to fetch. If not provided, all available molecules will be fetched.

ReadFromPDB

Read structures from the PDB (Protein Data Bank) by PDB codes.

This is a source transform that downloads PDB files and yields Structure objects with the PDB code stored as property s_seam_pdb_code.

Example usage in YAML::

pipeline:
  - type: ReadFromPDB
    config:
      pdb_codes:
        - "1A2B"
        - "3C4D"
      preserve_caps: false

Output: Structure

Configuration

  • pdb_codes list[str]
    • Required
    • List of PDB codes to download.
  • preserve_caps bool
    • Default: False
    • If True, preserve original capitalization.

WriteToRowSink

A transform object used to modify one or more PCollections.

Subclasses must define an expand() method that will be used when the transform is applied to some arguments. Typical usage pattern will be:

input | CustomTransform(...)

The expand() method of the CustomTransform object passed in will be called with input as an argument.

Configuration

  • label Any
    • Default: None

ReadFromRowSource

A transform object used to modify one or more PCollections.

Subclasses must define an expand() method that will be used when the transform is applied to some arguments. Typical usage pattern will be:

input | CustomTransform(...)

The expand() method of the CustomTransform object passed in will be called with input as an argument.

Configuration

  • label Any
    • Default: None