TADF Screening Skill (Standard)
Run this skill for end-to-end candidate generation and filtering.
Required execution order
- Run
scripts/screening_workflow_initializer.py first.
- Confirm topology and initial sample count during inquiry stage (default initial sample count:
10000).
- Build topology-driven D/A assemblies (
scripts/build_da_topology_library.py).
- Generate candidate 3D structures with your project-level generator (outside this skill package) and export
.xyz files.
- Run xTB batch pre-screening (
scripts/run_xtb_batch_manifest.py).
- Optionally run TDDFT-xTB wavelength filter (
scripts/run_tddft_xtb_filter.py).
- Send elite candidates to full TDDFT validation.
Do not skip stage gates.
Supervision requirement (all stages)
Every stage must include an explicit supervision task and report item.
- Stage 0 (initializer): verify critical inquiry fields are resolved; report unresolved blockers.
- Stage 1 (SMILES -> XYZ): track
xyz_count / target_count, manifest existence, process alive/stopped, restart action if interrupted.
- Stage 2 (xTB geometry optimization): track Slurm queue state, produced
_opt.log / _xtbopt.xyz counts, and error signature checks.
- Stage 3 (sTDA spectral screening): run
xtb *.xtbopt.xyz --stda on xTB-optimized structures, parse excitation wavelengths and oscillator strengths, filter by target emission window (e.g., 700–1000 nm for NIR, 450–490 nm for blue). Track _stda.log counts, window hits, and error signatures.
- Stage 4 (TDDFT validation): track submitted jobs, running/pending/failed counts, parsed success ratio, and failed-case reasons. Only candidates passing Stage 3 window filter advance here.
- Stage 5 (MOMAP photophysics): track result file completeness (ranked CSV, shortlist, plots) and publish final summary with pass/fail statistics.
- Engine: MOMAP 2024A via
python scripts/stage4_momap.py.
- Requires: S0/S1/T1
.log + .fchk from Stage 4 TDDFT (auto formchk if missing).
- Runs: EVC(Duschinsky) → spec_tvcf(fluorescence spectrum) → optional ISC rate.
- Ranking: blue window proximity (450–490 nm) × ΔE_ST × f_emi.
- MPI patch: auto-applied for OpenMPI 3.x
-machinefile→--hostfile.
- No fake results: if MOMAP binary is missing or license absent, report
tool_missing and stop.
- Output:
stage4_report.md, stage4_results.json, per-molecule PNG plots.
Minimum monitoring cadence default remains:
- check every 5 minutes
- report every 10 minutes
Timed report content (mandatory):
- Compute process status: running/pending/completed/failed counts (or alive/stopped for local stages), plus scheduler job IDs when remote.
- File generation status: key output file counts (e.g., logs, result CSVs, optimized structures) versus expected totals.
- Error status: whether errors are present; include latest error signature/snippet and recovery action if any.
When monitoring is active, every periodic report must include all three items above in compact form.
3D structure generation: multiprocessing rule
When the initial sample count exceeds 10,000, the 3D generation stage MUST use multiprocessing:
- Auto-enable:
--workers -1 (default) → cpu_count workers when target > 10k
- Override:
--workers N to set explicit worker count; --workers 0 for single-process
- Assembly is sequential (fast); only the heavy ETKDG + MMFF94 step is parallelized
- Batch assembly size: 50,000 SMILES, then dispatch to worker pool
- Supports resume via checkpoint.json
Rationale: single-process ETKDG yields ~1,200 mol/min on ARM64; multiprocessing with 8-10 workers can reach ~8,000-10,000 mol/min.
Hard chemistry constraint
For emission prediction, do not rely on S0-only vertical excitation.
Downstream validation must use:
S0 optimization -> excited-state optimization (S1 for Fluorescence/TADF or T1 for Phosphorescence) -> vertical emission calculation.
Inquiry-stage runtime mode (must be set)
The initializer supports inquiry-stage operation control:
interaction_mode: interactive_chat | config_only | autonomous
question_mode: blocking | non_blocking
max_question_rounds: integer >= 1
Policy:
- In
autonomous mode, use non_blocking question mode.
- Record all unresolved questions in initializer output under
agent_questions_if_missing.
- Active inquiry is mandatory: if critical fields are not provided (emission range/type, spectrum width preference, empirical Stokes shift, topology), ask explicitly before proceeding in
blocking mode.
- Monitoring cadence is also inquiry-driven: ask user for check/report intervals. Defaults are check every 5 minutes and report every 10 minutes.
- Resource inquiry must run first: confirm remote resource profile, check
xtb4stda/stda availability, and explicitly ask user permission before attempting installation of missing tools.
Topology and assembly constraints
Use only rule-based assembly templates:
D-A, D-A-D, A-D-A, D-pi-A, D_n-A
- Use RDKit
ReactionFromSmarts or ReplaceSubstructs
- Before
D-A-D, verify acceptor has >=2 leaving groups (Cl, Br, I)
Use scripts/build_da_topology_library.py to enforce topology-specific assembly.
The inquiry stage must explicitly confirm:
- selected topology (single or mixed)
- initial sample count (default
10000)
xTB and filtering contract
sTDA invocation standard (critical)
- Do not call
xtb --stda (unsupported in current xTB build and will fail).
- Use the two-step flow:
xtb4stda <optimized.xyz>
stda -xtb -e <N> (example: stda -xtb -e 10)
- If
xtb4stda or stda is missing, stop with explicit tool_missing and do not continue silently.
Input manifest must include:
idx,name,xyz_path
xTB output contract (xtb_progress.csv) must include:
idx,name,xyz_path,status,detail,total_energy_eh,homo_lumo_gap_ev,normal_termination
Gate rule:
- If xTB
ok=0, stop and diagnose before advancing.
Local resource profiles standard (mandatory)
Use local/ to store per-user environment settings.
- folder:
skills/tadf-screening/local/
- template:
local/resource_profile.template.yaml
- guidance:
local/README.md
Rules:
- Never hardcode user-specific hosts/modules/paths in core scripts.
- Select profile during inquiry stage before remote execution.
- Record selected profile in
BATCH_STATUS.md.
Cron-based monitoring standard (mandatory)
Use cron for autonomous monitoring and reporting during long runs.
Default policy:
- process check interval: 5 minutes
- user report interval: 10 minutes
Use script:
scripts/configure_progress_cron.py --check-min 5 --report-min 10 --replace
If user specifies other intervals, use user values.
Local vs Remote execution boundary (mandatory)
Execution boundary for this project:
- Local-only stage: molecular structure file generation (
SMILES -> .xyz, Stage-1 generation step).
- Remote stages: all downstream screening after
.xyz exists (xTB batch filtering, TDDFT-xTB filter, final TDDFT validation) should run on a user-confirmed remote environment.
Resource selection policy:
- Always ask the user which remote resource/profile to use before remote execution.
- Do not hardcode a specific cluster/host as a universal default in this skill.
- Resolve host/path/module details from
local/*.yaml after user confirmation.
Remote execution marking (mandatory)
Before starting each screening run, update BATCH_STATUS.md with:
- batch id
- stage
- execution target (
local or remote)
- remote host/workdir (required for remote)
- start time
- process id
- selected local resource profile (when available)
References
- Workflow spec:
references/workflow-spec.md
- Stage I/O contract:
references/io-contract.md
- Topology assembly script:
scripts/build_da_topology_library.py
- Cron setup script:
scripts/configure_progress_cron.py
1---2name: tadf-screening3description: Standardized high-throughput screening workflow for luminescent materials (TADF, Fluorescence, Phosphorescence). Use when the user asks to generate candidates, run xTB pre-screening, apply TDDFT-xTB wavelength filtering, or launch final TDDFT validation on Marcus/remote clusters.4---56# TADF Screening Skill (Standard)78Run this skill for end-to-end candidate generation and filtering.910## Required execution order11121. Run `scripts/screening_workflow_initializer.py` first.132. Confirm topology and initial sample count during inquiry stage (default initial sample count: `10000`).143. Build topology-driven D/A assemblies (`scripts/build_da_topology_library.py`).154. Generate candidate 3D structures with your project-level generator (outside this skill package) and export `.xyz` files.165. Run xTB batch pre-screening (`scripts/run_xtb_batch_manifest.py`).176. Optionally run TDDFT-xTB wavelength filter (`scripts/run_tddft_xtb_filter.py`).187. Send elite candidates to full TDDFT validation.1920Do not skip stage gates.2122## Supervision requirement (all stages)2324Every stage must include an explicit supervision task and report item.2526- **Stage 0 (initializer)**: verify critical inquiry fields are resolved; report unresolved blockers.27- **Stage 1 (SMILES -> XYZ)**: track `xyz_count / target_count`, manifest existence, process alive/stopped, restart action if interrupted.28- **Stage 2 (xTB geometry optimization)**: track Slurm queue state, produced `_opt.log` / `_xtbopt.xyz` counts, and error signature checks.29- **Stage 3 (sTDA spectral screening)**: run `xtb *.xtbopt.xyz --stda` on xTB-optimized structures, parse excitation wavelengths and oscillator strengths, filter by target emission window (e.g., 700–1000 nm for NIR, 450–490 nm for blue). Track `_stda.log` counts, window hits, and error signatures.30- **Stage 4 (TDDFT validation)**: track submitted jobs, running/pending/failed counts, parsed success ratio, and failed-case reasons. Only candidates passing Stage 3 window filter advance here.31- **Stage 5 (MOMAP photophysics)**: track result file completeness (ranked CSV, shortlist, plots) and publish final summary with pass/fail statistics.32 - **Engine:** MOMAP 2024A via `python scripts/stage4_momap.py`.33 - **Requires:** S0/S1/T1 `.log` + `.fchk` from Stage 4 TDDFT (auto formchk if missing).34 - **Runs:** EVC(Duschinsky) → spec_tvcf(fluorescence spectrum) → optional ISC rate.35 - **Ranking:** blue window proximity (450–490 nm) × ΔE_ST × f_emi.36 - **MPI patch:** auto-applied for OpenMPI 3.x `-machinefile`→`--hostfile`.37 - **No fake results:** if MOMAP binary is missing or license absent, report `tool_missing` and stop.38 - **Output:** `stage4_report.md`, `stage4_results.json`, per-molecule PNG plots.3940Minimum monitoring cadence default remains:41- check every 5 minutes42- report every 10 minutes4344Timed report content (mandatory):45- **Compute process status**: running/pending/completed/failed counts (or alive/stopped for local stages), plus scheduler job IDs when remote.46- **File generation status**: key output file counts (e.g., logs, result CSVs, optimized structures) versus expected totals.47- **Error status**: whether errors are present; include latest error signature/snippet and recovery action if any.4849When monitoring is active, every periodic report must include all three items above in compact form.5051## 3D structure generation: multiprocessing rule5253When the initial sample count exceeds **10,000**, the 3D generation stage MUST use multiprocessing:5455- **Auto-enable**: `--workers -1` (default) → `cpu_count` workers when target > 10k56- **Override**: `--workers N` to set explicit worker count; `--workers 0` for single-process57- **Assembly is sequential** (fast); only the heavy ETKDG + MMFF94 step is parallelized58- Batch assembly size: 50,000 SMILES, then dispatch to worker pool59- Supports resume via checkpoint.json6061Rationale: single-process ETKDG yields ~1,200 mol/min on ARM64; multiprocessing with 8-10 workers can reach ~8,000-10,000 mol/min.6263## Hard chemistry constraint6465For emission prediction, do **not** rely on S0-only vertical excitation.66Downstream validation must use:67- `S0 optimization -> excited-state optimization (S1 for Fluorescence/TADF or T1 for Phosphorescence) -> vertical emission calculation`.6869## Inquiry-stage runtime mode (must be set)7071The initializer supports inquiry-stage operation control:72- `interaction_mode`: `interactive_chat | config_only | autonomous`73- `question_mode`: `blocking | non_blocking`74- `max_question_rounds`: integer >= 17576Policy:77- In `autonomous` mode, use `non_blocking` question mode.78- Record all unresolved questions in initializer output under `agent_questions_if_missing`.79- Active inquiry is mandatory: if critical fields are not provided (emission range/type, spectrum width preference, empirical Stokes shift, topology), ask explicitly before proceeding in `blocking` mode.80- Monitoring cadence is also inquiry-driven: ask user for check/report intervals. Defaults are check every 5 minutes and report every 10 minutes.81- **Resource inquiry must run first**: confirm remote resource profile, check `xtb4stda/stda` availability, and explicitly ask user permission before attempting installation of missing tools.8283## Topology and assembly constraints8485Use only rule-based assembly templates:86- `D-A`, `D-A-D`, `A-D-A`, `D-pi-A`, `D_n-A`87- Use RDKit `ReactionFromSmarts` or `ReplaceSubstructs`88- Before `D-A-D`, verify acceptor has >=2 leaving groups (`Cl`, `Br`, `I`)8990Use `scripts/build_da_topology_library.py` to enforce topology-specific assembly.91The inquiry stage must explicitly confirm:92- selected topology (single or mixed)93- initial sample count (default `10000`)9495## xTB and filtering contract9697### sTDA invocation standard (critical)9899- Do **not** call `xtb --stda` (unsupported in current xTB build and will fail).100- Use the two-step flow:101 1. `xtb4stda <optimized.xyz>`102 2. `stda -xtb -e <N>` (example: `stda -xtb -e 10`)103- If `xtb4stda` or `stda` is missing, stop with explicit `tool_missing` and do not continue silently.104105Input manifest must include:106```csv107idx,name,xyz_path108```109110xTB output contract (`xtb_progress.csv`) must include:111```csv112idx,name,xyz_path,status,detail,total_energy_eh,homo_lumo_gap_ev,normal_termination113```114115Gate rule:116- If xTB `ok=0`, stop and diagnose before advancing.117118## Local resource profiles standard (mandatory)119120Use `local/` to store per-user environment settings.121122- folder: `skills/tadf-screening/local/`123- template: `local/resource_profile.template.yaml`124- guidance: `local/README.md`125126Rules:127- Never hardcode user-specific hosts/modules/paths in core scripts.128- Select profile during inquiry stage before remote execution.129- Record selected profile in `BATCH_STATUS.md`.130131## Cron-based monitoring standard (mandatory)132133Use cron for autonomous monitoring and reporting during long runs.134135Default policy:136- process check interval: 5 minutes137- user report interval: 10 minutes138139Use script:140- `scripts/configure_progress_cron.py --check-min 5 --report-min 10 --replace`141142If user specifies other intervals, use user values.143144## Local vs Remote execution boundary (mandatory)145146Execution boundary for this project:147- **Local-only stage**: molecular structure file generation (`SMILES -> .xyz`, Stage-1 generation step).148- **Remote stages**: all downstream screening after `.xyz` exists (xTB batch filtering, TDDFT-xTB filter, final TDDFT validation) should run on a user-confirmed remote environment.149150Resource selection policy:151- Always ask the user which remote resource/profile to use before remote execution.152- Do not hardcode a specific cluster/host as a universal default in this skill.153- Resolve host/path/module details from `local/*.yaml` after user confirmation.154155## Remote execution marking (mandatory)156157Before starting each screening run, update `BATCH_STATUS.md` with:158- batch id159- stage160- execution target (`local` or `remote`)161- remote host/workdir (required for remote)162- start time163- process id164- selected local resource profile (when available)165166## References167168- Workflow spec: `references/workflow-spec.md`169- Stage I/O contract: `references/io-contract.md`170- Topology assembly script: `scripts/build_da_topology_library.py`171- Cron setup script: `scripts/configure_progress_cron.py`