rowan-python 3.1.14__tar.gz → 3.1.16__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 (270) hide show
  1. {rowan_python-3.1.14 → rowan_python-3.1.16}/.gitignore +5 -0
  2. {rowan_python-3.1.14 → rowan_python-3.1.16}/AGENTS.md +9 -1
  3. {rowan_python-3.1.14 → rowan_python-3.1.16}/PKG-INFO +19 -2
  4. {rowan_python-3.1.14 → rowan_python-3.1.16}/README.md +17 -0
  5. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/analogue-docking.md +3 -0
  6. rowan_python-3.1.16/docs/workflows/basic-calculation.md +35 -0
  7. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/batch-docking.md +4 -0
  8. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/docking.md +10 -0
  9. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/settings.md +15 -0
  10. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/types.md +45 -9
  11. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/binding_affinity.py +1 -1
  12. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/docking.py +3 -3
  13. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/electronic_properties.py +3 -1
  14. rowan_python-3.1.16/examples/induced_fit_docking.py +61 -0
  15. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/pose_analysis_md.py +6 -2
  16. rowan_python-3.1.16/examples/protein_cofolding_modified_inputs.py +44 -0
  17. rowan_python-3.1.14/examples/pdb_download.py → rowan_python-3.1.16/examples/protein_file_download.py +5 -1
  18. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/protein_md.py +4 -0
  19. rowan_python-3.1.16/examples/temporary_workflow_sharing.py +19 -0
  20. {rowan_python-3.1.14 → rowan_python-3.1.16}/pixi.lock +276 -276
  21. {rowan_python-3.1.14 → rowan_python-3.1.16}/pyproject.toml +2 -2
  22. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/__init__.py +8 -1
  23. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/protein.py +86 -21
  24. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/__init__.py +6 -0
  25. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/_molecular_dynamics.py +35 -29
  26. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/analogue_docking.py +1 -4
  27. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/base.py +77 -4
  28. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/batch_docking.py +31 -0
  29. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/binding_affinity.py +8 -12
  30. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/docking.py +66 -1
  31. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/electronic_properties.py +14 -13
  32. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/pose_analysis_md.py +13 -1
  33. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/protein_cofolding.py +24 -7
  34. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/protein_md.py +9 -0
  35. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/solvent_dependent_conformers.py +8 -0
  36. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/tautomer_search.py +7 -1
  37. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/SKILL.md +1 -1
  38. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +5 -6
  39. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/batch_docking.md +8 -0
  40. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/binding_affinity.md +3 -3
  41. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/docking.md +24 -0
  42. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +4 -4
  43. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +12 -5
  44. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/protein_md.md +4 -4
  45. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/python_sdk.md +20 -0
  46. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +2 -1
  47. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +1 -0
  48. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_binding_affinity.py +3 -2
  49. rowan_python-3.1.16/tests/test_cofolding_workflow_updates.py +121 -0
  50. rowan_python-3.1.16/tests/test_docking_workflow.py +150 -0
  51. rowan_python-3.1.16/tests/test_docking_workflow_updates.py +117 -0
  52. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_md_workflow_updates.py +97 -13
  53. rowan_python-3.1.16/tests/test_protein.py +66 -0
  54. rowan_python-3.1.16/tests/test_solvent_dependent_conformers.py +87 -0
  55. rowan_python-3.1.16/tests/test_tautomer_search.py +51 -0
  56. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_workflow_submission.py +76 -0
  57. rowan_python-3.1.14/docs/workflows/basic-calculation.md +0 -11
  58. rowan_python-3.1.14/tests/test_protein.py +0 -39
  59. {rowan_python-3.1.14 → rowan_python-3.1.16}/.agents/plugins/marketplace.json +0 -0
  60. {rowan_python-3.1.14 → rowan_python-3.1.16}/.claude-plugin/marketplace.json +0 -0
  61. {rowan_python-3.1.14 → rowan_python-3.1.16}/.codex-plugin/plugin.json +0 -0
  62. {rowan_python-3.1.14 → rowan_python-3.1.16}/.envrc +0 -0
  63. {rowan_python-3.1.14 → rowan_python-3.1.16}/.github/workflows/build-and-deploy-docs.yml +0 -0
  64. {rowan_python-3.1.14 → rowan_python-3.1.16}/.github/workflows/publish-skill.yml +0 -0
  65. {rowan_python-3.1.14 → rowan_python-3.1.16}/.github/workflows/python-publish.yml +0 -0
  66. {rowan_python-3.1.14 → rowan_python-3.1.16}/.github/workflows/test.yml +0 -0
  67. {rowan_python-3.1.14 → rowan_python-3.1.16}/.pre-commit-config.yaml +0 -0
  68. {rowan_python-3.1.14 → rowan_python-3.1.16}/CLAUDE.md +0 -0
  69. {rowan_python-3.1.14 → rowan_python-3.1.16}/GEMINI.md +0 -0
  70. {rowan_python-3.1.14 → rowan_python-3.1.16}/LICENSE +0 -0
  71. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/api-keys.md +0 -0
  72. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/calculation.md +0 -0
  73. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/folder.md +0 -0
  74. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/molecule.md +0 -0
  75. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/project.md +0 -0
  76. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/protein.md +0 -0
  77. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/user.md +0 -0
  78. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/webhooks.md +0 -0
  79. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/api/workflow.md +0 -0
  80. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/images/RowanLogoLarge.png +0 -0
  81. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/images/RowanSquareLogo.png +0 -0
  82. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/images/favicon.svg +0 -0
  83. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/index.md +0 -0
  84. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/stylesheets/colors.css +0 -0
  85. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/admet.md +0 -0
  86. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/binding-affinity.md +0 -0
  87. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/bond-dissociation-energy.md +0 -0
  88. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/conformer-search-settings.md +0 -0
  89. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/conformer-search.md +0 -0
  90. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/covalent-inhibitor-scan.md +0 -0
  91. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/descriptors.md +0 -0
  92. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/double-ended-ts-search.md +0 -0
  93. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/electronic-properties.md +0 -0
  94. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/fukui.md +0 -0
  95. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/hydrogen-bond-donor-acceptor-strength.md +0 -0
  96. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/interaction-energy-decomposition.md +0 -0
  97. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/ion-mobility.md +0 -0
  98. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/irc.md +0 -0
  99. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/logp.md +0 -0
  100. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/macropka.md +0 -0
  101. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/membrane-permeability.md +0 -0
  102. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/msa.md +0 -0
  103. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/multistage-optimization.md +0 -0
  104. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/nmr.md +0 -0
  105. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/pka.md +0 -0
  106. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/pocket-detection.md +0 -0
  107. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/pose-analysis-md.md +0 -0
  108. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/protein-binder-design.md +0 -0
  109. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/protein-cofolding.md +0 -0
  110. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/protein-md.md +0 -0
  111. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/protein-preparation.md +0 -0
  112. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/rbfe-graph.md +0 -0
  113. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/redox-potential.md +0 -0
  114. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/relative-binding-free-energy-perturbation.md +0 -0
  115. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/scan.md +0 -0
  116. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/solubility.md +0 -0
  117. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/solvent-dependent-conformers.md +0 -0
  118. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/spin-states.md +0 -0
  119. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/strain.md +0 -0
  120. {rowan_python-3.1.14 → rowan_python-3.1.16}/docs/workflows/tautomer-search.md +0 -0
  121. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/PROTAC_solubility.py +0 -0
  122. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/admet.py +0 -0
  123. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/analogue_docking.py +0 -0
  124. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/aqueous_solubility.py +0 -0
  125. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/basic_calculation.py +0 -0
  126. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/basic_calculation_from_json.py +0 -0
  127. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/basic_calculation_with_constraint.py +0 -0
  128. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/basic_calculation_with_solvent.py +0 -0
  129. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/batch_docking.py +0 -0
  130. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/batch_solubility.py +0 -0
  131. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/bde.py +0 -0
  132. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/boltz_paired_msa.py +0 -0
  133. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/boltz_single_msa.py +0 -0
  134. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/chai_paired_msa.py +0 -0
  135. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/chai_single_msa.py +0 -0
  136. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/cofolding_screen.py +0 -0
  137. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/colabfold_paired_msa.py +0 -0
  138. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/colabfold_single_msa.py +0 -0
  139. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/conformer_dependent_redox.py +0 -0
  140. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/conformers.py +0 -0
  141. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/conformers_screen.py +0 -0
  142. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/covalent_docking.py +0 -0
  143. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/covalent_inhibitor_scan.py +0 -0
  144. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/1iep_receptorH.pdb +0 -0
  145. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/Al_FCC.xyz +0 -0
  146. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/citalopram_1iep.xyz +0 -0
  147. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/ibuprofen_conformers.sdf +0 -0
  148. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/tyk2_ligands.sdf +0 -0
  149. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/tyk2_structure.pdb +0 -0
  150. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/data/workflow_example.json +0 -0
  151. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/dcd_download.py +0 -0
  152. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/descriptors.py +0 -0
  153. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/docking_screen.py +0 -0
  154. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/double_ended_ts_search.py +0 -0
  155. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/estimate_workflow.py +0 -0
  156. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/fukui_index.py +0 -0
  157. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/hydrogen_bond_basicity.py +0 -0
  158. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/interaction_energy_decomposition.py +0 -0
  159. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/ion_mobility.py +0 -0
  160. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/irc.py +0 -0
  161. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/logp.py +0 -0
  162. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/macropka.py +0 -0
  163. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/membrane_permeability.py +0 -0
  164. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/multistage_optimization.py +0 -0
  165. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/nmr.py +0 -0
  166. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/optimization.py +0 -0
  167. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/periodic_dft.py +0 -0
  168. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/phenol_pka.py +0 -0
  169. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/pka.py +0 -0
  170. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/pocket_detection.py +0 -0
  171. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/project_scoped_api_key.py +0 -0
  172. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/protein_binder_design.py +0 -0
  173. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/protein_cofolding.py +0 -0
  174. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/protein_cofolding_with_constraints.py +0 -0
  175. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/protein_cofolding_with_templates.py +0 -0
  176. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/protein_preparation.py +0 -0
  177. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/rbfe_graph.py +0 -0
  178. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/rbfe_resubmit.py +0 -0
  179. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/redox_potential.py +0 -0
  180. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/relative_binding_free_energy_perturbation.py +0 -0
  181. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/resubmit_with_perturbations.py +0 -0
  182. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/retrieve_workflow.py +0 -0
  183. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/scan.py +0 -0
  184. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/solvent_dependent_conformers.py +0 -0
  185. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/spin_states.py +0 -0
  186. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/strain.py +0 -0
  187. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/tautomer.py +0 -0
  188. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/template.py +0 -0
  189. {rowan_python-3.1.14 → rowan_python-3.1.16}/examples/webhook.py +0 -0
  190. {rowan_python-3.1.14 → rowan_python-3.1.16}/mkdocs.yml +0 -0
  191. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/api_keys.py +0 -0
  192. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/calculation.py +0 -0
  193. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/config.py +0 -0
  194. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/constants.py +0 -0
  195. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/folder.py +0 -0
  196. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/molecule.py +0 -0
  197. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/project.py +0 -0
  198. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/py.typed +0 -0
  199. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/types.py +0 -0
  200. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/user.py +0 -0
  201. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/utils.py +0 -0
  202. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/admet.py +0 -0
  203. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/basic_calculation.py +0 -0
  204. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/bde.py +0 -0
  205. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/conformer_search.py +0 -0
  206. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/constants.py +0 -0
  207. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/covalent_inhibitor_scan.py +0 -0
  208. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/descriptors.py +0 -0
  209. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/double_ended_ts_search.py +0 -0
  210. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/fukui.py +0 -0
  211. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
  212. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/interaction_energy_decomposition.py +0 -0
  213. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/ion_mobility.py +0 -0
  214. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/irc.py +0 -0
  215. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/logp.py +0 -0
  216. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/macropka.py +0 -0
  217. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/membrane_permeability.py +0 -0
  218. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/msa.py +0 -0
  219. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/multistage_optimization.py +0 -0
  220. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/nmr.py +0 -0
  221. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/pka.py +0 -0
  222. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/pocket_detection.py +0 -0
  223. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/protein_binder_design.py +0 -0
  224. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/protein_preparation.py +0 -0
  225. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/rbfe_graph.py +0 -0
  226. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/redox_potential.py +0 -0
  227. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/relative_binding_free_energy_perturbation.py +0 -0
  228. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/scan.py +0 -0
  229. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/solubility.py +0 -0
  230. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/spin_states.py +0 -0
  231. {rowan_python-3.1.14 → rowan_python-3.1.16}/rowan/workflows/strain.py +0 -0
  232. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/.claude-plugin/plugin.json +0 -0
  233. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
  234. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +0 -0
  235. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
  236. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
  237. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +0 -0
  238. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
  239. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
  240. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
  241. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +0 -0
  242. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
  243. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
  244. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
  245. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
  246. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
  247. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/logp.md +0 -0
  248. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
  249. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/mcp_execution.md +0 -0
  250. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
  251. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
  252. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
  253. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
  254. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
  255. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
  256. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
  257. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/protein_preparation.md +0 -0
  258. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
  259. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
  260. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
  261. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
  262. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
  263. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
  264. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
  265. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
  266. {rowan_python-3.1.14 → rowan_python-3.1.16}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
  267. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_macropka_nmr.py +0 -0
  268. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_mango_forcefields.py +0 -0
  269. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_plugin.py +0 -0
  270. {rowan_python-3.1.14 → rowan_python-3.1.16}/tests/test_utils.py +0 -0
@@ -1,5 +1,10 @@
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
+
6
+ # macOS
7
+ .DS_Store
3
8
 
4
9
  # Created by https://www.toptal.com/developers/gitignore/api/python
5
10
  # Edit at https://www.toptal.com/developers/gitignore?templates=python
@@ -46,6 +46,12 @@ pixi run python examples/basic_calculation.py
46
46
 
47
47
  ## Code conventions
48
48
 
49
+ ### Documentation updates
50
+
51
+ - Treat requests to check or update docs as keeping existing descriptions, examples, docstrings, and skill references accurate.
52
+ - Make corrections where the relevant behavior is already documented. Don't add feature announcements, introductory callouts, or new sections just because a feature changed.
53
+ - If a document doesn't discuss the affected behavior, usually leave it alone. Preserve its existing scope and emphasis unless the user asks for expanded documentation.
54
+
49
55
  ### Docstrings
50
56
 
51
57
  Format: reStructuredText-style. No types in docstrings, no leading articles.
@@ -100,7 +106,9 @@ Via ruff:
100
106
 
101
107
  ## Git authorization policy
102
108
 
103
- **Do not run `git commit`, `git push`, or any other git write commands without explicit permission from the user.**
109
+ - Prepare changes on a local feature branch. Local commits are allowed as part of authorized development work.
110
+ - The user handles pushing and opening PRs. Do not push branches, create PRs, or change remote branches unless the user explicitly requests that specific remote action.
111
+ - A request to get changes ready for a PR means prepare the local branch, not publish it or open a PR.
104
112
 
105
113
  **Never add yourself as a commit author or co-author.** Do not include `Co-Authored-By:`, `Author:`, or any similar trailer that attributes the commit to an AI model or tool. Commits are attributed solely to the human developer.
106
114
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rowan-python
3
- Version: 3.1.14
3
+ Version: 3.1.16
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.257
14
+ Requires-Dist: stjames>=0.0.261
15
15
  Description-Content-Type: text/markdown
16
16
 
17
17
  # Rowan Python Library
@@ -48,6 +48,23 @@ codex plugin marketplace add rowansci/rowan-python --ref master
48
48
  codex plugin add computational-chemistry-and-biology@rowan
49
49
  ```
50
50
 
51
+ ### Rowan MCP server (optional)
52
+
53
+ The skill also works with the hosted Rowan MCP server, which provides Rowan tools directly to the
54
+ agent. Add it once per client:
55
+
56
+ ```bash
57
+ # Claude Code
58
+ claude mcp add --transport http rowan https://mcp.rowansci.com/
59
+
60
+ # Codex
61
+ codex mcp add rowan --url https://mcp.rowansci.com/
62
+ codex mcp login rowan
63
+ ```
64
+
65
+ Both clients prompt for OAuth sign-in on first use. Without the server, the skill falls back to the
66
+ Rowan Python SDK, which authenticates with `ROWAN_API_KEY` instead.
67
+
51
68
  Start a new Claude Code or Codex session after installation. For manual installation, download the
52
69
  [latest skill ZIP](https://github.com/rowansci/rowan-python/releases/download/skill-latest/computational-chemistry-and-biology-skill.zip)
53
70
  and extract it into your agent's skills directory.
@@ -32,6 +32,23 @@ codex plugin marketplace add rowansci/rowan-python --ref master
32
32
  codex plugin add computational-chemistry-and-biology@rowan
33
33
  ```
34
34
 
35
+ ### Rowan MCP server (optional)
36
+
37
+ The skill also works with the hosted Rowan MCP server, which provides Rowan tools directly to the
38
+ agent. Add it once per client:
39
+
40
+ ```bash
41
+ # Claude Code
42
+ claude mcp add --transport http rowan https://mcp.rowansci.com/
43
+
44
+ # Codex
45
+ codex mcp add rowan --url https://mcp.rowansci.com/
46
+ codex mcp login rowan
47
+ ```
48
+
49
+ Both clients prompt for OAuth sign-in on first use. Without the server, the skill falls back to the
50
+ Rowan Python SDK, which authenticates with `ROWAN_API_KEY` instead.
51
+
35
52
  Start a new Claude Code or Codex session after installation. For manual installation, download the
36
53
  [latest skill ZIP](https://github.com/rowansci/rowan-python/releases/download/skill-latest/computational-chemistry-and-biology-skill.zip)
37
54
  and extract it into your agent's skills directory.
@@ -1,5 +1,8 @@
1
1
  # Analogue Docking
2
2
 
3
+ Analogue docking generates at most 20 conformers per analogue by default. Override
4
+ `num_conformers_per_analogue` when a broader search is needed.
5
+
3
6
  ::: rowan.workflows.analogue_docking
4
7
  handler: python
5
8
  options:
@@ -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#stjames.opt_settings.OptimizationSettings) 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: ["!^_"]
@@ -1,5 +1,9 @@
1
1
  # Batch Docking
2
2
 
3
+ Use `num_poses_to_save` to retain the best pose for that many top-scoring compounds, and set
4
+ `run_mmgbsa=True` to refine those saved poses. `result.refined_scores` maps every input SMILES
5
+ to a `DockingScore` for a retained compound or `None` otherwise.
6
+
3
7
  ::: rowan.workflows.batch_docking
4
8
  handler: python
5
9
  options:
@@ -3,6 +3,16 @@
3
3
  The docking workflow supports Vina docking and both noncovalent and covalent gnina docking.
4
4
  Passing `GninaSettings` selects gnina; it does not by itself enable covalent docking.
5
5
 
6
+ ## Induced-fit docking
7
+
8
+ Pass `rowan.InducedFitSettings()` to `induced_fit_settings` when nearby receptor side chains may
9
+ need to relax around the ligand. Induced fit requires Vina or QVina2 and adds substantial work
10
+ beyond rigid docking.
11
+
12
+ Results contain both rigid and induced-receptor poses ranked by `induced_fit_score`. Use
13
+ `get_induced_receptor()` or `get_induced_receptors()` to retrieve the relaxed receptors associated
14
+ with induced poses. See `examples/induced_fit_docking.py` for a complete example.
15
+
6
16
  ## Covalent docking
7
17
 
8
18
  Set both covalent atom indices on `GninaSettings` to form a bond between a known ligand atom and
@@ -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: ["!^_"]
@@ -25,4 +25,4 @@ for name, score in zip(ligands.keys(), result.scores, strict=False):
25
25
  if score is None:
26
26
  print(f"{name}: scoring failed")
27
27
  continue
28
- print(f"{name}: {score.binding_affinity:.2f} kcal/mol (strain: {score.strain})")
28
+ print(f"{name}: {score.binding_affinity:.2f} kcal/mol")
@@ -37,7 +37,7 @@ print(result)
37
37
  for i, score in enumerate(result.scores):
38
38
  print(f" Pose {i}: score={score.score:.3f} posebusters_valid={score.posebusters_valid}")
39
39
 
40
- # Download the top-scoring protein–ligand complex as a PDB
40
+ # Download the top-scoring protein–ligand complex as mmCIF
41
41
  complex_protein = result.get_complex(0)
42
- complex_protein.download_pdb_file(name="dasatinib_2GQG_complex")
43
- print("Saved dasatinib_2GQG_complex.pdb")
42
+ complex_protein.download_structure(name="dasatinib_2GQG_complex")
43
+ print("Saved dasatinib_2GQG_complex.cif")
@@ -17,7 +17,9 @@ folder = rowan.get_folder("examples")
17
17
 
18
18
  workflow = rowan.submit_electronic_properties_workflow(
19
19
  initial_molecule=rowan.Molecule.from_smiles("C=O"), # formaldehyde
20
- method="b97_3c", # default: lightweight DFT
20
+ method="r2scan",
21
+ basis_set="def2-svp",
22
+ engine="gpu4pyscf",
21
23
  compute_density_cube=True,
22
24
  compute_electrostatic_potential_cube=True,
23
25
  compute_num_occupied_orbitals=3, # HOMO, HOMO-1, HOMO-2
@@ -0,0 +1,61 @@
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
+ protein = protein.select_chains(["A"])
12
+ preparation_workflow = rowan.submit_protein_preparation_workflow(
13
+ protein=protein.uuid,
14
+ add_missing_method="pdbfixer",
15
+ name="Prepare ABL1",
16
+ folder=folder,
17
+ )
18
+ prepared_protein_uuid = preparation_workflow.result().prepared_protein_uuid
19
+
20
+ # Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
21
+ center = [44.59, 79.75, 39.59]
22
+ size = [24.15, 21.33, 19.88]
23
+
24
+ # Induced-fit docking soft-docks candidate poses, relaxes the receptor around each with
25
+ # restrained local minimization, and redocks into the relaxed receptor. It requires
26
+ # VinaSettings with executable="vina" or "qvina2" (the default is "vina").
27
+ induced_fit_settings = rowan.InducedFitSettings(
28
+ max_receptors=6,
29
+ flexible_sidechain_radius=5.0,
30
+ )
31
+
32
+ workflow = rowan.submit_docking_workflow(
33
+ prepared_protein_uuid,
34
+ pocket=[center, size],
35
+ initial_molecule=dasatinib,
36
+ induced_fit_settings=induced_fit_settings,
37
+ name="Dasatinib induced-fit docking",
38
+ folder=folder,
39
+ )
40
+
41
+ print(f"View workflow privately at: https://labs.rowansci.com/docking/{workflow.uuid}")
42
+
43
+ result = workflow.result()
44
+ print(result)
45
+
46
+ # With induced-fit docking, poses are ranked by induced_fit_score rather than raw docking score.
47
+ for i, score in enumerate(result.scores):
48
+ print(
49
+ f" Pose {i}: induced_fit_score={score.induced_fit_score:.3f} "
50
+ f"score={score.score:.3f} receptor_strain={score.receptor_strain}"
51
+ )
52
+
53
+ # Download the top-scoring complex and best-ranked relaxed receptor as mmCIF files
54
+ complex_protein = result.get_complex(0)
55
+ complex_protein.download_structure(name="dasatinib_2GQG_induced_complex")
56
+ print("Saved dasatinib_2GQG_induced_complex.cif")
57
+
58
+ induced_receptors = result.get_induced_receptors()
59
+ if induced_receptors:
60
+ induced_receptors[0].download_structure(name="dasatinib_2GQG_induced_receptor")
61
+ print("Saved dasatinib_2GQG_induced_receptor.cif")
@@ -45,5 +45,9 @@ print(
45
45
  )
46
46
  md_result = md_workflow.result()
47
47
 
48
- # print ligand RMSD by frame
49
- print(md_result.trajectories[0].ligand_rmsd)
48
+ trajectory = md_result.trajectories[0]
49
+ print(f"Ligand RMSD: {trajectory.ligand_rmsd}")
50
+ print(f"Protein RMSD: {trajectory.protein_rmsd}")
51
+ print(f"Protein RMSF: {trajectory.rmsf}")
52
+ print(f"Potential energy: {trajectory.potential_energy} Hartree")
53
+ print(f"MM/GBSA scores: {trajectory.mmgbsa_scores} kcal/mol")
@@ -0,0 +1,44 @@
1
+ """Cofolding with modified polymers and a covalent bond constraint."""
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
+
9
+ protein = rowan.ProteinSequence(
10
+ sequence="ASA",
11
+ modifications=[rowan.ResidueModification(position=1, ccd="SEP")],
12
+ )
13
+ dna = rowan.DNASequence(
14
+ sequence="AC",
15
+ modifications=[rowan.NucleotideModification(position=1, ccd="5MC")],
16
+ )
17
+ rna = rowan.RNASequence(
18
+ sequence="AU",
19
+ modifications=[rowan.NucleotideModification(position=1, ccd="PSU")],
20
+ )
21
+
22
+ protein_atom = rowan.ConstraintTarget(
23
+ input_type="protein", input_index=0, token_index=1, atom_name="OG"
24
+ )
25
+ ligand_atom = rowan.ConstraintTarget(input_type="ligand", input_index=0, token_index=0)
26
+ covalent_bond = rowan.BondConstraint(atom_1=protein_atom, atom_2=ligand_atom)
27
+
28
+ workflow = rowan.submit_protein_cofolding_workflow(
29
+ initial_protein_sequences=[protein],
30
+ initial_dna_sequences=[dna],
31
+ initial_rna_sequences=[rna],
32
+ initial_smiles_list=["CBr"],
33
+ bond_constraints=[covalent_bond],
34
+ model=rowan.CofoldingModel.BOLTZ_2,
35
+ num_samples=1,
36
+ name="Modified polymers with covalent constraint",
37
+ folder=folder,
38
+ )
39
+
40
+ print(f"View workflow privately at: https://labs.rowansci.com/protein-cofolding/{workflow.uuid}")
41
+ result = workflow.result()
42
+ print(result)
43
+ for i, prediction in enumerate(result.predictions):
44
+ print(f" sample {i}: scores={prediction.scores}")
@@ -8,4 +8,8 @@ import rowan
8
8
  proteins = rowan.list_proteins()
9
9
  for protein in proteins:
10
10
  print(protein.name)
11
- protein.download_pdb_file(name=protein.name, path=Path("pdb_files"))
11
+ protein.download_structure(
12
+ name=protein.name,
13
+ path=Path("protein_files"),
14
+ file_format="mmcif", # Default; use "pdb" for PDB files
15
+ )
@@ -21,3 +21,7 @@ md_workflow = rowan.submit_protein_md_workflow(
21
21
  )
22
22
 
23
23
  print(f"View MD workflow privately at: https://labs.rowansci.com/protein-md/{md_workflow.uuid}")
24
+ trajectory = md_workflow.result().trajectories[0]
25
+ print(f"Protein RMSD: {trajectory.protein_rmsd}")
26
+ print(f"Protein RMSF: {trajectory.rmsf}")
27
+ print(f"Potential energy: {trajectory.potential_energy} Hartree")
@@ -0,0 +1,19 @@
1
+ """Example: temporarily share a workflow with anyone who has its link."""
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
+
8
+ workflow = rowan.retrieve_workflow("your-workflow-uuid")
9
+
10
+ # Temporary shares can last for up to 120 minutes. This does not make the workflow
11
+ # permanently public: `workflow.public` remains unchanged.
12
+ workflow = workflow.temporarily_share(duration_minutes=60)
13
+
14
+ print(f"Share URL: https://labs.rowansci.com/workflow/{workflow.uuid}")
15
+ print(f"Public until: {workflow.public_until}")
16
+ print(f"Temporary share active: {workflow.is_temporarily_public}")
17
+
18
+ # End access before the expiration time if needed.
19
+ # workflow = workflow.end_temporary_share()