rowan-python 3.1.13__tar.gz → 3.1.15__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.13 → rowan_python-3.1.15}/PKG-INFO +2 -2
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/analogue-docking.md +3 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/batch-docking.md +4 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/covalent-inhibitor-scan.md +4 -0
- rowan_python-3.1.15/docs/workflows/docking.md +60 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/logp.md +3 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/macropka.md +2 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/nmr.md +3 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/pose-analysis-md.md +3 -0
- rowan_python-3.1.15/docs/workflows/protein-md.md +19 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/solvent-dependent-conformers.md +3 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/tautomer-search.md +3 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/binding_affinity.py +5 -1
- rowan_python-3.1.15/examples/covalent_docking.py +44 -0
- rowan_python-3.1.15/examples/covalent_inhibitor_scan.py +45 -0
- rowan_python-3.1.15/examples/induced_fit_docking.py +61 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/nmr.py +4 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/pose_analysis_md.py +6 -2
- rowan_python-3.1.15/examples/protein_cofolding_modified_inputs.py +44 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/protein_md.py +4 -0
- rowan_python-3.1.15/examples/temporary_workflow_sharing.py +19 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/pixi.lock +322 -277
- {rowan_python-3.1.13 → rowan_python-3.1.15}/pyproject.toml +2 -2
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/__init__.py +13 -2
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/protein.py +33 -3
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/__init__.py +8 -1
- rowan_python-3.1.15/rowan/workflows/_molecular_dynamics.py +219 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/analogue_docking.py +1 -4
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/base.py +77 -4
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/batch_docking.py +31 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/binding_affinity.py +43 -22
- rowan_python-3.1.15/rowan/workflows/covalent_inhibitor_scan.py +175 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/docking.py +72 -5
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/macropka.py +4 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/nmr.py +38 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/pose_analysis_md.py +48 -85
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/protein_cofolding.py +24 -7
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/protein_md.py +71 -84
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/relative_binding_free_energy_perturbation.py +5 -3
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/solvent_dependent_conformers.py +13 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/tautomer_search.py +13 -2
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/SKILL.md +1 -1
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +5 -6
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/batch_docking.md +8 -0
- rowan_python-3.1.15/skills/computational-chemistry-and-biology/reference/binding_affinity.md +89 -0
- rowan_python-3.1.15/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +60 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/docking.md +72 -5
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/macropka.md +3 -1
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/nmr.md +8 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +10 -4
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +12 -5
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/protein_md.md +12 -5
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/protein_preparation.md +2 -2
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/python_sdk.md +20 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +1 -1
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +3 -1
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +2 -0
- rowan_python-3.1.15/tests/test_binding_affinity.py +124 -0
- rowan_python-3.1.15/tests/test_cofolding_workflow_updates.py +121 -0
- rowan_python-3.1.15/tests/test_docking_workflow.py +150 -0
- rowan_python-3.1.15/tests/test_docking_workflow_updates.py +117 -0
- rowan_python-3.1.15/tests/test_macropka_nmr.py +93 -0
- rowan_python-3.1.15/tests/test_mango_forcefields.py +120 -0
- rowan_python-3.1.15/tests/test_md_workflow_updates.py +322 -0
- rowan_python-3.1.15/tests/test_protein.py +39 -0
- rowan_python-3.1.15/tests/test_solvent_dependent_conformers.py +87 -0
- rowan_python-3.1.15/tests/test_tautomer_search.py +51 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/tests/test_workflow_submission.py +76 -0
- rowan_python-3.1.13/docs/workflows/docking.md +0 -11
- rowan_python-3.1.13/docs/workflows/protein-md.md +0 -11
- rowan_python-3.1.13/examples/covalent_docking.py +0 -64
- rowan_python-3.1.13/examples/covalent_inhibitor_scan.py +0 -59
- rowan_python-3.1.13/rowan/workflows/covalent_inhibitor_scan.py +0 -130
- rowan_python-3.1.13/skills/computational-chemistry-and-biology/reference/binding_affinity.md +0 -61
- rowan_python-3.1.13/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +0 -50
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.agents/plugins/marketplace.json +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.claude-plugin/marketplace.json +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.codex-plugin/plugin.json +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.envrc +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.github/workflows/build-and-deploy-docs.yml +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.github/workflows/publish-skill.yml +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.github/workflows/python-publish.yml +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.github/workflows/test.yml +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.gitignore +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/.pre-commit-config.yaml +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/AGENTS.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/CLAUDE.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/GEMINI.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/LICENSE +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/README.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/api-keys.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/calculation.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/folder.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/molecule.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/project.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/protein.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/user.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/webhooks.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/api/workflow.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/images/RowanLogoLarge.png +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/images/RowanSquareLogo.png +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/images/favicon.svg +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/index.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/stylesheets/colors.css +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/admet.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/basic-calculation.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/binding-affinity.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/bond-dissociation-energy.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/conformer-search-settings.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/conformer-search.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/descriptors.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/double-ended-ts-search.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/electronic-properties.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/fukui.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/hydrogen-bond-donor-acceptor-strength.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/interaction-energy-decomposition.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/ion-mobility.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/irc.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/membrane-permeability.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/msa.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/multistage-optimization.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/pka.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/pocket-detection.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/protein-binder-design.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/protein-cofolding.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/protein-preparation.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/rbfe-graph.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/redox-potential.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/relative-binding-free-energy-perturbation.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/scan.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/settings.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/solubility.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/spin-states.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/strain.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/docs/workflows/types.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/PROTAC_solubility.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/admet.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/analogue_docking.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/aqueous_solubility.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/basic_calculation.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/basic_calculation_from_json.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/basic_calculation_with_constraint.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/basic_calculation_with_solvent.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/batch_docking.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/batch_solubility.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/bde.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/boltz_paired_msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/boltz_single_msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/chai_paired_msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/chai_single_msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/cofolding_screen.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/colabfold_paired_msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/colabfold_single_msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/conformer_dependent_redox.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/conformers.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/conformers_screen.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/1iep_receptorH.pdb +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/Al_FCC.xyz +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/citalopram_1iep.xyz +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/ibuprofen_conformers.sdf +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/tyk2_ligands.sdf +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/tyk2_structure.pdb +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/data/workflow_example.json +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/dcd_download.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/descriptors.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/docking.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/docking_screen.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/electronic_properties.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/estimate_workflow.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/fukui_index.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/hydrogen_bond_basicity.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/ion_mobility.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/irc.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/logp.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/macropka.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/membrane_permeability.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/multistage_optimization.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/optimization.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/pdb_download.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/periodic_dft.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/phenol_pka.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/pka.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/pocket_detection.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/project_scoped_api_key.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/protein_binder_design.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/protein_cofolding.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/protein_cofolding_with_constraints.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/protein_cofolding_with_templates.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/protein_preparation.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/rbfe_graph.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/rbfe_resubmit.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/redox_potential.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/resubmit_with_perturbations.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/retrieve_workflow.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/scan.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/spin_states.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/strain.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/tautomer.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/template.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/examples/webhook.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/mkdocs.yml +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/api_keys.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/calculation.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/config.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/constants.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/folder.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/molecule.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/project.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/py.typed +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/types.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/user.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/utils.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/admet.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/basic_calculation.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/bde.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/conformer_search.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/constants.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/descriptors.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/electronic_properties.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/fukui.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/ion_mobility.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/irc.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/logp.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/membrane_permeability.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/msa.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/multistage_optimization.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/pka.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/pocket_detection.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/protein_binder_design.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/protein_preparation.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/rbfe_graph.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/redox_potential.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/scan.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/solubility.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/spin_states.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/rowan/workflows/strain.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/.claude-plugin/plugin.json +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/logp.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/mcp_execution.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/tests/test_plugin.py +0 -0
- {rowan_python-3.1.13 → rowan_python-3.1.15}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rowan-python
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.15
|
|
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.261
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
|
|
17
17
|
# Rowan Python Library
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Batch Docking
|
|
2
2
|
|
|
3
|
+
Use `num_poses_to_save` to retain the best pose for that many top-scoring compounds, and set
|
|
4
|
+
`run_mmgbsa=True` to refine those saved poses. `result.refined_scores` maps every input SMILES
|
|
5
|
+
to a `DockingScore` for a retained compound or `None` otherwise.
|
|
6
|
+
|
|
3
7
|
::: rowan.workflows.batch_docking
|
|
4
8
|
handler: python
|
|
5
9
|
options:
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Docking
|
|
2
|
+
|
|
3
|
+
The docking workflow supports Vina docking and both noncovalent and covalent gnina docking.
|
|
4
|
+
Passing `GninaSettings` selects gnina; it does not by itself enable covalent docking.
|
|
5
|
+
|
|
6
|
+
## Induced-fit docking
|
|
7
|
+
|
|
8
|
+
Pass `rowan.InducedFitSettings()` to `induced_fit_settings` when nearby receptor side chains may
|
|
9
|
+
need to relax around the ligand. Induced fit requires Vina or QVina2 and adds substantial work
|
|
10
|
+
beyond rigid docking.
|
|
11
|
+
|
|
12
|
+
Results contain both rigid and induced-receptor poses ranked by `induced_fit_score`. Use
|
|
13
|
+
`get_induced_receptor()` or `get_induced_receptors()` to retrieve the relaxed receptors associated
|
|
14
|
+
with induced poses. See `examples/induced_fit_docking.py` for a complete example.
|
|
15
|
+
|
|
16
|
+
## Covalent docking
|
|
17
|
+
|
|
18
|
+
Set both covalent atom indices on `GninaSettings` to form a bond between a known ligand atom and
|
|
19
|
+
protein atom. Covalent gnina docking requires `scoring_function="vina"`.
|
|
20
|
+
|
|
21
|
+
Prepare the protein first, then resolve the reactive protein atom from the prepared structure.
|
|
22
|
+
Protein preparation can change atom ordering and residue numbering.
|
|
23
|
+
|
|
24
|
+
Supply the ligand in its expected post-reaction, covalently bound topology; gnina does not infer the
|
|
25
|
+
reaction. For a Michael acceptor `C=CC(=O)NR`, use the hydrogen-capped product `CCC(=O)NR` and
|
|
26
|
+
select the terminal β-carbon as the covalent ligand atom.
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
prepared_protein = preparation_workflow.result().get_prepared_protein()
|
|
30
|
+
reactive_protein_atom_index = prepared_protein.get_atom_index(
|
|
31
|
+
chain="A", residue=reactive_residue, atom="SG"
|
|
32
|
+
)
|
|
33
|
+
settings = rowan.GninaSettings(
|
|
34
|
+
scoring_function="vina",
|
|
35
|
+
covalent_ligand_atom_index=reactive_ligand_atom_index,
|
|
36
|
+
covalent_protein_atom_index=reactive_protein_atom_index,
|
|
37
|
+
)
|
|
38
|
+
workflow = rowan.submit_docking_workflow(
|
|
39
|
+
prepared_protein.uuid,
|
|
40
|
+
pocket=[center, size],
|
|
41
|
+
initial_molecule=ligand,
|
|
42
|
+
docking_settings=settings,
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Both indices are zero-based all-atom indices, including hydrogens. See
|
|
47
|
+
`examples/covalent_docking.py` for a complete TG2 example.
|
|
48
|
+
|
|
49
|
+
PoseBusters validation is skipped for covalent poses. Their `posebusters_valid` value is `None`,
|
|
50
|
+
meaning not evaluated rather than failed; do not use it to reject covalent poses.
|
|
51
|
+
|
|
52
|
+
::: rowan.workflows.docking
|
|
53
|
+
handler: python
|
|
54
|
+
options:
|
|
55
|
+
show_source: false
|
|
56
|
+
show_root_heading: false
|
|
57
|
+
show_root_toc_entry: false
|
|
58
|
+
members_order: source
|
|
59
|
+
group_by_category: true
|
|
60
|
+
filters: ["!^_"]
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Pose Analysis MD
|
|
2
2
|
|
|
3
|
+
Pose-analysis MD accepts selectable small-molecule, protein, and water force fields. Mean and
|
|
4
|
+
medoid structures are available through the same result helpers as protein MD.
|
|
5
|
+
|
|
3
6
|
::: rowan.workflows.pose_analysis_md
|
|
4
7
|
handler: python
|
|
5
8
|
options:
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Protein MD
|
|
2
|
+
|
|
3
|
+
Protein MD accepts selectable small-molecule, protein, and water force fields. Results expose
|
|
4
|
+
binder RMSD, MM/GBSA scores, mean-structure UUIDs, and medoid frame indices per trajectory. Use
|
|
5
|
+
`get_mean_structure`, `download_mean_structure`, or `download_medoid_structure` to retrieve
|
|
6
|
+
representative structures.
|
|
7
|
+
|
|
8
|
+
For protein structures containing non-polymer ligands, pass their SMILES through
|
|
9
|
+
`small_molecules` and select the residues to analyze through `rowan.Binder`.
|
|
10
|
+
|
|
11
|
+
::: rowan.workflows.protein_md
|
|
12
|
+
handler: python
|
|
13
|
+
options:
|
|
14
|
+
show_source: false
|
|
15
|
+
show_root_heading: false
|
|
16
|
+
show_root_toc_entry: false
|
|
17
|
+
members_order: source
|
|
18
|
+
group_by_category: true
|
|
19
|
+
filters: ["!^_"]
|
|
@@ -11,6 +11,7 @@ protein = rowan.upload_protein("TYK2", data_dir / "tyk2_structure.pdb")
|
|
|
11
11
|
all_ligands = rowan.load_named_ligands(data_dir / "tyk2_ligands.sdf")
|
|
12
12
|
ligands = dict(list(all_ligands.items())[:3])
|
|
13
13
|
|
|
14
|
+
# SQM-based scoring (default): binding_affinity in kcal/mol.
|
|
14
15
|
workflow = rowan.submit_binding_affinity_workflow(
|
|
15
16
|
protein=protein.uuid,
|
|
16
17
|
ligand_structures=list(ligands.values()),
|
|
@@ -21,4 +22,7 @@ print(f"View at: https://labs.rowansci.com/binding-affinity/{workflow.uuid}")
|
|
|
21
22
|
|
|
22
23
|
result = workflow.result()
|
|
23
24
|
for name, score in zip(ligands.keys(), result.scores, strict=False):
|
|
24
|
-
|
|
25
|
+
if score is None:
|
|
26
|
+
print(f"{name}: scoring failed")
|
|
27
|
+
continue
|
|
28
|
+
print(f"{name}: {score.binding_affinity:.2f} kcal/mol")
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import rowan
|
|
2
|
+
|
|
3
|
+
folder = rowan.get_folder("examples")
|
|
4
|
+
|
|
5
|
+
tg2_inhibitor = rowan.Molecule.from_smiles(
|
|
6
|
+
"CCC(=O)NCCCC[C@H](NC(=O)Cc1ccc(Cl)c(Cl)c1)C(=O)N1CCN(C(=O)c2cccc3ccccc23)CC1"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
protein = rowan.create_protein_from_pdb_id("2Q3Z")
|
|
10
|
+
protein = protein.select_chains(["A"])
|
|
11
|
+
preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
12
|
+
protein=protein.uuid,
|
|
13
|
+
name="Prepare TG2",
|
|
14
|
+
folder=folder,
|
|
15
|
+
)
|
|
16
|
+
protein = preparation_workflow.result().get_prepared_protein()
|
|
17
|
+
|
|
18
|
+
center = [-1.079, -3.081, 18.122]
|
|
19
|
+
size = [22.22, 14.08, 21.74]
|
|
20
|
+
|
|
21
|
+
# Protein preparation renumbers Cys277 to residue 278.
|
|
22
|
+
cys277_sg_index = protein.get_atom_index(chain="A", residue=278, atom="SG")
|
|
23
|
+
gnina_settings = rowan.GninaSettings(
|
|
24
|
+
scoring_function="vina",
|
|
25
|
+
covalent_ligand_atom_index=0,
|
|
26
|
+
covalent_protein_atom_index=cys277_sg_index,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
workflow = rowan.submit_docking_workflow(
|
|
30
|
+
protein.uuid,
|
|
31
|
+
pocket=[center, size],
|
|
32
|
+
initial_molecule=tg2_inhibitor,
|
|
33
|
+
docking_settings=gnina_settings,
|
|
34
|
+
name="TG2 covalent docking (Cys277, 2Q3Z)",
|
|
35
|
+
folder=folder,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
print(f"View workflow privately at: https://labs.rowansci.com/docking/{workflow.uuid}")
|
|
39
|
+
|
|
40
|
+
result = workflow.result()
|
|
41
|
+
print(result)
|
|
42
|
+
|
|
43
|
+
for i, score in enumerate(result.scores):
|
|
44
|
+
print(f" Pose {i}: score={score.score:.3f}")
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
# BTK, catalytic Cys481. 4YHF already has a covalently-bound small-molecule inhibitor
|
|
8
|
+
# (residue 4C9) linked to Cys481 SG via the ligand's C1 atom.
|
|
9
|
+
ligand_smiles = "CC(C)(C)C[C@@H](C#N)C(=O)N1CCC[C@H](C1)n2nc(c3ccc(Oc4ccccc4)cc3)c5c(N)ncnc25"
|
|
10
|
+
|
|
11
|
+
protein = rowan.create_protein_from_pdb_id("4YHF")
|
|
12
|
+
protein = protein.select_chains(["A"])
|
|
13
|
+
preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
14
|
+
protein=protein.uuid,
|
|
15
|
+
retain_non_polymer={"4C9": ligand_smiles},
|
|
16
|
+
name="Prepare BTK inhibitor complex",
|
|
17
|
+
folder=folder,
|
|
18
|
+
)
|
|
19
|
+
protein = preparation_workflow.result().get_prepared_protein()
|
|
20
|
+
|
|
21
|
+
# Protein preparation normalizes 4YHF's residue numbering: Cys481 becomes residue 101,
|
|
22
|
+
# while the retained 4C9 ligand remains residue 701.
|
|
23
|
+
protein_reactive_atom_index = protein.get_atom_index(chain="A", residue=101, atom="SG")
|
|
24
|
+
ligand_reactive_atom_index = protein.get_atom_index(
|
|
25
|
+
chain="A", residue=701, atom="C1", entity_type="non_polymer"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
workflow = rowan.submit_covalent_inhibitor_scan_workflow(
|
|
29
|
+
protein=protein.uuid,
|
|
30
|
+
protein_reactive_atom_index=protein_reactive_atom_index,
|
|
31
|
+
ligand_reactive_atom_index=ligand_reactive_atom_index,
|
|
32
|
+
reactant_smiles=ligand_smiles,
|
|
33
|
+
name="BTK covalent inhibitor scan (Cys481, 4YHF)",
|
|
34
|
+
folder=folder,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
print(
|
|
38
|
+
f"View workflow privately at: https://labs.rowansci.com/covalent-inhibitor-scan/{workflow.uuid}"
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
result = workflow.result()
|
|
42
|
+
print(result)
|
|
43
|
+
|
|
44
|
+
for distance, free_energy in result.get_energies():
|
|
45
|
+
print(f" distance={distance:.3f} Å free_energy={free_energy} kcal/mol")
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import rowan
|
|
2
|
+
|
|
3
|
+
# Set your API key or use the ROWAN_API_KEY environment variable
|
|
4
|
+
# rowan.api_key = "rowan-sk..."
|
|
5
|
+
folder = rowan.get_folder("examples")
|
|
6
|
+
|
|
7
|
+
# Dasatinib — redocked into its own ABL1 co-crystal structure (PDB: 2GQG)
|
|
8
|
+
dasatinib = rowan.Molecule.from_smiles("Cc1nc(Nc2ncc(C(=O)Nc3c(C)cccc3Cl)s2)cc(N2CCN(CCO)CC2)n1")
|
|
9
|
+
|
|
10
|
+
protein = rowan.create_protein_from_pdb_id("2GQG")
|
|
11
|
+
protein = protein.select_chains(["A"])
|
|
12
|
+
preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
13
|
+
protein=protein.uuid,
|
|
14
|
+
add_missing_method="pdbfixer",
|
|
15
|
+
name="Prepare ABL1",
|
|
16
|
+
folder=folder,
|
|
17
|
+
)
|
|
18
|
+
prepared_protein_uuid = preparation_workflow.result().prepared_protein_uuid
|
|
19
|
+
|
|
20
|
+
# Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
|
|
21
|
+
center = [44.59, 79.75, 39.59]
|
|
22
|
+
size = [24.15, 21.33, 19.88]
|
|
23
|
+
|
|
24
|
+
# Induced-fit docking soft-docks candidate poses, relaxes the receptor around each with
|
|
25
|
+
# restrained local minimization, and redocks into the relaxed receptor. It requires
|
|
26
|
+
# VinaSettings with executable="vina" or "qvina2" (the default is "vina").
|
|
27
|
+
induced_fit_settings = rowan.InducedFitSettings(
|
|
28
|
+
max_receptors=6,
|
|
29
|
+
flexible_sidechain_radius=5.0,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
workflow = rowan.submit_docking_workflow(
|
|
33
|
+
prepared_protein_uuid,
|
|
34
|
+
pocket=[center, size],
|
|
35
|
+
initial_molecule=dasatinib,
|
|
36
|
+
induced_fit_settings=induced_fit_settings,
|
|
37
|
+
name="Dasatinib induced-fit docking",
|
|
38
|
+
folder=folder,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
print(f"View workflow privately at: https://labs.rowansci.com/docking/{workflow.uuid}")
|
|
42
|
+
|
|
43
|
+
result = workflow.result()
|
|
44
|
+
print(result)
|
|
45
|
+
|
|
46
|
+
# With induced-fit docking, poses are ranked by induced_fit_score rather than raw docking score.
|
|
47
|
+
for i, score in enumerate(result.scores):
|
|
48
|
+
print(
|
|
49
|
+
f" Pose {i}: induced_fit_score={score.induced_fit_score:.3f} "
|
|
50
|
+
f"score={score.score:.3f} receptor_strain={score.receptor_strain}"
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Download the top-scoring complex and best-ranked relaxed receptor as PDBs
|
|
54
|
+
complex_protein = result.get_complex(0)
|
|
55
|
+
complex_protein.download_pdb_file(name="dasatinib_2GQG_induced_complex")
|
|
56
|
+
print("Saved dasatinib_2GQG_induced_complex.pdb")
|
|
57
|
+
|
|
58
|
+
induced_receptors = result.get_induced_receptors()
|
|
59
|
+
if induced_receptors:
|
|
60
|
+
induced_receptors[0].download_pdb_file(name="dasatinib_2GQG_induced_receptor")
|
|
61
|
+
print("Saved dasatinib_2GQG_induced_receptor.pdb")
|
|
@@ -45,5 +45,9 @@ print(
|
|
|
45
45
|
)
|
|
46
46
|
md_result = md_workflow.result()
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
print(
|
|
48
|
+
trajectory = md_result.trajectories[0]
|
|
49
|
+
print(f"Ligand RMSD: {trajectory.ligand_rmsd}")
|
|
50
|
+
print(f"Protein RMSD: {trajectory.protein_rmsd}")
|
|
51
|
+
print(f"Protein RMSF: {trajectory.rmsf}")
|
|
52
|
+
print(f"Potential energy: {trajectory.potential_energy} Hartree")
|
|
53
|
+
print(f"MM/GBSA scores: {trajectory.mmgbsa_scores} kcal/mol")
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""Cofolding with modified polymers and a covalent bond constraint."""
|
|
2
|
+
|
|
3
|
+
import rowan
|
|
4
|
+
|
|
5
|
+
# Set your API key or use the ROWAN_API_KEY environment variable.
|
|
6
|
+
# rowan.api_key = "rowan-sk..."
|
|
7
|
+
folder = rowan.get_folder("examples")
|
|
8
|
+
|
|
9
|
+
protein = rowan.ProteinSequence(
|
|
10
|
+
sequence="ASA",
|
|
11
|
+
modifications=[rowan.ResidueModification(position=1, ccd="SEP")],
|
|
12
|
+
)
|
|
13
|
+
dna = rowan.DNASequence(
|
|
14
|
+
sequence="AC",
|
|
15
|
+
modifications=[rowan.NucleotideModification(position=1, ccd="5MC")],
|
|
16
|
+
)
|
|
17
|
+
rna = rowan.RNASequence(
|
|
18
|
+
sequence="AU",
|
|
19
|
+
modifications=[rowan.NucleotideModification(position=1, ccd="PSU")],
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
protein_atom = rowan.ConstraintTarget(
|
|
23
|
+
input_type="protein", input_index=0, token_index=1, atom_name="OG"
|
|
24
|
+
)
|
|
25
|
+
ligand_atom = rowan.ConstraintTarget(input_type="ligand", input_index=0, token_index=0)
|
|
26
|
+
covalent_bond = rowan.BondConstraint(atom_1=protein_atom, atom_2=ligand_atom)
|
|
27
|
+
|
|
28
|
+
workflow = rowan.submit_protein_cofolding_workflow(
|
|
29
|
+
initial_protein_sequences=[protein],
|
|
30
|
+
initial_dna_sequences=[dna],
|
|
31
|
+
initial_rna_sequences=[rna],
|
|
32
|
+
initial_smiles_list=["CBr"],
|
|
33
|
+
bond_constraints=[covalent_bond],
|
|
34
|
+
model=rowan.CofoldingModel.BOLTZ_2,
|
|
35
|
+
num_samples=1,
|
|
36
|
+
name="Modified polymers with covalent constraint",
|
|
37
|
+
folder=folder,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
print(f"View workflow privately at: https://labs.rowansci.com/protein-cofolding/{workflow.uuid}")
|
|
41
|
+
result = workflow.result()
|
|
42
|
+
print(result)
|
|
43
|
+
for i, prediction in enumerate(result.predictions):
|
|
44
|
+
print(f" sample {i}: scores={prediction.scores}")
|
|
@@ -21,3 +21,7 @@ md_workflow = rowan.submit_protein_md_workflow(
|
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
print(f"View MD workflow privately at: https://labs.rowansci.com/protein-md/{md_workflow.uuid}")
|
|
24
|
+
trajectory = md_workflow.result().trajectories[0]
|
|
25
|
+
print(f"Protein RMSD: {trajectory.protein_rmsd}")
|
|
26
|
+
print(f"Protein RMSF: {trajectory.rmsf}")
|
|
27
|
+
print(f"Potential energy: {trajectory.potential_energy} Hartree")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""Example: temporarily share a workflow with anyone who has its link."""
|
|
2
|
+
|
|
3
|
+
import rowan
|
|
4
|
+
|
|
5
|
+
# Set your API key or use the ROWAN_API_KEY environment variable.
|
|
6
|
+
# rowan.api_key = "rowan-sk..."
|
|
7
|
+
|
|
8
|
+
workflow = rowan.retrieve_workflow("your-workflow-uuid")
|
|
9
|
+
|
|
10
|
+
# Temporary shares can last for up to 120 minutes. This does not make the workflow
|
|
11
|
+
# permanently public: `workflow.public` remains unchanged.
|
|
12
|
+
workflow = workflow.temporarily_share(duration_minutes=60)
|
|
13
|
+
|
|
14
|
+
print(f"Share URL: https://labs.rowansci.com/workflow/{workflow.uuid}")
|
|
15
|
+
print(f"Public until: {workflow.public_until}")
|
|
16
|
+
print(f"Temporary share active: {workflow.is_temporarily_public}")
|
|
17
|
+
|
|
18
|
+
# End access before the expiration time if needed.
|
|
19
|
+
# workflow = workflow.end_temporary_share()
|