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 str | list[int] | 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 Iterable[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 Iterable[str]
    • Required
    • List of SMILES strings to convert to structures.

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.

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: Structure | Mol
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: Structure | Mol
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 Annotated[Path, PathType(path_type='file')] | None
    • Default: None
    • Optional filter file path (mutually exclusive with filter_string)
  • legacy_infile_path Annotated[Path, PathType(path_type='file')] | 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.

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 Annotated[float, Gt(gt=0)] | 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)

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[str | dict[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 Path
    • Required
    • Path to the Glide grid file
  • glide_in_file Annotated[Path, PathType(path_type='file')] | 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 Annotated[Path, PathType(path_type='file')] | 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 Annotated[Path, PathType(path_type='dir')] | 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[str | dict[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