rowan-python 3.1.0__tar.gz → 3.1.1__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 (175) hide show
  1. rowan_python-3.1.1/.github/workflows/publish-skill.yml +28 -0
  2. {rowan_python-3.1.0 → rowan_python-3.1.1}/PKG-INFO +3 -1
  3. {rowan_python-3.1.0 → rowan_python-3.1.1}/README.md +2 -0
  4. {rowan_python-3.1.0 → rowan_python-3.1.1}/pixi.lock +43 -43
  5. {rowan_python-3.1.0 → rowan_python-3.1.1}/pyproject.toml +1 -1
  6. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/protein_cofolding.py +35 -13
  7. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +4 -3
  8. {rowan_python-3.1.0 → rowan_python-3.1.1}/.envrc +0 -0
  9. {rowan_python-3.1.0 → rowan_python-3.1.1}/.github/workflows/build-and-deploy-docs.yml +0 -0
  10. {rowan_python-3.1.0 → rowan_python-3.1.1}/.github/workflows/python-publish.yml +0 -0
  11. {rowan_python-3.1.0 → rowan_python-3.1.1}/.github/workflows/test.yml +0 -0
  12. {rowan_python-3.1.0 → rowan_python-3.1.1}/.gitignore +0 -0
  13. {rowan_python-3.1.0 → rowan_python-3.1.1}/.pre-commit-config.yaml +0 -0
  14. {rowan_python-3.1.0 → rowan_python-3.1.1}/AGENTS.md +0 -0
  15. {rowan_python-3.1.0 → rowan_python-3.1.1}/CLAUDE.md +0 -0
  16. {rowan_python-3.1.0 → rowan_python-3.1.1}/GEMINI.md +0 -0
  17. {rowan_python-3.1.0 → rowan_python-3.1.1}/LICENSE +0 -0
  18. {rowan_python-3.1.0 → rowan_python-3.1.1}/docs/images/deciduous-tree-favicon.png +0 -0
  19. {rowan_python-3.1.0 → rowan_python-3.1.1}/docs/index.md +0 -0
  20. {rowan_python-3.1.0 → rowan_python-3.1.1}/docs/stylesheets/colors.css +0 -0
  21. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/PROTAC_solubility.py +0 -0
  22. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/admet.py +0 -0
  23. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/analogue_docking.py +0 -0
  24. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/aqueous_solubility.py +0 -0
  25. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/basic_calculation.py +0 -0
  26. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/basic_calculation_from_json.py +0 -0
  27. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/basic_calculation_with_constraint.py +0 -0
  28. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/basic_calculation_with_solvent.py +0 -0
  29. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/batch_docking.py +0 -0
  30. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/bde.py +0 -0
  31. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/boltz_paired_msa.py +0 -0
  32. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/boltz_single_msa.py +0 -0
  33. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/chai_paired_msa.py +0 -0
  34. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/chai_single_msa.py +0 -0
  35. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/cofolding_screen.py +0 -0
  36. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/colabfold_paired_msa.py +0 -0
  37. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/colabfold_single_msa.py +0 -0
  38. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/conformer_dependent_redox.py +0 -0
  39. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/conformers.py +0 -0
  40. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/conformers_screen.py +0 -0
  41. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/1iep_receptorH.pdb +0 -0
  42. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/Al_FCC.xyz +0 -0
  43. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/citalopram_1iep.xyz +0 -0
  44. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/ibuprofen_conformers.sdf +0 -0
  45. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/tyk2_ligands.sdf +0 -0
  46. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/tyk2_structure.pdb +0 -0
  47. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/data/workflow_example.json +0 -0
  48. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/dcd_download.py +0 -0
  49. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/descriptors.py +0 -0
  50. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/docking_screen.py +0 -0
  51. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/double_ended_ts_search.py +0 -0
  52. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/electronic_properties.py +0 -0
  53. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/estimate_workflow.py +0 -0
  54. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/fukui_index.py +0 -0
  55. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/hydrogen_bond_basicity.py +0 -0
  56. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/interaction_energy_decomposition.py +0 -0
  57. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/ion_mobility.py +0 -0
  58. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/irc.py +0 -0
  59. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/macropka.py +0 -0
  60. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/membrane_permeability.py +0 -0
  61. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/multistage_optimization.py +0 -0
  62. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/nmr.py +0 -0
  63. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/optimization.py +0 -0
  64. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/pdb_download.py +0 -0
  65. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/periodic_dft.py +0 -0
  66. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/phenol_pka.py +0 -0
  67. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/pka.py +0 -0
  68. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/pocket_detection.py +0 -0
  69. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/pose_analysis_md.py +0 -0
  70. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/project_scoped_api_key.py +0 -0
  71. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/protein_binder_design.py +0 -0
  72. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/protein_cofolding.py +0 -0
  73. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/protein_cofolding_with_constraints.py +0 -0
  74. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/protein_cofolding_with_templates.py +0 -0
  75. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/protein_md.py +0 -0
  76. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/rbfe_graph.py +0 -0
  77. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/redox_potential.py +0 -0
  78. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/relative_binding_free_energy_perturbation.py +0 -0
  79. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/retrieve_workflow.py +0 -0
  80. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/scan.py +0 -0
  81. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/solvent_dependent_conformers.py +0 -0
  82. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/spin_states.py +0 -0
  83. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/strain.py +0 -0
  84. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/tautomer.py +0 -0
  85. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/template.py +0 -0
  86. {rowan_python-3.1.0 → rowan_python-3.1.1}/examples/webhook.py +0 -0
  87. {rowan_python-3.1.0 → rowan_python-3.1.1}/mkdocs.yml +0 -0
  88. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/__init__.py +0 -0
  89. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/api_keys.py +0 -0
  90. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/calculation.py +0 -0
  91. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/config.py +0 -0
  92. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/constants.py +0 -0
  93. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/folder.py +0 -0
  94. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/molecule.py +0 -0
  95. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/project.py +0 -0
  96. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/protein.py +0 -0
  97. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/py.typed +0 -0
  98. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/types.py +0 -0
  99. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/user.py +0 -0
  100. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/utils.py +0 -0
  101. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/__init__.py +0 -0
  102. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/admet.py +0 -0
  103. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/analogue_docking.py +0 -0
  104. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/base.py +0 -0
  105. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/basic_calculation.py +0 -0
  106. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/batch_docking.py +0 -0
  107. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/bde.py +0 -0
  108. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/conformer_search.py +0 -0
  109. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/constants.py +0 -0
  110. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/descriptors.py +0 -0
  111. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/docking.py +0 -0
  112. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/double_ended_ts_search.py +0 -0
  113. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/electronic_properties.py +0 -0
  114. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/fukui.py +0 -0
  115. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
  116. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/interaction_energy_decomposition.py +0 -0
  117. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/ion_mobility.py +0 -0
  118. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/irc.py +0 -0
  119. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/macropka.py +0 -0
  120. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/membrane_permeability.py +0 -0
  121. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/msa.py +0 -0
  122. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/multistage_optimization.py +0 -0
  123. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/nmr.py +0 -0
  124. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/pka.py +0 -0
  125. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/pocket_detection.py +0 -0
  126. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/pose_analysis_md.py +0 -0
  127. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/protein_binder_design.py +0 -0
  128. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/protein_md.py +0 -0
  129. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/rbfe_graph.py +0 -0
  130. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/redox_potential.py +0 -0
  131. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/relative_binding_free_energy_perturbation.py +0 -0
  132. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/scan.py +0 -0
  133. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/solubility.py +0 -0
  134. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/solvent_dependent_conformers.py +0 -0
  135. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/spin_states.py +0 -0
  136. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/strain.py +0 -0
  137. {rowan_python-3.1.0 → rowan_python-3.1.1}/rowan/workflows/tautomer_search.py +0 -0
  138. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/SKILL.md +0 -0
  139. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
  140. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
  141. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +0 -0
  142. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
  143. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
  144. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
  145. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
  146. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/docking.md +0 -0
  147. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
  148. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
  149. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
  150. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
  151. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
  152. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
  153. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
  154. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
  155. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
  156. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
  157. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
  158. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
  159. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
  160. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
  161. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +0 -0
  162. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
  163. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/protein_md.md +0 -0
  164. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/protein_prep.md +0 -0
  165. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
  166. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
  167. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
  168. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
  169. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
  170. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
  171. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
  172. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
  173. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
  174. {rowan_python-3.1.0 → rowan_python-3.1.1}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
  175. {rowan_python-3.1.0 → rowan_python-3.1.1}/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.1
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
@@ -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.
@@ -43,12 +43,12 @@ environments:
43
43
  - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl
44
44
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
45
45
  - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl
46
+ - pypi: https://files.pythonhosted.org/packages/88/4f/fc88eed7a404a88f14a9d9cf8f96126f0a7e6b8a7cf32dd93e58646d25b1/stjames-0.0.205-py3-none-any.whl
46
47
  - pypi: https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
47
48
  - pypi: https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl
48
49
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
49
50
  - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl
50
- - pypi: https://files.pythonhosted.org/packages/be/96/abf20a40282ffc15bc1b7ae7abd55943331f09a630f9692a719008e318ab/stjames-0.0.204-py3-none-any.whl
51
- - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl
51
+ - pypi: https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl
52
52
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
53
53
  - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl
54
54
  - pypi: https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
@@ -81,15 +81,15 @@ environments:
81
81
  - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl
82
82
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
83
83
  - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl
84
+ - pypi: https://files.pythonhosted.org/packages/88/4f/fc88eed7a404a88f14a9d9cf8f96126f0a7e6b8a7cf32dd93e58646d25b1/stjames-0.0.205-py3-none-any.whl
84
85
  - pypi: https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl
85
86
  - pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl
86
87
  - pypi: https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl
87
88
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
88
89
  - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl
89
90
  - pypi: https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl
91
+ - pypi: https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl
90
92
  - pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl
91
- - pypi: https://files.pythonhosted.org/packages/be/96/abf20a40282ffc15bc1b7ae7abd55943331f09a630f9692a719008e318ab/stjames-0.0.204-py3-none-any.whl
92
- - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl
93
93
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
94
94
  - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl
95
95
  - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl
@@ -141,6 +141,7 @@ environments:
141
141
  - pypi: https://files.pythonhosted.org/packages/28/de/a3e710469772c6a89595fc52816da05c1e164b4c866a89e3cb82fb1b67c5/mkdocs_autorefs-1.4.4-py3-none-any.whl
142
142
  - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
143
143
  - pypi: https://files.pythonhosted.org/packages/2c/01/bc663630c510822c95c47a66af9fa7a443c295b47d5f041e5e6ae62ef659/mkdocs_material-9.7.6-py3-none-any.whl
144
+ - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl
144
145
  - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
145
146
  - pypi: https://files.pythonhosted.org/packages/2d/88/17d656aa97406cd509e2be0e6eddcf81fc1666104bf81042b89721d4a44c/griffe_pydantic-1.3.1-py3-none-any.whl
146
147
  - pypi: https://files.pythonhosted.org/packages/30/7b/0f6916498687aad6aacc28dfa59cc9b2bf03b869d81522a9fe1bf6c1e72a/rdkit-2026.3.3-cp314-cp314-manylinux_2_28_x86_64.whl
@@ -165,6 +166,7 @@ environments:
165
166
  - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl
166
167
  - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
167
168
  - pypi: https://files.pythonhosted.org/packages/88/29/744136411e785c4b0b744d5413e56555265939ab3a104c6a4b719dad33fd/mkdocs_get_deps-0.2.2-py3-none-any.whl
169
+ - pypi: https://files.pythonhosted.org/packages/88/4f/fc88eed7a404a88f14a9d9cf8f96126f0a7e6b8a7cf32dd93e58646d25b1/stjames-0.0.205-py3-none-any.whl
168
170
  - pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
169
171
  - pypi: https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
170
172
  - pypi: https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
@@ -185,21 +187,19 @@ environments:
185
187
  - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl
186
188
  - pypi: https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl
187
189
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
190
+ - pypi: https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl
188
191
  - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl
189
- - pypi: https://files.pythonhosted.org/packages/be/96/abf20a40282ffc15bc1b7ae7abd55943331f09a630f9692a719008e318ab/stjames-0.0.204-py3-none-any.whl
190
192
  - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
191
193
  - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl
192
194
  - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
193
195
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
194
196
  - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl
195
197
  - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl
196
- - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl
197
198
  - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
198
199
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
199
200
  - pypi: https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl
200
201
  - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl
201
202
  - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl
202
- - pypi: https://files.pythonhosted.org/packages/e9/87/b0667ede418386ab631e48924b845d326f366d61e6bd08fe68a748fae4d4/virtualenv-21.5.0-py3-none-any.whl
203
203
  - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl
204
204
  - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
205
205
  - pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl
@@ -243,6 +243,7 @@ environments:
243
243
  - pypi: https://files.pythonhosted.org/packages/28/de/a3e710469772c6a89595fc52816da05c1e164b4c866a89e3cb82fb1b67c5/mkdocs_autorefs-1.4.4-py3-none-any.whl
244
244
  - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
245
245
  - pypi: https://files.pythonhosted.org/packages/2c/01/bc663630c510822c95c47a66af9fa7a443c295b47d5f041e5e6ae62ef659/mkdocs_material-9.7.6-py3-none-any.whl
246
+ - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl
246
247
  - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
247
248
  - pypi: https://files.pythonhosted.org/packages/2d/88/17d656aa97406cd509e2be0e6eddcf81fc1666104bf81042b89721d4a44c/griffe_pydantic-1.3.1-py3-none-any.whl
248
249
  - pypi: https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl
@@ -268,6 +269,7 @@ environments:
268
269
  - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl
269
270
  - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
270
271
  - pypi: https://files.pythonhosted.org/packages/88/29/744136411e785c4b0b744d5413e56555265939ab3a104c6a4b719dad33fd/mkdocs_get_deps-0.2.2-py3-none-any.whl
272
+ - pypi: https://files.pythonhosted.org/packages/88/4f/fc88eed7a404a88f14a9d9cf8f96126f0a7e6b8a7cf32dd93e58646d25b1/stjames-0.0.205-py3-none-any.whl
271
273
  - pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
272
274
  - pypi: https://files.pythonhosted.org/packages/8b/5a/ba30a81239b909821b3153e303e7def45178bf353da4f72380e6c5e8793b/pytest-9.1.0-py3-none-any.whl
273
275
  - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
@@ -287,24 +289,22 @@ environments:
287
289
  - pypi: https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl
288
290
  - pypi: https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl
289
291
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
292
+ - pypi: https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl
290
293
  - pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl
291
294
  - pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl
292
295
  - pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl
293
- - pypi: https://files.pythonhosted.org/packages/be/96/abf20a40282ffc15bc1b7ae7abd55943331f09a630f9692a719008e318ab/stjames-0.0.204-py3-none-any.whl
294
296
  - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
295
297
  - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl
296
298
  - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
297
299
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
298
300
  - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl
299
301
  - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl
300
- - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl
301
302
  - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
302
303
  - pypi: https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz
303
304
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
304
305
  - pypi: https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl
305
306
  - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl
306
307
  - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl
307
- - pypi: https://files.pythonhosted.org/packages/e9/87/b0667ede418386ab631e48924b845d326f366d61e6bd08fe68a748fae4d4/virtualenv-21.5.0-py3-none-any.whl
308
308
  - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl
309
309
  - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
310
310
  - pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl
@@ -1071,6 +1071,18 @@ packages:
1071
1071
  - mkdocs-redirects>=1.2 ; extra == 'recommended'
1072
1072
  - mkdocs-rss-plugin>=1.6 ; extra == 'recommended'
1073
1073
  requires_python: '>=3.8'
1074
+ - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl
1075
+ name: virtualenv
1076
+ version: 21.5.1
1077
+ sha256: 55aa670b67bbfb991b03fda39bd3276d92c419d702376e98c5df1c9989a26783
1078
+ requires_dist:
1079
+ - distlib>=0.3.7,<1
1080
+ - filelock>=3.24.2,<4 ; python_full_version >= '3.10'
1081
+ - filelock>=3.16.1,<=3.19.1 ; python_full_version < '3.10'
1082
+ - platformdirs>=3.9.1,<5
1083
+ - python-discovery>=1.4.2
1084
+ - typing-extensions>=4.13.2 ; python_full_version < '3.11'
1085
+ requires_python: '>=3.9'
1074
1086
  - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
1075
1087
  name: mergedeep
1076
1088
  version: 1.3.4
@@ -1352,6 +1364,17 @@ packages:
1352
1364
  - platformdirs>=2.2.0
1353
1365
  - pyyaml>=5.1
1354
1366
  requires_python: '>=3.9'
1367
+ - pypi: https://files.pythonhosted.org/packages/88/4f/fc88eed7a404a88f14a9d9cf8f96126f0a7e6b8a7cf32dd93e58646d25b1/stjames-0.0.205-py3-none-any.whl
1368
+ name: stjames
1369
+ version: 0.0.205
1370
+ sha256: bf39bd8b1d8eaa93ec88e754c4633fa8a238d05f84b4f1c4d37a229c513cd52b
1371
+ requires_dist:
1372
+ - pydantic>=2.4
1373
+ - numpy
1374
+ - requests
1375
+ - more-itertools
1376
+ - rdkit ; extra == 'rdkit'
1377
+ requires_python: '>=3.11'
1355
1378
  - pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
1356
1379
  name: nodeenv
1357
1380
  version: 1.10.0
@@ -1701,6 +1724,16 @@ packages:
1701
1724
  version: 1.17.0
1702
1725
  sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274
1703
1726
  requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*'
1727
+ - pypi: https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl
1728
+ name: anyio
1729
+ version: 4.14.0
1730
+ sha256: dd9b7a2a9799ed6552fde617b2c5df02b7fdd7d88392fc48101e51bae46164d9
1731
+ requires_dist:
1732
+ - exceptiongroup>=1.0.2 ; python_full_version < '3.11'
1733
+ - idna>=2.8
1734
+ - typing-extensions>=4.5 ; python_full_version < '3.13'
1735
+ - trio>=0.32.0 ; extra == 'trio'
1736
+ requires_python: '>=3.10'
1704
1737
  - pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl
1705
1738
  name: pillow
1706
1739
  version: 12.2.0
@@ -1743,17 +1776,6 @@ packages:
1743
1776
  version: 6.0.3
1744
1777
  sha256: 34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310
1745
1778
  requires_python: '>=3.8'
1746
- - pypi: https://files.pythonhosted.org/packages/be/96/abf20a40282ffc15bc1b7ae7abd55943331f09a630f9692a719008e318ab/stjames-0.0.204-py3-none-any.whl
1747
- name: stjames
1748
- version: 0.0.204
1749
- sha256: 51106909397fc0e8aebee2323b127137b8967c4193924a730b345d9f5a835ea0
1750
- requires_dist:
1751
- - pydantic>=2.4
1752
- - numpy
1753
- - requests
1754
- - more-itertools
1755
- - rdkit ; extra == 'rdkit'
1756
- requires_python: '>=3.11'
1757
1779
  - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
1758
1780
  name: executing
1759
1781
  version: 2.2.1
@@ -1802,16 +1824,6 @@ packages:
1802
1824
  requires_dist:
1803
1825
  - pygments
1804
1826
  requires_python: '>=3.8'
1805
- - pypi: https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl
1806
- name: anyio
1807
- version: 4.13.0
1808
- sha256: 08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708
1809
- requires_dist:
1810
- - exceptiongroup>=1.0.2 ; python_full_version < '3.11'
1811
- - idna>=2.8
1812
- - typing-extensions>=4.5 ; python_full_version < '3.13'
1813
- - trio>=0.32.0 ; extra == 'trio'
1814
- requires_python: '>=3.10'
1815
1827
  - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
1816
1828
  name: cfgv
1817
1829
  version: 3.5.0
@@ -1856,18 +1868,6 @@ packages:
1856
1868
  version: 11.1.0
1857
1869
  sha256: 4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192
1858
1870
  requires_python: '>=3.10'
1859
- - pypi: https://files.pythonhosted.org/packages/e9/87/b0667ede418386ab631e48924b845d326f366d61e6bd08fe68a748fae4d4/virtualenv-21.5.0-py3-none-any.whl
1860
- name: virtualenv
1861
- version: 21.5.0
1862
- sha256: 8f7c38605023688c89789f566959006af6d61c99eeeb9e58342eb780c5761e5e
1863
- requires_dist:
1864
- - distlib>=0.3.7,<1
1865
- - filelock>=3.24.2,<4 ; python_full_version >= '3.10'
1866
- - filelock>=3.16.1,<=3.19.1 ; python_full_version < '3.10'
1867
- - platformdirs>=3.9.1,<5
1868
- - python-discovery>=1.4.2
1869
- - typing-extensions>=4.13.2 ; python_full_version < '3.11'
1870
- requires_python: '>=3.9'
1871
1871
  - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl
1872
1872
  name: python-dateutil
1873
1873
  version: 2.9.0.post0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rowan-python"
3
- version = "3.1.0"
3
+ version = "3.1.1"
4
4
  description = "Rowan Python Library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -23,10 +23,10 @@ class CofoldingScores:
23
23
  """
24
24
  Confidence scores for a cofolding prediction.
25
25
 
26
- :param ptm: Predicted TM-score (0-1, higher is better).
27
- :param iptm: Interface predicted TM-score (0-1, higher is better).
28
- :param avg_lddt: Average per-residue LDDT confidence (0-1).
29
- :param confidence_score: Overall confidence score (0-1).
26
+ :param ptm: Predicted TM-score, overall structure confidence (0-1, higher is better).
27
+ :param iptm: Interface pTM, inter-chain packing confidence (0-1, higher is better).
28
+ :param avg_lddt: Mean per-residue pLDDT, local atomic accuracy (0-1, higher is better).
29
+ :param confidence_score: Overall aggregate confidence in the prediction (0-1, higher is better).
30
30
  """
31
31
 
32
32
  ptm: float | None = None
@@ -40,12 +40,26 @@ class AffinityScore:
40
40
  """
41
41
  Predicted binding affinity scores.
42
42
 
43
- :param pred_value: Predicted binding affinity (ensemble average).
44
- :param pred_value1: Predicted binding affinity (model 1).
45
- :param pred_value2: Predicted binding affinity (model 2).
46
- :param probability_binary: Probability of binding (ensemble average, 0-1).
47
- :param probability_binary1: Probability of binding (model 1, 0-1).
48
- :param probability_binary2: Probability of binding (model 2, 0-1).
43
+ Every field is optional; which ones a given run populates depends on the
44
+ cofolding model. In current runs Boltz-2 fills the pred_value and
45
+ probability_binary fields while Boltz-2.1 fills binding_confidence and
46
+ optimization_score, but the schema does not guarantee this split.
47
+
48
+ :param pred_value: Predicted pIC50, -log10(IC50 in M); higher means stronger
49
+ binding (ensemble average of the two affinity heads).
50
+ :param pred_value1: Predicted pIC50 from affinity head 1.
51
+ :param pred_value2: Predicted pIC50 from affinity head 2.
52
+ :param probability_binary: Predicted probability (0-1) that the ligand binds
53
+ its target; higher is better (ensemble average of the two affinity heads).
54
+ :param probability_binary1: Binding probability (0-1) from affinity head 1.
55
+ :param probability_binary2: Binding probability (0-1) from affinity head 2.
56
+ :param binding_confidence: Predicted probability (0-1, higher is better) that
57
+ the molecule or binder is a true binder rather than a decoy. Primary metric
58
+ for hit discovery (computed when binding is requested).
59
+ :param optimization_score: Binding-strength ranking derived from the model's
60
+ predicted log(IC50) affinity; higher means stronger predicted binding. Use
61
+ to rank-order likely binders during lead optimization (computed when binding
62
+ is requested).
49
63
  """
50
64
 
51
65
  pred_value: float | None = None
@@ -54,6 +68,8 @@ class AffinityScore:
54
68
  probability_binary: float | None = None
55
69
  probability_binary1: float | None = None
56
70
  probability_binary2: float | None = None
71
+ binding_confidence: float | None = None
72
+ optimization_score: float | None = None
57
73
 
58
74
 
59
75
  @dataclass(frozen=True, slots=True)
@@ -230,6 +246,8 @@ class ProteinCofoldingResult(WorkflowResult):
230
246
  probability_binary=a.get("probability_binary"),
231
247
  probability_binary1=a.get("probability_binary1"),
232
248
  probability_binary2=a.get("probability_binary2"),
249
+ binding_confidence=a.get("binding_confidence"),
250
+ optimization_score=a.get("optimization_score"),
233
251
  )
234
252
  return AffinityScore(
235
253
  pred_value=a.pred_value,
@@ -238,6 +256,8 @@ class ProteinCofoldingResult(WorkflowResult):
238
256
  probability_binary=a.probability_binary,
239
257
  probability_binary1=a.probability_binary1,
240
258
  probability_binary2=a.probability_binary2,
259
+ binding_confidence=getattr(a, "binding_confidence", None),
260
+ optimization_score=getattr(a, "optimization_score", None),
241
261
  )
242
262
 
243
263
 
@@ -271,7 +291,7 @@ def submit_protein_cofolding_workflow(
271
291
 
272
292
  See `examples/protein_cofolding_with_constraints.py` for a worked example
273
293
  of using `ConstraintTarget`, `ContactConstraint`, and `PocketConstraint`
274
- (Boltz-2 only).
294
+ (Boltz models only).
275
295
 
276
296
  :param initial_protein_sequences: Protein sequences to be cofolded.
277
297
  :param initial_dna_sequences: DNA sequences to be cofolded.
@@ -283,13 +303,15 @@ def submit_protein_cofolding_workflow(
283
303
  :param use_potentials: Whether to use potentials (inference-time steering) with Boltz.
284
304
  :param contact_constraints: Boltz contact constraints between two tokens.
285
305
  :param pocket_constraints: Boltz pocket constraints between a binder and contact tokens.
286
- :param templates: Structural templates to guide prediction (Boltz-2 or OpenFold-3 only).
306
+ :param templates: Structural templates to guide prediction (Boltz-2/2.1 or OpenFold-3 only).
287
307
  :param num_samples: Number of diffusion samples to generate. If None, uses the model default.
288
308
  :param compute_strain: Whether to compute the strain of the pose. Requires do_pose_refinement.
289
309
  (if `pose_refinement` is enabled).
290
310
  :param do_pose_refinement: Whether to optimize non-rotatable bonds in output poses.
291
311
  :param name: Name of the workflow.
292
- :param model: Model to use for the computation.
312
+ :param model: Model to use for the computation. Boltz-2.1 runs via Boltz's
313
+ hosted API (slower than the locally-run models) and reports a different
314
+ set of affinity metrics than Boltz-2 (see `AffinityScore`).
293
315
  :param folder_uuid: UUID of the folder to store the workflow in.
294
316
  :param folder: Folder object to store the workflow in.
295
317
  :param max_credits: Maximum number of credits to use for the workflow.
@@ -9,7 +9,7 @@ One or more biomolecule sequences, optionally with ligands, supplied directly as
9
9
  - `initial_smiles_list`: a list of ligand SMILES, all co-folded together with the biomolecules in a single complex. One workflow is one prediction of the whole complex, not one job per ligand; to screen several ligands separately, submit one workflow per ligand.
10
10
  - `ligand_binding_affinity_index`: index into `initial_smiles_list` of the ligand to predict a binding affinity for.
11
11
 
12
- This workflow predicts 3D structures of biomolecules and protein-ligand complexes using AlphaFold 3-style models (Boltz-2, Chai-1r, Boltz-1).
12
+ This workflow predicts 3D structures of biomolecules and protein-ligand complexes using AlphaFold 3-style models (Boltz-2, Boltz-2.1, Chai-1r, Boltz-1, OpenFold-3).
13
13
 
14
14
  ## Example
15
15
 
@@ -39,14 +39,14 @@ print(result) # e.g. <ProteinCofoldingResult predictions=5 iptm=0.87>
39
39
 
40
40
  ## Settings
41
41
 
42
- - `model` (default `boltz_2`): co-folding model, one of `boltz_2`, `chai_1r`, `boltz_1`.
42
+ - `model` (default `boltz_2`): co-folding model, one of `boltz_2`, `boltz_2_1`, `chai_1r`, `boltz_1`, `openfold_3`. The model changes which `affinity_score` fields are returned (see Result fields). `boltz_2_1` runs via Boltz's hosted API and is noticeably slower than the locally-run models.
43
43
  - `use_msa_server` (default `True`): generate a multiple-sequence alignment, which improves co-folding accuracy. Queries run on a secure Rowan-hosted server.
44
44
  - `use_potentials` (default `False`): use physics-based potentials to steer predictions toward more physical poses (this is what distinguishes Boltz-2x from Boltz-2). Required when a constraint sets `force=True`.
45
45
  - `num_samples` (default model-dependent): number of predicted samples to generate.
46
46
  - `compute_strain` (default `False`): run an OpenConf conformer search to estimate the predicted ligand's strain energy. Adds a few minutes (more for large ligands) and requires `do_pose_refinement=True` (`compute_strain=True` with it off raises a `ValueError`).
47
47
  - `do_pose_refinement` (default `False`): run a constrained AIMNet2 optimization on the output structure to refine the predicted pose.
48
48
  - `ligand_binding_affinity_index` (default none): index into `initial_smiles_list` of the ligand to predict a binding affinity for.
49
- - `templates` (default none): structural templates that guide the prediction toward a reference protein structure, each a `rowan.CofoldingTemplate(protein=..., max_distance=...)` where `protein` is a PDB or an uploaded protein UUID. Set `max_distance` (in angstroms) to enforce a maximum deviation from the template via potentials (requires `use_potentials=True`). Boltz-2 only.
49
+ - `templates` (default none): structural templates that guide the prediction toward a reference protein structure, each a `rowan.CofoldingTemplate(protein=..., max_distance=...)` where `protein` is a PDB or an uploaded protein UUID. Set `max_distance` (in angstroms) to enforce a maximum deviation from the template via potentials (requires `use_potentials=True`). Boltz-2, Boltz-2.1, or OpenFold-3 only.
50
50
 
51
51
  ## Constraints
52
52
 
@@ -91,5 +91,6 @@ wf = rowan.submit_protein_cofolding_workflow(
91
91
  - `predicted_structure_uuid` and `predicted_refined_structure_uuid`: UUIDs of the predicted structure and, when pose refinement ran, the refined one. Fetch with `rowan.retrieve_protein(uuid)`.
92
92
  - `lddt`: per-residue LDDT confidence for the primary prediction.
93
93
  - `scores`: confidence scores; `affinity_score`: predicted binding affinity for the primary prediction.
94
+ - `affinity_score` fields are all optional and **which ones are filled depends on the model** (the schema does not enforce this): Boltz-2 fills `pred_value`/`pred_value1`/`pred_value2` (predicted pIC50, higher = stronger; IC50 is derived from it) and `probability_binary`/`probability_binary1`/`probability_binary2` (binding probability, 0-1); Boltz-2.1 instead fills `binding_confidence` (probability the ligand is a true binder vs decoy — use for hit discovery) and `optimization_score` (binding-strength ranking, higher = stronger — use for lead optimization). The two models report non-overlapping affinity metrics, so a Boltz-2 vs Boltz-2.1 comparison shares only the `scores`.
94
95
  - `posebusters_valid`: whether the primary pose passes PoseBusters.
95
96
  - `strain`: ligand strain energy for the primary prediction.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes