rowan-python 3.1.3__tar.gz → 3.1.5__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 (183) hide show
  1. {rowan_python-3.1.3 → rowan_python-3.1.5}/PKG-INFO +2 -2
  2. {rowan_python-3.1.3 → rowan_python-3.1.5}/docs/index.md +43 -0
  3. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/batch_docking.py +1 -1
  4. rowan_python-3.1.5/examples/binding_affinity.py +24 -0
  5. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/boltz_paired_msa.py +2 -2
  6. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/boltz_single_msa.py +2 -2
  7. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/chai_paired_msa.py +2 -2
  8. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/chai_single_msa.py +2 -2
  9. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/colabfold_paired_msa.py +2 -2
  10. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/colabfold_single_msa.py +2 -2
  11. rowan_python-3.1.5/examples/docking.py +39 -0
  12. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/docking_screen.py +5 -2
  13. rowan_python-3.1.5/examples/periodic_dft.py +38 -0
  14. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pocket_detection.py +1 -1
  15. rowan_python-3.1.5/examples/resubmit_with_perturbations.py +39 -0
  16. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/scan.py +7 -7
  17. {rowan_python-3.1.3 → rowan_python-3.1.5}/pixi.lock +137 -153
  18. {rowan_python-3.1.3 → rowan_python-3.1.5}/pyproject.toml +2 -2
  19. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/__init__.py +10 -0
  20. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/calculation.py +16 -8
  21. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/folder.py +120 -1
  22. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/molecule.py +117 -0
  23. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/protein.py +92 -13
  24. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/utils.py +21 -1
  25. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/__init__.py +5 -0
  26. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/base.py +22 -3
  27. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/basic_calculation.py +49 -1
  28. rowan_python-3.1.5/rowan/workflows/binding_affinity.py +140 -0
  29. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/docking.py +10 -7
  30. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/fukui.py +2 -19
  31. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/msa.py +15 -22
  32. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/pka.py +2 -6
  33. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/pose_analysis_md.py +5 -0
  34. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/protein_md.py +22 -0
  35. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/rbfe_graph.py +12 -0
  36. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/SKILL.md +5 -2
  37. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +25 -1
  38. rowan_python-3.1.5/skills/computational-chemistry-and-biology/reference/binding_affinity.md +61 -0
  39. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/conformer_search.md +1 -1
  40. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/docking.md +14 -9
  41. rowan_python-3.1.5/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +59 -0
  42. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/msa.md +3 -3
  43. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +7 -1
  44. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_md.md +1 -0
  45. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_prep.md +2 -2
  46. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +9 -0
  47. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/scan.md +11 -11
  48. rowan_python-3.1.3/examples/periodic_dft.py +0 -58
  49. {rowan_python-3.1.3 → rowan_python-3.1.5}/.envrc +0 -0
  50. {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/build-and-deploy-docs.yml +0 -0
  51. {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/publish-skill.yml +0 -0
  52. {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/python-publish.yml +0 -0
  53. {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/test.yml +0 -0
  54. {rowan_python-3.1.3 → rowan_python-3.1.5}/.gitignore +0 -0
  55. {rowan_python-3.1.3 → rowan_python-3.1.5}/.pre-commit-config.yaml +0 -0
  56. {rowan_python-3.1.3 → rowan_python-3.1.5}/AGENTS.md +0 -0
  57. {rowan_python-3.1.3 → rowan_python-3.1.5}/CLAUDE.md +0 -0
  58. {rowan_python-3.1.3 → rowan_python-3.1.5}/GEMINI.md +0 -0
  59. {rowan_python-3.1.3 → rowan_python-3.1.5}/LICENSE +0 -0
  60. {rowan_python-3.1.3 → rowan_python-3.1.5}/README.md +0 -0
  61. {rowan_python-3.1.3 → rowan_python-3.1.5}/docs/images/deciduous-tree-favicon.png +0 -0
  62. {rowan_python-3.1.3 → rowan_python-3.1.5}/docs/stylesheets/colors.css +0 -0
  63. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/PROTAC_solubility.py +0 -0
  64. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/admet.py +0 -0
  65. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/analogue_docking.py +0 -0
  66. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/aqueous_solubility.py +0 -0
  67. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation.py +0 -0
  68. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation_from_json.py +0 -0
  69. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation_with_constraint.py +0 -0
  70. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation_with_solvent.py +0 -0
  71. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/bde.py +0 -0
  72. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/cofolding_screen.py +0 -0
  73. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/conformer_dependent_redox.py +0 -0
  74. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/conformers.py +0 -0
  75. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/conformers_screen.py +0 -0
  76. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/1iep_receptorH.pdb +0 -0
  77. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/Al_FCC.xyz +0 -0
  78. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/citalopram_1iep.xyz +0 -0
  79. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/ibuprofen_conformers.sdf +0 -0
  80. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/tyk2_ligands.sdf +0 -0
  81. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/tyk2_structure.pdb +0 -0
  82. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/workflow_example.json +0 -0
  83. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/dcd_download.py +0 -0
  84. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/descriptors.py +0 -0
  85. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/double_ended_ts_search.py +0 -0
  86. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/electronic_properties.py +0 -0
  87. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/estimate_workflow.py +0 -0
  88. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/fukui_index.py +0 -0
  89. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/hydrogen_bond_basicity.py +0 -0
  90. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/interaction_energy_decomposition.py +0 -0
  91. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/ion_mobility.py +0 -0
  92. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/irc.py +0 -0
  93. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/macropka.py +0 -0
  94. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/membrane_permeability.py +0 -0
  95. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/multistage_optimization.py +0 -0
  96. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/nmr.py +0 -0
  97. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/optimization.py +0 -0
  98. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pdb_download.py +0 -0
  99. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/phenol_pka.py +0 -0
  100. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pka.py +0 -0
  101. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pose_analysis_md.py +0 -0
  102. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/project_scoped_api_key.py +0 -0
  103. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_binder_design.py +0 -0
  104. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_cofolding.py +0 -0
  105. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_cofolding_with_constraints.py +0 -0
  106. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_cofolding_with_templates.py +0 -0
  107. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_md.py +0 -0
  108. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/rbfe_graph.py +0 -0
  109. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/rbfe_resubmit.py +0 -0
  110. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/redox_potential.py +0 -0
  111. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/relative_binding_free_energy_perturbation.py +0 -0
  112. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/retrieve_workflow.py +0 -0
  113. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/solvent_dependent_conformers.py +0 -0
  114. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/spin_states.py +0 -0
  115. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/strain.py +0 -0
  116. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/tautomer.py +0 -0
  117. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/template.py +0 -0
  118. {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/webhook.py +0 -0
  119. {rowan_python-3.1.3 → rowan_python-3.1.5}/mkdocs.yml +0 -0
  120. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/api_keys.py +0 -0
  121. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/config.py +0 -0
  122. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/constants.py +0 -0
  123. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/project.py +0 -0
  124. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/py.typed +0 -0
  125. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/types.py +0 -0
  126. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/user.py +0 -0
  127. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/admet.py +0 -0
  128. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/analogue_docking.py +0 -0
  129. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/batch_docking.py +0 -0
  130. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/bde.py +0 -0
  131. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/conformer_search.py +0 -0
  132. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/constants.py +0 -0
  133. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/descriptors.py +0 -0
  134. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/double_ended_ts_search.py +0 -0
  135. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/electronic_properties.py +0 -0
  136. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
  137. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/interaction_energy_decomposition.py +0 -0
  138. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/ion_mobility.py +0 -0
  139. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/irc.py +0 -0
  140. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/macropka.py +0 -0
  141. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/membrane_permeability.py +0 -0
  142. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/multistage_optimization.py +0 -0
  143. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/nmr.py +0 -0
  144. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/pocket_detection.py +0 -0
  145. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/protein_binder_design.py +0 -0
  146. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/protein_cofolding.py +0 -0
  147. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/redox_potential.py +0 -0
  148. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/relative_binding_free_energy_perturbation.py +0 -0
  149. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/scan.py +0 -0
  150. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/solubility.py +0 -0
  151. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/solvent_dependent_conformers.py +0 -0
  152. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/spin_states.py +0 -0
  153. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/strain.py +0 -0
  154. {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/tautomer_search.py +0 -0
  155. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
  156. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
  157. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
  158. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
  159. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
  160. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
  161. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
  162. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
  163. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
  164. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
  165. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
  166. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
  167. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
  168. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
  169. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
  170. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
  171. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
  172. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
  173. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
  174. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
  175. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
  176. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
  177. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
  178. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
  179. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
  180. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
  181. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
  182. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
  183. {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-python
3
- Version: 3.1.3
3
+ Version: 3.1.5
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.208
14
+ Requires-Dist: stjames>=0.0.217
15
15
  Description-Content-Type: text/markdown
16
16
 
17
17
  # Rowan Python Library
@@ -23,6 +23,16 @@
23
23
  - batch_submit_workflow
24
24
  - batch_poll_status
25
25
 
26
+ ::: rowan.calculation
27
+ handler: python
28
+ options:
29
+ show_source: false
30
+ show_root_heading: false
31
+ show_root_toc_entry: false
32
+ members_order: source
33
+ group_by_category: true
34
+ filters: ["!^_"]
35
+
26
36
  ## ADMET
27
37
  ::: rowan.workflows.admet
28
38
  handler: python
@@ -45,6 +55,17 @@
45
55
  group_by_category: true
46
56
  filters: ["!^__"]
47
57
 
58
+ ## Binding Affinity
59
+ ::: rowan.workflows.binding_affinity
60
+ handler: python
61
+ options:
62
+ show_source: false
63
+ show_root_heading: false
64
+ show_root_toc_entry: false
65
+ members_order: source
66
+ group_by_category: true
67
+ filters: ["!^__"]
68
+
48
69
  ## Basic Calculation
49
70
  ::: rowan.workflows.basic_calculation
50
71
  handler: python
@@ -254,6 +275,17 @@
254
275
  group_by_category: true
255
276
  filters: ["!^__"]
256
277
 
278
+ ## Pocket Detection
279
+ ::: rowan.workflows.pocket_detection
280
+ handler: python
281
+ options:
282
+ show_source: false
283
+ show_root_heading: false
284
+ show_root_toc_entry: false
285
+ members_order: source
286
+ group_by_category: true
287
+ filters: ["!^__"]
288
+
257
289
  ## Pose Analysis MD
258
290
  ::: rowan.workflows.pose_analysis_md
259
291
  handler: python
@@ -397,6 +429,17 @@
397
429
  group_by_category: true
398
430
  filters: ["!^__"]
399
431
 
432
+ ## API Keys
433
+ ::: rowan.api_keys
434
+ handler: python
435
+ options:
436
+ show_source: false
437
+ show_root_heading: false
438
+ show_root_toc_entry: false
439
+ members_order: source
440
+ group_by_category: true
441
+ filters: ["!^__"]
442
+
400
443
  ## Folder Class and Functions
401
444
  ::: rowan.folder
402
445
  handler: python
@@ -13,7 +13,7 @@ ligands = [
13
13
  ]
14
14
 
15
15
  protein = rowan.create_protein_from_pdb_id(
16
- "CDK2", "1HCK", project_uuid=rowan.default_project().uuid
16
+ "1HCK", name="CDK2", project_uuid=rowan.default_project().uuid
17
17
  )
18
18
 
19
19
  protein.prepare()
@@ -0,0 +1,24 @@
1
+ from pathlib import Path
2
+
3
+ import rowan
4
+
5
+ # Set your API key or use the ROWAN_API_KEY environment variable
6
+ # rowan.api_key = "rowan-sk..."
7
+ folder = rowan.get_folder("examples")
8
+ data_dir = Path(__file__).parent / "data"
9
+
10
+ protein = rowan.upload_protein("TYK2", data_dir / "tyk2_structure.pdb")
11
+ all_ligands = rowan.load_named_ligands(data_dir / "tyk2_ligands.sdf")
12
+ ligands = dict(list(all_ligands.items())[:3])
13
+
14
+ workflow = rowan.submit_binding_affinity_workflow(
15
+ protein=protein,
16
+ ligand_structures=list(ligands.values()),
17
+ name="Binding Affinity — TYK2 ligands",
18
+ folder=folder,
19
+ )
20
+ print(f"View at: https://labs.rowansci.com/binding-affinity/{workflow.uuid}")
21
+
22
+ result = workflow.result()
23
+ for name, score in zip(ligands.keys(), result.scores, strict=False):
24
+ print(f"{name}: {score.binding_affinity:.2f} kcal/mol (strain: {score.strain})")
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
14
14
  "VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
15
15
  "VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
16
16
  ],
17
- output_formats=["boltz"],
17
+ output_formats=[rowan.MSAFormat.BOLTZ],
18
18
  name="Boltz Paired MSA Example",
19
19
  folder=folder,
20
20
  )
@@ -23,7 +23,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
23
23
 
24
24
  msa_result = msa_workflow.result()
25
25
 
26
- msa_result.download_files("boltz", path=msa_directory)
26
+ msa_result.download_files(rowan.MSAFormat.BOLTZ, path=msa_directory)
27
27
 
28
28
  tar_path = next(msa_directory.glob("*.tar.gz"))
29
29
  with tarfile.open(tar_path, "r") as tar_ref:
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
13
13
  initial_protein_sequences=[
14
14
  "HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
15
15
  ],
16
- output_formats=["boltz"],
16
+ output_formats=[rowan.MSAFormat.BOLTZ],
17
17
  name="Boltz MSA Example",
18
18
  folder=folder,
19
19
  )
@@ -22,7 +22,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
22
22
 
23
23
  msa_result = msa_workflow.result()
24
24
 
25
- msa_result.download_files("boltz", path=msa_directory)
25
+ msa_result.download_files(rowan.MSAFormat.BOLTZ, path=msa_directory)
26
26
 
27
27
  tar_path = next(msa_directory.glob("*.tar.gz"))
28
28
  with tarfile.open(tar_path, "r") as tar_ref:
@@ -25,7 +25,7 @@ msa_workflow = rowan.submit_msa_workflow(
25
25
  "VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
26
26
  "VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
27
27
  ],
28
- output_formats=["chai"],
28
+ output_formats=[rowan.MSAFormat.CHAI],
29
29
  name="CHAI Paired MSA Example",
30
30
  folder=folder,
31
31
  )
@@ -34,7 +34,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
34
34
 
35
35
  msa_result = msa_workflow.result()
36
36
 
37
- msa_result.download_files("chai", path=msa_directory)
37
+ msa_result.download_files(rowan.MSAFormat.CHAI, path=msa_directory)
38
38
 
39
39
  tar_path = next(msa_directory.glob("*.tar.gz"))
40
40
  with tarfile.open(tar_path, "r") as tar_ref:
@@ -22,7 +22,7 @@ msa_workflow = rowan.submit_msa_workflow(
22
22
  initial_protein_sequences=[
23
23
  "HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
24
24
  ],
25
- output_formats=["chai"],
25
+ output_formats=[rowan.MSAFormat.CHAI],
26
26
  name="CHAI MSA Example",
27
27
  folder=folder,
28
28
  )
@@ -31,7 +31,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
31
31
 
32
32
  msa_result = msa_workflow.result()
33
33
 
34
- msa_result.download_files("chai", path=msa_directory)
34
+ msa_result.download_files(rowan.MSAFormat.CHAI, path=msa_directory)
35
35
 
36
36
  tar_path = next(msa_directory.glob("*.tar.gz"))
37
37
  with tarfile.open(tar_path, "r") as tar_ref:
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
14
14
  "VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
15
15
  "VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
16
16
  ],
17
- output_formats=["colabfold"],
17
+ output_formats=[rowan.MSAFormat.COLABFOLD],
18
18
  name="Colabfold Paired MSA Example",
19
19
  folder=folder,
20
20
  )
@@ -23,7 +23,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
23
23
 
24
24
  msa_result = msa_workflow.result()
25
25
 
26
- msa_result.download_files("colabfold", path=msa_directory)
26
+ msa_result.download_files(rowan.MSAFormat.COLABFOLD, path=msa_directory)
27
27
 
28
28
  tar_path = next(msa_directory.glob("*.tar.gz"))
29
29
  with tarfile.open(tar_path, "r") as tar_ref:
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
13
13
  initial_protein_sequences=[
14
14
  "HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
15
15
  ],
16
- output_formats=["colabfold"],
16
+ output_formats=[rowan.MSAFormat.COLABFOLD],
17
17
  name="Colabfold MSA Example",
18
18
  folder=folder,
19
19
  )
@@ -22,7 +22,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
22
22
 
23
23
  msa_result = msa_workflow.result()
24
24
 
25
- msa_result.download_files("colabfold", path=msa_directory)
25
+ msa_result.download_files(rowan.MSAFormat.COLABFOLD, path=msa_directory)
26
26
 
27
27
  tar_path = next(msa_directory.glob("*.tar.gz"))
28
28
  with tarfile.open(tar_path, "r") as tar_ref:
@@ -0,0 +1,39 @@
1
+ import rowan
2
+
3
+ # Set your API key or use the ROWAN_API_KEY environment variable
4
+ # rowan.api_key = "rowan-sk..."
5
+ folder = rowan.get_folder("examples")
6
+
7
+ # Dasatinib — redocked into its own ABL1 co-crystal structure (PDB: 2GQG)
8
+ dasatinib = rowan.Molecule.from_smiles("Cc1nc(Nc2ncc(C(=O)Nc3c(C)cccc3Cl)s2)cc(N2CCN(CCO)CC2)n1")
9
+
10
+ protein = rowan.create_protein_from_pdb_id("2GQG")
11
+ if len(protein.chains) > 1:
12
+ protein = protein.select_chains([protein.chains[0]])
13
+ protein.prepare()
14
+
15
+ # Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
16
+ # For a co-crystal structure, extract these from the bound ligand's position.
17
+ # Use rowan.submit_pocket_detection_workflow() when the binding site is unknown.
18
+ center = [44.59, 79.75, 39.59]
19
+ size = [24.15, 21.33, 19.88]
20
+ workflow = rowan.submit_docking_workflow(
21
+ protein,
22
+ pocket=[center, size],
23
+ initial_molecule=dasatinib,
24
+ name="dasatinib docking (2GQG redock)",
25
+ folder=folder,
26
+ )
27
+
28
+ print(f"View workflow privately at: https://labs.rowansci.com/docking/{workflow.uuid}")
29
+
30
+ result = workflow.result()
31
+ print(result)
32
+
33
+ for i, score in enumerate(result.scores):
34
+ print(f" Pose {i}: score={score.score:.3f} posebusters_valid={score.posebusters_valid}")
35
+
36
+ # Download the top-scoring protein–ligand complex as a PDB
37
+ complex_protein = result.get_complex(0)
38
+ complex_protein.download_pdb_file("dasatinib_2GQG_complex.pdb")
39
+ print("Saved dasatinib_2GQG_complex.pdb")
@@ -19,7 +19,7 @@ workflows = []
19
19
  results = {}
20
20
 
21
21
  protein = rowan.create_protein_from_pdb_id(
22
- "CDK2", "1HCK", project_uuid=rowan.default_project().uuid
22
+ "1HCK", name="CDK2", project_uuid=rowan.default_project().uuid
23
23
  )
24
24
 
25
25
  protein.prepare()
@@ -43,11 +43,14 @@ lowest_conformer_energy = 0
43
43
  for workflow, result in workflow_results:
44
44
  for conformer_uuid in result.conformers:
45
45
  energy = rowan.retrieve_calculation_molecules(conformer_uuid)[0]["energy"]
46
- lowest_conformer_energy = min(lowest_conformer_energy, energy)
46
+ if energy is not None:
47
+ lowest_conformer_energy = min(lowest_conformer_energy, energy)
47
48
 
48
49
  sorted_scores = sorted(result.scores, key=lambda s: s.score)
49
50
  for score in sorted_scores:
50
51
  pose_energy = rowan.retrieve_calculation_molecules(score.pose)[0]["energy"]
52
+ if pose_energy is None:
53
+ continue
51
54
  strain = (pose_energy - lowest_conformer_energy) * HARTREE_TO_KCALMOL
52
55
  if score.posebusters_valid and strain < 4:
53
56
  results[workflow.name] = score
@@ -0,0 +1,38 @@
1
+ """Band structure of bulk silicon using periodic DFT (Quantum ESPRESSO)."""
2
+
3
+ import rowan
4
+
5
+ # rowan.api_key = "rowan-sk..."
6
+ folder = rowan.get_folder("examples")
7
+
8
+ a = 5.431 # Å
9
+ si = rowan.Molecule.from_atoms(
10
+ atoms=[
11
+ rowan.Atom(atomic_number=14, position=(0.0, 0.0, 0.0)),
12
+ rowan.Atom(atomic_number=14, position=(a / 4, a / 4, a / 4)),
13
+ ],
14
+ charge=0,
15
+ multiplicity=1,
16
+ cell=rowan.PeriodicCell(
17
+ lattice_vectors=((0.0, a / 2, a / 2), (a / 2, 0.0, a / 2), (a / 2, a / 2, 0.0))
18
+ ),
19
+ )
20
+
21
+ workflow = rowan.submit_basic_calculation_workflow(
22
+ initial_molecule=si,
23
+ tasks=["band_structure"],
24
+ method="PBE",
25
+ basis_set="SSSP_PBE_efficiency",
26
+ pbc_dft_settings=rowan.PBCDFTSettings(kpoints=(2, 2, 2)),
27
+ name="Si band structure",
28
+ folder=folder,
29
+ )
30
+ print(f"https://labs.rowansci.com/calculation/{workflow.uuid}")
31
+ result = workflow.result()
32
+
33
+ print(f"Symmetry: space group {result.symmetry}")
34
+ print(f"XRD peaks: {len(result.xrd_peaks)} reflections")
35
+ print(f"Band gap: {result.band_gap:.4f} Ha") # ~0.020 Ha (PBE underestimates Si's 1.12 eV gap)
36
+ print(f"VBM: {result.band_structure.valence_band_maximum:.4f} Ha")
37
+ print(f"CBM: {result.band_structure.conduction_band_minimum:.4f} Ha")
38
+ print(f"DOS: {len(result.density_of_states)} points")
@@ -5,7 +5,7 @@ import rowan
5
5
  folder = rowan.get_folder("examples")
6
6
 
7
7
  protein = rowan.create_protein_from_pdb_id(
8
- "thymidine phosphorylase", "1OTP", project_uuid=rowan.default_project().uuid
8
+ "1OTP", name="thymidine phosphorylase", project_uuid=rowan.default_project().uuid
9
9
  )
10
10
 
11
11
  protein.prepare()
@@ -0,0 +1,39 @@
1
+ """
2
+ Resubmit a completed workflow with a perturbed structure.
3
+
4
+ Two strategies: random noise to break symmetry, or displacement along a
5
+ vibrational mode to follow a reaction coordinate or escape a stuck geometry.
6
+ """
7
+
8
+ import rowan
9
+
10
+ # Set your API key or use the ROWAN_API_KEY environment variable
11
+ # rowan.api_key = "rowan-sk..."
12
+ folder = rowan.get_folder("examples")
13
+
14
+ # --- Option 1: random noise ---
15
+ wf = rowan.retrieve_workflow("your-workflow-uuid")
16
+ mol = wf.result().molecule
17
+
18
+ perturbed_mol = mol.perturb()
19
+ resubmit = rowan.submit_multistage_optimization_workflow(
20
+ initial_molecule=perturbed_mol,
21
+ name="cyclobutane opt - perturbed resubmit",
22
+ folder=folder,
23
+ )
24
+ print(f"https://labs.rowansci.com/multistage-opt/{resubmit.uuid}")
25
+
26
+ # --- Option 2: displace along a vibrational mode ---
27
+ # Requires a prior frequency calculation. Imaginary modes have negative frequency.
28
+ ts_wf = rowan.retrieve_workflow("your-ts-freq-workflow-uuid")
29
+ ts_mol = ts_wf.result().molecule
30
+
31
+ imaginary_mode = next(m for m in ts_mol.vibrational_modes if m.frequency < 0)
32
+
33
+ displaced_mol = ts_mol.displace_along_mode(mode=imaginary_mode, displacement=0.3)
34
+ resubmit = rowan.submit_multistage_optimization_workflow(
35
+ initial_molecule=displaced_mol,
36
+ name="TS resubmit - displaced along imaginary mode",
37
+ folder=folder,
38
+ )
39
+ print(f"https://labs.rowansci.com/multistage-opt/{resubmit.uuid}")
@@ -13,13 +13,13 @@ folder = rowan.get_folder("examples")
13
13
  workflow = rowan.submit_scan_workflow(
14
14
  initial_molecule=rowan.Molecule.from_smiles("O"),
15
15
  name="Water Angle scan",
16
- scan_settings={
17
- "type": "angle",
18
- "atoms": [2, 1, 3], # 1-indexed
19
- "start": 100,
20
- "stop": 110,
21
- "num": 5,
22
- },
16
+ scan_settings=rowan.ScanSettings(
17
+ type="angle",
18
+ atoms=[2, 1, 3], # 1-indexed
19
+ start=100,
20
+ stop=110,
21
+ num=5,
22
+ ),
23
23
  calculation_method="GFN2-xTB",
24
24
  calculation_engine="xtb",
25
25
  folder=folder,