rowan-python 2.1.2__tar.gz → 2.1.3__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 (48) hide show
  1. {rowan_python-2.1.2 → rowan_python-2.1.3}/PKG-INFO +1 -1
  2. rowan_python-2.1.3/examples/basic_calculation.py +21 -0
  3. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/basic_calculation_with_solvent.py +0 -4
  4. rowan_python-2.1.3/examples/fukui_index.py +16 -0
  5. rowan_python-2.1.3/examples/redox_potential.py +21 -0
  6. rowan_python-2.1.3/examples/tautomer.py +15 -0
  7. {rowan_python-2.1.2 → rowan_python-2.1.3}/pixi.lock +46 -46
  8. {rowan_python-2.1.2 → rowan_python-2.1.3}/pyproject.toml +1 -1
  9. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/workflow.py +109 -88
  10. {rowan_python-2.1.2 → rowan_python-2.1.3}/.envrc +0 -0
  11. {rowan_python-2.1.2 → rowan_python-2.1.3}/.github/workflows/python-publish.yml +0 -0
  12. {rowan_python-2.1.2 → rowan_python-2.1.3}/.github/workflows/test.yml +0 -0
  13. {rowan_python-2.1.2 → rowan_python-2.1.3}/.gitignore +0 -0
  14. {rowan_python-2.1.2 → rowan_python-2.1.3}/.pre-commit-config.yaml +0 -0
  15. {rowan_python-2.1.2 → rowan_python-2.1.3}/LICENSE +0 -0
  16. {rowan_python-2.1.2 → rowan_python-2.1.3}/README.md +0 -0
  17. {rowan_python-2.1.2 → rowan_python-2.1.3}/docs/images/deciduous-tree-favicon.png +0 -0
  18. {rowan_python-2.1.2 → rowan_python-2.1.3}/docs/index.md +0 -0
  19. {rowan_python-2.1.2 → rowan_python-2.1.3}/docs/rowan_rdkit.md +0 -0
  20. {rowan_python-2.1.2 → rowan_python-2.1.3}/docs/stylesheets/colors.css +0 -0
  21. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/PROTAC_solubility.py +0 -0
  22. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/basic_calculation_from_json.py +0 -0
  23. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/basic_calculation_with_constraint.py +0 -0
  24. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/bde.py +0 -0
  25. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/cofolding_screen.py +0 -0
  26. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/conformer_dependent_redox.py +0 -0
  27. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/conformers.py +0 -0
  28. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/data/workflow_example.json +0 -0
  29. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/docking_screen.py +0 -0
  30. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/irc.py +0 -0
  31. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/macropka.py +0 -0
  32. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/multistage_opt.py +0 -0
  33. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/optimization.py +0 -0
  34. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/phenol_pka.py +0 -0
  35. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/pka.py +0 -0
  36. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/protein_cofolding.py +0 -0
  37. {rowan_python-2.1.2 → rowan_python-2.1.3}/examples/scan.py +0 -0
  38. {rowan_python-2.1.2 → rowan_python-2.1.3}/mkdocs.yml +0 -0
  39. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/__init__.py +0 -0
  40. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/constants.py +0 -0
  41. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/folder.py +0 -0
  42. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/project.py +0 -0
  43. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/protein.py +0 -0
  44. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/py.typed +0 -0
  45. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/rowan_rdkit/__init__.py +0 -0
  46. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/rowan_rdkit/chem_utils.py +0 -0
  47. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/user.py +0 -0
  48. {rowan_python-2.1.2 → rowan_python-2.1.3}/rowan/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-python
3
- Version: 2.1.2
3
+ Version: 2.1.3
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
@@ -0,0 +1,21 @@
1
+ # ruff: noqa
2
+ from stjames import Molecule, Method
3
+
4
+ import rowan
5
+
6
+ # rowan.api_key = ""
7
+
8
+
9
+ result = rowan.submit_basic_calculation_workflow(
10
+ initial_molecule=Molecule.from_smiles("CC(=C)C=C"),
11
+ method=Method.OMOL25_CONSERVING_S,
12
+ tasks=["energy"],
13
+ mode="auto",
14
+ engine="omol25",
15
+ name="Isoprene Energy",
16
+ )
17
+
18
+ result.wait_for_result()
19
+ result.fetch_latest(in_place=True)
20
+
21
+ print(result)
@@ -1,8 +1,4 @@
1
1
  # ruff: noqa
2
-
3
- import os
4
- import sys
5
-
6
2
  from stjames import Molecule, Method
7
3
 
8
4
  import rowan
@@ -0,0 +1,16 @@
1
+ from stjames import Molecule
2
+
3
+ import rowan
4
+
5
+ # Set ROWAN_API_KEY environment variable to your API key or set rowan.api_key directly
6
+ # rowan.api_key = "rowan-sk..."
7
+
8
+ result = rowan.submit_fukui_workflow(
9
+ initial_molecule=Molecule.from_smiles("C1=CC=C(C=C1)C(=O)O"),
10
+ optimization_method="gfn2_xtb",
11
+ fukui_method="gfn1_xtb",
12
+ name="Benzoic Acid Fukui",
13
+ )
14
+
15
+
16
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -0,0 +1,21 @@
1
+ """
2
+ Calculate the redox potential of a molecule using the Rowan API.
3
+
4
+ See documentiation at: https://docs.rowansci.com/science/workflows/redox-potential
5
+ """
6
+
7
+ from stjames import Molecule
8
+
9
+ import rowan
10
+
11
+ # rowan.api_key = ""
12
+
13
+ result = rowan.submit_redox_potential_workflow(
14
+ initial_molecule=Molecule.from_smiles("C1=CC=C(C=C1)C(=O)O"),
15
+ mode="reckless",
16
+ name="Benzoic Acid Redox Potential",
17
+ oxidization=True,
18
+ reduction=True,
19
+ )
20
+
21
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -0,0 +1,15 @@
1
+ from stjames import Molecule
2
+
3
+ import rowan
4
+
5
+ # Set ROWAN_API_KEY environment variable to your API key or set rowan.api_key directly
6
+ # rowan.api_key = "rowan-sk..."
7
+
8
+ result = rowan.submit_tautomer_search_workflow(
9
+ initial_molecule=Molecule.from_smiles("O=C1C=CC=CN1"),
10
+ mode="reckless",
11
+ name="2-Pyridone Tautomers",
12
+ )
13
+
14
+
15
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -37,7 +37,7 @@ environments:
37
37
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
38
38
  - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
39
39
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
40
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
40
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
41
41
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
42
42
  - pypi: https://files.pythonhosted.org/packages/1d/0f/571b2c7a3833ae419fe69ff7b479a78d313581785203cc70a8db90121b9a/numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
43
43
  - pypi: https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
@@ -77,7 +77,7 @@ environments:
77
77
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
78
78
  - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
79
79
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
80
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
80
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
81
81
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
82
82
  - pypi: https://files.pythonhosted.org/packages/20/4e/c116466d22acaf4573e58421c956c6076dc526e24a6be0903219775d862e/numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl
83
83
  - pypi: https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl
@@ -131,10 +131,10 @@ environments:
131
131
  - pypi: https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
132
132
  - pypi: https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl
133
133
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
134
- - pypi: https://files.pythonhosted.org/packages/90/65/28752c3a896566ec93e0219fc4f47ff71bd2b745f51554c93e8dcb659796/coverage-7.10.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
134
+ - pypi: https://files.pythonhosted.org/packages/73/dd/508420fb47d09d904d962f123221bc249f64b5e56aa93d5f5f7603be475f/coverage-7.10.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
135
135
  - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl
136
136
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
137
- - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl
137
+ - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
138
138
  - pypi: https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl
139
139
  - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
140
140
  - pypi: https://files.pythonhosted.org/packages/aa/8c/b7cfdd8dfe48f6b09f7353323732e1a290c388bd14f216947928dc85f904/griffe-1.13.0-py3-none-any.whl
@@ -145,7 +145,7 @@ environments:
145
145
  - pypi: https://files.pythonhosted.org/packages/e7/ce/461b60a3ee109518c055953729bf9ed089a04db895d47e95444071dcdef2/identify-2.6.13-py2.py3-none-any.whl
146
146
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
147
147
  - pypi: https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl
148
- - pypi: https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl
148
+ - pypi: https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl
149
149
  - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl
150
150
  - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl
151
151
  - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl
@@ -159,8 +159,8 @@ environments:
159
159
  - pypi: https://files.pythonhosted.org/packages/22/0b/545a4f8d4f9057e77f1d99640eb09aaae40c4f9034707f25636caf716ff9/mkdocs_material-9.6.18-py3-none-any.whl
160
160
  - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
161
161
  - pypi: https://files.pythonhosted.org/packages/de/b4/3c5eac68f31e124a55d255d318c7445840fa1be55e013f507556d6481913/mkdocstrings-0.30.0-py3-none-any.whl
162
- - pypi: https://files.pythonhosted.org/packages/5d/96/7ecc71bb9f01ee20f201b2531960b401159c6730aec90ec76a1b74bc81e1/mkdocstrings_python-1.18.0-py3-none-any.whl
163
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
162
+ - pypi: https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl
163
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
164
164
  - pypi: https://files.pythonhosted.org/packages/9f/0f/478b4dce1cb4f43cf0f0d00fba3030b21ca04a01b74d1cd272a528cf446f/mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
165
165
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
166
166
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
@@ -175,7 +175,7 @@ environments:
175
175
  - pypi: https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl
176
176
  - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
177
177
  - pypi: https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl
178
- - pypi: https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl
178
+ - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
179
179
  - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl
180
180
  - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
181
181
  - pypi: https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl
@@ -190,7 +190,7 @@ environments:
190
190
  - pypi: https://files.pythonhosted.org/packages/8b/6a/c6ec8e124bc621ce0706894f877c6f57d7c9c53cbc73510ac046d40b4dc7/rdkit-2025.3.5-cp313-cp313-manylinux_2_28_x86_64.whl
191
191
  - pypi: https://files.pythonhosted.org/packages/d9/0f/90088510d4758e0ee475ae1fc7f96e7bccd0e31f24107567075482b2fe9e/rdkit_stubs-0.8-py3-none-any.whl
192
192
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
193
- - pypi: https://files.pythonhosted.org/packages/c0/1d/b4207ec35e7babaee62c462769e77457e26eb853fbdc877af29417033333/ruff-0.12.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
193
+ - pypi: https://files.pythonhosted.org/packages/80/22/3c6cef96627f89b344c933781ed38329bfb87737aa438f15da95907cbfd5/ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
194
194
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
195
195
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
196
196
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
@@ -231,10 +231,10 @@ environments:
231
231
  - pypi: https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl
232
232
  - pypi: https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl
233
233
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
234
- - pypi: https://files.pythonhosted.org/packages/25/d7/b71022408adbf040a680b8c64bf6ead3be37b553e5844f7465643979f7ca/coverage-7.10.5-cp313-cp313-macosx_11_0_arm64.whl
234
+ - pypi: https://files.pythonhosted.org/packages/eb/86/2e161b93a4f11d0ea93f9bebb6a53f113d5d6e416d7561ca41bb0a29996b/coverage-7.10.6-cp313-cp313-macosx_11_0_arm64.whl
235
235
  - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl
236
236
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
237
- - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl
237
+ - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
238
238
  - pypi: https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl
239
239
  - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
240
240
  - pypi: https://files.pythonhosted.org/packages/aa/8c/b7cfdd8dfe48f6b09f7353323732e1a290c388bd14f216947928dc85f904/griffe-1.13.0-py3-none-any.whl
@@ -245,7 +245,7 @@ environments:
245
245
  - pypi: https://files.pythonhosted.org/packages/e7/ce/461b60a3ee109518c055953729bf9ed089a04db895d47e95444071dcdef2/identify-2.6.13-py2.py3-none-any.whl
246
246
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
247
247
  - pypi: https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl
248
- - pypi: https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl
248
+ - pypi: https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl
249
249
  - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl
250
250
  - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl
251
251
  - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl
@@ -259,8 +259,8 @@ environments:
259
259
  - pypi: https://files.pythonhosted.org/packages/22/0b/545a4f8d4f9057e77f1d99640eb09aaae40c4f9034707f25636caf716ff9/mkdocs_material-9.6.18-py3-none-any.whl
260
260
  - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
261
261
  - pypi: https://files.pythonhosted.org/packages/de/b4/3c5eac68f31e124a55d255d318c7445840fa1be55e013f507556d6481913/mkdocstrings-0.30.0-py3-none-any.whl
262
- - pypi: https://files.pythonhosted.org/packages/5d/96/7ecc71bb9f01ee20f201b2531960b401159c6730aec90ec76a1b74bc81e1/mkdocstrings_python-1.18.0-py3-none-any.whl
263
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
262
+ - pypi: https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl
263
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
264
264
  - pypi: https://files.pythonhosted.org/packages/07/ac/ee93fbde9d2242657128af8c86f5d917cd2887584cf948a8e3663d0cd737/mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl
265
265
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
266
266
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
@@ -275,7 +275,7 @@ environments:
275
275
  - pypi: https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl
276
276
  - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
277
277
  - pypi: https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl
278
- - pypi: https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl
278
+ - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
279
279
  - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl
280
280
  - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
281
281
  - pypi: https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl
@@ -290,7 +290,7 @@ environments:
290
290
  - pypi: https://files.pythonhosted.org/packages/c6/1d/4cc7d00c388dde4cb4ce6ff7c4314f0f2c0e342d5b7a7b779fc12c32cf5a/rdkit-2025.3.5-cp313-cp313-macosx_11_0_arm64.whl
291
291
  - pypi: https://files.pythonhosted.org/packages/d9/0f/90088510d4758e0ee475ae1fc7f96e7bccd0e31f24107567075482b2fe9e/rdkit_stubs-0.8-py3-none-any.whl
292
292
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
293
- - pypi: https://files.pythonhosted.org/packages/d7/f1/97f509b4108d7bae16c48389f54f005b62ce86712120fd8b2d8e88a7cb49/ruff-0.12.10-py3-none-macosx_11_0_arm64.whl
293
+ - pypi: https://files.pythonhosted.org/packages/2c/0d/15b72c5fe6b1e402a543aa9d8960e0a7e19dfb079f5b0b424db48b7febab/ruff-0.12.11-py3-none-macosx_11_0_arm64.whl
294
294
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
295
295
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
296
296
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
@@ -439,17 +439,17 @@ packages:
439
439
  version: 0.4.6
440
440
  sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
441
441
  requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*'
442
- - pypi: https://files.pythonhosted.org/packages/25/d7/b71022408adbf040a680b8c64bf6ead3be37b553e5844f7465643979f7ca/coverage-7.10.5-cp313-cp313-macosx_11_0_arm64.whl
442
+ - pypi: https://files.pythonhosted.org/packages/73/dd/508420fb47d09d904d962f123221bc249f64b5e56aa93d5f5f7603be475f/coverage-7.10.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
443
443
  name: coverage
444
- version: 7.10.5
445
- sha256: 2b96bfdf7c0ea9faebce088a3ecb2382819da4fbc05c7b80040dbc428df6af44
444
+ version: 7.10.6
445
+ sha256: 0f3f56e4cb573755e96a16501a98bf211f100463d70275759e73f3cbc00d4f27
446
446
  requires_dist:
447
447
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
448
448
  requires_python: '>=3.9'
449
- - pypi: https://files.pythonhosted.org/packages/90/65/28752c3a896566ec93e0219fc4f47ff71bd2b745f51554c93e8dcb659796/coverage-7.10.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
449
+ - pypi: https://files.pythonhosted.org/packages/eb/86/2e161b93a4f11d0ea93f9bebb6a53f113d5d6e416d7561ca41bb0a29996b/coverage-7.10.6-cp313-cp313-macosx_11_0_arm64.whl
450
450
  name: coverage
451
- version: 7.10.5
452
- sha256: 8002dc6a049aac0e81ecec97abfb08c01ef0c1fbf962d0c98da3950ace89b869
451
+ version: 7.10.6
452
+ sha256: 95d91d7317cde40a1c249d6b7382750b7e6d86fad9d8eaf4fa3f8f44cf171e80
453
453
  requires_dist:
454
454
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
455
455
  requires_python: '>=3.9'
@@ -462,10 +462,10 @@ packages:
462
462
  name: distlib
463
463
  version: 0.4.0
464
464
  sha256: 9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16
465
- - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl
465
+ - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
466
466
  name: executing
467
- version: 2.2.0
468
- sha256: 11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa
467
+ version: 2.2.1
468
+ sha256: 760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017
469
469
  requires_dist:
470
470
  - asttokens>=2.1.0 ; extra == 'tests'
471
471
  - ipython ; extra == 'tests'
@@ -571,10 +571,10 @@ packages:
571
571
  version: 2.1.0
572
572
  sha256: 9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760
573
573
  requires_python: '>=3.8'
574
- - pypi: https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl
574
+ - pypi: https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl
575
575
  name: ipython
576
- version: 9.4.0
577
- sha256: 25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066
576
+ version: 9.5.0
577
+ sha256: 88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72
578
578
  requires_dist:
579
579
  - colorama ; sys_platform == 'win32'
580
580
  - decorator
@@ -600,7 +600,7 @@ packages:
600
600
  - sphinx>=1.3 ; extra == 'doc'
601
601
  - typing-extensions ; extra == 'doc'
602
602
  - pytest ; extra == 'test'
603
- - pytest-asyncio<0.22 ; extra == 'test'
603
+ - pytest-asyncio ; extra == 'test'
604
604
  - testpath ; extra == 'test'
605
605
  - packaging ; extra == 'test'
606
606
  - ipython[test] ; extra == 'test-extra'
@@ -1003,20 +1003,20 @@ packages:
1003
1003
  - mkdocstrings-python-legacy>=0.2.1 ; extra == 'python-legacy'
1004
1004
  - mkdocstrings-python>=1.16.2 ; extra == 'python'
1005
1005
  requires_python: '>=3.9'
1006
- - pypi: https://files.pythonhosted.org/packages/5d/96/7ecc71bb9f01ee20f201b2531960b401159c6730aec90ec76a1b74bc81e1/mkdocstrings_python-1.18.0-py3-none-any.whl
1006
+ - pypi: https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl
1007
1007
  name: mkdocstrings-python
1008
- version: 1.18.0
1009
- sha256: f5056d8afe9a9683ad0c59001df1ecd9668b51c19b9a6b4dc0ff02cc9b76265a
1008
+ version: 1.18.2
1009
+ sha256: 944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d
1010
1010
  requires_dist:
1011
1011
  - mkdocstrings>=0.30
1012
1012
  - mkdocs-autorefs>=1.4
1013
1013
  - griffe>=1.13
1014
1014
  - typing-extensions>=4.0 ; python_full_version < '3.11'
1015
1015
  requires_python: '>=3.9'
1016
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
1016
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
1017
1017
  name: more-itertools
1018
- version: 10.7.0
1019
- sha256: d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e
1018
+ version: 10.8.0
1019
+ sha256: 52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b
1020
1020
  requires_python: '>=3.9'
1021
1021
  - pypi: https://files.pythonhosted.org/packages/07/ac/ee93fbde9d2242657128af8c86f5d917cd2887584cf948a8e3663d0cd737/mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl
1022
1022
  name: mypy
@@ -1248,10 +1248,10 @@ packages:
1248
1248
  - pyyaml>=5.1
1249
1249
  - virtualenv>=20.10.0
1250
1250
  requires_python: '>=3.9'
1251
- - pypi: https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl
1251
+ - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
1252
1252
  name: prompt-toolkit
1253
- version: 3.0.51
1254
- sha256: 52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07
1253
+ version: 3.0.52
1254
+ sha256: 9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955
1255
1255
  requires_dist:
1256
1256
  - wcwidth
1257
1257
  requires_python: '>=3.8'
@@ -1481,8 +1481,8 @@ packages:
1481
1481
  requires_python: '>=3.9'
1482
1482
  - pypi: ./
1483
1483
  name: rowan-python
1484
- version: 2.1.2
1485
- sha256: de8a1541322c4b6721fe37f8aa52b2a8679f35670d2728089d7eee93eca9b396
1484
+ version: 2.1.3
1485
+ sha256: 42fdb4e667a0c2c279bbf99762920eda972eb32ca9f885b57dcf438815833ecc
1486
1486
  requires_dist:
1487
1487
  - httpx
1488
1488
  - stjames>=0.0.83
@@ -1491,15 +1491,15 @@ packages:
1491
1491
  - nest-asyncio
1492
1492
  requires_python: '>=3.9'
1493
1493
  editable: true
1494
- - pypi: https://files.pythonhosted.org/packages/c0/1d/b4207ec35e7babaee62c462769e77457e26eb853fbdc877af29417033333/ruff-0.12.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
1494
+ - pypi: https://files.pythonhosted.org/packages/2c/0d/15b72c5fe6b1e402a543aa9d8960e0a7e19dfb079f5b0b424db48b7febab/ruff-0.12.11-py3-none-macosx_11_0_arm64.whl
1495
1495
  name: ruff
1496
- version: 0.12.10
1497
- sha256: 1f68433c4fbc63efbfa3ba5db31727db229fa4e61000f452c540474b03de52a9
1496
+ version: 0.12.11
1497
+ sha256: d69fb9d4937aa19adb2e9f058bc4fbfe986c2040acb1a4a9747734834eaa0bfd
1498
1498
  requires_python: '>=3.7'
1499
- - pypi: https://files.pythonhosted.org/packages/d7/f1/97f509b4108d7bae16c48389f54f005b62ce86712120fd8b2d8e88a7cb49/ruff-0.12.10-py3-none-macosx_11_0_arm64.whl
1499
+ - pypi: https://files.pythonhosted.org/packages/80/22/3c6cef96627f89b344c933781ed38329bfb87737aa438f15da95907cbfd5/ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
1500
1500
  name: ruff
1501
- version: 0.12.10
1502
- sha256: d59e58586829f8e4a9920788f6efba97a13d1fa320b047814e8afede381c6839
1501
+ version: 0.12.11
1502
+ sha256: 4fc58f9266d62c6eccc75261a665f26b4ef64840887fc6cbc552ce5b29f96cc8
1503
1503
  requires_python: '>=3.7'
1504
1504
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
1505
1505
  name: setuptools
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rowan-python"
3
- version = "2.1.2"
3
+ version = "2.1.3"
4
4
  description = "Rowan Python Library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -387,20 +387,21 @@ def submit_basic_calculation_workflow(
387
387
  if isinstance(method, str):
388
388
  method = stjames.Method(method)
389
389
 
390
- workflow_data = {
391
- "settings": {
392
- "method": method.name,
393
- "tasks": tasks,
394
- "mode": mode,
395
- },
396
- "engine": engine,
397
- }
390
+ workflow = stjames.BasicCalculationWorkflow(
391
+ initial_molecule=initial_molecule,
392
+ settings=stjames.Settings(
393
+ method=method,
394
+ tasks=tasks,
395
+ mode=mode,
396
+ ),
397
+ engine=engine,
398
+ )
398
399
 
399
400
  data = {
400
401
  "name": name,
401
402
  "folder_uuid": folder_uuid,
402
403
  "workflow_type": "basic_calculation",
403
- "workflow_data": workflow_data,
404
+ "workflow_data": workflow.model_dump(),
404
405
  "initial_molecule": initial_molecule,
405
406
  "max_credits": max_credits,
406
407
  }
@@ -466,19 +467,20 @@ def submit_conformer_search_workflow(
466
467
  optimization_settings=[opt_settings],
467
468
  )
468
469
 
469
- workflow_data = {
470
- "multistage_opt_settings": msos.model_dump(),
471
- "conf_gen_mode": conf_gen_mode,
472
- "mso_mode": "manual",
473
- "solvent": solvent,
474
- "transition_state": transition_state,
475
- }
470
+ workflow = stjames.ConformerSearchWorkflow(
471
+ initial_molecule=initial_molecule,
472
+ multistage_opt_settings=msos,
473
+ conf_gen_mode=conf_gen_mode,
474
+ mso_mode="manual",
475
+ solvent=solvent,
476
+ transition_state=transition_state,
477
+ )
476
478
 
477
479
  data = {
478
480
  "name": name,
479
481
  "folder_uuid": folder_uuid,
480
482
  "workflow_type": "conformer_search",
481
- "workflow_data": workflow_data,
483
+ "workflow_data": workflow.model_dump(),
482
484
  "initial_molecule": initial_molecule,
483
485
  "max_credits": max_credits,
484
486
  }
@@ -516,13 +518,17 @@ def submit_solubility_workflow(
516
518
  if not temperatures:
517
519
  temperatures = [273.15, 298.15, 323.15, 348.15, 373.15]
518
520
 
519
- workflow_data = {"solvents": solvents, "temperatures": temperatures}
521
+ workflow = stjames.SolubilityWorkflow(
522
+ initial_smiles=initial_smiles,
523
+ solvents=solvents,
524
+ temperatures=temperatures,
525
+ )
520
526
 
521
527
  data = {
522
528
  "name": name,
523
529
  "folder_uuid": folder_uuid,
524
530
  "workflow_type": "solubility",
525
- "workflow_data": workflow_data,
531
+ "workflow_data": workflow.model_dump(),
526
532
  "initial_smiles": initial_smiles,
527
533
  "max_credits": max_credits,
528
534
  }
@@ -567,18 +573,19 @@ def submit_pka_workflow(
567
573
  protonate_elements = protonate_elements or [7]
568
574
  deprotonate_elements = deprotonate_elements or [7, 8, 16]
569
575
 
570
- workflow_data = {
571
- "pka_range": pka_range,
572
- "deprotonate_elements": deprotonate_elements,
573
- "protonate_elements": protonate_elements,
574
- "mode": mode,
575
- }
576
+ workflow = stjames.pKaWorkflow(
577
+ initial_molecule=initial_molecule,
578
+ pka_range=pka_range,
579
+ deprotonate_elements=deprotonate_elements,
580
+ protonate_elements=protonate_elements,
581
+ mode=mode,
582
+ )
576
583
 
577
584
  data = {
578
585
  "name": name,
579
586
  "folder_uuid": folder_uuid,
580
587
  "workflow_type": "pka",
581
- "workflow_data": workflow_data,
588
+ "workflow_data": workflow.model_dump(),
582
589
  "initial_molecule": initial_molecule,
583
590
  "max_credits": max_credits,
584
591
  }
@@ -618,17 +625,18 @@ def submit_redox_potential_workflow(
618
625
  elif isinstance(initial_molecule, RdkitMol):
619
626
  initial_molecule = StJamesMolecule.from_rdkit(initial_molecule, cid=0)
620
627
 
621
- workflow_data = {
622
- "oxidation": oxidization,
623
- "reduction": reduction,
624
- "mode": mode,
625
- }
628
+ workflow = stjames.RedoxPotentialWorkflow(
629
+ initial_molecule=initial_molecule,
630
+ oxidation=oxidization,
631
+ reduction=reduction,
632
+ mode=mode,
633
+ )
626
634
 
627
635
  data = {
628
636
  "name": name,
629
637
  "folder_uuid": folder_uuid,
630
638
  "workflow_type": "redox_potential",
631
- "workflow_data": workflow_data,
639
+ "workflow_data": workflow.model_dump(),
632
640
  "initial_molecule": initial_molecule,
633
641
  "max_credits": max_credits,
634
642
  }
@@ -669,6 +677,12 @@ def submit_fukui_workflow(
669
677
  optimization_settings = stjames.Settings(method=optimization_method)
670
678
  fukui_settings = stjames.Settings(method=fukui_method, solvent_settings=solvent_settings)
671
679
 
680
+ stjames.FukuiIndexWorkflow(
681
+ initial_molecule=initial_molecule,
682
+ optimization_settings=optimization_settings,
683
+ fukui_settings=fukui_settings,
684
+ )
685
+
672
686
  workflow_data = {
673
687
  "opt_settings": optimization_settings.model_dump(),
674
688
  "opt_engine": stjames.Method(optimization_method).default_engine(),
@@ -716,15 +730,16 @@ def submit_tautomer_search_workflow(
716
730
  elif isinstance(initial_molecule, RdkitMol):
717
731
  initial_molecule = StJamesMolecule.from_rdkit(initial_molecule, cid=0)
718
732
 
719
- workflow_data = {
720
- "mode": mode,
721
- }
733
+ workflow = stjames.TautomerWorkflow(
734
+ initial_molecule=initial_molecule,
735
+ mode=mode,
736
+ )
722
737
 
723
738
  data = {
724
739
  "name": name,
725
740
  "folder_uuid": folder_uuid,
726
741
  "workflow_type": "tautomers",
727
- "workflow_data": workflow_data,
742
+ "workflow_data": workflow.model_dump(),
728
743
  "initial_molecule": initial_molecule,
729
744
  "max_credits": max_credits,
730
745
  }
@@ -805,24 +820,27 @@ def submit_scan_workflow(
805
820
  if isinstance(calculation_method, str):
806
821
  calculation_method = stjames.Method(calculation_method)
807
822
 
808
- workflow_data = {
809
- "wavefront_propagation": wavefront_propagation,
810
- "scan_settings": scan_settings,
811
- "calc_engine": calculation_engine,
812
- "calc_settings": {
813
- "method": calculation_method.name,
814
- "corrections": [],
815
- "tasks": ["optimize"],
816
- "mode": "auto",
817
- "opt_settings": {"constraints": []},
818
- },
819
- }
823
+ calc_settings = stjames.Settings(
824
+ method=calculation_method,
825
+ tasks=["optimize"],
826
+ corrections=[],
827
+ mode="auto",
828
+ opt_settings={"constraints": []},
829
+ )
830
+
831
+ workflow = stjames.ScanWorkflow(
832
+ initial_molecule=initial_molecule,
833
+ scan_settings=scan_settings,
834
+ calc_settings=calc_settings,
835
+ calc_engine=calculation_engine,
836
+ wavefront_propagation=wavefront_propagation,
837
+ )
820
838
 
821
839
  data = {
822
840
  "name": name,
823
841
  "folder_uuid": folder_uuid,
824
842
  "workflow_type": "scan",
825
- "workflow_data": workflow_data,
843
+ "workflow_data": workflow.model_dump(),
826
844
  "initial_molecule": initial_molecule,
827
845
  "max_credits": max_credits,
828
846
  }
@@ -860,19 +878,20 @@ def submit_macropka_workflow(
860
878
  :raises requests.HTTPError: if the request to the API fails.
861
879
  """
862
880
 
863
- workflow_data = {
864
- "min_pH": min_pH,
865
- "max_pH": max_pH,
866
- "min_charge": min_charge,
867
- "max_charge": max_charge,
868
- "compute_solvation_energy": compute_solvation_energy,
869
- }
881
+ workflow = stjames.MacropKaWorkflow(
882
+ initial_smiles=initial_smiles,
883
+ min_pH=min_pH,
884
+ max_pH=max_pH,
885
+ min_charge=min_charge,
886
+ max_charge=max_charge,
887
+ compute_solvation_energy=compute_solvation_energy,
888
+ )
870
889
 
871
890
  data = {
872
891
  "name": name,
873
892
  "folder_uuid": folder_uuid,
874
893
  "workflow_type": "macropka",
875
- "workflow_data": workflow_data,
894
+ "workflow_data": workflow.model_dump(),
876
895
  "initial_smiles": initial_smiles,
877
896
  "max_credits": max_credits,
878
897
  }
@@ -920,25 +939,25 @@ def submit_irc_workflow(
920
939
  if isinstance(method, str):
921
940
  method = stjames.Method(method)
922
941
 
923
- workflow_data = {
924
- "settings": {
925
- "method": method.name,
926
- "tasks": [],
927
- "corrections": [],
928
- "mode": "auto",
929
- },
930
- "engine": engine,
931
- "preopt": preopt,
932
- "step_size": step_size,
933
- "max_irc_steps": max_irc_steps,
934
- "mode": "manual",
935
- }
936
-
942
+ workflow = stjames.IRCWorkflow(
943
+ initial_molecule=initial_molecule,
944
+ settings=stjames.Settings(
945
+ method=method,
946
+ tasks=[],
947
+ corrections=[],
948
+ mode="auto",
949
+ ),
950
+ engine=engine,
951
+ preopt=preopt,
952
+ step_size=step_size,
953
+ max_irc_steps=max_irc_steps,
954
+ mode="manual",
955
+ )
937
956
  data = {
938
957
  "name": name,
939
958
  "folder_uuid": folder_uuid,
940
959
  "workflow_type": "irc",
941
- "workflow_data": workflow_data,
960
+ "workflow_data": workflow.model_dump(),
942
961
  "initial_molecule": initial_molecule,
943
962
  "max_credits": max_credits,
944
963
  }
@@ -975,19 +994,20 @@ def submit_protein_cofolding_workflow(
975
994
  :return: A Workflow object representing the submitted workflow.
976
995
  :raises requests.HTTPError: if the request to the API fails.
977
996
  """ # noqa: E501
978
- workflow_data = {
979
- "use_msa_server": use_msa_server,
980
- "use_potentials": use_potentials,
981
- "model": model,
982
- "ligand_binding_affinity_index": ligand_binding_affinity_index,
983
- "initial_smiles_list": initial_smiles_list,
984
- "initial_protein_sequences": initial_protein_sequences,
985
- }
997
+
998
+ workflow = stjames.ProteinCofoldingWorkflow(
999
+ use_msa_server=use_msa_server,
1000
+ use_potentials=use_potentials,
1001
+ model=model,
1002
+ ligand_binding_affinity_index=ligand_binding_affinity_index,
1003
+ initial_smiles_list=initial_smiles_list,
1004
+ initial_protein_sequences=initial_protein_sequences,
1005
+ )
986
1006
  data = {
987
1007
  "name": name,
988
1008
  "folder_uuid": folder_uuid,
989
1009
  "workflow_type": "protein_cofolding",
990
- "workflow_data": workflow_data,
1010
+ "workflow_data": workflow.model_dump(),
991
1011
  "max_credits": max_credits,
992
1012
  }
993
1013
 
@@ -1029,18 +1049,19 @@ def submit_docking_workflow(
1029
1049
  if isinstance(protein, Protein):
1030
1050
  protein = protein.uuid
1031
1051
 
1032
- workflow_data = {
1033
- "target_uuid": protein,
1034
- "pocket": pocket,
1035
- "do_csearch": do_csearch,
1036
- "do_optimization": do_optimization,
1037
- }
1052
+ workflow = stjames.DockingWorkflow(
1053
+ initial_molecule=initial_molecule,
1054
+ target_uuid=protein,
1055
+ pocket=pocket,
1056
+ do_csearch=do_csearch,
1057
+ do_optimization=do_optimization,
1058
+ )
1038
1059
 
1039
1060
  data = {
1040
1061
  "name": name,
1041
1062
  "folder_uuid": folder_uuid,
1042
1063
  "workflow_type": "docking",
1043
- "workflow_data": workflow_data,
1064
+ "workflow_data": workflow.model_dump(),
1044
1065
  "initial_molecule": initial_molecule,
1045
1066
  "max_credits": max_credits,
1046
1067
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes