stjames 0.0.61__py3-none-any.whl → 0.0.62__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.

@@ -1,3 +1,5 @@
1
+ """Molecular dynamics workflow."""
2
+
1
3
  from typing import Self
2
4
 
3
5
  from pydantic import PositiveFloat, PositiveInt, computed_field, model_validator
@@ -6,22 +8,28 @@ from ..base import Base, LowercaseStrEnum
6
8
  from ..constraint import PairwiseHarmonicConstraint, SphericalHarmonicConstraint
7
9
  from ..settings import Settings
8
10
  from ..types import UUID
9
- from .workflow import Workflow
11
+ from .workflow import MoleculeWorkflow
10
12
 
11
13
 
12
14
  class MolecularDynamicsInitialization(LowercaseStrEnum):
15
+ """Initialization method for molecular dynamics."""
16
+
13
17
  RANDOM = "random"
14
18
  QUASICLASSICAL = "quasiclassical"
15
19
  READ = "read"
16
20
 
17
21
 
18
22
  class ThermodynamicEnsemble(LowercaseStrEnum):
23
+ """Thermodynamic ensemble for molecular dynamics."""
24
+
19
25
  NPT = "npt"
20
26
  NVT = "nvt"
21
27
  NVE = "nve"
22
28
 
23
29
 
24
30
  class Frame(Base):
31
+ """A frame in a molecular dynamics simulation."""
32
+
25
33
  index: int # what number frame this is within the MD simulation
26
34
 
27
35
  calculation_uuid: UUID | None = None # UUID of calculation
@@ -39,6 +47,8 @@ class Frame(Base):
39
47
 
40
48
 
41
49
  class MolecularDynamicsSettings(Base):
50
+ """Settings for a molecular dynamics simulation."""
51
+
42
52
  ensemble: ThermodynamicEnsemble = ThermodynamicEnsemble.NVT
43
53
  initialization: MolecularDynamicsInitialization = MolecularDynamicsInitialization.RANDOM
44
54
 
@@ -66,10 +76,25 @@ class MolecularDynamicsSettings(Base):
66
76
  return self
67
77
 
68
78
 
69
- class MolecularDynamicsWorkflow(Workflow):
79
+ class MolecularDynamicsWorkflow(MoleculeWorkflow):
80
+ """
81
+ Workflow for running a molecular dynamics simulation.
82
+
83
+ Inherited:
84
+ :param initial_molecule: Molecule of interest
85
+ :param mode: Mode for workflow (currently unused)
86
+
87
+ New:
88
+ :param settings: settings for the molecular dynamics simulation
89
+ :param calc_settings: settings for the gradient calculation
90
+ :param calc_engine: engine to use for the gradient calculation
91
+
92
+ Results:
93
+ :param frames: Frames from the MD
94
+ """
95
+
70
96
  settings: MolecularDynamicsSettings
71
97
  calc_settings: Settings
72
98
  calc_engine: str | None = None
73
99
 
74
- # UUIDs of scan points
75
100
  frames: list[Frame] = []
@@ -1,3 +1,5 @@
1
+ """Multi-stage optimization workflow."""
2
+
1
3
  from typing import Self, Sequence
2
4
 
3
5
  from pydantic import BaseModel, Field, model_validator
@@ -10,7 +12,7 @@ from ..settings import Settings
10
12
  from ..solvent import Solvent, SolventSettings
11
13
  from ..task import Task
12
14
  from ..types import UUID
13
- from .workflow import Workflow
15
+ from .workflow import MoleculeWorkflow
14
16
 
15
17
 
16
18
  class MultiStageOptSettings(BaseModel):
@@ -177,9 +179,9 @@ class MultiStageOptSettings(BaseModel):
177
179
  raise NotImplementedError(f"Cannot assign settings for {mode=}")
178
180
 
179
181
 
180
- class MultiStageOptWorkflow(Workflow, MultiStageOptSettings):
182
+ class MultiStageOptWorkflow(MoleculeWorkflow, MultiStageOptSettings):
181
183
  """
182
- Workflow for multi-stage optimizations.
184
+ MoleculeWorkflow for multi-stage optimizations.
183
185
 
184
186
  Inherited
185
187
  :param initial_molecule: Molecule of interest
stjames/workflows/pka.py CHANGED
@@ -1,20 +1,54 @@
1
+ """pKa workflow."""
2
+
1
3
  from typing import Annotated
2
4
 
3
5
  from pydantic import AfterValidator
4
6
 
5
7
  from ..base import Base, round_float, round_optional_float
6
8
  from ..mode import Mode
7
- from .workflow import DBCalculation, Workflow
9
+ from .workflow import DBCalculation, MoleculeWorkflow
8
10
 
9
11
 
10
12
  class pKaMicrostate(Base):
13
+ """
14
+ A microstate for pKa calculations.
15
+
16
+ :param atom_index: index of the atom
17
+ :param structures: DBCalculation for the microstate
18
+ :param deltaG: relative free energy
19
+ :param pka: pKa
20
+ """
21
+
11
22
  atom_index: int
12
23
  structures: list[DBCalculation] = []
13
24
  deltaG: Annotated[float, AfterValidator(round_float(3))]
14
25
  pka: Annotated[float, AfterValidator(round_float(3))]
15
26
 
16
27
 
17
- class pKaWorkflow(Workflow):
28
+ class pKaWorkflow(MoleculeWorkflow):
29
+ """
30
+ Workflow for calculating pKa.
31
+
32
+ Inherited:
33
+ :param initial_molecule: Molecule of interest
34
+ :param mode: Mode for workflow
35
+
36
+ New:
37
+ :param pka_range: range of pKa values to consider
38
+ :param deprotonate_elements: elements to deprotonate
39
+ :param deprotonate_atoms: atoms to deprotonate
40
+ :param protonate_elements: elements to protonate
41
+ :param protonate_atoms: atom indices to protonate
42
+ :param reasonableness_buffer: buffer for pKa reasonableness
43
+
44
+ Results:
45
+ :param structures: DBCalculations for the microstates
46
+ :param conjugate_acids: conjugate acid microstates
47
+ :param conjugate_bases: conjugate base microstates
48
+ :param strongest_acid: pKa of the strongest acid
49
+ :param strongest_base: pKa of the strongest base
50
+ """
51
+
18
52
  mode: Mode = Mode.CAREFUL
19
53
 
20
54
  pka_range: tuple[float, float] = (2, 12)
@@ -1,3 +1,5 @@
1
+ """Redox potential workflow."""
2
+
1
3
  from typing import Annotated, Any, TypeVar
2
4
 
3
5
  from pydantic import AfterValidator, ValidationInfo, field_validator, model_validator
@@ -7,12 +9,12 @@ from ..mode import Mode
7
9
  from ..solvent import Solvent
8
10
  from ..types import UUID
9
11
  from .multistage_opt import MultiStageOptMixin
10
- from .workflow import Workflow
12
+ from .workflow import MoleculeWorkflow
11
13
 
12
14
  _T = TypeVar("_T")
13
15
 
14
16
 
15
- class RedoxPotentialWorkflow(Workflow, MultiStageOptMixin):
17
+ class RedoxPotentialWorkflow(MoleculeWorkflow, MultiStageOptMixin):
16
18
  """
17
19
  Workflow for computing spin states of molecules.
18
20
 
stjames/workflows/scan.py CHANGED
@@ -1,3 +1,5 @@
1
+ """Scan workflow."""
2
+
1
3
  from typing import Annotated
2
4
 
3
5
  import numpy as np
@@ -8,10 +10,19 @@ from ..base import Base, round_optional_float
8
10
  from ..molecule import Molecule
9
11
  from ..settings import Settings
10
12
  from ..types import UUID
11
- from .workflow import Workflow
13
+ from .workflow import MoleculeWorkflow
12
14
 
13
15
 
14
16
  class ScanPoint(Base):
17
+ """
18
+ A point in a scan.
19
+
20
+ :param index: index of the point
21
+ :param molecule: Molecule at the point
22
+ :param energy: energy of the point
23
+ :param uuid: UUID of the calculation
24
+ """
25
+
15
26
  index: int
16
27
  molecule: Molecule
17
28
  energy: Annotated[float | None, AfterValidator(round_optional_float(6))] = None
@@ -19,6 +30,16 @@ class ScanPoint(Base):
19
30
 
20
31
 
21
32
  class ScanSettings(Base):
33
+ """
34
+ Settings for a scan.
35
+
36
+ :param type: type of scan (bond, angle, dihedral)
37
+ :param atoms: indices of atoms to scan
38
+ :param start: start of scan
39
+ :param stop: end of scan
40
+ :param num: number of points in the scan
41
+ """
42
+
22
43
  type: str # "bond", "angle", "dihedral" - make Enum later
23
44
  atoms: list[int]
24
45
  start: float
@@ -32,7 +53,21 @@ class ScanSettings(Base):
32
53
  from_attributes = True
33
54
 
34
55
 
35
- class ScanWorkflow(Workflow):
56
+ class ScanWorkflow(MoleculeWorkflow):
57
+ """
58
+ Workflow for scanning a bond, angle, or dihedral.
59
+
60
+ Inherited:
61
+ :param initial_molecule: Molecule of interest
62
+ :param mode: Mode for workflow (currently unused)
63
+
64
+ New:
65
+ :param scan_settings: information about what coordinate to scan
66
+ :param calc_settings: settings for the calculation
67
+ :param calc_engine: engine to use for the calculation
68
+ :param scan_points: points along the scan
69
+ """
70
+
36
71
  scan_settings: ScanSettings
37
72
  calc_settings: Settings
38
73
  calc_engine: str
@@ -0,0 +1,60 @@
1
+ """Solubility prediction workflow."""
2
+
3
+ from typing import Annotated, Self
4
+
5
+ from pydantic import AfterValidator, BaseModel, model_validator
6
+
7
+ from ..types import round_list
8
+ from .workflow import SMILESWorkflow
9
+
10
+
11
+ class SolubilityResult(BaseModel):
12
+ """
13
+ Solubility result.
14
+
15
+ :param solubilities: solubilities in log(S)/L
16
+ :param uncertainties: uncertainties in the solubility in log(S)/L
17
+ """
18
+
19
+ solubilities: Annotated[list[float], AfterValidator(round_list(6))]
20
+ uncertainties: Annotated[list[float], AfterValidator(round_list(6))]
21
+
22
+ @model_validator(mode="after")
23
+ def check_size(self) -> Self:
24
+ """Confirm that the shapes are the same"""
25
+ if len(self.solubilities) != len(self.uncertainties):
26
+ raise ValueError("Solubilities and uncertainties must have the same length.")
27
+
28
+ return self
29
+
30
+
31
+ class SolubilityWorkflow(SMILESWorkflow):
32
+ """
33
+ Solubility prediction workflow.
34
+
35
+ Inputs:
36
+ :param initial_smiles: SMILES string of the molecule
37
+ :param solvents: list of solvent SMILES strings
38
+ :param temperatures: temperatures in K
39
+
40
+ Results:
41
+ :param solubilities: {solvent: SolubilityResult}
42
+ """
43
+
44
+ initial_smiles: str
45
+ solvents: list[str]
46
+ temperatures: list[float] = [273.15, 298.15, 323.15, 348.15, 373.15, 398.15, 423.15] # 0–150 °C
47
+
48
+ solubilities: dict[str, SolubilityResult] = {}
49
+
50
+ @model_validator(mode="after")
51
+ def check_size(self) -> Self:
52
+ """Check that the sizes of the lists are consistent."""
53
+ for solvent, result in self.solubilities.items():
54
+ if len(result.solubilities) != len(self.temperatures):
55
+ raise ValueError(f"Solubilities for {solvent} must have the same length as temperatures.")
56
+
57
+ if solvent not in self.solvents:
58
+ raise ValueError(f"Solvent {solvent} not in initial list of solvents")
59
+
60
+ return self
@@ -1,3 +1,5 @@
1
+ """Spin-state prediction workflow."""
2
+
1
3
  from typing import Annotated, Any
2
4
 
3
5
  from pydantic import AfterValidator, BaseModel, Field, PositiveInt, field_validator, model_validator
@@ -6,7 +8,7 @@ from ..base import round_float
6
8
  from ..mode import Mode
7
9
  from ..types import UUID
8
10
  from .multistage_opt import MultiStageOptMixin
9
- from .workflow import Workflow
11
+ from .workflow import MoleculeWorkflow
10
12
 
11
13
 
12
14
  class SpinState(BaseModel):
@@ -37,7 +39,7 @@ class SpinState(BaseModel):
37
39
  _sentinel_mso_mode = object()
38
40
 
39
41
 
40
- class SpinStatesWorkflow(Workflow, MultiStageOptMixin):
42
+ class SpinStatesWorkflow(MoleculeWorkflow, MultiStageOptMixin):
41
43
  """
42
44
  Workflow for computing spin states of molecules.
43
45
 
@@ -1,13 +1,24 @@
1
+ """Tautomer prediction workflow."""
2
+
1
3
  from typing import Annotated, Optional
2
4
 
3
5
  from pydantic import AfterValidator
4
6
 
5
7
  from ..base import Base, round_float, round_optional_float
6
8
  from ..mode import Mode
7
- from .workflow import DBCalculation, Workflow
9
+ from .workflow import DBCalculation, MoleculeWorkflow
8
10
 
9
11
 
10
12
  class Tautomer(Base):
13
+ """
14
+ A tautomer.
15
+
16
+ :param energy: energy of the tautomer
17
+ :param weight: statistical weight of the tautomer
18
+ :param predicted_relative_energy: relative energy of the tautomer
19
+ :param structures: UUIDs of the structures
20
+ """
21
+
11
22
  energy: Annotated[float, AfterValidator(round_float(6))]
12
23
  weight: Annotated[Optional[float], AfterValidator(round_optional_float(6))] = None
13
24
  predicted_relative_energy: Annotated[Optional[float], AfterValidator(round_optional_float(6))] = None
@@ -16,6 +27,17 @@ class Tautomer(Base):
16
27
  structures: list[DBCalculation] = []
17
28
 
18
29
 
19
- class TautomerWorkflow(Workflow):
30
+ class TautomerWorkflow(MoleculeWorkflow):
31
+ """
32
+ A workflow to calculate tautomers.
33
+
34
+ Inherited:
35
+ :param initial_molecule: Molecule of interest
36
+ :param mode: Mode for workflow
37
+
38
+ Results:
39
+ :param tautomers: resulting Tautomers
40
+ """
41
+
20
42
  mode: Mode = Mode.CAREFUL
21
43
  tautomers: list[Tautomer] = []
@@ -1,3 +1,5 @@
1
+ """Base classes for workflows."""
2
+
1
3
  from pydantic import field_validator
2
4
 
3
5
  from ..base import Base
@@ -11,18 +13,39 @@ class Workflow(Base):
11
13
  """
12
14
  Base class for Workflows.
13
15
 
14
- :param initial_molecule: Molecule of interest
15
- :param mode: Mode to use
16
16
  :param messages: messages to display
17
17
  """
18
18
 
19
- initial_molecule: Molecule
20
- mode: Mode = Mode.AUTO
21
19
  messages: list[Message] = []
22
20
 
23
21
  def __str__(self) -> str:
24
22
  return repr(self)
25
23
 
24
+
25
+ class SMILESWorkflow(Workflow):
26
+ """
27
+ Base class for Workflows that operate on a single SMILES string.
28
+
29
+ :param initial_smiles: SMILES string of interest
30
+ """
31
+
32
+ initial_smiles: str
33
+
34
+ def __repr__(self) -> str:
35
+ return f"<{type(self).__name__} {self.initial_smiles}>"
36
+
37
+
38
+ class MoleculeWorkflow(Workflow):
39
+ """
40
+ Base class for Workflows that operate on a single molecule.
41
+
42
+ :param initial_molecule: Molecule of interest
43
+ :param mode: Mode to use
44
+ """
45
+
46
+ initial_molecule: Molecule
47
+ mode: Mode = Mode.AUTO
48
+
26
49
  def __repr__(self) -> str:
27
50
  return f"<{type(self).__name__} {self.mode.name}>"
28
51
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: stjames
3
- Version: 0.0.61
3
+ Version: 0.0.62
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
@@ -8,11 +8,10 @@ Project-URL: Bug Tracker, https://github.com/rowansci/stjames/issues
8
8
  Requires-Python: >=3.11
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: atomium<2,>=1
12
11
  Requires-Dist: pydantic>=2.4
13
12
  Requires-Dist: numpy
14
- Requires-Dist: atomium<2.0,>=1.0
15
13
  Requires-Dist: requests
14
+ Requires-Dist: rdkit
16
15
 
17
16
  # stjames
18
17
 
@@ -13,7 +13,7 @@ stjames/int_settings.py,sha256=5HXp8opt5ZyY1UpmfaK7NVloWVLM5jkG0elEEqpVLUo,896
13
13
  stjames/message.py,sha256=Rq6QqmHZKecWxYH8fVyXmuoCCPZv8YinvgykSeorXSU,216
14
14
  stjames/method.py,sha256=5hBHk2xQLpxZ52LwJ9FHWaqQMdFKnsbQEOxaVe6O4Go,2321
15
15
  stjames/mode.py,sha256=xw46Cc7f3eTS8i35qECi-8DocAlANhayK3w4akD4HBU,496
16
- stjames/molecule.py,sha256=DeNYmFdvbuKeXvLqlu-UxHMyZVK6y4j-Lw3HITGMnHw,12406
16
+ stjames/molecule.py,sha256=GLOWgXPiIsy3cjqRUNAMR0YLQVlzYilGESsGdNIhxww,14075
17
17
  stjames/opt_settings.py,sha256=gxXGtjy9l-Q5Wen9eO6T6HHRCuS8rfOofdVQIJj0JcI,550
18
18
  stjames/pdb.py,sha256=UxbgtIbc28L9O74AESYQiLBeiWZhdEbrBUT3mlyqRt8,25411
19
19
  stjames/periodic_cell.py,sha256=eV_mArsY_MPEFSrFEsTC-CyCc6V8ITAXdk7yhjjNI7M,1080
@@ -24,12 +24,12 @@ stjames/solvent.py,sha256=u037tmu-9oa21s-WEDZ7VC7nuNVjkqR2ML4JWjWSME4,1158
24
24
  stjames/status.py,sha256=wTKNcNxStoEHrxxgr_zTyN90NITa3rxMQZzOgrCifEw,332
25
25
  stjames/task.py,sha256=OLINRqe66o7t8arffilwmggrF_7TH0L79u6DhGruxV8,329
26
26
  stjames/thermochem_settings.py,sha256=ZTLz31v8Ltutde5Nfm0vH5YahWjcfFWfr_R856KffxE,517
27
- stjames/types.py,sha256=hw-3UBikESvN3DzfK5doZB030kIEfx9gC3yBkIbebsI,3764
27
+ stjames/types.py,sha256=rs2CdpkruIfU-PS98rjr9HAJNFGdZDB_zl-u3wa5rAs,4092
28
28
  stjames/atomium_stjames/__init__.py,sha256=gZkzC7i9D_fmWUTN55gtygITo3-qvJUda5CXLR0jyCQ,306
29
29
  stjames/atomium_stjames/data.py,sha256=-hzwBpTHq5JetsOVyopUJswKnKAkMtJ_XkONxjXVupU,5675
30
- stjames/atomium_stjames/mmcif.py,sha256=SjyWd1Zg_Pd0zM9OhaZ3rWGg3TDUuRJS88Zsvdbi-5M,27420
30
+ stjames/atomium_stjames/mmcif.py,sha256=llbJ65p2B-aZN31-E_ODVDmrVeBoSw9y_Mg5XjyQvTA,26755
31
31
  stjames/atomium_stjames/pdb.py,sha256=C2mEcBDDrnoXD9ZCMIH2uJpjiWPJy6ktXq8IFZsrQKM,22482
32
- stjames/atomium_stjames/utilities.py,sha256=PSrOGn6MED4sXvbTLb65Jv20Ylptz4slZtjWEDzeRrI,4776
32
+ stjames/atomium_stjames/utilities.py,sha256=-YtM7sRMvMk0wWrC3svWUWH4CGI0NtY77nXsg9tjHfc,4964
33
33
  stjames/data/__init__.py,sha256=O59Ksp7AIqwOELCWymfCx7YeBzwNOGCMlGQi7tNLqiE,24
34
34
  stjames/data/bragg_radii.json,sha256=hhbn-xyZNSdmnULIjN2Cvq-_BGIZIqG243Ls_mey61w,1350
35
35
  stjames/data/elements.py,sha256=9BW01LZlyJ0H5s7Q26vUmjZIST41fwOYYrGvmPd7q0w,858
@@ -37,28 +37,29 @@ stjames/data/isotopes.json,sha256=5ba8QnLrHD_Ypv2xekv2cIRwYrX3MQ19-1FOFtt0RuU,83
37
37
  stjames/data/nist_isotopes.json,sha256=d5DNk1dX0iB1waEYIRR6JMHuA7AuYwSBEgBvb4EKyhM,14300
38
38
  stjames/data/read_nist_isotopes.py,sha256=y10FNjW43QpC45qib7VHsIghEwT7GG5rsNwHdc9osRI,3309
39
39
  stjames/data/symbol_element.json,sha256=vl_buFusTqBd-muYQtMLtTDLy2OtBI6KkBeqkaWRQrg,1186
40
- stjames/workflows/__init__.py,sha256=cndGGw9ZGhvbbrT_1mJ1w7gNAjgwmkYGq2Fqt8ml6Hg,2180
41
- stjames/workflows/admet.py,sha256=V8noO0Eb7h2bDFSnj6Pxv4ILm0lGxyVRCi13hE0zmEQ,149
42
- stjames/workflows/basic_calculation.py,sha256=q48bpab7ZqmRTR4PsGC6bWkuxqkVdJRM8gysevTYXP0,212
43
- stjames/workflows/bde.py,sha256=cWsZNiNdUy5DGvu8o6bBepLZIB5ohiAD6RKoK3YSq1I,9786
44
- stjames/workflows/conformer.py,sha256=LnpvH5HmLCn-ddH3r1WhEYONUMX5ohZswdESEPCR6o4,2907
45
- stjames/workflows/conformer_search.py,sha256=ZQ3VxQoaR_aZ-KSblXooAnGMTFbvOj4IQnM70K0OXhc,13497
46
- stjames/workflows/descriptors.py,sha256=lRRCsGzad3nIg0wI1090ffaXB0FVh0nRRb2lNxCY0kI,281
47
- stjames/workflows/docking.py,sha256=boetrhWyF-JAi8DAyiZrH_dFLs4yIe8P6C-ZR73AJgk,2932
48
- stjames/workflows/electronic_properties.py,sha256=uAIcGKKLhqoHyDgcOZulEXwTU2EjidyvOndZDYyeJEk,4003
49
- stjames/workflows/fukui.py,sha256=2J23RjkSOZ-40AM3AdnbJkRBGaCevkjkhnV3pVfa6lo,738
50
- stjames/workflows/hydrogen_bond_basicity.py,sha256=Luvov2DlDvZN06W-mU6YaN7wcIrTLwzdoWww-jNE3x4,517
51
- stjames/workflows/irc.py,sha256=3lA3EOXju6d0vETs-PEnRBnGCkshTXDtjw4dVDj0N5A,3333
52
- stjames/workflows/molecular_dynamics.py,sha256=4HmYETU1VT2BA4-PqAayRZLjnj1WuYxd5bqpIyH9g5k,2465
53
- stjames/workflows/multistage_opt.py,sha256=0ou-UYMGIrewZIg3QZIgwS_eweYdsh2pRplxgRCqLcE,13572
54
- stjames/workflows/pka.py,sha256=vSbMc7wuUKATNLq2kQyfCyX6aUthCj-XGSoXnuk4GMo,1031
55
- stjames/workflows/redox_potential.py,sha256=oLx3IyezOkJSXTVhtXkveC5GlsD6crR0kNDcNuSoIsg,3822
56
- stjames/workflows/scan.py,sha256=uNSuUmVMAV4exNvcv1viVe7930i7GZMn7RtEimnwEE8,1000
57
- stjames/workflows/spin_states.py,sha256=b-uCf-pHjF_JHbExeb5GdRToE0pIxP0JTd50U130ckI,4693
58
- stjames/workflows/tautomer.py,sha256=x3TC8hkMs87ZUodLyhce5EUzYoV276ePfPMi7ISWyNU,651
59
- stjames/workflows/workflow.py,sha256=tIu5naADYgYS7kdW8quvGEWHWosBcrIdcD7L86v-uMQ,976
60
- stjames-0.0.61.dist-info/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
61
- stjames-0.0.61.dist-info/METADATA,sha256=kUkOkCULcbndmuv-hy5nCtBVAIJDNFy6MEI53KNIMDA,1713
62
- stjames-0.0.61.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
63
- stjames-0.0.61.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
64
- stjames-0.0.61.dist-info/RECORD,,
40
+ stjames/workflows/__init__.py,sha256=5KX0IcuYElj8K3qE2c-XY8dL-vPdG87US7ErfZlyK88,2293
41
+ stjames/workflows/admet.py,sha256=m8yGWe-UeYK5F7TOeNsQMPTzdWL-aaRSTQsyO7SVa6k,421
42
+ stjames/workflows/basic_calculation.py,sha256=ZX3KwhfyyCTjc2ougQIL4If7gtwZP9WjqpL45mBquW0,573
43
+ stjames/workflows/bde.py,sha256=hdTjwma5L9SrU5F5r6dB1ruB_B6buBUtZHf2sanNW2k,9802
44
+ stjames/workflows/conformer.py,sha256=18aO6ngMBeGAmQkBdLGCCHr398RIYr1v2hD2IT1u4cc,3005
45
+ stjames/workflows/conformer_search.py,sha256=4yPEKIIedeaVvaAwgjwC1FxiHqM6n2zOF6c9Yk_q1oA,13513
46
+ stjames/workflows/descriptors.py,sha256=T4tc7xdtBdxESGO86KR323jPQ2pgwxBqgV0khA6MEgQ,584
47
+ stjames/workflows/docking.py,sha256=p-L1s3NxLcliwDs8uLaohcz1Lap01Nuogq9Xe1eOT2k,2949
48
+ stjames/workflows/electronic_properties.py,sha256=GT3-NC7w-dbcOJ-3AzJ7LgzH6frTbiH2Iyb9BCa-SvY,4112
49
+ stjames/workflows/fukui.py,sha256=e7CF7Mp2Dt1JTipQx-Sz_37W1urL-iRpjXY-9ItSvhM,1268
50
+ stjames/workflows/hydrogen_bond_basicity.py,sha256=XDpHEluw6DQ9Zk5g2Je2a81HqIkqPglZ-6f2YZnd4Bc,1159
51
+ stjames/workflows/irc.py,sha256=ZP7icylW8rgo_Uh7h3bmyumn0ru1IyF-61nP5Jnmq3M,3402
52
+ stjames/workflows/molecular_dynamics.py,sha256=kxugE73Ntzpj-xpJSoQ1EwGzXXdvi_NTyeP4913EVwE,3173
53
+ stjames/workflows/multistage_opt.py,sha256=pPLAZDztHd37q8cxCUkdq8EzOFyrTzZJHNfDV5auiHs,13638
54
+ stjames/workflows/pka.py,sha256=j3vBh2YM3nJzJ1XJKPsmYahRCeaU9n3P-G-u9_moaFw,2065
55
+ stjames/workflows/redox_potential.py,sha256=7S18t9Y3eynSnA3lZbRlvLfdbgeBopdiigLzt1zxg5c,3871
56
+ stjames/workflows/scan.py,sha256=vGS1wWMpMSogb63DEED6U6oHsLgV0D2hXVQg2UWWJgs,1913
57
+ stjames/workflows/solubility.py,sha256=kGfVyPPGDLRpf2j6dSY7woCkfsoXSbUzdSImA4mcMpw,1898
58
+ stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQnaI,4748
59
+ stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
60
+ stjames/workflows/workflow.py,sha256=sk2BUz59wdIkT_EyKOnMt5woNrjo3aHVK38cU8x8I7Q,1423
61
+ stjames-0.0.62.dist-info/LICENSE,sha256=i7ehYBS-6gGmbTcgU4mgk28pyOx2kScJ0kcx8n7bWLM,1084
62
+ stjames-0.0.62.dist-info/METADATA,sha256=Vni7VUt_d2w-dqOUh4pUhK6ldBtd8PxJHl0hBtkK1cU,1672
63
+ stjames-0.0.62.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
64
+ stjames-0.0.62.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
65
+ stjames-0.0.62.dist-info/RECORD,,