rowan-python 1.1.12__tar.gz → 2.0.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.
Files changed (46) hide show
  1. {rowan_python-1.1.12 → rowan_python-2.0.0}/PKG-INFO +1 -1
  2. rowan_python-2.0.0/docs/images/deciduous-tree-favicon.png +0 -0
  3. rowan_python-2.0.0/docs/index.md +49 -0
  4. rowan_python-2.0.0/docs/rowan_rdkit.md +8 -0
  5. rowan_python-2.0.0/docs/stylesheets/colors.css +6 -0
  6. rowan_python-2.0.0/examples/PROTAC_solubility.py +52 -0
  7. {rowan_python-1.1.12 → rowan_python-2.0.0}/examples/bde.py +7 -7
  8. rowan_python-2.0.0/examples/cofolding_screen.py +131 -0
  9. rowan_python-2.0.0/examples/conformer_dependent_redox.py +37 -0
  10. {rowan_python-1.1.12 → rowan_python-2.0.0}/examples/conformers.py +3 -8
  11. rowan_python-2.0.0/examples/docking_screen.py +157 -0
  12. rowan_python-2.0.0/examples/irc.py +24 -0
  13. rowan_python-2.0.0/examples/multistage_opt.py +18 -0
  14. {rowan_python-1.1.12 → rowan_python-2.0.0}/examples/optimization.py +6 -12
  15. rowan_python-2.0.0/examples/phenol_pka.py +36 -0
  16. {rowan_python-1.1.12 → rowan_python-2.0.0}/examples/pka.py +4 -12
  17. rowan_python-2.0.0/examples/protein_cofolding.py +17 -0
  18. {rowan_python-1.1.12 → rowan_python-2.0.0}/examples/scan.py +5 -11
  19. rowan_python-2.0.0/mkdocs.yml +35 -0
  20. {rowan_python-1.1.12 → rowan_python-2.0.0}/pixi.lock +595 -307
  21. {rowan_python-1.1.12 → rowan_python-2.0.0}/pyproject.toml +7 -1
  22. rowan_python-2.0.0/rowan/__init__.py +10 -0
  23. rowan_python-2.0.0/rowan/folder.py +212 -0
  24. rowan_python-2.0.0/rowan/protein.py +215 -0
  25. {rowan_python-1.1.12 → rowan_python-2.0.0}/rowan/rowan_rdkit/chem_utils.py +162 -116
  26. rowan_python-2.0.0/rowan/user.py +137 -0
  27. {rowan_python-1.1.12 → rowan_python-2.0.0}/rowan/utils.py +15 -0
  28. rowan_python-2.0.0/rowan/workflow.py +996 -0
  29. rowan_python-1.1.12/examples/multistage_opt.py +0 -21
  30. rowan_python-1.1.12/rowan/__init__.py +0 -12
  31. rowan_python-1.1.12/rowan/calculation.py +0 -14
  32. rowan_python-1.1.12/rowan/client.py +0 -55
  33. rowan_python-1.1.12/rowan/folder.py +0 -90
  34. rowan_python-1.1.12/rowan/protein.py +0 -63
  35. rowan_python-1.1.12/rowan/protein_cofolding.py +0 -36
  36. rowan_python-1.1.12/rowan/workflow.py +0 -148
  37. {rowan_python-1.1.12 → rowan_python-2.0.0}/.envrc +0 -0
  38. {rowan_python-1.1.12 → rowan_python-2.0.0}/.github/workflows/python-publish.yml +0 -0
  39. {rowan_python-1.1.12 → rowan_python-2.0.0}/.github/workflows/test.yml +0 -0
  40. {rowan_python-1.1.12 → rowan_python-2.0.0}/.gitignore +0 -0
  41. {rowan_python-1.1.12 → rowan_python-2.0.0}/.pre-commit-config.yaml +0 -0
  42. {rowan_python-1.1.12 → rowan_python-2.0.0}/LICENSE +0 -0
  43. {rowan_python-1.1.12 → rowan_python-2.0.0}/README.md +0 -0
  44. {rowan_python-1.1.12 → rowan_python-2.0.0}/rowan/constants.py +0 -0
  45. {rowan_python-1.1.12 → rowan_python-2.0.0}/rowan/py.typed +0 -0
  46. {rowan_python-1.1.12 → rowan_python-2.0.0}/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.12
3
+ Version: 2.0.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
@@ -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
+ )
@@ -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,14 @@ 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
+ 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,157 @@
1
+ import time
2
+
3
+ import stjames
4
+
5
+ import rowan
6
+
7
+ HARTREE_TO_KCALMOL = 627.5096
8
+
9
+ ligands = [
10
+ "CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1",
11
+ "CCC(C)CN=C1NCC2(CCCOC2)CN1",
12
+ "CC(C)CCNC1=NCC2CC(COC2=N)O1",
13
+ "CCC(CC)NC1=NCC2CC(CO)CC12",
14
+ "CCC(C)CN=C1NC=C2CCC(O)CC2=N1",
15
+ "CC(C#CC#N)C1=NC=C2C=CC(=O)CN12",
16
+ "CCC(CCN)C1NCC2=C(CC)SC(O)=C12",
17
+ "CCC(CC)N=C1NC=C2C=C(F)C=C(N)N12",
18
+ "CC(C)(C)C(N)C1=NCC2=CC(I)=NC=C2O1",
19
+ "CCC(CC)NC1=NCC2CC(N1)C(C)CN2",
20
+ "CCCC(C)N=C1NCC2CCNC2(C)CO1",
21
+ "CC(C)CC(N)C1NCC2=CC(N)=C(Br)N=C12",
22
+ "CC(C)C(CN)C1=NC=C2C=CN(C)C2=C1Br",
23
+ "CC(CC#C)NC1=NCC2=C(C)N(C)C=C2O1",
24
+ "CCCC(C)(N)C1=NCC2=CC(N)=CC=C2O1",
25
+ "CCCCC(N)C1=NC=C2C=CN(C)C(C)=C12",
26
+ "CCC(CC)N=C1NCC2CC(N)CCCN12",
27
+ "CC(C)C(C)(N)C1=NC=C2C=CNC(=N)C2=N1",
28
+ "CC(C)(CC#N)C1=NCC2CCN=COC2O1",
29
+ "C#CCC(C#N)C1=NC=C2C=CNN=C12",
30
+ "CCCCCNC1=NCC2=C(C)NN=C2N1",
31
+ "CCCCC(N)C1=NC=C2C(C)=NOC2=C1Br",
32
+ "CCCCCNC1=NCC2(CC#N)OCC1O2",
33
+ "CC(C)CCNC1=NC=C2CC(=N)OCCN12",
34
+ "CCCC(C#N)C1N(C)C2=C(C=NS2)C1=O",
35
+ "CCC(CC#N)C1=NCC2=C(CO1)OC(=N)S2",
36
+ "CCC(CCN)C1=NCC2=C(CO1)SC=N2",
37
+ "CCC(C(C)N)C1NCC2CCOC1C2(C)C",
38
+ "CC(C)(C)CNC1=NCC2CCOC1(O2)C#C",
39
+ "CCCCCN=C1N(C)C2CCOC2C1(C)C",
40
+ "CC(C)CCN=C1NCC2(CCOC2O1)C#C",
41
+ "CC(C)C(C#N)C1NCC2=CC(O)=C(Br)N=C12",
42
+ "CCC(C(C)N)C1(N)CC2CC(OC)C1C2C",
43
+ "CC(C)(C)CN=C1NC=C2CC(O)CC2O1",
44
+ "CCC(C)(C#N)C1=NC=C2CC(=O)C(C=O)N12",
45
+ "CCCC(C)NC1=NCC2(CCOC=N2)CC1",
46
+ "CCCC(C)N=C1N=CC2=CC(=O)N=C2C1=N",
47
+ "CC(C)C(C#N)C1=NC=C2C=C(O)OC2=C1N",
48
+ "CCCC(CN=C1NCC2=C(C)SC=C12)C=O",
49
+ "CC(C)(C)CN=C1NCC2=CNC3=C2C1=CN3",
50
+ "CCCCC(N)C1=NC=C2CNCC2=C1I",
51
+ "CC(CC#C)NC1=NCC2=C(NC(=C2)C#C)N1",
52
+ "CCC#CCN=C1NCC2=CNC=C2N1",
53
+ "CCCC(C#N)C1N(C)C2=C(NC=C2)OC1=O",
54
+ "CC(C)(C)CN=C1NC=C2C=NC=C2SC1=N",
55
+ "CC(C)C(C#N)C1NCC2=CN=C(C=C12)C#N",
56
+ "CC(C)C(C#N)C1(N)CC2CN(C)CC2C1C",
57
+ "CCC(C)(C)N=C1NCC2=C(NC(C)=C2)C1O",
58
+ "CC(C)C(C)NC1=NCC2CNC(C)C(C2)C1",
59
+ "CCC(C)CN=C1NCC2C(N)C(C)C(C)C12",
60
+ "CCC(C)(C#N)C1=NC=C2CNC(C)C(C)N12",
61
+ "CC(C)C(C#N)C1NCC2=C(N=C(C)N2)C1C",
62
+ "CCC(C)(C)NC1=NCC2=C(N=C(C)N2)C1C",
63
+ "CCC(C)(C)N=C1N=CC2=CN(C)N=C2N1C",
64
+ "CC(C)CCN=C1NC=C2C=NC(=NN12)C#C",
65
+ "CC(C)C(CN=C1NCC2(CN=CO2)O1)C#N",
66
+ "CCC(CC)N=C1N(C)C2=C(NC(=O)S2)C1=O",
67
+ "CCCC(C#N)C1NCC2=C(N=CS2)S1(=O)=O",
68
+ "CCC(C)(C)NC1=NCC2=CNN=C2C(=N)N1",
69
+ "CC(C)CCN=C1NC=C2C(N)=NC(C)=C2S1",
70
+ "CCC(C)(C)NC1=NC=C2C(=N)N=CNC2=N1",
71
+ "CCC(CC)N=C1N(C)C2=C(NN=N2)C1=NO",
72
+ "CCC(C)(C)NC1=NCC2=CN=NN2CCC1",
73
+ "CCC(C)CN=C1N=CC2=CNN=NC2=N1",
74
+ "CCC(CCN)C1=NC=C2C(N)=NSC2=N1",
75
+ "CCC(C)(CN)C1NCC2=C(N)OC=C2C1C",
76
+ "CC(C)(CCN)C1=NC=C2C(=N)SN=C2C=N1",
77
+ "CC(C)(C)CNC1=NC=C2C(=N)SN=C2O1",
78
+ "CCC(C)C(N)C1=NCC2=C(O1)C=CC(=N)S2",
79
+ "CCCCCN=C1NCC2=C(O1)N=C(S2)C#N",
80
+ "CCC(C)(CNC1=NCC2=C(O1)SC=N2)C=O",
81
+ "CC#CC(CN)C1=NCC2=C(O1)SN=C2C",
82
+ "CCCC(C#N)C1NCC2COC1(C2)C(C)=O",
83
+ "CC(C)(C)C(N)C1(N)CC2COC1C(C)(C)C2",
84
+ "CCCC(C#N)C1NCC2COC1(C)CN2C",
85
+ "CCC(C)(C)N=C1N(C)C2COC1(C)OC2C",
86
+ "CC(C)CCN=C1NCC2=C(OC1=N)N=NN2",
87
+ "CCC(CC#N)(C1NCC2=COC=C12)N(C)C",
88
+ "CCCC(C)(N)C1NCC2=C(OC=C12)N(C)C",
89
+ "CC(C)(C)CNC1=NCC2=C(OCC1)N=CS2",
90
+ "CC#CCCN=C1NCC2=COC=C2C=C1",
91
+ "CCCCCNC1=NC=C2C(OCC2(C)O)=C1",
92
+ "CCC(C)(C#N)C1N(C)C2=COC=C2N=C1N",
93
+ "CCC(C)(C)N=C1NCC2(C)OC(CC12)=NC",
94
+ "CCC(C)(CN)C1NCC2C(O)CCC1C2C",
95
+ "CCCC(C)NC1=NCC2COCC(C1)C2C",
96
+ "CC(C)C(C)NC1=NCC2COCCC2(C)O1",
97
+ "CC(C)CC(N)C1=NC=C2COC(C)C(C)N12",
98
+ "CCC(C)(C)NC1=NCC2COC(C)(O1)C2N",
99
+ "CCCC(C)(N)C1=NC=C2COCCOC2=N1",
100
+ "CCCC(C)N=C1N(C)C2=COC(N)=C2C1=O",
101
+ "CCCCCNC1=NCC2(C)OC=NCCC12",
102
+ "CCC(C(C)N)C1=NC=C2COC(N)=NC2=C1",
103
+ "CCCC(C)NC1=NCC2(C)OC(=O)OC2O1",
104
+ "CCCCC(N)C1NCC2=CON=C2C1C#C",
105
+ "CC(C)C(C)N=C1NCC2=C(O)N(C)C=C2O1",
106
+ "CCCC(C)N=C1N=CC2=C(O)N(C)C=CN12",
107
+ "CC(C)C(C#N)C1=NC=C2C(O)=NSC2=C1O",
108
+ "CCC(CC)N=C1NCC2=C(O)SC(=N)N=C12",
109
+ "CC(C)C(CN)C1NCC2=C(SC=C2C)C1C",
110
+ ]
111
+
112
+
113
+ workflows = []
114
+ results = {}
115
+
116
+ docking_result_folder = rowan.create_folder(name="Docking results")
117
+
118
+
119
+ protein = rowan.create_protein_from_pdb_id("CDK2", "1HCK")
120
+
121
+ protein.sanitize()
122
+ time.sleep(60)
123
+ protein.refresh()
124
+
125
+ for ligand in ligands:
126
+ workflow = rowan.submit_docking_workflow(
127
+ protein.uuid,
128
+ pocket=[[103.55, 100.59, 82.99], [27.76, 32.67, 48.79]],
129
+ initial_molecule=stjames.Molecule.from_smiles(ligand),
130
+ folder_uuid=docking_result_folder.uuid,
131
+ name=f"Docking {ligand}",
132
+ )
133
+ workflows.append(workflow)
134
+
135
+
136
+ for workflow in workflows:
137
+ workflow.wait_for_result()
138
+ workflow.fetch_latest(in_place=True)
139
+
140
+ lowest_conformer_energy = 0
141
+ for workflow in workflows:
142
+ conformers = workflow.data["conformers"]
143
+ for conformer in conformers:
144
+ energy = rowan.retrieve_calculation_molecules(
145
+ conformer[0] if isinstance(conformer, list) else conformer
146
+ )[0]["energy"]
147
+ lowest_conformer_energy = min(lowest_conformer_energy, energy)
148
+
149
+ sorted_scores = sorted(workflow.data["scores"], key=lambda x: float(x["score"]))
150
+ for score in sorted_scores:
151
+ pose_energy = rowan.retrieve_calculation_molecules(score["pose"])[0]["energy"]
152
+ strain = (pose_energy - lowest_conformer_energy) * HARTREE_TO_KCALMOL
153
+ if score["posebusters_valid"] and strain < 4:
154
+ results[workflow.name] = score
155
+ break
156
+
157
+ print(results)
@@ -0,0 +1,24 @@
1
+ from stjames import Molecule
2
+
3
+ import rowan
4
+
5
+ # rowan.api_key = ""
6
+
7
+ result = rowan.submit_irc_workflow(
8
+ initial_molecule=Molecule.from_xyz_lines(
9
+ """7
10
+ SMILES `N=C([O-])[OH2+]`
11
+ N -0.15519741 -1.36979175 -0.20679433
12
+ C 1.11565384 -1.23943631 -0.14797646
13
+ O 2.17614993 -1.72950370 -0.04017850
14
+ H -0.55869366 -2.29559315 -0.23834737
15
+ O 1.02571386 0.42871733 -0.27925360
16
+ H -0.09029954 -0.04166676 -0.31495768
17
+ H 1.26740151 0.88347299 0.53620841
18
+ """.splitlines()
19
+ ),
20
+ name="HNCO + H₂O - IRC",
21
+ preopt=False,
22
+ )
23
+
24
+ print(result)
@@ -0,0 +1,18 @@
1
+ import stjames
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_workflow(
9
+ initial_molecule=stjames.Molecule.from_smiles("C1CCC1"), # cyclobutane
10
+ workflow_type="multistage_opt",
11
+ name="Multistage optimization cyclobutane",
12
+ workflow_data={
13
+ "mode": "reckless",
14
+ },
15
+ )
16
+
17
+
18
+ print(result)
@@ -4,24 +4,18 @@ Run an optimization calculation on a molecule using Rowan.
4
4
  See documentation at: https://docs.rowansci.com/science/quantum-chemistry/geometry-optimization
5
5
  """
6
6
 
7
- import json
8
-
9
7
  from stjames import Molecule
10
8
 
11
9
  import rowan
12
10
 
13
11
  # rowan.api_key = ""
14
12
 
15
- # Run calculation remotely
16
- result = rowan.compute(
17
- Molecule.from_smiles("O"),
18
- workflow_type="basic_calculation",
19
- name="Water Optimization",
20
- settings={
21
- "method": "GFN2-xTB",
22
- "tasks": ["optimize"],
23
- },
13
+ result = rowan.submit_basic_calculation_workflow(
14
+ initial_molecule=Molecule.from_smiles("O"),
15
+ method="GFN2-xTB",
16
+ tasks=["optimize"],
24
17
  engine="xtb",
18
+ name="Water Optimization",
25
19
  )
26
20
 
27
- print(json.dumps(result, indent=4))
21
+ print(result)
@@ -0,0 +1,36 @@
1
+ import stjames
2
+
3
+ import rowan
4
+
5
+ phenols_to_compute = {
6
+ "p-nitrophenol": "Oc1ccc(N(=O)=O)cc1",
7
+ "p-(trifluoromethyl)phenol": "Oc1ccc(C(F)(F)F)cc1",
8
+ "methyl p-hydroxybenzoate": "COC(=O)c1ccc(O)cc1",
9
+ "p-fluorophenol": "Oc1ccc(F)cc1",
10
+ "p-chlorophenol": "Oc1ccc(Cl)cc1",
11
+ "phenol": "Oc1ccccc1",
12
+ "p-cresol": "Oc1ccc(C)cc1",
13
+ "p-methoxyphenol": "COc1ccc(O)cc1",
14
+ "p-(dimethylamino)phenol": "CN(C)c1ccc(O)cc1",
15
+ }
16
+
17
+ pka_folder = rowan.create_folder(name="phenol pKa results")
18
+
19
+ workflows = []
20
+ for name, smiles in phenols_to_compute.items():
21
+ stjames_molecule = stjames.Molecule.from_smiles(smiles)
22
+ workflows.append(
23
+ rowan.submit_pka_workflow(
24
+ stjames_molecule,
25
+ name=f"pKa {name}",
26
+ folder_uuid=pka_folder.uuid,
27
+ deprotonate_elements=[8],
28
+ )
29
+ )
30
+
31
+
32
+ for workflow in workflows:
33
+ workflow.wait_for_result()
34
+ workflow.fetch_latest(in_place=True)
35
+
36
+ print([(workflow.name, workflow.data["conjugate_bases"][0]["pka"]) for workflow in workflows])
@@ -13,18 +13,10 @@ import rowan
13
13
 
14
14
  # rowan.api_key = ""
15
15
 
16
- # Run calculation remotely
17
- result = rowan.compute(
18
- Molecule.from_smiles("n1ccccc1"),
19
- workflow_type="pka",
20
- name="Pyridine pKa",
16
+ result = rowan.submit_pka_workflow(
17
+ initial_molecule=Molecule.from_smiles("n1ccccc1"),
21
18
  mode="reckless",
19
+ name="Pyridine pKa",
22
20
  )
23
21
 
24
- logfile = result["object_logfile"]
25
- strongest_base = result["object_data"]["strongest_base"]
26
-
27
- print(f"""\
28
- {logfile}
29
-
30
- pKa of conjugate acid: {strongest_base:.2f}""")
22
+ print(result)
@@ -0,0 +1,17 @@
1
+ import rowan
2
+
3
+ # rowan.api_key = ""
4
+
5
+ # Run calculation remotely
6
+ result = rowan.submit_protein_cofolding_workflow(
7
+ initial_protein_sequences=[
8
+ "ASKGTSHEAGIVCRITKPALLVLNHETAKVIQTAFQRASYPDITGEKAMMLLGQVKYGLHNIQISHLSIASSQVELVEAKSIDVSIQDVSVVFKGTLKYGYTTAWWLGIDQSIDFEIDSAIDLQINTQLTADSGRVRTDAPDCYLSFHKLLLHLQGEREPGWIKQLFTNFISFTLKLVLKGQICKEINVISNIMADFVQTRAASILSDGDIGVDISLTGDPVITASYLESHHKGHFIYKDVSEDLPLPTFSPTLLGDSRMLYFWFSERVFHSLAKVAFQDGRLMLSLMGDEFKAVLETWGFNTNQEIFQEVVGGFPSQAQVTVHCLKMPKISCQNKGVVVDSSVMVKFLFPRPDQQHSVAYTFEEDIVTTVQASYSKKKLFLSLLDFQITPKTVSNLTESSSESIQSFLQSMITAVGIPEVMSRLEVVFTALMNSKGVSLFDIINPEIITRDGFLLLQMDFGFPEHLLVDFLQSLS"
9
+ ],
10
+ initial_smiles_list=[
11
+ "CCOC(=O)N1c2ccc(C(F)(F)F)cc2[C@@H](N(Cc2cc(C(F)(F)F)cc(C(F)(F)F)c2)C(=O)OC)C[C@H]1CC"
12
+ ],
13
+ ligand_binding_affinity_index=0,
14
+ name="Torcetrapib Cofolding",
15
+ )
16
+
17
+ print(result)