import time
import rowan
from rowan.rowan_rdkit import batch_pka
from rdkit import Chem
# replace this with your account's API key
rowan.api_key = "Your api key here"
amine_smiles = [
"C1CCCCN1",
"C1COCCN1",
"C1CCC=CN1",
"C1CC(=O)C=CN1",
"C1CCCC(F)CN1",
"C1CCC(F)(F)CN1",
]
# build RDKit molecules from SMILES strings
amines = [Chem.MolFromSmiles(s) for s in amine_smiles]
#View as grid
Chem.Draw.MolsToGridImage(amines)
print("Submitting calculations to remote server, take care if confidential")
Submitting calculations to remote server, take care if confidential
start_time = time.time()
results = batch_pka(amines, mode="rapid")
end_time = time.time()
elapsed = end_time - start_time
print(f"Calculations finished in {elapsed:.1f} s")
Calculations finished in 113.4 s
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