stjames 0.0.93__py3-none-any.whl → 0.0.94__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 +4 -74
- stjames/settings.py +0 -69
- stjames/status.py +3 -0
- stjames/workflows/protein_cofolding.py +31 -1
- {stjames-0.0.93.dist-info → stjames-0.0.94.dist-info}/METADATA +1 -1
- {stjames-0.0.93.dist-info → stjames-0.0.94.dist-info}/RECORD +10 -13
- 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.94.dist-info}/WHEEL +0 -0
- {stjames-0.0.93.dist-info → stjames-0.0.94.dist-info}/licenses/LICENSE +0 -0
- {stjames-0.0.93.dist-info → stjames-0.0.94.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,7 @@
|
|
|
1
|
-
from
|
|
1
|
+
from pydantic import BaseModel
|
|
2
2
|
|
|
3
|
-
import pydantic
|
|
4
|
-
from pydantic import PositiveFloat, PositiveInt
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
from .grid_settings import GridSettings
|
|
9
|
-
from .int_settings import IntSettings
|
|
4
|
+
class SCFSettings(BaseModel):
|
|
5
|
+
max_iters: int = 250
|
|
10
6
|
|
|
11
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
class OrthonormalizationMethod(LowercaseStrEnum):
|
|
21
|
-
SYMMETRIC = "symmetric"
|
|
22
|
-
CANONICAL = "canonical"
|
|
23
|
-
# Cholesky, in future?
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class SCFSettings(Base):
|
|
27
|
-
max_iters: int = 100
|
|
28
|
-
init_method: SCFInitMethod = SCFInitMethod.SAD
|
|
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
|
|
70
|
-
|
|
71
|
-
# if ``read`` initialization is selected
|
|
72
|
-
initial_density_matrix_guess: Optional[list[list[float]]] = None
|
|
73
|
-
|
|
74
|
-
def model_post_init(self, __context: Any) -> None:
|
|
75
|
-
# disable incremental Fock for RI
|
|
76
|
-
if self.int_settings.resolution_of_the_identity:
|
|
77
|
-
self.do_incremental = False
|
|
7
|
+
soscf: bool = False
|
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
|
@@ -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=Wx_Op5k4renAd-kUV1Utstb7iLxc5OHMQpOHJaAMAHA,113
|
|
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
|
|
@@ -56,15 +53,15 @@ stjames/workflows/molecular_dynamics.py,sha256=kxugE73Ntzpj-xpJSoQ1EwGzXXdvi_NTy
|
|
|
56
53
|
stjames/workflows/multistage_opt.py,sha256=SpbA8hNvktnlLS7C-9mBNGluBSrdVS8ygHl1C4TzWcI,16499
|
|
57
54
|
stjames/workflows/pka.py,sha256=j3vBh2YM3nJzJ1XJKPsmYahRCeaU9n3P-G-u9_moaFw,2065
|
|
58
55
|
stjames/workflows/pose_analysis_md.py,sha256=ES0XlzaLpTjhLrNvcB0zFZa1b1ZHXekN72EbLsx0Skw,4723
|
|
59
|
-
stjames/workflows/protein_cofolding.py,sha256=
|
|
56
|
+
stjames/workflows/protein_cofolding.py,sha256=6WWbVOGzFjIRgQLMmMVODfIxo1jYFmRS1xnJmN0kOBw,3016
|
|
60
57
|
stjames/workflows/redox_potential.py,sha256=7S18t9Y3eynSnA3lZbRlvLfdbgeBopdiigLzt1zxg5c,3871
|
|
61
58
|
stjames/workflows/scan.py,sha256=DXQBpa2t2PowAtOwmdgpxaSLq--fEShljzAGSb8Nf5U,2993
|
|
62
59
|
stjames/workflows/solubility.py,sha256=kGfVyPPGDLRpf2j6dSY7woCkfsoXSbUzdSImA4mcMpw,1898
|
|
63
60
|
stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQnaI,4748
|
|
64
61
|
stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
|
|
65
62
|
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.
|
|
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,,
|
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
|