stjames 0.0.19__py3-none-any.whl → 0.0.22__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 CHANGED
@@ -10,6 +10,7 @@ from .diis_settings import *
10
10
  from .solvent_settings import *
11
11
  from .thermochem_settings import *
12
12
  from .grid_settings import *
13
+ from .solvent_settings import *
13
14
  from .settings import *
14
15
 
15
16
  from .methods import *
@@ -0,0 +1,19 @@
1
+ import pydantic
2
+
3
+ from .base import Base, LowercaseStrEnum
4
+
5
+
6
+ class ImplicitSolventModel(LowercaseStrEnum):
7
+ CPCM = "cpcm"
8
+ ALPB = "alpb"
9
+ COSMO = "cosmo"
10
+ NONE = "none"
11
+
12
+
13
+ class SolventSettings(Base):
14
+ model: ImplicitSolventModel = ImplicitSolventModel.NONE
15
+ epsilon: float = 78.36
16
+
17
+ grid_points_per_atom: pydantic.PositiveInt = 170
18
+ vdw_scale: pydantic.PositiveFloat = 1.2
19
+ weight_cutoff: pydantic.PositiveFloat = 1e-8
stjames/methods.py CHANGED
@@ -17,10 +17,31 @@ class Method(LowercaseStrEnum):
17
17
  B97D3 = "b97-d3"
18
18
  B973C = "b97-3c"
19
19
 
20
+ # mGGA
21
+ R2SCAN = "r2scan"
22
+ TPSS = "tpss"
23
+ M06L = "m06l"
24
+
20
25
  # hybrid GGA
21
26
  PBE0 = "pbe0"
22
27
  B3LYP = "b3lyp"
23
28
  B3PW91 = "b3pw91"
29
+ B97MV = "b97m_v"
30
+
31
+ # hybrid mGGA
32
+ TPSS0 = "tpss0"
33
+ M06 = "m06"
34
+ M062X = "m062x"
35
+
36
+ # range-separated
37
+ CAMB3LYP = "camb3lyp"
38
+ WB97XD = "wb97x_d"
39
+ WB97XV = "wb97x_v"
40
+ WB97MV = "wb97m_v"
24
41
 
25
42
  # ML methods
26
43
  AIMNET2_WB97MD3 = "aimnet2_wb97md3"
44
+
45
+ # xTB methods
46
+ GFN1_XTB = "gfn1_xtb"
47
+ GFN2_XTB = "gfn2_xtb"
stjames/scf_settings.py CHANGED
@@ -5,7 +5,6 @@ from .base import Base, LowercaseStrEnum
5
5
  from .int_settings import IntSettings
6
6
  from .grid_settings import GridSettings
7
7
  from .diis_settings import DIISSettings
8
- from .solvent_settings import SolventSettings
9
8
 
10
9
 
11
10
  class SCFInitMethod(LowercaseStrEnum):
@@ -29,7 +28,6 @@ class SCFSettings(Base):
29
28
  int_settings: IntSettings = IntSettings()
30
29
  grid_settings: GridSettings = GridSettings()
31
30
  diis_settings: DIISSettings = DIISSettings()
32
- solvent_settings: SolventSettings = SolventSettings()
33
31
 
34
32
  #### orthonormalization
35
33
  orthonormalization: OrthonormalizationMethod = OrthonormalizationMethod.CANONICAL
stjames/settings.py CHANGED
@@ -10,16 +10,19 @@ from .scf_settings import SCFSettings
10
10
  from .basis_set import BasisSet
11
11
  from .opt_settings import OptimizationSettings
12
12
  from .thermochem_settings import ThermochemistrySettings
13
+ from .solvent_settings import SolventSettings
13
14
 
14
15
 
15
16
  class Settings(Base):
16
17
  method: Method = Method.HARTREE_FOCK
17
- basis_set: Optional[BasisSet] = BasisSet(name="STO-3G")
18
+ basis_set: Optional[BasisSet] = None
18
19
  tasks: UniqueList[Task] = [Task.ENERGY, Task.CHARGE, Task.DIPOLE]
19
20
  corrections: UniqueList[Correction] = []
20
21
 
21
22
  mode: Mode = Mode.AUTO
22
23
 
24
+ solvent_settings: Optional[SolventSettings] = None
25
+
23
26
  # scf/opt settings will be set automatically based on mode, but can be overridden manually
24
27
  scf_settings: SCFSettings = SCFSettings()
25
28
  opt_settings: OptimizationSettings = OptimizationSettings()
@@ -30,8 +33,8 @@ class Settings(Base):
30
33
  def level_of_theory(self) -> str:
31
34
  if self.method in [Method.HF3C, Method.B973C, Method.AIMNET2_WB97MD3] or self.basis_set is None:
32
35
  return self.method.value
33
- elif (len(self.corrections)) == 0 or (self.method in [Method.B97D3]):
34
- return f"{self.method.value}/{self.basis_set.name.lower()}"
36
+ # elif (len(self.corrections)) == 0 or (self.method in [Method.B97D3]):
37
+ # return f"{self.method.value}/{self.basis_set.name.lower()}"
35
38
  else:
36
39
  return f"{self.method.value}-{'-'.join([c.value for c in self.corrections])}/{self.basis_set.name.lower()}"
37
40
 
@@ -63,12 +66,18 @@ class Settings(Base):
63
66
  return BasisSet(name=v)
64
67
  else:
65
68
  # "" is basically None, let's be real here...
66
- return BasisSet(name="STO-3G")
69
+ return None
67
70
  elif v is None:
68
71
  return None
69
72
  else:
70
73
  raise ValueError(f"invalid value ``{v}`` for ``basis_set``")
71
74
 
75
+ @pydantic.field_validator("corrections", mode="before")
76
+ @classmethod
77
+ def remove_empty_string(cls, v: list) -> list:
78
+ """ Remove empty string values. """
79
+ return [c for c in v if c]
80
+
72
81
 
73
82
  def _assign_settings_by_mode(settings: Settings) -> None:
74
83
  """Modifies ``scf_settings`` and ``opt_settings`` based on preset ``mode``."""
@@ -76,7 +85,11 @@ def _assign_settings_by_mode(settings: Settings) -> None:
76
85
 
77
86
  if mode == Mode.AUTO:
78
87
  if (Task.OPTIMIZE in settings.tasks) or (Task.GRADIENT in settings.tasks) or (Task.FREQUENCIES in settings.tasks) or (Task.HESSIAN in settings.tasks):
79
- mode = Mode.CAREFUL
88
+ # noisy gradient! struggles to converge
89
+ if settings.method == Method.AIMNET2_WB97MD3:
90
+ mode = Mode.RAPID
91
+ else:
92
+ mode = Mode.CAREFUL
80
93
  else:
81
94
  mode = Mode.RAPID
82
95
  elif mode == Mode.MANUAL:
@@ -1,17 +1,41 @@
1
- import pydantic
2
-
3
1
  from .base import Base, LowercaseStrEnum
4
2
 
5
3
 
6
- class ImplicitSolventModel(LowercaseStrEnum):
4
+ class Solvent(LowercaseStrEnum):
5
+ WATER = "water"
6
+ NITROMETHANE = "nitromethane"
7
+ NITROBENZENE = "nitrobenzene"
8
+ TOLUENE = "toluene"
9
+ BENZENE = "benzene"
10
+ CHLOROBENZENE = "chlorobenzene"
11
+ CARBONTETRACHLORIDE = "carbontetrachloride"
12
+ DICHLOROETHANE = "dichloroethane"
13
+ DICHLOROMETHANE = "dichloromethane"
14
+ CHLOROFORM = "chloroform"
15
+ DIETHYLETHER = "diethylether"
16
+ DIISOPROPYLETHER = "diisopropylether"
17
+ DIMETHYLSULFOXIDE = "dimethylsulfoxide"
18
+ TETRAHYDROFURAN = "tetrahydrofuran"
19
+ CYCLOHEXANE = "cyclohexane"
20
+ OCTANE = "octane"
21
+ ACETICACID = "aceticacid"
22
+ HEXANE = "hexane"
23
+ ETHYLACETATE = "ethylacetate"
24
+ ACETONE = "acetone"
25
+ ACETONITRILE = "acetonitrile"
26
+ METHANOL = "methanol"
27
+ ETHANOL = "ethanol"
28
+ ISOPROPANOL = "isopropanol"
29
+ DIMETHYLACETAMIDE = "dimethylacetamide"
30
+ DIMETHYLFORMAMIDE = "dimethylformamide"
31
+
32
+
33
+ class SolventModel(LowercaseStrEnum):
7
34
  CPCM = "cpcm"
8
- NONE = "none"
35
+ ALPB = "alpb"
36
+ COSMO = "cosmo"
9
37
 
10
38
 
11
39
  class SolventSettings(Base):
12
- model: ImplicitSolventModel = ImplicitSolventModel.NONE
13
- epsilon: float = 78.36
14
-
15
- grid_points_per_atom: pydantic.PositiveInt = 170
16
- vdw_scale: pydantic.PositiveFloat = 1.2
17
- weight_cutoff: pydantic.PositiveFloat = 1e-8
40
+ solvent: Solvent
41
+ model: SolventModel
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: stjames
3
- Version: 0.0.19
3
+ Version: 0.0.22
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
@@ -1,4 +1,5 @@
1
- stjames/__init__.py,sha256=7uBcI929i2iKK96sEC6V59WII3TRgYWpvMbGGg6Gx0k,439
1
+ stjames/__init__.py,sha256=yQF57YFNAXtZ7vqG89cRf1Pk4hKRCYlaTNzX4JkhHoo,471
2
+ stjames/_deprecated_solvent_settings.py,sha256=ALUZeQoxDS11EvZexT1J2SDAlLTiXe-x4jV8tenDqMc,445
2
3
  stjames/base.py,sha256=ww8aRYBC1w1mga90QVOSdtQO8Dh3mPFn4oP0woQ_9qQ,1069
3
4
  stjames/basis_set.py,sha256=uax7wOv7C9640TMDOkFqTQvgZ5UxvyWx1Fp8-IGzils,935
4
5
  stjames/calculation.py,sha256=H2YubnWeWCg62MSdih4PT1jBqFosT8QZ1ioljOHvvTE,784
@@ -6,18 +7,18 @@ stjames/corrections.py,sha256=vVO0CEBxWveCsWGd2Fa9D9eFeteFYB_bpa56T2f8S-Y,268
6
7
  stjames/diis_settings.py,sha256=QHc7L-hktkbOWBYr29byTdqL8lWJzKJiY9XW8ha4Qzo,552
7
8
  stjames/grid_settings.py,sha256=WrSNGc-8_f87YBZYt9Hh7RbhM4MweADoVzwBMcSqcsE,640
8
9
  stjames/int_settings.py,sha256=5HXp8opt5ZyY1UpmfaK7NVloWVLM5jkG0elEEqpVLUo,896
9
- stjames/methods.py,sha256=gYf5NLbWdmbwy4yvpRpCUVMKokwAXPXGV1Yrr9LED08,427
10
+ stjames/methods.py,sha256=pevOgDxVrPFfw51E8avaxNtcyoMjIe_sx_HkW1FrboQ,782
10
11
  stjames/modes.py,sha256=xw46Cc7f3eTS8i35qECi-8DocAlANhayK3w4akD4HBU,496
11
12
  stjames/molecule.py,sha256=2_cBc-00dM7I6J9_TFZTaomyUXlYHA4fP0Erb3zGVdM,2824
12
13
  stjames/opt_settings.py,sha256=RwXikvwW6fTODK3FK8Xvyqy4DY-qMVtZHndWirBxujk,735
13
- stjames/scf_settings.py,sha256=mk1wWmGnjcmEEifo1aNKIAGeOeOEaPHDPCvFOLvBIYE,2492
14
- stjames/settings.py,sha256=NbPIM9YMCM3T-Dtu76l0gkhagQao2lXvTaP9l6D4VeM,7533
15
- stjames/solvent_settings.py,sha256=UaR_klyQiXhB8D8Pa0-7p62N-p_JPzjdbMlfTggKXxk,407
14
+ stjames/scf_settings.py,sha256=e31f1mWRmcFkMnc-loQak_2037L-l4AYpnl-glchrCc,2388
15
+ stjames/settings.py,sha256=VgIHvyNoTuf26eLg-OdGxKoKw3WOSq14frKgI2Y63MQ,7989
16
+ stjames/solvent_settings.py,sha256=3ssY-vQCCa071srfJbwCYEKDpWos8Mgvmg_dTpAnbJw,1104
16
17
  stjames/status.py,sha256=wTKNcNxStoEHrxxgr_zTyN90NITa3rxMQZzOgrCifEw,332
17
18
  stjames/tasks.py,sha256=TTl-iTdvDNCZTdPsyS6bYmxzY0ez9PgYlL62fztayXQ,307
18
19
  stjames/thermochem_settings.py,sha256=ZTLz31v8Ltutde5Nfm0vH5YahWjcfFWfr_R856KffxE,517
19
- stjames-0.0.19.dist-info/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
20
- stjames-0.0.19.dist-info/METADATA,sha256=2sGnZA_j4314nl38t7cVdWTh8Dl6-dWRuKXEULvhkV0,1605
21
- stjames-0.0.19.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
22
- stjames-0.0.19.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
23
- stjames-0.0.19.dist-info/RECORD,,
20
+ stjames-0.0.22.dist-info/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
21
+ stjames-0.0.22.dist-info/METADATA,sha256=BAjMIYp4hBGY723lKFcoA5zg7aHYrnodsCifjTRBeD8,1605
22
+ stjames-0.0.22.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
23
+ stjames-0.0.22.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
24
+ stjames-0.0.22.dist-info/RECORD,,