@delta-infra/cli 1.1.18 → 1.1.21
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.
- package/README.md +507 -513
- package/checksums.txt +5 -5
- package/package.json +3 -2
- package/scripts/install-wizard.js +689 -701
- package/scripts/install.js +442 -442
- package/scripts/run.js +65 -65
- package/skills/delta-protein/AGENTS.md +73 -0
- package/skills/delta-protein/SKILL.md +389 -0
- package/skills/delta-protein/agents/openai.yaml +4 -0
- package/skills/delta-protein/references/bfitter.md +64 -0
- package/skills/delta-protein/references/catapro_predict.md +63 -0
- package/skills/delta-protein/references/catpred_predict.md +65 -0
- package/skills/delta-protein/references/caver_tunnel_analyze.md +63 -0
- package/skills/delta-protein/references/consensus_mutation.md +61 -0
- package/skills/delta-protein/references/consurf_predict.md +67 -0
- package/skills/delta-protein/references/crop_sequence.md +69 -0
- package/skills/delta-protein/references/dock.md +82 -0
- package/skills/delta-protein/references/dock_score.md +70 -0
- package/skills/delta-protein/references/easifa_predict_active_site.md +70 -0
- package/skills/delta-protein/references/ephod_predict_mutation.md +66 -0
- package/skills/delta-protein/references/ephod_predict_protein.md +61 -0
- package/skills/delta-protein/references/esmfold2_predict.md +67 -0
- package/skills/delta-protein/references/evcouplings_mutation.md +64 -0
- package/skills/delta-protein/references/fasta_to_sequence.md +59 -0
- package/skills/delta-protein/references/foldseek.md +61 -0
- package/skills/delta-protein/references/generate_msa.md +61 -0
- package/skills/delta-protein/references/interpro_analyze.md +63 -0
- package/skills/delta-protein/references/mpnn_design_sequence.md +71 -0
- package/skills/delta-protein/references/multievolve.md +73 -0
- package/skills/delta-protein/references/pisa_query.md +70 -0
- package/skills/delta-protein/references/plip_analyze.md +65 -0
- package/skills/delta-protein/references/pocket_prediction.md +63 -0
- package/skills/delta-protein/references/protein_design.md +65 -0
- package/skills/delta-protein/references/protein_evolution.md +77 -0
- package/skills/delta-protein/references/protein_sol_predict_mutation.md +66 -0
- package/skills/delta-protein/references/protein_sol_predict_protein.md +61 -0
- package/skills/delta-protein/references/protenix.md +66 -0
- package/skills/delta-protein/references/protrek_search.md +90 -0
- package/skills/delta-protein/references/pubchem_search.md +68 -0
- package/skills/delta-protein/references/pubmed_search.md +79 -0
- package/skills/delta-protein/references/reap_design_primer.md +69 -0
- package/skills/delta-protein/references/rfd3_design.md +65 -0
- package/skills/delta-protein/references/structure_to_sequence.md +61 -0
- package/skills/delta-protein/references/summarize_result.md +68 -0
- package/skills/delta-protein/references/surface_charge.md +84 -0
- package/skills/delta-protein/references/uniprot_batch_query.md +63 -0
- package/skills/delta-protein/references/uniprot_query.md +64 -0
- package/skills/delta-protein/references/zero_shot_mutant_candidates.md +76 -0
- package/skills/delta-protein/scripts/gen_references.py +167 -0
- package/skills/delta-protein/scripts/output_metadata.json +275 -0
- package/skills/delta-sandbox/SKILL.md +388 -388
- package/skills/delta-sandbox/agents/openai.yaml +4 -4
- package/skills/delta-sandbox/references/commands.md +58 -58
- package/skills/delta-sandbox/references/lifecycle.md +100 -100
- package/skills/delta-sandbox/references/recipes.md +138 -138
- package/skills/delta-science/AGENTS.md +47 -47
- package/skills/delta-science/SKILL.md +227 -227
- package/skills/delta-science/agents/openai.yaml +4 -4
- package/skills/delta-science/references/antbo.md +105 -105
- package/skills/delta-science/references/delta-bo.md +92 -92
- package/skills/delta-science/references/gsasii.md +118 -118
- package/skills/delta-science/references/lammps.md +68 -68
- package/skills/delta-science/references/ldm-bo.md +132 -132
- package/skills/delta-science/references/materials-design.md +130 -130
- package/skills/delta-science/references/pubchem.md +128 -128
- package/skills/delta-science/references/pymatgen.md +69 -69
- package/skills/delta-science/references/qe.md +134 -134
- package/skills/delta-science/references/rdkit.md +141 -141
- package/skills/delta-science/references/strbo.md +95 -95
- package/skills/delta-science/references/synbo.md +201 -201
- package/skills/delta-science/references/xrd.md +688 -197
- package/skills/delta-science/scripts/catalog.py +92 -92
- package/skills/delta-science/scripts/generated_catalog.py +69 -69
- package/skills/delta-science/scripts/invoke.py +346 -346
- package/skills/delta-shared/SKILL.md +113 -113
- package/skills/delta-shared/agents/openai.yaml +4 -4
- package/skills/manifest.json +20 -19
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
# SynBO operation reference
|
|
2
|
-
|
|
3
|
-
Make all online calls with `delta-cli science invoke`; the service address comes from the CLI's
|
|
4
|
-
standard `base_url` configuration (`{base_url}/science_tool`). The paths here describe business
|
|
5
|
-
operations only and do not authorise direct HTTP access.
|
|
6
|
-
|
|
7
|
-
Use this section when the user asks to optimise reaction conditions, recommend the next batch of
|
|
8
|
-
experiments, continue a coupling reaction, or provides solvents, temperatures, catalysts, bases,
|
|
9
|
-
ligands and historical yields—even if they do not mention SynBO, BO, the CLI or field names. Make
|
|
10
|
-
at most one SynBO business call per user task. Stop immediately after success; for validation
|
|
11
|
-
errors, 502, 504, timeouts, disconnections or empty recommendations, do not change parameters or
|
|
12
|
-
models, or retry.
|
|
13
|
-
|
|
14
|
-
## Health
|
|
15
|
-
|
|
16
|
-
Operation: `health`; no request body.
|
|
17
|
-
|
|
18
|
-
Reports SynBO import status, Torch/CUDA runtime availability, service limits,
|
|
19
|
-
default device and visible CUDA devices.
|
|
20
|
-
|
|
21
|
-
Important fields inside gateway `data`:
|
|
22
|
-
|
|
23
|
-
```json
|
|
24
|
-
{
|
|
25
|
-
"status": "ok",
|
|
26
|
-
"synbo_available": true,
|
|
27
|
-
"metadata": {
|
|
28
|
-
"service": "synbo-service",
|
|
29
|
-
"engine": "synbo",
|
|
30
|
-
"version": "0.1.0",
|
|
31
|
-
"synbo_version": "0.1.0",
|
|
32
|
-
"default_device": "cpu",
|
|
33
|
-
"cuda_visible_devices": ""
|
|
34
|
-
},
|
|
35
|
-
"limits": {
|
|
36
|
-
"max_batch_size": 128,
|
|
37
|
-
"max_reaction_space_size": 200000,
|
|
38
|
-
"max_previous_rows": 10000
|
|
39
|
-
},
|
|
40
|
-
"runtime": {
|
|
41
|
-
"torch_available": true,
|
|
42
|
-
"cuda_available": false,
|
|
43
|
-
"cuda_device_count": 0,
|
|
44
|
-
"cuda_device_names": []
|
|
45
|
-
},
|
|
46
|
-
"warnings": []
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Initialize
|
|
51
|
-
|
|
52
|
-
Operation: `initialize`.
|
|
53
|
-
|
|
54
|
-
Use for initial condition sampling when no measured previous results exist.
|
|
55
|
-
|
|
56
|
-
Request body:
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"condition_dict": {
|
|
61
|
-
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
62
|
-
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
63
|
-
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
64
|
-
},
|
|
65
|
-
"opt_metrics": ["yield"],
|
|
66
|
-
"opt_metric_settings": [
|
|
67
|
-
{"opt_direct": "max", "opt_range": [0, 100], "metric_weight": 1.0}
|
|
68
|
-
],
|
|
69
|
-
"batch_size": 3,
|
|
70
|
-
"sampling_method": "random",
|
|
71
|
-
"desc_normalize": "minmax",
|
|
72
|
-
"random_seed": 42
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Supported `sampling_method` values: `sobol`, `random`, `lhs`, `kmeans`.
|
|
77
|
-
|
|
78
|
-
## Optimize
|
|
79
|
-
|
|
80
|
-
Operation: `optimize`.
|
|
81
|
-
|
|
82
|
-
Use after measured experiment rows are available. Each previous row must contain
|
|
83
|
-
all condition columns and all objective metric columns.
|
|
84
|
-
|
|
85
|
-
Request body:
|
|
86
|
-
|
|
87
|
-
```json
|
|
88
|
-
{
|
|
89
|
-
"condition_dict": {
|
|
90
|
-
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
91
|
-
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
92
|
-
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
93
|
-
},
|
|
94
|
-
"opt_metrics": ["yield"],
|
|
95
|
-
"previous_results": [
|
|
96
|
-
{"batch": 0, "catalyst": "Pd(OAc)2", "solvent": "THF", "base": "K2CO3", "yield": 42.0},
|
|
97
|
-
{"batch": 0, "catalyst": "Pd(PPh3)4", "solvent": "Dioxane", "base": "NaOEt", "yield": 55.0},
|
|
98
|
-
{"batch": 0, "catalyst": "Pd2(dba)3", "solvent": "Toluene", "base": "DBU", "yield": 63.0}
|
|
99
|
-
],
|
|
100
|
-
"batch_size": 2,
|
|
101
|
-
"accuracy": "tiny",
|
|
102
|
-
"surrogate_model": "RF",
|
|
103
|
-
"acq_func": "UCB",
|
|
104
|
-
"device": "cpu",
|
|
105
|
-
"random_seed": 42
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Discretise numeric conditions first
|
|
110
|
-
|
|
111
|
-
SynBO's `condition_dict` accepts explicit lists only; it does not accept continuous range
|
|
112
|
-
objects. For a task with a temperature range of 40–100°C and catalyst loading of 0.5–2.0%, with
|
|
113
|
-
historical values at 60/70/80/90°C and 0.5/1.0/1.5/2.0%, use:
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"condition_dict": {
|
|
118
|
-
"solvent": ["ethanol", "acetonitrile", "DMSO"],
|
|
119
|
-
"temperature_C": ["40", "60", "70", "80", "90", "100"],
|
|
120
|
-
"catalyst_loading_pct": ["0.5", "1.0", "1.5", "2.0"]
|
|
121
|
-
},
|
|
122
|
-
"opt_metrics": ["yield"],
|
|
123
|
-
"previous_results": [
|
|
124
|
-
{
|
|
125
|
-
"batch": 0,
|
|
126
|
-
"solvent": "ethanol",
|
|
127
|
-
"temperature_C": "60",
|
|
128
|
-
"catalyst_loading_pct": "1.0",
|
|
129
|
-
"yield": 55.0
|
|
130
|
-
}
|
|
131
|
-
],
|
|
132
|
-
"batch_size": 3,
|
|
133
|
-
"accuracy": "tiny",
|
|
134
|
-
"surrogate_model": "RF",
|
|
135
|
-
"acq_func": "UCB",
|
|
136
|
-
"device": "cpu",
|
|
137
|
-
"random_seed": 42
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Constraints:
|
|
142
|
-
|
|
143
|
-
- Represent every condition value as a string and keep objective metrics numeric.
|
|
144
|
-
- Every condition value in each `previous_results` row must appear in the corresponding `condition_dict` list.
|
|
145
|
-
- The discretised grid for a continuous range must include the user's lower and upper bounds and all historical observations. State the actual grid in the final answer.
|
|
146
|
-
- Serialise condition values explicitly as strings, and ensure each historical row uses only values listed in `condition_dict`. For a small-data CPU configuration, pass `accuracy:"tiny"`, `surrogate_model:"RF"`, `acq_func:"UCB"` and `device:"cpu"` explicitly; do not assume the client supplies defaults.
|
|
147
|
-
|
|
148
|
-
Useful optional fields:
|
|
149
|
-
|
|
150
|
-
- `accuracy`: `tiny`, `low`, `medium`, `high`, or `ultra`.
|
|
151
|
-
- `acq_func`: `EHVI`, `UCB`, `ParEGO`, or `NEI`.
|
|
152
|
-
- `surrogate_model`: `GP`, `RF`, `BNN`, or `BayesianLinear`.
|
|
153
|
-
- `device`: `cpu`, `auto`, `cuda`, or `cuda:0`.
|
|
154
|
-
- `cuda_visible_devices`: request-level CUDA visibility hint. Use only when the
|
|
155
|
-
user explicitly asks for it and `/health` indicates a CUDA-capable runtime.
|
|
156
|
-
- `constraints`: map condition type to prohibited values.
|
|
157
|
-
|
|
158
|
-
## Descriptors
|
|
159
|
-
|
|
160
|
-
If omitted, SynBO uses generated OneHot descriptors. To provide descriptors:
|
|
161
|
-
|
|
162
|
-
```json
|
|
163
|
-
{
|
|
164
|
-
"descriptors": {
|
|
165
|
-
"solvent": [
|
|
166
|
-
{"name": "THF", "polarity": 0.207, "boiling_point_C": 66.0},
|
|
167
|
-
{"name": "Toluene", "polarity": 0.099, "boiling_point_C": 110.6}
|
|
168
|
-
]
|
|
169
|
-
},
|
|
170
|
-
"descriptor_index_col": "name"
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
`descriptors` must contain exactly the same keys as `condition_dict`. Descriptor
|
|
175
|
-
rows must include the configured index column and numeric descriptor columns.
|
|
176
|
-
|
|
177
|
-
## Error Handling
|
|
178
|
-
|
|
179
|
-
Gateway errors have the standard envelope:
|
|
180
|
-
|
|
181
|
-
```json
|
|
182
|
-
{
|
|
183
|
-
"code": 1,
|
|
184
|
-
"message": "SynBO service returned HTTP 400",
|
|
185
|
-
"data": {
|
|
186
|
-
"endpoint": "/synbo/optimize",
|
|
187
|
-
"synbo_response": {
|
|
188
|
-
"detail": "previous_results is missing metric columns: ['yield']"
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Common causes include an oversized condition space, duplicate condition values, historical
|
|
195
|
-
condition values absent from `condition_dict`, non-numeric descriptors, missing columns in
|
|
196
|
-
historical rows, non-numeric metrics, and a CUDA request when no GPU is available.
|
|
197
|
-
|
|
198
|
-
The server has a per-request timeout independent of the client. GP, EHVI, high accuracy or busy
|
|
199
|
-
shared resources may cause a timeout. Do not automatically change parameters and retry during an
|
|
200
|
-
ordinary user task. Report “no recommendations were produced”, preserve the error, and let the
|
|
201
|
-
user decide whether to start a separate, explicitly requested regression test.
|
|
1
|
+
# SynBO operation reference
|
|
2
|
+
|
|
3
|
+
Make all online calls with `delta-cli science invoke`; the service address comes from the CLI's
|
|
4
|
+
standard `base_url` configuration (`{base_url}/science_tool`). The paths here describe business
|
|
5
|
+
operations only and do not authorise direct HTTP access.
|
|
6
|
+
|
|
7
|
+
Use this section when the user asks to optimise reaction conditions, recommend the next batch of
|
|
8
|
+
experiments, continue a coupling reaction, or provides solvents, temperatures, catalysts, bases,
|
|
9
|
+
ligands and historical yields—even if they do not mention SynBO, BO, the CLI or field names. Make
|
|
10
|
+
at most one SynBO business call per user task. Stop immediately after success; for validation
|
|
11
|
+
errors, 502, 504, timeouts, disconnections or empty recommendations, do not change parameters or
|
|
12
|
+
models, or retry.
|
|
13
|
+
|
|
14
|
+
## Health
|
|
15
|
+
|
|
16
|
+
Operation: `health`; no request body.
|
|
17
|
+
|
|
18
|
+
Reports SynBO import status, Torch/CUDA runtime availability, service limits,
|
|
19
|
+
default device and visible CUDA devices.
|
|
20
|
+
|
|
21
|
+
Important fields inside gateway `data`:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"status": "ok",
|
|
26
|
+
"synbo_available": true,
|
|
27
|
+
"metadata": {
|
|
28
|
+
"service": "synbo-service",
|
|
29
|
+
"engine": "synbo",
|
|
30
|
+
"version": "0.1.0",
|
|
31
|
+
"synbo_version": "0.1.0",
|
|
32
|
+
"default_device": "cpu",
|
|
33
|
+
"cuda_visible_devices": ""
|
|
34
|
+
},
|
|
35
|
+
"limits": {
|
|
36
|
+
"max_batch_size": 128,
|
|
37
|
+
"max_reaction_space_size": 200000,
|
|
38
|
+
"max_previous_rows": 10000
|
|
39
|
+
},
|
|
40
|
+
"runtime": {
|
|
41
|
+
"torch_available": true,
|
|
42
|
+
"cuda_available": false,
|
|
43
|
+
"cuda_device_count": 0,
|
|
44
|
+
"cuda_device_names": []
|
|
45
|
+
},
|
|
46
|
+
"warnings": []
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Initialize
|
|
51
|
+
|
|
52
|
+
Operation: `initialize`.
|
|
53
|
+
|
|
54
|
+
Use for initial condition sampling when no measured previous results exist.
|
|
55
|
+
|
|
56
|
+
Request body:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"condition_dict": {
|
|
61
|
+
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
62
|
+
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
63
|
+
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
64
|
+
},
|
|
65
|
+
"opt_metrics": ["yield"],
|
|
66
|
+
"opt_metric_settings": [
|
|
67
|
+
{"opt_direct": "max", "opt_range": [0, 100], "metric_weight": 1.0}
|
|
68
|
+
],
|
|
69
|
+
"batch_size": 3,
|
|
70
|
+
"sampling_method": "random",
|
|
71
|
+
"desc_normalize": "minmax",
|
|
72
|
+
"random_seed": 42
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Supported `sampling_method` values: `sobol`, `random`, `lhs`, `kmeans`.
|
|
77
|
+
|
|
78
|
+
## Optimize
|
|
79
|
+
|
|
80
|
+
Operation: `optimize`.
|
|
81
|
+
|
|
82
|
+
Use after measured experiment rows are available. Each previous row must contain
|
|
83
|
+
all condition columns and all objective metric columns.
|
|
84
|
+
|
|
85
|
+
Request body:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"condition_dict": {
|
|
90
|
+
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
91
|
+
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
92
|
+
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
93
|
+
},
|
|
94
|
+
"opt_metrics": ["yield"],
|
|
95
|
+
"previous_results": [
|
|
96
|
+
{"batch": 0, "catalyst": "Pd(OAc)2", "solvent": "THF", "base": "K2CO3", "yield": 42.0},
|
|
97
|
+
{"batch": 0, "catalyst": "Pd(PPh3)4", "solvent": "Dioxane", "base": "NaOEt", "yield": 55.0},
|
|
98
|
+
{"batch": 0, "catalyst": "Pd2(dba)3", "solvent": "Toluene", "base": "DBU", "yield": 63.0}
|
|
99
|
+
],
|
|
100
|
+
"batch_size": 2,
|
|
101
|
+
"accuracy": "tiny",
|
|
102
|
+
"surrogate_model": "RF",
|
|
103
|
+
"acq_func": "UCB",
|
|
104
|
+
"device": "cpu",
|
|
105
|
+
"random_seed": 42
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Discretise numeric conditions first
|
|
110
|
+
|
|
111
|
+
SynBO's `condition_dict` accepts explicit lists only; it does not accept continuous range
|
|
112
|
+
objects. For a task with a temperature range of 40–100°C and catalyst loading of 0.5–2.0%, with
|
|
113
|
+
historical values at 60/70/80/90°C and 0.5/1.0/1.5/2.0%, use:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"condition_dict": {
|
|
118
|
+
"solvent": ["ethanol", "acetonitrile", "DMSO"],
|
|
119
|
+
"temperature_C": ["40", "60", "70", "80", "90", "100"],
|
|
120
|
+
"catalyst_loading_pct": ["0.5", "1.0", "1.5", "2.0"]
|
|
121
|
+
},
|
|
122
|
+
"opt_metrics": ["yield"],
|
|
123
|
+
"previous_results": [
|
|
124
|
+
{
|
|
125
|
+
"batch": 0,
|
|
126
|
+
"solvent": "ethanol",
|
|
127
|
+
"temperature_C": "60",
|
|
128
|
+
"catalyst_loading_pct": "1.0",
|
|
129
|
+
"yield": 55.0
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"batch_size": 3,
|
|
133
|
+
"accuracy": "tiny",
|
|
134
|
+
"surrogate_model": "RF",
|
|
135
|
+
"acq_func": "UCB",
|
|
136
|
+
"device": "cpu",
|
|
137
|
+
"random_seed": 42
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Constraints:
|
|
142
|
+
|
|
143
|
+
- Represent every condition value as a string and keep objective metrics numeric.
|
|
144
|
+
- Every condition value in each `previous_results` row must appear in the corresponding `condition_dict` list.
|
|
145
|
+
- The discretised grid for a continuous range must include the user's lower and upper bounds and all historical observations. State the actual grid in the final answer.
|
|
146
|
+
- Serialise condition values explicitly as strings, and ensure each historical row uses only values listed in `condition_dict`. For a small-data CPU configuration, pass `accuracy:"tiny"`, `surrogate_model:"RF"`, `acq_func:"UCB"` and `device:"cpu"` explicitly; do not assume the client supplies defaults.
|
|
147
|
+
|
|
148
|
+
Useful optional fields:
|
|
149
|
+
|
|
150
|
+
- `accuracy`: `tiny`, `low`, `medium`, `high`, or `ultra`.
|
|
151
|
+
- `acq_func`: `EHVI`, `UCB`, `ParEGO`, or `NEI`.
|
|
152
|
+
- `surrogate_model`: `GP`, `RF`, `BNN`, or `BayesianLinear`.
|
|
153
|
+
- `device`: `cpu`, `auto`, `cuda`, or `cuda:0`.
|
|
154
|
+
- `cuda_visible_devices`: request-level CUDA visibility hint. Use only when the
|
|
155
|
+
user explicitly asks for it and `/health` indicates a CUDA-capable runtime.
|
|
156
|
+
- `constraints`: map condition type to prohibited values.
|
|
157
|
+
|
|
158
|
+
## Descriptors
|
|
159
|
+
|
|
160
|
+
If omitted, SynBO uses generated OneHot descriptors. To provide descriptors:
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"descriptors": {
|
|
165
|
+
"solvent": [
|
|
166
|
+
{"name": "THF", "polarity": 0.207, "boiling_point_C": 66.0},
|
|
167
|
+
{"name": "Toluene", "polarity": 0.099, "boiling_point_C": 110.6}
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
"descriptor_index_col": "name"
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`descriptors` must contain exactly the same keys as `condition_dict`. Descriptor
|
|
175
|
+
rows must include the configured index column and numeric descriptor columns.
|
|
176
|
+
|
|
177
|
+
## Error Handling
|
|
178
|
+
|
|
179
|
+
Gateway errors have the standard envelope:
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"code": 1,
|
|
184
|
+
"message": "SynBO service returned HTTP 400",
|
|
185
|
+
"data": {
|
|
186
|
+
"endpoint": "/synbo/optimize",
|
|
187
|
+
"synbo_response": {
|
|
188
|
+
"detail": "previous_results is missing metric columns: ['yield']"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Common causes include an oversized condition space, duplicate condition values, historical
|
|
195
|
+
condition values absent from `condition_dict`, non-numeric descriptors, missing columns in
|
|
196
|
+
historical rows, non-numeric metrics, and a CUDA request when no GPU is available.
|
|
197
|
+
|
|
198
|
+
The server has a per-request timeout independent of the client. GP, EHVI, high accuracy or busy
|
|
199
|
+
shared resources may cause a timeout. Do not automatically change parameters and retry during an
|
|
200
|
+
ordinary user task. Report “no recommendations were produced”, preserve the error, and let the
|
|
201
|
+
user decide whether to start a separate, explicitly requested regression test.
|