schrodinger.application.transforms.similarity module

Similarity scoring transforms for comparing query structures against reference molecules using fingerprint-based similarity metrics.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.transforms.similarity.Fingerprint

Bases: StrEnum

ECFP4 = 'ECFP4'
ECFP6 = 'ECFP6'
FCFP4 = 'FCFP4'
FCFP6 = 'FCFP6'
property radius: int
property is_feature: bool
build_generator()
class schrodinger.application.transforms.similarity.SimilarityMetric

Bases: StrEnum

TANIMOTO = 'tanimoto'
DICE = 'dice'
COSINE = 'cosine'
compute(fp1, fp2) → float
compute_fingerprint(fpgen, mol)
class schrodinger.application.transforms.similarity.NeighborHit(name: str, smiles: str, score: float)

Bases: object

A single reference neighbor match with its similarity score.

Parameters:
  • name – Reference molecule title.

  • smiles – Reference molecule SMILES.

  • score – Similarity score.

name: str
smiles: str
score: float
__init__(name: str, smiles: str, score: float) → None
class schrodinger.application.transforms.similarity.SimilarityScoreResult(*, source_id: SourceID, structure: Structure, neighbors: list[NeighborHit])

Bases: BaseModel

Result of scoring a single structure against reference molecules.

Inputs that fail to score against any reference or fall below min_similarity are routed to dropped instead of yielding a result.

Parameters:
  • source_id – Source ID for tracking the input.

  • structure – The input structure, annotated with similarity properties.

  • neighbors – Top-k neighbor hits sorted by descending score.

source_id: SourceID
structure: Structure
neighbors: list[NeighborHit]
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}

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

class schrodinger.application.transforms.similarity.SimilarityScoreConfig(*, reference_file: str | None = None, reference_smiles: list[str] | None = None, fingerprint: Fingerprint = Fingerprint.ECFP4, metric: SimilarityMetric = SimilarityMetric.TANIMOTO, top_k: int = 1, min_similarity: float | None = None, error_handling: ErrorHandling | None = None)

Bases: BaseModel

Configuration for similarity scoring transforms.

Exactly one of reference_file or reference_smiles must be set.

Parameters:
  • reference_file – Path to a reference file (SDF, MAE, SMI, or CSV).

  • reference_smiles – Inline list of SMILES strings, each optionally followed by a name.

  • fingerprint – Type of Morgan fingerprint to generate.

  • metric – Similarity metric to use for scoring.

  • top_k – Number of nearest neighbors to return per query.

  • min_similarity – Minimum similarity threshold for filtering.

  • error_handling – Error handling configuration.

reference_file: str | None
reference_smiles: list[str] | None
fingerprint: Fingerprint
metric: SimilarityMetric
top_k: int
min_similarity: float | None
error_handling: ErrorHandling | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}

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

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

Bases: PTransformWithConfig

A PTransform that scores structures against reference molecules.

Returns an OutcomePCollections with:

  • main: PCollection[SimilarityScoreResult] for successful inputs

  • dropped: PCollection[DroppedRecord] for inputs that failed to fingerprint, failed to score against any reference, or fell below min_similarity

See SimilarityScoreConfig for available configuration options.

config_class

alias of SimilarityScoreConfig

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

Bases: PTransformWithConfig

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.

config_class

alias of SimilarityScoreConfig