rowan-python 3.1.12__tar.gz → 3.1.14__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.12 → rowan_python-3.1.14}/.claude-plugin/marketplace.json +1 -2
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.github/workflows/python-publish.yml +1 -1
- {rowan_python-3.1.12 → rowan_python-3.1.14}/PKG-INFO +3 -3
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/covalent-inhibitor-scan.md +4 -0
- rowan_python-3.1.14/docs/workflows/docking.md +50 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/logp.md +3 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/macropka.md +2 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/nmr.md +3 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/pose-analysis-md.md +3 -0
- rowan_python-3.1.14/docs/workflows/protein-md.md +19 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/solvent-dependent-conformers.md +3 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/tautomer-search.md +3 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/binding_affinity.py +4 -0
- rowan_python-3.1.14/examples/covalent_docking.py +44 -0
- rowan_python-3.1.14/examples/covalent_inhibitor_scan.py +45 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/nmr.py +4 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/pixi.lock +522 -477
- {rowan_python-3.1.12 → rowan_python-3.1.14}/pyproject.toml +2 -2
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/__init__.py +7 -1
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/protein.py +33 -3
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/utils.py +80 -14
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/__init__.py +2 -1
- rowan_python-3.1.14/rowan/workflows/_molecular_dynamics.py +219 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/base.py +13 -16
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/bde.py +12 -1
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/binding_affinity.py +46 -20
- rowan_python-3.1.14/rowan/workflows/covalent_inhibitor_scan.py +175 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/docking.py +6 -4
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/macropka.py +4 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/msa.py +7 -9
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/nmr.py +38 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/pose_analysis_md.py +34 -88
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/protein_md.py +61 -88
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/relative_binding_free_energy_perturbation.py +12 -15
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/solvent_dependent_conformers.py +5 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/tautomer_search.py +14 -8
- rowan_python-3.1.14/skills/computational-chemistry-and-biology/.claude-plugin/plugin.json +21 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/SKILL.md +8 -1
- rowan_python-3.1.14/skills/computational-chemistry-and-biology/reference/binding_affinity.md +90 -0
- rowan_python-3.1.14/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +60 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/docking.md +48 -5
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/macropka.md +3 -1
- rowan_python-3.1.14/skills/computational-chemistry-and-biology/reference/mcp_execution.md +24 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/nmr.md +8 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +9 -3
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/protein_md.md +11 -4
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/protein_preparation.md +2 -2
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +1 -1
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +1 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +1 -0
- rowan_python-3.1.14/tests/test_binding_affinity.py +124 -0
- rowan_python-3.1.14/tests/test_macropka_nmr.py +93 -0
- rowan_python-3.1.14/tests/test_mango_forcefields.py +120 -0
- rowan_python-3.1.14/tests/test_md_workflow_updates.py +296 -0
- rowan_python-3.1.14/tests/test_plugin.py +30 -0
- rowan_python-3.1.14/tests/test_protein.py +39 -0
- rowan_python-3.1.14/tests/test_utils.py +121 -0
- rowan_python-3.1.12/docs/workflows/docking.md +0 -11
- rowan_python-3.1.12/docs/workflows/protein-md.md +0 -11
- rowan_python-3.1.12/examples/covalent_docking.py +0 -64
- rowan_python-3.1.12/examples/covalent_inhibitor_scan.py +0 -59
- rowan_python-3.1.12/rowan/workflows/covalent_inhibitor_scan.py +0 -130
- rowan_python-3.1.12/skills/computational-chemistry-and-biology/reference/binding_affinity.md +0 -61
- rowan_python-3.1.12/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +0 -50
- rowan_python-3.1.12/skills/computational-chemistry-and-biology/reference/mcp_execution.md +0 -15
- rowan_python-3.1.12/tests/test_utils.py +0 -54
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.agents/plugins/marketplace.json +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.codex-plugin/plugin.json +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.envrc +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.github/workflows/build-and-deploy-docs.yml +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.github/workflows/publish-skill.yml +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.github/workflows/test.yml +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.gitignore +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/.pre-commit-config.yaml +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/AGENTS.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/CLAUDE.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/GEMINI.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/LICENSE +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/README.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/api-keys.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/calculation.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/folder.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/molecule.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/project.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/protein.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/user.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/webhooks.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/api/workflow.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/images/RowanLogoLarge.png +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/images/RowanSquareLogo.png +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/images/favicon.svg +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/index.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/stylesheets/colors.css +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/admet.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/analogue-docking.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/basic-calculation.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/batch-docking.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/binding-affinity.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/bond-dissociation-energy.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/conformer-search-settings.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/conformer-search.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/descriptors.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/double-ended-ts-search.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/electronic-properties.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/fukui.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/hydrogen-bond-donor-acceptor-strength.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/interaction-energy-decomposition.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/ion-mobility.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/irc.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/membrane-permeability.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/msa.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/multistage-optimization.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/pka.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/pocket-detection.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/protein-binder-design.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/protein-cofolding.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/protein-preparation.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/rbfe-graph.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/redox-potential.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/relative-binding-free-energy-perturbation.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/scan.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/settings.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/solubility.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/spin-states.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/strain.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/docs/workflows/types.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/PROTAC_solubility.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/admet.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/analogue_docking.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/aqueous_solubility.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/basic_calculation.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/basic_calculation_from_json.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/basic_calculation_with_constraint.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/basic_calculation_with_solvent.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/batch_docking.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/batch_solubility.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/bde.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/boltz_paired_msa.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/boltz_single_msa.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/chai_paired_msa.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/chai_single_msa.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/cofolding_screen.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/colabfold_paired_msa.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/colabfold_single_msa.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/conformer_dependent_redox.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/conformers.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/conformers_screen.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/1iep_receptorH.pdb +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/Al_FCC.xyz +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/citalopram_1iep.xyz +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/ibuprofen_conformers.sdf +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/tyk2_ligands.sdf +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/tyk2_structure.pdb +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/data/workflow_example.json +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/dcd_download.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/descriptors.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/docking.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/docking_screen.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/electronic_properties.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/estimate_workflow.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/fukui_index.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/hydrogen_bond_basicity.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/ion_mobility.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/irc.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/logp.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/macropka.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/membrane_permeability.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/multistage_optimization.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/optimization.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/pdb_download.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/periodic_dft.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/phenol_pka.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/pka.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/pocket_detection.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/pose_analysis_md.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/project_scoped_api_key.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/protein_binder_design.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/protein_cofolding.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/protein_cofolding_with_constraints.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/protein_cofolding_with_templates.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/protein_md.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/protein_preparation.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/rbfe_graph.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/rbfe_resubmit.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/redox_potential.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/relative_binding_free_energy_perturbation.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/resubmit_with_perturbations.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/retrieve_workflow.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/scan.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/spin_states.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/strain.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/tautomer.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/template.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/examples/webhook.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/mkdocs.yml +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/api_keys.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/calculation.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/config.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/constants.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/folder.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/molecule.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/project.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/py.typed +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/types.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/user.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/admet.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/analogue_docking.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/basic_calculation.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/batch_docking.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/conformer_search.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/constants.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/descriptors.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/double_ended_ts_search.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/electronic_properties.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/fukui.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/ion_mobility.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/irc.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/logp.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/membrane_permeability.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/multistage_optimization.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/pka.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/pocket_detection.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/protein_binder_design.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/protein_cofolding.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/protein_preparation.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/rbfe_graph.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/redox_potential.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/scan.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/solubility.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/spin_states.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/rowan/workflows/strain.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/logp.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/python_sdk.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
- {rowan_python-3.1.12 → rowan_python-3.1.14}/tests/test_workflow_submission.py +0 -0
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
"name": "computational-chemistry-and-biology",
|
|
11
11
|
"source": "./skills/computational-chemistry-and-biology",
|
|
12
12
|
"description": "Run computational chemistry and structural biology calculations through Rowan MCP tools or rowan-python",
|
|
13
|
-
"
|
|
14
|
-
"strict": false
|
|
13
|
+
"strict": true
|
|
15
14
|
}
|
|
16
15
|
]
|
|
17
16
|
}
|
|
@@ -39,7 +39,7 @@ jobs:
|
|
|
39
39
|
- name: Build package
|
|
40
40
|
run: python -m build
|
|
41
41
|
- name: Publish package
|
|
42
|
-
uses: pypa/gh-action-pypi-publish@
|
|
42
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
43
43
|
with:
|
|
44
44
|
user: __token__
|
|
45
45
|
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: rowan-python
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.14
|
|
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.257
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
|
|
17
17
|
# Rowan Python Library
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
## Covalent docking
|
|
7
|
+
|
|
8
|
+
Set both covalent atom indices on `GninaSettings` to form a bond between a known ligand atom and
|
|
9
|
+
protein atom. Covalent gnina docking requires `scoring_function="vina"`.
|
|
10
|
+
|
|
11
|
+
Prepare the protein first, then resolve the reactive protein atom from the prepared structure.
|
|
12
|
+
Protein preparation can change atom ordering and residue numbering.
|
|
13
|
+
|
|
14
|
+
Supply the ligand in its expected post-reaction, covalently bound topology; gnina does not infer the
|
|
15
|
+
reaction. For a Michael acceptor `C=CC(=O)NR`, use the hydrogen-capped product `CCC(=O)NR` and
|
|
16
|
+
select the terminal β-carbon as the covalent ligand atom.
|
|
17
|
+
|
|
18
|
+
```python
|
|
19
|
+
prepared_protein = preparation_workflow.result().get_prepared_protein()
|
|
20
|
+
reactive_protein_atom_index = prepared_protein.get_atom_index(
|
|
21
|
+
chain="A", residue=reactive_residue, atom="SG"
|
|
22
|
+
)
|
|
23
|
+
settings = rowan.GninaSettings(
|
|
24
|
+
scoring_function="vina",
|
|
25
|
+
covalent_ligand_atom_index=reactive_ligand_atom_index,
|
|
26
|
+
covalent_protein_atom_index=reactive_protein_atom_index,
|
|
27
|
+
)
|
|
28
|
+
workflow = rowan.submit_docking_workflow(
|
|
29
|
+
prepared_protein.uuid,
|
|
30
|
+
pocket=[center, size],
|
|
31
|
+
initial_molecule=ligand,
|
|
32
|
+
docking_settings=settings,
|
|
33
|
+
)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Both indices are zero-based all-atom indices, including hydrogens. See
|
|
37
|
+
`examples/covalent_docking.py` for a complete TG2 example.
|
|
38
|
+
|
|
39
|
+
PoseBusters validation is skipped for covalent poses. Their `posebusters_valid` value is `None`,
|
|
40
|
+
meaning not evaluated rather than failed; do not use it to reject covalent poses.
|
|
41
|
+
|
|
42
|
+
::: rowan.workflows.docking
|
|
43
|
+
handler: python
|
|
44
|
+
options:
|
|
45
|
+
show_source: false
|
|
46
|
+
show_root_heading: false
|
|
47
|
+
show_root_toc_entry: false
|
|
48
|
+
members_order: source
|
|
49
|
+
group_by_category: true
|
|
50
|
+
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):
|
|
25
|
+
if score is None:
|
|
26
|
+
print(f"{name}: scoring failed")
|
|
27
|
+
continue
|
|
24
28
|
print(f"{name}: {score.binding_affinity:.2f} kcal/mol (strain: {score.strain})")
|
|
@@ -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")
|