schrodinger.application.transforms.ffbuilder module

Apache Beam transforms for FFBuilder force field parameterization.

Provides transforms for generating missing torsion parameters using the ffbuilder CLI tool, and for producing OPLS custom parameter archives.

class schrodinger.application.transforms.ffbuilder.FFBuilderConfig(*, input_opls_archive: ~typing.Optional[~pathlib.Path] = None, output_opls_archive: ~pathlib.Path, cli_args: list[str] = <factory>, jobname: str | None = None, host: str | None = None, sub_host: str | None = None, schrodinger_path: str = <factory>)

Bases: BaseModel

Configuration for the RunFFBuilder transform.

Parameters:
  • cli_args – Additional command-line arguments passed through to the ffbuilder executable. Must not include reserved flags such as -HOST, -OPLSDIR, or -JOBNAME.

  • jobname – Optional predictable FFBuilder job name.

  • host – Job server host for submission (the FFBuilder -HOST). Defaults to the current job’s driver host, or localhost outside a job.

  • sub_host – Optional job server host for FFBuilder’s -SUBHOST. Defaults to the current job’s subhost, including its CPU count.

  • input_opls_archive – Existing custom OPLS archive to include when running ffbuilder.

  • output_opls_archive – Custom OPLS archive produced by this transform.

  • schrodinger_path – Path to the Schrodinger installation. Defaults to the SCHRODINGER environment variable.

input_opls_archive: Optional[Path]
output_opls_archive: Path
cli_args: list[str]
jobname: str | None
host: str | None
sub_host: str | None
schrodinger_path: str
model_config: ClassVar[ConfigDict] = {'frozen': True}

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

schrodinger.application.transforms.ffbuilder.register_ffbuilder_files(jsb: JobSpecificationArgsBuilder, config: FFBuilderConfig) → None

Register OPLS archives needed by FFBuilder.

class schrodinger.application.transforms.ffbuilder.RunFFBuilder(**kwargs)

Bases: PTransformWithConfig

Run FFBuilder to generate missing torsion parameters.

Submits ffbuilder as a jobcontrol job and writes any newly generated parameters to output_opls_archive. The original structures are passed through unchanged; the artifact this transform produces is the populated output_opls_archive.

Example usage:

>>> with beam.Pipeline() as p:
...     structures = (p
...         | beam.Create([st])
...         | RunFFBuilder(input_opls_archive='existing.opls',
...                        output_opls_archive='merged.opls',
...                        host='localhost'))
...     # When new parameters are generated, 'merged.opls' contains
...     # them and any existing custom parameters. Otherwise, the
...     # output archive is not written.

See FFBuilderConfig for available configuration options.

config_class

alias of FFBuilderConfig

__init__(**kwargs)

Initialize the transform with configuration.

All keyword arguments are passed to the config_class constructor to create a validated configuration instance stored as self.config.

Parameters:
  • _config – An existing configuration model

  • kwargs – Configuration parameters for the config_class

Raises:
  • AttributeError – If config_class is not defined on the subclass

  • ValueError – If _config is combined with kwargs

  • ValidationError – If the configuration parameters are invalid