stjames 0.0.101__tar.gz → 0.0.102__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.
- {stjames-0.0.101/stjames.egg-info → stjames-0.0.102}/PKG-INFO +1 -1
- {stjames-0.0.101 → stjames-0.0.102}/pyproject.toml +1 -1
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/solubility.py +29 -5
- {stjames-0.0.101 → stjames-0.0.102/stjames.egg-info}/PKG-INFO +1 -1
- {stjames-0.0.101 → stjames-0.0.102}/LICENSE +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/README.md +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/setup.cfg +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/__init__.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/_deprecated_solvent_settings.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/atom.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/atomium_stjames/__init__.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/atomium_stjames/data.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/atomium_stjames/mmcif.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/atomium_stjames/pdb.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/atomium_stjames/utilities.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/base.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/basis_set.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/calculation.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/compute_settings.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/constraint.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/correction.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/__init__.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/bragg_radii.json +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/elements.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/isotopes.json +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/nist_isotopes.json +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/read_nist_isotopes.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/data/symbol_element.json +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/engine.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/message.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/method.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/mode.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/molecule.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/opt_settings.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/optimization/__init__.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/optimization/freezing_string_method.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/pdb.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/periodic_cell.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/py.typed +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/scf_settings.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/settings.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/solvent.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/status.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/task.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/thermochem_settings.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/types.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/__init__.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/admet.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/basic_calculation.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/bde.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/conformer.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/conformer_search.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/descriptors.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/docking.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/double_ended_ts_search.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/electronic_properties.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/fukui.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/hydrogen_bond_basicity.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/ion_mobility.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/irc.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/macropka.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/molecular_dynamics.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/multistage_opt.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/nmr.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/pka.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/pose_analysis_md.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/protein_cofolding.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/redox_potential.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/scan.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/spin_states.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/tautomer.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames/workflows/workflow.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames.egg-info/SOURCES.txt +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames.egg-info/dependency_links.txt +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames.egg-info/requires.txt +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/stjames.egg-info/top_level.txt +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/tests/test_constraints.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/tests/test_from_extxyz.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/tests/test_molecule.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/tests/test_pdb.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/tests/test_rounding.py +0 -0
- {stjames-0.0.101 → stjames-0.0.102}/tests/test_settings.py +0 -0
|
@@ -4,10 +4,17 @@ from typing import Annotated, Self
|
|
|
4
4
|
|
|
5
5
|
from pydantic import AfterValidator, BaseModel, model_validator
|
|
6
6
|
|
|
7
|
-
from ..
|
|
7
|
+
from ..base import LowercaseStrEnum
|
|
8
|
+
from ..types import round_list, round_optional_list
|
|
8
9
|
from .workflow import SMILESWorkflow
|
|
9
10
|
|
|
10
11
|
|
|
12
|
+
class SolubilityMethod(LowercaseStrEnum):
|
|
13
|
+
FASTSOLV = "fastsolv"
|
|
14
|
+
KINGFISHER = "kingfisher"
|
|
15
|
+
ESOL = "esol"
|
|
16
|
+
|
|
17
|
+
|
|
11
18
|
class SolubilityResult(BaseModel):
|
|
12
19
|
"""
|
|
13
20
|
Solubility result.
|
|
@@ -17,7 +24,7 @@ class SolubilityResult(BaseModel):
|
|
|
17
24
|
"""
|
|
18
25
|
|
|
19
26
|
solubilities: Annotated[list[float], AfterValidator(round_list(6))]
|
|
20
|
-
uncertainties: Annotated[list[float], AfterValidator(
|
|
27
|
+
uncertainties: Annotated[list[float | None], AfterValidator(round_optional_list(6))]
|
|
21
28
|
|
|
22
29
|
@model_validator(mode="after")
|
|
23
30
|
def check_size(self) -> Self:
|
|
@@ -41,9 +48,10 @@ class SolubilityWorkflow(SMILESWorkflow):
|
|
|
41
48
|
:param solubilities: {solvent: SolubilityResult}
|
|
42
49
|
"""
|
|
43
50
|
|
|
51
|
+
solubility_method: SolubilityMethod = SolubilityMethod.FASTSOLV
|
|
44
52
|
initial_smiles: str
|
|
45
|
-
solvents: list[str]
|
|
46
|
-
temperatures: list[float] = [
|
|
53
|
+
solvents: list[str] = ["O"]
|
|
54
|
+
temperatures: list[float] = [298.15]
|
|
47
55
|
|
|
48
56
|
solubilities: dict[str, SolubilityResult] = {}
|
|
49
57
|
|
|
@@ -55,6 +63,22 @@ class SolubilityWorkflow(SMILESWorkflow):
|
|
|
55
63
|
raise ValueError(f"Solubilities for {solvent} must have the same length as temperatures.")
|
|
56
64
|
|
|
57
65
|
if solvent not in self.solvents:
|
|
58
|
-
raise ValueError(f"Solvent {solvent} not in initial list of solvents")
|
|
66
|
+
raise ValueError(f"Solvent {solvent} not in initial list of solvents.")
|
|
67
|
+
|
|
68
|
+
return self
|
|
69
|
+
|
|
70
|
+
@model_validator(mode="after")
|
|
71
|
+
def check_solvent_temperature(self) -> Self:
|
|
72
|
+
"""Check that models with limited domain of applicability are predicting within correct domain."""
|
|
73
|
+
match self.solubility_method:
|
|
74
|
+
case SolubilityMethod.KINGFISHER | SolubilityMethod.ESOL:
|
|
75
|
+
if (len(self.solvents) > 1) or (self.solvents[0] != "O"):
|
|
76
|
+
raise ValueError(f"Method `{self.solubility_method}` can only predict aqueous solubility, so `solvents` must be [`O`] only.")
|
|
77
|
+
if (len(self.temperatures) > 1) or (abs(self.temperatures[0] - 298.15) > 0.1):
|
|
78
|
+
raise ValueError(
|
|
79
|
+
f"Method `{self.solubility_method}` can only predict solubility at room temperature, so `temperatures` must be [298.15] only."
|
|
80
|
+
)
|
|
81
|
+
case _:
|
|
82
|
+
pass
|
|
59
83
|
|
|
60
84
|
return self
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|