@pikaa-ai/pikaa 0.3.23 → 0.3.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/assets/brand/orbit-logo-option4-whale.jpg +0 -0
  2. package/assets/brand/orbit-logo.jpg +0 -0
  3. package/assets/brand/orbit-logo.png +0 -0
  4. package/assets/brand/orbit-logo.svg +3 -0
  5. package/dist/cli.js +337 -162
  6. package/dist/index.js +1 -2
  7. package/package.json +1 -2
  8. package/skills/adaptyv/SKILL.md +0 -240
  9. package/skills/aeon/SKILL.md +0 -402
  10. package/skills/analytical-method-validation/SKILL.md +0 -299
  11. package/skills/anndata/SKILL.md +0 -431
  12. package/skills/arbor/SKILL.md +0 -152
  13. package/skills/arboreto/SKILL.md +0 -267
  14. package/skills/astropy/SKILL.md +0 -353
  15. package/skills/autoskill/SKILL.md +0 -233
  16. package/skills/benchling-integration/SKILL.md +0 -229
  17. package/skills/bgpt-paper-search/SKILL.md +0 -75
  18. package/skills/bids/SKILL.md +0 -237
  19. package/skills/biopython/SKILL.md +0 -472
  20. package/skills/bioservices/SKILL.md +0 -399
  21. package/skills/bulk-rnaseq/SKILL.md +0 -198
  22. package/skills/cellxgene-census/SKILL.md +0 -283
  23. package/skills/cirq/SKILL.md +0 -370
  24. package/skills/citation-management/SKILL.md +0 -329
  25. package/skills/clinical-decision-support/SKILL.md +0 -238
  26. package/skills/clinical-decision-support/references/README.md +0 -62
  27. package/skills/clinical-reports/SKILL.md +0 -248
  28. package/skills/clinical-reports/references/README.md +0 -34
  29. package/skills/cobrapy/SKILL.md +0 -496
  30. package/skills/consciousness-council/SKILL.md +0 -151
  31. package/skills/dask/SKILL.md +0 -482
  32. package/skills/database-lookup/SKILL.md +0 -386
  33. package/skills/datamol/SKILL.md +0 -200
  34. package/skills/deepchem/SKILL.md +0 -244
  35. package/skills/deepspot-m/SKILL.md +0 -175
  36. package/skills/deeptools/SKILL.md +0 -412
  37. package/skills/depmap/SKILL.md +0 -301
  38. package/skills/dhdna-profiler/SKILL.md +0 -184
  39. package/skills/diffdock/SKILL.md +0 -488
  40. package/skills/dnanexus-integration/SKILL.md +0 -325
  41. package/skills/docx/SKILL.md +0 -99
  42. package/skills/esm/SKILL.md +0 -334
  43. package/skills/etetoolkit/SKILL.md +0 -327
  44. package/skills/exa-search/SKILL.md +0 -102
  45. package/skills/executing-plans/SKILL.md +0 -14
  46. package/skills/experimental-design/SKILL.md +0 -234
  47. package/skills/exploratory-data-analysis/SKILL.md +0 -280
  48. package/skills/flowio/SKILL.md +0 -310
  49. package/skills/fluidsim/SKILL.md +0 -279
  50. package/skills/frontend-design/SKILL.md +0 -100
  51. package/skills/generate-image/SKILL.md +0 -304
  52. package/skills/geniml/SKILL.md +0 -310
  53. package/skills/genomic-coordinates/SKILL.md +0 -189
  54. package/skills/genomic-intelligence/SKILL.md +0 -243
  55. package/skills/geomaster/README.md +0 -105
  56. package/skills/geomaster/SKILL.md +0 -366
  57. package/skills/geopandas/SKILL.md +0 -250
  58. package/skills/get-available-resources/SKILL.md +0 -260
  59. package/skills/gget/SKILL.md +0 -153
  60. package/skills/ginkgo-cloud-lab/SKILL.md +0 -106
  61. package/skills/glycoengineering/SKILL.md +0 -339
  62. package/skills/gtars/SKILL.md +0 -282
  63. package/skills/guardian-rails/SKILL.md +0 -54
  64. package/skills/histolab/SKILL.md +0 -243
  65. package/skills/hugging-science/SKILL.md +0 -132
  66. package/skills/hypogenic/SKILL.md +0 -290
  67. package/skills/hypothesis-generation/SKILL.md +0 -264
  68. package/skills/imaging-data-commons/SKILL.md +0 -496
  69. package/skills/infographics/SKILL.md +0 -315
  70. package/skills/iso-standards-readiness/SKILL.md +0 -352
  71. package/skills/lab-hardware-cad/SKILL.md +0 -372
  72. package/skills/labarchive-integration/SKILL.md +0 -216
  73. package/skills/lamindb/SKILL.md +0 -408
  74. package/skills/latchbio-integration/SKILL.md +0 -227
  75. package/skills/latex-posters/SKILL.md +0 -369
  76. package/skills/latex-posters/references/README.md +0 -439
  77. package/skills/liteparse/SKILL.md +0 -295
  78. package/skills/literature-review/SKILL.md +0 -263
  79. package/skills/markdown-mermaid-writing/SKILL.md +0 -322
  80. package/skills/market-research-reports/SKILL.md +0 -337
  81. package/skills/markitdown/SKILL.md +0 -264
  82. package/skills/matchms/SKILL.md +0 -276
  83. package/skills/matlab/SKILL.md +0 -274
  84. package/skills/matplotlib/SKILL.md +0 -378
  85. package/skills/medchem/SKILL.md +0 -321
  86. package/skills/modal/SKILL.md +0 -468
  87. package/skills/molecular-dynamics/SKILL.md +0 -458
  88. package/skills/molfeat/SKILL.md +0 -348
  89. package/skills/ncats-arax/SKILL.md +0 -178
  90. package/skills/networkx/SKILL.md +0 -440
  91. package/skills/neurokit2/SKILL.md +0 -323
  92. package/skills/neuropixels-analysis/SKILL.md +0 -412
  93. package/skills/nextflow/SKILL.md +0 -195
  94. package/skills/omero-integration/SKILL.md +0 -222
  95. package/skills/onekgpd/SKILL.md +0 -371
  96. package/skills/ontology-term-resolution/SKILL.md +0 -147
  97. package/skills/open-notebook/SKILL.md +0 -297
  98. package/skills/openpiv/SKILL.md +0 -469
  99. package/skills/opentrons-integration/SKILL.md +0 -322
  100. package/skills/optimize-for-gpu/SKILL.md +0 -176
  101. package/skills/owasp-top10/SKILL.md +0 -48
  102. package/skills/pacsomatic/LICENSE +0 -21
  103. package/skills/pacsomatic/SKILL.md +0 -150
  104. package/skills/paper-lookup/SKILL.md +0 -263
  105. package/skills/paperclip/SKILL.md +0 -413
  106. package/skills/paperzilla/SKILL.md +0 -159
  107. package/skills/parallel-web/SKILL.md +0 -128
  108. package/skills/pathml/SKILL.md +0 -222
  109. package/skills/pathogen-variant-surveillance/SKILL.md +0 -208
  110. package/skills/pathway-enrichment/SKILL.md +0 -194
  111. package/skills/pdf/SKILL.md +0 -322
  112. package/skills/peer-review/SKILL.md +0 -288
  113. package/skills/penetration-testing/SKILL.md +0 -31
  114. package/skills/pennylane/SKILL.md +0 -240
  115. package/skills/phylogenetics/SKILL.md +0 -409
  116. package/skills/pi-agent/SKILL.md +0 -83
  117. package/skills/pkpd-modeling/SKILL.md +0 -381
  118. package/skills/polars/SKILL.md +0 -393
  119. package/skills/polars-bio/SKILL.md +0 -379
  120. package/skills/ponytail/SKILL.md +0 -31
  121. package/skills/ponytail-audit/SKILL.md +0 -18
  122. package/skills/pptx/SKILL.md +0 -246
  123. package/skills/pptx-posters/SKILL.md +0 -258
  124. package/skills/primekg/SKILL.md +0 -99
  125. package/skills/protocolsio-integration/SKILL.md +0 -236
  126. package/skills/pufferlib/SKILL.md +0 -328
  127. package/skills/pydeseq2/SKILL.md +0 -369
  128. package/skills/pydicom/SKILL.md +0 -381
  129. package/skills/pyhealth/SKILL.md +0 -124
  130. package/skills/pylabrobot/SKILL.md +0 -216
  131. package/skills/pymatgen/SKILL.md +0 -404
  132. package/skills/pymc/SKILL.md +0 -310
  133. package/skills/pymoo/SKILL.md +0 -276
  134. package/skills/pyopenms/SKILL.md +0 -179
  135. package/skills/pysam/SKILL.md +0 -330
  136. package/skills/pytdc/SKILL.md +0 -297
  137. package/skills/pytorch-lightning/SKILL.md +0 -191
  138. package/skills/pyzotero/SKILL.md +0 -137
  139. package/skills/qiskit/SKILL.md +0 -259
  140. package/skills/qutip/SKILL.md +0 -317
  141. package/skills/rdkit/SKILL.md +0 -94
  142. package/skills/relsa-severity-assessment/SKILL.md +0 -354
  143. package/skills/research-grants/SKILL.md +0 -296
  144. package/skills/research-grants/references/README.md +0 -287
  145. package/skills/research-lookup/README.md +0 -106
  146. package/skills/research-lookup/SKILL.md +0 -338
  147. package/skills/rowan/SKILL.md +0 -398
  148. package/skills/scanpy/SKILL.md +0 -303
  149. package/skills/scholar-evaluation/SKILL.md +0 -296
  150. package/skills/scientific-brainstorming/SKILL.md +0 -282
  151. package/skills/scientific-critical-thinking/SKILL.md +0 -180
  152. package/skills/scientific-schematics/SKILL.md +0 -370
  153. package/skills/scientific-slides/SKILL.md +0 -379
  154. package/skills/scientific-visualization/SKILL.md +0 -285
  155. package/skills/scientific-writing/SKILL.md +0 -356
  156. package/skills/scikit-bio/SKILL.md +0 -470
  157. package/skills/scikit-learn/SKILL.md +0 -324
  158. package/skills/scikit-survival/SKILL.md +0 -313
  159. package/skills/scvelo/SKILL.md +0 -328
  160. package/skills/scvi-tools/SKILL.md +0 -201
  161. package/skills/seaborn/SKILL.md +0 -254
  162. package/skills/security-auditor/SKILL.md +0 -37
  163. package/skills/shap/SKILL.md +0 -282
  164. package/skills/simpy/SKILL.md +0 -283
  165. package/skills/stable-baselines3/SKILL.md +0 -325
  166. package/skills/statistical-analysis/SKILL.md +0 -446
  167. package/skills/statistical-power/SKILL.md +0 -200
  168. package/skills/statsmodels/SKILL.md +0 -238
  169. package/skills/sympy/SKILL.md +0 -354
  170. package/skills/systematic-debugging/SKILL.md +0 -35
  171. package/skills/tamarind/SKILL.md +0 -285
  172. package/skills/tdd/SKILL.md +0 -26
  173. package/skills/tiledbvcf/SKILL.md +0 -456
  174. package/skills/timesfm-forecasting/SKILL.md +0 -408
  175. package/skills/timesfm-forecasting/examples/global-temperature/README.md +0 -178
  176. package/skills/torch-geometric/SKILL.md +0 -458
  177. package/skills/torchdrug/SKILL.md +0 -241
  178. package/skills/transformers/SKILL.md +0 -195
  179. package/skills/treatment-plans/SKILL.md +0 -174
  180. package/skills/treatment-plans/references/README.md +0 -19
  181. package/skills/umap-learn/SKILL.md +0 -488
  182. package/skills/uncertainty-and-units/SKILL.md +0 -384
  183. package/skills/usfiscaldata/SKILL.md +0 -171
  184. package/skills/vaex/SKILL.md +0 -204
  185. package/skills/venue-templates/SKILL.md +0 -269
  186. package/skills/verification-before-completion/SKILL.md +0 -22
  187. package/skills/waypoint-bio/SKILL.md +0 -273
  188. package/skills/what-if-oracle/SKILL.md +0 -184
  189. package/skills/writing-plans/SKILL.md +0 -15
  190. package/skills/xlsx/SKILL.md +0 -110
  191. package/skills/zarr-python/SKILL.md +0 -241
@@ -1,398 +0,0 @@
1
- ---
2
- name: rowan
3
- description: 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 workflows, and related small-molecule or protein modeling tasks. Ideal for programmatic batch screening, multi-step chemistry pipelines, and workflows that would otherwise require maintaining local HPC/GPU infrastructure.
4
- license: Proprietary (API key required)
5
- compatibility: Python 3.12+, API key required
6
- metadata:
7
- version: "1.5"
8
- skill-author: Rowan Science
9
- trigger-keywords: pKa prediction, molecular docking, conformer search, chemistry workflow, drug discovery, SMILES, protein structure, batch molecular modeling, cloud chemistry
10
- openclaw:
11
- primaryEnv: ROWAN_API_KEY
12
- envVars:
13
- - name: ROWAN_API_KEY
14
- required: true
15
- description: Rowan computational chemistry API key.
16
- ---
17
-
18
- # Rowan: Cloud-Native Molecular-Modeling and Drug-Design Workflows
19
-
20
- ## Overview
21
-
22
- 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.
23
-
24
- 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. Rowan handles all infrastructure, result management, and computation scaling.
25
-
26
- ## When to use Rowan
27
-
28
- **Rowan is a good fit for:**
29
-
30
- - Quantum chemistry, semiempirical methods, or neural network potentials
31
- - Batch property prediction (pKa, descriptors, permeability, solubility)
32
- - Conformer and tautomer ensemble generation
33
- - Docking workflows (single-ligand, analogue series, pose refinement)
34
- - Protein-ligand cofolding and MSA generation
35
- - Multi-step chemistry pipelines (e.g., tautomer search → docking → pose analysis)
36
- - Batch medicinal-chemistry campaigns where you need consistent, scalable infrastructure
37
-
38
- **Rowan is not the right fit for:**
39
- - Simple molecular I/O (use RDKit directly)
40
- - Post-HF *ab initio* quantum chemistry or relativistic calculations
41
-
42
- ## Quick start
43
-
44
- ```bash
45
- uv pip install rowan-python
46
- ```
47
-
48
- ```python
49
- import rowan
50
- rowan.api_key = "your_api_key_here" # or set ROWAN_API_KEY env var
51
-
52
- # Descriptors require a 3D Molecule, not a bare SMILES string.
53
- mol = rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O")
54
- wf = rowan.submit_descriptors_workflow(mol, name="aspirin")
55
- result = wf.result()
56
-
57
- print(result.descriptors["MW"]) # 180.042 — exact mass
58
- print(result.descriptors["SLogP"]) # 1.31
59
- print(result.descriptors["TopoPSA"]) # 63.6 — topological PSA
60
- ```
61
-
62
- If that prints without error, you're set up correctly. These values and examples
63
- were verified against `rowan-python` 3.1.13.
64
-
65
- ## Installation
66
-
67
- ```bash
68
- uv pip install rowan-python
69
- # or: uv pip install rowan-python
70
- ```
71
-
72
- ## User and webhook management
73
-
74
- ### Authentication
75
-
76
- Set an API key via environment variable (recommended):
77
-
78
- ```bash
79
- export ROWAN_API_KEY="your_api_key_here"
80
- ```
81
-
82
- Or set directly in Python:
83
-
84
- ```python
85
- import rowan
86
- rowan.api_key = "your_api_key_here"
87
- ```
88
-
89
- Verify authentication:
90
-
91
- ```python
92
- import rowan
93
- user = rowan.whoami() # Returns user info if authenticated
94
- print(f"User: {user.email}")
95
- print(f"Credits available: {user.credits_available_string()}")
96
- ```
97
-
98
- ## Molecule input formats
99
-
100
- Rowan accepts molecules in the following formats:
101
-
102
- - **SMILES** (preferred): `"CCO"`, `"c1ccccc1O"`
103
- - **SMARTS patterns** (for some workflows): subset of SMARTS for substructure matching
104
- - **InChI** (if supported in your API version): `"InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3"`
105
-
106
- The API validates molecule inputs and raises `ValueError` for an unparseable
107
- SMILES or a workflow-incompatible input type. Always use canonicalized SMILES
108
- for reproducibility.
109
-
110
- ### SMILES strings versus molecule objects
111
-
112
- Accepted input types vary by workflow in `rowan-python` 3.1.13. Only these
113
- common workflows accept a bare string: pKa, conformer search, membrane
114
- permeability, ADMET, LogP, macropKa, solubility, and pose-analysis MD. Most
115
- others — including descriptors, tautomer search, docking, analogue docking,
116
- BDE, NMR, and Fukui — require `rowan.Molecule.from_smiles(smiles)` or an RDKit
117
- `Mol`/`RWMol`. A wrong type raises `ValueError` before submission.
118
-
119
- **Tip:** Use RDKit to validate SMILES before submission:
120
-
121
- ```python
122
- from rdkit import Chem
123
- smiles = "CCO"
124
- mol = Chem.MolFromSmiles(smiles)
125
- if mol is None:
126
- raise ValueError(f"Invalid SMILES: {smiles}")
127
- ```
128
-
129
- ## Core usage pattern
130
-
131
- Most Rowan tasks follow the same three-step pattern:
132
-
133
- 1. **Submit** a workflow
134
- 2. **Wait** for completion (with optional streaming)
135
- 3. **Retrieve** typed results with convenience properties
136
-
137
- ```python
138
- import rowan
139
-
140
- # 1. Submit — use the specific workflow function (not the generic submit_workflow)
141
- workflow = rowan.submit_descriptors_workflow(
142
- rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O"),
143
- name="aspirin descriptors",
144
- )
145
-
146
- # 2. & 3. Wait and retrieve
147
- result = workflow.result() # Blocks until done (default: wait=True, poll_interval=5)
148
- print(result.data) # Raw dict
149
- print(result.descriptors["MW"]) # 180.042 exact mass; no result.molecular_weight property
150
- ```
151
-
152
- For long-running workflows, use streaming:
153
-
154
- ```python
155
- for partial in workflow.stream_result(poll_interval=5):
156
- print(f"Complete: {partial.complete}") # bool, not a percentage
157
- print(partial.data)
158
- ```
159
-
160
- ### result() vs. stream_result()
161
-
162
- | Pattern | Use When | Duration |
163
- |---------|----------|----------|
164
- | `result()` | You can wait for the full result | <5 min typical |
165
- | `stream_result()` | You want progress feedback or need early partial results | >5 min, or interactive use |
166
-
167
- **Guideline:** Use `result()` for descriptors, pKa. Use `stream_result()` for conformer search, docking, cofolding.
168
-
169
- ## Working with results
170
-
171
- Rowan's API includes **typed workflow result objects** with convenience properties.
172
-
173
- ### Using typed properties and .data
174
-
175
- Results have two access patterns:
176
-
177
- 1. **Convenience properties** (recommended first): `result.descriptors`, `result.best_pose`, `result.scores`. Result classes differ: conformer search uses `get_energies()` and `get_conformers()` methods.
178
- 2. **Raw fallback**: `result.data` — raw dictionary from the API
179
-
180
- Example:
181
-
182
- ```python
183
- result = rowan.submit_descriptors_workflow(
184
- rowan.Molecule.from_smiles("CCO"),
185
- name="ethanol",
186
- ).result()
187
-
188
- # Convenience property (returns all descriptors):
189
- print(result.descriptors["MW"]) # exact/monoisotopic mass
190
- print(result.descriptors["SLogP"])
191
- print(result.descriptors["TopoPSA"]) # usual topological PSA
192
-
193
- # Raw data fallback:
194
- print(result.data["descriptors"])
195
- ```
196
-
197
- **Note:** `DescriptorsResult` does **not** have a `molecular_weight` property.
198
- `MW` is exact/monoisotopic mass, not average molecular weight. `TPSA` is a 3D
199
- charged-surface descriptor; use `TopoPSA` for the usual topological polar
200
- surface area used in drug-likeness rules.
201
-
202
- ### Cache invalidation
203
-
204
- Some result properties are lazily loaded (e.g., conformer geometries, protein structures). To refresh:
205
-
206
- ```python
207
- result.clear_cache()
208
- new_structures = result.get_conformers() # Refetched for ConformerSearchResult
209
- ```
210
-
211
- ## Projects, folders, and organization
212
-
213
- For nontrivial campaigns, use projects and folders to keep work organized.
214
-
215
- ### Projects
216
-
217
- ```python
218
- import rowan
219
-
220
- # Create a project
221
- project = rowan.create_project(name="CDK2 lead optimization")
222
- rowan.set_project("CDK2 lead optimization")
223
-
224
- # All subsequent workflows go into this project
225
- wf = rowan.submit_descriptors_workflow(
226
- rowan.Molecule.from_smiles("CCO"), name="test compound"
227
- )
228
-
229
- # retrieve_project takes a UUID; list_workflows scopes with parent_uuid.
230
- project = rowan.retrieve_project(project.uuid)
231
- workflows = rowan.list_workflows(parent_uuid=project.uuid, size=50)
232
- ```
233
-
234
- ### Folders
235
-
236
- ```python
237
- # Create a hierarchical folder structure
238
- folder = rowan.create_folder(name="docking/batch_1/screening")
239
-
240
- wf = rowan.submit_docking_workflow(
241
- # ... docking params ...
242
- folder=folder,
243
- name="compound_001",
244
- )
245
-
246
- # List workflows in a folder
247
- results = rowan.list_workflows(parent_uuid=folder.uuid)
248
- ```
249
-
250
- ## Workflow decision trees
251
-
252
- ### pKa vs. MacropKa
253
-
254
- **Use microscopic pKa when:**
255
-
256
- - You need the pKa of a single ionizable group
257
- - You're interested in acid–base transitions and protonation thermodynamics
258
- - The molecule has one or two ionizable sites
259
- - Speed is critical (faster, fewer credits)
260
-
261
- **Use macropKa when:**
262
-
263
- - You need pH-dependent behavior across a physiologically relevant range (e.g., 0–14)
264
- - You want aggregated charge and protonation-state populations across pH
265
- - The molecule has multiple ionizable groups with coupled protonation
266
- - You need downstream properties like aqueous solubility at different pH
267
-
268
- **Example decision:**
269
-
270
- ```text
271
- Phenol (pKa ~10): Use microscopic pKa
272
- Amine (pKa ~9–10): Use microscopic pKa
273
- Multi-ionizable drug (N, O, acidic group): Use macropKa
274
- ADME assessment across GI pH: Use macropKa
275
- ```
276
-
277
- ### Conformer search vs. tautomer search
278
-
279
- **Use conformer search when:**
280
-
281
- - A single tautomeric form is known
282
- - You need a diverse 3D ensemble for docking, MD, or SAR analysis
283
- - Rotatable bonds dominate the chemical space
284
-
285
- **Use tautomer search when:**
286
-
287
- - Tautomeric equilibrium is uncertain (e.g., heterocycles, keto–enol systems)
288
- - You need to model all relevant protonation isomers
289
- - Downstream calculations (docking, pKa) depend on tautomeric form
290
-
291
- **Combined workflow:**
292
-
293
- ```python
294
- # Step 1: Find best tautomer
295
- taut_wf = rowan.submit_tautomer_search_workflow(
296
- initial_molecule=rowan.Molecule.from_smiles("O=c1[nH]ccnc1"),
297
- name="imidazole tautomers",
298
- )
299
- best_taut = taut_wf.result().best_tautomer
300
-
301
- # Step 2: Generate conformers from best tautomer
302
- conf_wf = rowan.submit_conformer_search_workflow(
303
- initial_molecule=best_taut,
304
- name="imidazole conformers",
305
- )
306
- ```
307
-
308
- ### Docking vs. analogue docking vs. cofolding
309
-
310
- | Workflow | Use When | Input | Output |
311
- |----------|----------|-------|--------|
312
- | Docking | Single ligand, known pocket | Protein + SMILES + pocket coords | Pose, score, dG |
313
- | Analogue docking | 5–100+ related compounds | Protein + SMILES list + reference ligand | All poses, reference-aligned |
314
- | Protein-ligand cofolding | Sequence + ligand, no crystal structure | Protein sequence + SMILES | ML-predicted bound complex |
315
-
316
- ## Protein utilities
317
-
318
- ### Upload proteins
319
-
320
- ```python
321
- # From local PDB file
322
- protein = rowan.upload_protein(
323
- name="egfr_kinase_domain",
324
- file_path="egfr_kinase.pdb",
325
- )
326
-
327
- # From PDB database
328
- protein_from_pdb = rowan.create_protein_from_pdb_id(
329
- name="CDK2 (1M17)",
330
- code="1M17",
331
- )
332
-
333
- # Retrieve previously uploaded protein
334
- protein = rowan.retrieve_protein("protein-uuid")
335
-
336
- # List all proteins
337
- my_proteins = rowan.list_proteins()
338
- ```
339
-
340
- ### Protein preparation guidance
341
-
342
- - **File format**: PDB, mmCIF (Rowan auto-detects)
343
- - **Water molecules**: Rowan usually keeps relevant water; remove bulk water beforehand if desired
344
- - **Heteroatoms**: Cofactors, ions, and bound ligands are usually preserved; remove unwanted heteroatoms before upload
345
- - **Multi-chain proteins**: Fully supported
346
- - **Resolution**: Works with NMR structures, homology models, and cryo-EM; quality matters for downstream predictions
347
- - **Validation**: Rowan validates PDB syntax; severely malformed files may be rejected
348
-
349
- ## Workflow catalog
350
-
351
- Nine common workflow categories — descriptors, microscopic pKa, MacropKa, conformer
352
- search, tautomer search, docking, analogue docking, MSA generation, and protein-ligand
353
- cofolding — each with submission code and result shapes, plus the complete list of every
354
- supported workflow type (core modeling, structure-based design, advanced computational
355
- chemistry, reaction chemistry, advanced properties, binding free energy, and sequence and
356
- structural biology) are in
357
- [references/workflow_catalog.md](references/workflow_catalog.md).
358
-
359
- ## Batch submission, webhooks, and asynchronous work
360
-
361
- Batch submit/poll/retrieve, the non-blocking fire-and-check pattern, webhook setup,
362
- secret creation and rotation, payload and signature verification (with a FastAPI
363
- handler), and webhook best practices are in
364
- [references/batch_and_webhooks.md](references/batch_and_webhooks.md).
365
-
366
- ## Access, pricing, and credits
367
-
368
- Free-tier limits, credit consumption per workflow, and typical cost estimates are in
369
- [references/access_and_pricing.md](references/access_and_pricing.md).
370
-
371
- ## Worked example and troubleshooting
372
-
373
- A full lead-optimization campaign — project setup, tautomers, pKa across an analogue
374
- series, result collection, and a docking follow-up — is in
375
- [references/end_to_end_example.md](references/end_to_end_example.md).
376
-
377
- Common errors with their fixes, and debugging tips, are in
378
- [references/troubleshooting.md](references/troubleshooting.md).
379
-
380
- ## Recommended usage patterns
381
-
382
- - **Prefer Rowan-native workflows** over low-level assembly when they exist
383
- - **Use projects and folders** for any nontrivial campaign (>5 workflows)
384
- - **Use `result()` to block until complete** (default: `wait=True, poll_interval=5`)
385
- - **Use typed result properties first**, fall back to `.data` for unmapped fields
386
- - **Use batch submission** for compound libraries or analogue series
387
- - **Chain workflows** for multi-step chemistry campaigns:
388
- - `pKa → macropKa → permeability` (ADME assessment)
389
- - `tautomer search → docking → pose-analysis MD` (pose refinement)
390
- - `MSA generation → protein-ligand cofolding` (AI structure prediction)
391
- - **Use webhooks** for long-running campaigns (>50 workflows) or asynchronous pipelines
392
- - **Use streaming** for interactive feedback on large conformer/docking searches
393
-
394
- ## Summary
395
-
396
- 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.
397
-
398
- 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.