rowan-python 2.1.10__tar.gz → 2.1.12__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.
Files changed (67) hide show
  1. rowan_python-2.1.12/.github/workflows/build-and-deploy-docs.yml +42 -0
  2. {rowan_python-2.1.10 → rowan_python-2.1.12}/PKG-INFO +2 -2
  3. rowan_python-2.1.12/examples/admet.py +12 -0
  4. rowan_python-2.1.12/examples/membrane_permeability.py +12 -0
  5. {rowan_python-2.1.10 → rowan_python-2.1.12}/pixi.lock +18 -18
  6. {rowan_python-2.1.10 → rowan_python-2.1.12}/pyproject.toml +2 -2
  7. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/folder.py +2 -1
  8. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/workflow.py +75 -5
  9. {rowan_python-2.1.10 → rowan_python-2.1.12}/.envrc +0 -0
  10. {rowan_python-2.1.10 → rowan_python-2.1.12}/.github/workflows/python-publish.yml +0 -0
  11. {rowan_python-2.1.10 → rowan_python-2.1.12}/.github/workflows/test.yml +0 -0
  12. {rowan_python-2.1.10 → rowan_python-2.1.12}/.gitignore +0 -0
  13. {rowan_python-2.1.10 → rowan_python-2.1.12}/.pre-commit-config.yaml +0 -0
  14. {rowan_python-2.1.10 → rowan_python-2.1.12}/LICENSE +0 -0
  15. {rowan_python-2.1.10 → rowan_python-2.1.12}/README.md +0 -0
  16. {rowan_python-2.1.10 → rowan_python-2.1.12}/docs/images/deciduous-tree-favicon.png +0 -0
  17. {rowan_python-2.1.10 → rowan_python-2.1.12}/docs/index.md +0 -0
  18. {rowan_python-2.1.10 → rowan_python-2.1.12}/docs/rowan_rdkit.md +0 -0
  19. {rowan_python-2.1.10 → rowan_python-2.1.12}/docs/stylesheets/colors.css +0 -0
  20. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/PROTAC_solubility.py +0 -0
  21. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/aqueous_solubility.py +0 -0
  22. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/basic_calculation.py +0 -0
  23. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/basic_calculation_from_json.py +0 -0
  24. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/basic_calculation_with_constraint.py +0 -0
  25. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/basic_calculation_with_solvent.py +0 -0
  26. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/batch_docking.py +0 -0
  27. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/bde.py +0 -0
  28. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/boltz_paired_msa.py +0 -0
  29. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/boltz_single_msa.py +0 -0
  30. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/chai_paired_msa.py +0 -0
  31. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/chai_single_msa.py +0 -0
  32. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/cofolding_screen.py +0 -0
  33. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/colabfold_paired_msa.py +0 -0
  34. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/colabfold_single_msa.py +0 -0
  35. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/conformer_dependent_redox.py +0 -0
  36. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/conformers.py +0 -0
  37. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/data/workflow_example.json +0 -0
  38. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/dcd_download.py +0 -0
  39. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/docking_screen.py +0 -0
  40. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/double_ended_ts_search.py +0 -0
  41. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/fukui_index.py +0 -0
  42. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/ion_mobility.py +0 -0
  43. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/irc.py +0 -0
  44. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/macropka.py +0 -0
  45. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/multistage_opt.py +0 -0
  46. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/nmr.py +0 -0
  47. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/optimization.py +0 -0
  48. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/pdb_download.py +0 -0
  49. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/phenol_pka.py +0 -0
  50. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/pka.py +0 -0
  51. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/pose_analysis_md.py +0 -0
  52. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/protein_cofolding.py +0 -0
  53. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/redox_potential.py +0 -0
  54. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/scan.py +0 -0
  55. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/strain.py +0 -0
  56. {rowan_python-2.1.10 → rowan_python-2.1.12}/examples/tautomer.py +0 -0
  57. {rowan_python-2.1.10 → rowan_python-2.1.12}/mkdocs.yml +0 -0
  58. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/__init__.py +0 -0
  59. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/constants.py +0 -0
  60. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/project.py +0 -0
  61. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/protein.py +0 -0
  62. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/py.typed +0 -0
  63. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/rowan_rdkit/__init__.py +0 -0
  64. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/rowan_rdkit/chem_utils.py +0 -0
  65. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/user.py +0 -0
  66. {rowan_python-2.1.10 → rowan_python-2.1.12}/rowan/utils.py +0 -0
  67. {rowan_python-2.1.10 → rowan_python-2.1.12}/tests/test_macropka_loop.py +0 -0
@@ -0,0 +1,42 @@
1
+ name: Build & Deploy Rowan Python Docs
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build-and-deploy-docs:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout repository
16
+ uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+ ref: main
20
+
21
+ - name: Install Pixi
22
+ uses: prefix-dev/setup-pixi@v0.9.1
23
+ with:
24
+ pixi-version: "latest"
25
+ activate-environment: true
26
+
27
+ - name: Build MkDocs site
28
+ run: pixi run mkdocs-build
29
+
30
+ - name: Install SSH Key
31
+ uses: shimataro/ssh-key-action@v2
32
+ with:
33
+ key: ${{ secrets.DOCS_SSH_KEY }}
34
+ known_hosts: "unnecessary"
35
+
36
+ - name: Add server to known_hosts
37
+ run: ssh-keyscan -H ${{ secrets.DOCS_IP }} >> ~/.ssh/known_hosts
38
+
39
+ - name: Deploy with rsync
40
+ run: |
41
+ rsync -avz --delete ./ \
42
+ ${{ secrets.DOCS_USERNAME }}@${{ secrets.DOCS_IP }}:{{ secrets.DOCS_TARGET_DIR }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-python
3
- Version: 2.1.10
3
+ Version: 2.1.12
4
4
  Summary: Rowan Python Library
5
5
  Project-URL: Homepage, https://github.com/rowansci/rowan-client
6
6
  Project-URL: Bug Tracker, https://github.com/rowansci/rowan-client/issues
@@ -11,7 +11,7 @@ Requires-Dist: httpx
11
11
  Requires-Dist: nest-asyncio
12
12
  Requires-Dist: rdkit
13
13
  Requires-Dist: setuptools
14
- Requires-Dist: stjames>=0.0.128
14
+ Requires-Dist: stjames>=0.0.137
15
15
  Description-Content-Type: text/markdown
16
16
 
17
17
  # Rowan Python Library
@@ -0,0 +1,12 @@
1
+ import rowan
2
+
3
+ # rowan.api_key = ""
4
+
5
+ oseltamivir_SMILES = "C1CCOC(=O)C1=C[C@@H](OC(CC)CC)[C@H](NC(C)=O)[C@@H]([NH3+])C1CCC1"
6
+
7
+ result = rowan.submit_admet_workflow(
8
+ initial_smiles=oseltamivir_SMILES,
9
+ name="Oseltamivir ADMET",
10
+ )
11
+
12
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -0,0 +1,12 @@
1
+ import rowan
2
+
3
+ # rowan.api_key = ""
4
+
5
+ oseltamivir_SMILES = "C1CCOC(=O)C1=C[C@@H](OC(CC)CC)[C@H](NC(C)=O)[C@@H]([NH3+])C1CCC1"
6
+
7
+ result = rowan.submit_membrane_permeability_workflow(
8
+ initial_smiles=oseltamivir_SMILES,
9
+ name="Oseltamivir Membrane Permeability",
10
+ )
11
+
12
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -51,7 +51,7 @@ environments:
51
51
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
52
52
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
53
53
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
54
- - pypi: https://files.pythonhosted.org/packages/1a/a1/72ac8a3015cd55b4c14e882507adcd61957426fb0a60688ae1f824f4cdef/stjames-0.0.128-py3-none-any.whl
54
+ - pypi: https://files.pythonhosted.org/packages/99/0c/d3f6549fcb16cb9fc3ef5740125ae13c966f05d0aa81fdc447472e95c35b/stjames-0.0.137-py3-none-any.whl
55
55
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
56
56
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
57
57
  - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
@@ -92,7 +92,7 @@ environments:
92
92
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
93
93
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
94
94
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
95
- - pypi: https://files.pythonhosted.org/packages/1a/a1/72ac8a3015cd55b4c14e882507adcd61957426fb0a60688ae1f824f4cdef/stjames-0.0.128-py3-none-any.whl
95
+ - pypi: https://files.pythonhosted.org/packages/99/0c/d3f6549fcb16cb9fc3ef5740125ae13c966f05d0aa81fdc447472e95c35b/stjames-0.0.137-py3-none-any.whl
96
96
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
97
97
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
98
98
  - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
@@ -140,7 +140,7 @@ environments:
140
140
  - pypi: https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
141
141
  - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
142
142
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
143
- - pypi: https://files.pythonhosted.org/packages/20/1d/784b87270784b0b88e4beec9d028e8d58f73ae248032579c63ad2ac6f69a/coverage-7.11.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
143
+ - pypi: https://files.pythonhosted.org/packages/d9/1d/9529d9bd44049b6b05bb319c03a3a7e4b0a8a802d28fa348ad407e10706d/coverage-7.12.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
144
144
  - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl
145
145
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
146
146
  - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
@@ -205,7 +205,7 @@ environments:
205
205
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
206
206
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
207
207
  - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
208
- - pypi: https://files.pythonhosted.org/packages/1a/a1/72ac8a3015cd55b4c14e882507adcd61957426fb0a60688ae1f824f4cdef/stjames-0.0.128-py3-none-any.whl
208
+ - pypi: https://files.pythonhosted.org/packages/99/0c/d3f6549fcb16cb9fc3ef5740125ae13c966f05d0aa81fdc447472e95c35b/stjames-0.0.137-py3-none-any.whl
209
209
  - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
210
210
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
211
211
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
@@ -242,7 +242,7 @@ environments:
242
242
  - pypi: https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl
243
243
  - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
244
244
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
245
- - pypi: https://files.pythonhosted.org/packages/28/76/1079547f9d46f9c7c7d0dad35b6873c98bc5aa721eeabceafabd722cd5e7/coverage-7.11.3-cp314-cp314-macosx_11_0_arm64.whl
245
+ - pypi: https://files.pythonhosted.org/packages/1f/c1/ce3e525d223350c6ec16b9be8a057623f54226ef7f4c2fee361ebb6a02b8/coverage-7.12.0-cp314-cp314-macosx_11_0_arm64.whl
246
246
  - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl
247
247
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
248
248
  - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
@@ -307,7 +307,7 @@ environments:
307
307
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
308
308
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
309
309
  - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
310
- - pypi: https://files.pythonhosted.org/packages/1a/a1/72ac8a3015cd55b4c14e882507adcd61957426fb0a60688ae1f824f4cdef/stjames-0.0.128-py3-none-any.whl
310
+ - pypi: https://files.pythonhosted.org/packages/99/0c/d3f6549fcb16cb9fc3ef5740125ae13c966f05d0aa81fdc447472e95c35b/stjames-0.0.137-py3-none-any.whl
311
311
  - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
312
312
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
313
313
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
@@ -451,17 +451,17 @@ packages:
451
451
  version: 0.4.6
452
452
  sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
453
453
  requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*'
454
- - pypi: https://files.pythonhosted.org/packages/20/1d/784b87270784b0b88e4beec9d028e8d58f73ae248032579c63ad2ac6f69a/coverage-7.11.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
454
+ - pypi: https://files.pythonhosted.org/packages/1f/c1/ce3e525d223350c6ec16b9be8a057623f54226ef7f4c2fee361ebb6a02b8/coverage-7.12.0-cp314-cp314-macosx_11_0_arm64.whl
455
455
  name: coverage
456
- version: 7.11.3
457
- sha256: 9061a3e3c92b27fd8036dafa26f25d95695b6aa2e4514ab16a254f297e664f83
456
+ version: 7.12.0
457
+ sha256: 8787b0f982e020adb732b9f051f3e49dd5054cebbc3f3432061278512a2b1360
458
458
  requires_dist:
459
459
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
460
460
  requires_python: '>=3.10'
461
- - pypi: https://files.pythonhosted.org/packages/28/76/1079547f9d46f9c7c7d0dad35b6873c98bc5aa721eeabceafabd722cd5e7/coverage-7.11.3-cp314-cp314-macosx_11_0_arm64.whl
461
+ - pypi: https://files.pythonhosted.org/packages/d9/1d/9529d9bd44049b6b05bb319c03a3a7e4b0a8a802d28fa348ad407e10706d/coverage-7.12.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
462
462
  name: coverage
463
- version: 7.11.3
464
- sha256: fe3425dc6021f906c6325d3c415e048e7cdb955505a94f1eb774dafc779ba203
463
+ version: 7.12.0
464
+ sha256: fdba9f15849534594f60b47c9a30bc70409b54947319a7c4fd0e8e3d8d2f355d
465
465
  requires_dist:
466
466
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
467
467
  requires_python: '>=3.10'
@@ -1548,11 +1548,11 @@ packages:
1548
1548
  requires_python: '>=3.9'
1549
1549
  - pypi: ./
1550
1550
  name: rowan-python
1551
- version: 2.1.10
1552
- sha256: 1ba305d3b9b98cce45fe2c3ab1d0925bc9b7fac2aa16c664cc827dd2d9e502e9
1551
+ version: 2.1.11
1552
+ sha256: 17d8beaef39332f342c634e38512ea7b8be7db261e3e6e43ef173dec0582925e
1553
1553
  requires_dist:
1554
1554
  - httpx
1555
- - stjames>=0.0.128
1555
+ - stjames>=0.0.137
1556
1556
  - setuptools
1557
1557
  - rdkit
1558
1558
  - nest-asyncio
@@ -1648,10 +1648,10 @@ packages:
1648
1648
  - pygments ; extra == 'tests'
1649
1649
  - littleutils ; extra == 'tests'
1650
1650
  - cython ; extra == 'tests'
1651
- - pypi: https://files.pythonhosted.org/packages/1a/a1/72ac8a3015cd55b4c14e882507adcd61957426fb0a60688ae1f824f4cdef/stjames-0.0.128-py3-none-any.whl
1651
+ - pypi: https://files.pythonhosted.org/packages/99/0c/d3f6549fcb16cb9fc3ef5740125ae13c966f05d0aa81fdc447472e95c35b/stjames-0.0.137-py3-none-any.whl
1652
1652
  name: stjames
1653
- version: 0.0.128
1654
- sha256: 2bc1f56ae4b3f4d350498ec42ec408d829da51c78f5d024cd1bc8dacbff1e982
1653
+ version: 0.0.137
1654
+ sha256: cd6f7736aeaea416891eb81c60cfb672afe60be7a99dc0b684a2ce34989d07e0
1655
1655
  requires_dist:
1656
1656
  - pydantic>=2.4
1657
1657
  - numpy
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rowan-python"
3
- version = "2.1.10"
3
+ version = "2.1.12"
4
4
  description = "Rowan Python Library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -9,7 +9,7 @@ authors = [
9
9
  ]
10
10
  dependencies = [
11
11
  "httpx",
12
- "stjames>=0.0.128",
12
+ "stjames>=0.0.137",
13
13
  "setuptools",
14
14
  "rdkit",
15
15
  "nest-asyncio",
@@ -58,7 +58,6 @@ class Folder(BaseModel):
58
58
 
59
59
  return self
60
60
 
61
-
62
61
  def update(
63
62
  self,
64
63
  name: str | None = None,
@@ -121,6 +120,7 @@ class Folder(BaseModel):
121
120
  """
122
121
  print_folder_tree(self.uuid, max_depth, show_uuids)
123
122
 
123
+
124
124
  def retrieve_folder(uuid: str) -> Folder:
125
125
  """
126
126
  Retrieves a folder from the API by UUID. Folder UUID can be found in the folder's URL.
@@ -208,6 +208,7 @@ def create_folder(
208
208
  folder_data = response.json()
209
209
  return Folder(**folder_data)
210
210
 
211
+
211
212
  def print_folder_tree(uuid: str, max_depth: int = 10, show_uuids: bool = False) -> None:
212
213
  """
213
214
  Retrieves a folder tree from the API.
@@ -43,6 +43,7 @@ class Workflow(BaseModel):
43
43
  :var max_credits: The maximum number of credits to use for the workflow.
44
44
  :var elapsed: The elapsed time of the workflow.
45
45
  :var credits_charged: The number of credits charged for the workflow.
46
+ :var logfile: The workflow's logfile.
46
47
  ...
47
48
  """
48
49
 
@@ -63,6 +64,7 @@ class Workflow(BaseModel):
63
64
  max_credits: int | None = None
64
65
  elapsed: float | None = None
65
66
  credits_charged: float
67
+ logfile: str = Field(alias="object_logfile")
66
68
 
67
69
  class Config: # noqa: D106
68
70
  validate_by_name = True
@@ -240,8 +242,9 @@ class Workflow(BaseModel):
240
242
  with open(path / f"{self.name}-msa.tar.gz", "wb") as f:
241
243
  f.write(response.content)
242
244
 
243
- def download_dcd_files(self, replicates: list[int],
244
- name: str | None = None, path: Path | None = None) -> None:
245
+ def download_dcd_files(
246
+ self, replicates: list[int], name: str | None = None, path: Path | None = None
247
+ ) -> None:
245
248
  """
246
249
  Downloads DCD trajectory files for specified replicates
247
250
 
@@ -260,9 +263,7 @@ class Workflow(BaseModel):
260
263
  path.mkdir(parents=True, exist_ok=True)
261
264
 
262
265
  with api_client() as client:
263
- response = client.post(
264
- f"/trajectory/{self.uuid}/trajectory_dcds", json=replicates
265
- )
266
+ response = client.post(f"/trajectory/{self.uuid}/trajectory_dcds", json=replicates)
266
267
  response.raise_for_status()
267
268
 
268
269
  file_path = path / f"{name or self.name}.tar.gz"
@@ -421,6 +422,7 @@ def retrieve_workflows(uuids: list[str]) -> list[Workflow]:
421
422
  response.raise_for_status()
422
423
  return [Workflow(**workflow_data) for workflow_data in response.json()]
423
424
 
425
+
424
426
  def batch_poll_status(uuids: list[str]) -> list[Workflow]:
425
427
  """
426
428
  Polls the status of a list of workflows.
@@ -1604,3 +1606,71 @@ def submit_msa_workflow(
1604
1606
  response = client.post("/workflow", json=data)
1605
1607
  response.raise_for_status()
1606
1608
  return Workflow(**response.json())
1609
+
1610
+
1611
+ def submit_admet_workflow(
1612
+ initial_smiles: str,
1613
+ name: str = "ADMET Workflow",
1614
+ folder_uuid: str | None = None,
1615
+ max_credits: int | None = None,
1616
+ ) -> Workflow:
1617
+ """
1618
+ Submits an ADMET workflow to the API.
1619
+
1620
+ :param initial_smiles: The molecule used in the workflow.
1621
+ :param name: The name of the workflow.
1622
+ :param folder_uuid: The UUID of the folder to store the workflow in.
1623
+ :param max_credits: The maximum number of credits to use for the workflow.
1624
+ :return: A Workflow object representing the submitted workflow.
1625
+ :raises requests.HTTPError: if the request to the API fails.
1626
+ """
1627
+
1628
+ workflow = stjames.ADMETWorkflow(initial_smiles=initial_smiles)
1629
+
1630
+ data = {
1631
+ "name": name,
1632
+ "folder_uuid": folder_uuid,
1633
+ "workflow_type": "admet",
1634
+ "workflow_data": workflow.model_dump(),
1635
+ "initial_smiles": initial_smiles,
1636
+ "max_credits": max_credits,
1637
+ }
1638
+
1639
+ with api_client() as client:
1640
+ response = client.post("/workflow", json=data)
1641
+ response.raise_for_status()
1642
+ return Workflow(**response.json())
1643
+
1644
+
1645
+ def submit_membrane_permeability_workflow(
1646
+ initial_smiles: str,
1647
+ name: str = "ADMET Workflow",
1648
+ folder_uuid: str | None = None,
1649
+ max_credits: int | None = None,
1650
+ ) -> Workflow:
1651
+ """
1652
+ Submits a membrane permeability workflow to the API.
1653
+
1654
+ :param initial_smiles: The molecule used in the workflow.
1655
+ :param name: The name of the workflow.
1656
+ :param folder_uuid: The UUID of the folder to store the workflow in.
1657
+ :param max_credits: The maximum number of credits to use for the workflow.
1658
+ :return: A Workflow object representing the submitted workflow.
1659
+ :raises requests.HTTPError: if the request to the API fails.
1660
+ """
1661
+
1662
+ workflow = stjames.MembranePermeabilityWorkflow(initial_smiles=initial_smiles)
1663
+
1664
+ data = {
1665
+ "name": name,
1666
+ "folder_uuid": folder_uuid,
1667
+ "workflow_type": "membrane_permeability",
1668
+ "workflow_data": workflow.model_dump(),
1669
+ "initial_smiles": initial_smiles,
1670
+ "max_credits": max_credits,
1671
+ }
1672
+
1673
+ with api_client() as client:
1674
+ response = client.post("/workflow", json=data)
1675
+ response.raise_for_status()
1676
+ return Workflow(**response.json())
File without changes
File without changes
File without changes
File without changes
File without changes