stjames 0.0.93__py3-none-any.whl → 0.0.95__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 +0 -3
- stjames/scf_settings.py +11 -69
- stjames/settings.py +0 -69
- stjames/status.py +3 -0
- stjames/workflows/__init__.py +3 -0
- stjames/workflows/ion_mobility.py +11 -6
- stjames/workflows/nmr.py +54 -0
- stjames/workflows/protein_cofolding.py +31 -1
- {stjames-0.0.93.dist-info → stjames-0.0.95.dist-info}/METADATA +1 -1
- {stjames-0.0.93.dist-info → stjames-0.0.95.dist-info}/RECORD +13 -15
- stjames/diis_settings.py +0 -23
- stjames/grid_settings.py +0 -27
- stjames/int_settings.py +0 -31
- {stjames-0.0.93.dist-info → stjames-0.0.95.dist-info}/WHEEL +0 -0
- {stjames-0.0.93.dist-info → stjames-0.0.95.dist-info}/licenses/LICENSE +0 -0
- {stjames-0.0.93.dist-info → stjames-0.0.95.dist-info}/top_level.txt +0 -0
stjames/__init__.py
CHANGED
|
@@ -7,12 +7,9 @@ from .molecule import *
|
|
|
7
7
|
from .workflows import *
|
|
8
8
|
|
|
9
9
|
from .scf_settings import *
|
|
10
|
-
from .int_settings import *
|
|
11
10
|
from .opt_settings import *
|
|
12
11
|
from .compute_settings import *
|
|
13
|
-
from .diis_settings import *
|
|
14
12
|
from .thermochem_settings import *
|
|
15
|
-
from .grid_settings import *
|
|
16
13
|
from .settings import *
|
|
17
14
|
|
|
18
15
|
from .method import *
|
stjames/scf_settings.py
CHANGED
|
@@ -1,77 +1,19 @@
|
|
|
1
|
-
from typing import Any, Optional
|
|
2
|
-
|
|
3
|
-
import pydantic
|
|
4
|
-
from pydantic import PositiveFloat, PositiveInt
|
|
5
|
-
|
|
6
1
|
from .base import Base, LowercaseStrEnum
|
|
7
|
-
from .diis_settings import DIISSettings
|
|
8
|
-
from .grid_settings import GridSettings
|
|
9
|
-
from .int_settings import IntSettings
|
|
10
|
-
|
|
11
2
|
|
|
12
|
-
class SCFInitMethod(LowercaseStrEnum):
|
|
13
|
-
# (See https://manual.q-chem.com/5.2/Ch4.S4.SS2.html for a nice overview here.)
|
|
14
|
-
SAD = "sad"
|
|
15
|
-
CORE = "core"
|
|
16
|
-
# GWH = "gwh"
|
|
17
|
-
READ = "read"
|
|
18
3
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# Cholesky, in future?
|
|
4
|
+
class UseSOSCF(LowercaseStrEnum):
|
|
5
|
+
ALWAYS = "always"
|
|
6
|
+
UPON_FAILURE = "upon_failure"
|
|
7
|
+
NEVER = "never"
|
|
24
8
|
|
|
25
9
|
|
|
26
10
|
class SCFSettings(Base):
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
int_settings: IntSettings = IntSettings()
|
|
31
|
-
grid_settings: GridSettings = GridSettings()
|
|
32
|
-
diis_settings: DIISSettings = DIISSettings()
|
|
33
|
-
|
|
34
|
-
#### orthonormalization
|
|
35
|
-
orthonormalization: OrthonormalizationMethod = OrthonormalizationMethod.CANONICAL
|
|
36
|
-
|
|
37
|
-
#### damping
|
|
38
|
-
do_damping: bool = True
|
|
39
|
-
# when should we stop damping?
|
|
40
|
-
end_damping_error: PositiveFloat = 0.1
|
|
41
|
-
# what damping factor should we use?
|
|
42
|
-
damping_factor: float = pydantic.Field(ge=0, le=1, default=0.7)
|
|
43
|
-
|
|
44
|
-
#### level shifting
|
|
45
|
-
do_level_shift: bool = True
|
|
46
|
-
# how much? (Eh)
|
|
47
|
-
level_shift_magnitude: PositiveFloat = 0.25
|
|
48
|
-
# when should we stop?
|
|
49
|
-
end_level_shift_error: PositiveFloat = 0.1
|
|
50
|
-
|
|
51
|
-
#### incremental
|
|
52
|
-
# do incremental fock build?
|
|
53
|
-
do_incremental: bool = True
|
|
54
|
-
# reset incremental fock build
|
|
55
|
-
rebuild_frequency: PositiveInt = 20
|
|
56
|
-
|
|
57
|
-
#### when are we converged?
|
|
58
|
-
energy_threshold: PositiveFloat = 1e-6
|
|
59
|
-
rms_error_threshold: PositiveFloat = 1e-8
|
|
60
|
-
max_error_threshold: PositiveFloat = 1e-5
|
|
61
|
-
|
|
62
|
-
#### DIIS
|
|
63
|
-
do_diis: bool = True
|
|
64
|
-
# error below which we'll start DIIS
|
|
65
|
-
start_diis_max_error: pydantic.PositiveFloat = 0.2
|
|
66
|
-
# first iteration we'll consider starting DIIS
|
|
67
|
-
start_diis_iter: PositiveInt = 3
|
|
68
|
-
# iteration past which we'll start DIIS even if error is high
|
|
69
|
-
start_diis_anyway: PositiveInt = 7
|
|
11
|
+
"""
|
|
12
|
+
Settings for SCF convergence.
|
|
70
13
|
|
|
71
|
-
|
|
72
|
-
|
|
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
|
+
"""
|
|
73
17
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if self.int_settings.resolution_of_the_identity:
|
|
77
|
-
self.do_incremental = False
|
|
18
|
+
max_iters: int = 250
|
|
19
|
+
soscf: UseSOSCF = UseSOSCF.UPON_FAILURE
|
stjames/settings.py
CHANGED
|
@@ -68,7 +68,6 @@ class Settings(Base):
|
|
|
68
68
|
if self.mode == Mode.AUTO:
|
|
69
69
|
self.mode = Mode.RAPID
|
|
70
70
|
|
|
71
|
-
self.scf_settings = _assign_scf_settings_by_mode(self.mode, self.scf_settings)
|
|
72
71
|
self.opt_settings = _assign_opt_settings_by_mode(self.mode, self.opt_settings)
|
|
73
72
|
|
|
74
73
|
return self
|
|
@@ -115,74 +114,6 @@ class Settings(Base):
|
|
|
115
114
|
return [c for c in v if c] if v is not None else v
|
|
116
115
|
|
|
117
116
|
|
|
118
|
-
def _assign_scf_settings_by_mode(mode: Mode, scf_settings: SCFSettings) -> SCFSettings:
|
|
119
|
-
"""
|
|
120
|
-
Assign SCF settings based on the mode.
|
|
121
|
-
|
|
122
|
-
Values based off of the following sources:
|
|
123
|
-
QChem:
|
|
124
|
-
- https://manual.q-chem.com/5.2/Ch4.S3.SS2.html
|
|
125
|
-
- https://manual.q-chem.com/5.2/Ch4.S5.SS2.html
|
|
126
|
-
|
|
127
|
-
Gaussian:
|
|
128
|
-
- https://gaussian.com/integral/
|
|
129
|
-
- https://gaussian.com/overlay5/
|
|
130
|
-
|
|
131
|
-
Orca:
|
|
132
|
-
- manual 4.2.1, §9.6.1 and §9.7.3
|
|
133
|
-
|
|
134
|
-
Psi4:
|
|
135
|
-
- https://psicode.org/psi4manual/master/autodir_options_c/module__scf.html
|
|
136
|
-
- https://psicode.org/psi4manual/master/autodoc_glossary_options_c.html
|
|
137
|
-
|
|
138
|
-
TeraChem:
|
|
139
|
-
- Manual, it's easy to locate everything.
|
|
140
|
-
|
|
141
|
-
The below values are my best attempt at homogenizing various sources.
|
|
142
|
-
In general, eri_threshold should be 3 OOM lower than SCF convergence.
|
|
143
|
-
"""
|
|
144
|
-
if mode == Mode.MANUAL:
|
|
145
|
-
return scf_settings
|
|
146
|
-
|
|
147
|
-
match mode:
|
|
148
|
-
case Mode.RECKLESS:
|
|
149
|
-
scf_settings.energy_threshold = 1e-5
|
|
150
|
-
scf_settings.rms_error_threshold = 1e-7
|
|
151
|
-
scf_settings.max_error_threshold = 1e-5
|
|
152
|
-
scf_settings.rebuild_frequency = 100
|
|
153
|
-
scf_settings.int_settings.eri_threshold = 1e-8
|
|
154
|
-
scf_settings.int_settings.csam_multiplier = 3.0
|
|
155
|
-
scf_settings.int_settings.pair_overlap_threshold = 1e-8
|
|
156
|
-
case Mode.RAPID | Mode.CAREFUL:
|
|
157
|
-
scf_settings.energy_threshold = 1e-6
|
|
158
|
-
scf_settings.rms_error_threshold = 1e-9
|
|
159
|
-
scf_settings.max_error_threshold = 1e-7
|
|
160
|
-
scf_settings.rebuild_frequency = 10
|
|
161
|
-
scf_settings.int_settings.eri_threshold = 1e-10
|
|
162
|
-
scf_settings.int_settings.csam_multiplier = 1.0
|
|
163
|
-
scf_settings.int_settings.pair_overlap_threshold = 1e-10
|
|
164
|
-
case Mode.METICULOUS:
|
|
165
|
-
scf_settings.energy_threshold = 1e-8
|
|
166
|
-
scf_settings.rms_error_threshold = 1e-9
|
|
167
|
-
scf_settings.max_error_threshold = 1e-7
|
|
168
|
-
scf_settings.rebuild_frequency = 5
|
|
169
|
-
scf_settings.int_settings.eri_threshold = 1e-12
|
|
170
|
-
scf_settings.int_settings.csam_multiplier = 1.0
|
|
171
|
-
scf_settings.int_settings.pair_overlap_threshold = 1e-12
|
|
172
|
-
case Mode.DEBUG:
|
|
173
|
-
scf_settings.energy_threshold = 1e-9
|
|
174
|
-
scf_settings.rms_error_threshold = 1e-10
|
|
175
|
-
scf_settings.max_error_threshold = 1e-9
|
|
176
|
-
scf_settings.rebuild_frequency = 1
|
|
177
|
-
scf_settings.int_settings.eri_threshold = 1e-14
|
|
178
|
-
scf_settings.int_settings.csam_multiplier = 1e10 # in other words, disable CSAM
|
|
179
|
-
scf_settings.int_settings.pair_overlap_threshold = 1e-14
|
|
180
|
-
case _:
|
|
181
|
-
raise ValueError(f"Unknown mode ``{mode.value}``!")
|
|
182
|
-
|
|
183
|
-
return scf_settings
|
|
184
|
-
|
|
185
|
-
|
|
186
117
|
def _assign_opt_settings_by_mode(mode: Mode, opt_settings: OptimizationSettings) -> OptimizationSettings:
|
|
187
118
|
"""
|
|
188
119
|
Assign optimization settings based on the mode.
|
stjames/status.py
CHANGED
stjames/workflows/__init__.py
CHANGED
|
@@ -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
|
|
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
|
stjames/workflows/nmr.py
ADDED
|
@@ -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_isotopic_shieldings: the per-atom shieldings for each conformer
|
|
39
|
+
:param isotopic_shieldings: the per-atom shieldings
|
|
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_isotropic_shieldings: list[Annotated[list[float], AfterValidator(round_list(3))]] = []
|
|
54
|
+
isotropic_shieldings: Annotated[list[float], AfterValidator(round_list(3))] = []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Protein Cofolding Workflow."""
|
|
2
2
|
|
|
3
|
-
from typing import Annotated
|
|
3
|
+
from typing import Annotated, Literal
|
|
4
4
|
|
|
5
5
|
from pydantic import AfterValidator, BaseModel, ConfigDict
|
|
6
6
|
|
|
@@ -17,6 +17,33 @@ class CofoldingModel(LowercaseStrEnum):
|
|
|
17
17
|
BOLTZ_2 = "boltz_2"
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
class Token(BaseModel):
|
|
21
|
+
"""Either a atom in a ligand or a residue in a protein."""
|
|
22
|
+
|
|
23
|
+
input_type: Literal["ligand", "protein"]
|
|
24
|
+
input_index: int
|
|
25
|
+
token_index: int
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ContactConstraint(BaseModel):
|
|
29
|
+
"""Contact constraint to be used for prediction."""
|
|
30
|
+
|
|
31
|
+
token_1: Token
|
|
32
|
+
token_2: Token
|
|
33
|
+
max_distance: float # Angstroms
|
|
34
|
+
force: bool = False # Whether to use potentials to enforce the constraint
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class PocketConstraint(BaseModel):
|
|
38
|
+
"""Pocket constraint to be used for prediction."""
|
|
39
|
+
|
|
40
|
+
input_type: Literal["ligand", "protein"]
|
|
41
|
+
input_index: int
|
|
42
|
+
contacts: list[Token]
|
|
43
|
+
max_distance: float # Angstroms
|
|
44
|
+
force: bool = False # Whether to use potentials to enforce the constraint
|
|
45
|
+
|
|
46
|
+
|
|
20
47
|
class CofoldingScores(BaseModel):
|
|
21
48
|
confidence_score: Annotated[float, AfterValidator(round_float(3))]
|
|
22
49
|
ptm: Annotated[float, AfterValidator(round_float(3))] # predicted template modeling score
|
|
@@ -52,6 +79,9 @@ class ProteinCofoldingWorkflow(FASTAWorkflow):
|
|
|
52
79
|
use_msa_server: bool = False
|
|
53
80
|
use_templates_server: bool = False
|
|
54
81
|
use_potentials: bool = False
|
|
82
|
+
contact_constraints: list[ContactConstraint] = []
|
|
83
|
+
pocket_constraints: list[PocketConstraint] = []
|
|
84
|
+
|
|
55
85
|
predicted_structure_uuid: UUID | None = None
|
|
56
86
|
scores: CofoldingScores | None = None
|
|
57
87
|
model: CofoldingModel = CofoldingModel.BOLTZ_2
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
stjames/__init__.py,sha256=
|
|
1
|
+
stjames/__init__.py,sha256=i_vqziEdoBNXhD7Gjb2_1zLkSx0Ko1N8BnCk6No_T6A,522
|
|
2
2
|
stjames/_deprecated_solvent_settings.py,sha256=gj5j9p3zakIwSTK5_ndqBXJx--IzjZNxZ75z-wipLOo,450
|
|
3
3
|
stjames/atom.py,sha256=hQCTMu3y30dvqjyCInnSs47DkUEnwhm_M2qB2jTD4Ik,2153
|
|
4
4
|
stjames/base.py,sha256=YhmNZqFdWYD_lCw8rD2fZtt17nh8g7lUFBnGMezB-u8,1837
|
|
@@ -7,10 +7,7 @@ stjames/calculation.py,sha256=O2LwwQ_cOLmDOGXTHA9J71YbUZXigUSbvbLA-fSVm3w,915
|
|
|
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
|
|
10
|
-
stjames/diis_settings.py,sha256=4m1EQQWBlpHhMnWopix8qOqJv7QCluvdnV9jSKJDFtE,552
|
|
11
10
|
stjames/engine.py,sha256=wVItZQSIeR3ap6EZG3kOw0xCZztZm-6KKFrX84ZyFsE,313
|
|
12
|
-
stjames/grid_settings.py,sha256=WrSNGc-8_f87YBZYt9Hh7RbhM4MweADoVzwBMcSqcsE,640
|
|
13
|
-
stjames/int_settings.py,sha256=5HXp8opt5ZyY1UpmfaK7NVloWVLM5jkG0elEEqpVLUo,896
|
|
14
11
|
stjames/message.py,sha256=Rq6QqmHZKecWxYH8fVyXmuoCCPZv8YinvgykSeorXSU,216
|
|
15
12
|
stjames/method.py,sha256=8Cj0JYGMEaS_Cetfz8Wcu6-BZAv1SejRSagMgkKaXs0,4469
|
|
16
13
|
stjames/mode.py,sha256=xw46Cc7f3eTS8i35qECi-8DocAlANhayK3w4akD4HBU,496
|
|
@@ -19,10 +16,10 @@ stjames/opt_settings.py,sha256=LEwGXUEKq5TfU5rr60Z4QQBhCqiw1Ch5w0M_lXawWo8,642
|
|
|
19
16
|
stjames/pdb.py,sha256=6ayVUUdTufkXs_nfpRQuT1yGvymuyICB4L5Wh55OsaA,26507
|
|
20
17
|
stjames/periodic_cell.py,sha256=eV_mArsY_MPEFSrFEsTC-CyCc6V8ITAXdk7yhjjNI7M,1080
|
|
21
18
|
stjames/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
stjames/scf_settings.py,sha256=
|
|
23
|
-
stjames/settings.py,sha256=
|
|
19
|
+
stjames/scf_settings.py,sha256=ecEVP3aKArNorpbP0mapnbc-EMjjzx4jeVW6q9tvqsw,436
|
|
20
|
+
stjames/settings.py,sha256=qZ3yhuMIQNiLs8Z-uEyVReSg2IQAjnDzQ6euHHqE6xI,6128
|
|
24
21
|
stjames/solvent.py,sha256=u037tmu-9oa21s-WEDZ7VC7nuNVjkqR2ML4JWjWSME4,1158
|
|
25
|
-
stjames/status.py,sha256=
|
|
22
|
+
stjames/status.py,sha256=KQHDqWSd4kBLow23YLcfOkFdtqN61RFZI-jf2zANWRY,501
|
|
26
23
|
stjames/task.py,sha256=OLINRqe66o7t8arffilwmggrF_7TH0L79u6DhGruxV8,329
|
|
27
24
|
stjames/thermochem_settings.py,sha256=ZTLz31v8Ltutde5Nfm0vH5YahWjcfFWfr_R856KffxE,517
|
|
28
25
|
stjames/types.py,sha256=Fco-Lw8DYvUhbSvOjYZHaE_AaMyFNdWLUjNvb5aTAzw,4498
|
|
@@ -38,7 +35,7 @@ stjames/data/isotopes.json,sha256=5ba8QnLrHD_Ypv2xekv2cIRwYrX3MQ19-1FOFtt0RuU,83
|
|
|
38
35
|
stjames/data/nist_isotopes.json,sha256=d5DNk1dX0iB1waEYIRR6JMHuA7AuYwSBEgBvb4EKyhM,14300
|
|
39
36
|
stjames/data/read_nist_isotopes.py,sha256=y10FNjW43QpC45qib7VHsIghEwT7GG5rsNwHdc9osRI,3309
|
|
40
37
|
stjames/data/symbol_element.json,sha256=vl_buFusTqBd-muYQtMLtTDLy2OtBI6KkBeqkaWRQrg,1186
|
|
41
|
-
stjames/workflows/__init__.py,sha256=
|
|
38
|
+
stjames/workflows/__init__.py,sha256=wGTCSEvGmLVG-dnkylVsKq7_27n8gQlFfsJiX9RN33w,2890
|
|
42
39
|
stjames/workflows/admet.py,sha256=h8ph6oeRCxU3-_jqRRWPg3RZcheu9JzCHiWqSC9VYKY,1296
|
|
43
40
|
stjames/workflows/basic_calculation.py,sha256=ZX3KwhfyyCTjc2ougQIL4If7gtwZP9WjqpL45mBquW0,573
|
|
44
41
|
stjames/workflows/bde.py,sha256=g_In-caftXiimrhfdptHjpfrYQUs3vF58qYmRnaTN8g,10825
|
|
@@ -49,22 +46,23 @@ stjames/workflows/docking.py,sha256=CgpLjMfpPka1fcg0VJPeyJCOnZjnJTrgfNeMAKiX4zM,
|
|
|
49
46
|
stjames/workflows/electronic_properties.py,sha256=GT3-NC7w-dbcOJ-3AzJ7LgzH6frTbiH2Iyb9BCa-SvY,4112
|
|
50
47
|
stjames/workflows/fukui.py,sha256=T6TDg-lcE-sfTDVpa3KFBenLe7PGUO2QrQ2jNuw_iiU,1756
|
|
51
48
|
stjames/workflows/hydrogen_bond_basicity.py,sha256=q9eXty68ZyCmrB6G_8bfeOT8Ui_IQquRPu6z-3rNreQ,1589
|
|
52
|
-
stjames/workflows/ion_mobility.py,sha256=
|
|
49
|
+
stjames/workflows/ion_mobility.py,sha256=rvvAt4ZD-Npl0tHL7TEuaS3XKjHiMkSZVzyJoivdyps,1665
|
|
53
50
|
stjames/workflows/irc.py,sha256=ZP7icylW8rgo_Uh7h3bmyumn0ru1IyF-61nP5Jnmq3M,3402
|
|
54
51
|
stjames/workflows/macropka.py,sha256=KRIyk4gsSYL3eqyzCDndStGLwjWSo60cgCAzvAoD1Nk,3754
|
|
55
52
|
stjames/workflows/molecular_dynamics.py,sha256=kxugE73Ntzpj-xpJSoQ1EwGzXXdvi_NTyeP4913EVwE,3173
|
|
56
53
|
stjames/workflows/multistage_opt.py,sha256=SpbA8hNvktnlLS7C-9mBNGluBSrdVS8ygHl1C4TzWcI,16499
|
|
54
|
+
stjames/workflows/nmr.py,sha256=mSmBl_kp5sWKExO-2xxfcqGtf-cot3YTcGpzBfoh68g,2023
|
|
57
55
|
stjames/workflows/pka.py,sha256=j3vBh2YM3nJzJ1XJKPsmYahRCeaU9n3P-G-u9_moaFw,2065
|
|
58
56
|
stjames/workflows/pose_analysis_md.py,sha256=ES0XlzaLpTjhLrNvcB0zFZa1b1ZHXekN72EbLsx0Skw,4723
|
|
59
|
-
stjames/workflows/protein_cofolding.py,sha256=
|
|
57
|
+
stjames/workflows/protein_cofolding.py,sha256=6WWbVOGzFjIRgQLMmMVODfIxo1jYFmRS1xnJmN0kOBw,3016
|
|
60
58
|
stjames/workflows/redox_potential.py,sha256=7S18t9Y3eynSnA3lZbRlvLfdbgeBopdiigLzt1zxg5c,3871
|
|
61
59
|
stjames/workflows/scan.py,sha256=DXQBpa2t2PowAtOwmdgpxaSLq--fEShljzAGSb8Nf5U,2993
|
|
62
60
|
stjames/workflows/solubility.py,sha256=kGfVyPPGDLRpf2j6dSY7woCkfsoXSbUzdSImA4mcMpw,1898
|
|
63
61
|
stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQnaI,4748
|
|
64
62
|
stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
|
|
65
63
|
stjames/workflows/workflow.py,sha256=OE05pt2ZOd8TzTOlBngXCVg9wv_553ZR60VNRPlq0f8,1953
|
|
66
|
-
stjames-0.0.
|
|
67
|
-
stjames-0.0.
|
|
68
|
-
stjames-0.0.
|
|
69
|
-
stjames-0.0.
|
|
70
|
-
stjames-0.0.
|
|
64
|
+
stjames-0.0.95.dist-info/licenses/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
|
|
65
|
+
stjames-0.0.95.dist-info/METADATA,sha256=q5rJgbtmQrLOVntdIyE6pAkA3LPaKAmLyCrqZ3FUCkI,1724
|
|
66
|
+
stjames-0.0.95.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
67
|
+
stjames-0.0.95.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
|
|
68
|
+
stjames-0.0.95.dist-info/RECORD,,
|
stjames/diis_settings.py
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import pydantic
|
|
2
|
-
|
|
3
|
-
from .base import Base, LowercaseStrEnum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class DIISStrategy(LowercaseStrEnum):
|
|
7
|
-
# regular Pulay DIIS
|
|
8
|
-
DIIS = "diis"
|
|
9
|
-
|
|
10
|
-
# Hu/Yang JCP 2010 - ADIIS
|
|
11
|
-
ADIIS = "adiis"
|
|
12
|
-
|
|
13
|
-
# first ADIIS, then DIIS
|
|
14
|
-
ADIIS_DIIS = "adiis_diis"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class DIISSettings(Base):
|
|
18
|
-
strategy: DIISStrategy = DIISStrategy.ADIIS_DIIS
|
|
19
|
-
subspace_size: pydantic.PositiveInt = 12
|
|
20
|
-
|
|
21
|
-
# if it's a hybrid strategy, where do we transition?
|
|
22
|
-
adiis_diis_blend_start: pydantic.PositiveFloat = 1e-1
|
|
23
|
-
adiis_diis_blend_stop: pydantic.PositiveFloat = 1e-4
|
stjames/grid_settings.py
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import pydantic
|
|
2
|
-
|
|
3
|
-
from .base import Base, LowercaseStrEnum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class RadialGridType(LowercaseStrEnum):
|
|
7
|
-
"""What sort of radial grid (only one option for now)"""
|
|
8
|
-
|
|
9
|
-
KRACK_KOSTER = "krack_koster"
|
|
10
|
-
LMG = "lmg"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class GridSettings(Base):
|
|
14
|
-
radial_grid_type: RadialGridType = RadialGridType.LMG
|
|
15
|
-
angular_num_points: pydantic.PositiveInt = 434
|
|
16
|
-
|
|
17
|
-
weight_cutoff: pydantic.PositiveFloat = 1e-11
|
|
18
|
-
|
|
19
|
-
# for LMG
|
|
20
|
-
radial_precision: pydantic.PositiveFloat = 1e-11
|
|
21
|
-
|
|
22
|
-
# for other schemes, like KK
|
|
23
|
-
radial_num_points: pydantic.PositiveInt = 75
|
|
24
|
-
|
|
25
|
-
# pruning?
|
|
26
|
-
prune: bool = True
|
|
27
|
-
min_angular_points: pydantic.PositiveInt = 50
|
stjames/int_settings.py
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import pydantic
|
|
2
|
-
|
|
3
|
-
from .base import Base, LowercaseStrEnum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class ERIStrategy(LowercaseStrEnum):
|
|
7
|
-
# direct SCF, as per Almlof/Faegri/Korsell
|
|
8
|
-
DIRECT = "direct"
|
|
9
|
-
|
|
10
|
-
# Raffinetti-style supermatrix
|
|
11
|
-
SUPERMATRIX = "supermatrix"
|
|
12
|
-
|
|
13
|
-
# let the software choose between direct and supermatrix based on size
|
|
14
|
-
AUTO = "auto"
|
|
15
|
-
|
|
16
|
-
# resolution of the identity for J and K
|
|
17
|
-
RIJK = "rijk"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class IntSettings(Base):
|
|
21
|
-
strategy: ERIStrategy = ERIStrategy.AUTO
|
|
22
|
-
|
|
23
|
-
# these will get overwritten by ``mode`` anyway, for the most part
|
|
24
|
-
eri_threshold: pydantic.PositiveFloat = 1e-9
|
|
25
|
-
csam_multiplier: pydantic.PositiveFloat = pydantic.Field(default=1, ge=1)
|
|
26
|
-
pair_overlap_threshold: pydantic.PositiveFloat = 1e-10
|
|
27
|
-
|
|
28
|
-
@property
|
|
29
|
-
def resolution_of_the_identity(self) -> bool:
|
|
30
|
-
"""Abstracting in case we add RIJCOSX, etc later"""
|
|
31
|
-
return self.strategy == ERIStrategy.RIJK
|
|
File without changes
|
|
File without changes
|
|
File without changes
|