Solvent Transfer Free Energy
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.
When to use it
Section titled “When to use it”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.
Inputs
Section titled “Inputs”Provide exactly one of smiles_solute or helm. Set a solvent to the text None to use vacuum for that leg.
| Input | Required | What it is |
|---|---|---|
smiles_solute | one of smiles_solute or helm | SMILES string of the solute, the molecule being transferred. |
helm | one of smiles_solute or helm | HELM2 notation for a peptide solute, for example PEPTIDE1{A.G.F.K.L}$$$$V2.0. |
conformer_method | no, default etkdg | 3D shape generator used only for HELM input. etkdg is fast, xtb is slower but better. Ignored for SMILES input. |
smiles_solvent_a | yes | SMILES string of the first solvent. Use the text None for vacuum. |
smiles_solvent_b | yes | SMILES string of the second solvent. Use the text None for vacuum. |
assign_protonation_states | no, default true | Protonates the solute automatically at the given pH. Turn off if your input is already protonated. |
ph | no, default 7.0 | pH used to decide protonation. |
solvent_equil_length | no, default 0.08 ns | Equilibration length for the real solvent leg or legs. |
solvent_prod_length | no, default 0.4 ns | Production length for the real solvent leg or legs. |
vacuum_equil_length | no, default 0.08 ns | Equilibration length for the vacuum leg, used when a solvent is set to None. |
vacuum_prod_length | no, default 0.4 ns | Production length for the vacuum leg. |
platform | no, default CUDA | Compute platform, one of CUDA, OpenCL, CPU, or Reference. |
protocol_repeats | no, default 3, minimum 1 | Number of independent replicas. The reported uncertainty combines the per replica uncertainty with the spread between replicas. |
keep_dirs | no, default false | Preserves 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.
How to run it
Section titled “How to run it”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.
In Azulene Studio
Section titled “In Azulene Studio”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 the Python SDK
Section titled “From the Python SDK”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, },)From the CLI
Section titled “From the CLI”Pass the inputs as a JSON string.
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}'Reading the result
Section titled “Reading the result”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.