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

@@ -512,7 +512,7 @@ def add_atom_to_polymer(atom: dict[str, Any], aniso: dict[int, Any], model: dict
512
512
  try:
513
513
  model["polymer"][mol_id]["residues"][res_id]["atoms"][int(atom["id"])] = atom_dict_to_atom_dict(atom, aniso)
514
514
  except Exception:
515
- name = atom["auth_comp_id"]
515
+ name = atom.get("auth_comp_id") or atom.get("label_comp_id") or "UNKNOWN"
516
516
  try:
517
517
  model["polymer"][mol_id]["residues"][res_id] = {
518
518
  "name": name,
@@ -553,7 +553,7 @@ def add_atom_to_non_polymer(atom: dict[str, Any], aniso: dict[int, Any], model:
553
553
  try:
554
554
  model[mol_type][mol_id]["atoms"][int(atom["id"])] = atom_dict_to_atom_dict(atom, aniso)
555
555
  except Exception:
556
- name = atom["auth_comp_id"]
556
+ name = atom.get("auth_comp_id") or atom.get("label_comp_id") or "UNKNOWN"
557
557
  model[mol_type][mol_id] = {
558
558
  "name": name,
559
559
  "full_name": names.get(name).upper() if names.get(name) is not None and names.get(name).lower() != "water" else None, # type: ignore [union-attr]
@@ -21,6 +21,7 @@ from .multistage_opt import *
21
21
  from .nmr import *
22
22
  from .pka import *
23
23
  from .pose_analysis_md import *
24
+ from .protein_binder_design import *
24
25
  from .protein_cofolding import *
25
26
  from .redox_potential import *
26
27
  from .scan import *
@@ -51,6 +52,7 @@ WORKFLOW_NAME = Literal[
51
52
  "pka",
52
53
  "pose_analysis_md",
53
54
  "protein_cofolding",
55
+ "protein_binder_design",
54
56
  "redox_potential",
55
57
  "scan",
56
58
  "solubility",
@@ -80,6 +82,7 @@ WORKFLOW_MAPPING: dict[WORKFLOW_NAME, Workflow] = {
80
82
  "pka": pKaWorkflow, # type: ignore [dict-item]
81
83
  "pose_analysis_md": PoseAnalysisMolecularDynamicsWorkflow, # type: ignore [dict-item]
82
84
  "protein_cofolding": ProteinCofoldingWorkflow, # type: ignore [dict-item]
85
+ "protein_binder_design": ProteinBinderDesignWorkflow, # type: ignore [dict-item]
83
86
  "redox_potential": RedoxPotentialWorkflow, # type: ignore [dict-item]
84
87
  "scan": ScanWorkflow, # type: ignore [dict-item]
85
88
  "solubility": SolubilityWorkflow, # type: ignore [dict-item]
@@ -9,9 +9,10 @@ from ..base import LowercaseStrEnum
9
9
  from ..constraint import Constraint
10
10
  from ..method import Method, XTBMethod
11
11
  from ..mode import Mode
12
+ from ..molecule import Molecule
12
13
  from ..types import UUID, FloatPerAtom, round_float_per_atom
13
14
  from .multistage_opt import MultiStageOptMixin
14
- from .workflow import MoleculeWorkflow
15
+ from .workflow import MoleculeWorkflow, SMILESWorkflow
15
16
 
16
17
  _sentinel = object()
17
18
 
@@ -377,12 +378,16 @@ class ConformerSearchMixin(ConformerGenMixin, MultiStageOptMixin):
377
378
  return self
378
379
 
379
380
 
380
- class ConformerSearchWorkflow(ConformerSearchMixin, MoleculeWorkflow):
381
+ class ConformerSearchWorkflow(ConformerSearchMixin, SMILESWorkflow, MoleculeWorkflow):
381
382
  """
382
383
  ConformerSearch Workflow.
383
384
 
385
+ This workflow supports both SMILES and 3D molecular input. Some conformer generation settings
386
+ support both methods; others (like CREST) require 3D information. Only one should be supplied.
387
+
384
388
  Inherited:
385
389
  :param initial_molecule: Molecule of interest
390
+ :param initial_smiles: SMILES of the molecule of interest
386
391
  :param conf_gen_mode: Mode for calculations
387
392
  :param conf_gen_settings: settings for conformer generation
388
393
  :param mso_mode: Mode for MultiStageOptSettings
@@ -401,6 +406,21 @@ class ConformerSearchWorkflow(ConformerSearchMixin, MoleculeWorkflow):
401
406
  :param energies: energies of the molecules
402
407
  """
403
408
 
409
+ initial_smiles: str = ""
410
+ initial_molecule: Molecule | None = None # type: ignore [assignment]
411
+
404
412
  # Results
405
413
  conformer_uuids: list[list[UUID | None]] = Field(default_factory=list)
406
414
  energies: Annotated[FloatPerAtom, AfterValidator(round_float_per_atom(6))] = Field(default_factory=list)
415
+
416
+ @model_validator(mode="after")
417
+ def validate_mol_input(self) -> Self:
418
+ """Ensure that only one of initial_molecule or initial_smiles is set."""
419
+
420
+ if not (bool(self.initial_smiles) ^ bool(self.initial_molecule)):
421
+ raise ValueError("Can only set one of initial_molecule and initial_smiles")
422
+
423
+ if isinstance(self.conf_gen_settings, iMTDSettings) and (self.initial_molecule is None):
424
+ raise ValueError("iMTDSettings requires `initial_molecule` to be set")
425
+
426
+ return self
@@ -1,6 +1,6 @@
1
1
  """Docking workflow."""
2
2
 
3
- from typing import Annotated, Self, TypeAlias
3
+ from typing import Annotated, Literal, Self, TypeAlias
4
4
 
5
5
  from pydantic import AfterValidator, ConfigDict, field_validator, model_validator
6
6
 
@@ -46,12 +46,23 @@ class VinaSettings(DockingSettings):
46
46
  """
47
47
  Controls how AutoDock Vina is run.
48
48
 
49
+ :param executable: which Vina implementation is run.
50
+ :param scoring_function: which scoring function is employed.
49
51
  :param exhaustiveness: how many times Vina attempts to find a pose.
50
52
  8 is typical, 32 is considered relatively careful.
51
53
  """
52
54
 
55
+ executable: Literal["qvina2", "vina"] = "vina"
56
+ scoring_function: Literal["vinardo", "vina"] = "vinardo"
53
57
  exhaustiveness: int = 8
54
58
 
59
+ @model_validator(mode="after")
60
+ def check_executable_scoring_function(self) -> Self:
61
+ """Check if the combination of exectuable and scoring function is supported."""
62
+ if (self.executable == "qvina2") and (self.scoring_function == "vinardo"):
63
+ raise ValueError("qvina2 does not implement the vinardo scoring function!")
64
+ return self
65
+
55
66
 
56
67
  class DockingWorkflow(MoleculeWorkflow):
57
68
  """
@@ -76,8 +76,8 @@ class PoseAnalysisMolecularDynamicsWorkflow(SMILESWorkflow):
76
76
  protein_uuid: UUID | None = None
77
77
  ligand_residue_name: str = "LIG"
78
78
 
79
- num_trajectories: PositiveInt = 4
80
- equilibration_time_ns: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 5
79
+ num_trajectories: PositiveInt = 1
80
+ equilibration_time_ns: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 1
81
81
  simulation_time_ns: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 10
82
82
 
83
83
  temperature: Annotated[PositiveFloat, AfterValidator(round_float(3))] = 300
@@ -0,0 +1,303 @@
1
+ """Protein-binder-design workflow."""
2
+
3
+ from enum import Enum
4
+ from typing import Annotated, TypeAlias
5
+
6
+ from pydantic import AfterValidator
7
+
8
+ from ..base import Base, LowercaseStrEnum, round_optional_float
9
+ from ..types import UUID
10
+ from .workflow import Workflow
11
+
12
+ ProteinUUID: TypeAlias = UUID
13
+
14
+
15
+ class BoltzGenSecondaryStructure(Base):
16
+ """
17
+ Represents the secondary structure assignments for a protein.
18
+
19
+ :param id: Optional identifier for this secondary structure annotation.
20
+ :param sheet: String encoding the residue indices comprising β-sheet structures
21
+ (e.g., "1,3..11" for residues 1, and 3 through 11).
22
+ :param helix: String encoding residue indices comprising helices.
23
+ :param loop: String encoding residue indices comprising loop or coil regions.
24
+ """
25
+
26
+ id: str | None = None
27
+ sheet: str | None = None
28
+ helix: str | None = None
29
+ loop: str | None = None
30
+
31
+
32
+ class BoltzGenProteinEntity(Base):
33
+ """
34
+ Represents a protein entity, either a designed or natural sequence.
35
+
36
+ :param id: Unique identifier for the protein.
37
+ :param sequence: Protein sequence, may contain amino acids and numbers for designed regions.
38
+ :param secondary_structure: Optional assigned secondary structure.
39
+ :param cyclic: Whether the protein is cyclic (True/False). Optional.
40
+ """
41
+
42
+ id: str
43
+ sequence: str # can include amino acids as well as numbers for designed regions
44
+ secondary_structure: BoltzGenSecondaryStructure | None = None
45
+ # binding_types: BindingType | None = None - we may want to add this later but not used in examples.
46
+ cyclic: bool | None = None
47
+
48
+
49
+ class BoltzGenLigandEntity(Base):
50
+ """
51
+ Represents a ligand entity (non-protein), such as a small molecule.
52
+
53
+ :param id: Unique identifier for the ligand.
54
+ :param smiles: SMILES string representation of the ligand.
55
+ """
56
+
57
+ id: str
58
+ smiles: str
59
+ # binding_types: str | None = None - we may want to add this later but not used in examples.
60
+
61
+
62
+ class BoltzGenRegionSelection(Base):
63
+ """
64
+ Defines a region of a protein chain by specifying its chain identifier and (optionally) residue indices.
65
+
66
+ :param chain_id: Identifier for the protein chain (e.g., 'A', 'B', etc.).
67
+ :param residue_indices: Residues to select, specified as a string in the format "5..7,13" or "5..15,50..".
68
+ """
69
+
70
+ chain_id: str | None = None
71
+ residue_indices: str | None = None
72
+
73
+
74
+ class BoltzGenProximityRegionSelection(BoltzGenRegionSelection):
75
+ """
76
+ Defines a region of a protein chain based on spatial proximity to a selection of residues.
77
+
78
+ Inherits:
79
+ BoltzGenRegionSelection
80
+
81
+ :param radius: Radius in angstroms (Å) used to select all residues within proximity to the specified region.
82
+ """
83
+
84
+ radius: int | None = None
85
+
86
+
87
+ class BoltzGenBindingType(Base):
88
+ """
89
+ Represents the binding interface specification for a given protein chain.
90
+
91
+ :param chain_id: Identifier for the protein chain (e.g., 'A', 'B', etc.).
92
+ :param binding: Residue indices or regions that are required to participate in binding
93
+ (e.g., "5..7,13" or "all" for the whole chain).
94
+ :param not_binding: Residue indices or regions that should explicitly not participate in binding
95
+ (e.g., "5..7,13" or "all" for excluding the entire chain).
96
+ """
97
+
98
+ chain_id: str | None = None
99
+ binding: str | None = None
100
+ not_binding: str | None = None
101
+
102
+
103
+ class BoltzGenSecondaryStructureOptions(str, Enum):
104
+ UNSPECIFIED = "UNSPECIFIED"
105
+ LOOP = "LOOP"
106
+ HELIX = "HELIX"
107
+ SHEET = "SHEET"
108
+
109
+
110
+ class BoltzGenDesignInsertion(Base):
111
+ """
112
+ Represents an insertion site for protein design in a specific chain.
113
+
114
+ :param chain_id: Identifier of the chain where the insertion occurs.
115
+ :param residue_index: Position in the chain after which the insertion is to be made.
116
+ :param number_of_residues: Number of residues to insert at the specified site (can be a string pattern).
117
+ :param secondary_structure: Desired secondary structure type for the inserted residues
118
+ ("UNSPECIFIED", "LOOP", "HELIX", or "SHEET"). Optional.
119
+ """
120
+
121
+ chain_id: str
122
+ residue_index: int
123
+ number_of_residues: str
124
+ secondary_structure: BoltzGenSecondaryStructureOptions | None = None
125
+
126
+
127
+ class BoltzGenFileEntity(Base):
128
+ """
129
+ Represents a protein structure input and its associated region selection and design specifications
130
+ for the BoltzGen binder design workflow.
131
+
132
+ :param uuid: Unique identifier for the protein structure.
133
+ :param include: List of regions to include in the design or analysis context.
134
+ :param exclude: List of regions to explicitly exclude from consideration (e.g., for ignoring noisy/irrelevant regions).
135
+ :param include_proximity: List of regions defined by spatial proximity (e.g., residues within a given radius).
136
+ :param binding_types: List of binding type constraints or permitted interface regions.
137
+ :param design: List of regions that are being subject to design (mutable, allowed to change).
138
+ :param secondary_structure: List of desired or annotated secondary structure definitions for selected regions.
139
+ :param design_insertions: List of new regions to be inserted with specified properties (e.g., insertion sites, structure preferences).
140
+ """
141
+
142
+ uuid: ProteinUUID
143
+ include: list[BoltzGenRegionSelection] = []
144
+ exclude: list[BoltzGenRegionSelection] = []
145
+ # fuse: None - we may want to add this later but not used in examples.
146
+ include_proximity: list[BoltzGenProximityRegionSelection] = []
147
+ binding_types: list[BoltzGenBindingType] = []
148
+ # structure_groups: None - we may want to add this later but not used in examples.
149
+ design: list[BoltzGenRegionSelection] = []
150
+ secondary_structure: list[BoltzGenSecondaryStructure] = []
151
+ design_insertions: list[BoltzGenDesignInsertion] = []
152
+
153
+
154
+ class BoltzGenAtomSpecification(Base):
155
+ """
156
+ Atom specification for a protein chain, used for applying constraints or referencing atoms.
157
+
158
+ :param chain_id: Identifier for the protein chain (e.g., "A", "B").
159
+ :param index: Residue index the atom belongs to (integer, 1-based).
160
+ :param atom_name: Name of the atom (e.g., "CA", "N", "O", etc.).
161
+ """
162
+
163
+ chain_id: str
164
+ index: int
165
+ atom_name: str
166
+
167
+
168
+ class BoltzGenConstraint(Base):
169
+ """
170
+ Describes a covalent or spatial constraint between two specified atoms in the context of protein design.
171
+
172
+ :param atom1: First atom in the constraint.
173
+ :param atom2: Second atom in the constraint.
174
+ """
175
+
176
+ atom1: BoltzGenAtomSpecification
177
+ atom2: BoltzGenAtomSpecification
178
+
179
+
180
+ class BoltzGenInput(Base):
181
+ """
182
+ Represents the primary input schema for the boltzgen application.
183
+
184
+ :param protein_entities: Protein chains that are designed or targeted for binding.
185
+ :param ligand_entities: Small molecules or other non-protein ligands relevant to the design.
186
+ :param file_entities: 3d protein structures and input settings related to them.
187
+ :param constraints: Covalent bond constraints
188
+ """
189
+
190
+ protein_entities: list[BoltzGenProteinEntity] = []
191
+ ligand_entities: list[BoltzGenLigandEntity] = []
192
+ file_entities: list[BoltzGenFileEntity] = []
193
+ constraints: list[BoltzGenConstraint] = []
194
+
195
+
196
+ class BoltzGenScores(Base):
197
+ """
198
+ Compact, interpretable metrics for a designed binder.
199
+ ↑ higher is better, ↓ lower is better
200
+
201
+ :param quality_score: aggregate model quality (↑)
202
+ :param num_filters_passed: number of QC/heuristic filters passed (↑)
203
+ :param iptm: inter-chain pTM confidence, 0–1 (↑)
204
+ :param design_ptm: design pTM confidence, 0–1 (↑)
205
+ :param min_interaction_pae: minimum interface PAE in Å (↓)
206
+ :param bb_rmsd: backbone RMSD in Å (↓)
207
+ :param delta_sasa_refolded: ΔSASA of interface after refolding, Ų (↑ typically indicates better burial)
208
+ :param plip_hbonds_refolded: count of hydrogen bonds at the interface (↑)
209
+ :param plip_saltbridge_refolded: count of salt bridges at the interface (↑)
210
+ :param liability_score: composite liabilities score (↓)
211
+ :param liability_high_severity_violations: count of high-severity liabilities (↓)
212
+ :param liability_num_violations: total liability count (↓)
213
+ :param helix: fraction helical content, 0–1
214
+ :param sheet: fraction β-sheet content, 0–1
215
+ :param loop: fraction loop/coil content, 0–1
216
+ :param design_largest_hydrophobic_patch_refolded: largest hydrophobic patch area after refolding, Ų
217
+ :param design_hydrophobicity: overall design hydrophobicity score (unitless)
218
+ :param num_tokens: sequence length / token count
219
+ """
220
+
221
+ quality_score: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
222
+ num_filters_passed: int | None = None
223
+
224
+ iptm: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
225
+ design_ptm: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
226
+ min_design_to_target_pae: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
227
+ design_to_target_iptm: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
228
+ min_interaction_pae: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
229
+
230
+ bb_rmsd: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
231
+ delta_sasa_refolded: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
232
+
233
+ plip_hbonds_refolded: int | None = None
234
+ plip_saltbridge_refolded: int | None = None
235
+
236
+ liability_score: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
237
+ liability_high_severity_violations: int | None = None
238
+ liability_num_violations: int | None = None
239
+
240
+ helix: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
241
+ sheet: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
242
+ loop: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
243
+ design_largest_hydrophobic_patch_refolded: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
244
+ design_hydrophobicity: Annotated[float | None, AfterValidator(round_optional_float(3))] = None
245
+ num_tokens: int | None = None
246
+
247
+
248
+ class ProteinBinderDesignResult(Base):
249
+ """
250
+ The output; a designed binder.
251
+
252
+ :param sequence: the sequence
253
+ :param bound_structure: the PDB of the structure bound to the target
254
+ :param scores: the scores for the generated structure
255
+ """
256
+
257
+ binder_sequence: str | None = None
258
+ bound_structure: ProteinUUID | None = None
259
+ scores: BoltzGenScores | None = None
260
+
261
+
262
+ class BoltzGenProtocol(LowercaseStrEnum):
263
+ """
264
+ The predefined protocol used for generation + filtering.
265
+ """
266
+
267
+ PROTEIN_ANYTHING = "protein-anything"
268
+ PEPTIDE_ANYTHING = "peptide-anything"
269
+ PROTEIN_SMALL_MOLECULE = "protein-small_molecule"
270
+ NANOBODY_ANYTHING = "nanobody-anything"
271
+
272
+
273
+ class BoltzGenSettings(Base):
274
+ """
275
+ The settings for running BoltzGen.
276
+
277
+ :param num_designs: how many designs to generate
278
+ :param protocol: which protocol to use
279
+ :param binding_residue: a dict mapping the chain ID to which residues should bind.
280
+ the string follows the BoltzGen format of specifying ranges of residue indices (refer to their documentation).
281
+ examples include "5..7,13" or "5..15,50..".
282
+ """
283
+
284
+ protocol: BoltzGenProtocol = BoltzGenProtocol.PROTEIN_ANYTHING
285
+ num_designs: int = 100
286
+ budget: int = 20
287
+
288
+
289
+ class ProteinBinderDesignWorkflow(Workflow):
290
+ """
291
+ A workflow for generating proteins or peptides that bind to something.
292
+
293
+
294
+ New:
295
+ :param binder_design_input: the input to the protein binder design workflow
296
+ :param binder_design_settings: the settings for the protein generation method employed
297
+ :param generated_binders: the output structures
298
+ """
299
+
300
+ binder_design_input: BoltzGenInput = BoltzGenInput()
301
+ binder_design_settings: BoltzGenSettings = BoltzGenSettings()
302
+
303
+ generated_binders: list[ProteinBinderDesignResult] = []
@@ -1,4 +1,4 @@
1
- """Protein cofolding Workflow."""
1
+ """Protein cofolding workflow."""
2
2
 
3
3
  from typing import Annotated, Literal, TypeAlias
4
4
 
@@ -26,6 +26,7 @@ class Token(BaseModel):
26
26
  input_type: Literal["ligand", "protein"]
27
27
  input_index: int
28
28
  token_index: int
29
+ atom_name: str | None = None
29
30
 
30
31
 
31
32
  class ContactConstraint(BaseModel):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stjames
3
- Version: 0.0.115
3
+ Version: 0.0.117
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
@@ -25,7 +25,7 @@ stjames/thermochem_settings.py,sha256=ZTLz31v8Ltutde5Nfm0vH5YahWjcfFWfr_R856Kffx
25
25
  stjames/types.py,sha256=PGEZeqGnomgWUSHcMuUftzvZt7l4VwaQ1Pi-7vEkibg,4773
26
26
  stjames/atomium_stjames/__init__.py,sha256=gZkzC7i9D_fmWUTN55gtygITo3-qvJUda5CXLR0jyCQ,306
27
27
  stjames/atomium_stjames/data.py,sha256=-hzwBpTHq5JetsOVyopUJswKnKAkMtJ_XkONxjXVupU,5675
28
- stjames/atomium_stjames/mmcif.py,sha256=em1fNt6577OaUjL7Pctru7aJp3ceZ9kEnj5w6BRWdVs,27090
28
+ stjames/atomium_stjames/mmcif.py,sha256=n6cFdODKzRA6r4_Cp4dgtmAJrIlj-YBotCFT4skzuTI,27182
29
29
  stjames/atomium_stjames/pdb.py,sha256=hoEV1xmbkYkXW8A6YX5uspvSRvGlhzM1o_BiikQ6DiU,23734
30
30
  stjames/atomium_stjames/utilities.py,sha256=-YtM7sRMvMk0wWrC3svWUWH4CGI0NtY77nXsg9tjHfc,4964
31
31
  stjames/data/__init__.py,sha256=O59Ksp7AIqwOELCWymfCx7YeBzwNOGCMlGQi7tNLqiE,24
@@ -37,14 +37,14 @@ stjames/data/read_nist_isotopes.py,sha256=y10FNjW43QpC45qib7VHsIghEwT7GG5rsNwHdc
37
37
  stjames/data/symbol_element.json,sha256=vl_buFusTqBd-muYQtMLtTDLy2OtBI6KkBeqkaWRQrg,1186
38
38
  stjames/optimization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  stjames/optimization/freezing_string_method.py,sha256=eEQBqbYHgJH9gVRLDIFtGuPcsHHMLAAt1hF3jtq70lo,2285
40
- stjames/workflows/__init__.py,sha256=I-s6f6uz7PXpeKsvQlL04wswId2mW2u7thk309TC7ng,3165
40
+ stjames/workflows/__init__.py,sha256=RoqcRk27PTu9UfHFQQtu5quiBipsx4NGvDPst5S1EOc,3317
41
41
  stjames/workflows/admet.py,sha256=qFUpCFiLW-3gzuEjCMNBJ6DEG_vquJcPAsN4SVZRfdE,1289
42
42
  stjames/workflows/basic_calculation.py,sha256=sAgHBcNHE72ZbZPB9vyZShALRC4zOVw6It6cpJlbX2A,911
43
43
  stjames/workflows/bde.py,sha256=g_In-caftXiimrhfdptHjpfrYQUs3vF58qYmRnaTN8g,10825
44
44
  stjames/workflows/conformer.py,sha256=18aO6ngMBeGAmQkBdLGCCHr398RIYr1v2hD2IT1u4cc,3005
45
- stjames/workflows/conformer_search.py,sha256=sQayHL5aGY8WssQOGW4lPh1aXLfcPJewG9WUiC8il6A,14744
45
+ stjames/workflows/conformer_search.py,sha256=1kBUT0yCcTPTCtxg1tlTKHRRXkfNYNqzla_89lDEL9k,15696
46
46
  stjames/workflows/descriptors.py,sha256=T4tc7xdtBdxESGO86KR323jPQ2pgwxBqgV0khA6MEgQ,584
47
- stjames/workflows/docking.py,sha256=sJFSGyIve-q55UEir2rV9Pk7L09_pPuSy2K00JLvA68,4138
47
+ stjames/workflows/docking.py,sha256=t30kqeFXQ0yrlqvN6Jdwt0SdfnJLDsfK-7yFi0gwNbY,4753
48
48
  stjames/workflows/double_ended_ts_search.py,sha256=ovJgEVFc6c3mijCE3TKAY70YvqNmAZ5Y4XgV4-tIxBI,3127
49
49
  stjames/workflows/electronic_properties.py,sha256=GT3-NC7w-dbcOJ-3AzJ7LgzH6frTbiH2Iyb9BCa-SvY,4112
50
50
  stjames/workflows/fukui.py,sha256=095GDGSSEc5PDD1aoKM8J7icgR5tfwS5Bs9XxFQHge4,2387
@@ -56,8 +56,9 @@ stjames/workflows/molecular_dynamics.py,sha256=HqWNxxPSAphfI0DdbTERFkq8UeBjEvhnA
56
56
  stjames/workflows/multistage_opt.py,sha256=UN-4WLsT2WEjO5KqDPrcCkb708Co-ZScHx3g2bto768,16597
57
57
  stjames/workflows/nmr.py,sha256=1QEF4SB6dWIr-jzLEZ7V972UnRUOTufOJSHwIGyV3dM,2681
58
58
  stjames/workflows/pka.py,sha256=i-jzl2lN0yRWc0tgrWSBCplITEByfRyEQrlUhjnzcBc,4580
59
- stjames/workflows/pose_analysis_md.py,sha256=KLxSSuM60UpVawDI2xTvsMXoLHFIlA2CtVbpD0uePF4,4803
60
- stjames/workflows/protein_cofolding.py,sha256=cN0WUh8trrWwzNvoU75hB-VectIer-g5sMKgibQJcfE,4293
59
+ stjames/workflows/pose_analysis_md.py,sha256=dpWVKC-8fPdw6ExIXk9xbeVBDUMUYQECpixb-oFa23I,4803
60
+ stjames/workflows/protein_binder_design.py,sha256=KnPKQJTMrSO5xfw64Bh7T0wHck1NtysVwkVgHs1cGws,12013
61
+ stjames/workflows/protein_cofolding.py,sha256=w7Sg_ttU4bcJb7wlVcI_AAsLM9WVAJcU5ucbNb5Iyzw,4326
61
62
  stjames/workflows/redox_potential.py,sha256=7S18t9Y3eynSnA3lZbRlvLfdbgeBopdiigLzt1zxg5c,3871
62
63
  stjames/workflows/scan.py,sha256=DXQBpa2t2PowAtOwmdgpxaSLq--fEShljzAGSb8Nf5U,2993
63
64
  stjames/workflows/solubility.py,sha256=lfCVvJjqEaddLUpK6WBxjB7u12Sci-K95A5_qIMkIRM,3028
@@ -65,8 +66,8 @@ stjames/workflows/spin_states.py,sha256=0degmE-frovgoXweshZyjfjqL7nkbaFoO9YoJhvQ
65
66
  stjames/workflows/strain.py,sha256=paYxDDQTB1eYP_c2kLVz1-QX7Vpw0LLb3ujnFin_SOM,1834
66
67
  stjames/workflows/tautomer.py,sha256=7eYKziGPg8Km6lfowTzSkgJfJ4SHUPrAmnTf8Bi-SB0,1164
67
68
  stjames/workflows/workflow.py,sha256=OE05pt2ZOd8TzTOlBngXCVg9wv_553ZR60VNRPlq0f8,1953
68
- stjames-0.0.115.dist-info/licenses/LICENSE,sha256=i05z7xEhyrg6f8j0lR3XYjShnF-MJGFQ-DnpsZ8yiVI,1084
69
- stjames-0.0.115.dist-info/METADATA,sha256=SXjEZ5InRPFPo1QtWBhil1BqW-YIjY9b-xH8pt1F-3Y,1725
70
- stjames-0.0.115.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
- stjames-0.0.115.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
72
- stjames-0.0.115.dist-info/RECORD,,
69
+ stjames-0.0.117.dist-info/licenses/LICENSE,sha256=i05z7xEhyrg6f8j0lR3XYjShnF-MJGFQ-DnpsZ8yiVI,1084
70
+ stjames-0.0.117.dist-info/METADATA,sha256=LH_VdqC55gK6JJ0beT4uW6xifSRAfMJLQoIh3VpMAHg,1725
71
+ stjames-0.0.117.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
72
+ stjames-0.0.117.dist-info/top_level.txt,sha256=FYCwxl6quhYOAgG-mnPQcCK8vsVM7B8rIUrO-WrQ_PI,8
73
+ stjames-0.0.117.dist-info/RECORD,,