rowan
Rowan is a cloud-native molecular modeling and medicinal-chemistry workflow platform with a Python API. Use for pKa and macropKa prediction, conformer and tautomer ensembles, docking and analogue docking, protein-ligand cofolding, MSA generation, molecular dynamics, permeability, descriptor workflow
By k-dense-ai · 1,395 installs
npx skills add k-dense-ai/scientific-agent-skills --skill rowan
Source repository · Upstream listing
Rowan: Cloud Native Molecular Modeling and Drug Design Workflows
Overview
Rowan is a cloud native workflow platform for molecular simulation, medicinal chemistry, and structure based design. Its Python API exposes a unified interface for small molecule modeling, property prediction, docking, molecular dynamics, and AI structure workflows.
Use Rowan when you want to run medicinal chemistry or molecular design workflows programmatically without maintaining local HPC infrastructure, GPU provisioning, or a collection of separate modeling tools. The service manages hosted compute and results; available workflows depend on the account.
When to use Rowan
Rowan is a good fit for:
Quantum chemistry, semiempirical methods, or neural network potentials
Batch property prediction (pKa, descriptors, permeability, solubility)
Conformer and tautomer ensemble generation
Docking workflows (single ligand, analogue series, pose refinement)
Protein ligand cofolding and MSA generation
Multi step chemistry pipelines (e.g., tautomer search → docking → pose analysis)
Batch medicinal chemistry campaigns where you need consistent, scalable infrastructure
Rowan is not the right fit for:
Simple molecular I/O (use RDKit directly)
Methods or element/charge regimes outside the selected engine's documented support
Quick start
This submits a hosted calculation and consumes credits. Examples target
[ rowan python 3.2.0](https://pypi.org/project/rowan python/3.2.0/), reviewed
2026 09 30 against the released SDK and [official reference](https://docs.rowansci.com/api/python/v3/).
Local schema/serialization smoke tests used stjames 0.0.279. Hosted examples
are illustrative: no authenticated workflows were run for this refresh. Lock
both package versions for a reproducible campaign.
Installation
Authentication and account access
Authentication
Set an API key via environment variable (recommended):
Or set directly in Python:
Verify authentication:
Molecule input formats
Use SMILES for topology based methods and real 3D structures for geometry based
methods. SMARTS is a substructure query language, not a general workflow molecule
input; convert InChI with a chemistry toolkit before passing a supported input.
Record stereochemistry, charge, protonation state, and the original identifier.
Canonicalization alone does not resolve these scientific choices.
SMILES strings versus molecule objects
pKa: starling and chemprop nevolianis2025 require a SMILES string;
gxtb wagen2026 (default) and aimnet2 wagen2024 require coordinates.
Conformer search: SMILES works with OpenConf (default) or ETKDG; CREST/MCMM
require a 3D molecule.
Membrane permeability: gnn mtl requires SMILES; pypermm requires a 3D molecule.
ADMET, LogP, macropKa, and solubility are SMILES based; pose analysis MD needs
ligand SMILES and a protein complex containing its bound pose .
Descriptors, tautomers, docking, analogue docking, BDE, NMR, and Fukui need a
rowan.Molecule , stjames.Molecule , or RDKit molecule with a conformer.
Chem.MolFromSmiles() alone has no coordinates. Generate them explicitly with
rowan.Molecule.from smiles() or import an existing geometry. For analogue
docking, preserve the reference pose in the receptor's coordinate frame.
Tip: Use RDKit to validate SMILES before submission:
Core usage pattern
Most Rowan tasks follow the same three step pattern:
1. Submit a workflow
2. Wait for completion (with optional streaming)
3. Retrieve typed results with convenience properties
For long running workflows, use streaming:
result() vs. stream result()
Pattern Use when
result() The process can block for completion
stream result() Polling snapshots are useful while the job runs
stream result() polls; it is not a server pushed event stream. Partial typed
properties may be unavailable, so inspect .data until .complete is true.
result(wait=False) can return partial data or raise WorkflowError if no data
exists yet. done() includes failed and stopped runs, not only successes.
Working with results
Rowan's API includes typed workflow result objects with convenience properties.
Using typed properties and .data
Results have two access patterns:
1. Convenience properties (recommended first): result.descriptors , result.best pose , result.scores . Result classes differ: conformer search uses get energies() and get conformers() methods.
2. Raw fallback : result.data — raw dictionary from the API
Example:
Note: DescriptorsResult does not have a molecular weight property.
MW is exact/monoisotopic mass, not average molecular weight. TPSA is a 3D
charged surface descriptor; use TopoPSA for the usual topological polar
surface area used in drug likeness rules.
Cache invalidation
Some result properties are lazily loaded (e.g., conformer geometries, protein structures). To refresh:
Projects, folders, and organization
For nontrivial campaigns, use projects and folders to keep work organized.
Projects
Rowan 3.2.0 has an unresolved Folder.created at type annotation; initialize
the model once as below before folder operations (see troubleshooting).
Folders
Illustrative: protein , pocket , and the 3D ligand must be prepared first.
Run the Folder.model rebuild initialization above first. get folder() creates
missing path segments; create folder() creates one folder.
List helpers return one page. Increment the zero based page until an empty
page; size is page size, not a promise to return every match. Folder listing
is not recursive: walk child folders separately when inventorying a campaign.
Workflow decision trees
pKa vs. MacropKa
Use microscopic pKa when:
You need the pKa of a single ionizable group
You're interested in acid–base transitions and protonation thermodynamics
The molecule has one or two ionizable sites
A specific microscopic transition is the scientific question
Use macropKa when:
You need pH dependent behavior across a physiologically relevant range (e.g., 0–14)
You want aggregated charge and protonation state populations across pH
The molecule has multiple ionizable groups with coupled protonation
You need downstream properties like aqueous solubility at different pH
Example decision:
Conformer search vs. tautomer search
Use conformer search when:
A single tautomeric form is known
You need a diverse 3D ensemble for docking, MD, or SAR analysis
Rotatable bonds dominate the chemical space
Use tautomer search when:
Tautomeric equilibrium is uncertain (e.g., heterocycles, keto–enol systems)
You need same formula proton shift isomers; enumerate charge/protonation states separately
Downstream calculations (docking, pKa) depend on tautomeric form
Combined workflow:
Docking vs. analogue docking vs. cofolding
Workflow Use When Input Output
Docking Single ligand, known pocket Protein + 3D ligand + pocket coords Poses and scoring records
Analogue docking Related compounds sharing a scaffold Protein + SMILES list + bound reference pose Poses and scores keyed by SMILES
Protein ligand cofolding Sequence + ligand, no crystal structure Protein sequence + SMILES ML predicted bound complex
Protein utilities
Upload proteins
Illustrative API calls below require an authenticated account and the named local file; they have not been re run against the service for this documentation correction. Verify each PDB accession against its target before building a docking campaign: [1M17 is EGFR bound to erlotinib](https://www.rcsb.org/structure/1M17).
Protein preparation guidance
File format : upload protein selects mmCIF for .cif / .mmcif , PDB otherwise.
Preparation : Upload/import stores a structure; it does not establish docking readiness.
Inspect chain selection, alternate locations, missing atoms/residues, protonation,
waters, metals, cofactors, and retained ligands for the chosen workflow.
Multi chain structures : Select the intended chains explicitly when appropriate.
Preparation workflow : submit protein preparation workflow exposes pH, missing atom
completion, and non polymer retention; inspect those settings before using its defaults.
Pocket : Derive coordinates from the prepared receptor or its bound ligand. Arbitrary
example coordinates are not transferable between structures. Validate docking by
redocking a known ligand and inspecting geometry; scores are not measured binding free energies.
Workflow catalog
Nine common workflow categories — descriptors, microscopic pKa, MacropKa, conformer
search, tautomer search, docking, analogue docking, MSA generation, and protein ligand
cofolding — each with submission code and result shapes, plus a directory of
workflow functions (core modeling, structure based design, advanced computational
chemistry, reaction chemistry, advanced properties, binding free energy, and sequence and
structural biology) are in
[references/workflow catalog.md](references/workflow catalog.md).
Batch submission, webhooks, and asynchronous work
Batch submit/poll/retrieve, the non blocking fire and check pattern, webhook setup,
secret creation and rotation, signature verification (with a FastAPI
handler), and the limits of the published payload contract are in
[references/batch and webhooks.md](references/batch and webhooks.md).
Access, pricing, and credits
Account access, dated published credit rates, and campaign budget guidance are in
[references/access and pricing.md](references/access and pricing.md).
Worked example and troubleshooting
A full lead optimization campaign — project setup, tautomers, pKa across an analogue
series, result collection, and a docking follow up — is in
[references/end to end example.md](references/end to end example.md).
Common errors with their fixes, and debugging tips, are in
[references/troubleshooting.md](references/troubleshooting.md).
Recommended usage patterns
Prefer Rowan native workflows over low level assembly when they exist
Use projects and folders for any nontrivial campaign ( 5 workflows)
Use result() to block until complete (default: wait=True, poll interval=5 )
Use typed result properties first , fall back to .data for unmapped fields
Use batch submission for compound libraries or analogue series
Chain workflows for multi step chemistry campaigns:
pKa → macropKa → permeability (ADME assessment)
tautomer search → docking → pose analysis MD (pose refinement)
MSA generation → protein ligand cofolding (AI structure prediction)
Use webhooks for long running campaigns ( 50 workflows) or asynchronous pipelines
Use streaming for interactive feedback on large conformer/docking searches
Summary
Use Rowan when your workflow requires cloud execution for molecular design tasks, especially when you want one unified API and consistent result handling across small molecule modeling, proteins, docking, ADME prediction, and ML structure generation.
Rowan is a molecular design workflow platform, not just a remote chemistry engine. It handles infrastructure scaling, result persistence, and multi step pipeline orchestration so you can focus on science.