stjames 0.0.88__py3-none-any.whl → 0.0.90__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/workflows/bde.py +31 -4
- stjames/workflows/ion_mobility.py +6 -0
- stjames/workflows/multistage_opt.py +0 -1
- stjames/workflows/pose_analysis_md.py +4 -3
- {stjames-0.0.88.dist-info → stjames-0.0.90.dist-info}/METADATA +1 -1
- {stjames-0.0.88.dist-info → stjames-0.0.90.dist-info}/RECORD +9 -9
- {stjames-0.0.88.dist-info → stjames-0.0.90.dist-info}/WHEEL +0 -0
- {stjames-0.0.88.dist-info → stjames-0.0.90.dist-info}/licenses/LICENSE +0 -0
- {stjames-0.0.88.dist-info → stjames-0.0.90.dist-info}/top_level.txt +0 -0
stjames/workflows/bde.py
CHANGED
|
@@ -6,10 +6,11 @@ from typing import Annotated, Any, Iterable, Self, TypeVar
|
|
|
6
6
|
from pydantic import AfterValidator, BaseModel, Field, PositiveInt, ValidationInfo, field_validator, model_validator
|
|
7
7
|
|
|
8
8
|
from ..base import round_optional_float
|
|
9
|
+
from ..method import Method
|
|
9
10
|
from ..mode import Mode
|
|
10
11
|
from ..molecule import Molecule
|
|
11
12
|
from ..types import UUID
|
|
12
|
-
from .multistage_opt import MultiStageOptMixin
|
|
13
|
+
from .multistage_opt import MultiStageOptMixin, mso_settings_from_method_string
|
|
13
14
|
from .workflow import MoleculeWorkflow
|
|
14
15
|
|
|
15
16
|
# the id of a mutable object may change, thus using object()
|
|
@@ -57,13 +58,13 @@ class BDEWorkflow(MoleculeWorkflow, MultiStageOptMixin):
|
|
|
57
58
|
|
|
58
59
|
Inherited:
|
|
59
60
|
:param initial_molecule: Molecule of interest
|
|
60
|
-
:param mode: Mode for workflow
|
|
61
61
|
:param multistage_opt_settings: set by mode unless mode=MANUAL (ignores additional settings if set)
|
|
62
62
|
:param solvent: solvent to use for singlepoint
|
|
63
63
|
:param xtb_preopt: pre-optimize with xtb (sets based on mode when None)
|
|
64
64
|
:param frequencies: whether to calculate frequencies
|
|
65
65
|
|
|
66
66
|
Overridden:
|
|
67
|
+
:param mode: Mode for workflow or method string from BDE_METHODS
|
|
67
68
|
:param mso_mode: Mode for MultiStageOptSettings
|
|
68
69
|
|
|
69
70
|
Turned off:
|
|
@@ -81,6 +82,7 @@ class BDEWorkflow(MoleculeWorkflow, MultiStageOptMixin):
|
|
|
81
82
|
:param bdes: BDE results
|
|
82
83
|
"""
|
|
83
84
|
|
|
85
|
+
mode: Mode | str # type: ignore [assignment]
|
|
84
86
|
mso_mode: Mode = _sentinel_mso_mode # type: ignore [assignment]
|
|
85
87
|
optimize_fragments: bool = None # type: ignore [assignment]
|
|
86
88
|
|
|
@@ -95,6 +97,13 @@ class BDEWorkflow(MoleculeWorkflow, MultiStageOptMixin):
|
|
|
95
97
|
optimization_energy: float | None = None
|
|
96
98
|
bdes: list[BDE] = Field(default_factory=list)
|
|
97
99
|
|
|
100
|
+
def __repr__(self) -> str:
|
|
101
|
+
if self.mode != Mode.MANUAL:
|
|
102
|
+
name = self.mode.name if isinstance(self.mode, Mode) else self.mode
|
|
103
|
+
return f"<{type(self).__name__} {name}>"
|
|
104
|
+
|
|
105
|
+
return f"<{type(self).__name__} {self.level_of_theory}>"
|
|
106
|
+
|
|
98
107
|
def __str__(self) -> str:
|
|
99
108
|
r"""
|
|
100
109
|
Return a string representation of the BDE workflow.
|
|
@@ -104,7 +113,8 @@ class BDEWorkflow(MoleculeWorkflow, MultiStageOptMixin):
|
|
|
104
113
|
(1,)
|
|
105
114
|
(2,)
|
|
106
115
|
"""
|
|
107
|
-
|
|
116
|
+
name = self.mode.name if isinstance(self.mode, Mode) else self.mode
|
|
117
|
+
return f"{type(self).__name__} {name}\n" + "\n".join(map(str, self.fragment_indices))
|
|
108
118
|
|
|
109
119
|
@property
|
|
110
120
|
def level_of_theory(self) -> str:
|
|
@@ -142,7 +152,14 @@ class BDEWorkflow(MoleculeWorkflow, MultiStageOptMixin):
|
|
|
142
152
|
@classmethod
|
|
143
153
|
def set_mso_mode(cls, values: dict[str, Any]) -> dict[str, Any]:
|
|
144
154
|
"""Set the MultiStageOptSettings mode to match current BDE mode."""
|
|
145
|
-
|
|
155
|
+
mode = values["mode"].upper()
|
|
156
|
+
if mode in BDE_METHODS:
|
|
157
|
+
values["mso_mode"] = Mode.MANUAL
|
|
158
|
+
values["multistage_opt_settings"] = mso_settings_from_method_string(mode)
|
|
159
|
+
else:
|
|
160
|
+
values["mode"] = Mode(mode)
|
|
161
|
+
values["mso_mode"] = values["mode"]
|
|
162
|
+
|
|
146
163
|
return values
|
|
147
164
|
|
|
148
165
|
@model_validator(mode="after")
|
|
@@ -158,6 +175,8 @@ class BDEWorkflow(MoleculeWorkflow, MultiStageOptMixin):
|
|
|
158
175
|
case Mode.RAPID | Mode.CAREFUL | Mode.METICULOUS:
|
|
159
176
|
# Default on
|
|
160
177
|
self.optimize_fragments = self.optimize_fragments or self.optimize_fragments is None
|
|
178
|
+
case m if m in BDE_METHODS:
|
|
179
|
+
self.optimize_fragments = True
|
|
161
180
|
case _:
|
|
162
181
|
raise NotImplementedError(f"{self.mode} not implemented.")
|
|
163
182
|
|
|
@@ -260,3 +279,11 @@ def find_AB_bonds(molecule: Molecule, a: int, b: int, distance_max: float) -> It
|
|
|
260
279
|
atomic_number_indices(molecule, b),
|
|
261
280
|
),
|
|
262
281
|
)
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
BDE_METHODS = {
|
|
285
|
+
f"{Method.G_XTB.name}",
|
|
286
|
+
f"{Method.G_XTB.name}//{Method.GFN2_XTB.name}",
|
|
287
|
+
f"{Method.R2SCAN3C.name}//{Method.GFN2_XTB.name}",
|
|
288
|
+
f"{Method.OMOL25_CONSERVING_S.name}",
|
|
289
|
+
}
|
|
@@ -13,10 +13,13 @@ class IonMobilityWorkflow(MoleculeWorkflow):
|
|
|
13
13
|
:param mode: Mode for workflow (currently unused)
|
|
14
14
|
|
|
15
15
|
New:
|
|
16
|
+
:param protonate: automatically protonate the molecule
|
|
17
|
+
:param temperature: the temperature, in Kelvin
|
|
16
18
|
:param do_csearch: whether to perform a conformational search
|
|
17
19
|
:param do_optimization: whether to perform an optimization
|
|
18
20
|
|
|
19
21
|
Results:
|
|
22
|
+
:param conformers: the UUIDs of the conformers
|
|
20
23
|
:param conformer_ccs: the collision cross section (Å**2) per conformer
|
|
21
24
|
:param conformer_ccs_stdev: the uncertainty in the same
|
|
22
25
|
:param conformer_weights: the Boltzmann weights at RT
|
|
@@ -24,8 +27,11 @@ class IonMobilityWorkflow(MoleculeWorkflow):
|
|
|
24
27
|
:param average_ccs_stdev: the uncertainty in the same
|
|
25
28
|
"""
|
|
26
29
|
|
|
30
|
+
protonate: bool = False
|
|
31
|
+
temperature: float = 300
|
|
27
32
|
do_csearch: bool = True
|
|
28
33
|
do_optimization: bool = True
|
|
34
|
+
|
|
29
35
|
conformers: list[UUID] = []
|
|
30
36
|
|
|
31
37
|
conformer_ccs: list[float] = []
|
|
@@ -271,7 +271,6 @@ class MultiStageOptMixin(BaseModel):
|
|
|
271
271
|
def mso_settings_from_method_string(
|
|
272
272
|
methods: str,
|
|
273
273
|
solvent: Solvent | None = None,
|
|
274
|
-
use_solvent_for_opt: bool = False,
|
|
275
274
|
constraints: list[Constraint] | None = None,
|
|
276
275
|
transition_state: bool = False,
|
|
277
276
|
frequencies: bool = False,
|
|
@@ -86,7 +86,7 @@ class PoseAnalysisMolecularDynamicsWorkflow(MoleculeWorkflow):
|
|
|
86
86
|
constrain_hydrogens: bool = True
|
|
87
87
|
nonbonded_cutoff: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 8.0
|
|
88
88
|
|
|
89
|
-
protein_prune_cutoff: Annotated[PositiveFloat, AfterValidator(round_float(3))] =
|
|
89
|
+
protein_prune_cutoff: Annotated[PositiveFloat, AfterValidator(round_float(3))] | None = None
|
|
90
90
|
protein_restraint_cutoff: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 7.0
|
|
91
91
|
protein_restraint_constant: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 100
|
|
92
92
|
|
|
@@ -100,6 +100,7 @@ class PoseAnalysisMolecularDynamicsWorkflow(MoleculeWorkflow):
|
|
|
100
100
|
@model_validator(mode="after")
|
|
101
101
|
def check_cutoff_sanity(self) -> Self:
|
|
102
102
|
"""Check if protein is provided."""
|
|
103
|
-
if self.protein_prune_cutoff
|
|
104
|
-
|
|
103
|
+
if self.protein_prune_cutoff is not None:
|
|
104
|
+
if self.protein_prune_cutoff < self.protein_restraint_cutoff:
|
|
105
|
+
raise ValueError("Pruning cutoff must be larger than restraint cutoff")
|
|
105
106
|
return self
|
|
@@ -40,7 +40,7 @@ stjames/data/symbol_element.json,sha256=vl_buFusTqBd-muYQtMLtTDLy2OtBI6KkBeqkaWR
|
|
|
40
40
|
stjames/workflows/__init__.py,sha256=S5Z8bOWvvh9-TYV2VgfSpfvvfN1ceShTo5Dro5tmlP0,2796
|
|
41
41
|
stjames/workflows/admet.py,sha256=h8ph6oeRCxU3-_jqRRWPg3RZcheu9JzCHiWqSC9VYKY,1296
|
|
42
42
|
stjames/workflows/basic_calculation.py,sha256=ZX3KwhfyyCTjc2ougQIL4If7gtwZP9WjqpL45mBquW0,573
|
|
43
|
-
stjames/workflows/bde.py,sha256=
|
|
43
|
+
stjames/workflows/bde.py,sha256=g_In-caftXiimrhfdptHjpfrYQUs3vF58qYmRnaTN8g,10825
|
|
44
44
|
stjames/workflows/conformer.py,sha256=18aO6ngMBeGAmQkBdLGCCHr398RIYr1v2hD2IT1u4cc,3005
|
|
45
45
|
stjames/workflows/conformer_search.py,sha256=4yPEKIIedeaVvaAwgjwC1FxiHqM6n2zOF6c9Yk_q1oA,13513
|
|
46
46
|
stjames/workflows/descriptors.py,sha256=T4tc7xdtBdxESGO86KR323jPQ2pgwxBqgV0khA6MEgQ,584
|
|
@@ -48,13 +48,13 @@ stjames/workflows/docking.py,sha256=GCW_-JeEZcMXKZ9EQFOxWUYRo0jsbzwIv10aSz8KuaQ,
|
|
|
48
48
|
stjames/workflows/electronic_properties.py,sha256=GT3-NC7w-dbcOJ-3AzJ7LgzH6frTbiH2Iyb9BCa-SvY,4112
|
|
49
49
|
stjames/workflows/fukui.py,sha256=T6TDg-lcE-sfTDVpa3KFBenLe7PGUO2QrQ2jNuw_iiU,1756
|
|
50
50
|
stjames/workflows/hydrogen_bond_basicity.py,sha256=q9eXty68ZyCmrB6G_8bfeOT8Ui_IQquRPu6z-3rNreQ,1589
|
|
51
|
-
stjames/workflows/ion_mobility.py,sha256=
|
|
51
|
+
stjames/workflows/ion_mobility.py,sha256=HbO_222pjiG4YeJ70kYtQJvXQJieDSMAU5y26vIx1vI,1316
|
|
52
52
|
stjames/workflows/irc.py,sha256=ZP7icylW8rgo_Uh7h3bmyumn0ru1IyF-61nP5Jnmq3M,3402
|
|
53
53
|
stjames/workflows/macropka.py,sha256=KRIyk4gsSYL3eqyzCDndStGLwjWSo60cgCAzvAoD1Nk,3754
|
|
54
54
|
stjames/workflows/molecular_dynamics.py,sha256=kxugE73Ntzpj-xpJSoQ1EwGzXXdvi_NTyeP4913EVwE,3173
|
|
55
|
-
stjames/workflows/multistage_opt.py,sha256=
|
|
55
|
+
stjames/workflows/multistage_opt.py,sha256=SpbA8hNvktnlLS7C-9mBNGluBSrdVS8ygHl1C4TzWcI,16499
|
|
56
56
|
stjames/workflows/pka.py,sha256=j3vBh2YM3nJzJ1XJKPsmYahRCeaU9n3P-G-u9_moaFw,2065
|
|
57
|
-
stjames/workflows/pose_analysis_md.py,sha256=
|
|
57
|
+
stjames/workflows/pose_analysis_md.py,sha256=ES0XlzaLpTjhLrNvcB0zFZa1b1ZHXekN72EbLsx0Skw,4723
|
|
58
58
|
stjames/workflows/protein_cofolding.py,sha256=_05DCzzKGZFtns9HARAMjcWxVrJU9DPb3VNVWSgwWR8,2173
|
|
59
59
|
stjames/workflows/redox_potential.py,sha256=7S18t9Y3eynSnA3lZbRlvLfdbgeBopdiigLzt1zxg5c,3871
|
|
60
60
|
stjames/workflows/scan.py,sha256=DXQBpa2t2PowAtOwmdgpxaSLq--fEShljzAGSb8Nf5U,2993
|
|
@@ -62,8 +62,8 @@ stjames/workflows/solubility.py,sha256=kGfVyPPGDLRpf2j6dSY7woCkfsoXSbUzdSImA4mcM
|
|
|
62
62
|
stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQnaI,4748
|
|
63
63
|
stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
|
|
64
64
|
stjames/workflows/workflow.py,sha256=OE05pt2ZOd8TzTOlBngXCVg9wv_553ZR60VNRPlq0f8,1953
|
|
65
|
-
stjames-0.0.
|
|
66
|
-
stjames-0.0.
|
|
67
|
-
stjames-0.0.
|
|
68
|
-
stjames-0.0.
|
|
69
|
-
stjames-0.0.
|
|
65
|
+
stjames-0.0.90.dist-info/licenses/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
|
|
66
|
+
stjames-0.0.90.dist-info/METADATA,sha256=IbwiPJaGd1rkTp0eSNDf5yTAHqnJ21wTIgI18ObeaHA,1724
|
|
67
|
+
stjames-0.0.90.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
68
|
+
stjames-0.0.90.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
|
|
69
|
+
stjames-0.0.90.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|