In [1]:
import time
import rowan
from rowan.rowan_rdkit import batch_pka
from rdkit import Chem
In [2]:
# replace this with your account's API key
rowan.api_key = "Your api key here"
In [3]:
amine_smiles = [
    "C1CCCCN1",
    "C1COCCN1",
    "C1CCC=CN1",
    "C1CC(=O)C=CN1",
    "C1CCCC(F)CN1",
    "C1CCC(F)(F)CN1",
]
In [4]:
# build RDKit molecules from SMILES strings
amines = [Chem.MolFromSmiles(s) for s in amine_smiles]
In [5]:
#View as grid
Chem.Draw.MolsToGridImage(amines)
Out[5]:
In [6]:
print("Submitting calculations to remote server, take care if confidential")
Submitting calculations to remote server, take care if confidential
In [7]:
start_time = time.time()
results = batch_pka(amines, mode="rapid")
end_time = time.time()
elapsed = end_time - start_time
In [8]:
print(f"Calculations finished in {elapsed:.1f} s")
Calculations finished in 113.4 s
In [9]:
print("Results:")
for smi, result in zip(amine_smiles, results, strict=True):
    # find the most basic pKa value.
    pka = max(microstate["pKa"] for microstate in result["basic_pkas"])
    print(f"{smi}: {pka:.2f}")
Results:
C1CCCCN1: 8.84
C1COCCN1: 8.21
C1CCC=CN1: 4.20
C1CC(=O)C=CN1: -0.42
C1CCCC(F)CN1: 7.58
C1CCC(F)(F)CN1: 7.08
In [ ]: