rowan-python 3.1.0__tar.gz → 3.1.2__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 (176) hide show
  1. rowan_python-3.1.2/.github/workflows/publish-skill.yml +28 -0
  2. {rowan_python-3.1.0 → rowan_python-3.1.2}/PKG-INFO +4 -2
  3. {rowan_python-3.1.0 → rowan_python-3.1.2}/README.md +2 -0
  4. rowan_python-3.1.2/examples/rbfe_resubmit.py +51 -0
  5. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/retrieve_workflow.py +1 -1
  6. {rowan_python-3.1.0 → rowan_python-3.1.2}/pixi.lock +163 -163
  7. {rowan_python-3.1.0 → rowan_python-3.1.2}/pyproject.toml +2 -2
  8. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/__init__.py +1 -0
  9. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/protein_cofolding.py +35 -13
  10. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/rbfe_graph.py +32 -8
  11. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/relative_binding_free_energy_perturbation.py +11 -1
  12. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/SKILL.md +1 -1
  13. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +4 -3
  14. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +33 -2
  15. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +8 -3
  16. {rowan_python-3.1.0 → rowan_python-3.1.2}/.envrc +0 -0
  17. {rowan_python-3.1.0 → rowan_python-3.1.2}/.github/workflows/build-and-deploy-docs.yml +0 -0
  18. {rowan_python-3.1.0 → rowan_python-3.1.2}/.github/workflows/python-publish.yml +0 -0
  19. {rowan_python-3.1.0 → rowan_python-3.1.2}/.github/workflows/test.yml +0 -0
  20. {rowan_python-3.1.0 → rowan_python-3.1.2}/.gitignore +0 -0
  21. {rowan_python-3.1.0 → rowan_python-3.1.2}/.pre-commit-config.yaml +0 -0
  22. {rowan_python-3.1.0 → rowan_python-3.1.2}/AGENTS.md +0 -0
  23. {rowan_python-3.1.0 → rowan_python-3.1.2}/CLAUDE.md +0 -0
  24. {rowan_python-3.1.0 → rowan_python-3.1.2}/GEMINI.md +0 -0
  25. {rowan_python-3.1.0 → rowan_python-3.1.2}/LICENSE +0 -0
  26. {rowan_python-3.1.0 → rowan_python-3.1.2}/docs/images/deciduous-tree-favicon.png +0 -0
  27. {rowan_python-3.1.0 → rowan_python-3.1.2}/docs/index.md +0 -0
  28. {rowan_python-3.1.0 → rowan_python-3.1.2}/docs/stylesheets/colors.css +0 -0
  29. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/PROTAC_solubility.py +0 -0
  30. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/admet.py +0 -0
  31. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/analogue_docking.py +0 -0
  32. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/aqueous_solubility.py +0 -0
  33. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/basic_calculation.py +0 -0
  34. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/basic_calculation_from_json.py +0 -0
  35. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/basic_calculation_with_constraint.py +0 -0
  36. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/basic_calculation_with_solvent.py +0 -0
  37. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/batch_docking.py +0 -0
  38. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/bde.py +0 -0
  39. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/boltz_paired_msa.py +0 -0
  40. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/boltz_single_msa.py +0 -0
  41. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/chai_paired_msa.py +0 -0
  42. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/chai_single_msa.py +0 -0
  43. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/cofolding_screen.py +0 -0
  44. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/colabfold_paired_msa.py +0 -0
  45. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/colabfold_single_msa.py +0 -0
  46. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/conformer_dependent_redox.py +0 -0
  47. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/conformers.py +0 -0
  48. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/conformers_screen.py +0 -0
  49. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/1iep_receptorH.pdb +0 -0
  50. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/Al_FCC.xyz +0 -0
  51. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/citalopram_1iep.xyz +0 -0
  52. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/ibuprofen_conformers.sdf +0 -0
  53. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/tyk2_ligands.sdf +0 -0
  54. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/tyk2_structure.pdb +0 -0
  55. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/data/workflow_example.json +0 -0
  56. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/dcd_download.py +0 -0
  57. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/descriptors.py +0 -0
  58. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/docking_screen.py +0 -0
  59. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/double_ended_ts_search.py +0 -0
  60. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/electronic_properties.py +0 -0
  61. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/estimate_workflow.py +0 -0
  62. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/fukui_index.py +0 -0
  63. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/hydrogen_bond_basicity.py +0 -0
  64. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/interaction_energy_decomposition.py +0 -0
  65. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/ion_mobility.py +0 -0
  66. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/irc.py +0 -0
  67. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/macropka.py +0 -0
  68. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/membrane_permeability.py +0 -0
  69. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/multistage_optimization.py +0 -0
  70. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/nmr.py +0 -0
  71. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/optimization.py +0 -0
  72. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/pdb_download.py +0 -0
  73. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/periodic_dft.py +0 -0
  74. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/phenol_pka.py +0 -0
  75. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/pka.py +0 -0
  76. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/pocket_detection.py +0 -0
  77. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/pose_analysis_md.py +0 -0
  78. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/project_scoped_api_key.py +0 -0
  79. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/protein_binder_design.py +0 -0
  80. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/protein_cofolding.py +0 -0
  81. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/protein_cofolding_with_constraints.py +0 -0
  82. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/protein_cofolding_with_templates.py +0 -0
  83. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/protein_md.py +0 -0
  84. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/rbfe_graph.py +0 -0
  85. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/redox_potential.py +0 -0
  86. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/relative_binding_free_energy_perturbation.py +0 -0
  87. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/scan.py +0 -0
  88. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/solvent_dependent_conformers.py +0 -0
  89. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/spin_states.py +0 -0
  90. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/strain.py +0 -0
  91. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/tautomer.py +0 -0
  92. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/template.py +0 -0
  93. {rowan_python-3.1.0 → rowan_python-3.1.2}/examples/webhook.py +0 -0
  94. {rowan_python-3.1.0 → rowan_python-3.1.2}/mkdocs.yml +0 -0
  95. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/api_keys.py +0 -0
  96. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/calculation.py +0 -0
  97. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/config.py +0 -0
  98. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/constants.py +0 -0
  99. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/folder.py +0 -0
  100. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/molecule.py +0 -0
  101. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/project.py +0 -0
  102. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/protein.py +0 -0
  103. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/py.typed +0 -0
  104. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/types.py +0 -0
  105. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/user.py +0 -0
  106. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/utils.py +0 -0
  107. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/__init__.py +0 -0
  108. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/admet.py +0 -0
  109. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/analogue_docking.py +0 -0
  110. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/base.py +0 -0
  111. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/basic_calculation.py +0 -0
  112. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/batch_docking.py +0 -0
  113. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/bde.py +0 -0
  114. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/conformer_search.py +0 -0
  115. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/constants.py +0 -0
  116. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/descriptors.py +0 -0
  117. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/docking.py +0 -0
  118. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/double_ended_ts_search.py +0 -0
  119. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/electronic_properties.py +0 -0
  120. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/fukui.py +0 -0
  121. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
  122. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/interaction_energy_decomposition.py +0 -0
  123. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/ion_mobility.py +0 -0
  124. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/irc.py +0 -0
  125. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/macropka.py +0 -0
  126. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/membrane_permeability.py +0 -0
  127. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/msa.py +0 -0
  128. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/multistage_optimization.py +0 -0
  129. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/nmr.py +0 -0
  130. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/pka.py +0 -0
  131. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/pocket_detection.py +0 -0
  132. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/pose_analysis_md.py +0 -0
  133. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/protein_binder_design.py +0 -0
  134. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/protein_md.py +0 -0
  135. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/redox_potential.py +0 -0
  136. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/scan.py +0 -0
  137. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/solubility.py +0 -0
  138. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/solvent_dependent_conformers.py +0 -0
  139. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/spin_states.py +0 -0
  140. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/strain.py +0 -0
  141. {rowan_python-3.1.0 → rowan_python-3.1.2}/rowan/workflows/tautomer_search.py +0 -0
  142. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
  143. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
  144. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +0 -0
  145. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
  146. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
  147. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
  148. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
  149. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/docking.md +0 -0
  150. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
  151. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
  152. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
  153. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
  154. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
  155. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
  156. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
  157. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
  158. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
  159. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
  160. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
  161. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
  162. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
  163. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
  164. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +0 -0
  165. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
  166. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/protein_md.md +0 -0
  167. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/protein_prep.md +0 -0
  168. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
  169. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
  170. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
  171. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
  172. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
  173. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
  174. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
  175. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
  176. {rowan_python-3.1.0 → rowan_python-3.1.2}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
@@ -0,0 +1,28 @@
1
+ name: Publish Skill Zip
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ paths:
7
+ - 'skills/computational-chemistry-and-biology/**'
8
+ - '.github/workflows/publish-skill.yml'
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: write
13
+
14
+ jobs:
15
+ publish:
16
+ if: github.repository == 'rowansci/rowan-python'
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - name: Zip skill
21
+ run: cd skills && zip -r ../computational-chemistry-and-biology-skill.zip computational-chemistry-and-biology
22
+ - name: Publish/refresh release
23
+ uses: softprops/action-gh-release@v2
24
+ with:
25
+ tag_name: skill-latest
26
+ name: "Computational Chemistry & Biology Skill (latest)"
27
+ prerelease: true
28
+ files: computational-chemistry-and-biology-skill.zip
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-python
3
- Version: 3.1.0
3
+ Version: 3.1.2
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
@@ -11,7 +11,7 @@ Requires-Dist: httpx
11
11
  Requires-Dist: nest-asyncio
12
12
  Requires-Dist: rdkit
13
13
  Requires-Dist: setuptools
14
- Requires-Dist: stjames>=0.0.204
14
+ Requires-Dist: stjames>=0.0.208
15
15
  Description-Content-Type: text/markdown
16
16
 
17
17
  # Rowan Python Library
@@ -32,6 +32,8 @@ The documentation is available [here](https://docs.rowansci.com/python-api).
32
32
 
33
33
  Ships with a [skill](skills/computational-chemistry-and-biology/) that makes it easy for coding agents to use Rowan's tools to power chemistry and biology tasks. To use it, copy the directory into your agent's skills folder.
34
34
 
35
+ Download the latest skill as a zip [here](https://github.com/rowansci/rowan-python/releases/download/skill-latest/computational-chemistry-and-biology-skill.zip), then unzip it into your agent's skills folder.
36
+
35
37
  ## Running examples
36
38
 
37
39
  To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
@@ -16,6 +16,8 @@ The documentation is available [here](https://docs.rowansci.com/python-api).
16
16
 
17
17
  Ships with a [skill](skills/computational-chemistry-and-biology/) that makes it easy for coding agents to use Rowan's tools to power chemistry and biology tasks. To use it, copy the directory into your agent's skills folder.
18
18
 
19
+ Download the latest skill as a zip [here](https://github.com/rowansci/rowan-python/releases/download/skill-latest/computational-chemistry-and-biology-skill.zip), then unzip it into your agent's skills folder.
20
+
19
21
  ## Running examples
20
22
 
21
23
  To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
@@ -0,0 +1,51 @@
1
+ """Extend a converged RBFE graph with an additional ligand via reuse.
2
+
3
+ A completed RBFE graph holds converged per-edge relative free energies (ddG) on
4
+ each ligand-pair edge. Passing it back as `seed_graph` freezes those edges and
5
+ their results, constructs only the edges incident to the new ligand (atom-mapping
6
+ plus alchemical-path setup), and restricts the subsequent FEP to those edges -- the
7
+ existing complex/solvent legs are not resimulated. A per-ligand relative binding
8
+ free energy for the new ligand (relative to the reference ligand the graph is
9
+ anchored on) is then recovered by re-solving the maximum-likelihood estimate over
10
+ the augmented edge set.
11
+ """
12
+
13
+ import rowan
14
+
15
+ # Set your API key or use the ROWAN_API_KEY environment variable
16
+ # rowan.api_key = "rowan-sk..."
17
+
18
+ # UUID of a COMPLETED relative_binding_free_energy_perturbation workflow to extend.
19
+ FINISHED_RBFE_UUID = "your-completed-rbfe-uuid"
20
+
21
+ folder = rowan.get_folder("examples")
22
+
23
+ finished = rowan.retrieve_workflow(FINISHED_RBFE_UUID).result()
24
+ print(f"Finished study: {len(finished.ligands)} ligands, {len(finished.edges)} edges with ddG")
25
+
26
+ # Combine the finished study's ligands with the newly designed one(s) to score.
27
+ new_ligands = rowan.load_named_ligands("path/to/new_ligands.sdf")
28
+ ligands = {**finished.ligands, **new_ligands}
29
+
30
+ extended_graph = rowan.submit_relative_binding_free_energy_graph_workflow(
31
+ ligands=ligands,
32
+ seed_graph=finished.graph,
33
+ folder=folder,
34
+ name="RBFE Graph (extended)",
35
+ ).result()
36
+
37
+ resubmit = rowan.submit_relative_binding_free_energy_perturbation_workflow(
38
+ graph_result=extended_graph,
39
+ protein=finished.protein,
40
+ folder=folder,
41
+ name="RBFE Perturbation (resubmit)",
42
+ )
43
+ print(
44
+ "Resubmitted! View at: "
45
+ f"https://labs.rowansci.com/relative-binding-free-energy-perturbation/{resubmit.uuid}"
46
+ )
47
+
48
+ result = resubmit.result()
49
+ for name in new_ligands:
50
+ dg = result.ligand_dg_results[name]
51
+ print(f"{name}: dG = {dg.dg:.2f} +/- {dg.dg_err:.2f} kcal/mol")
@@ -9,7 +9,7 @@ import rowan
9
9
  # 2. The last segment of the workflow URL in the Rowan UI:
10
10
  # https://labs.rowansci.com/.../<uuid>
11
11
  # 3. Listed via rowan.list_workflows()
12
- workflow = rowan.retrieve_workflow("619fedc2-d8e9-4bbc-8780-170108d1f674")
12
+ workflow = rowan.retrieve_workflow("your-workflow-uuid")
13
13
 
14
14
  result = workflow.result()
15
15
  print(result)