rowan-python 1.1.13__tar.gz → 2.0.1__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 (51) hide show
  1. {rowan_python-1.1.13 → rowan_python-2.0.1}/PKG-INFO +1 -1
  2. rowan_python-2.0.1/docs/images/deciduous-tree-favicon.png +0 -0
  3. rowan_python-2.0.1/docs/index.md +49 -0
  4. rowan_python-2.0.1/docs/rowan_rdkit.md +8 -0
  5. rowan_python-2.0.1/docs/stylesheets/colors.css +6 -0
  6. rowan_python-2.0.1/examples/PROTAC_solubility.py +52 -0
  7. rowan_python-2.0.1/examples/basic_calculation_from_json.py +20 -0
  8. rowan_python-2.0.1/examples/basic_calculation_with_constraint.py +33 -0
  9. rowan_python-2.0.1/examples/basic_calculation_with_solvent.py +55 -0
  10. {rowan_python-1.1.13 → rowan_python-2.0.1}/examples/bde.py +10 -7
  11. rowan_python-2.0.1/examples/cofolding_screen.py +131 -0
  12. rowan_python-2.0.1/examples/conformer_dependent_redox.py +37 -0
  13. {rowan_python-1.1.13 → rowan_python-2.0.1}/examples/conformers.py +3 -8
  14. rowan_python-2.0.1/examples/data/workflow_example.json +190 -0
  15. rowan_python-2.0.1/examples/docking_screen.py +157 -0
  16. rowan_python-2.0.1/examples/irc.py +24 -0
  17. rowan_python-2.0.1/examples/macropka.py +13 -0
  18. rowan_python-2.0.1/examples/multistage_opt.py +18 -0
  19. {rowan_python-1.1.13 → rowan_python-2.0.1}/examples/optimization.py +6 -12
  20. rowan_python-2.0.1/examples/phenol_pka.py +36 -0
  21. {rowan_python-1.1.13 → rowan_python-2.0.1}/examples/pka.py +4 -12
  22. rowan_python-2.0.1/examples/protein_cofolding.py +17 -0
  23. {rowan_python-1.1.13 → rowan_python-2.0.1}/examples/scan.py +5 -11
  24. rowan_python-2.0.1/mkdocs.yml +35 -0
  25. {rowan_python-1.1.13 → rowan_python-2.0.1}/pixi.lock +351 -33
  26. {rowan_python-1.1.13 → rowan_python-2.0.1}/pyproject.toml +6 -1
  27. rowan_python-2.0.1/rowan/__init__.py +8 -0
  28. rowan_python-2.0.1/rowan/folder.py +212 -0
  29. rowan_python-2.0.1/rowan/protein.py +215 -0
  30. {rowan_python-1.1.13 → rowan_python-2.0.1}/rowan/rowan_rdkit/chem_utils.py +156 -110
  31. rowan_python-2.0.1/rowan/user.py +137 -0
  32. {rowan_python-1.1.13 → rowan_python-2.0.1}/rowan/utils.py +15 -0
  33. rowan_python-2.0.1/rowan/workflow.py +1051 -0
  34. rowan_python-1.1.13/examples/multistage_opt.py +0 -21
  35. rowan_python-1.1.13/rowan/__init__.py +0 -12
  36. rowan_python-1.1.13/rowan/calculation.py +0 -14
  37. rowan_python-1.1.13/rowan/client.py +0 -55
  38. rowan_python-1.1.13/rowan/folder.py +0 -95
  39. rowan_python-1.1.13/rowan/protein.py +0 -63
  40. rowan_python-1.1.13/rowan/protein_cofolding.py +0 -36
  41. rowan_python-1.1.13/rowan/workflow.py +0 -148
  42. {rowan_python-1.1.13 → rowan_python-2.0.1}/.envrc +0 -0
  43. {rowan_python-1.1.13 → rowan_python-2.0.1}/.github/workflows/python-publish.yml +0 -0
  44. {rowan_python-1.1.13 → rowan_python-2.0.1}/.github/workflows/test.yml +0 -0
  45. {rowan_python-1.1.13 → rowan_python-2.0.1}/.gitignore +0 -0
  46. {rowan_python-1.1.13 → rowan_python-2.0.1}/.pre-commit-config.yaml +0 -0
  47. {rowan_python-1.1.13 → rowan_python-2.0.1}/LICENSE +0 -0
  48. {rowan_python-1.1.13 → rowan_python-2.0.1}/README.md +0 -0
  49. {rowan_python-1.1.13 → rowan_python-2.0.1}/rowan/constants.py +0 -0
  50. {rowan_python-1.1.13 → rowan_python-2.0.1}/rowan/py.typed +0 -0
  51. {rowan_python-1.1.13 → rowan_python-2.0.1}/rowan/rowan_rdkit/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-python
3
- Version: 1.1.13
3
+ Version: 2.0.1
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,49 @@
1
+ ## Workflow Class and Functions
2
+ ::: rowan.workflow
3
+ handler: python
4
+ options:
5
+ show_source: false
6
+ show_root_heading: false
7
+ show_root_toc_entry: false
8
+ members_order: source # show items in the order they appear in code
9
+ group_by_category: true # adds “Classes”, “Functions”, … headings -->
10
+
11
+ ## Folder Class and Functions
12
+ ::: rowan.folder
13
+ handler: python
14
+ options:
15
+ show_source: false
16
+ show_root_heading: false
17
+ show_root_toc_entry: false
18
+ members_order: source # show items in the order they appear in code
19
+ group_by_category: true # adds “Classes”, “Functions”, … headings -->
20
+
21
+ ## User Class and Functions
22
+ ::: rowan.user
23
+ handler: python
24
+ options:
25
+ show_source: false
26
+ show_root_heading: false
27
+ show_root_toc_entry: false
28
+ members_order: source # show items in the order they appear in code
29
+ group_by_category: true # adds “Classes”, “Functions”, … headings -->
30
+
31
+ ## Protein Class and Functions
32
+ ::: rowan.protein
33
+ handler: python
34
+ options:
35
+ show_source: false
36
+ show_root_heading: false
37
+ show_root_toc_entry: false
38
+ members_order: source # show items in the order they appear in code
39
+ group_by_category: true # adds “Classes”, “Functions”, … headings -->
40
+
41
+ ## Utilities
42
+ ::: rowan.utils
43
+ handler: python
44
+ options:
45
+ show_source: false
46
+ show_root_heading: false
47
+ show_root_toc_entry: false
48
+ members_order: source # show items in the order they appear in code
49
+ group_by_category: true # adds “Classes”, “Functions”, … headings -->
@@ -0,0 +1,8 @@
1
+ ::: rowan.rowan_rdkit
2
+ handler: python
3
+ options:
4
+ show_source: false
5
+ show_root_heading: false
6
+ show_root_toc_entry: false
7
+ members_order: source # show items in the order they appear in code
8
+ group_by_category: true # adds “Classes”, “Functions”, … headings -->
@@ -0,0 +1,6 @@
1
+ /* Light-mode brand green */
2
+ :root > * {
3
+ --md-primary-fg-color: #16a34a;
4
+ --md-primary-fg-color--light: #c3d3e1;
5
+ --md-primary-fg-color--dark: #74967E;
6
+ }
@@ -0,0 +1,52 @@
1
+ # ruff: noqa: E501
2
+
3
+ import rowan
4
+
5
+ PROTACs = {
6
+ 4564: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCCCN3C=C(CCCOC(=O)NCC4=CC=C(C(=O)NC5=CC=CC=C5N)C=C4)N=N3)C(C)(C)C)C=C2)SC=N1",
7
+ 2438: "CC(=O)N[C@H](C(=O)N1C[C@H](O)C[C@H]1C(=O)NCC1=CC=C(C2=C(C)N=CS2)C=C1OCCCCCCCCCCCC(=O)NC1=CC=C(C(=O)NC2=CC=CC=C2N)C=C1)C(C)(C)C",
8
+ 727: "NC1=CC=CC=C1NC(=O)C1=CC=C(NC(=O)CCCCCNC(=O)COC2=CC=CC3=C2C(=O)N(C2CCC(=O)NC2=O)C3=O)C=C1",
9
+ 728: "NC1=CC=CC=C1NC(=O)C1=CC=C(NC(=O)CCCCCCCCCCCNC(=O)COC2=CC=CC3=C2C(=O)N(C2CCC(=O)NC2=O)C3=O)C=C1",
10
+ 729: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
11
+ 730: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
12
+ 1843: "O=C(CCCCCCNC(=O)C1=CC=C(NC(=O)COCCOCCNC(=O)COC2=CC=CC3=C2C(=O)N(C2CCC(=O)NC2=O)C3=O)C=C1)NO",
13
+ 2110: "CC(C)C[C@H](NC(=O)[C@@H](O)[C@H](N)CC1=CC=CC=C1)C(=O)NCCCCCC(=O)NC1=CC=C(NC(=O)CCCCCCC(=O)NO)C=C1",
14
+ 2111: "CC(C)C[C@H](NC(=O)[C@@H](O)[C@H](N)CC1=CC=CC=C1)C(=O)NCCOCCOCCNC(=O)C1=CC=CC(C(=O)NO)=C1",
15
+ 2112: "CC(C)C[C@H](NC(=O)[C@@H](O)[C@H](N)CC1=CC=CC=C1)C(=O)NCCOCCOCC(=O)NC1=CC=CC(C(=O)NO)=C1",
16
+ 2419: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
17
+ 2420: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
18
+ 2421: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
19
+ 2422: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCCCCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
20
+ 2423: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)COCCCCCCCCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
21
+ 2424: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)CCCCCCCCOCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
22
+ 2425: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)COCCCCCCOCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
23
+ 2426: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)COCCCCCCCCCOCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
24
+ 2427: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)COCCOCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
25
+ 2428: "CC1=C(C2=CC=C(CNC(=O)[C@@H]3C[C@@H](O)CN3C(=O)[C@@H](NC(=O)COCCOCCOCC(=O)NC3=CC=C(C(=O)NC4=CC=CC=C4N)C=C3)C(C)(C)C)C=C2)SC=N1",
26
+ }
27
+
28
+ protac_solubility_folder = rowan.create_folder(name="PROTAC Solubility")
29
+
30
+ workflows = []
31
+ for id, smiles in PROTACs.items():
32
+ workflows.append(
33
+ rowan.submit_solubility_workflow(
34
+ initial_smiles=smiles,
35
+ solvents=["CS(=O)C"],
36
+ temperatures=[293.15],
37
+ folder_uuid=protac_solubility_folder.uuid,
38
+ name=f"solubility {id}",
39
+ )
40
+ )
41
+
42
+
43
+ for workflow in workflows:
44
+ workflow.wait_for_result()
45
+ workflow.fetch_latest(in_place=True)
46
+
47
+ print(
48
+ [
49
+ (workflow.name, workflow.data["solubilities"]["CS(=O)C"]["solubilities"])
50
+ for workflow in workflows
51
+ ]
52
+ )
@@ -0,0 +1,20 @@
1
+ import json
2
+
3
+ import rowan
4
+
5
+ # rowan.api_key = ""
6
+
7
+ with open("examples/data/workflow_example.json", "r") as f:
8
+ workflow_data = json.load(f)
9
+
10
+ result = rowan.submit_workflow(
11
+ workflow_type="basic_calculation",
12
+ workflow_data=workflow_data,
13
+ name="basic calculation from json",
14
+ initial_molecule=workflow_data["initial_molecule"],
15
+ )
16
+
17
+ result.wait_for_result()
18
+ result.fetch_latest(in_place=True)
19
+
20
+ print(result)
@@ -0,0 +1,33 @@
1
+ from stjames import Molecule
2
+
3
+ import rowan
4
+
5
+ # rowan.api_key = ""
6
+
7
+ result = rowan.submit_workflow(
8
+ initial_molecule=Molecule.from_smiles("CCCC"),
9
+ workflow_type="basic_calculation",
10
+ name="Constrained Butane",
11
+ workflow_data={
12
+ "engine": "xtb",
13
+ "settings": {
14
+ "method": "gfn2_xtb",
15
+ "tasks": ["optimize"],
16
+ "mode": "auto",
17
+ "opt_settings": {
18
+ "constraints": [
19
+ {
20
+ "atoms": [4, 3, 2, 1],
21
+ "constraint_type": "dihedral",
22
+ "value": 0,
23
+ },
24
+ ]
25
+ },
26
+ },
27
+ },
28
+ )
29
+
30
+ result.wait_for_result()
31
+ result.fetch_latest(in_place=True)
32
+
33
+ print(result)
@@ -0,0 +1,55 @@
1
+ # ruff: noqa
2
+
3
+ import os
4
+ import sys
5
+
6
+ from stjames import Molecule, Method
7
+
8
+ import rowan
9
+
10
+ # rowan.api_key = ""
11
+
12
+
13
+ def compute_energy_with_solvent_correction(molecule: Molecule, method: Method, name: str) -> float:
14
+ opt = rowan.submit_workflow(
15
+ initial_molecule=molecule,
16
+ workflow_type="basic_calculation",
17
+ name=f"{name} {method} optimization",
18
+ workflow_data={
19
+ "settings": {"method": method, "tasks": ["optimize"]},
20
+ "engine": "omol25",
21
+ },
22
+ )
23
+
24
+ opt.wait_for_result()
25
+ opt.fetch_latest(in_place=True)
26
+
27
+ calculation_uuid = opt.data["calculation_uuid"]
28
+ optimized_molecule = rowan.retrieve_calculation_molecules(calculation_uuid)[-1]
29
+
30
+ sp = rowan.submit_workflow(
31
+ initial_molecule=optimized_molecule,
32
+ workflow_type="basic_calculation",
33
+ name=f"{name} {method} single point",
34
+ workflow_data={
35
+ "settings": {
36
+ "method": method,
37
+ "tasks": ["energy"],
38
+ "solvent_settings": {"solvent": "water", "model": "cpcmx"},
39
+ },
40
+ "engine": "omol25",
41
+ },
42
+ )
43
+
44
+ sp.wait_for_result()
45
+ sp.fetch_latest(in_place=True)
46
+
47
+ calculation_uuid = sp.data["calculation_uuid"]
48
+ final_molecule = rowan.retrieve_calculation_molecules(calculation_uuid)[0]
49
+ return final_molecule["energy"]
50
+
51
+
52
+ E1 = compute_energy_with_solvent_correction(
53
+ Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O"), Method.OMOL25_CONSERVING_S, "aspirin"
54
+ )
55
+ print(E1)
@@ -14,8 +14,6 @@ Rapid is recommended for most work.
14
14
  See documentation at: https://docs.rowansci.com/science/workflows/bond-dissociation-energy
15
15
  """
16
16
 
17
- import json
18
-
19
17
  from stjames import Molecule
20
18
 
21
19
  import rowan
@@ -23,12 +21,17 @@ import rowan
23
21
  # rowan.api_key = ""
24
22
 
25
23
  # Run calculation remotely
26
- result = rowan.compute(
27
- Molecule.from_smiles("CCCC"),
24
+ result = rowan.submit_workflow(
25
+ initial_molecule=Molecule.from_smiles("CCCC"),
28
26
  workflow_type="bde",
29
27
  name="Butane BDE",
30
- mode="reckless",
31
- all_CH=True,
28
+ workflow_data={
29
+ "mode": "reckless",
30
+ "all_CH": "true",
31
+ },
32
32
  )
33
33
 
34
- print(json.dumps(result, indent=4))
34
+ result.wait_for_result()
35
+ result.fetch_latest(in_place=True)
36
+
37
+ print(result)
@@ -0,0 +1,131 @@
1
+ import rowan
2
+
3
+ HARTREE_TO_KCALMOL = 627.5096
4
+
5
+ ligands = [
6
+ "CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1",
7
+ "CCC(C)CN=C1NCC2(CCCOC2)CN1",
8
+ "CC(C)CCNC1=NCC2CC(COC2=N)O1",
9
+ "CCC(CC)NC1=NCC2CC(CO)CC12",
10
+ "CCC(C)CN=C1NC=C2CCC(O)CC2=N1",
11
+ "CC(C#CC#N)C1=NC=C2C=CC(=O)CN12",
12
+ "CCC(CCN)C1NCC2=C(CC)SC(O)=C12",
13
+ "CCC(CC)N=C1NC=C2C=C(F)C=C(N)N12",
14
+ "CC(C)(C)C(N)C1=NCC2=CC(I)=NC=C2O1",
15
+ "CCC(CC)NC1=NCC2CC(N1)C(C)CN2",
16
+ "CCCC(C)N=C1NCC2CCNC2(C)CO1",
17
+ "CC(C)CC(N)C1NCC2=CC(N)=C(Br)N=C12",
18
+ "CC(C)C(CN)C1=NC=C2C=CN(C)C2=C1Br",
19
+ "CC(CC#C)NC1=NCC2=C(C)N(C)C=C2O1",
20
+ "CCCC(C)(N)C1=NCC2=CC(N)=CC=C2O1",
21
+ "CCCCC(N)C1=NC=C2C=CN(C)C(C)=C12",
22
+ "CCC(CC)N=C1NCC2CC(N)CCCN12",
23
+ "CC(C)C(C)(N)C1=NC=C2C=CNC(=N)C2=N1",
24
+ "CC(C)(CC#N)C1=NCC2CCN=COC2O1",
25
+ "C#CCC(C#N)C1=NC=C2C=CNN=C12",
26
+ "CCCCCNC1=NCC2=C(C)NN=C2N1",
27
+ "CCCCC(N)C1=NC=C2C(C)=NOC2=C1Br",
28
+ "CCCCCNC1=NCC2(CC#N)OCC1O2",
29
+ "CC(C)CCNC1=NC=C2CC(=N)OCCN12",
30
+ "CCCC(C#N)C1N(C)C2=C(C=NS2)C1=O",
31
+ "CCC(CC#N)C1=NCC2=C(CO1)OC(=N)S2",
32
+ "CCC(CCN)C1=NCC2=C(CO1)SC=N2",
33
+ "CCC(C(C)N)C1NCC2CCOC1C2(C)C",
34
+ "CC(C)(C)CNC1=NCC2CCOC1(O2)C#C",
35
+ "CCCCCN=C1N(C)C2CCOC2C1(C)C",
36
+ "CC(C)CCN=C1NCC2(CCOC2O1)C#C",
37
+ "CC(C)C(C#N)C1NCC2=CC(O)=C(Br)N=C12",
38
+ "CCC(C(C)N)C1(N)CC2CC(OC)C1C2C",
39
+ "CC(C)(C)CN=C1NC=C2CC(O)CC2O1",
40
+ "CCC(C)(C#N)C1=NC=C2CC(=O)C(C=O)N12",
41
+ "CCCC(C)NC1=NCC2(CCOC=N2)CC1",
42
+ "CCCC(C)N=C1N=CC2=CC(=O)N=C2C1=N",
43
+ "CC(C)C(C#N)C1=NC=C2C=C(O)OC2=C1N",
44
+ "CCCC(CN=C1NCC2=C(C)SC=C12)C=O",
45
+ "CC(C)(C)CN=C1NCC2=CNC3=C2C1=CN3",
46
+ "CCCCC(N)C1=NC=C2CNCC2=C1I",
47
+ "CC(CC#C)NC1=NCC2=C(NC(=C2)C#C)N1",
48
+ "CCC#CCN=C1NCC2=CNC=C2N1",
49
+ "CCCC(C#N)C1N(C)C2=C(NC=C2)OC1=O",
50
+ "CC(C)(C)CN=C1NC=C2C=NC=C2SC1=N",
51
+ "CC(C)C(C#N)C1NCC2=CN=C(C=C12)C#N",
52
+ "CC(C)C(C#N)C1(N)CC2CN(C)CC2C1C",
53
+ "CCC(C)(C)N=C1NCC2=C(NC(C)=C2)C1O",
54
+ "CC(C)C(C)NC1=NCC2CNC(C)C(C2)C1",
55
+ "CCC(C)CN=C1NCC2C(N)C(C)C(C)C12",
56
+ "CCC(C)(C#N)C1=NC=C2CNC(C)C(C)N12",
57
+ "CC(C)C(C#N)C1NCC2=C(N=C(C)N2)C1C",
58
+ "CCC(C)(C)NC1=NCC2=C(N=C(C)N2)C1C",
59
+ "CCC(C)(C)N=C1N=CC2=CN(C)N=C2N1C",
60
+ "CC(C)CCN=C1NC=C2C=NC(=NN12)C#C",
61
+ "CC(C)C(CN=C1NCC2(CN=CO2)O1)C#N",
62
+ "CCC(CC)N=C1N(C)C2=C(NC(=O)S2)C1=O",
63
+ "CCCC(C#N)C1NCC2=C(N=CS2)S1(=O)=O",
64
+ "CCC(C)(C)NC1=NCC2=CNN=C2C(=N)N1",
65
+ "CC(C)CCN=C1NC=C2C(N)=NC(C)=C2S1",
66
+ "CCC(C)(C)NC1=NC=C2C(=N)N=CNC2=N1",
67
+ "CCC(CC)N=C1N(C)C2=C(NN=N2)C1=NO",
68
+ "CCC(C)(C)NC1=NCC2=CN=NN2CCC1",
69
+ "CCC(C)CN=C1N=CC2=CNN=NC2=N1",
70
+ "CCC(CCN)C1=NC=C2C(N)=NSC2=N1",
71
+ "CCC(C)(CN)C1NCC2=C(N)OC=C2C1C",
72
+ "CC(C)(CCN)C1=NC=C2C(=N)SN=C2C=N1",
73
+ "CC(C)(C)CNC1=NC=C2C(=N)SN=C2O1",
74
+ "CCC(C)C(N)C1=NCC2=C(O1)C=CC(=N)S2",
75
+ "CCCCCN=C1NCC2=C(O1)N=C(S2)C#N",
76
+ "CCC(C)(CNC1=NCC2=C(O1)SC=N2)C=O",
77
+ "CC#CC(CN)C1=NCC2=C(O1)SN=C2C",
78
+ "CCCC(C#N)C1NCC2COC1(C2)C(C)=O",
79
+ "CC(C)(C)C(N)C1(N)CC2COC1C(C)(C)C2",
80
+ "CCCC(C#N)C1NCC2COC1(C)CN2C",
81
+ "CCC(C)(C)N=C1N(C)C2COC1(C)OC2C",
82
+ "CC(C)CCN=C1NCC2=C(OC1=N)N=NN2",
83
+ "CCC(CC#N)(C1NCC2=COC=C12)N(C)C",
84
+ "CCCC(C)(N)C1NCC2=C(OC=C12)N(C)C",
85
+ "CC(C)(C)CNC1=NCC2=C(OCC1)N=CS2",
86
+ "CC#CCCN=C1NCC2=COC=C2C=C1",
87
+ "CCCCCNC1=NC=C2C(OCC2(C)O)=C1",
88
+ "CCC(C)(C#N)C1N(C)C2=COC=C2N=C1N",
89
+ "CCC(C)(C)N=C1NCC2(C)OC(CC12)=NC",
90
+ "CCC(C)(CN)C1NCC2C(O)CCC1C2C",
91
+ "CCCC(C)NC1=NCC2COCC(C1)C2C",
92
+ "CC(C)C(C)NC1=NCC2COCCC2(C)O1",
93
+ "CC(C)CC(N)C1=NC=C2COC(C)C(C)N12",
94
+ "CCC(C)(C)NC1=NCC2COC(C)(O1)C2N",
95
+ "CCCC(C)(N)C1=NC=C2COCCOC2=N1",
96
+ "CCCC(C)N=C1N(C)C2=COC(N)=C2C1=O",
97
+ "CCCCCNC1=NCC2(C)OC=NCCC12",
98
+ "CCC(C(C)N)C1=NC=C2COC(N)=NC2=C1",
99
+ "CCCC(C)NC1=NCC2(C)OC(=O)OC2O1",
100
+ "CCCCC(N)C1NCC2=CON=C2C1C#C",
101
+ "CC(C)C(C)N=C1NCC2=C(O)N(C)C=C2O1",
102
+ "CCCC(C)N=C1N=CC2=C(O)N(C)C=CN12",
103
+ "CC(C)C(C#N)C1=NC=C2C(O)=NSC2=C1O",
104
+ "CCC(CC)N=C1NCC2=C(O)SC(=N)N=C12",
105
+ "CC(C)C(CN)C1NCC2=C(SC=C2C)C1C",
106
+ ]
107
+
108
+ workflows = []
109
+ results = {}
110
+ cofolding_result_folder = rowan.create_folder(name="Cofolding results")
111
+
112
+ for ligand in ligands:
113
+ workflow = rowan.submit_protein_cofolding_workflow(
114
+ initial_protein_sequences=[
115
+ "MENFQKVEKIGEGTYGVVYKARNKLTGEVVALKKIRLDTETEGVPSTAIREISLLKELNHPNIVKLLDVIHTENKLYLVFEFLHQDLKKFMDASALTGIPLPLIKSYLFQLLQGLAFCHSHRVLHRDLKPQNLLINTEGAIKLADFGLARAFGVPVRTYTHEVVTLWYRAPEILLGCKYYSTAVDIWSLGCIFAEMVTRRALFPGDSEIDQLFRIFRTLGTPDEVVWPGVTSMPDYKPSFPKWARQDFSKVVPPLDEDGRSLLSQMLHYDPNKRISAKAALAHPFFQDVTKPVPHLRL"
116
+ ],
117
+ initial_smiles_list=[ligand],
118
+ ligand_binding_affinity_index=0,
119
+ name=f"Cofolding {ligand}",
120
+ folder_uuid=cofolding_result_folder.uuid,
121
+ )
122
+ workflows.append(workflow)
123
+
124
+ for workflow in workflows:
125
+ workflow.wait_for_result()
126
+ workflow.fetch_latest(in_place=True)
127
+
128
+ for workflow in workflows:
129
+ results[workflow.name] = workflow.data["affinity_score"]["probability_binary"]
130
+
131
+ print(results)
@@ -0,0 +1,37 @@
1
+ import stjames
2
+ from stjames import Molecule
3
+
4
+ import rowan
5
+
6
+ # rowan.api_key = ""
7
+
8
+ conformer_dependent_redox_folder = rowan.create_folder(name="Conformer dependent redox results")
9
+
10
+ result = rowan.submit_conformer_search_workflow(
11
+ initial_molecule=Molecule.from_smiles("CC(C)Cc1ccc(C(=O)c2ccc(O)cc2)cc1"),
12
+ folder_uuid=conformer_dependent_redox_folder.uuid,
13
+ )
14
+ result.wait_for_result()
15
+ result.fetch_latest(in_place=True)
16
+
17
+ redox_potential_workflows = []
18
+
19
+ for conformer in result.data["conformer_uuids"][:10]:
20
+ uuid = conformer[0]
21
+ molecule = rowan.retrieve_calculation_molecules(uuid)[0]
22
+ stjames_molecule = stjames.Molecule.model_validate(molecule)
23
+ redox_potential_workflows.append(
24
+ rowan.submit_redox_potential_workflow(
25
+ stjames_molecule,
26
+ reduction=True,
27
+ oxidization=True,
28
+ folder_uuid=conformer_dependent_redox_folder.uuid,
29
+ )
30
+ )
31
+
32
+ for workflow in redox_potential_workflows:
33
+ workflow.wait_for_result()
34
+ workflow.fetch_latest(in_place=True)
35
+
36
+
37
+ print([workflow.data["redox_potential"] for workflow in redox_potential_workflows])
@@ -17,8 +17,6 @@ Rapid is recommended for most work.
17
17
  See documentation at: https://docs.rowansci.com/science/workflows/conformers
18
18
  """
19
19
 
20
- import json
21
-
22
20
  from stjames import Molecule
23
21
 
24
22
  import rowan
@@ -26,11 +24,8 @@ import rowan
26
24
  # rowan.api_key = ""
27
25
 
28
26
  # Run calculation remotely
29
- result = rowan.compute(
30
- Molecule.from_smiles("CCOCC"),
31
- workflow_type="conformers",
32
- name="Diethyl ether conformers",
33
- mode="reckless",
27
+ result = rowan.submit_conformer_search_workflow(
28
+ initial_molecule=Molecule.from_smiles("CCOCC"),
34
29
  )
35
30
 
36
- print(json.dumps(result, indent=4))
31
+ print(result)
@@ -0,0 +1,190 @@
1
+ {
2
+ "mode": "auto",
3
+ "engine": "xtb",
4
+ "messages": [],
5
+ "settings": {
6
+ "mode": "rapid",
7
+ "tasks": [
8
+ "optimize"
9
+ ],
10
+ "method": "gfn2_xtb",
11
+ "basis_set": null,
12
+ "corrections": [],
13
+ "opt_settings": {
14
+ "max_steps": 250,
15
+ "constraints": [
16
+ {
17
+ "atoms": [
18
+ 4,
19
+ 3,
20
+ 2,
21
+ 1
22
+ ],
23
+ "value": 0,
24
+ "constraint_type": "dihedral"
25
+ }
26
+ ],
27
+ "optimize_cell": false,
28
+ "energy_threshold": 0.00005,
29
+ "transition_state": false,
30
+ "recalc_hess_every": 0,
31
+ "max_gradient_threshold": 0.005,
32
+ "rms_gradient_threshold": 0.0035
33
+ },
34
+ "scf_settings": {
35
+ "soscf": false,
36
+ "max_iters": 250
37
+ },
38
+ "level_of_theory": "gfn2_xtb",
39
+ "compute_settings": {
40
+ "compute_type_used": null,
41
+ "requested_compute_type": "cpu"
42
+ },
43
+ "solvent_settings": null,
44
+ "thermochem_settings": {
45
+ "temperature": 298,
46
+ "concentration": 0.0408740470708,
47
+ "scaling_factor": 1,
48
+ "cutoff_frequency": 100
49
+ }
50
+ },
51
+ "calculation_uuid": "54027970-5efb-42df-8125-c8984d8ca7eb",
52
+ "initial_molecule": {
53
+ "cell": null,
54
+ "atoms": [
55
+ {
56
+ "position": [
57
+ -1.57731622,
58
+ 0.46259034,
59
+ 0.02288227
60
+ ],
61
+ "atomic_number": 6
62
+ },
63
+ {
64
+ "position": [
65
+ -0.55246934,
66
+ -0.31349805,
67
+ -0.78986664
68
+ ],
69
+ "atomic_number": 6
70
+ },
71
+ {
72
+ "position": [
73
+ 0.65178196,
74
+ -0.77563238,
75
+ 0.03104792
76
+ ],
77
+ "atomic_number": 6
78
+ },
79
+ {
80
+ "position": [
81
+ 1.5013315,
82
+ 0.37070813,
83
+ 0.55769072
84
+ ],
85
+ "atomic_number": 6
86
+ },
87
+ {
88
+ "position": [
89
+ -1.17009891,
90
+ 1.41344062,
91
+ 0.37886292
92
+ ],
93
+ "atomic_number": 1
94
+ },
95
+ {
96
+ "position": [
97
+ -1.91277475,
98
+ -0.11690438,
99
+ 0.88874548
100
+ ],
101
+ "atomic_number": 1
102
+ },
103
+ {
104
+ "position": [
105
+ -2.45332233,
106
+ 0.68757176,
107
+ -0.59399069
108
+ ],
109
+ "atomic_number": 1
110
+ },
111
+ {
112
+ "position": [
113
+ -0.21575239,
114
+ 0.30052639,
115
+ -1.63326648
116
+ ],
117
+ "atomic_number": 1
118
+ },
119
+ {
120
+ "position": [
121
+ -1.04230601,
122
+ -1.19688302,
123
+ -1.21658189
124
+ ],
125
+ "atomic_number": 1
126
+ },
127
+ {
128
+ "position": [
129
+ 0.31558706,
130
+ -1.39539838,
131
+ 0.87044712
132
+ ],
133
+ "atomic_number": 1
134
+ },
135
+ {
136
+ "position": [
137
+ 1.28031633,
138
+ -1.41330121,
139
+ -0.60197473
140
+ ],
141
+ "atomic_number": 1
142
+ },
143
+ {
144
+ "position": [
145
+ 2.39258685,
146
+ -0.02154188,
147
+ 1.05803044
148
+ ],
149
+ "atomic_number": 1
150
+ },
151
+ {
152
+ "position": [
153
+ 0.95227634,
154
+ 0.97534316,
155
+ 1.28543953
156
+ ],
157
+ "atomic_number": 1
158
+ },
159
+ {
160
+ "position": [
161
+ 1.83015992,
162
+ 1.0229789,
163
+ -0.25746596
164
+ ],
165
+ "atomic_number": 1
166
+ }
167
+ ],
168
+ "charge": 0,
169
+ "dipole": null,
170
+ "energy": null,
171
+ "smiles": "CCCC",
172
+ "stress": null,
173
+ "elapsed": null,
174
+ "gradient": null,
175
+ "velocities": null,
176
+ "multiplicity": 1,
177
+ "homo_lumo_gap": null,
178
+ "scf_completed": null,
179
+ "scf_iterations": null,
180
+ "mulliken_charges": null,
181
+ "calculation_index": null,
182
+ "vibrational_modes": null,
183
+ "zero_point_energy": null,
184
+ "thermal_energy_corr": null,
185
+ "thermal_enthalpy_corr": null,
186
+ "mulliken_spin_densities": null,
187
+ "thermal_free_energy_corr": null
188
+ }
189
+ }
190
+