rowan-python 3.1.2__tar.gz → 3.1.4__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.
- {rowan_python-3.1.2 → rowan_python-3.1.4}/PKG-INFO +1 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/docs/index.md +32 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/batch_docking.py +1 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/boltz_paired_msa.py +2 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/boltz_single_msa.py +2 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/chai_paired_msa.py +2 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/chai_single_msa.py +2 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/colabfold_paired_msa.py +2 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/colabfold_single_msa.py +2 -2
- rowan_python-3.1.4/examples/docking.py +39 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/docking_screen.py +5 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/pocket_detection.py +1 -1
- rowan_python-3.1.4/examples/resubmit_with_perturbations.py +39 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/scan.py +7 -7
- {rowan_python-3.1.2 → rowan_python-3.1.4}/pixi.lock +21 -21
- {rowan_python-3.1.2 → rowan_python-3.1.4}/pyproject.toml +1 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/__init__.py +6 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/calculation.py +16 -8
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/folder.py +120 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/molecule.py +86 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/protein.py +92 -13
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/utils.py +21 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/base.py +22 -3
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/basic_calculation.py +1 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/docking.py +10 -7
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/fukui.py +2 -19
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/msa.py +15 -22
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/pka.py +2 -6
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/protein_md.py +22 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/SKILL.md +4 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/conformer_search.md +1 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/docking.md +14 -9
- rowan_python-3.1.4/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +59 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/msa.md +3 -3
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +6 -1
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/protein_md.md +1 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/protein_prep.md +2 -2
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/scan.md +11 -11
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.envrc +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.github/workflows/build-and-deploy-docs.yml +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.github/workflows/publish-skill.yml +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.github/workflows/python-publish.yml +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.github/workflows/test.yml +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.gitignore +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/.pre-commit-config.yaml +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/AGENTS.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/CLAUDE.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/GEMINI.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/LICENSE +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/README.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/docs/images/deciduous-tree-favicon.png +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/docs/stylesheets/colors.css +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/PROTAC_solubility.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/admet.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/analogue_docking.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/aqueous_solubility.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/basic_calculation.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/basic_calculation_from_json.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/basic_calculation_with_constraint.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/basic_calculation_with_solvent.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/bde.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/cofolding_screen.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/conformer_dependent_redox.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/conformers.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/conformers_screen.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/1iep_receptorH.pdb +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/Al_FCC.xyz +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/citalopram_1iep.xyz +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/ibuprofen_conformers.sdf +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/tyk2_ligands.sdf +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/tyk2_structure.pdb +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/data/workflow_example.json +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/dcd_download.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/descriptors.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/electronic_properties.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/estimate_workflow.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/fukui_index.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/hydrogen_bond_basicity.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/ion_mobility.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/irc.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/macropka.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/membrane_permeability.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/multistage_optimization.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/nmr.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/optimization.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/pdb_download.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/periodic_dft.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/phenol_pka.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/pka.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/pose_analysis_md.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/project_scoped_api_key.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/protein_binder_design.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/protein_cofolding.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/protein_cofolding_with_constraints.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/protein_cofolding_with_templates.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/protein_md.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/rbfe_graph.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/rbfe_resubmit.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/redox_potential.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/retrieve_workflow.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/spin_states.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/strain.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/tautomer.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/template.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/examples/webhook.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/mkdocs.yml +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/api_keys.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/config.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/constants.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/project.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/py.typed +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/types.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/user.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/__init__.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/admet.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/analogue_docking.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/batch_docking.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/bde.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/conformer_search.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/constants.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/descriptors.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/electronic_properties.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/ion_mobility.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/irc.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/macropka.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/membrane_permeability.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/multistage_optimization.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/nmr.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/pocket_detection.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/pose_analysis_md.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/protein_binder_design.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/protein_cofolding.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/rbfe_graph.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/redox_potential.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/scan.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/solubility.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/spin_states.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/strain.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/rowan/workflows/tautomer_search.py +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
- {rowan_python-3.1.2 → rowan_python-3.1.4}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
|
@@ -23,6 +23,16 @@
|
|
|
23
23
|
- batch_submit_workflow
|
|
24
24
|
- batch_poll_status
|
|
25
25
|
|
|
26
|
+
::: rowan.calculation
|
|
27
|
+
handler: python
|
|
28
|
+
options:
|
|
29
|
+
show_source: false
|
|
30
|
+
show_root_heading: false
|
|
31
|
+
show_root_toc_entry: false
|
|
32
|
+
members_order: source
|
|
33
|
+
group_by_category: true
|
|
34
|
+
filters: ["!^_"]
|
|
35
|
+
|
|
26
36
|
## ADMET
|
|
27
37
|
::: rowan.workflows.admet
|
|
28
38
|
handler: python
|
|
@@ -254,6 +264,17 @@
|
|
|
254
264
|
group_by_category: true
|
|
255
265
|
filters: ["!^__"]
|
|
256
266
|
|
|
267
|
+
## Pocket Detection
|
|
268
|
+
::: rowan.workflows.pocket_detection
|
|
269
|
+
handler: python
|
|
270
|
+
options:
|
|
271
|
+
show_source: false
|
|
272
|
+
show_root_heading: false
|
|
273
|
+
show_root_toc_entry: false
|
|
274
|
+
members_order: source
|
|
275
|
+
group_by_category: true
|
|
276
|
+
filters: ["!^__"]
|
|
277
|
+
|
|
257
278
|
## Pose Analysis MD
|
|
258
279
|
::: rowan.workflows.pose_analysis_md
|
|
259
280
|
handler: python
|
|
@@ -397,6 +418,17 @@
|
|
|
397
418
|
group_by_category: true
|
|
398
419
|
filters: ["!^__"]
|
|
399
420
|
|
|
421
|
+
## API Keys
|
|
422
|
+
::: rowan.api_keys
|
|
423
|
+
handler: python
|
|
424
|
+
options:
|
|
425
|
+
show_source: false
|
|
426
|
+
show_root_heading: false
|
|
427
|
+
show_root_toc_entry: false
|
|
428
|
+
members_order: source
|
|
429
|
+
group_by_category: true
|
|
430
|
+
filters: ["!^__"]
|
|
431
|
+
|
|
400
432
|
## Folder Class and Functions
|
|
401
433
|
::: rowan.folder
|
|
402
434
|
handler: python
|
|
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
14
14
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
15
15
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
16
16
|
],
|
|
17
|
-
output_formats=[
|
|
17
|
+
output_formats=[rowan.MSAFormat.BOLTZ],
|
|
18
18
|
name="Boltz Paired MSA Example",
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
@@ -23,7 +23,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
|
|
|
23
23
|
|
|
24
24
|
msa_result = msa_workflow.result()
|
|
25
25
|
|
|
26
|
-
msa_result.download_files(
|
|
26
|
+
msa_result.download_files(rowan.MSAFormat.BOLTZ, path=msa_directory)
|
|
27
27
|
|
|
28
28
|
tar_path = next(msa_directory.glob("*.tar.gz"))
|
|
29
29
|
with tarfile.open(tar_path, "r") as tar_ref:
|
|
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
13
13
|
initial_protein_sequences=[
|
|
14
14
|
"HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
|
|
15
15
|
],
|
|
16
|
-
output_formats=[
|
|
16
|
+
output_formats=[rowan.MSAFormat.BOLTZ],
|
|
17
17
|
name="Boltz MSA Example",
|
|
18
18
|
folder=folder,
|
|
19
19
|
)
|
|
@@ -22,7 +22,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
|
|
|
22
22
|
|
|
23
23
|
msa_result = msa_workflow.result()
|
|
24
24
|
|
|
25
|
-
msa_result.download_files(
|
|
25
|
+
msa_result.download_files(rowan.MSAFormat.BOLTZ, path=msa_directory)
|
|
26
26
|
|
|
27
27
|
tar_path = next(msa_directory.glob("*.tar.gz"))
|
|
28
28
|
with tarfile.open(tar_path, "r") as tar_ref:
|
|
@@ -25,7 +25,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
25
25
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
26
26
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
27
27
|
],
|
|
28
|
-
output_formats=[
|
|
28
|
+
output_formats=[rowan.MSAFormat.CHAI],
|
|
29
29
|
name="CHAI Paired MSA Example",
|
|
30
30
|
folder=folder,
|
|
31
31
|
)
|
|
@@ -34,7 +34,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
|
|
|
34
34
|
|
|
35
35
|
msa_result = msa_workflow.result()
|
|
36
36
|
|
|
37
|
-
msa_result.download_files(
|
|
37
|
+
msa_result.download_files(rowan.MSAFormat.CHAI, path=msa_directory)
|
|
38
38
|
|
|
39
39
|
tar_path = next(msa_directory.glob("*.tar.gz"))
|
|
40
40
|
with tarfile.open(tar_path, "r") as tar_ref:
|
|
@@ -22,7 +22,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
22
22
|
initial_protein_sequences=[
|
|
23
23
|
"HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
|
|
24
24
|
],
|
|
25
|
-
output_formats=[
|
|
25
|
+
output_formats=[rowan.MSAFormat.CHAI],
|
|
26
26
|
name="CHAI MSA Example",
|
|
27
27
|
folder=folder,
|
|
28
28
|
)
|
|
@@ -31,7 +31,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
|
|
|
31
31
|
|
|
32
32
|
msa_result = msa_workflow.result()
|
|
33
33
|
|
|
34
|
-
msa_result.download_files(
|
|
34
|
+
msa_result.download_files(rowan.MSAFormat.CHAI, path=msa_directory)
|
|
35
35
|
|
|
36
36
|
tar_path = next(msa_directory.glob("*.tar.gz"))
|
|
37
37
|
with tarfile.open(tar_path, "r") as tar_ref:
|
|
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
14
14
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
15
15
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
16
16
|
],
|
|
17
|
-
output_formats=[
|
|
17
|
+
output_formats=[rowan.MSAFormat.COLABFOLD],
|
|
18
18
|
name="Colabfold Paired MSA Example",
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
@@ -23,7 +23,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
|
|
|
23
23
|
|
|
24
24
|
msa_result = msa_workflow.result()
|
|
25
25
|
|
|
26
|
-
msa_result.download_files(
|
|
26
|
+
msa_result.download_files(rowan.MSAFormat.COLABFOLD, path=msa_directory)
|
|
27
27
|
|
|
28
28
|
tar_path = next(msa_directory.glob("*.tar.gz"))
|
|
29
29
|
with tarfile.open(tar_path, "r") as tar_ref:
|
|
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
13
13
|
initial_protein_sequences=[
|
|
14
14
|
"HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
|
|
15
15
|
],
|
|
16
|
-
output_formats=[
|
|
16
|
+
output_formats=[rowan.MSAFormat.COLABFOLD],
|
|
17
17
|
name="Colabfold MSA Example",
|
|
18
18
|
folder=folder,
|
|
19
19
|
)
|
|
@@ -22,7 +22,7 @@ print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.
|
|
|
22
22
|
|
|
23
23
|
msa_result = msa_workflow.result()
|
|
24
24
|
|
|
25
|
-
msa_result.download_files(
|
|
25
|
+
msa_result.download_files(rowan.MSAFormat.COLABFOLD, path=msa_directory)
|
|
26
26
|
|
|
27
27
|
tar_path = next(msa_directory.glob("*.tar.gz"))
|
|
28
28
|
with tarfile.open(tar_path, "r") as tar_ref:
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import rowan
|
|
2
|
+
|
|
3
|
+
# Set your API key or use the ROWAN_API_KEY environment variable
|
|
4
|
+
# rowan.api_key = "rowan-sk..."
|
|
5
|
+
folder = rowan.get_folder("examples")
|
|
6
|
+
|
|
7
|
+
# Dasatinib — redocked into its own ABL1 co-crystal structure (PDB: 2GQG)
|
|
8
|
+
dasatinib = rowan.Molecule.from_smiles("Cc1nc(Nc2ncc(C(=O)Nc3c(C)cccc3Cl)s2)cc(N2CCN(CCO)CC2)n1")
|
|
9
|
+
|
|
10
|
+
protein = rowan.create_protein_from_pdb_id("2GQG")
|
|
11
|
+
if len(protein.chains) > 1:
|
|
12
|
+
protein = protein.select_chains([protein.chains[0]])
|
|
13
|
+
protein.prepare()
|
|
14
|
+
|
|
15
|
+
# Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
|
|
16
|
+
# For a co-crystal structure, extract these from the bound ligand's position.
|
|
17
|
+
# Use rowan.submit_pocket_detection_workflow() when the binding site is unknown.
|
|
18
|
+
center = [44.59, 79.75, 39.59]
|
|
19
|
+
size = [24.15, 21.33, 19.88]
|
|
20
|
+
workflow = rowan.submit_docking_workflow(
|
|
21
|
+
protein,
|
|
22
|
+
pocket=[center, size],
|
|
23
|
+
initial_molecule=dasatinib,
|
|
24
|
+
name="dasatinib docking (2GQG redock)",
|
|
25
|
+
folder=folder,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
print(f"View workflow privately at: https://labs.rowansci.com/docking/{workflow.uuid}")
|
|
29
|
+
|
|
30
|
+
result = workflow.result()
|
|
31
|
+
print(result)
|
|
32
|
+
|
|
33
|
+
for i, score in enumerate(result.scores):
|
|
34
|
+
print(f" Pose {i}: score={score.score:.3f} posebusters_valid={score.posebusters_valid}")
|
|
35
|
+
|
|
36
|
+
# Download the top-scoring protein–ligand complex as a PDB
|
|
37
|
+
complex_protein = result.get_complex(0)
|
|
38
|
+
complex_protein.download_pdb_file("dasatinib_2GQG_complex.pdb")
|
|
39
|
+
print("Saved dasatinib_2GQG_complex.pdb")
|
|
@@ -19,7 +19,7 @@ workflows = []
|
|
|
19
19
|
results = {}
|
|
20
20
|
|
|
21
21
|
protein = rowan.create_protein_from_pdb_id(
|
|
22
|
-
"
|
|
22
|
+
"1HCK", name="CDK2", project_uuid=rowan.default_project().uuid
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
protein.prepare()
|
|
@@ -43,11 +43,14 @@ lowest_conformer_energy = 0
|
|
|
43
43
|
for workflow, result in workflow_results:
|
|
44
44
|
for conformer_uuid in result.conformers:
|
|
45
45
|
energy = rowan.retrieve_calculation_molecules(conformer_uuid)[0]["energy"]
|
|
46
|
-
|
|
46
|
+
if energy is not None:
|
|
47
|
+
lowest_conformer_energy = min(lowest_conformer_energy, energy)
|
|
47
48
|
|
|
48
49
|
sorted_scores = sorted(result.scores, key=lambda s: s.score)
|
|
49
50
|
for score in sorted_scores:
|
|
50
51
|
pose_energy = rowan.retrieve_calculation_molecules(score.pose)[0]["energy"]
|
|
52
|
+
if pose_energy is None:
|
|
53
|
+
continue
|
|
51
54
|
strain = (pose_energy - lowest_conformer_energy) * HARTREE_TO_KCALMOL
|
|
52
55
|
if score.posebusters_valid and strain < 4:
|
|
53
56
|
results[workflow.name] = score
|
|
@@ -5,7 +5,7 @@ import rowan
|
|
|
5
5
|
folder = rowan.get_folder("examples")
|
|
6
6
|
|
|
7
7
|
protein = rowan.create_protein_from_pdb_id(
|
|
8
|
-
"
|
|
8
|
+
"1OTP", name="thymidine phosphorylase", project_uuid=rowan.default_project().uuid
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
protein.prepare()
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Resubmit a completed workflow with a perturbed structure.
|
|
3
|
+
|
|
4
|
+
Two strategies: random noise to break symmetry, or displacement along a
|
|
5
|
+
vibrational mode to follow a reaction coordinate or escape a stuck geometry.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import rowan
|
|
9
|
+
|
|
10
|
+
# Set your API key or use the ROWAN_API_KEY environment variable
|
|
11
|
+
# rowan.api_key = "rowan-sk..."
|
|
12
|
+
folder = rowan.get_folder("examples")
|
|
13
|
+
|
|
14
|
+
# --- Option 1: random noise ---
|
|
15
|
+
wf = rowan.retrieve_workflow("your-workflow-uuid")
|
|
16
|
+
mol = wf.result().molecule
|
|
17
|
+
|
|
18
|
+
perturbed_mol = mol.perturb()
|
|
19
|
+
resubmit = rowan.submit_multistage_optimization_workflow(
|
|
20
|
+
initial_molecule=perturbed_mol,
|
|
21
|
+
name="cyclobutane opt - perturbed resubmit",
|
|
22
|
+
folder=folder,
|
|
23
|
+
)
|
|
24
|
+
print(f"https://labs.rowansci.com/multistage-opt/{resubmit.uuid}")
|
|
25
|
+
|
|
26
|
+
# --- Option 2: displace along a vibrational mode ---
|
|
27
|
+
# Requires a prior frequency calculation. Imaginary modes have negative frequency.
|
|
28
|
+
ts_wf = rowan.retrieve_workflow("your-ts-freq-workflow-uuid")
|
|
29
|
+
ts_mol = ts_wf.result().molecule
|
|
30
|
+
|
|
31
|
+
imaginary_mode = next(m for m in ts_mol.vibrational_modes if m.frequency < 0)
|
|
32
|
+
|
|
33
|
+
displaced_mol = ts_mol.displace_along_mode(mode=imaginary_mode, displacement=0.3)
|
|
34
|
+
resubmit = rowan.submit_multistage_optimization_workflow(
|
|
35
|
+
initial_molecule=displaced_mol,
|
|
36
|
+
name="TS resubmit - displaced along imaginary mode",
|
|
37
|
+
folder=folder,
|
|
38
|
+
)
|
|
39
|
+
print(f"https://labs.rowansci.com/multistage-opt/{resubmit.uuid}")
|
|
@@ -13,13 +13,13 @@ folder = rowan.get_folder("examples")
|
|
|
13
13
|
workflow = rowan.submit_scan_workflow(
|
|
14
14
|
initial_molecule=rowan.Molecule.from_smiles("O"),
|
|
15
15
|
name="Water Angle scan",
|
|
16
|
-
scan_settings=
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
scan_settings=rowan.ScanSettings(
|
|
17
|
+
type="angle",
|
|
18
|
+
atoms=[2, 1, 3], # 1-indexed
|
|
19
|
+
start=100,
|
|
20
|
+
stop=110,
|
|
21
|
+
num=5,
|
|
22
|
+
),
|
|
23
23
|
calculation_method="GFN2-xTB",
|
|
24
24
|
calculation_engine="xtb",
|
|
25
25
|
folder=folder,
|
|
@@ -153,7 +153,6 @@ environments:
|
|
|
153
153
|
- pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
|
|
154
154
|
- pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl
|
|
155
155
|
- pypi: https://files.pythonhosted.org/packages/6a/aa/12f68944c88c854c442f7d834dad3a06c5dfa083d004b6a4d35d8d9319e5/stjames-0.0.210-py3-none-any.whl
|
|
156
|
-
- pypi: https://files.pythonhosted.org/packages/6d/ff/d353d6b7bbd73cc0ec37f4463d7540e45e894338abdd9964eee0de332708/ruff-0.15.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
|
|
157
156
|
- pypi: https://files.pythonhosted.org/packages/6e/94/be70f8ee9c45f2f62b39a1f0e9303bc20e138a8f3b8e50ffd89498e177e1/mkdocstrings-1.0.4-py3-none-any.whl
|
|
158
157
|
- pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl
|
|
159
158
|
- pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl
|
|
@@ -167,6 +166,7 @@ environments:
|
|
|
167
166
|
- pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
|
|
168
167
|
- 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
|
|
169
168
|
- 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
|
|
169
|
+
- pypi: https://files.pythonhosted.org/packages/89/3d/0b1f30f84bee9ae6ae8d349c2ba8b6f4b040966744efdd3acc804ae7c024/ruff-0.15.19-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
|
|
170
170
|
- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
|
|
171
171
|
- pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
|
|
172
172
|
- pypi: https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl
|
|
@@ -188,7 +188,6 @@ environments:
|
|
|
188
188
|
- pypi: https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl
|
|
189
189
|
- pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl
|
|
190
190
|
- pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
|
|
191
|
-
- pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl
|
|
192
191
|
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
|
|
193
192
|
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
|
|
194
193
|
- pypi: https://files.pythonhosted.org/packages/d1/fc/10ab7e80650a9c9e8f4f1105f8c8e73567f88ed0c06ada589ab81d38687c/mkdocstrings_python-2.0.5-py3-none-any.whl
|
|
@@ -206,6 +205,7 @@ environments:
|
|
|
206
205
|
- pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl
|
|
207
206
|
- pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl
|
|
208
207
|
- pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
|
|
208
|
+
- pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl
|
|
209
209
|
- pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl
|
|
210
210
|
osx-arm64:
|
|
211
211
|
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda
|
|
@@ -250,7 +250,6 @@ environments:
|
|
|
250
250
|
- pypi: https://files.pythonhosted.org/packages/3e/5c/fb93d3092640a24dfb7bd7727a24016d7c01774ca013e60efd3f683c8002/backrefs-7.0-py314-none-any.whl
|
|
251
251
|
- pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl
|
|
252
252
|
- pypi: https://files.pythonhosted.org/packages/45/da/825325da9989d10a309378754464898c07199a2881fd04171613948aa82f/rdkit-2026.3.3-cp314-cp314-macosx_11_0_arm64.whl
|
|
253
|
-
- pypi: https://files.pythonhosted.org/packages/51/93/4769464c25cf7ab2acb3c7dda9cad3d867eb41c59565b3e2a9d17249c90c/ruff-0.15.18-py3-none-macosx_11_0_arm64.whl
|
|
254
253
|
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
|
|
255
254
|
- pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
|
|
256
255
|
- pypi: https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl
|
|
@@ -291,7 +290,6 @@ environments:
|
|
|
291
290
|
- pypi: https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl
|
|
292
291
|
- pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl
|
|
293
292
|
- pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
|
|
294
|
-
- pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl
|
|
295
293
|
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
|
|
296
294
|
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
|
|
297
295
|
- pypi: https://files.pythonhosted.org/packages/d1/fc/10ab7e80650a9c9e8f4f1105f8c8e73567f88ed0c06ada589ab81d38687c/mkdocstrings_python-2.0.5-py3-none-any.whl
|
|
@@ -310,7 +308,9 @@ environments:
|
|
|
310
308
|
- pypi: https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl
|
|
311
309
|
- pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl
|
|
312
310
|
- pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
|
|
311
|
+
- pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl
|
|
313
312
|
- pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl
|
|
313
|
+
- pypi: https://files.pythonhosted.org/packages/fe/93/78d462e7d39968e58094dc57be7d09ffb14ce37da5b68ed70338a35a1f21/ruff-0.15.19-py3-none-macosx_11_0_arm64.whl
|
|
314
314
|
packages:
|
|
315
315
|
- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda
|
|
316
316
|
build_number: 20
|
|
@@ -1170,11 +1170,6 @@ packages:
|
|
|
1170
1170
|
- pip ; extra == 'install-types'
|
|
1171
1171
|
- orjson ; extra == 'faster-cache'
|
|
1172
1172
|
requires_python: '>=3.10'
|
|
1173
|
-
- pypi: https://files.pythonhosted.org/packages/51/93/4769464c25cf7ab2acb3c7dda9cad3d867eb41c59565b3e2a9d17249c90c/ruff-0.15.18-py3-none-macosx_11_0_arm64.whl
|
|
1174
|
-
name: ruff
|
|
1175
|
-
version: 0.15.18
|
|
1176
|
-
sha256: 08d4c86a68f2c3ec2c9d56380a71fb4a4f65373055cbb8caabd645e9102f38d4
|
|
1177
|
-
requires_python: '>=3.7'
|
|
1178
1173
|
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
|
|
1179
1174
|
name: pluggy
|
|
1180
1175
|
version: 1.6.0
|
|
@@ -1215,11 +1210,6 @@ packages:
|
|
|
1215
1210
|
- more-itertools
|
|
1216
1211
|
- rdkit ; extra == 'rdkit'
|
|
1217
1212
|
requires_python: '>=3.11'
|
|
1218
|
-
- pypi: https://files.pythonhosted.org/packages/6d/ff/d353d6b7bbd73cc0ec37f4463d7540e45e894338abdd9964eee0de332708/ruff-0.15.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
|
|
1219
|
-
name: ruff
|
|
1220
|
-
version: 0.15.18
|
|
1221
|
-
sha256: 5f0480ce690cbb6c4db6e5d08f19fce98e10ba131a8b60c1bcdac42771e3ae2d
|
|
1222
|
-
requires_python: '>=3.7'
|
|
1223
1213
|
- pypi: https://files.pythonhosted.org/packages/6e/94/be70f8ee9c45f2f62b39a1f0e9303bc20e138a8f3b8e50ffd89498e177e1/mkdocstrings-1.0.4-py3-none-any.whl
|
|
1224
1214
|
name: mkdocstrings
|
|
1225
1215
|
version: 1.0.4
|
|
@@ -1384,6 +1374,11 @@ packages:
|
|
|
1384
1374
|
requires_dist:
|
|
1385
1375
|
- typing-extensions>=4.14.1
|
|
1386
1376
|
requires_python: '>=3.9'
|
|
1377
|
+
- pypi: https://files.pythonhosted.org/packages/89/3d/0b1f30f84bee9ae6ae8d349c2ba8b6f4b040966744efdd3acc804ae7c024/ruff-0.15.19-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
|
|
1378
|
+
name: ruff
|
|
1379
|
+
version: 0.15.19
|
|
1380
|
+
sha256: 6a498f82e0f4d8904c4e0aea5139cdfac1f39d19a3c51d491292f63a36e83b2e
|
|
1381
|
+
requires_python: '>=3.7'
|
|
1387
1382
|
- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
|
|
1388
1383
|
name: pure-eval
|
|
1389
1384
|
version: 0.2.3
|
|
@@ -1770,13 +1765,6 @@ packages:
|
|
|
1770
1765
|
- littleutils ; extra == 'tests'
|
|
1771
1766
|
- rich ; python_full_version >= '3.11' and extra == 'tests'
|
|
1772
1767
|
requires_python: '>=3.8'
|
|
1773
|
-
- pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl
|
|
1774
|
-
name: click
|
|
1775
|
-
version: 8.4.1
|
|
1776
|
-
sha256: 482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2
|
|
1777
|
-
requires_dist:
|
|
1778
|
-
- colorama ; sys_platform == 'win32'
|
|
1779
|
-
requires_python: '>=3.10'
|
|
1780
1768
|
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
|
|
1781
1769
|
name: iniconfig
|
|
1782
1770
|
version: 2.3.0
|
|
@@ -1919,6 +1907,13 @@ packages:
|
|
|
1919
1907
|
- markdown ; extra == 'dev'
|
|
1920
1908
|
- flake8 ; extra == 'dev'
|
|
1921
1909
|
- wheel ; extra == 'dev'
|
|
1910
|
+
- pypi: https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl
|
|
1911
|
+
name: click
|
|
1912
|
+
version: 8.4.2
|
|
1913
|
+
sha256: e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76
|
|
1914
|
+
requires_dist:
|
|
1915
|
+
- colorama ; sys_platform == 'win32'
|
|
1916
|
+
requires_python: '>=3.10'
|
|
1922
1917
|
- pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl
|
|
1923
1918
|
name: pydantic
|
|
1924
1919
|
version: 2.13.4
|
|
@@ -1931,3 +1926,8 @@ packages:
|
|
|
1931
1926
|
- email-validator>=2.0.0 ; extra == 'email'
|
|
1932
1927
|
- tzdata ; python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'
|
|
1933
1928
|
requires_python: '>=3.9'
|
|
1929
|
+
- pypi: https://files.pythonhosted.org/packages/fe/93/78d462e7d39968e58094dc57be7d09ffb14ce37da5b68ed70338a35a1f21/ruff-0.15.19-py3-none-macosx_11_0_arm64.whl
|
|
1930
|
+
name: ruff
|
|
1931
|
+
version: 0.15.19
|
|
1932
|
+
sha256: 5a2c86ba6870dd415a9d9eb8be94d7924ebec6a26ffc7958ec7ca29d4bff967d
|
|
1933
|
+
requires_python: '>=3.7'
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
from . import constants
|
|
3
3
|
from stjames import (
|
|
4
4
|
Atom,
|
|
5
|
+
BindingPoseContact,
|
|
6
|
+
ConformerGenSettings,
|
|
5
7
|
Constraint,
|
|
6
8
|
ConstraintType,
|
|
7
9
|
ConformerClusteringSettings,
|
|
@@ -14,15 +16,19 @@ from stjames import (
|
|
|
14
16
|
KMeansClusteringSettings,
|
|
15
17
|
Method,
|
|
16
18
|
Mode,
|
|
19
|
+
MSAFormat,
|
|
17
20
|
MultiStageOptSettings,
|
|
18
21
|
OpenConfSettings,
|
|
19
22
|
OptimizationSettings,
|
|
20
23
|
PBCDFTSettings,
|
|
21
24
|
PeriodicCell,
|
|
25
|
+
ProteinSequence,
|
|
26
|
+
ScanSettings,
|
|
22
27
|
Settings,
|
|
23
28
|
Solvent,
|
|
24
29
|
SolventSettings,
|
|
25
30
|
Task,
|
|
31
|
+
VibrationalMode,
|
|
26
32
|
)
|
|
27
33
|
from stjames.workflows.relative_binding_free_energy_perturbation import RBFEGraph, RBFEGraphEdge
|
|
28
34
|
from stjames.excited_state_settings import TDDFTSettings
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Self
|
|
4
4
|
|
|
5
|
+
import httpx
|
|
5
6
|
import stjames
|
|
6
7
|
from pydantic import BaseModel, ConfigDict, Field
|
|
7
8
|
|
|
@@ -62,10 +63,13 @@ class Calculation(BaseModel):
|
|
|
62
63
|
:param in_place: If True, update this instance in-place. If False, return new instance.
|
|
63
64
|
:returns: Updated Calculation object.
|
|
64
65
|
"""
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
try:
|
|
67
|
+
with api_client() as client:
|
|
68
|
+
response = client.get(f"/calculation/{self.uuid}/stjames")
|
|
69
|
+
response.raise_for_status()
|
|
70
|
+
data = response.json()
|
|
71
|
+
except httpx.TimeoutException as e:
|
|
72
|
+
raise TimeoutError(f"Timed out fetching calculation {self.uuid}.") from e
|
|
69
73
|
|
|
70
74
|
molecules = _parse_molecules(data.get("molecules", []))
|
|
71
75
|
|
|
@@ -94,11 +98,15 @@ def retrieve_calculation(uuid: str) -> Calculation:
|
|
|
94
98
|
:param uuid: UUID of the calculation to retrieve.
|
|
95
99
|
:returns: Calculation object with the fetched data.
|
|
96
100
|
:raises requests.HTTPError: If the API request fails.
|
|
101
|
+
:raises TimeoutError: If the response times out.
|
|
97
102
|
"""
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
103
|
+
try:
|
|
104
|
+
with api_client() as client:
|
|
105
|
+
response = client.get(f"/calculation/{uuid}/stjames")
|
|
106
|
+
response.raise_for_status()
|
|
107
|
+
data = response.json()
|
|
108
|
+
except httpx.TimeoutException as e:
|
|
109
|
+
raise TimeoutError(f"Timed out fetching calculation {uuid}.") from e
|
|
102
110
|
|
|
103
111
|
molecules = _parse_molecules(data.get("molecules", []))
|
|
104
112
|
|