stjames 0.0.37__py3-none-any.whl → 0.0.38__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/base.py CHANGED
@@ -24,7 +24,7 @@ class LowercaseStrEnum(str, Enum):
24
24
  def _missing_(cls, value: str) -> str | None: # type: ignore
25
25
  # Type note: technically breaking Liskov, value: object in Enum
26
26
  for member in cls:
27
- if member.lower().replace("-", "") == value.lower().replace("-", ""):
27
+ if member.lower().replace("-", "").replace("_", "") == value.lower().replace("-", "").replace("_", ""):
28
28
  return member
29
29
  return None
30
30
 
stjames/method.py CHANGED
@@ -2,48 +2,37 @@ from .base import LowercaseStrEnum
2
2
 
3
3
 
4
4
  class Method(LowercaseStrEnum):
5
- #### Hartree–Fock:
6
5
  HARTREE_FOCK = "hf"
7
- HF3C = "hf-3c"
6
+ HF3C = "hf_3c"
8
7
 
9
- #### DFT:
10
- # LDA
11
- LSDA = "lsda"
12
-
13
- # local GGA
14
8
  PBE = "pbe"
15
- BLYP = "blyp"
16
- BP86 = "bp86"
17
- B97D3 = "b97-d3"
18
- B973C = "b97-3c"
19
-
20
- # mGGA
9
+ B973C = "b97_3c"
21
10
  R2SCAN = "r2scan"
11
+ R2SCAN3C = "r2scan_3c"
22
12
  TPSS = "tpss"
23
13
  M06L = "m06l"
24
14
 
25
- # hybrid GGA
26
15
  PBE0 = "pbe0"
27
16
  B3LYP = "b3lyp"
28
- B3PW91 = "b3pw91"
29
- B97MV = "b97m_v"
30
-
31
- # hybrid mGGA
32
- TPSS0 = "tpss0"
17
+ TPSSH = "tpssh"
33
18
  M06 = "m06"
34
19
  M062X = "m062x"
35
20
 
36
- # range-separated
37
21
  CAMB3LYP = "camb3lyp"
38
- WB97XD = "wb97x_d"
39
22
  WB97XD3 = "wb97x_d3"
40
23
  WB97XV = "wb97x_v"
41
24
  WB97MV = "wb97m_v"
25
+ WB97MD3BJ = "wb97m_d3bj"
26
+ WB97X3C = "wb97x_3c"
27
+
28
+ DSDBLYPD3BJ = "dsd_blyp_d3bj"
42
29
 
43
- # ML methods
44
30
  AIMNET2_WB97MD3 = "aimnet2_wb97md3"
45
- AIMNET2_B973C = "aimnet2_b973c"
46
31
 
47
- # xTB methods
32
+ # GFN0_XTB = "gfn1_xtb"
48
33
  GFN1_XTB = "gfn1_xtb"
49
34
  GFN2_XTB = "gfn2_xtb"
35
+ GFN_FF = "gfn_ff"
36
+
37
+ # this was going to be removed, but Jonathon wrote such a nice basis set test... it's off the front end.
38
+ BP86 = "bp86"
stjames/settings.py CHANGED
@@ -16,18 +16,19 @@ from .thermochem_settings import ThermochemistrySettings
16
16
  PREPACKAGED_METHODS = [
17
17
  Method.HF3C,
18
18
  Method.B973C,
19
+ Method.R2SCAN3C,
19
20
  Method.AIMNET2_WB97MD3,
20
- Method.AIMNET2_B973C,
21
21
  Method.GFN2_XTB,
22
22
  Method.GFN1_XTB,
23
+ Method.GFN_FF,
23
24
  ]
24
25
 
25
26
  METHODS_WITH_CORRECTION = [
26
- Method.B97D3,
27
- Method.WB97XD,
28
27
  Method.WB97XD3,
29
28
  Method.WB97XV,
30
29
  Method.WB97MV,
30
+ Method.WB97MD3BJ,
31
+ Method.DSDBLYPD3BJ,
31
32
  ]
32
33
 
33
34
  T = TypeVar("T")
@@ -48,15 +49,17 @@ class Settings(Base):
48
49
  opt_settings: OptimizationSettings = OptimizationSettings()
49
50
  thermochem_settings: ThermochemistrySettings = ThermochemistrySettings()
50
51
 
52
+ # mypy has this dead wrong (https://docs.pydantic.dev/2.0/usage/computed_fields/)
53
+ @pydantic.computed_field # type: ignore[misc]
51
54
  @property
52
- @pydantic.computed_field
53
55
  def level_of_theory(self) -> str:
56
+ corrections = list(filter(lambda x: x not in (None, ""), self.corrections))
57
+
54
58
  if self.method in PREPACKAGED_METHODS or self.basis_set is None:
55
59
  method = self.method.value
56
- elif self.method in METHODS_WITH_CORRECTION:
60
+ elif self.method in METHODS_WITH_CORRECTION or len(corrections) == 0:
57
61
  method = f"{self.method.value}/{self.basis_set.name.lower()}"
58
62
  else:
59
- corrections = list(filter(lambda x: x not in (None, ""), self.corrections))
60
63
  method = f"{self.method.value}-{'-'.join([c.value for c in corrections])}/{self.basis_set.name.lower()}"
61
64
 
62
65
  if self.solvent_settings is not None:
stjames/solvent.py CHANGED
@@ -31,6 +31,7 @@ class Solvent(LowercaseStrEnum):
31
31
 
32
32
 
33
33
  class SolventModel(LowercaseStrEnum):
34
+ PCM = "pcm"
34
35
  CPCM = "cpcm"
35
36
  ALPB = "alpb"
36
37
  COSMO = "cosmo"
@@ -48,7 +48,7 @@ class ConformerWorkflow(Workflow):
48
48
  self.settings = csearch_settings_by_mode(self.mode, self.settings)
49
49
 
50
50
 
51
- def csearch_settings_by_mode(mode: Mode, old_settings: Optional[ConformerSettings]) -> ConformerSettings:
51
+ def csearch_settings_by_mode(mode: Mode, old_settings: Optional[ConformerSettings] = None) -> ConformerSettings:
52
52
  if mode == Mode.MANUAL:
53
53
  assert old_settings is not None
54
54
  return old_settings
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: stjames
3
- Version: 0.0.37
3
+ Version: 0.0.38
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,6 +1,6 @@
1
1
  stjames/__init__.py,sha256=RJ1b132RSXVbQfptduVM1ZSQrnSTsg0a-VfgBwQn9zo,506
2
2
  stjames/_deprecated_solvent_settings.py,sha256=gj5j9p3zakIwSTK5_ndqBXJx--IzjZNxZ75z-wipLOo,450
3
- stjames/base.py,sha256=GTISjYPBi4KCxAR9DPLf4mp6ZYuh2MwlNI0jZ1N41Io,1142
3
+ stjames/base.py,sha256=xCdfeDnwNRvZfogbRXSVAW0x0c3l3attxUjW3_2J8-Y,1176
4
4
  stjames/basis_set.py,sha256=Fi6vJx-ni2aOozFYH2hrSlc9lL01XzPO4zO6onJliuE,1035
5
5
  stjames/calculation.py,sha256=0eCZ59lqmnI_QxEdMp7esrTeutNyO_pIFrZQf_FncSo,848
6
6
  stjames/constraint.py,sha256=gkp0y0yQPeii8jdBNllZ9JS8t0o2bkEVTFAkyhShmWk,329
@@ -9,19 +9,19 @@ stjames/diis_settings.py,sha256=QHc7L-hktkbOWBYr29byTdqL8lWJzKJiY9XW8ha4Qzo,552
9
9
  stjames/grid_settings.py,sha256=WrSNGc-8_f87YBZYt9Hh7RbhM4MweADoVzwBMcSqcsE,640
10
10
  stjames/int_settings.py,sha256=5HXp8opt5ZyY1UpmfaK7NVloWVLM5jkG0elEEqpVLUo,896
11
11
  stjames/message.py,sha256=Rq6QqmHZKecWxYH8fVyXmuoCCPZv8YinvgykSeorXSU,216
12
- stjames/method.py,sha256=e7A3XH808JglgfCzISKyRKAxGDj7BQdcQQtgtTlgfNk,843
12
+ stjames/method.py,sha256=cxgcWYi8A4o-SiA1rhZqmpCV4hALN7MYe1Y6_w6zUac,789
13
13
  stjames/mode.py,sha256=xw46Cc7f3eTS8i35qECi-8DocAlANhayK3w4akD4HBU,496
14
14
  stjames/molecule.py,sha256=t0jOmkTMgQE2ayBn9igjpY_4gPyqLPqZLlgtwd4uBOA,2910
15
15
  stjames/opt_settings.py,sha256=5nTGih8KZ3x_yGfPL7pdGdsuOpCIfuJUrKoSK5YSDJg,458
16
16
  stjames/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  stjames/scf_settings.py,sha256=xMMCQ0hVB4nNFSiWesNQZUa_aLsozSZGYWweAPPDGBg,2356
18
- stjames/settings.py,sha256=cUiAydIVes9iDEky4coOYQ2kF97AYaLClx5qjJmEpWY,8462
19
- stjames/solvent.py,sha256=3ssY-vQCCa071srfJbwCYEKDpWos8Mgvmg_dTpAnbJw,1104
18
+ stjames/settings.py,sha256=KjuuDLP1Dknz1Jmm7wntFyUg6N_XfoewfiXAf1-NWkw,8615
19
+ stjames/solvent.py,sha256=bGh10jZmfHQACZEAid7zYPyf6tx4G1ql3GgINHswy7Y,1120
20
20
  stjames/status.py,sha256=wTKNcNxStoEHrxxgr_zTyN90NITa3rxMQZzOgrCifEw,332
21
21
  stjames/task.py,sha256=TTl-iTdvDNCZTdPsyS6bYmxzY0ez9PgYlL62fztayXQ,307
22
22
  stjames/thermochem_settings.py,sha256=ZTLz31v8Ltutde5Nfm0vH5YahWjcfFWfr_R856KffxE,517
23
23
  stjames/workflows/__init__.py,sha256=sy9J04mCJpyVGcG4DecCi6pncwbZVvybI7sJKzavjgo,167
24
- stjames/workflows/conformer.py,sha256=ebzLQ3NRUAmUXWGXzz71c2bjO0XlqsAD8D25rS4ANio,2690
24
+ stjames/workflows/conformer.py,sha256=10mMhXhFoCUsOvSBp06Q16WufD66YiWCBuBcJEZr9vg,2697
25
25
  stjames/workflows/descriptors.py,sha256=Jqx_4u_ZhdFJrT-ITU6zlFY0n8llh6zhzIhM38e8NCs,255
26
26
  stjames/workflows/fukui.py,sha256=FAabgLi_ig6Zp_jiTkuveP0wAObwv68liuumr85rb0g,366
27
27
  stjames/workflows/pka.py,sha256=zpR90Yv2L-D56o2mGArM8027DWpnFFnay31UR9Xh5Nc,774
@@ -29,8 +29,8 @@ stjames/workflows/redox_potential.py,sha256=iPkFt1Dj1sUywS9pLSEBVpCjHZcEwUESluY0
29
29
  stjames/workflows/scan.py,sha256=d1ca1uk1nxdzlSwqMLZ0W1_DHyrQMnHJmvPfziCS0SA,773
30
30
  stjames/workflows/tautomer.py,sha256=kZSCHo2Q7LzqtQjF_WyyxjECkndG49T9QOM12hsUkx8,421
31
31
  stjames/workflows/workflow.py,sha256=6hFe5PZejJu6bZ3yTkoJ9-xQMBn_-8tUsbk4FUZxog0,367
32
- stjames-0.0.37.dist-info/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
33
- stjames-0.0.37.dist-info/METADATA,sha256=fQVcsgREoaKpfr0H9PYUF36dCp30GJwCqNjtttTeJyE,1626
34
- stjames-0.0.37.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
35
- stjames-0.0.37.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
36
- stjames-0.0.37.dist-info/RECORD,,
32
+ stjames-0.0.38.dist-info/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
33
+ stjames-0.0.38.dist-info/METADATA,sha256=g3b6X5V-Co_xbpwRRmj2UMjIArDusYqMyz763DXIEIQ,1626
34
+ stjames-0.0.38.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
35
+ stjames-0.0.38.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
36
+ stjames-0.0.38.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.1)
2
+ Generator: setuptools (70.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5