Skip to content

Solvent Transfer Free Energy

Solvent Transfer Free Energy

Predict how favorably a molecule moves from one solvent into another.

Solvent Transfer Free Energy calculates how favorably one molecule moves from a first solvent into a second solvent, reported as a transfer free energy, ΔG_transfer, in kcal/mol. A common example is the octanol to water transfer that underlies partition coefficients (logP).

A negative ΔG_transfer means the molecule prefers the second solvent over the first. A positive value means it prefers the first.

Under the hood it runs an alchemical free energy simulation in each solvent and takes the difference: the molecule is gradually switched off from solvent A and from solvent B, and the gap between those two switch off costs is the transfer free energy. You can set either solvent to the text None to make that side a vacuum (vapor) reference, which turns the job into an absolute solvation free energy.

Use it when you care about partitioning between two phases, for example water versus an oily phase, which is the basis of logP and logD style measures of how a drug distributes in the body. If one of your two phases is vacuum, you are really computing an absolute solvation free energy, and you may prefer the dedicated Absolute Aqueous Solvation Free Energy or Absolute Nonaqueous Solvation Free Energy tools.

Provide exactly one of smiles_solute or helm. Set a solvent to the text None to use vacuum for that leg.

InputRequiredWhat it is
smiles_soluteone of smiles_solute or helmSMILES string of the solute, the molecule being transferred.
helmone of smiles_solute or helmHELM2 notation for a peptide solute, for example PEPTIDE1{A.G.F.K.L}$$$$V2.0.
conformer_methodno, default etkdg3D shape generator used only for HELM input. etkdg is fast, xtb is slower but better. Ignored for SMILES input.
smiles_solvent_ayesSMILES string of the first solvent. Use the text None for vacuum.
smiles_solvent_byesSMILES string of the second solvent. Use the text None for vacuum.
assign_protonation_statesno, default trueProtonates the solute automatically at the given pH. Turn off if your input is already protonated.
phno, default 7.0pH used to decide protonation.
solvent_equil_lengthno, default 0.08 nsEquilibration length for the real solvent leg or legs.
solvent_prod_lengthno, default 0.4 nsProduction length for the real solvent leg or legs.
vacuum_equil_lengthno, default 0.08 nsEquilibration length for the vacuum leg, used when a solvent is set to None.
vacuum_prod_lengthno, default 0.4 nsProduction length for the vacuum leg.
platformno, default CUDACompute platform, one of CUDA, OpenCL, CPU, or Reference.
protocol_repeatsno, default 3, minimum 1Number of independent replicas. The reported uncertainty combines the per replica uncertainty with the spread between replicas.
keep_dirsno, default falsePreserves the scratch and output directories so you can download them. Leave off to save storage.

Longer simulation lengths and more repeats give more reliable numbers, but cost more runtime and credits.

Submit your own molecule and two solvents from Azulene Studio, the Python SDK, or the CLI. New here? The Get started page walks through installing, logging in, and running a ready made example first.

Open Solvent Transfer Free Energy from the tools list, then on the Inputs and Parameters step enter the solute as a SMILES string (or a peptide as HELM) and both solvents as SMILES strings, using the text None if you want one side to be vacuum, adjust the simulation lengths if you want, then Review and Submit.

from opal import jobs
result = jobs.submit(
job_type="solvent_transfer_free_energy",
input_data={
"smiles_solute": "CCO",
"smiles_solvent_a": "None",
"smiles_solvent_b": "O",
"protocol_repeats": 3,
},
)

Pass the inputs as a JSON string.

Terminal window
opal jobs submit --job-type solvent_transfer_free_energy \
--input-data '{"smiles_solute": "CCO", "smiles_solvent_a": "None", "smiles_solvent_b": "O", "protocol_repeats": 3}'

The main output is dg_solvation, which here carries the transfer free energy ΔG_transfer, reported with an uncertainty, a dg_solvation_unit (kcal/mol), and an uncertainty_unit. In Azulene Studio this shows as a single hero number labelled “ΔG transfer”. The solute is echoed back in smiles.

A negative value means the molecule prefers the second solvent (smiles_solvent_b) over the first. More protocol_repeats lower the uncertainty. If keep_dirs is on, the full simulation outputs can be downloaded, along with per leg mixing statistics under replica_transition_statistics.

Keep the simulation lengths short for a quick first run. For reliable numbers, use longer production lengths and at least 3 repeats. This tool runs on a GPU, and runtime grows with the simulation lengths and the number of repeats. Both solvents must be given as SMILES strings, or the text None for vacuum, not as solvent names.