rowan-python 3.0.6__tar.gz → 3.0.8__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.0.6 → rowan_python-3.0.8}/PKG-INFO +2 -2
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/PROTAC_solubility.py +1 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/aqueous_solubility.py +1 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/boltz_paired_msa.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/boltz_single_msa.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/chai_paired_msa.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/chai_single_msa.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/cofolding_screen.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/colabfold_paired_msa.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/colabfold_single_msa.py +2 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/conformer_dependent_redox.py +1 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/conformers.py +1 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/docking_screen.py +1 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/electronic_properties.py +3 -3
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/interaction_energy_decomposition.py +1 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/membrane_permeability.py +2 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/periodic_dft.py +1 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/phenol_pka.py +1 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/pka.py +1 -0
- rowan_python-3.0.8/examples/pocket_detection.py +28 -0
- rowan_python-3.0.8/examples/project_scoped_api_key.py +31 -0
- rowan_python-3.0.8/examples/protein_cofolding_with_constraints.py +79 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/solvent_dependent_conformers.py +1 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/pixi.lock +218 -127
- {rowan_python-3.0.6 → rowan_python-3.0.8}/pyproject.toml +2 -2
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/__init__.py +1 -0
- rowan_python-3.0.8/rowan/api_keys.py +144 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/__init__.py +5 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/electronic_properties.py +29 -1
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/pka.py +10 -1
- rowan_python-3.0.8/rowan/workflows/pocket_detection.py +112 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/protein_cofolding.py +19 -2
- {rowan_python-3.0.6 → rowan_python-3.0.8}/.envrc +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/.github/workflows/build-and-deploy-docs.yml +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/.github/workflows/python-publish.yml +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/.github/workflows/test.yml +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/.gitignore +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/.pre-commit-config.yaml +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/AGENTS.md +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/CLAUDE.md +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/GEMINI.md +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/LICENSE +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/README.md +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/docs/images/deciduous-tree-favicon.png +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/docs/index.md +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/docs/rowan_rdkit.md +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/docs/stylesheets/colors.css +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/admet.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/analogue_docking.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/basic_calculation.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/basic_calculation_from_json.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/basic_calculation_with_constraint.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/basic_calculation_with_solvent.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/batch_docking.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/bde.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/data/1iep_receptorH.pdb +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/data/Al_FCC.xyz +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/data/citalopram_1iep.xyz +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/data/tyk2_ligands.sdf +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/data/tyk2_structure.pdb +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/data/workflow_example.json +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/dcd_download.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/descriptors.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/double_ended_ts_search.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/estimate_workflow.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/fukui_index.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/hydrogen_bond_basicity.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/ion_mobility.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/irc.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/macropka.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/multistage_optimization.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/nmr.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/optimization.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/pdb_download.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/pose_analysis_md.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/protein_binder_design.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/protein_cofolding.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/protein_md.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/rbfe_graph.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/redox_potential.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/retrieve_workflow.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/scan.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/spin_states.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/strain.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/tautomer.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/template.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/examples/webhook.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/mkdocs.yml +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/calculation.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/config.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/constants.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/folder.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/molecule.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/project.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/protein.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/py.typed +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/rowan_rdkit/__init__.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/rowan_rdkit/chem_utils.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/types.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/user.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/utils.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/admet.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/analogue_docking.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/base.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/basic_calculation.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/batch_docking.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/bde.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/conformer_search.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/constants.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/descriptors.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/docking.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/double_ended_ts_search.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/fukui.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/ion_mobility.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/irc.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/macropka.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/membrane_permeability.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/msa.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/multistage_optimization.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/nmr.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/pose_analysis_md.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/protein_binder_design.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/protein_md.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/rbfe_graph.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/redox_potential.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/scan.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/solubility.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/spin_states.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/strain.py +0 -0
- {rowan_python-3.0.6 → rowan_python-3.0.8}/rowan/workflows/tautomer_search.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rowan-python
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.8
|
|
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
|
|
14
|
+
Requires-Dist: stjames<=0.0.182
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
|
|
17
17
|
# Rowan Python Library
|
|
@@ -15,7 +15,7 @@ workflow = rowan.submit_solubility_workflow(
|
|
|
15
15
|
folder=folder,
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
print(f"View workflow privately at: https://labs.rowansci.com/
|
|
18
|
+
print(f"View workflow privately at: https://labs.rowansci.com/solubility/{workflow.uuid}")
|
|
19
19
|
result = workflow.result()
|
|
20
20
|
print(result)
|
|
21
21
|
# e.g. <SolubilityResult solvents=['water']>
|
|
@@ -19,6 +19,8 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
+
print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.uuid}")
|
|
23
|
+
|
|
22
24
|
msa_result = msa_workflow.result()
|
|
23
25
|
|
|
24
26
|
msa_result.download_files("boltz", path=msa_directory)
|
|
@@ -18,6 +18,8 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
18
18
|
folder=folder,
|
|
19
19
|
)
|
|
20
20
|
|
|
21
|
+
print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.uuid}")
|
|
22
|
+
|
|
21
23
|
msa_result = msa_workflow.result()
|
|
22
24
|
|
|
23
25
|
msa_result.download_files("boltz", path=msa_directory)
|
|
@@ -19,6 +19,8 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
+
print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.uuid}")
|
|
23
|
+
|
|
22
24
|
msa_result = msa_workflow.result()
|
|
23
25
|
|
|
24
26
|
msa_result.download_files("colabfold", path=msa_directory)
|
|
@@ -18,6 +18,8 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
18
18
|
folder=folder,
|
|
19
19
|
)
|
|
20
20
|
|
|
21
|
+
print(f"View workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.uuid}")
|
|
22
|
+
|
|
21
23
|
msa_result = msa_workflow.result()
|
|
22
24
|
|
|
23
25
|
msa_result.download_files("colabfold", path=msa_directory)
|
|
@@ -8,7 +8,7 @@ workflow = rowan.submit_conformer_search_workflow(
|
|
|
8
8
|
initial_molecule=rowan.Molecule.from_smiles("CC(C)Cc1ccc(C(=O)c2ccc(O)cc2)cc1"),
|
|
9
9
|
folder=folder,
|
|
10
10
|
)
|
|
11
|
-
print(f"View
|
|
11
|
+
print(f"View folder privately at: https://labs.rowansci.com/folder/{folder.uuid}")
|
|
12
12
|
csearch_result = workflow.result()
|
|
13
13
|
|
|
14
14
|
redox_potential_workflows = []
|
|
@@ -28,7 +28,7 @@ workflow = rowan.submit_conformer_search_workflow(
|
|
|
28
28
|
folder=folder,
|
|
29
29
|
)
|
|
30
30
|
|
|
31
|
-
print(f"View workflow privately at: https://labs.rowansci.com/
|
|
31
|
+
print(f"View workflow privately at: https://labs.rowansci.com/conformer-search/{workflow.uuid}")
|
|
32
32
|
|
|
33
33
|
result = workflow.result()
|
|
34
34
|
print(result)
|
|
@@ -16,17 +16,17 @@ import rowan
|
|
|
16
16
|
folder = rowan.get_folder("examples")
|
|
17
17
|
|
|
18
18
|
workflow = rowan.submit_electronic_properties_workflow(
|
|
19
|
-
initial_molecule=rowan.Molecule.from_smiles("
|
|
19
|
+
initial_molecule=rowan.Molecule.from_smiles("C=O"), # formaldehyde
|
|
20
20
|
method="b97_3c", # default: lightweight DFT
|
|
21
21
|
compute_density_cube=True,
|
|
22
22
|
compute_electrostatic_potential_cube=True,
|
|
23
23
|
compute_num_occupied_orbitals=3, # HOMO, HOMO-1, HOMO-2
|
|
24
24
|
compute_num_virtual_orbitals=3, # LUMO, LUMO+1, LUMO+2
|
|
25
|
-
name="
|
|
25
|
+
name="Formaldehyde electronic properties",
|
|
26
26
|
folder=folder,
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
print(f"View workflow privately at: https://labs.rowansci.com/orbitals/{workflow.uuid}")
|
|
30
30
|
result = workflow.result()
|
|
31
31
|
print(result)
|
|
32
|
-
# e.g. <ElectronicPropertiesResult dipole=
|
|
32
|
+
# e.g. <ElectronicPropertiesResult dipole=(0.0, 0.0, -2.33) D>
|
|
@@ -56,7 +56,7 @@ workflow = rowan.submit_interaction_energy_decomposition_workflow(
|
|
|
56
56
|
name="Naphthalene-Guanine SAPT0",
|
|
57
57
|
)
|
|
58
58
|
|
|
59
|
-
print(f"View at: https://labs.rowansci.com/
|
|
59
|
+
print(f"View at: https://labs.rowansci.com/interaction-energy-decomposition/{workflow.uuid}")
|
|
60
60
|
|
|
61
61
|
result = workflow.result()
|
|
62
62
|
print(result)
|
|
@@ -21,9 +21,10 @@ pypermm_workflow = rowan.submit_membrane_permeability_workflow(
|
|
|
21
21
|
folder=folder,
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
+
print(f"View folder privately at: https://labs.rowansci.com/folder/{folder.uuid}")
|
|
24
25
|
print("View these workflows privately:")
|
|
25
26
|
print(f"\thttps://labs.rowansci.com/membrane-permeability/{gnn_mtl_workflow.uuid}")
|
|
26
|
-
print(f"\thttps://labs.rowansci.com/
|
|
27
|
+
print(f"\thttps://labs.rowansci.com/membrane-permeability/{pypermm_workflow.uuid}")
|
|
27
28
|
gnn_mtl_result = gnn_mtl_workflow.result()
|
|
28
29
|
pypermm_result = pypermm_workflow.result()
|
|
29
30
|
|
|
@@ -15,7 +15,7 @@ import rowan
|
|
|
15
15
|
|
|
16
16
|
# Set your API key or use the ROWAN_API_KEY environment variable
|
|
17
17
|
# rowan.api_key = "rowan-sk..."
|
|
18
|
-
folder = rowan.get_folder("examples
|
|
18
|
+
folder = rowan.get_folder("examples")
|
|
19
19
|
|
|
20
20
|
# Build bulk Al FCC primitive cell.
|
|
21
21
|
# Lattice vectors in Angstrom; Al has 13 electrons so multiplicity=2.
|
|
@@ -27,6 +27,7 @@ workflow = rowan.submit_pka_workflow(
|
|
|
27
27
|
name="Phenol pKa (aimnet2_wagen2024)",
|
|
28
28
|
folder=folder,
|
|
29
29
|
)
|
|
30
|
+
print(f"View folder privately at: https://labs.rowansci.com/folder/{folder.uuid}")
|
|
30
31
|
print(f"View at: https://labs.rowansci.com/pka/{workflow.uuid}")
|
|
31
32
|
result = workflow.result()
|
|
32
33
|
print(result)
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
protein = rowan.create_protein_from_pdb_id(
|
|
8
|
+
"thymidine phosphorylase", "1OTP", project_uuid=rowan.default_project().uuid
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
protein.prepare()
|
|
12
|
+
|
|
13
|
+
workflow = rowan.submit_pocket_detection_workflow(
|
|
14
|
+
protein=protein,
|
|
15
|
+
name="Pocket detection on thymidine phosphorylase",
|
|
16
|
+
folder=folder,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
result = workflow.result()
|
|
20
|
+
|
|
21
|
+
print(f"Detected {len(result.pockets)} pocket(s):")
|
|
22
|
+
for i, pocket in enumerate(result.pockets):
|
|
23
|
+
print(f" Pocket {i}: score={pocket.score}, volume={pocket.volume} ų")
|
|
24
|
+
print(f" center={pocket.pocket_center}")
|
|
25
|
+
print(f" sides={pocket.pocket_sides}")
|
|
26
|
+
print(f" residues={pocket.residue_numbers}")
|
|
27
|
+
|
|
28
|
+
print(f"View workflow privately at: https://labs.rowansci.com/pocket-detection/{workflow.uuid}")
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Example: mint per-project API keys for several projects at once.
|
|
2
|
+
|
|
3
|
+
A project-scoped key can only access the project it was created for —
|
|
4
|
+
useful for handing limited access to collaborators, CI jobs, or analyses
|
|
5
|
+
without exposing your full account.
|
|
6
|
+
|
|
7
|
+
The plaintext key is only returned once at creation time — store it
|
|
8
|
+
immediately. The caller must currently authenticate with an unscoped key
|
|
9
|
+
that has ``can_manage_api_keys`` permission.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import rowan
|
|
13
|
+
|
|
14
|
+
# rowan.api_key = "rowan-sk..."
|
|
15
|
+
|
|
16
|
+
campaigns = ["CDK2 campaign", "BTK campaign", "EGFR campaign"]
|
|
17
|
+
|
|
18
|
+
results = []
|
|
19
|
+
for campaign in campaigns:
|
|
20
|
+
project = rowan.create_project(name=campaign)
|
|
21
|
+
created = rowan.create_api_key(
|
|
22
|
+
name=f"{campaign.lower().replace(' ', '-')}-key",
|
|
23
|
+
scope="read_write",
|
|
24
|
+
valid_days=90,
|
|
25
|
+
scoped_project_uuid=project.uuid,
|
|
26
|
+
)
|
|
27
|
+
results.append((project.name, created.api_key.name, created.key))
|
|
28
|
+
|
|
29
|
+
print("Plaintext keys (save these now — only returned once):")
|
|
30
|
+
for project_name, key_name, key in results:
|
|
31
|
+
print(f" {project_name} | {key_name} | {key}")
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""Cofolding with both pocket and contact constraints.
|
|
2
|
+
|
|
3
|
+
Example: bovine trypsin + benzamidine, a textbook S1-pocket binder.
|
|
4
|
+
Trypsin's S1 specificity pocket is anchored by Asp189 at its base, and
|
|
5
|
+
benzamidine binds via a bidentate salt bridge between its amidinium group
|
|
6
|
+
and the Asp189 carboxylate.
|
|
7
|
+
|
|
8
|
+
We encode this prior knowledge with two constraints:
|
|
9
|
+
|
|
10
|
+
1. PocketConstraint - the ligand must sit inside the S1 pocket, near the
|
|
11
|
+
catalytic triad (His57, Asp102, Ser195) and Asp189.
|
|
12
|
+
2. ContactConstraint - the amidine carbon of benzamidine must come within
|
|
13
|
+
~4 A of Asp189 (the salt bridge interaction).
|
|
14
|
+
|
|
15
|
+
The four residues are located by their conserved chymotrypsin-family motifs
|
|
16
|
+
in the sequence below: AAHCY (His), NNDIML (Asp triad), SDSSCK (S1 Asp
|
|
17
|
+
before Cys191), GDSGGP (Ser).
|
|
18
|
+
|
|
19
|
+
ConstraintTargets are constructed explicitly with (input_type, input_index,
|
|
20
|
+
token_index) so the addressing scheme is unambiguous: input_index selects which
|
|
21
|
+
protein / ligand in the input lists, and token_index is the residue index for
|
|
22
|
+
proteins and the atom index for ligands. The same three fields appear in the
|
|
23
|
+
cofolding submit form on labs.rowansci.com.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
import rowan
|
|
27
|
+
|
|
28
|
+
# rowan.api_key = "rowan-sk..."
|
|
29
|
+
folder = rowan.get_folder("examples")
|
|
30
|
+
|
|
31
|
+
TRYPSIN = (
|
|
32
|
+
"IVGGYTCGANTVPYQVSLNSGYHFCGGSLINSQWVVSAAHCYKSGIQVRLGEDNINVVEGNEQFISASKSIVHPSYNSNTLNN"
|
|
33
|
+
"DIMLIKLKSAAYTSYDVPLGTQCLISGWGNTKSSGTSYPDVLKCLKAPILSDSSCKSAYPGQITSNMFCAGYLEGGKDSCQGD"
|
|
34
|
+
"SGGPVVCSGKLQGIVSWGSGCAQKNKPGVYTKVCNYVSWIKQTIASN"
|
|
35
|
+
)
|
|
36
|
+
BENZAMIDINE = "NC(=N)c1ccccc1"
|
|
37
|
+
|
|
38
|
+
# Targets for the four pocket-defining residues on the trypsin chain (protein 0).
|
|
39
|
+
his57 = rowan.ConstraintTarget(input_type="protein", input_index=0, token_index=39) # AAHCY
|
|
40
|
+
asp102 = rowan.ConstraintTarget(input_type="protein", input_index=0, token_index=83) # NNDIML
|
|
41
|
+
asp189 = rowan.ConstraintTarget(input_type="protein", input_index=0, token_index=134) # SDSSCK
|
|
42
|
+
ser195 = rowan.ConstraintTarget(input_type="protein", input_index=0, token_index=166) # GDSGGP
|
|
43
|
+
|
|
44
|
+
# Target for the central amidine carbon of benzamidine (atom 1 in NC(=N)c1ccccc1).
|
|
45
|
+
benzamidine_amidine_c = rowan.ConstraintTarget(input_type="ligand", input_index=0, token_index=1)
|
|
46
|
+
|
|
47
|
+
pocket = rowan.PocketConstraint(
|
|
48
|
+
input_type="ligand", # the binder being placed into the pocket
|
|
49
|
+
input_index=0, # benzamidine is the first (and only) ligand
|
|
50
|
+
contacts=[his57, asp102, asp189, ser195],
|
|
51
|
+
max_distance=6.0,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
salt_bridge = rowan.ContactConstraint(
|
|
55
|
+
token_1=benzamidine_amidine_c,
|
|
56
|
+
token_2=asp189,
|
|
57
|
+
max_distance=4.0,
|
|
58
|
+
force=True,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
workflow = rowan.submit_protein_cofolding_workflow(
|
|
62
|
+
initial_protein_sequences=[TRYPSIN],
|
|
63
|
+
initial_smiles_list=[BENZAMIDINE],
|
|
64
|
+
ligand_binding_affinity_index=0,
|
|
65
|
+
pocket_constraints=[pocket],
|
|
66
|
+
contact_constraints=[salt_bridge],
|
|
67
|
+
use_potentials=True, # required for force=True
|
|
68
|
+
num_samples=3,
|
|
69
|
+
name="Trypsin + Benzamidine (constrained)",
|
|
70
|
+
do_pose_refinement=True,
|
|
71
|
+
folder=folder,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
print(f"View workflow privately at: https://labs.rowansci.com/protein-cofolding/{workflow.uuid}")
|
|
75
|
+
result = workflow.result()
|
|
76
|
+
print(result)
|
|
77
|
+
for i, pred in enumerate(result.predictions):
|
|
78
|
+
iptm = pred.scores.iptm if pred.scores else None
|
|
79
|
+
print(f" sample {i}: iptm={iptm}")
|
|
@@ -13,7 +13,7 @@ workflow = rowan.submit_solvent_dependent_conformers_workflow(
|
|
|
13
13
|
name="Alanine Dipeptide Solvent-Dependent Conformers",
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
-
print(f"View at: https://labs.rowansci.com/
|
|
16
|
+
print(f"View at: https://labs.rowansci.com/solvent-dependent-conformers/{workflow.uuid}")
|
|
17
17
|
|
|
18
18
|
result = workflow.result()
|
|
19
19
|
print(result)
|