Skip to content

Solubility

Solubility workflow - predict molecular solubility in various solvents.

SolubilityValue dataclass

SolubilityValue(
    temperature: float,
    solubility: float,
    uncertainty: float | None = None,
)

Solubility measurement at a specific temperature.

Parameters:

Name Type Description Default
temperature float

Temperature in Kelvin.

required
solubility float

Solubility in log(mol/L).

required
uncertainty float | None

Uncertainty in the solubility prediction.

None

SolubilityEntry dataclass

SolubilityEntry(
    solvent: str, values: tuple[SolubilityValue, ...]
)

Solubility results for a single solvent.

Parameters:

Name Type Description Default
solvent str

Solvent SMILES.

required
values tuple[SolubilityValue, ...]

Solubility values at each temperature.

required

SolubilityResult dataclass

SolubilityResult(
    workflow_data: dict[str, Any],
    workflow_type: str,
    workflow_uuid: str,
    complete: bool = True,
)

Bases: WorkflowResult

Result from an aqueous-solubility workflow.

solubilities property

solubilities: list[SolubilityEntry]

Solubility results per solvent, with each value paired to its temperature.

submit_solubility_workflow

submit_solubility_workflow(
    initial_smiles: SMILES,
    method: Literal[
        "fastsolv", "kingfisher", "esol"
    ] = "fastsolv",
    solvents: list[str] | None = None,
    temperatures: list[float] | None = None,
    name: str = "Solubility Workflow",
    folder_uuid: str | None = None,
    folder: Folder | None = None,
    max_credits: int | None = None,
    webhook_url: str | None = None,
    is_draft: bool = False,
) -> Workflow

Submits a solubility workflow to the API.

Parameters:

Name Type Description Default
initial_smiles SMILES

Molecule to calculate solubility for. Accepts a SMILES string or any molecule type (RowanMolecule, stjames.Molecule, RDKit Mol, or dict). The molecule must have a SMILES string associated with it, as solubility models are 2D/SMILES-based and do not use 3D coordinates.

required
method Literal['fastsolv', 'kingfisher', 'esol']

Solubility prediction method: - "fastsolv": ML-based solid solubility. Supports arbitrary solvents and temperatures. - "kingfisher": ML-based aqueous solubility. Water only, 298.15K only. - "esol": ESOL regression for aqueous solubility. Water only, 298.15K only.

'fastsolv'
solvents list[str] | None

List of solvent names or SMILES. Common names like "ethanol", "water", "thf" are recognized (see COMMON_SOLVENTS). For fastsolv, any solvent SMILES is accepted. For kingfisher/esol, must be ["water"] or ["O"].

None
temperatures list[float] | None

List of temperatures in Kelvin. For fastsolv, any temperatures. For kingfisher/esol, must be [298.15] (room temperature).

None
name str

Name of the workflow.

'Solubility Workflow'
folder_uuid str | None

UUID of the folder to place the workflow in.

None
folder Folder | None

Folder object to store the workflow in.

None
max_credits int | None

Maximum number of credits to use for the workflow.

None
webhook_url str | None

URL that Rowan will POST to when the workflow completes.

None
is_draft bool

If True, submit the workflow as a draft without starting execution.

False

Returns:

Type Description
Workflow

Workflow object representing the submitted workflow.

Raises:

Type Description
ValueError

If the molecule has no SMILES, or solvents/temperatures are incompatible with the method.

requests.HTTPError

If the request to the API fails.

submit_solubility_workflow_group

submit_solubility_workflow_group(
    initial_smileses: list[SMILES],
    method: Literal[
        "fastsolv", "kingfisher", "esol"
    ] = "fastsolv",
    solvents: list[str] | None = None,
    temperatures: list[float] | None = None,
    names: list[str] | None = None,
    folder_uuid: str | None = None,
    folder: Folder | None = None,
    max_credits: int | None = None,
    webhook_url: str | None = None,
) -> list[Workflow]

Submit a batch of solubility workflows as one submission group.

All molecules use the same method, solvents, and temperatures. A batch may contain up to 5,000 molecules. Each molecule is represented by its own Workflow, and all returned workflows share a submission_group_uuid. Use batch_poll_status() to monitor their UUIDs together and retrieve_workflows() to retrieve their records.

Parameters:

Name Type Description Default
initial_smileses list[SMILES]

nonempty list of up to 5,000 solute SMILES strings

required
method Literal['fastsolv', 'kingfisher', 'esol']

solubility prediction method

'fastsolv'
solvents list[str] | None

solvent names or SMILES strings

None
temperatures list[float] | None

temperatures in Kelvin

None
names list[str] | None

optional workflow names; when provided, one per SMILES string

None
folder_uuid str | None

UUID of the folder in which to store the workflows

None
folder Folder | None

folder in which to store the workflows

None
max_credits int | None

maximum credits to use per workflow

None
webhook_url str | None

URL Rowan will POST to when each workflow completes

None

Returns:

Type Description
list[Workflow]

submitted workflows in one submission group