stjames 0.0.119__py3-none-any.whl → 0.0.121__py3-none-any.whl

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.

Potentially problematic release.


This version of stjames might be problematic. Click here for more details.

stjames/__init__.py CHANGED
@@ -22,3 +22,4 @@ from .status import *
22
22
  from .constraint import *
23
23
  from .message import *
24
24
  from .types import *
25
+ from .engine import *
stjames/calculation.py CHANGED
@@ -1,10 +1,13 @@
1
- from typing import Optional
1
+ from typing import Optional, Self
2
2
 
3
- from .base import Base, LowercaseStrEnum
3
+ from pydantic import model_validator
4
+
5
+ from .base import Base, LowercaseStrEnum, UniqueList
4
6
  from .message import Message
5
7
  from .molecule import Molecule
6
8
  from .settings import Settings
7
9
  from .status import Status
10
+ from .task import Task
8
11
  from .types import UUID
9
12
 
10
13
 
@@ -20,6 +23,7 @@ class StJamesVersion(LowercaseStrEnum):
20
23
  class Calculation(Base):
21
24
  molecules: list[Molecule]
22
25
 
26
+ tasks: UniqueList[Task] = []
23
27
  settings: Settings = Settings()
24
28
 
25
29
  status: Status = Status.QUEUED
@@ -29,8 +33,17 @@ class Calculation(Base):
29
33
  logfile: Optional[str] = None
30
34
  messages: list[Message] = []
31
35
 
36
+ # DEPRECATED - moving into settings
32
37
  engine: Optional[str] = "peregrine"
38
+
33
39
  uuids: list[UUID | None] | None = None
34
40
 
35
41
  # not to be changed by end users, diff. versions will have diff. defaults
36
42
  json_format: str = StJamesVersion.V0
43
+
44
+ @model_validator(mode="after")
45
+ def populate_tasks(self) -> Self:
46
+ """Set the tasks from the settings, so that we don't have to migrate old entries."""
47
+ if len(self.tasks) == 0:
48
+ self.tasks = self.settings.tasks
49
+ return self
stjames/settings.py CHANGED
@@ -6,6 +6,7 @@ from .base import Base, UniqueList
6
6
  from .basis_set import BasisSet
7
7
  from .compute_settings import ComputeSettings
8
8
  from .correction import Correction
9
+ from .engine import Engine
9
10
  from .method import CORRECTABLE_NNP_METHODS, METHODS_WITH_CORRECTION, PREPACKAGED_METHODS, Method
10
11
  from .mode import Mode
11
12
  from .opt_settings import OptimizationSettings
@@ -20,11 +21,13 @@ _T = TypeVar("_T")
20
21
  class Settings(Base):
21
22
  mode: Mode = Mode.AUTO
22
23
 
24
+ # DEPRECATED - specify tasks only in BasicCalculationWorkflow or Calculation now
25
+ tasks: UniqueList[Task] = [Task.ENERGY, Task.CHARGE, Task.DIPOLE]
26
+
23
27
  method: Method = Method.HARTREE_FOCK
24
28
  basis_set: Optional[BasisSet] = None
25
- tasks: UniqueList[Task] = [Task.ENERGY, Task.CHARGE, Task.DIPOLE]
29
+ engine: Engine = None # type: ignore [assignment]
26
30
  corrections: UniqueList[Correction] = []
27
-
28
31
  solvent_settings: Optional[SolventSettings] = None
29
32
 
30
33
  # scf/opt settings will be set automatically based on mode, but can be overridden manually
@@ -33,6 +36,12 @@ class Settings(Base):
33
36
  thermochem_settings: ThermochemistrySettings = ThermochemistrySettings()
34
37
  compute_settings: ComputeSettings = ComputeSettings()
35
38
 
39
+ @model_validator(mode="after")
40
+ def set_engine(self) -> Self:
41
+ """Set the calculation engine."""
42
+ self.engine = self.engine or self.method.default_engine()
43
+ return self
44
+
36
45
  # mypy has this dead wrong (https://docs.pydantic.dev/2.0/usage/computed_fields/)
37
46
  # Python 3.12 narrows the reason for the ignore to prop-decorator
38
47
  @computed_field # type: ignore[misc, prop-decorator, unused-ignore]
@@ -4,6 +4,7 @@ from typing import Literal
4
4
 
5
5
  from .admet import *
6
6
  from .basic_calculation import *
7
+ from .batch_docking import *
7
8
  from .bde import *
8
9
  from .conformer import *
9
10
  from .conformer_search import *
@@ -34,6 +35,7 @@ from .workflow import *
34
35
  WORKFLOW_NAME = Literal[
35
36
  "admet",
36
37
  "basic_calculation",
38
+ "batch_docking",
37
39
  "bde",
38
40
  "conformers",
39
41
  "conformer_search",
@@ -64,6 +66,7 @@ WORKFLOW_NAME = Literal[
64
66
  WORKFLOW_MAPPING: dict[WORKFLOW_NAME, Workflow] = {
65
67
  "admet": ADMETWorkflow, # type: ignore [dict-item]
66
68
  "basic_calculation": BasicCalculationWorkflow, # type: ignore [dict-item]
69
+ "batch_docking": BatchDockingWorkflow, # type: ignore [dict-item]
67
70
  "bde": BDEWorkflow, # type: ignore [dict-item]
68
71
  "conformers": ConformerWorkflow, # type: ignore [dict-item]
69
72
  "conformer_search": ConformerSearchWorkflow, # type: ignore [dict-item]
@@ -4,8 +4,10 @@ from typing import Self
4
4
 
5
5
  from pydantic import model_validator
6
6
 
7
+ from ..base import UniqueList
7
8
  from ..engine import Engine
8
9
  from ..settings import Settings
10
+ from ..task import Task
9
11
  from ..types import UUID
10
12
  from .workflow import MoleculeWorkflow
11
13
 
@@ -25,9 +27,12 @@ class BasicCalculationWorkflow(MoleculeWorkflow):
25
27
  """
26
28
 
27
29
  settings: Settings
28
- engine: Engine = None # type: ignore [assignment]
30
+ tasks: UniqueList[Task] = [Task.ENERGY, Task.CHARGE, Task.DIPOLE]
29
31
  calculation_uuid: UUID | None = None
30
32
 
33
+ # DEPRECATED - specify in settings now
34
+ engine: Engine = None # type: ignore [assignment]
35
+
31
36
  @model_validator(mode="after")
32
37
  def set_engine(self) -> Self:
33
38
  """Set the calculation engine."""
@@ -36,9 +36,13 @@ class FukuiIndexWorkflow(MoleculeWorkflow):
36
36
  """
37
37
 
38
38
  opt_settings: Settings | None = None
39
+
40
+ # DEPRECATED - will be removed
39
41
  opt_engine: Engine | None = None
40
42
 
41
43
  fukui_settings: Settings = Settings(method=Method.GFN1_XTB)
44
+
45
+ # DEPRECATED - will be removed
42
46
  fukui_engine: Engine = None # type: ignore [assignment]
43
47
 
44
48
  optimization: UUID | None = None
@@ -52,7 +56,6 @@ class FukuiIndexWorkflow(MoleculeWorkflow):
52
56
  def set_engines(self) -> Self:
53
57
  """Set the engines for optimization and Fukui index calculations."""
54
58
  if self.opt_settings is not None and self.opt_engine is None:
55
- self.opt_engine = self.opt_settings.method.default_engine()
56
- self.fukui_engine = self.fukui_engine or self.fukui_settings.method.default_engine()
57
-
59
+ self.opt_engine = self.opt_settings.engine
60
+ self.fukui_engine = self.fukui_engine or self.fukui_settings.engine
58
61
  return self
@@ -96,6 +96,8 @@ class MolecularDynamicsWorkflow(MoleculeWorkflow):
96
96
 
97
97
  settings: MolecularDynamicsSettings
98
98
  calc_settings: Settings
99
+
100
+ # DEPRECATED - will remove later
99
101
  calc_engine: Engine = None # type: ignore[assignment]
100
102
 
101
103
  frames: list[Frame] = []
@@ -103,6 +105,6 @@ class MolecularDynamicsWorkflow(MoleculeWorkflow):
103
105
  @model_validator(mode="after")
104
106
  def validate_calc_engine(self) -> Self:
105
107
  """Ensure that the calc_engine is set."""
106
- self.calc_engine = self.calc_engine or self.calc_settings.method.default_engine()
108
+ self.calc_engine = self.calc_engine or self.calc_settings.engine
107
109
 
108
110
  return self
stjames/workflows/scan.py CHANGED
@@ -1,12 +1,11 @@
1
- """Scan workflow."""
2
-
3
- from typing import Annotated
1
+ from typing import Annotated, Self
4
2
 
5
3
  import numpy as np
6
4
  from numpy.typing import NDArray
7
- from pydantic import AfterValidator, field_validator
5
+ from pydantic import AfterValidator, field_validator, model_validator
8
6
 
9
7
  from ..base import Base, round_optional_float
8
+ from ..engine import Engine
10
9
  from ..molecule import Molecule
11
10
  from ..settings import Settings
12
11
  from ..types import UUID
@@ -75,7 +74,9 @@ class ScanWorkflow(MoleculeWorkflow):
75
74
  scan_settings: ScanSettings | list[ScanSettings]
76
75
  scan_settings_2d: ScanSettings | list[ScanSettings] = []
77
76
  calc_settings: Settings
78
- calc_engine: str
77
+
78
+ # DEPRECATED - will be removed in future
79
+ calc_engine: Engine = None # type: ignore [assignment]
79
80
 
80
81
  wavefront_propagation: bool = True
81
82
 
@@ -94,3 +95,9 @@ class ScanWorkflow(MoleculeWorkflow):
94
95
  raise ValueError("Concerted scan settings must have same number of steps!")
95
96
 
96
97
  return val
98
+
99
+ @model_validator(mode="after")
100
+ def set_calc_engine(self) -> Self:
101
+ """Set the calculation engine."""
102
+ self.calc_engine = self.calc_engine or self.calc_settings.engine
103
+ return self
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stjames
3
- Version: 0.0.119
3
+ Version: 0.0.121
4
4
  Summary: standardized JSON atom/molecule encoding scheme
5
5
  Author-email: Corin Wagen <corin@rowansci.com>
6
6
  Project-URL: Homepage, https://github.com/rowansci/stjames
@@ -1,9 +1,9 @@
1
- stjames/__init__.py,sha256=i_vqziEdoBNXhD7Gjb2_1zLkSx0Ko1N8BnCk6No_T6A,522
1
+ stjames/__init__.py,sha256=eM4xm21MXF7RGJcwFEarw0LDz8r8haPhxxgOnCXhsgU,544
2
2
  stjames/_deprecated_solvent_settings.py,sha256=gj5j9p3zakIwSTK5_ndqBXJx--IzjZNxZ75z-wipLOo,450
3
3
  stjames/atom.py,sha256=RnlAgWsZZJEZnSBWCeoj6NtWht8mZTf4qDWfT_Ot05U,2704
4
4
  stjames/base.py,sha256=YhmNZqFdWYD_lCw8rD2fZtt17nh8g7lUFBnGMezB-u8,1837
5
5
  stjames/basis_set.py,sha256=wI3M2q9uPf9jhKpAi4E2DrsyKzloDGLRjAlk7krdYgc,949
6
- stjames/calculation.py,sha256=O2LwwQ_cOLmDOGXTHA9J71YbUZXigUSbvbLA-fSVm3w,915
6
+ stjames/calculation.py,sha256=jm3LvFzJl54yJQtfrqKvodAkZyAvgN3hMWAsWD4HMM8,1333
7
7
  stjames/compute_settings.py,sha256=wuYE6W4WqP3oFHwAeEp7XQ0oMz_MNLucWgrsuJ4kEFQ,268
8
8
  stjames/constraint.py,sha256=B6oV0rYjmAWr8gpi5f03gRy_uuqjUURVDVwoez5Cfbg,2442
9
9
  stjames/correction.py,sha256=ZVErCcj4TPyZeKrdvXVjHa0tFynsCaoy96QZUVxWFM8,413
@@ -17,7 +17,7 @@ stjames/pdb.py,sha256=6ayVUUdTufkXs_nfpRQuT1yGvymuyICB4L5Wh55OsaA,26507
17
17
  stjames/periodic_cell.py,sha256=eV_mArsY_MPEFSrFEsTC-CyCc6V8ITAXdk7yhjjNI7M,1080
18
18
  stjames/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  stjames/scf_settings.py,sha256=ecEVP3aKArNorpbP0mapnbc-EMjjzx4jeVW6q9tvqsw,436
20
- stjames/settings.py,sha256=qZ3yhuMIQNiLs8Z-uEyVReSg2IQAjnDzQ6euHHqE6xI,6128
20
+ stjames/settings.py,sha256=PGSNeNosl9OYLAZ3TGdWCN_4UwXI4qujJ5M9VWduE2o,6493
21
21
  stjames/solvent.py,sha256=flrGlwD4QavmXlIxeqlsiQv1F_PWyqBTKTDH9HjHdRg,1246
22
22
  stjames/status.py,sha256=KQHDqWSd4kBLow23YLcfOkFdtqN61RFZI-jf2zANWRY,501
23
23
  stjames/task.py,sha256=OLINRqe66o7t8arffilwmggrF_7TH0L79u6DhGruxV8,329
@@ -37,9 +37,9 @@ stjames/data/read_nist_isotopes.py,sha256=y10FNjW43QpC45qib7VHsIghEwT7GG5rsNwHdc
37
37
  stjames/data/symbol_element.json,sha256=vl_buFusTqBd-muYQtMLtTDLy2OtBI6KkBeqkaWRQrg,1186
38
38
  stjames/optimization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  stjames/optimization/freezing_string_method.py,sha256=eEQBqbYHgJH9gVRLDIFtGuPcsHHMLAAt1hF3jtq70lo,2285
40
- stjames/workflows/__init__.py,sha256=RoqcRk27PTu9UfHFQQtu5quiBipsx4NGvDPst5S1EOc,3317
40
+ stjames/workflows/__init__.py,sha256=GiSXuBCA2tE5eXHnVYJvjtoqX_zvCn8t0wpkvK1HEls,3438
41
41
  stjames/workflows/admet.py,sha256=qFUpCFiLW-3gzuEjCMNBJ6DEG_vquJcPAsN4SVZRfdE,1289
42
- stjames/workflows/basic_calculation.py,sha256=sAgHBcNHE72ZbZPB9vyZShALRC4zOVw6It6cpJlbX2A,911
42
+ stjames/workflows/basic_calculation.py,sha256=wIiq2lFRN4nxN0__X_JbPSeaUeJ4tKUyg6NaB1xqoEY,1079
43
43
  stjames/workflows/batch_docking.py,sha256=o-t5FkfLlbe60jX1_ZeqWSJJ5vsjEIbTa5GLN3ny_tk,1590
44
44
  stjames/workflows/bde.py,sha256=g_In-caftXiimrhfdptHjpfrYQUs3vF58qYmRnaTN8g,10825
45
45
  stjames/workflows/conformer.py,sha256=18aO6ngMBeGAmQkBdLGCCHr398RIYr1v2hD2IT1u4cc,3005
@@ -48,12 +48,12 @@ stjames/workflows/descriptors.py,sha256=T4tc7xdtBdxESGO86KR323jPQ2pgwxBqgV0khA6M
48
48
  stjames/workflows/docking.py,sha256=t30kqeFXQ0yrlqvN6Jdwt0SdfnJLDsfK-7yFi0gwNbY,4753
49
49
  stjames/workflows/double_ended_ts_search.py,sha256=ovJgEVFc6c3mijCE3TKAY70YvqNmAZ5Y4XgV4-tIxBI,3127
50
50
  stjames/workflows/electronic_properties.py,sha256=GT3-NC7w-dbcOJ-3AzJ7LgzH6frTbiH2Iyb9BCa-SvY,4112
51
- stjames/workflows/fukui.py,sha256=095GDGSSEc5PDD1aoKM8J7icgR5tfwS5Bs9XxFQHge4,2387
51
+ stjames/workflows/fukui.py,sha256=E9dfPnZzgwDR3J_8DdTTSwHcMPelyZxlLCmp_WA8UJo,2424
52
52
  stjames/workflows/hydrogen_bond_basicity.py,sha256=q9eXty68ZyCmrB6G_8bfeOT8Ui_IQquRPu6z-3rNreQ,1589
53
53
  stjames/workflows/ion_mobility.py,sha256=5vUjEYCnF9sN3dTqqEgWAq0jAfdoFvkLubemoXE8DLc,3125
54
54
  stjames/workflows/irc.py,sha256=ZP7icylW8rgo_Uh7h3bmyumn0ru1IyF-61nP5Jnmq3M,3402
55
55
  stjames/workflows/macropka.py,sha256=Krj0xXuB-u57Kqlf4bbRiHDUWCpliFr6YPiYqPmYaWk,3803
56
- stjames/workflows/molecular_dynamics.py,sha256=HqWNxxPSAphfI0DdbTERFkq8UeBjEvhnA_ETv0xw_RY,3522
56
+ stjames/workflows/molecular_dynamics.py,sha256=cgjede9TWf-eXRFeUcM59cyVQAhSduL6L0J0oMrX3xc,3543
57
57
  stjames/workflows/multistage_opt.py,sha256=UN-4WLsT2WEjO5KqDPrcCkb708Co-ZScHx3g2bto768,16597
58
58
  stjames/workflows/nmr.py,sha256=1QEF4SB6dWIr-jzLEZ7V972UnRUOTufOJSHwIGyV3dM,2681
59
59
  stjames/workflows/pka.py,sha256=i-jzl2lN0yRWc0tgrWSBCplITEByfRyEQrlUhjnzcBc,4580
@@ -61,14 +61,14 @@ stjames/workflows/pose_analysis_md.py,sha256=dpWVKC-8fPdw6ExIXk9xbeVBDUMUYQECpix
61
61
  stjames/workflows/protein_binder_design.py,sha256=KnPKQJTMrSO5xfw64Bh7T0wHck1NtysVwkVgHs1cGws,12013
62
62
  stjames/workflows/protein_cofolding.py,sha256=w7Sg_ttU4bcJb7wlVcI_AAsLM9WVAJcU5ucbNb5Iyzw,4326
63
63
  stjames/workflows/redox_potential.py,sha256=7S18t9Y3eynSnA3lZbRlvLfdbgeBopdiigLzt1zxg5c,3871
64
- stjames/workflows/scan.py,sha256=DXQBpa2t2PowAtOwmdgpxaSLq--fEShljzAGSb8Nf5U,2993
64
+ stjames/workflows/scan.py,sha256=lgpvrrFG03GWQj2tWeBqPQVYSCGLgYdnQsU9bAUZQok,3317
65
65
  stjames/workflows/solubility.py,sha256=lfCVvJjqEaddLUpK6WBxjB7u12Sci-K95A5_qIMkIRM,3028
66
66
  stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQnaI,4748
67
67
  stjames/workflows/strain.py,sha256=paYxDDQTB1eYP_c2kLVz1-QX7Vpw0LLb3ujnFin_SOM,1834
68
68
  stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
69
69
  stjames/workflows/workflow.py,sha256=cYNP_tK1afJTscXJzYv5VGe8n2Est6PpthS268oRi1U,2494
70
- stjames-0.0.119.dist-info/licenses/LICENSE,sha256=i05z7xEhyrg6f8j0lR3XYjShnF-MJGFQ-DnpsZ8yiVI,1084
71
- stjames-0.0.119.dist-info/METADATA,sha256=zSXQ6WwjJ7Fv7dQ1y_4Nx5Glq6zYzXkq94uKLLDEAbg,1725
72
- stjames-0.0.119.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
- stjames-0.0.119.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
74
- stjames-0.0.119.dist-info/RECORD,,
70
+ stjames-0.0.121.dist-info/licenses/LICENSE,sha256=i05z7xEhyrg6f8j0lR3XYjShnF-MJGFQ-DnpsZ8yiVI,1084
71
+ stjames-0.0.121.dist-info/METADATA,sha256=TeYRvGYD3m3c1KxoQa197eGf6oJ9KvyNkJ0gLN4kEJ0,1725
72
+ stjames-0.0.121.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
+ stjames-0.0.121.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
74
+ stjames-0.0.121.dist-info/RECORD,,