rowan-python 3.1.15__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 (282) 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.15 → 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.15 → rowan_python-3.2.0}/.gitignore +9 -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.15 → rowan_python-3.2.0}/PKG-INFO +37 -10
  11. rowan_python-3.2.0/README.md +75 -0
  12. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/index.md +11 -11
  13. rowan_python-3.2.0/docs/workflows/basic-calculation.md +35 -0
  14. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/settings.md +15 -0
  15. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/types.md +45 -9
  16. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/basic_calculation_with_solvent.py +4 -0
  17. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/batch_docking.py +4 -1
  18. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/bde.py +1 -2
  19. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/boltz_paired_msa.py +1 -1
  20. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/boltz_single_msa.py +1 -1
  21. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/chai_paired_msa.py +1 -1
  22. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/chai_single_msa.py +1 -1
  23. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/cofolding_screen.py +2 -0
  24. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/colabfold_paired_msa.py +1 -1
  25. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/colabfold_single_msa.py +1 -1
  26. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/conformer_dependent_redox.py +2 -0
  27. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/conformers.py +1 -2
  28. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/conformers_screen.py +1 -2
  29. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/covalent_docking.py +2 -1
  30. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/covalent_inhibitor_scan.py +2 -1
  31. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/descriptors.py +1 -2
  32. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/docking.py +7 -4
  33. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/docking_screen.py +6 -1
  34. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/double_ended_ts_search.py +1 -2
  35. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/electronic_properties.py +4 -3
  36. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/hydrogen_bond_basicity.py +1 -2
  37. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/induced_fit_docking.py +9 -6
  38. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/multistage_optimization.py +1 -2
  39. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/optimization.py +1 -2
  40. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/periodic_dft.py +6 -0
  41. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/pka.py +1 -2
  42. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/pocket_detection.py +4 -1
  43. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/pose_analysis_md.py +6 -1
  44. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_binder_design.py +1 -2
  45. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_cofolding_with_templates.py +2 -1
  46. rowan_python-3.1.15/examples/pdb_download.py → rowan_python-3.2.0/examples/protein_file_download.py +5 -1
  47. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_md.py +6 -2
  48. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/rbfe_resubmit.py +5 -1
  49. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/redox_potential.py +2 -3
  50. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/relative_binding_free_energy_perturbation.py +4 -1
  51. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/resubmit_with_perturbations.py +15 -6
  52. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/retrieve_workflow.py +5 -1
  53. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/scan.py +1 -2
  54. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/spin_states.py +1 -2
  55. {rowan_python-3.1.15 → rowan_python-3.2.0}/mkdocs.yml +1 -1
  56. rowan_python-3.2.0/prek.toml +65 -0
  57. {rowan_python-3.1.15 → rowan_python-3.2.0}/pyproject.toml +58 -54
  58. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/__init__.py +2 -0
  59. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/api_keys.py +70 -58
  60. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/calculation.py +25 -19
  61. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/config.py +85 -64
  62. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/folder.py +161 -113
  63. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/molecule.py +99 -72
  64. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/project.py +71 -50
  65. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/protein.py +237 -127
  66. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/user.py +47 -47
  67. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/utils.py +20 -13
  68. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/_molecular_dynamics.py +86 -53
  69. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/admet.py +21 -19
  70. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/analogue_docking.py +85 -64
  71. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/base.py +316 -226
  72. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/basic_calculation.py +63 -52
  73. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/batch_docking.py +31 -26
  74. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/bde.py +63 -48
  75. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/binding_affinity.py +54 -49
  76. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/conformer_search.py +113 -79
  77. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/constants.py +5 -2
  78. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/covalent_inhibitor_scan.py +52 -47
  79. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/descriptors.py +27 -22
  80. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/docking.py +102 -83
  81. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/double_ended_ts_search.py +42 -37
  82. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/electronic_properties.py +45 -38
  83. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/fukui.py +32 -27
  84. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +23 -18
  85. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/interaction_energy_decomposition.py +30 -25
  86. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/ion_mobility.py +26 -22
  87. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/irc.py +66 -54
  88. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/logp.py +30 -25
  89. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/macropka.py +32 -27
  90. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/membrane_permeability.py +22 -17
  91. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/msa.py +33 -24
  92. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/multistage_optimization.py +35 -31
  93. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/nmr.py +46 -42
  94. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/pka.py +47 -41
  95. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/pocket_detection.py +34 -29
  96. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/pose_analysis_md.py +76 -72
  97. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/protein_binder_design.py +55 -50
  98. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/protein_cofolding.py +79 -74
  99. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/protein_md.py +80 -75
  100. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/protein_preparation.py +44 -36
  101. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/rbfe_graph.py +40 -34
  102. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/redox_potential.py +25 -20
  103. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/relative_binding_free_energy_perturbation.py +92 -73
  104. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/scan.py +48 -41
  105. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/solubility.py +67 -58
  106. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/solvent_dependent_conformers.py +44 -37
  107. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/spin_states.py +62 -54
  108. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/strain.py +38 -31
  109. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/tautomer_search.py +41 -36
  110. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +1 -0
  111. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +1 -1
  112. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +3 -3
  113. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_md.md +3 -3
  114. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_binding_affinity.py +5 -4
  115. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_cofolding_workflow_updates.py +4 -5
  116. rowan_python-3.2.0/tests/test_conformer_search.py +81 -0
  117. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_docking_workflow.py +10 -8
  118. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_docking_workflow_updates.py +3 -4
  119. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_macropka_nmr.py +3 -3
  120. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_mango_forcefields.py +7 -5
  121. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_md_workflow_updates.py +74 -19
  122. rowan_python-3.2.0/tests/test_protein.py +66 -0
  123. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_solvent_dependent_conformers.py +3 -3
  124. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_tautomer_search.py +3 -3
  125. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_utils.py +9 -7
  126. rowan_python-3.2.0/tests/test_workflow_results.py +66 -0
  127. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_workflow_submission.py +5 -6
  128. rowan_python-3.2.0/uv.lock +1386 -0
  129. rowan_python-3.1.15/.agents/plugins/marketplace.json +0 -20
  130. rowan_python-3.1.15/.envrc +0 -4
  131. rowan_python-3.1.15/.github/workflows/python-publish.yml +0 -45
  132. rowan_python-3.1.15/.github/workflows/test.yml +0 -34
  133. rowan_python-3.1.15/.pre-commit-config.yaml +0 -36
  134. rowan_python-3.1.15/AGENTS.md +0 -124
  135. rowan_python-3.1.15/CLAUDE.md +0 -1
  136. rowan_python-3.1.15/GEMINI.md +0 -1
  137. rowan_python-3.1.15/README.md +0 -49
  138. rowan_python-3.1.15/docs/workflows/basic-calculation.md +0 -11
  139. rowan_python-3.1.15/pixi.lock +0 -1996
  140. rowan_python-3.1.15/tests/test_protein.py +0 -39
  141. {rowan_python-3.1.15 → rowan_python-3.2.0}/.claude-plugin/marketplace.json +0 -0
  142. {rowan_python-3.1.15 → rowan_python-3.2.0}/.codex-plugin/plugin.json +0 -0
  143. {rowan_python-3.1.15 → rowan_python-3.2.0}/.github/workflows/publish-skill.yml +0 -0
  144. {rowan_python-3.1.15 → rowan_python-3.2.0}/LICENSE +0 -0
  145. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/api-keys.md +0 -0
  146. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/calculation.md +0 -0
  147. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/folder.md +0 -0
  148. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/molecule.md +0 -0
  149. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/project.md +0 -0
  150. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/protein.md +0 -0
  151. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/user.md +0 -0
  152. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/webhooks.md +0 -0
  153. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/api/workflow.md +0 -0
  154. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/images/RowanLogoLarge.png +0 -0
  155. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/images/RowanSquareLogo.png +0 -0
  156. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/images/favicon.svg +0 -0
  157. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/stylesheets/colors.css +0 -0
  158. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/admet.md +0 -0
  159. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/analogue-docking.md +0 -0
  160. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/batch-docking.md +0 -0
  161. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/binding-affinity.md +0 -0
  162. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/bond-dissociation-energy.md +0 -0
  163. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/conformer-search-settings.md +0 -0
  164. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/conformer-search.md +0 -0
  165. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/covalent-inhibitor-scan.md +0 -0
  166. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/descriptors.md +0 -0
  167. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/docking.md +0 -0
  168. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/double-ended-ts-search.md +0 -0
  169. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/electronic-properties.md +0 -0
  170. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/fukui.md +0 -0
  171. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/hydrogen-bond-donor-acceptor-strength.md +0 -0
  172. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/interaction-energy-decomposition.md +0 -0
  173. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/ion-mobility.md +0 -0
  174. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/irc.md +0 -0
  175. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/logp.md +0 -0
  176. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/macropka.md +0 -0
  177. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/membrane-permeability.md +0 -0
  178. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/msa.md +0 -0
  179. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/multistage-optimization.md +0 -0
  180. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/nmr.md +0 -0
  181. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/pka.md +0 -0
  182. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/pocket-detection.md +0 -0
  183. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/pose-analysis-md.md +0 -0
  184. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/protein-binder-design.md +0 -0
  185. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/protein-cofolding.md +0 -0
  186. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/protein-md.md +0 -0
  187. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/protein-preparation.md +0 -0
  188. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/rbfe-graph.md +0 -0
  189. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/redox-potential.md +0 -0
  190. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/relative-binding-free-energy-perturbation.md +0 -0
  191. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/scan.md +0 -0
  192. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/solubility.md +0 -0
  193. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/solvent-dependent-conformers.md +0 -0
  194. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/spin-states.md +0 -0
  195. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/strain.md +0 -0
  196. {rowan_python-3.1.15 → rowan_python-3.2.0}/docs/workflows/tautomer-search.md +0 -0
  197. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/PROTAC_solubility.py +0 -0
  198. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/admet.py +0 -0
  199. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/analogue_docking.py +0 -0
  200. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/aqueous_solubility.py +0 -0
  201. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/basic_calculation.py +0 -0
  202. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/basic_calculation_from_json.py +0 -0
  203. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/basic_calculation_with_constraint.py +0 -0
  204. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/batch_solubility.py +0 -0
  205. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/binding_affinity.py +0 -0
  206. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/1iep_receptorH.pdb +0 -0
  207. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/Al_FCC.xyz +0 -0
  208. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/citalopram_1iep.xyz +0 -0
  209. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/ibuprofen_conformers.sdf +0 -0
  210. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/tyk2_ligands.sdf +0 -0
  211. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/tyk2_structure.pdb +0 -0
  212. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/data/workflow_example.json +0 -0
  213. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/dcd_download.py +0 -0
  214. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/estimate_workflow.py +0 -0
  215. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/fukui_index.py +0 -0
  216. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/interaction_energy_decomposition.py +0 -0
  217. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/ion_mobility.py +0 -0
  218. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/irc.py +0 -0
  219. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/logp.py +0 -0
  220. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/macropka.py +0 -0
  221. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/membrane_permeability.py +0 -0
  222. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/nmr.py +0 -0
  223. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/phenol_pka.py +0 -0
  224. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/project_scoped_api_key.py +0 -0
  225. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_cofolding.py +0 -0
  226. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_cofolding_modified_inputs.py +0 -0
  227. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_cofolding_with_constraints.py +0 -0
  228. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/protein_preparation.py +0 -0
  229. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/rbfe_graph.py +0 -0
  230. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/solvent_dependent_conformers.py +0 -0
  231. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/strain.py +0 -0
  232. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/tautomer.py +0 -0
  233. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/template.py +0 -0
  234. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/temporary_workflow_sharing.py +0 -0
  235. {rowan_python-3.1.15 → rowan_python-3.2.0}/examples/webhook.py +0 -0
  236. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/constants.py +0 -0
  237. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/py.typed +0 -0
  238. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/types.py +0 -0
  239. {rowan_python-3.1.15 → rowan_python-3.2.0}/rowan/workflows/__init__.py +0 -0
  240. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/.claude-plugin/plugin.json +0 -0
  241. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/SKILL.md +0 -0
  242. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
  243. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
  244. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
  245. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
  246. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/binding_affinity.md +0 -0
  247. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
  248. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +0 -0
  249. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
  250. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/docking.md +0 -0
  251. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
  252. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +0 -0
  253. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
  254. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
  255. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
  256. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
  257. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
  258. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/logp.md +0 -0
  259. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
  260. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/mcp_execution.md +0 -0
  261. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
  262. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
  263. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
  264. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
  265. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
  266. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
  267. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
  268. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
  269. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_preparation.md +0 -0
  270. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/python_sdk.md +0 -0
  271. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
  272. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
  273. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
  274. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
  275. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
  276. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
  277. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
  278. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
  279. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
  280. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
  281. {rowan_python-3.1.15 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
  282. {rowan_python-3.1.15 → rowan_python-3.2.0}/tests/test_plugin.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 }}
@@ -1,5 +1,11 @@
1
1
  # Ignore environment file with ROWAN_API_KEY
2
2
  .env
3
+ # Variant env files (.env.test, .env.single-tenant, ...); .envrc is tracked for direnv
4
+ .env.*
5
+ .app.json
6
+
7
+ # macOS
8
+ .DS_Store
3
9
 
4
10
  # Created by https://www.toptal.com/developers/gitignore/api/python
5
11
  # Edit at https://www.toptal.com/developers/gitignore?templates=python
@@ -203,3 +209,6 @@ cyp/
203
209
  msa_directory/
204
210
 
205
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.15
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
@@ -48,6 +61,23 @@ codex plugin marketplace add rowansci/rowan-python --ref master
48
61
  codex plugin add computational-chemistry-and-biology@rowan
49
62
  ```
50
63
 
64
+ ### Rowan MCP server (optional)
65
+
66
+ The skill also works with the hosted Rowan MCP server, which provides Rowan tools directly to the
67
+ agent. Add it once per client:
68
+
69
+ ```bash
70
+ # Claude Code
71
+ claude mcp add --transport http rowan https://mcp.rowansci.com/
72
+
73
+ # Codex
74
+ codex mcp add rowan --url https://mcp.rowansci.com/
75
+ codex mcp login rowan
76
+ ```
77
+
78
+ Both clients prompt for OAuth sign-in on first use. Without the server, the skill falls back to the
79
+ Rowan Python SDK, which authenticates with `ROWAN_API_KEY` instead.
80
+
51
81
  Start a new Claude Code or Codex session after installation. For manual installation, download the
52
82
  [latest skill ZIP](https://github.com/rowansci/rowan-python/releases/download/skill-latest/computational-chemistry-and-biology-skill.zip)
53
83
  and extract it into your agent's skills directory.
@@ -57,9 +87,6 @@ and extract it into your agent's skills directory.
57
87
  To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
58
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).
59
89
 
60
-
61
90
  ## Issues
62
91
 
63
92
  To report issues, please use the "Issues" tab above.
64
-
65
- *Corin Wagen, 2023*
@@ -0,0 +1,75 @@
1
+ # Rowan Python Library
2
+
3
+ [![pypi](https://img.shields.io/pypi/v/rowan-python.svg)](https://pypi.python.org/pypi/rowan-python)
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
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)
6
+ [![Downloads](https://img.shields.io/pypi/dm/rowan-python.svg)](https://pypi.python.org/pypi/rowan-python/)
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.
19
+
20
+ ## Documentation
21
+
22
+ Read the [Rowan Python API documentation](https://docs.rowansci.com/python-api).
23
+
24
+ ## Agent skill
25
+
26
+ Ships with a [computational chemistry and biology skill](skills/computational-chemistry-and-biology/)
27
+ that helps coding agents choose and run Rowan workflows through either Rowan MCP tools or the
28
+ Rowan Python SDK.
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
+
33
+ ### Claude Code
34
+
35
+ ```bash
36
+ claude plugin marketplace add https://github.com/rowansci/rowan-python.git
37
+ claude plugin install computational-chemistry-and-biology@rowan
38
+ ```
39
+
40
+ ### Codex
41
+
42
+ ```bash
43
+ codex plugin marketplace add rowansci/rowan-python --ref master
44
+ codex plugin add computational-chemistry-and-biology@rowan
45
+ ```
46
+
47
+ ### Rowan MCP server (optional)
48
+
49
+ The skill also works with the hosted Rowan MCP server, which provides Rowan tools directly to the
50
+ agent. Add it once per client:
51
+
52
+ ```bash
53
+ # Claude Code
54
+ claude mcp add --transport http rowan https://mcp.rowansci.com/
55
+
56
+ # Codex
57
+ codex mcp add rowan --url https://mcp.rowansci.com/
58
+ codex mcp login rowan
59
+ ```
60
+
61
+ Both clients prompt for OAuth sign-in on first use. Without the server, the skill falls back to the
62
+ Rowan Python SDK, which authenticates with `ROWAN_API_KEY` instead.
63
+
64
+ Start a new Claude Code or Codex session after installation. For manual installation, download the
65
+ [latest skill ZIP](https://github.com/rowansci/rowan-python/releases/download/skill-latest/computational-chemistry-and-biology-skill.zip)
66
+ and extract it into your agent's skills directory.
67
+
68
+ ## Running examples
69
+
70
+ To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
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).
72
+
73
+ ## Issues
74
+
75
+ To report issues, please use the "Issues" tab above.
@@ -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
 
@@ -0,0 +1,35 @@
1
+ # Basic Calculation
2
+
3
+ ## Configuration
4
+
5
+ Use the exported enums instead of raw strings when setting the method and engine:
6
+
7
+ ```python
8
+ import rowan
9
+
10
+ molecule = rowan.Molecule.from_smiles("CCO")
11
+ workflow = rowan.submit_basic_calculation_workflow(
12
+ initial_molecule=molecule,
13
+ tasks=["optimize"],
14
+ method=rowan.Method.GFN2_XTB,
15
+ engine=rowan.Engine.XTB,
16
+ )
17
+ ```
18
+
19
+ Pass an [`OptimizationSettings`](settings.md) object or
20
+ an equivalent dictionary to `opt_settings`. `optimize_cell` defaults to `False`; set it to `True`
21
+ only when optimizing a periodic cell.
22
+
23
+ ```python
24
+ opt_settings = rowan.OptimizationSettings(max_steps=200, optimize_cell=False)
25
+ ```
26
+
27
+ ::: rowan.workflows.basic_calculation
28
+ handler: python
29
+ options:
30
+ show_source: false
31
+ show_root_heading: false
32
+ show_root_toc_entry: false
33
+ members_order: source
34
+ group_by_category: true
35
+ filters: ["!^_"]
@@ -12,6 +12,21 @@
12
12
  members:
13
13
  - Settings
14
14
 
15
+ ## Basis sets
16
+
17
+ Pass a basis set name as a string for ordinary calculations. Use `rowan.BasisSet` when configuring
18
+ atom- or element-specific overrides.
19
+
20
+ ::: stjames.basis_set
21
+ handler: python
22
+ options:
23
+ show_source: false
24
+ show_root_heading: false
25
+ show_root_toc_entry: false
26
+ members_order: source
27
+ group_by_category: true
28
+ filters: ["!^_"]
29
+
15
30
  ::: stjames.opt_settings
16
31
  handler: python
17
32
  options:
@@ -3,54 +3,90 @@
3
3
  Value types shared across many workflows — the vocabulary you use for `preset`, `method`, and
4
4
  structural inputs regardless of which workflow you're submitting.
5
5
 
6
- ## Method, Engine & Task
6
+ Legacy enum members retained for parsing historical workflows are omitted below.
7
7
 
8
- ::: stjames.method
8
+ Enum members and their accepted string values are listed below. Import these types from `rowan`,
9
+ not `stjames`.
10
+
11
+ ## Methods
12
+
13
+ ::: stjames.method.Method
9
14
  handler: python
10
15
  options:
11
16
  show_source: false
17
+ show_bases: false
12
18
  show_root_heading: false
13
19
  show_root_toc_entry: false
20
+ show_if_no_docstring: true
21
+ separate_signature: false
14
22
  members_order: source
15
23
  group_by_category: true
16
- filters: ["!^_"]
24
+ filters:
25
+ - "!^_"
26
+ - "!^default_engine$"
27
+ - "!^(MACE_MP_0|MACE_MP_0B2_L|EGRET_1|EGRET_1E|EGRET_1T)$"
28
+ - "!^SMIRNOFF_2_(0_0|2_1)_AMBER_AM1BCC$"
17
29
 
18
- ::: stjames.engine
30
+ ## Engines
31
+
32
+ ::: stjames.engine.Engine
19
33
  handler: python
20
34
  options:
21
35
  show_source: false
36
+ show_bases: false
22
37
  show_root_heading: false
23
38
  show_root_toc_entry: false
39
+ show_if_no_docstring: true
40
+ separate_signature: false
24
41
  members_order: source
25
42
  group_by_category: true
26
- filters: ["!^_"]
43
+ filters:
44
+ - "!^_"
45
+ - "!^(EGRET|MACE|TERACHEM)$"
27
46
 
28
- ::: stjames.task
47
+ ## Tasks
48
+
49
+ ::: stjames.task.Task
29
50
  handler: python
30
51
  options:
31
52
  show_source: false
53
+ show_bases: false
32
54
  show_root_heading: false
33
55
  show_root_toc_entry: false
56
+ show_if_no_docstring: true
57
+ separate_signature: false
34
58
  members_order: source
35
59
  group_by_category: true
36
- filters: ["!^_"]
60
+ filters:
61
+ - "!^_"
62
+ - "!^STRESS$"
37
63
 
38
- ::: stjames.correction
64
+ ## Corrections
65
+
66
+ ::: stjames.correction.Correction
39
67
  handler: python
40
68
  options:
41
69
  show_source: false
70
+ show_bases: false
42
71
  show_root_heading: false
43
72
  show_root_toc_entry: false
73
+ show_if_no_docstring: true
74
+ separate_signature: false
44
75
  members_order: source
45
76
  group_by_category: true
46
77
  filters: ["!^_"]
47
78
 
48
- ::: stjames.mode
79
+ ## Modes
80
+
81
+ ::: stjames.mode.Mode
49
82
  handler: python
50
83
  options:
51
84
  show_source: false
85
+ show_bases: false
52
86
  show_root_heading: false
53
87
  show_root_toc_entry: false
88
+ show_if_no_docstring: true
89
+ separate_signature: false
54
90
  members_order: source
55
91
  group_by_category: true
56
92
  filters: ["!^_"]
@@ -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
  )