rowan-python 3.1.16__tar.gz → 3.2.0__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.2.0/.editorconfig +16 -0
- rowan_python-3.2.0/.envrc +6 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/.github/workflows/build-and-deploy-docs.yml +9 -7
- rowan_python-3.2.0/.github/workflows/python-publish.yml +51 -0
- rowan_python-3.2.0/.github/workflows/test.yml +58 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/.gitignore +4 -0
- rowan_python-3.2.0/.python-version +1 -0
- rowan_python-3.2.0/.rumdl.toml +21 -0
- rowan_python-3.2.0/GEMINI.md +3 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/PKG-INFO +20 -10
- {rowan_python-3.1.16 → rowan_python-3.2.0}/README.md +17 -8
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/index.md +11 -11
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/basic-calculation.md +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation_with_solvent.py +4 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/batch_docking.py +4 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/bde.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/boltz_paired_msa.py +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/boltz_single_msa.py +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/chai_paired_msa.py +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/chai_single_msa.py +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/cofolding_screen.py +2 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/colabfold_paired_msa.py +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/colabfold_single_msa.py +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/conformer_dependent_redox.py +2 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/conformers.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/conformers_screen.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/covalent_docking.py +2 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/covalent_inhibitor_scan.py +2 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/descriptors.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/docking.py +4 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/docking_screen.py +6 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/double_ended_ts_search.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/electronic_properties.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/hydrogen_bond_basicity.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/induced_fit_docking.py +4 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/multistage_optimization.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/optimization.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/periodic_dft.py +6 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/pka.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/pocket_detection.py +4 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/pose_analysis_md.py +6 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_binder_design.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding_with_templates.py +2 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_md.py +6 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/rbfe_resubmit.py +5 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/redox_potential.py +2 -3
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/relative_binding_free_energy_perturbation.py +4 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/resubmit_with_perturbations.py +15 -6
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/retrieve_workflow.py +5 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/scan.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/spin_states.py +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/mkdocs.yml +1 -1
- rowan_python-3.2.0/prek.toml +65 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/pyproject.toml +58 -54
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/api_keys.py +70 -58
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/calculation.py +25 -19
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/config.py +85 -64
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/folder.py +161 -113
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/molecule.py +99 -72
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/project.py +71 -50
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/protein.py +160 -115
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/user.py +47 -47
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/utils.py +20 -13
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/_molecular_dynamics.py +56 -29
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/admet.py +21 -19
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/analogue_docking.py +85 -64
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/base.py +316 -226
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/basic_calculation.py +63 -52
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/batch_docking.py +31 -26
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/bde.py +63 -48
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/binding_affinity.py +54 -50
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/conformer_search.py +113 -79
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/constants.py +5 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/covalent_inhibitor_scan.py +52 -47
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/descriptors.py +27 -22
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/docking.py +102 -83
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/double_ended_ts_search.py +42 -37
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/electronic_properties.py +34 -28
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/fukui.py +32 -27
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/hydrogen_bond_donor_acceptor_strength.py +23 -18
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/interaction_energy_decomposition.py +30 -25
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/ion_mobility.py +26 -22
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/irc.py +66 -54
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/logp.py +30 -25
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/macropka.py +32 -27
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/membrane_permeability.py +22 -17
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/msa.py +33 -24
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/multistage_optimization.py +35 -31
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/nmr.py +46 -42
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/pka.py +47 -41
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/pocket_detection.py +34 -29
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/pose_analysis_md.py +76 -72
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_binder_design.py +55 -50
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_cofolding.py +79 -74
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_md.py +80 -75
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/protein_preparation.py +44 -36
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/rbfe_graph.py +40 -34
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/redox_potential.py +25 -20
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/relative_binding_free_energy_perturbation.py +92 -73
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/scan.py +48 -41
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/solubility.py +67 -58
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/solvent_dependent_conformers.py +44 -37
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/spin_states.py +62 -54
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/strain.py +38 -31
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/tautomer_search.py +41 -36
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/basic_calculation.md +1 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/binding_affinity.md +1 -2
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/double_ended_ts_search.md +1 -1
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_binding_affinity.py +6 -6
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_cofolding_workflow_updates.py +4 -5
- rowan_python-3.2.0/tests/test_conformer_search.py +81 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_docking_workflow.py +10 -8
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_docking_workflow_updates.py +3 -4
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_macropka_nmr.py +3 -3
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_mango_forcefields.py +7 -5
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_md_workflow_updates.py +9 -12
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_solvent_dependent_conformers.py +3 -3
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_tautomer_search.py +3 -3
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_utils.py +9 -7
- rowan_python-3.2.0/tests/test_workflow_results.py +66 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_workflow_submission.py +5 -6
- rowan_python-3.2.0/uv.lock +1386 -0
- rowan_python-3.1.16/.agents/plugins/marketplace.json +0 -20
- rowan_python-3.1.16/.envrc +0 -4
- rowan_python-3.1.16/.github/workflows/python-publish.yml +0 -45
- rowan_python-3.1.16/.github/workflows/test.yml +0 -34
- rowan_python-3.1.16/.pre-commit-config.yaml +0 -36
- rowan_python-3.1.16/AGENTS.md +0 -132
- rowan_python-3.1.16/CLAUDE.md +0 -1
- rowan_python-3.1.16/GEMINI.md +0 -1
- rowan_python-3.1.16/pixi.lock +0 -1996
- {rowan_python-3.1.16 → rowan_python-3.2.0}/.claude-plugin/marketplace.json +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/.codex-plugin/plugin.json +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/.github/workflows/publish-skill.yml +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/LICENSE +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/api-keys.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/calculation.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/folder.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/molecule.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/project.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/protein.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/user.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/webhooks.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/api/workflow.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/images/RowanLogoLarge.png +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/images/RowanSquareLogo.png +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/images/favicon.svg +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/stylesheets/colors.css +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/admet.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/analogue-docking.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/batch-docking.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/binding-affinity.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/bond-dissociation-energy.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/conformer-search-settings.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/conformer-search.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/covalent-inhibitor-scan.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/descriptors.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/docking.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/double-ended-ts-search.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/electronic-properties.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/fukui.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/hydrogen-bond-donor-acceptor-strength.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/interaction-energy-decomposition.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/ion-mobility.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/irc.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/logp.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/macropka.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/membrane-permeability.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/msa.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/multistage-optimization.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/nmr.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/pka.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/pocket-detection.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/pose-analysis-md.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-binder-design.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-cofolding.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-md.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/protein-preparation.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/rbfe-graph.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/redox-potential.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/relative-binding-free-energy-perturbation.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/scan.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/settings.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/solubility.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/solvent-dependent-conformers.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/spin-states.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/strain.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/tautomer-search.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/docs/workflows/types.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/PROTAC_solubility.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/admet.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/analogue_docking.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/aqueous_solubility.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation_from_json.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/basic_calculation_with_constraint.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/batch_solubility.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/binding_affinity.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/1iep_receptorH.pdb +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/Al_FCC.xyz +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/citalopram_1iep.xyz +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/ibuprofen_conformers.sdf +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/tyk2_ligands.sdf +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/tyk2_structure.pdb +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/data/workflow_example.json +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/dcd_download.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/estimate_workflow.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/fukui_index.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/interaction_energy_decomposition.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/ion_mobility.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/irc.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/logp.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/macropka.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/membrane_permeability.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/nmr.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/phenol_pka.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/project_scoped_api_key.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding_modified_inputs.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_cofolding_with_constraints.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_file_download.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/protein_preparation.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/rbfe_graph.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/solvent_dependent_conformers.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/strain.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/tautomer.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/template.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/temporary_workflow_sharing.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/examples/webhook.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/__init__.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/constants.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/py.typed +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/types.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/rowan/workflows/__init__.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/.claude-plugin/plugin.json +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/SKILL.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/admet.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/analogue_docking.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/batch_docking.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/bde.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/conformer_search.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/covalent_inhibitor_scan.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/descriptors.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/docking.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/electronic_properties.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/folders_and_projects.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/fukui.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/hydrogen_bond_donor_acceptor_strength.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/interaction_energy_decomposition.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/ion_mobility.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/irc.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/logp.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/macropka.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/mcp_execution.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/membrane_permeability.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/msa.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/multistage_optimization.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/nmr.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pka.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pocket_detection.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/pose_analysis_md.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_binder_design.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_cofolding.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_md.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/protein_preparation.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/python_sdk.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/rbfe_graph.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/redox_potential.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/relative_binding_free_energy_perturbation.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/scan.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/solubility.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/solvent_dependent_conformers.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/spin_states.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/strain.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/tautomer_search.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/reference/webhooks.md +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/skills/computational-chemistry-and-biology/scripts/check_env.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_plugin.py +0 -0
- {rowan_python-3.1.16 → rowan_python-3.2.0}/tests/test_protein.py +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# http://editorconfig.org/#file-format-details
|
|
2
|
+
root = true
|
|
3
|
+
|
|
4
|
+
[*]
|
|
5
|
+
charset = utf-8
|
|
6
|
+
end_of_line = lf
|
|
7
|
+
indent_size = 4
|
|
8
|
+
indent_style = space
|
|
9
|
+
insert_final_newline = true
|
|
10
|
+
trim_trailing_whitespace = true
|
|
11
|
+
|
|
12
|
+
[*.md]
|
|
13
|
+
trim_trailing_whitespace = false
|
|
14
|
+
|
|
15
|
+
[Makefile]
|
|
16
|
+
indent_style = tab
|
|
@@ -14,19 +14,21 @@ jobs:
|
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
16
|
- name: Checkout repository
|
|
17
|
-
uses: actions/checkout@
|
|
17
|
+
uses: actions/checkout@v6
|
|
18
18
|
with:
|
|
19
19
|
fetch-depth: 0
|
|
20
20
|
ref: master
|
|
21
21
|
|
|
22
|
-
- name: Install
|
|
23
|
-
uses:
|
|
22
|
+
- name: Install uv
|
|
23
|
+
uses: astral-sh/setup-uv@v10.1.0
|
|
24
24
|
with:
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
enable-cache: true
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: uv sync --locked --no-dev --group docs
|
|
27
29
|
|
|
28
30
|
- name: Build MkDocs site
|
|
29
|
-
run:
|
|
31
|
+
run: uv run --no-sync mkdocs build --clean
|
|
30
32
|
|
|
31
33
|
- name: Install SSH Key
|
|
32
34
|
uses: shimataro/ssh-key-action@v2
|
|
@@ -39,5 +41,5 @@ jobs:
|
|
|
39
41
|
|
|
40
42
|
- name: Deploy with rsync
|
|
41
43
|
run: |
|
|
42
|
-
rsync -avz --delete
|
|
44
|
+
rsync -avz --delete site/ \
|
|
43
45
|
${{ secrets.DOCS_USERNAME }}@${{ secrets.DOCS_IP }}:${{ secrets.DOCS_TARGET_DIR }}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}
|
|
13
|
+
cancel-in-progress: false
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
run:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
# Enable after configuring the repository environment.
|
|
19
|
+
# environment:
|
|
20
|
+
# name: pypi
|
|
21
|
+
steps:
|
|
22
|
+
- name: Skip if running with act
|
|
23
|
+
if: ${{ env.ACT == 'true' }}
|
|
24
|
+
run: exit 1
|
|
25
|
+
|
|
26
|
+
- name: Checkout
|
|
27
|
+
uses: actions/checkout@v6
|
|
28
|
+
|
|
29
|
+
- name: Install uv
|
|
30
|
+
uses: astral-sh/setup-uv@v10.1.0
|
|
31
|
+
|
|
32
|
+
- name: Install Python
|
|
33
|
+
run: uv python install
|
|
34
|
+
|
|
35
|
+
- name: Build
|
|
36
|
+
run: uv build
|
|
37
|
+
|
|
38
|
+
- name: Smoke test (wheel)
|
|
39
|
+
run: >-
|
|
40
|
+
uv run --isolated --no-project --directory "$RUNNER_TEMP"
|
|
41
|
+
--with "$GITHUB_WORKSPACE"/dist/*.whl python -c "import rowan"
|
|
42
|
+
|
|
43
|
+
- name: Smoke test (source distribution)
|
|
44
|
+
run: >-
|
|
45
|
+
uv run --isolated --no-project --directory "$RUNNER_TEMP"
|
|
46
|
+
--with "$GITHUB_WORKSPACE"/dist/*.tar.gz python -c "import rowan"
|
|
47
|
+
|
|
48
|
+
- name: Publish
|
|
49
|
+
env:
|
|
50
|
+
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
51
|
+
run: uv publish
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request: {}
|
|
5
|
+
push:
|
|
6
|
+
branches: master
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
test:
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
python-version: ["3.12", "3.14"]
|
|
20
|
+
os: [ubuntu-latest]
|
|
21
|
+
|
|
22
|
+
name: Python ${{ matrix.os }} ${{ matrix.python-version }}
|
|
23
|
+
runs-on: ${{ matrix.os }}
|
|
24
|
+
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v6
|
|
27
|
+
|
|
28
|
+
- name: Install the latest version of uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7.6
|
|
30
|
+
with:
|
|
31
|
+
enable-cache: true
|
|
32
|
+
|
|
33
|
+
- name: Install Python
|
|
34
|
+
run: uv python install ${{ matrix.python-version }}
|
|
35
|
+
|
|
36
|
+
- name: Install dependencies
|
|
37
|
+
run: uv sync --locked
|
|
38
|
+
|
|
39
|
+
- name: Check TOML/YAML/whitespace
|
|
40
|
+
run: |
|
|
41
|
+
uv run prek run --all-files --show-diff-on-failure --color=always \
|
|
42
|
+
check-toml check-yaml trailing-whitespace end-of-file-fixer
|
|
43
|
+
|
|
44
|
+
- run: uv run rumdl fmt --check --diff .
|
|
45
|
+
- run: uv run rumdl check .
|
|
46
|
+
|
|
47
|
+
- run: uv run ruff format --check --diff .
|
|
48
|
+
- run: uv run ruff check .
|
|
49
|
+
|
|
50
|
+
- run: uv run ty check
|
|
51
|
+
|
|
52
|
+
- run: uv run pytest --cov --cov-report=xml
|
|
53
|
+
|
|
54
|
+
# Enable after configuring Codecov and its repository token.
|
|
55
|
+
# - name: Upload coverage to Codecov
|
|
56
|
+
# uses: codecov/codecov-action@v5
|
|
57
|
+
# with:
|
|
58
|
+
# token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
.env
|
|
3
3
|
# Variant env files (.env.test, .env.single-tenant, ...); .envrc is tracked for direnv
|
|
4
4
|
.env.*
|
|
5
|
+
.app.json
|
|
5
6
|
|
|
6
7
|
# macOS
|
|
7
8
|
.DS_Store
|
|
@@ -208,3 +209,6 @@ cyp/
|
|
|
208
209
|
msa_directory/
|
|
209
210
|
|
|
210
211
|
notes.md
|
|
212
|
+
|
|
213
|
+
# Machine-specific agent settings
|
|
214
|
+
.claude/settings.local.json
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[global]
|
|
2
|
+
|
|
3
|
+
disable = [
|
|
4
|
+
"MD013", # line length
|
|
5
|
+
"MD033", # no inline HTML
|
|
6
|
+
]
|
|
7
|
+
|
|
8
|
+
exclude = [
|
|
9
|
+
".git",
|
|
10
|
+
"node_modules",
|
|
11
|
+
"vendor",
|
|
12
|
+
"dist",
|
|
13
|
+
"build",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
respect-gitignore = true
|
|
17
|
+
|
|
18
|
+
[per-file-ignores]
|
|
19
|
+
# Skill files start with frontmatter, not headings
|
|
20
|
+
".claude/**/*.md" = ["MD041"]
|
|
21
|
+
".agents/**/*.md" = ["MD041"]
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rowan-python
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
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
|
|
7
|
-
Author-email: Corin Wagen <corin@rowansci.com>
|
|
7
|
+
Author-email: Corin Wagen <corin@rowansci.com>, Eli Mann <eli@rowansci.com>
|
|
8
|
+
License-Expression: MIT
|
|
8
9
|
License-File: LICENSE
|
|
9
10
|
Requires-Python: >=3.12
|
|
10
11
|
Requires-Dist: httpx
|
|
@@ -17,16 +18,25 @@ Description-Content-Type: text/markdown
|
|
|
17
18
|
# Rowan Python Library
|
|
18
19
|
|
|
19
20
|
[](https://pypi.python.org/pypi/rowan-python)
|
|
20
|
-
[](https://docs.astral.sh/uv/)
|
|
21
22
|
[](https://github.com/charliermarsh/ruff)
|
|
22
23
|
[](https://pypi.python.org/pypi/rowan-python/)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
[](LICENSE)
|
|
25
|
+
[](https://github.com/rowansci/rowan-python/actions)
|
|
26
|
+
[](https://github.com/astral-sh/ty)
|
|
27
|
+
<!-- Enable these badges with the corresponding tooling/services.
|
|
28
|
+
[](https://rumdl.dev)
|
|
29
|
+
[](https://codecov.io/gh/rowansci/rowan-python)
|
|
30
|
+
-->
|
|
31
|
+
|
|
32
|
+
The Rowan Python library is the Python SDK for running Rowan computational chemistry workflows
|
|
33
|
+
programmatically. Use it from scripts and applications to submit calculations, monitor workflow
|
|
34
|
+
progress, retrieve results, and manage molecules, proteins, folders, and projects through the
|
|
35
|
+
Rowan API.
|
|
26
36
|
|
|
27
37
|
## Documentation
|
|
28
38
|
|
|
29
|
-
|
|
39
|
+
Read the [Rowan Python API documentation](https://docs.rowansci.com/python-api).
|
|
30
40
|
|
|
31
41
|
## Agent skill
|
|
32
42
|
|
|
@@ -34,6 +44,9 @@ Ships with a [computational chemistry and biology skill](skills/computational-ch
|
|
|
34
44
|
that helps coding agents choose and run Rowan workflows through either Rowan MCP tools or the
|
|
35
45
|
Rowan Python SDK.
|
|
36
46
|
|
|
47
|
+
When using Rowan MCP tools, always read and follow this skill and its workflow references first.
|
|
48
|
+
The skill provides the scientific guidance and execution requirements for MCP workflows.
|
|
49
|
+
|
|
37
50
|
### Claude Code
|
|
38
51
|
|
|
39
52
|
```bash
|
|
@@ -74,9 +87,6 @@ and extract it into your agent's skills directory.
|
|
|
74
87
|
To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
|
|
75
88
|
If running the examples in a cloned version of the repository, you can add your api key to a local `.env` file, which will automatically be loaded into the environment by direnv (if installed).
|
|
76
89
|
|
|
77
|
-
|
|
78
90
|
## Issues
|
|
79
91
|
|
|
80
92
|
To report issues, please use the "Issues" tab above.
|
|
81
|
-
|
|
82
|
-
*Corin Wagen, 2023*
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
# Rowan Python Library
|
|
2
2
|
|
|
3
3
|
[](https://pypi.python.org/pypi/rowan-python)
|
|
4
|
-
[](https://docs.astral.sh/uv/)
|
|
5
5
|
[](https://github.com/charliermarsh/ruff)
|
|
6
6
|
[](https://pypi.python.org/pypi/rowan-python/)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://github.com/rowansci/rowan-python/actions)
|
|
9
|
+
[](https://github.com/astral-sh/ty)
|
|
10
|
+
<!-- Enable these badges with the corresponding tooling/services.
|
|
11
|
+
[](https://rumdl.dev)
|
|
12
|
+
[](https://codecov.io/gh/rowansci/rowan-python)
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
The Rowan Python library is the Python SDK for running Rowan computational chemistry workflows
|
|
16
|
+
programmatically. Use it from scripts and applications to submit calculations, monitor workflow
|
|
17
|
+
progress, retrieve results, and manage molecules, proteins, folders, and projects through the
|
|
18
|
+
Rowan API.
|
|
10
19
|
|
|
11
20
|
## Documentation
|
|
12
21
|
|
|
13
|
-
|
|
22
|
+
Read the [Rowan Python API documentation](https://docs.rowansci.com/python-api).
|
|
14
23
|
|
|
15
24
|
## Agent skill
|
|
16
25
|
|
|
@@ -18,6 +27,9 @@ Ships with a [computational chemistry and biology skill](skills/computational-ch
|
|
|
18
27
|
that helps coding agents choose and run Rowan workflows through either Rowan MCP tools or the
|
|
19
28
|
Rowan Python SDK.
|
|
20
29
|
|
|
30
|
+
When using Rowan MCP tools, always read and follow this skill and its workflow references first.
|
|
31
|
+
The skill provides the scientific guidance and execution requirements for MCP workflows.
|
|
32
|
+
|
|
21
33
|
### Claude Code
|
|
22
34
|
|
|
23
35
|
```bash
|
|
@@ -58,9 +70,6 @@ and extract it into your agent's skills directory.
|
|
|
58
70
|
To run the examples, you will need to set your ROWAN_API_KEY environment variable or set it directly in the script.
|
|
59
71
|
If running the examples in a cloned version of the repository, you can add your api key to a local `.env` file, which will automatically be loaded into the environment by direnv (if installed).
|
|
60
72
|
|
|
61
|
-
|
|
62
73
|
## Issues
|
|
63
74
|
|
|
64
75
|
To report issues, please use the "Issues" tab above.
|
|
65
|
-
|
|
66
|
-
*Corin Wagen, 2023*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
{ width="320" }
|
|
2
|
-
|
|
3
1
|
# Rowan Python API
|
|
4
2
|
|
|
3
|
+
{ width="320" }
|
|
4
|
+
|
|
5
5
|
The `rowan` package is the official Python client for the [Rowan](https://rowansci.com) computational
|
|
6
6
|
chemistry platform. Submit workflows, poll or stream results, and manage
|
|
7
7
|
molecules, proteins, folders, and projects—all from plain Python.
|
|
@@ -10,21 +10,21 @@ molecules, proteins, folders, and projects—all from plain Python.
|
|
|
10
10
|
|
|
11
11
|
=== "pip"
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
```bash
|
|
14
|
+
pip install rowan-python
|
|
15
|
+
```
|
|
16
16
|
|
|
17
17
|
=== "pixi"
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
```bash
|
|
20
|
+
pixi add --pypi rowan-python
|
|
21
|
+
```
|
|
22
22
|
|
|
23
23
|
=== "uv"
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
```bash
|
|
26
|
+
uv add rowan-python
|
|
27
|
+
```
|
|
28
28
|
|
|
29
29
|
## Authentication
|
|
30
30
|
|
|
@@ -16,7 +16,7 @@ workflow = rowan.submit_basic_calculation_workflow(
|
|
|
16
16
|
)
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Pass an [`OptimizationSettings`](settings.md
|
|
19
|
+
Pass an [`OptimizationSettings`](settings.md) object or
|
|
20
20
|
an equivalent dictionary to `opt_settings`. `optimize_cell` defaults to `False`; set it to `True`
|
|
21
21
|
only when optimizing a periodic cell.
|
|
22
22
|
|
|
@@ -18,6 +18,8 @@ def compute_energy_with_solvent_correction(
|
|
|
18
18
|
|
|
19
19
|
print(f"View workflow privately at: https://labs.rowansci.com/calculation/{opt_workflow.uuid}")
|
|
20
20
|
opt_result = opt_workflow.result()
|
|
21
|
+
if opt_result.molecule is None:
|
|
22
|
+
raise ValueError("Optimization returned no molecule")
|
|
21
23
|
|
|
22
24
|
sp_workflow = rowan.submit_basic_calculation_workflow(
|
|
23
25
|
initial_molecule=opt_result.molecule,
|
|
@@ -31,6 +33,8 @@ def compute_energy_with_solvent_correction(
|
|
|
31
33
|
print(f"View workflow privately at: https://labs.rowansci.com/calculation/{sp_workflow.uuid}")
|
|
32
34
|
sp_result = sp_workflow.result()
|
|
33
35
|
|
|
36
|
+
if sp_result.energy is None:
|
|
37
|
+
raise ValueError("Single-point calculation returned no energy")
|
|
34
38
|
return sp_result.energy
|
|
35
39
|
|
|
36
40
|
|
|
@@ -18,7 +18,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
|
18
18
|
name="Prepare CDK2",
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
21
|
-
|
|
21
|
+
preparation_result = preparation_workflow.result()
|
|
22
|
+
prepared_protein_uuid = preparation_result.prepared_protein_uuid
|
|
23
|
+
if prepared_protein_uuid is None:
|
|
24
|
+
raise ValueError("Protein preparation returned no prepared protein")
|
|
22
25
|
|
|
23
26
|
workflow = rowan.submit_batch_docking_workflow(
|
|
24
27
|
ligands,
|
|
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
14
14
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
15
15
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
16
16
|
],
|
|
17
|
-
output_formats=
|
|
17
|
+
output_formats={rowan.MSAFormat.BOLTZ},
|
|
18
18
|
name="Boltz Paired MSA Example",
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
13
13
|
initial_protein_sequences=[
|
|
14
14
|
"HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
|
|
15
15
|
],
|
|
16
|
-
output_formats=
|
|
16
|
+
output_formats={rowan.MSAFormat.BOLTZ},
|
|
17
17
|
name="Boltz MSA Example",
|
|
18
18
|
folder=folder,
|
|
19
19
|
)
|
|
@@ -25,7 +25,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
25
25
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
26
26
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
27
27
|
],
|
|
28
|
-
output_formats=
|
|
28
|
+
output_formats={rowan.MSAFormat.CHAI},
|
|
29
29
|
name="CHAI Paired MSA Example",
|
|
30
30
|
folder=folder,
|
|
31
31
|
)
|
|
@@ -22,7 +22,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
22
22
|
initial_protein_sequences=[
|
|
23
23
|
"HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
|
|
24
24
|
],
|
|
25
|
-
output_formats=
|
|
25
|
+
output_formats={rowan.MSAFormat.CHAI},
|
|
26
26
|
name="CHAI MSA Example",
|
|
27
27
|
folder=folder,
|
|
28
28
|
)
|
|
@@ -34,6 +34,8 @@ print(f"View folder privately at: https://labs.rowansci.com/folder/{folder.uuid}
|
|
|
34
34
|
workflow_results = [(w, w.result()) for w in workflows]
|
|
35
35
|
|
|
36
36
|
for workflow, result in workflow_results:
|
|
37
|
+
if result.affinity_score is None:
|
|
38
|
+
raise ValueError("Cofolding returned no affinity score")
|
|
37
39
|
results[workflow.name] = result.affinity_score.probability_binary
|
|
38
40
|
|
|
39
41
|
print(results)
|
|
@@ -14,7 +14,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
14
14
|
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
|
|
15
15
|
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
|
|
16
16
|
],
|
|
17
|
-
output_formats=
|
|
17
|
+
output_formats={rowan.MSAFormat.COLABFOLD},
|
|
18
18
|
name="Colabfold Paired MSA Example",
|
|
19
19
|
folder=folder,
|
|
20
20
|
)
|
|
@@ -13,7 +13,7 @@ msa_workflow = rowan.submit_msa_workflow(
|
|
|
13
13
|
initial_protein_sequences=[
|
|
14
14
|
"HPETLVKVKDAEDQLGARVGYIELDLNSGKILESFRPEERFPMMSTFKVLLCGAVLSRIDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPVAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGERGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIKHW"
|
|
15
15
|
],
|
|
16
|
-
output_formats=
|
|
16
|
+
output_formats={rowan.MSAFormat.COLABFOLD},
|
|
17
17
|
name="Colabfold MSA Example",
|
|
18
18
|
folder=folder,
|
|
19
19
|
)
|
|
@@ -15,6 +15,8 @@ redox_potential_workflows = []
|
|
|
15
15
|
|
|
16
16
|
for conformer in csearch_result.conformer_uuids[:10]:
|
|
17
17
|
uuid = conformer[0]
|
|
18
|
+
if uuid is None:
|
|
19
|
+
raise ValueError("Conformer has no calculation UUID")
|
|
18
20
|
molecule = rowan.retrieve_calculation_molecules(uuid)[0]
|
|
19
21
|
rowan_molecule = rowan.Molecule.model_validate(molecule)
|
|
20
22
|
redox_potential_workflows.append(
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Rank a conformer ensemble you already have, using the Rowan API (screen-only mode).
|
|
1
|
+
"""Rank a conformer ensemble you already have, using the Rowan API (screen-only mode).
|
|
3
2
|
|
|
4
3
|
Conformer search normally *generates* conformers and then optimizes, deduplicates,
|
|
5
4
|
and ranks them. If you already have 3D geometries -- from another tool (RDKit,
|
|
@@ -13,7 +13,8 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
|
13
13
|
name="Prepare TG2",
|
|
14
14
|
folder=folder,
|
|
15
15
|
)
|
|
16
|
-
|
|
16
|
+
preparation_result = preparation_workflow.result()
|
|
17
|
+
protein = preparation_result.get_prepared_protein()
|
|
17
18
|
|
|
18
19
|
center = [-1.079, -3.081, 18.122]
|
|
19
20
|
size = [22.22, 14.08, 21.74]
|
|
@@ -16,7 +16,8 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
|
16
16
|
name="Prepare BTK inhibitor complex",
|
|
17
17
|
folder=folder,
|
|
18
18
|
)
|
|
19
|
-
|
|
19
|
+
preparation_result = preparation_workflow.result()
|
|
20
|
+
protein = preparation_result.get_prepared_protein()
|
|
20
21
|
|
|
21
22
|
# Protein preparation normalizes 4YHF's residue numbering: Cys481 becomes residue 101,
|
|
22
23
|
# while the retained 4C9 ligand remains residue 701.
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Calculate molecular descriptors using the Rowan API.
|
|
1
|
+
"""Calculate molecular descriptors using the Rowan API.
|
|
3
2
|
|
|
4
3
|
Computes molecular descriptors including COSMO descriptors (surface area,
|
|
5
4
|
screening charge, dielectric energy, polar surface area) in water by default.
|
|
@@ -14,7 +14,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
|
14
14
|
name="Prepare ABL1",
|
|
15
15
|
folder=folder,
|
|
16
16
|
)
|
|
17
|
-
|
|
17
|
+
preparation_result = preparation_workflow.result()
|
|
18
|
+
prepared_protein_uuid = preparation_result.prepared_protein_uuid
|
|
19
|
+
if prepared_protein_uuid is None:
|
|
20
|
+
raise ValueError("Protein preparation returned no prepared protein")
|
|
18
21
|
|
|
19
22
|
# Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
|
|
20
23
|
# For a co-crystal structure, extract these from the bound ligand's position.
|
|
@@ -24,7 +24,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
|
24
24
|
name="Prepare CDK2",
|
|
25
25
|
folder=folder,
|
|
26
26
|
)
|
|
27
|
-
|
|
27
|
+
preparation_result = preparation_workflow.result()
|
|
28
|
+
prepared_protein_uuid = preparation_result.prepared_protein_uuid
|
|
29
|
+
if prepared_protein_uuid is None:
|
|
30
|
+
raise ValueError("Protein preparation returned no prepared protein")
|
|
28
31
|
|
|
29
32
|
for ligand in ligands:
|
|
30
33
|
workflow = rowan.submit_docking_workflow(
|
|
@@ -50,6 +53,8 @@ for workflow, result in workflow_results:
|
|
|
50
53
|
|
|
51
54
|
sorted_scores = sorted(result.scores, key=lambda s: s.score)
|
|
52
55
|
for score in sorted_scores:
|
|
56
|
+
if score.pose is None:
|
|
57
|
+
continue
|
|
53
58
|
pose_energy = rowan.retrieve_calculation_molecules(score.pose)[0]["energy"]
|
|
54
59
|
if pose_energy is None:
|
|
55
60
|
continue
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Calculate electronic properties (orbitals, density, ESP) using the Rowan API.
|
|
1
|
+
"""Calculate electronic properties (orbitals, density, ESP) using the Rowan API.
|
|
3
2
|
|
|
4
3
|
This workflow computes molecular orbitals, electron density, electrostatic potential,
|
|
5
4
|
atom-centered charges, bond orders, and multipole moments.
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Calculate hydrogen bond acceptor/donor strength using the Rowan API.
|
|
1
|
+
"""Calculate hydrogen bond acceptor/donor strength using the Rowan API.
|
|
3
2
|
|
|
4
3
|
This workflow predicts pKBHX values of hydrogen-bond acceptors and pKa values
|
|
5
4
|
of hydrogen-bond donors using neural network potentials and r2SCAN-3c.
|
|
@@ -15,7 +15,10 @@ preparation_workflow = rowan.submit_protein_preparation_workflow(
|
|
|
15
15
|
name="Prepare ABL1",
|
|
16
16
|
folder=folder,
|
|
17
17
|
)
|
|
18
|
-
|
|
18
|
+
preparation_result = preparation_workflow.result()
|
|
19
|
+
prepared_protein_uuid = preparation_result.prepared_protein_uuid
|
|
20
|
+
if prepared_protein_uuid is None:
|
|
21
|
+
raise ValueError("Protein preparation returned no prepared protein")
|
|
19
22
|
|
|
20
23
|
# Pocket is [[center_x, center_y, center_z], [size_x, size_y, size_z]] in Å.
|
|
21
24
|
center = [44.59, 79.75, 39.59]
|