rowan-python 3.1.3__tar.gz → 3.1.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rowan_python-3.1.3 → rowan_python-3.1.5}/PKG-INFO +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/docs/index.md +43 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/batch_docking.py +1 -1
- rowan_python-3.1.5/examples/binding_affinity.py +24 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/boltz_paired_msa.py +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/boltz_single_msa.py +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/chai_paired_msa.py +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/chai_single_msa.py +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/colabfold_paired_msa.py +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/colabfold_single_msa.py +2 -2
- rowan_python-3.1.5/examples/docking.py +39 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/docking_screen.py +5 -2
- rowan_python-3.1.5/examples/periodic_dft.py +38 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pocket_detection.py +1 -1
- rowan_python-3.1.5/examples/resubmit_with_perturbations.py +39 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/scan.py +7 -7
- {rowan_python-3.1.3 → rowan_python-3.1.5}/pixi.lock +137 -153
- {rowan_python-3.1.3 → rowan_python-3.1.5}/pyproject.toml +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/__init__.py +10 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/calculation.py +16 -8
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/folder.py +120 -1
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/molecule.py +117 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/protein.py +92 -13
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/utils.py +21 -1
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/__init__.py +5 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/base.py +22 -3
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/basic_calculation.py +49 -1
- rowan_python-3.1.5/rowan/workflows/binding_affinity.py +140 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/docking.py +10 -7
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/fukui.py +2 -19
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/msa.py +15 -22
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/pka.py +2 -6
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/pose_analysis_md.py +5 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/protein_md.py +22 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/rbfe_graph.py +12 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/SKILL.md +5 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +25 -1
- rowan_python-3.1.5/skills/computational-chemistry-and-biology/reference/binding_affinity.md +61 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/conformer_search.md +1 -1
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/docking.md +14 -9
- rowan_python-3.1.5/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +59 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/msa.md +3 -3
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +7 -1
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_md.md +1 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_prep.md +2 -2
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +9 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/scan.md +11 -11
- rowan_python-3.1.3/examples/periodic_dft.py +0 -58
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.envrc +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/build-and-deploy-docs.yml +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/publish-skill.yml +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/python-publish.yml +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.github/workflows/test.yml +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.gitignore +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/.pre-commit-config.yaml +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/AGENTS.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/CLAUDE.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/GEMINI.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/LICENSE +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/README.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/docs/images/deciduous-tree-favicon.png +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/docs/stylesheets/colors.css +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/PROTAC_solubility.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/admet.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/analogue_docking.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/aqueous_solubility.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation_from_json.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation_with_constraint.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/basic_calculation_with_solvent.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/bde.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/cofolding_screen.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/conformer_dependent_redox.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/conformers.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/conformers_screen.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/1iep_receptorH.pdb +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/Al_FCC.xyz +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/citalopram_1iep.xyz +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/ibuprofen_conformers.sdf +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/tyk2_ligands.sdf +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/tyk2_structure.pdb +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/data/workflow_example.json +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/dcd_download.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/descriptors.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/electronic_properties.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/estimate_workflow.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/fukui_index.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/hydrogen_bond_basicity.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/ion_mobility.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/irc.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/macropka.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/membrane_permeability.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/multistage_optimization.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/nmr.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/optimization.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pdb_download.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/phenol_pka.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pka.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/pose_analysis_md.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/project_scoped_api_key.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_binder_design.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_cofolding.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_cofolding_with_constraints.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_cofolding_with_templates.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/protein_md.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/rbfe_graph.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/rbfe_resubmit.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/redox_potential.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/retrieve_workflow.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/spin_states.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/strain.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/tautomer.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/template.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/examples/webhook.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/mkdocs.yml +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/api_keys.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/config.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/constants.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/project.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/py.typed +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/types.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/user.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/admet.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/analogue_docking.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/batch_docking.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/bde.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/conformer_search.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/constants.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/descriptors.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/electronic_properties.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/ion_mobility.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/irc.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/macropka.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/membrane_permeability.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/multistage_optimization.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/nmr.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/pocket_detection.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/protein_binder_design.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/protein_cofolding.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/redox_potential.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/scan.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/solubility.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/spin_states.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/strain.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/rowan/workflows/tautomer_search.py +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
- {rowan_python-3.1.3 → rowan_python-3.1.5}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rowan-python
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.5
|
|
4
4
|
Summary: Rowan Python Library
|
|
5
5
|
Project-URL: Homepage, https://github.com/rowansci/rowan-client
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/rowansci/rowan-client/issues
|
|
@@ -11,7 +11,7 @@ Requires-Dist: httpx
|
|
|
11
11
|
Requires-Dist: nest-asyncio
|
|
12
12
|
Requires-Dist: rdkit
|
|
13
13
|
Requires-Dist: setuptools
|
|
14
|
-
Requires-Dist: stjames>=0.0.
|
|
14
|
+
Requires-Dist: stjames>=0.0.217
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
|
|
17
17
|
# Rowan Python Library
|
|
@@ -23,6 +23,16 @@
|
|
|
23
23
|
- batch_submit_workflow
|
|
24
24
|
- batch_poll_status
|
|
25
25
|
|
|
26
|
+
::: rowan.calculation
|
|
27
|
+
handler: python
|
|
28
|
+
options:
|
|
29
|
+
show_source: false
|
|
30
|
+
show_root_heading: false
|
|
31
|
+
show_root_toc_entry: false
|
|
32
|
+
members_order: source
|
|
33
|
+
group_by_category: true
|
|
34
|
+
filters: ["!^_"]
|
|
35
|
+
|
|
26
36
|
## ADMET
|
|
27
37
|
::: rowan.workflows.admet
|
|
28
38
|
handler: python
|
|
@@ -45,6 +55,17 @@
|
|
|
45
55
|
group_by_category: true
|
|
46
56
|
filters: ["!^__"]
|
|
47
57
|
|
|
58
|
+
## Binding Affinity
|
|
59
|
+
::: rowan.workflows.binding_affinity
|
|
60
|
+
handler: python
|
|
61
|
+
options:
|
|
62
|
+
show_source: false
|
|
63
|
+
show_root_heading: false
|
|
64
|
+
show_root_toc_entry: false
|
|
65
|
+
members_order: source
|
|
66
|
+
group_by_category: true
|
|
67
|
+
filters: ["!^__"]
|
|
68
|
+
|
|
48
69
|
## Basic Calculation
|
|
49
70
|
::: rowan.workflows.basic_calculation
|
|
50
71
|
handler: python
|
|
@@ -254,6 +275,17 @@
|
|
|
254
275
|
group_by_category: true
|
|
255
276
|
filters: ["!^__"]
|
|
256
277
|
|
|
278
|
+
## Pocket Detection
|
|
279
|
+
::: rowan.workflows.pocket_detection
|
|
280
|
+
handler: python
|
|
281
|
+
options:
|
|
282
|
+
show_source: false
|
|
283
|
+
show_root_heading: false
|
|
284
|
+
show_root_toc_entry: false
|
|
285
|
+
members_order: source
|
|
286
|
+
group_by_category: true
|
|
287
|
+
filters: ["!^__"]
|
|
288
|
+
|
|
257
289
|
## Pose Analysis MD
|
|
258
290
|
::: rowan.workflows.pose_analysis_md
|
|
259
291
|
handler: python
|
|
@@ -397,6 +429,17 @@
|
|
|
397
429
|
group_by_category: true
|
|
398
430
|
filters: ["!^__"]
|
|
399
431
|
|
|
432
|
+
## API Keys
|
|
433
|
+
::: rowan.api_keys
|
|
434
|
+
handler: python
|
|
435
|
+
options:
|
|
436
|
+
show_source: false
|
|
437
|
+
show_root_heading: false
|
|
438
|
+
show_root_toc_entry: false
|
|
439
|
+
members_order: source
|
|
440
|
+
group_by_category: true
|
|
441
|
+
filters: ["!^__"]
|
|
442
|
+
|
|
400
443
|
## Folder Class and Functions
|
|
401
444
|
::: rowan.folder
|
|
402
445
|
handler: python
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
import rowan
|
|
4
|
+
|
|
5
|
+
# Set your API key or use the ROWAN_API_KEY environment variable
|
|
6
|
+
# rowan.api_key = "rowan-sk..."
|
|
7
|
+
folder = rowan.get_folder("examples")
|
|
8
|
+
data_dir = Path(__file__).parent / "data"
|
|
9
|
+
|
|
10
|
+
protein = rowan.upload_protein("TYK2", data_dir / "tyk2_structure.pdb")
|
|
11
|
+
all_ligands = rowan.load_named_ligands(data_dir / "tyk2_ligands.sdf")
|
|
12
|
+
ligands = dict(list(all_ligands.items())[:3])
|
|
13
|
+
|
|
14
|
+
workflow = rowan.submit_binding_affinity_workflow(
|
|
15
|
+
protein=protein,
|
|
16
|
+
ligand_structures=list(ligands.values()),
|
|
17
|
+
name="Binding Affinity — TYK2 ligands",
|
|
18
|
+
folder=folder,
|
|
19
|
+
)
|
|
20
|
+
print(f"View at: https://labs.rowansci.com/binding-affinity/{workflow.uuid}")
|
|
21
|
+
|
|
22
|
+
result = workflow.result()
|
|
23
|
+
for name, score in zip(ligands.keys(), result.scores, strict=False):
|
|
24
|
+
print(f"{name}: {score.binding_affinity:.2f} kcal/mol (strain: {score.strain})")
|
|
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
14
14
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
15
15
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
16
16
|
],
|
|
17
|
-
output_formats=[
|
|
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
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Band structure of bulk silicon using periodic DFT (Quantum ESPRESSO)."""
|
|
2
|
+
|
|
3
|
+
import rowan
|
|
4
|
+
|
|
5
|
+
# rowan.api_key = "rowan-sk..."
|
|
6
|
+
folder = rowan.get_folder("examples")
|
|
7
|
+
|
|
8
|
+
a = 5.431 # Å
|
|
9
|
+
si = rowan.Molecule.from_atoms(
|
|
10
|
+
atoms=[
|
|
11
|
+
rowan.Atom(atomic_number=14, position=(0.0, 0.0, 0.0)),
|
|
12
|
+
rowan.Atom(atomic_number=14, position=(a / 4, a / 4, a / 4)),
|
|
13
|
+
],
|
|
14
|
+
charge=0,
|
|
15
|
+
multiplicity=1,
|
|
16
|
+
cell=rowan.PeriodicCell(
|
|
17
|
+
lattice_vectors=((0.0, a / 2, a / 2), (a / 2, 0.0, a / 2), (a / 2, a / 2, 0.0))
|
|
18
|
+
),
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
workflow = rowan.submit_basic_calculation_workflow(
|
|
22
|
+
initial_molecule=si,
|
|
23
|
+
tasks=["band_structure"],
|
|
24
|
+
method="PBE",
|
|
25
|
+
basis_set="SSSP_PBE_efficiency",
|
|
26
|
+
pbc_dft_settings=rowan.PBCDFTSettings(kpoints=(2, 2, 2)),
|
|
27
|
+
name="Si band structure",
|
|
28
|
+
folder=folder,
|
|
29
|
+
)
|
|
30
|
+
print(f"https://labs.rowansci.com/calculation/{workflow.uuid}")
|
|
31
|
+
result = workflow.result()
|
|
32
|
+
|
|
33
|
+
print(f"Symmetry: space group {result.symmetry}")
|
|
34
|
+
print(f"XRD peaks: {len(result.xrd_peaks)} reflections")
|
|
35
|
+
print(f"Band gap: {result.band_gap:.4f} Ha") # ~0.020 Ha (PBE underestimates Si's 1.12 eV gap)
|
|
36
|
+
print(f"VBM: {result.band_structure.valence_band_maximum:.4f} Ha")
|
|
37
|
+
print(f"CBM: {result.band_structure.conduction_band_minimum:.4f} Ha")
|
|
38
|
+
print(f"DOS: {len(result.density_of_states)} points")
|
|
@@ -5,7 +5,7 @@ import rowan
|
|
|
5
5
|
folder = rowan.get_folder("examples")
|
|
6
6
|
|
|
7
7
|
protein = rowan.create_protein_from_pdb_id(
|
|
8
|
-
"
|
|
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,
|