stjames 0.0.67__tar.gz → 0.0.69__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.

Potentially problematic release.


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

Files changed (78) hide show
  1. {stjames-0.0.67/stjames.egg-info → stjames-0.0.69}/PKG-INFO +1 -1
  2. {stjames-0.0.67 → stjames-0.0.69}/pyproject.toml +1 -1
  3. {stjames-0.0.67 → stjames-0.0.69}/stjames/method.py +3 -2
  4. {stjames-0.0.67 → stjames-0.0.69}/stjames/status.py +4 -1
  5. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/__init__.py +3 -0
  6. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/fukui.py +13 -1
  7. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/macropka.py +27 -4
  8. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/scan.py +2 -0
  9. {stjames-0.0.67 → stjames-0.0.69/stjames.egg-info}/PKG-INFO +1 -1
  10. {stjames-0.0.67 → stjames-0.0.69}/LICENSE +0 -0
  11. {stjames-0.0.67 → stjames-0.0.69}/README.md +0 -0
  12. {stjames-0.0.67 → stjames-0.0.69}/setup.cfg +0 -0
  13. {stjames-0.0.67 → stjames-0.0.69}/stjames/__init__.py +0 -0
  14. {stjames-0.0.67 → stjames-0.0.69}/stjames/_deprecated_solvent_settings.py +0 -0
  15. {stjames-0.0.67 → stjames-0.0.69}/stjames/atom.py +0 -0
  16. {stjames-0.0.67 → stjames-0.0.69}/stjames/atomium_stjames/__init__.py +0 -0
  17. {stjames-0.0.67 → stjames-0.0.69}/stjames/atomium_stjames/data.py +0 -0
  18. {stjames-0.0.67 → stjames-0.0.69}/stjames/atomium_stjames/mmcif.py +0 -0
  19. {stjames-0.0.67 → stjames-0.0.69}/stjames/atomium_stjames/pdb.py +0 -0
  20. {stjames-0.0.67 → stjames-0.0.69}/stjames/atomium_stjames/utilities.py +0 -0
  21. {stjames-0.0.67 → stjames-0.0.69}/stjames/base.py +0 -0
  22. {stjames-0.0.67 → stjames-0.0.69}/stjames/basis_set.py +0 -0
  23. {stjames-0.0.67 → stjames-0.0.69}/stjames/calculation.py +0 -0
  24. {stjames-0.0.67 → stjames-0.0.69}/stjames/compute_settings.py +0 -0
  25. {stjames-0.0.67 → stjames-0.0.69}/stjames/constraint.py +0 -0
  26. {stjames-0.0.67 → stjames-0.0.69}/stjames/correction.py +0 -0
  27. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/__init__.py +0 -0
  28. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/bragg_radii.json +0 -0
  29. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/elements.py +0 -0
  30. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/isotopes.json +0 -0
  31. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/nist_isotopes.json +0 -0
  32. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/read_nist_isotopes.py +0 -0
  33. {stjames-0.0.67 → stjames-0.0.69}/stjames/data/symbol_element.json +0 -0
  34. {stjames-0.0.67 → stjames-0.0.69}/stjames/diis_settings.py +0 -0
  35. {stjames-0.0.67 → stjames-0.0.69}/stjames/grid_settings.py +0 -0
  36. {stjames-0.0.67 → stjames-0.0.69}/stjames/int_settings.py +0 -0
  37. {stjames-0.0.67 → stjames-0.0.69}/stjames/message.py +0 -0
  38. {stjames-0.0.67 → stjames-0.0.69}/stjames/mode.py +0 -0
  39. {stjames-0.0.67 → stjames-0.0.69}/stjames/molecule.py +0 -0
  40. {stjames-0.0.67 → stjames-0.0.69}/stjames/opt_settings.py +0 -0
  41. {stjames-0.0.67 → stjames-0.0.69}/stjames/pdb.py +0 -0
  42. {stjames-0.0.67 → stjames-0.0.69}/stjames/periodic_cell.py +0 -0
  43. {stjames-0.0.67 → stjames-0.0.69}/stjames/py.typed +0 -0
  44. {stjames-0.0.67 → stjames-0.0.69}/stjames/scf_settings.py +0 -0
  45. {stjames-0.0.67 → stjames-0.0.69}/stjames/settings.py +0 -0
  46. {stjames-0.0.67 → stjames-0.0.69}/stjames/solvent.py +0 -0
  47. {stjames-0.0.67 → stjames-0.0.69}/stjames/task.py +0 -0
  48. {stjames-0.0.67 → stjames-0.0.69}/stjames/thermochem_settings.py +0 -0
  49. {stjames-0.0.67 → stjames-0.0.69}/stjames/types.py +0 -0
  50. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/admet.py +0 -0
  51. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/basic_calculation.py +0 -0
  52. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/bde.py +0 -0
  53. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/conformer.py +0 -0
  54. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/conformer_search.py +0 -0
  55. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/descriptors.py +0 -0
  56. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/docking.py +0 -0
  57. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/electronic_properties.py +0 -0
  58. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/hydrogen_bond_basicity.py +0 -0
  59. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/ion_mobility.py +0 -0
  60. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/irc.py +0 -0
  61. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/molecular_dynamics.py +0 -0
  62. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/multistage_opt.py +0 -0
  63. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/pka.py +0 -0
  64. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/redox_potential.py +0 -0
  65. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/solubility.py +0 -0
  66. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/spin_states.py +0 -0
  67. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/tautomer.py +0 -0
  68. {stjames-0.0.67 → stjames-0.0.69}/stjames/workflows/workflow.py +0 -0
  69. {stjames-0.0.67 → stjames-0.0.69}/stjames.egg-info/SOURCES.txt +0 -0
  70. {stjames-0.0.67 → stjames-0.0.69}/stjames.egg-info/dependency_links.txt +0 -0
  71. {stjames-0.0.67 → stjames-0.0.69}/stjames.egg-info/requires.txt +0 -0
  72. {stjames-0.0.67 → stjames-0.0.69}/stjames.egg-info/top_level.txt +0 -0
  73. {stjames-0.0.67 → stjames-0.0.69}/tests/test_constraints.py +0 -0
  74. {stjames-0.0.67 → stjames-0.0.69}/tests/test_from_extxyz.py +0 -0
  75. {stjames-0.0.67 → stjames-0.0.69}/tests/test_molecule.py +0 -0
  76. {stjames-0.0.67 → stjames-0.0.69}/tests/test_pdb.py +0 -0
  77. {stjames-0.0.67 → stjames-0.0.69}/tests/test_rounding.py +0 -0
  78. {stjames-0.0.67 → stjames-0.0.69}/tests/test_settings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stjames
3
- Version: 0.0.67
3
+ Version: 0.0.69
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,6 +1,6 @@
1
1
  [project]
2
2
  name = "stjames"
3
- version = "0.0.67"
3
+ version = "0.0.69"
4
4
  description = "standardized JSON atom/molecule encoding scheme"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -36,6 +36,7 @@ class Method(LowercaseStrEnum):
36
36
  OCP24_S = "ocp24_s"
37
37
  OCP24_L = "ocp24_l"
38
38
  ORB_V2 = "orb_v2"
39
+ ORB_V3_CONSERVATIVE_INF_OMAT = "orb_v3_conservative_inf_omat"
39
40
 
40
41
  GFN_FF = "gfn_ff"
41
42
  GFN0_XTB = "gfn0_xtb"
@@ -50,8 +51,8 @@ class Method(LowercaseStrEnum):
50
51
  RM1 = "rm1"
51
52
 
52
53
 
53
- PrepackagedNNPMethod = Literal[Method.AIMNET2_WB97MD3, Method.OCP24_S, Method.OCP24_L, Method.RM1]
54
- PREPACKAGED_NNP_METHODS = [Method.AIMNET2_WB97MD3, Method.OCP24_S, Method.OCP24_L, Method.RM1]
54
+ PrepackagedNNPMethod = Literal[Method.AIMNET2_WB97MD3, Method.OCP24_S, Method.OCP24_L, Method.RM1, Method.ORB_V3_CONSERVATIVE_INF_OMAT]
55
+ PREPACKAGED_NNP_METHODS = [Method.AIMNET2_WB97MD3, Method.OCP24_S, Method.OCP24_L, Method.RM1, Method.ORB_V3_CONSERVATIVE_INF_OMAT]
55
56
 
56
57
  CorrectableNNPMethod = Literal[Method.MACE_MP_0B2_L, Method.ORB_V2]
57
58
  CORRECTABLE_NNP_METHODS = [Method.MACE_MP_0B2_L, Method.ORB_V2]
@@ -2,7 +2,7 @@ from enum import Enum
2
2
 
3
3
 
4
4
  class Status(int, Enum):
5
- # what a job gets when it's created
5
+ # what a job gets when it's created if user is below max_concurrency
6
6
  QUEUED = 0
7
7
 
8
8
  # still running...
@@ -16,3 +16,6 @@ class Status(int, Enum):
16
16
 
17
17
  # job was stopped externally, maybe timed out or something
18
18
  STOPPED = 4
19
+
20
+ # Status if a user has exceeded their allowed max_concurrency
21
+ AWAITING_QUEUE = 5
@@ -14,6 +14,7 @@ from .fukui import *
14
14
  from .hydrogen_bond_basicity import *
15
15
  from .ion_mobility import *
16
16
  from .irc import *
17
+ from .macropka import *
17
18
  from .molecular_dynamics import *
18
19
  from .multistage_opt import *
19
20
  from .pka import *
@@ -37,6 +38,7 @@ WORKFLOW_NAME = Literal[
37
38
  "hydrogen_bond_basicity",
38
39
  "ion_mobility",
39
40
  "irc",
41
+ "macropka",
40
42
  "molecular_dynamics",
41
43
  "multistage_opt",
42
44
  "pka",
@@ -60,6 +62,7 @@ WORKFLOW_MAPPING: dict[WORKFLOW_NAME, Workflow] = {
60
62
  "hydrogen_bond_basicity": HydrogenBondBasicityWorkflow, # type: ignore [dict-item]
61
63
  "ion_mobility": IonMobilityWorkflow, # type: ignore [dict-item]
62
64
  "irc": IRCWorkflow, # type: ignore [dict-item]
65
+ "macropka": MacropKaWorkflow, # type: ignore [dict-item]
63
66
  "molecular_dynamics": MolecularDynamicsWorkflow, # type: ignore [dict-item]
64
67
  "multistage_opt": MultiStageOptWorkflow, # type: ignore [dict-item]
65
68
  "pka": pKaWorkflow, # type: ignore [dict-item]
@@ -5,6 +5,7 @@ from typing import Annotated
5
5
  from pydantic import AfterValidator
6
6
 
7
7
  from ..base import round_optional_float
8
+ from ..settings import Settings
8
9
  from ..types import UUID, FloatPerAtom, round_optional_float_per_atom
9
10
  from .workflow import MoleculeWorkflow
10
11
 
@@ -17,6 +18,12 @@ class FukuiIndexWorkflow(MoleculeWorkflow):
17
18
  :param initial_molecule: Molecule of interest
18
19
  :param mode: Mode for workflow (currently unused)
19
20
 
21
+ Settings:
22
+ :param opt_settings: if given, the settings for optimization. if none, no optimization will be conducted.
23
+ :param opt_engine: the engine for optimization
24
+ :param fukui_settings: the settings for Fukui index calculations.
25
+ :param fukui_engine: the engine for Fukui index calculations
26
+
20
27
  Results:
21
28
  :param optimization: UUID of optimization
22
29
  :param global_electrophilicity_index: global electrophilicity index
@@ -25,7 +32,12 @@ class FukuiIndexWorkflow(MoleculeWorkflow):
25
32
  :param fukui_zero: Fukui index for zero charges
26
33
  """
27
34
 
28
- # UUID of optimization
35
+ opt_settings: Settings | None = None
36
+ opt_engine: str | None = None
37
+
38
+ fukui_settings: Settings = Settings(method="gfn1_xtb")
39
+ fukui_engine: str | None = None
40
+
29
41
  optimization: UUID | None = None
30
42
 
31
43
  global_electrophilicity_index: Annotated[float | None, AfterValidator(round_optional_float(6))] = None
@@ -1,6 +1,6 @@
1
1
  """pKa workflow."""
2
2
 
3
- from typing import Annotated, Self
3
+ from typing import Annotated, Optional, Self
4
4
 
5
5
  from pydantic import AfterValidator, model_validator
6
6
 
@@ -55,18 +55,41 @@ class MacropKaWorkflow(SMILESWorkflow):
55
55
  :param microstate_weights_by_pH: precompute the % of different microstates
56
56
  """
57
57
 
58
- temperature: Annotated[float, AfterValidator(round_float(3))] = 298.0
59
58
  min_pH: Annotated[float, AfterValidator(round_float(3))] = 0.0
60
59
  max_pH: Annotated[float, AfterValidator(round_float(3))] = 14.0
61
60
 
61
+ max_charge: int = 2
62
+ min_charge: int = -2
63
+
62
64
  microstates: list[MacropKaMicrostate] = []
63
65
  pKa_values: list[MacropKaValue] = []
64
- microstate_weights_by_pH: dict[float, Annotated[list[float], AfterValidator(round_list(6))]] = {}
66
+ microstate_weights_by_pH: list[
67
+ tuple[
68
+ Annotated[float, AfterValidator(round_float(3))],
69
+ Annotated[list[float], AfterValidator(round_list(6))],
70
+ ]
71
+ ] = []
72
+
73
+ isoelectric_point: Annotated[Optional[float], AfterValidator(round_float(3))] = None
74
+
75
+ logD_by_pH: list[
76
+ tuple[
77
+ Annotated[float, AfterValidator(round_float(3))],
78
+ Annotated[float, AfterValidator(round_float(3))],
79
+ ]
80
+ ] = []
65
81
 
66
82
  @model_validator(mode="after")
67
83
  def check_weights(self) -> Self:
68
- for weights in self.microstate_weights_by_pH.values():
84
+ for _, weights in self.microstate_weights_by_pH:
69
85
  if len(weights) != len(self.microstates):
70
86
  raise ValueError("Length of microstate weights doesn't match!")
71
87
 
72
88
  return self
89
+
90
+ @model_validator(mode="after")
91
+ def check_minmax_charges(self) -> Self:
92
+ if self.min_charge >= self.max_charge:
93
+ raise ValueError("Incoherent min/max charge specification")
94
+
95
+ return self
@@ -18,12 +18,14 @@ class ScanPoint(Base):
18
18
  A point in a scan.
19
19
 
20
20
  :param index: index of the point
21
+ :param index_2d: index of the point in 2nd dimension, if applicable
21
22
  :param molecule: Molecule at the point
22
23
  :param energy: energy of the point
23
24
  :param uuid: UUID of the calculation
24
25
  """
25
26
 
26
27
  index: int
28
+ index_2d: int = 0
27
29
  molecule: Molecule
28
30
  energy: Annotated[float | None, AfterValidator(round_optional_float(6))] = None
29
31
  uuid: UUID | None = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stjames
3
- Version: 0.0.67
3
+ Version: 0.0.69
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes