rowan-python 3.1.16__tar.gz → 3.2.0__tar.gz

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 (279) hide show
  1. rowan_python-3.2.0/.editorconfig +16 -0
  2. rowan_python-3.2.0/.envrc +6 -0
  3. {rowan_python-3.1.16 → rowan_python-3.2.0}/.github/workflows/build-and-deploy-docs.yml +9 -7
  4. rowan_python-3.2.0/.github/workflows/python-publish.yml +51 -0
  5. rowan_python-3.2.0/.github/workflows/test.yml +58 -0
  6. {rowan_python-3.1.16 → rowan_python-3.2.0}/.gitignore +4 -0
  7. rowan_python-3.2.0/.python-version +1 -0
  8. rowan_python-3.2.0/.rumdl.toml +21 -0
  9. rowan_python-3.2.0/GEMINI.md +3 -0
  10. {rowan_python-3.1.16 → rowan_python-3.2.0}/PKG-INFO +20 -10
  11. {rowan_python-3.1.16 → rowan_python-3.2.0}/README.md +17 -8
  12. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/index.md +11 -11
  13. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/basic-calculation.md +1 -1
  14. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation_with_solvent.py +4 -0
  15. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/batch_docking.py +4 -1
  16. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/bde.py +1 -2
  17. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/boltz_paired_msa.py +1 -1
  18. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/boltz_single_msa.py +1 -1
  19. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/chai_paired_msa.py +1 -1
  20. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/chai_single_msa.py +1 -1
  21. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/cofolding_screen.py +2 -0
  22. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/colabfold_paired_msa.py +1 -1
  23. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/colabfold_single_msa.py +1 -1
  24. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/conformer_dependent_redox.py +2 -0
  25. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/conformers.py +1 -2
  26. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/conformers_screen.py +1 -2
  27. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/covalent_docking.py +2 -1
  28. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/covalent_inhibitor_scan.py +2 -1
  29. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/descriptors.py +1 -2
  30. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/docking.py +4 -1
  31. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/docking_screen.py +6 -1
  32. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/double_ended_ts_search.py +1 -2
  33. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/electronic_properties.py +1 -2
  34. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/hydrogen_bond_basicity.py +1 -2
  35. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/induced_fit_docking.py +4 -1
  36. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/multistage_optimization.py +1 -2
  37. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/optimization.py +1 -2
  38. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/periodic_dft.py +6 -0
  39. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/pka.py +1 -2
  40. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/pocket_detection.py +4 -1
  41. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/pose_analysis_md.py +6 -1
  42. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_binder_design.py +1 -2
  43. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding_with_templates.py +2 -1
  44. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_md.py +6 -2
  45. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/rbfe_resubmit.py +5 -1
  46. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/redox_potential.py +2 -3
  47. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/relative_binding_free_energy_perturbation.py +4 -1
  48. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/resubmit_with_perturbations.py +15 -6
  49. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/retrieve_workflow.py +5 -1
  50. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/scan.py +1 -2
  51. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/spin_states.py +1 -2
  52. {rowan_python-3.1.16 → rowan_python-3.2.0}/mkdocs.yml +1 -1
  53. rowan_python-3.2.0/prek.toml +65 -0
  54. {rowan_python-3.1.16 → rowan_python-3.2.0}/pyproject.toml +58 -54
  55. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/api_keys.py +70 -58
  56. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/calculation.py +25 -19
  57. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/config.py +85 -64
  58. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/folder.py +161 -113
  59. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/molecule.py +99 -72
  60. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/project.py +71 -50
  61. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/protein.py +160 -115
  62. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/user.py +47 -47
  63. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/utils.py +20 -13
  64. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/_molecular_dynamics.py +56 -29
  65. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/admet.py +21 -19
  66. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/analogue_docking.py +85 -64
  67. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/base.py +316 -226
  68. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/basic_calculation.py +63 -52
  69. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/batch_docking.py +31 -26
  70. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/bde.py +63 -48
  71. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/binding_affinity.py +54 -50
  72. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/conformer_search.py +113 -79
  73. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/constants.py +5 -2
  74. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/covalent_inhibitor_scan.py +52 -47
  75. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/descriptors.py +27 -22
  76. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/docking.py +102 -83
  77. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/double_ended_ts_search.py +42 -37
  78. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/electronic_properties.py +34 -28
  79. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/fukui.py +32 -27
  80. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +23 -18
  81. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/interaction_energy_decomposition.py +30 -25
  82. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/ion_mobility.py +26 -22
  83. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/irc.py +66 -54
  84. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/logp.py +30 -25
  85. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/macropka.py +32 -27
  86. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/membrane_permeability.py +22 -17
  87. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/msa.py +33 -24
  88. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/multistage_optimization.py +35 -31
  89. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/nmr.py +46 -42
  90. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/pka.py +47 -41
  91. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/pocket_detection.py +34 -29
  92. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/pose_analysis_md.py +76 -72
  93. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_binder_design.py +55 -50
  94. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_cofolding.py +79 -74
  95. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_md.py +80 -75
  96. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_preparation.py +44 -36
  97. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/rbfe_graph.py +40 -34
  98. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/redox_potential.py +25 -20
  99. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/relative_binding_free_energy_perturbation.py +92 -73
  100. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/scan.py +48 -41
  101. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/solubility.py +67 -58
  102. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/solvent_dependent_conformers.py +44 -37
  103. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/spin_states.py +62 -54
  104. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/strain.py +38 -31
  105. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/tautomer_search.py +41 -36
  106. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +1 -0
  107. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/binding_affinity.md +1 -2
  108. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +1 -1
  109. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_binding_affinity.py +6 -6
  110. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_cofolding_workflow_updates.py +4 -5
  111. rowan_python-3.2.0/tests/test_conformer_search.py +81 -0
  112. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_docking_workflow.py +10 -8
  113. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_docking_workflow_updates.py +3 -4
  114. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_macropka_nmr.py +3 -3
  115. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_mango_forcefields.py +7 -5
  116. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_md_workflow_updates.py +9 -12
  117. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_solvent_dependent_conformers.py +3 -3
  118. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_tautomer_search.py +3 -3
  119. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_utils.py +9 -7
  120. rowan_python-3.2.0/tests/test_workflow_results.py +66 -0
  121. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_workflow_submission.py +5 -6
  122. rowan_python-3.2.0/uv.lock +1386 -0
  123. rowan_python-3.1.16/.agents/plugins/marketplace.json +0 -20
  124. rowan_python-3.1.16/.envrc +0 -4
  125. rowan_python-3.1.16/.github/workflows/python-publish.yml +0 -45
  126. rowan_python-3.1.16/.github/workflows/test.yml +0 -34
  127. rowan_python-3.1.16/.pre-commit-config.yaml +0 -36
  128. rowan_python-3.1.16/AGENTS.md +0 -132
  129. rowan_python-3.1.16/CLAUDE.md +0 -1
  130. rowan_python-3.1.16/GEMINI.md +0 -1
  131. rowan_python-3.1.16/pixi.lock +0 -1996
  132. {rowan_python-3.1.16 → rowan_python-3.2.0}/.claude-plugin/marketplace.json +0 -0
  133. {rowan_python-3.1.16 → rowan_python-3.2.0}/.codex-plugin/plugin.json +0 -0
  134. {rowan_python-3.1.16 → rowan_python-3.2.0}/.github/workflows/publish-skill.yml +0 -0
  135. {rowan_python-3.1.16 → rowan_python-3.2.0}/LICENSE +0 -0
  136. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/api-keys.md +0 -0
  137. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/calculation.md +0 -0
  138. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/folder.md +0 -0
  139. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/molecule.md +0 -0
  140. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/project.md +0 -0
  141. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/protein.md +0 -0
  142. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/user.md +0 -0
  143. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/webhooks.md +0 -0
  144. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/workflow.md +0 -0
  145. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/images/RowanLogoLarge.png +0 -0
  146. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/images/RowanSquareLogo.png +0 -0
  147. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/images/favicon.svg +0 -0
  148. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/stylesheets/colors.css +0 -0
  149. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/admet.md +0 -0
  150. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/analogue-docking.md +0 -0
  151. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/batch-docking.md +0 -0
  152. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/binding-affinity.md +0 -0
  153. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/bond-dissociation-energy.md +0 -0
  154. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/conformer-search-settings.md +0 -0
  155. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/conformer-search.md +0 -0
  156. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/covalent-inhibitor-scan.md +0 -0
  157. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/descriptors.md +0 -0
  158. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/docking.md +0 -0
  159. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/double-ended-ts-search.md +0 -0
  160. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/electronic-properties.md +0 -0
  161. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/fukui.md +0 -0
  162. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/hydrogen-bond-donor-acceptor-strength.md +0 -0
  163. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/interaction-energy-decomposition.md +0 -0
  164. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/ion-mobility.md +0 -0
  165. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/irc.md +0 -0
  166. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/logp.md +0 -0
  167. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/macropka.md +0 -0
  168. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/membrane-permeability.md +0 -0
  169. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/msa.md +0 -0
  170. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/multistage-optimization.md +0 -0
  171. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/nmr.md +0 -0
  172. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/pka.md +0 -0
  173. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/pocket-detection.md +0 -0
  174. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/pose-analysis-md.md +0 -0
  175. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-binder-design.md +0 -0
  176. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-cofolding.md +0 -0
  177. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-md.md +0 -0
  178. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-preparation.md +0 -0
  179. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/rbfe-graph.md +0 -0
  180. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/redox-potential.md +0 -0
  181. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/relative-binding-free-energy-perturbation.md +0 -0
  182. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/scan.md +0 -0
  183. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/settings.md +0 -0
  184. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/solubility.md +0 -0
  185. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/solvent-dependent-conformers.md +0 -0
  186. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/spin-states.md +0 -0
  187. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/strain.md +0 -0
  188. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/tautomer-search.md +0 -0
  189. {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/types.md +0 -0
  190. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/PROTAC_solubility.py +0 -0
  191. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/admet.py +0 -0
  192. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/analogue_docking.py +0 -0
  193. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/aqueous_solubility.py +0 -0
  194. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation.py +0 -0
  195. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation_from_json.py +0 -0
  196. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation_with_constraint.py +0 -0
  197. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/batch_solubility.py +0 -0
  198. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/binding_affinity.py +0 -0
  199. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/1iep_receptorH.pdb +0 -0
  200. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/Al_FCC.xyz +0 -0
  201. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/citalopram_1iep.xyz +0 -0
  202. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/ibuprofen_conformers.sdf +0 -0
  203. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/tyk2_ligands.sdf +0 -0
  204. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/tyk2_structure.pdb +0 -0
  205. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/workflow_example.json +0 -0
  206. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/dcd_download.py +0 -0
  207. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/estimate_workflow.py +0 -0
  208. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/fukui_index.py +0 -0
  209. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/interaction_energy_decomposition.py +0 -0
  210. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/ion_mobility.py +0 -0
  211. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/irc.py +0 -0
  212. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/logp.py +0 -0
  213. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/macropka.py +0 -0
  214. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/membrane_permeability.py +0 -0
  215. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/nmr.py +0 -0
  216. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/phenol_pka.py +0 -0
  217. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/project_scoped_api_key.py +0 -0
  218. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding.py +0 -0
  219. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding_modified_inputs.py +0 -0
  220. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding_with_constraints.py +0 -0
  221. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_file_download.py +0 -0
  222. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_preparation.py +0 -0
  223. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/rbfe_graph.py +0 -0
  224. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/solvent_dependent_conformers.py +0 -0
  225. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/strain.py +0 -0
  226. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/tautomer.py +0 -0
  227. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/template.py +0 -0
  228. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/temporary_workflow_sharing.py +0 -0
  229. {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/webhook.py +0 -0
  230. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/__init__.py +0 -0
  231. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/constants.py +0 -0
  232. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/py.typed +0 -0
  233. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/types.py +0 -0
  234. {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/__init__.py +0 -0
  235. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/.claude-plugin/plugin.json +0 -0
  236. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/SKILL.md +0 -0
  237. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
  238. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
  239. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
  240. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
  241. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
  242. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +0 -0
  243. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
  244. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/docking.md +0 -0
  245. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
  246. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +0 -0
  247. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
  248. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
  249. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
  250. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
  251. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
  252. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/logp.md +0 -0
  253. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
  254. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/mcp_execution.md +0 -0
  255. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
  256. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
  257. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
  258. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
  259. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
  260. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
  261. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +0 -0
  262. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
  263. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
  264. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_md.md +0 -0
  265. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_preparation.md +0 -0
  266. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/python_sdk.md +0 -0
  267. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
  268. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
  269. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
  270. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
  271. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
  272. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
  273. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
  274. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
  275. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
  276. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
  277. {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
  278. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_plugin.py +0 -0
  279. {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_protein.py +0 -0
@@ -0,0 +1,16 @@
1
+ # http://editorconfig.org/#file-format-details
2
+ root = true
3
+
4
+ [*]
5
+ charset = utf-8
6
+ end_of_line = lf
7
+ indent_size = 4
8
+ indent_style = space
9
+ insert_final_newline = true
10
+ trim_trailing_whitespace = true
11
+
12
+ [*.md]
13
+ trim_trailing_whitespace = false
14
+
15
+ [Makefile]
16
+ indent_style = tab
@@ -0,0 +1,6 @@
1
+ watch_file pyproject.toml
2
+ watch_file uv.lock
3
+ dotenv_if_exists .env
4
+
5
+ uv sync --locked
6
+ source .venv/bin/activate
@@ -14,19 +14,21 @@ jobs:
14
14
 
15
15
  steps:
16
16
  - name: Checkout repository
17
- uses: actions/checkout@v4
17
+ uses: actions/checkout@v6
18
18
  with:
19
19
  fetch-depth: 0
20
20
  ref: master
21
21
 
22
- - name: Install Pixi
23
- uses: prefix-dev/setup-pixi@v0.9.1
22
+ - name: Install uv
23
+ uses: astral-sh/setup-uv@v10.1.0
24
24
  with:
25
- pixi-version: "latest"
26
- activate-environment: true
25
+ enable-cache: true
26
+
27
+ - name: Install dependencies
28
+ run: uv sync --locked --no-dev --group docs
27
29
 
28
30
  - name: Build MkDocs site
29
- run: pixi run mkdocs-build
31
+ run: uv run --no-sync mkdocs build --clean
30
32
 
31
33
  - name: Install SSH Key
32
34
  uses: shimataro/ssh-key-action@v2
@@ -39,5 +41,5 @@ jobs:
39
41
 
40
42
  - name: Deploy with rsync
41
43
  run: |
42
- rsync -avz --delete ./ \
44
+ rsync -avz --delete site/ \
43
45
  ${{ secrets.DOCS_USERNAME }}@${{ secrets.DOCS_IP }}:${{ secrets.DOCS_TARGET_DIR }}
@@ -0,0 +1,51 @@
1
+ name: Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: ${{ github.workflow }}
13
+ cancel-in-progress: false
14
+
15
+ jobs:
16
+ run:
17
+ runs-on: ubuntu-latest
18
+ # Enable after configuring the repository environment.
19
+ # environment:
20
+ # name: pypi
21
+ steps:
22
+ - name: Skip if running with act
23
+ if: ${{ env.ACT == 'true' }}
24
+ run: exit 1
25
+
26
+ - name: Checkout
27
+ uses: actions/checkout@v6
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v10.1.0
31
+
32
+ - name: Install Python
33
+ run: uv python install
34
+
35
+ - name: Build
36
+ run: uv build
37
+
38
+ - name: Smoke test (wheel)
39
+ run: >-
40
+ uv run --isolated --no-project --directory "$RUNNER_TEMP"
41
+ --with "$GITHUB_WORKSPACE"/dist/*.whl python -c "import rowan"
42
+
43
+ - name: Smoke test (source distribution)
44
+ run: >-
45
+ uv run --isolated --no-project --directory "$RUNNER_TEMP"
46
+ --with "$GITHUB_WORKSPACE"/dist/*.tar.gz python -c "import rowan"
47
+
48
+ - name: Publish
49
+ env:
50
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
51
+ run: uv publish
@@ -0,0 +1,58 @@
1
+ name: Test
2
+
3
+ on:
4
+ pull_request: {}
5
+ push:
6
+ branches: master
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: ${{ github.workflow }}-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ test:
17
+ strategy:
18
+ matrix:
19
+ python-version: ["3.12", "3.14"]
20
+ os: [ubuntu-latest]
21
+
22
+ name: Python ${{ matrix.os }} ${{ matrix.python-version }}
23
+ runs-on: ${{ matrix.os }}
24
+
25
+ steps:
26
+ - uses: actions/checkout@v6
27
+
28
+ - name: Install the latest version of uv
29
+ uses: astral-sh/setup-uv@v7.6
30
+ with:
31
+ enable-cache: true
32
+
33
+ - name: Install Python
34
+ run: uv python install ${{ matrix.python-version }}
35
+
36
+ - name: Install dependencies
37
+ run: uv sync --locked
38
+
39
+ - name: Check TOML/YAML/whitespace
40
+ run: |
41
+ uv run prek run --all-files --show-diff-on-failure --color=always \
42
+ check-toml check-yaml trailing-whitespace end-of-file-fixer
43
+
44
+ - run: uv run rumdl fmt --check --diff .
45
+ - run: uv run rumdl check .
46
+
47
+ - run: uv run ruff format --check --diff .
48
+ - run: uv run ruff check .
49
+
50
+ - run: uv run ty check
51
+
52
+ - run: uv run pytest --cov --cov-report=xml
53
+
54
+ # Enable after configuring Codecov and its repository token.
55
+ # - name: Upload coverage to Codecov
56
+ # uses: codecov/codecov-action@v5
57
+ # with:
58
+ # token: ${{ secrets.CODECOV_TOKEN }}
@@ -2,6 +2,7 @@
2
2
  .env
3
3
  # Variant env files (.env.test, .env.single-tenant, ...); .envrc is tracked for direnv
4
4
  .env.*
5
+ .app.json
5
6
 
6
7
  # macOS
7
8
  .DS_Store
@@ -208,3 +209,6 @@ cyp/
208
209
  msa_directory/
209
210
 
210
211
  notes.md
212
+
213
+ # Machine-specific agent settings
214
+ .claude/settings.local.json
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1,21 @@
1
+ [global]
2
+
3
+ disable = [
4
+ "MD013", # line length
5
+ "MD033", # no inline HTML
6
+ ]
7
+
8
+ exclude = [
9
+ ".git",
10
+ "node_modules",
11
+ "vendor",
12
+ "dist",
13
+ "build",
14
+ ]
15
+
16
+ respect-gitignore = true
17
+
18
+ [per-file-ignores]
19
+ # Skill files start with frontmatter, not headings
20
+ ".claude/**/*.md" = ["MD041"]
21
+ ".agents/**/*.md" = ["MD041"]
@@ -0,0 +1,3 @@
1
+ # Agent instructions
2
+
3
+ @AGENTS.md
@@ -1,10 +1,11 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rowan-python
3
- Version: 3.1.16
3
+ Version: 3.2.0
4
4
  Summary: Rowan Python Library
5
5
  Project-URL: Homepage, https://github.com/rowansci/rowan-client
6
6
  Project-URL: Bug Tracker, https://github.com/rowansci/rowan-client/issues
7
- Author-email: Corin Wagen <corin@rowansci.com>
7
+ Author-email: Corin Wagen <corin@rowansci.com>, Eli Mann <eli@rowansci.com>
8
+ License-Expression: MIT
8
9
  License-File: LICENSE
9
10
  Requires-Python: >=3.12
10
11
  Requires-Dist: httpx
@@ -17,16 +18,25 @@ Description-Content-Type: text/markdown
17
18
  # Rowan Python Library
18
19
 
19
20
  [![pypi](https://img.shields.io/pypi/v/rowan-python.svg)](https://pypi.python.org/pypi/rowan-python)
20
- [![pixi](https://img.shields.io/badge/Powered_by-Pixi-facc15)](https://pixi.sh)
21
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://docs.astral.sh/uv/)
21
22
  [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)
22
23
  [![Downloads](https://img.shields.io/pypi/dm/rowan-python.svg)](https://pypi.python.org/pypi/rowan-python/)
23
-
24
-
25
- The Rowan Python library provides convenient access to the Rowan API from applications written in the Python language.
24
+ [![License](https://img.shields.io/github/license/rowansci/rowan-python)](LICENSE)
25
+ [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/rowansci/rowan-python/test.yml?branch=master&logo=github-actions)](https://github.com/rowansci/rowan-python/actions)
26
+ [![Typing: ty](https://img.shields.io/badge/typing-ty-EFC621.svg)](https://github.com/astral-sh/ty)
27
+ <!-- Enable these badges with the corresponding tooling/services.
28
+ [![Markdown style: rumdl](https://img.shields.io/badge/md%20style-rumdl-000000.svg)](https://rumdl.dev)
29
+ [![Codecov](https://img.shields.io/codecov/c/github/rowansci/rowan-python)](https://codecov.io/gh/rowansci/rowan-python)
30
+ -->
31
+
32
+ The Rowan Python library is the Python SDK for running Rowan computational chemistry workflows
33
+ programmatically. Use it from scripts and applications to submit calculations, monitor workflow
34
+ progress, retrieve results, and manage molecules, proteins, folders, and projects through the
35
+ Rowan API.
26
36
 
27
37
  ## Documentation
28
38
 
29
- The documentation is available [here](https://docs.rowansci.com/python-api).
39
+ Read the [Rowan Python API documentation](https://docs.rowansci.com/python-api).
30
40
 
31
41
  ## Agent skill
32
42
 
@@ -34,6 +44,9 @@ Ships with a [computational chemistry and biology skill](skills/computational-ch
34
44
  that helps coding agents choose and run Rowan workflows through either Rowan MCP tools or the
35
45
  Rowan Python SDK.
36
46
 
47
+ When using Rowan MCP tools, always read and follow this skill and its workflow references first.
48
+ The skill provides the scientific guidance and execution requirements for MCP workflows.
49
+
37
50
  ### Claude Code
38
51
 
39
52
  ```bash
@@ -74,9 +87,6 @@ and extract it into your agent's skills directory.
74
87
  To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
75
88
  If running the examples in a cloned version of the repository, you can add your api key to a local `.env` file, which will automatically be loaded into the environment by direnv (if installed).
76
89
 
77
-
78
90
  ## Issues
79
91
 
80
92
  To report issues, please use the "Issues" tab above.
81
-
82
- *Corin Wagen, 2023*
@@ -1,16 +1,25 @@
1
1
  # Rowan Python Library
2
2
 
3
3
  [![pypi](https://img.shields.io/pypi/v/rowan-python.svg)](https://pypi.python.org/pypi/rowan-python)
4
- [![pixi](https://img.shields.io/badge/Powered_by-Pixi-facc15)](https://pixi.sh)
4
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://docs.astral.sh/uv/)
5
5
  [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)
6
6
  [![Downloads](https://img.shields.io/pypi/dm/rowan-python.svg)](https://pypi.python.org/pypi/rowan-python/)
7
-
8
-
9
- The Rowan Python library provides convenient access to the Rowan API from applications written in the Python language.
7
+ [![License](https://img.shields.io/github/license/rowansci/rowan-python)](LICENSE)
8
+ [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/rowansci/rowan-python/test.yml?branch=master&logo=github-actions)](https://github.com/rowansci/rowan-python/actions)
9
+ [![Typing: ty](https://img.shields.io/badge/typing-ty-EFC621.svg)](https://github.com/astral-sh/ty)
10
+ <!-- Enable these badges with the corresponding tooling/services.
11
+ [![Markdown style: rumdl](https://img.shields.io/badge/md%20style-rumdl-000000.svg)](https://rumdl.dev)
12
+ [![Codecov](https://img.shields.io/codecov/c/github/rowansci/rowan-python)](https://codecov.io/gh/rowansci/rowan-python)
13
+ -->
14
+
15
+ The Rowan Python library is the Python SDK for running Rowan computational chemistry workflows
16
+ programmatically. Use it from scripts and applications to submit calculations, monitor workflow
17
+ progress, retrieve results, and manage molecules, proteins, folders, and projects through the
18
+ Rowan API.
10
19
 
11
20
  ## Documentation
12
21
 
13
- The documentation is available [here](https://docs.rowansci.com/python-api).
22
+ Read the [Rowan Python API documentation](https://docs.rowansci.com/python-api).
14
23
 
15
24
  ## Agent skill
16
25
 
@@ -18,6 +27,9 @@ Ships with a [computational chemistry and biology skill](skills/computational-ch
18
27
  that helps coding agents choose and run Rowan workflows through either Rowan MCP tools or the
19
28
  Rowan Python SDK.
20
29
 
30
+ When using Rowan MCP tools, always read and follow this skill and its workflow references first.
31
+ The skill provides the scientific guidance and execution requirements for MCP workflows.
32
+
21
33
  ### Claude Code
22
34
 
23
35
  ```bash
@@ -58,9 +70,6 @@ and extract it into your agent's skills directory.
58
70
  To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
59
71
  If running the examples in a cloned version of the repository, you can add your api key to a local `.env` file, which will automatically be loaded into the environment by direnv (if installed).
60
72
 
61
-
62
73
  ## Issues
63
74
 
64
75
  To report issues, please use the "Issues" tab above.
65
-
66
- *Corin Wagen, 2023*
@@ -1,7 +1,7 @@
1
- ![Rowan](images/RowanLogoLarge.png){ width="320" }
2
-
3
1
  # Rowan Python API
4
2
 
3
+ ![Rowan](images/RowanLogoLarge.png){ width="320" }
4
+
5
5
  The `rowan` package is the official Python client for the [Rowan](https://rowansci.com) computational
6
6
  chemistry platform. Submit workflows, poll or stream results, and manage
7
7
  molecules, proteins, folders, and projects—all from plain Python.
@@ -10,21 +10,21 @@ molecules, proteins, folders, and projects—all from plain Python.
10
10
 
11
11
  === "pip"
12
12
 
13
- ```bash
14
- pip install rowan-python
15
- ```
13
+ ```bash
14
+ pip install rowan-python
15
+ ```
16
16
 
17
17
  === "pixi"
18
18
 
19
- ```bash
20
- pixi add --pypi rowan-python
21
- ```
19
+ ```bash
20
+ pixi add --pypi rowan-python
21
+ ```
22
22
 
23
23
  === "uv"
24
24
 
25
- ```bash
26
- uv add rowan-python
27
- ```
25
+ ```bash
26
+ uv add rowan-python
27
+ ```
28
28
 
29
29
  ## Authentication
30
30
 
@@ -16,7 +16,7 @@ workflow = rowan.submit_basic_calculation_workflow(
16
16
  )
17
17
  ```
18
18
 
19
- Pass an [`OptimizationSettings`](settings.md#stjames.opt_settings.OptimizationSettings) object or
19
+ Pass an [`OptimizationSettings`](settings.md) object or
20
20
  an equivalent dictionary to `opt_settings`. `optimize_cell` defaults to `False`; set it to `True`
21
21
  only when optimizing a periodic cell.
22
22
 
@@ -18,6 +18,8 @@ def compute_energy_with_solvent_correction(
18
18
 
19
19
  print(f"View workflow privately at: https://labs.rowansci.com/calculation/{opt_workflow.uuid}")
20
20
  opt_result = opt_workflow.result()
21
+ if opt_result.molecule is None:
22
+ raise ValueError("Optimization returned no molecule")
21
23
 
22
24
  sp_workflow = rowan.submit_basic_calculation_workflow(
23
25
  initial_molecule=opt_result.molecule,
@@ -31,6 +33,8 @@ def compute_energy_with_solvent_correction(
31
33
  print(f"View workflow privately at: https://labs.rowansci.com/calculation/{sp_workflow.uuid}")
32
34
  sp_result = sp_workflow.result()
33
35
 
36
+ if sp_result.energy is None:
37
+ raise ValueError("Single-point calculation returned no energy")
34
38
  return sp_result.energy
35
39
 
36
40
 
@@ -18,7 +18,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
18
18
  name="Prepare CDK2",
19
19
  folder=folder,
20
20
  )
21
- prepared_protein_uuid = preparation_workflow.result().prepared_protein_uuid
21
+ preparation_result = preparation_workflow.result()
22
+ prepared_protein_uuid = preparation_result.prepared_protein_uuid
23
+ if prepared_protein_uuid is None:
24
+ raise ValueError("Protein preparation returned no prepared protein")
22
25
 
23
26
  workflow = rowan.submit_batch_docking_workflow(
24
27
  ligands,
@@ -1,5 +1,4 @@
1
- """
2
- Calculate Bond-Dissociation Energies (BDE) with the Rowan API.
1
+ """Calculate Bond-Dissociation Energies (BDE) with the Rowan API.
3
2
 
4
3
  `mode` is a BDE method string (the level of theory):
5
4
  - "omol25_conserving_s": neural network potential (default)
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
14
14
  "VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
15
15
  "VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
16
16
  ],
17
- output_formats=[rowan.MSAFormat.BOLTZ],
17
+ output_formats={rowan.MSAFormat.BOLTZ},
18
18
  name="Boltz Paired MSA Example",
19
19
  folder=folder,
20
20
  )
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
13
13
  initial_protein_sequences=[
14
14
  "HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
15
15
  ],
16
- output_formats=[rowan.MSAFormat.BOLTZ],
16
+ output_formats={rowan.MSAFormat.BOLTZ},
17
17
  name="Boltz MSA Example",
18
18
  folder=folder,
19
19
  )
@@ -25,7 +25,7 @@ msa_workflow = rowan.submit_msa_workflow(
25
25
  "VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
26
26
  "VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
27
27
  ],
28
- output_formats=[rowan.MSAFormat.CHAI],
28
+ output_formats={rowan.MSAFormat.CHAI},
29
29
  name="CHAI Paired MSA Example",
30
30
  folder=folder,
31
31
  )
@@ -22,7 +22,7 @@ msa_workflow = rowan.submit_msa_workflow(
22
22
  initial_protein_sequences=[
23
23
  "HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
24
24
  ],
25
- output_formats=[rowan.MSAFormat.CHAI],
25
+ output_formats={rowan.MSAFormat.CHAI},
26
26
  name="CHAI MSA Example",
27
27
  folder=folder,
28
28
  )
@@ -34,6 +34,8 @@ print(f"View folder privately at: https://labs.rowansci.com/folder/{folder.uuid}
34
34
  workflow_results = [(w, w.result()) for w in workflows]
35
35
 
36
36
  for workflow, result in workflow_results:
37
+ if result.affinity_score is None:
38
+ raise ValueError("Cofolding returned no affinity score")
37
39
  results[workflow.name] = result.affinity_score.probability_binary
38
40
 
39
41
  print(results)
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
14
14
  "VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
15
15
  "VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
16
16
  ],
17
- output_formats=[rowan.MSAFormat.COLABFOLD],
17
+ output_formats={rowan.MSAFormat.COLABFOLD},
18
18
  name="Colabfold Paired MSA Example",
19
19
  folder=folder,
20
20
  )
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
13
13
  initial_protein_sequences=[
14
14
  "HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
15
15
  ],
16
- output_formats=[rowan.MSAFormat.COLABFOLD],
16
+ output_formats={rowan.MSAFormat.COLABFOLD},
17
17
  name="Colabfold MSA Example",
18
18
  folder=folder,
19
19
  )
@@ -15,6 +15,8 @@ redox_potential_workflows = []
15
15
 
16
16
  for conformer in csearch_result.conformer_uuids[:10]:
17
17
  uuid = conformer[0]
18
+ if uuid is None:
19
+ raise ValueError("Conformer has no calculation UUID")
18
20
  molecule = rowan.retrieve_calculation_molecules(uuid)[0]
19
21
  rowan_molecule = rowan.Molecule.model_validate(molecule)
20
22
  redox_potential_workflows.append(
@@ -1,5 +1,4 @@
1
- """
2
- Calculate the conformers of a molecule using the Rowan API.
1
+ """Calculate the conformers of a molecule using the Rowan API.
3
2
 
4
3
  Conformer generation defaults to OpenConf; pass `conf_gen_settings=` to choose a
5
4
  different generator (ETKDG, iMTD-GC, MCMM).
@@ -1,5 +1,4 @@
1
- """
2
- Rank a conformer ensemble you already have, using the Rowan API (screen-only mode).
1
+ """Rank a conformer ensemble you already have, using the Rowan API (screen-only mode).
3
2
 
4
3
  Conformer search normally *generates* conformers and then optimizes, deduplicates,
5
4
  and ranks them. If you already have 3D geometries -- from another tool (RDKit,
@@ -13,7 +13,8 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
13
13
  name="Prepare TG2",
14
14
  folder=folder,
15
15
  )
16
- protein = preparation_workflow.result().get_prepared_protein()
16
+ preparation_result = preparation_workflow.result()
17
+ protein = preparation_result.get_prepared_protein()
17
18
 
18
19
  center = [-1.079, -3.081, 18.122]
19
20
  size = [22.22, 14.08, 21.74]
@@ -16,7 +16,8 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
16
16
  name="Prepare BTK inhibitor complex",
17
17
  folder=folder,
18
18
  )
19
- protein = preparation_workflow.result().get_prepared_protein()
19
+ preparation_result = preparation_workflow.result()
20
+ protein = preparation_result.get_prepared_protein()
20
21
 
21
22
  # Protein preparation normalizes 4YHF's residue numbering: Cys481 becomes residue 101,
22
23
  # while the retained 4C9 ligand remains residue 701.
@@ -1,5 +1,4 @@
1
- """
2
- Calculate molecular descriptors using the Rowan API.
1
+ """Calculate molecular descriptors using the Rowan API.
3
2
 
4
3
  Computes molecular descriptors including COSMO descriptors (surface area,
5
4
  screening charge, dielectric energy, polar surface area) in water by default.
@@ -14,7 +14,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
14
14
  name="Prepare ABL1",
15
15
  folder=folder,
16
16
  )
17
- prepared_protein_uuid = preparation_workflow.result().prepared_protein_uuid
17
+ preparation_result = preparation_workflow.result()
18
+ prepared_protein_uuid = preparation_result.prepared_protein_uuid
19
+ if prepared_protein_uuid is None:
20
+ raise ValueError("Protein preparation returned no prepared protein")
18
21
 
19
22
  # Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
20
23
  # For a co-crystal structure, extract these from the bound ligand's position.
@@ -24,7 +24,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
24
24
  name="Prepare CDK2",
25
25
  folder=folder,
26
26
  )
27
- prepared_protein_uuid = preparation_workflow.result().prepared_protein_uuid
27
+ preparation_result = preparation_workflow.result()
28
+ prepared_protein_uuid = preparation_result.prepared_protein_uuid
29
+ if prepared_protein_uuid is None:
30
+ raise ValueError("Protein preparation returned no prepared protein")
28
31
 
29
32
  for ligand in ligands:
30
33
  workflow = rowan.submit_docking_workflow(
@@ -50,6 +53,8 @@ for workflow, result in workflow_results:
50
53
 
51
54
  sorted_scores = sorted(result.scores, key=lambda s: s.score)
52
55
  for score in sorted_scores:
56
+ if score.pose is None:
57
+ continue
53
58
  pose_energy = rowan.retrieve_calculation_molecules(score.pose)[0]["energy"]
54
59
  if pose_energy is None:
55
60
  continue
@@ -1,5 +1,4 @@
1
- """
2
- Run a double-ended transition state search using Rowan.
1
+ """Run a double-ended transition state search using Rowan.
3
2
 
4
3
  See documentation at: https://docs.rowansci.com/science/workflows/double-ended-ts-search
5
4
  """
@@ -1,5 +1,4 @@
1
- """
2
- Calculate electronic properties (orbitals, density, ESP) using the Rowan API.
1
+ """Calculate electronic properties (orbitals, density, ESP) using the Rowan API.
3
2
 
4
3
  This workflow computes molecular orbitals, electron density, electrostatic potential,
5
4
  atom-centered charges, bond orders, and multipole moments.
@@ -1,5 +1,4 @@
1
- """
2
- Calculate hydrogen bond acceptor/donor strength using the Rowan API.
1
+ """Calculate hydrogen bond acceptor/donor strength using the Rowan API.
3
2
 
4
3
  This workflow predicts pKBHX values of hydrogen-bond acceptors and pKa values
5
4
  of hydrogen-bond donors using neural network potentials and r2SCAN-3c.
@@ -15,7 +15,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
15
15
  name="Prepare ABL1",
16
16
  folder=folder,
17
17
  )
18
- prepared_protein_uuid = preparation_workflow.result().prepared_protein_uuid
18
+ preparation_result = preparation_workflow.result()
19
+ prepared_protein_uuid = preparation_result.prepared_protein_uuid
20
+ if prepared_protein_uuid is None:
21
+ raise ValueError("Protein preparation returned no prepared protein")
19
22
 
20
23
  # Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
21
24
  center = [44.59, 79.75, 39.59]
@@ -1,5 +1,4 @@
1
- """
2
- Perform a multistage geometry optimization using the Rowan API.
1
+ """Perform a multistage geometry optimization using the Rowan API.
3
2
 
4
3
  Each entry of `optimization_settings` runs in order; `singlepoint_settings`
5
4
  runs last on the final geometry.
@@ -1,5 +1,4 @@
1
- """
2
- Run an optimization calculation on a molecule using Rowan.
1
+ """Run an optimization calculation on a molecule using Rowan.
3
2
 
4
3
  See documentation at: https://docs.rowansci.com/science/quantum-chemistry/geometry-optimization
5
4
  """