You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Updated RSS structure generation documentation to reflect new JSON configuration format and usage of `apex rss <rss.json>`.
- Improved clarity in the properties documentation regarding RSS structure generation and its applications for multi-component alloys.
- Refined the RSS workflow documentation to include detailed steps for generating structures, verifying outputs, and visualizing results.
- Enhanced submission process by clarifying the steps for generating and refreshing configuration files, ensuring proper handling of Bohrium project IDs and access keys.
- Implemented rigorous validation checks for project IDs in global configuration files to prevent mismatches and ensure integrity.
- Added unit tests to validate the new configuration management features, ensuring robustness in handling project ID types and refreshing global configurations.
Copy file name to clipboardExpand all lines: apex/skills/apex-flow/SKILL.md
+37-15Lines changed: 37 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: apex-flow
3
-
description: Batch multi-property materials calculations (EOS, 0K elastic constant, surface energy, phonon, finite temperature elastic constant, gamma surface, gamma line, coherent energy) via APEX calculator backends VASP/ABACUS/LAMMPS. The bundled DPA-3.2-5M OMat24 model is a DeePMD potential for LAMMPS. Use when the user mentions APEX, apex, alloy property, oxide, or multi-property DFT/MLIP screening, including EOS, 0K elastic constant, surface energy, phonon calculation, finite temperature elastic constant, gamma surface, gamma line, coherent energy.
3
+
description: Batch multi-property materials calculations (EOS, 0K elastic constant, surface energy, phonon, finite temperature elastic constant, gamma surface, gamma line, cohesive energy) and random-solid-solution structure generation via APEX calculator backends VASP/ABACUS/LAMMPS. The bundled DPA-3.2-5M OMat24 model is a DeePMD potential for LAMMPS. Use when the user mentions APEX, apex, alloy property, generate/give random solid solution, generate/give solid solution, generate/give high-entropy alloy, generate/give high-entropy oxide, generate/give high-entropy material, or multi-property DFT/MLIP screening.
4
4
---
5
5
6
6
# APEX Flow — Alloy Properties EXplorer
@@ -41,7 +41,7 @@ Options to offer via AskQuestion:
41
41
42
42
## High-Level Workflow (5 Steps)
43
43
44
-
1.**Prepare inputs** — Check `BOHRIUM_ACCESS_KEY`, then generate `param.json` + `global.json` (including a fresh ticket) and copy structure/model files into a job directory using `scripts/generate_config.py`
44
+
1.**Prepare inputs** — Check `BOHRIUM_ACCESS_KEY`, then generate `param.json` + `global.json` (including a fresh ticket) and copy structure/model files into a job directory using `scripts/generate_config.py create ...`. Never hand-write either JSON file.
45
45
2.**Submit outer Bohrium job** — A lightweight client (`c1_m2_cpu`, recommended) that runs `apex submit ...` without `-s`, connects to the dflow orchestration server, and waits for completion
46
46
3.**dflow executes** — Inner containers (LAMMPS/ABACUS/VASP) run the actual calculations, managed by `workflows.deepmodeling.com`
47
47
4.**Monitor and retrieve results** — `apex submit` monitors the inner workflow and retrieves results after completion; parse `confs/<structure>/<prop>_00/result.json`
@@ -86,38 +86,56 @@ Options to offer via AskQuestion:
86
86
Immediately preserve the exact inner dflow workflow ID printed by
87
87
`apex submit` and report it to the user. Keep this ID available for all later
88
88
monitoring, retrieval, and workflow-control actions; do not confuse it with
89
-
the outer Bohrium job ID. Query progress from the job directory with:
90
-
Use the returned workflow/step phases and durations to track progress. A
89
+
the outer Bohrium job ID. Follow the exact status-query and reporting
90
+
protocol in `reference/workflow-control.md`; never infer workflow identity
91
+
or material identity from the outer job name alone. Use the returned
92
+
workflow/step phases and durations to track progress. A
91
93
long-running or failed step should be investigated by its step ID/key rather
92
94
than treated as successful completion. After the workflow reaches
93
95
`Succeeded`, verify that automatic result retrieval completed as described
94
96
in `reference/submission.md`.
95
97
4.**Kill = inner FIRST, outer SECOND.** If you only kill the outer Bohrium node, the dflow workflow continues consuming resources silently. Always terminate the inner dflow workflow first. See `reference/workflow-control.md`.
96
-
5.**Generate the ticket before packaging the job; never refresh it in `run.sh`.**
98
+
5.**MUST use `generate_config.py`; never hand-write `param.json` or `global.json`.**
99
+
- Create the complete job with `python <skill-root>/scripts/generate_config.py create ...`.
100
+
- To preserve an approved `param.json` while refreshing credentials, run
from the task directory. This updates only `global.json`.
103
+
- Do not invent unsupported flags or call the ticket API directly.
104
+
6.**Generate the ticket before packaging the job; never refresh it in `run.sh`.**
97
105
- First inspect the agent/local environment for `BOHRIUM_ACCESS_KEY`.
98
106
- If it is missing, STOP and ask the user to provide/configure it. `generate_config.py` cannot generate a ticket without an access key.
99
-
- If it exists, run `scripts/generate_config.py`; it converts the key to a fresh ticket and writes it to `global.json`.
107
+
- If it exists, use `create` for a new job or `refresh-global` for an existing job; both convert the key to a fresh ticket and write it to `global.json`.
100
108
- Verify that `global.json` contains a non-empty `bohrium_config.ticket` before submission.
101
109
-`run.sh` must only install/verify APEX and call `apex submit`. Do not add ticket API calls or depend on `BOHRIUM_ACCESS_KEY` inside the APEX container.
102
110
See `reference/submission.md`.
103
-
6.**Project ID from environment only.**`generate_config.py` reads `BOHRIUM_PROJECT_ID` (or `--project-id`). Never hardcode a project ID (including old examples like `13529`) into `global.json`, docs, or prompts.
104
-
7.**Screen image × machine before submit.** Before writing `global.json` or submitting, run:
111
+
7.**Project ID from environment only.**`generate_config.py` reads `BOHRIUM_PROJECT_ID` (or `--project-id`). Never hardcode a project ID (including old examples like `13529`) into `global.json`, docs, or prompts.
112
+
8.**Hard-validate inside the task directory before every upload.** Run:
113
+
```bash
114
+
cd<job-dir>
115
+
python <skill-root>/scripts/validate_inputs.py \
116
+
--param param.json --global global.json
117
+
```
118
+
Do not upload or submit unless it prints `Validation PASSED` and reports both
119
+
`program_id` and `bohrium_config.project_id` with `type=int`. A quoted numeric
120
+
string is invalid. Upload the newly validated directory as a new outer job;
121
+
never retry an outer job whose input snapshot was invalid.
122
+
9.**Screen image × machine before submit.** Before writing `global.json` or submitting, run:
Do **not** hardcode an unverified `scass_type`. Prefer `recommend` / `list-combos` output. Known failures include `deepmd-kit:3.1.0`, `3.1.1-cuda12.1`, `3.1.2`, the combination `deepmd-kit:3.1.1` × `NVIDIA T4`, `c4_m16_cpu`, and `c12_m46_1 * NVIDIA T4`. The default LAMMPS image is `registry.dp.tech/dptech/dp/native/prod-397637/deepmd-kit-phonolammps:3.1.3`; `apex submit` enforces it for LAMMPS phonon and Grüneisen workflows.
112
-
8.**MUST use the bundled frozen DPA model under**`models/`**for LAMMPS + DeePMD unless the user explicitly requests another compatible model.** The skill ships
130
+
10.**MUST use the bundled frozen DPA model under**`models/`**for LAMMPS + DeePMD unless the user explicitly requests another compatible model.** The skill ships
113
131
`models/DPA-3.2-5M/DPA-3.2-5M-OMat24.pth`, a ready-to-run frozen
114
132
DPA-3.2-5M OMat24 model. Copy it into the job directory before generating
115
133
`param.json`. The multi-head source checkpoint is **not** in the skill zip —
116
134
fetch it only when the user explicitly needs another task head
117
135
(`scripts/fetch_models.py --source-checkpoint` or
118
136
`dp --pt pretrained download DPA-3.2-5M`) and freeze that head before use.
119
137
See `models/README.md`.
120
-
9.**Preserve the user's input cell and prevent accidental double expansion.**
138
+
11.**Preserve the user's input cell and prevent accidental double expansion.**
121
139
APEX does not require a conventional cell. Do not convert a primitive cell or
122
140
user-provided supercell to a conventional cell merely because an example uses
123
141
`confs/std-fcc` or another `std-*` name.
@@ -133,7 +151,7 @@ Options to offer via AskQuestion:
133
151
134
152
135
153
136
-
## Supported Properties (15 types)
154
+
## Supported Properties (14 types)
137
155
138
156
139
157
| Type | JSON `type` value | Backend | Description |
@@ -218,7 +236,11 @@ See `reference/submission.md` for the full validated template.
218
236
219
237
## RSS (Random Solid Solution) Workflow
220
238
221
-
For high-entropy alloys/ceramics, use `apex rss` to generate structures, then run property calculations on them. See `reference/rss_workflow.md` for full details.
239
+
For random solid solutions, solid solutions, high-entropy alloys, high-entropy
240
+
oxides/ceramics, and other high-entropy materials, use `apex rss` to generate
241
+
structures before property calculations. Read `reference/rss_workflow.md`
242
+
before asking the user questions or writing `rss.json`; it defines the required
243
+
QA, current JSON schema, output layout, and visualization fallback.
**type**: Not a property calculation per se. Use `apex rss` CLI command.
589
+
Use `apex rss <rss.json>` to generate input structures.
590
590
591
-
This generates random solid solution configurations for multi-component alloys. The generated structures are then used as input to property calculations above.
0 commit comments