stjames 0.0.94__py3-none-any.whl → 0.0.96__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/scf_settings.py CHANGED
@@ -1,7 +1,19 @@
1
- from pydantic import BaseModel
1
+ from .base import Base, LowercaseStrEnum
2
2
 
3
3
 
4
- class SCFSettings(BaseModel):
5
- max_iters: int = 250
4
+ class UseSOSCF(LowercaseStrEnum):
5
+ ALWAYS = "always"
6
+ UPON_FAILURE = "upon_failure"
7
+ NEVER = "never"
8
+
9
+
10
+ class SCFSettings(Base):
11
+ """
12
+ Settings for SCF convergence.
6
13
 
7
- soscf: bool = False
14
+ :param max_iters: the maximum number of SCF iterations to permit
15
+ :param soscf: whether or not to use SOSCF (second-order SCF).
16
+ """
17
+
18
+ max_iters: int = 250
19
+ soscf: UseSOSCF = UseSOSCF.UPON_FAILURE
@@ -17,6 +17,7 @@ from .irc import *
17
17
  from .macropka import *
18
18
  from .molecular_dynamics import *
19
19
  from .multistage_opt import *
20
+ from .nmr import *
20
21
  from .pka import *
21
22
  from .pose_analysis_md import *
22
23
  from .protein_cofolding import *
@@ -43,6 +44,7 @@ WORKFLOW_NAME = Literal[
43
44
  "macropka",
44
45
  "molecular_dynamics",
45
46
  "multistage_opt",
47
+ "nmr",
46
48
  "pka",
47
49
  "pose_analysis_md",
48
50
  "protein_cofolding",
@@ -69,6 +71,7 @@ WORKFLOW_MAPPING: dict[WORKFLOW_NAME, Workflow] = {
69
71
  "macropka": MacropKaWorkflow, # type: ignore [dict-item]
70
72
  "molecular_dynamics": MolecularDynamicsWorkflow, # type: ignore [dict-item]
71
73
  "multistage_opt": MultiStageOptWorkflow, # type: ignore [dict-item]
74
+ "nmr": NMRSpectroscopyWorkflow, # type: ignore [dict-item]
72
75
  "pka": pKaWorkflow, # type: ignore [dict-item]
73
76
  "pose_analysis_md": PoseAnalysisMolecularDynamicsWorkflow, # type: ignore [dict-item]
74
77
  "protein_cofolding": ProteinCofoldingWorkflow, # type: ignore [dict-item]
@@ -1,6 +1,11 @@
1
1
  """Ion mobility workflow."""
2
2
 
3
- from ..types import UUID
3
+ from typing import Annotated
4
+
5
+ from pydantic import AfterValidator
6
+
7
+ from ..base import round_optional_float
8
+ from ..types import UUID, round_list
4
9
  from .workflow import MoleculeWorkflow
5
10
 
6
11
 
@@ -34,9 +39,9 @@ class IonMobilityWorkflow(MoleculeWorkflow):
34
39
 
35
40
  conformers: list[UUID] = []
36
41
 
37
- conformer_ccs: list[float] = []
38
- conformer_ccs_stdev: list[float] = []
39
- boltzmann_weights: list[float] = []
42
+ conformer_ccs: Annotated[list[float], AfterValidator(round_list(3))] = []
43
+ conformer_ccs_stdev: Annotated[list[float], AfterValidator(round_list(3))] = []
44
+ boltzmann_weights: Annotated[list[float], AfterValidator(round_list(3))] = []
40
45
 
41
- average_ccs: float | None = None
42
- average_ccs_stdev: float | None = None
46
+ average_ccs: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
47
+ average_ccs_stdev: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
@@ -0,0 +1,54 @@
1
+ """Nuclear-magnetic-resonance spectroscopy workflow."""
2
+
3
+ from typing import Annotated
4
+
5
+ from pydantic import AfterValidator
6
+
7
+ from ..base import LowercaseStrEnum
8
+ from ..mode import Mode
9
+ from ..settings import Settings
10
+ from ..solvent import Solvent
11
+ from ..types import UUID, round_list
12
+ from .conformer_search import ConformerGenSettings, iMTDSettings
13
+ from .multistage_opt import MultiStageOptSettings
14
+ from .workflow import MoleculeWorkflow
15
+
16
+
17
+ class NMRMethod(LowercaseStrEnum):
18
+ MAGNETZERO = "magnet-zero"
19
+
20
+
21
+ class NMRSpectroscopyWorkflow(MoleculeWorkflow):
22
+ """
23
+ Workflow for calculating NMR spectra.
24
+
25
+ Inherited:
26
+ :param initial_molecule: Molecule of interest
27
+ :param mode: Mode for workflow (currently unused)
28
+
29
+ New:
30
+ :param nmr_method: how to run the NMR calculations
31
+ :param solvent: the solvent in which to run the calculations
32
+ :param conf_gen_settings : the conformer-search settings. if `None`, no conformer search will be performed
33
+ :param multistage_opt_settings: the optimization settings. if `None`, no optimization will be performed
34
+
35
+ Results:
36
+ :param conformers: list of conformer UUIDs
37
+ :param boltzmann_weights: the boltzmann weights for each conformer
38
+ :param per_conformer_chemical_shifts: the per-atom shifts for each conformer
39
+ :param chemical_shifts: the per-atom shifts
40
+ """
41
+
42
+ nmr_method: NMRMethod = NMRMethod.MAGNETZERO
43
+ solvent: Solvent = Solvent.CHLOROFORM
44
+
45
+ conf_gen_settings: ConformerGenSettings | None = iMTDSettings(mode="careful")
46
+ multistage_opt_settings: MultiStageOptSettings | None = MultiStageOptSettings(
47
+ mode=Mode.MANUAL,
48
+ optimization_settings=[Settings(method="aimnet2_wb97md3")],
49
+ )
50
+
51
+ conformers: list[UUID] = []
52
+ boltzmann_weights: Annotated[list[float], AfterValidator(round_list(3))] = []
53
+ per_conformer_chemical_shifts: list[Annotated[list[float], AfterValidator(round_list(3))]] = []
54
+ chemical_shifts: Annotated[list[float], AfterValidator(round_list(3))] = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stjames
3
- Version: 0.0.94
3
+ Version: 0.0.96
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
@@ -16,7 +16,7 @@ stjames/opt_settings.py,sha256=LEwGXUEKq5TfU5rr60Z4QQBhCqiw1Ch5w0M_lXawWo8,642
16
16
  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
- stjames/scf_settings.py,sha256=Wx_Op5k4renAd-kUV1Utstb7iLxc5OHMQpOHJaAMAHA,113
19
+ stjames/scf_settings.py,sha256=ecEVP3aKArNorpbP0mapnbc-EMjjzx4jeVW6q9tvqsw,436
20
20
  stjames/settings.py,sha256=qZ3yhuMIQNiLs8Z-uEyVReSg2IQAjnDzQ6euHHqE6xI,6128
21
21
  stjames/solvent.py,sha256=u037tmu-9oa21s-WEDZ7VC7nuNVjkqR2ML4JWjWSME4,1158
22
22
  stjames/status.py,sha256=KQHDqWSd4kBLow23YLcfOkFdtqN61RFZI-jf2zANWRY,501
@@ -35,7 +35,7 @@ stjames/data/isotopes.json,sha256=5ba8QnLrHD_Ypv2xekv2cIRwYrX3MQ19-1FOFtt0RuU,83
35
35
  stjames/data/nist_isotopes.json,sha256=d5DNk1dX0iB1waEYIRR6JMHuA7AuYwSBEgBvb4EKyhM,14300
36
36
  stjames/data/read_nist_isotopes.py,sha256=y10FNjW43QpC45qib7VHsIghEwT7GG5rsNwHdc9osRI,3309
37
37
  stjames/data/symbol_element.json,sha256=vl_buFusTqBd-muYQtMLtTDLy2OtBI6KkBeqkaWRQrg,1186
38
- stjames/workflows/__init__.py,sha256=S5Z8bOWvvh9-TYV2VgfSpfvvfN1ceShTo5Dro5tmlP0,2796
38
+ stjames/workflows/__init__.py,sha256=wGTCSEvGmLVG-dnkylVsKq7_27n8gQlFfsJiX9RN33w,2890
39
39
  stjames/workflows/admet.py,sha256=h8ph6oeRCxU3-_jqRRWPg3RZcheu9JzCHiWqSC9VYKY,1296
40
40
  stjames/workflows/basic_calculation.py,sha256=ZX3KwhfyyCTjc2ougQIL4If7gtwZP9WjqpL45mBquW0,573
41
41
  stjames/workflows/bde.py,sha256=g_In-caftXiimrhfdptHjpfrYQUs3vF58qYmRnaTN8g,10825
@@ -46,11 +46,12 @@ stjames/workflows/docking.py,sha256=CgpLjMfpPka1fcg0VJPeyJCOnZjnJTrgfNeMAKiX4zM,
46
46
  stjames/workflows/electronic_properties.py,sha256=GT3-NC7w-dbcOJ-3AzJ7LgzH6frTbiH2Iyb9BCa-SvY,4112
47
47
  stjames/workflows/fukui.py,sha256=T6TDg-lcE-sfTDVpa3KFBenLe7PGUO2QrQ2jNuw_iiU,1756
48
48
  stjames/workflows/hydrogen_bond_basicity.py,sha256=q9eXty68ZyCmrB6G_8bfeOT8Ui_IQquRPu6z-3rNreQ,1589
49
- stjames/workflows/ion_mobility.py,sha256=HbO_222pjiG4YeJ70kYtQJvXQJieDSMAU5y26vIx1vI,1316
49
+ stjames/workflows/ion_mobility.py,sha256=rvvAt4ZD-Npl0tHL7TEuaS3XKjHiMkSZVzyJoivdyps,1665
50
50
  stjames/workflows/irc.py,sha256=ZP7icylW8rgo_Uh7h3bmyumn0ru1IyF-61nP5Jnmq3M,3402
51
51
  stjames/workflows/macropka.py,sha256=KRIyk4gsSYL3eqyzCDndStGLwjWSo60cgCAzvAoD1Nk,3754
52
52
  stjames/workflows/molecular_dynamics.py,sha256=kxugE73Ntzpj-xpJSoQ1EwGzXXdvi_NTyeP4913EVwE,3173
53
53
  stjames/workflows/multistage_opt.py,sha256=SpbA8hNvktnlLS7C-9mBNGluBSrdVS8ygHl1C4TzWcI,16499
54
+ stjames/workflows/nmr.py,sha256=fDtP94oKErPvRlR1x4kSYSycICizTNROEdwnLsxP72c,1997
54
55
  stjames/workflows/pka.py,sha256=j3vBh2YM3nJzJ1XJKPsmYahRCeaU9n3P-G-u9_moaFw,2065
55
56
  stjames/workflows/pose_analysis_md.py,sha256=ES0XlzaLpTjhLrNvcB0zFZa1b1ZHXekN72EbLsx0Skw,4723
56
57
  stjames/workflows/protein_cofolding.py,sha256=6WWbVOGzFjIRgQLMmMVODfIxo1jYFmRS1xnJmN0kOBw,3016
@@ -60,8 +61,8 @@ stjames/workflows/solubility.py,sha256=kGfVyPPGDLRpf2j6dSY7woCkfsoXSbUzdSImA4mcM
60
61
  stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQnaI,4748
61
62
  stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
62
63
  stjames/workflows/workflow.py,sha256=OE05pt2ZOd8TzTOlBngXCVg9wv_553ZR60VNRPlq0f8,1953
63
- stjames-0.0.94.dist-info/licenses/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
64
- stjames-0.0.94.dist-info/METADATA,sha256=WjfSeqw_fW_J-9vstRKCwTHyJ5TVi0ZYO2BujRC2ucw,1724
65
- stjames-0.0.94.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
66
- stjames-0.0.94.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
67
- stjames-0.0.94.dist-info/RECORD,,
64
+ stjames-0.0.96.dist-info/licenses/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
65
+ stjames-0.0.96.dist-info/METADATA,sha256=kZzb-iwZIsgUHNbeGR9CyRD1zoBqwAntUFyIQ2LBJNI,1724
66
+ stjames-0.0.96.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
67
+ stjames-0.0.96.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
68
+ stjames-0.0.96.dist-info/RECORD,,