Select Sigmas
Pick exactly which timesteps each prediction runs on
- sigmas
- selection
This pack's whole gimmick is running different prediction strategies at different points in denoising - and Select Sigmas is how you choose the points. It filters a SIGMAS list by index, producing exactly the timesteps you want a strategy to run on. It's the indispensable partner to Switch Predictions: that node decides whether to switch, Select Sigmas decides when.
Inputs
- sigmas (SIGMAS) - the schedule to filter.
- select (STRING, default "mod 2") - the index selection expression.
- chained (BOOLEAN, default false) - whether to keep the trailing sigma.
Output: selection (SIGMAS).
The select syntax
You type a comma-separated list of 0-based indices, with a few conveniences. The README's examples use a 10-timestep schedule 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0:
- Plain indices:
0, 1, 2→10, 9, 8. - Ranges:
[start]:[end], end exclusive, negative indices count from the end, either side can be empty.3:6→7, 6, 5;5:→ the tail;:5→ the head;:→ everything. - mod:
mod Nselects every Nth sigma.mod 2→9, 7, 5, 3, 1;mod 3→8, 5, 2. The README calls this the easy way to alternate strategies. - Out-of-range indices are silently ignored.
The chained flag and the trailing sigma
Here's the part that actually matters in practice. A SIGMAS list includes the final output sigma - a 30-step schedule has 31 sigmas, and the last is 0.0, where the model is never evaluated. When chained is false (the default), Select Sigmas drops that final sigma before doing its math, so your selection is over the evaluated steps only. When you're chaining one Select Sigmas into another, you almost always want chained on - otherwise each filter re-drops the tail and your ranges drift. The README is blunt: "If you're chaining Select Sigmas nodes, you should enable chained in almost all cases."
Concrete consequence: select: -1 with chained false gives you the last evaluated sigma; with chained true it gives you the 0.0 end-of-list sigma. Same string, different timestep. That off-by-one is the most common "my selection is wrong" bug in this pack.
How it works
It builds a mask of indices (respecting count - 1 when not chained), then returns sigmas[mask]. Purely index math - it doesn't care about sigma values. If you want value-based selection, that's the pack's other utility, Split at Sigma. And because Switch Predictions matches by value (is in sigmas_B), whatever you select here must actually exist in the schedule you sample with.
Installing it
Ships in the ComfyUI-Prediction pack by @RedHotTensors (Project RedRocket). ComfyUI Manager → search "ComfyUI-Prediction", or:
cd ComfyUI/custom_nodes
git clone https://github.com/redhottensors/ComfyUI-Prediction
Restart ComfyUI. No extra dependencies or model files. It lives under Add Node > sampling > custom_sampling > sigmas.
Common issues
- Switch never fires. Your selected sigmas don't match the values in the schedule - check chained and the trailing 0.0.
- Wrong tail. Forgot whether you were chained. When stacking filters, enable chained.
- Typed strings.
selectis a text field, not a dropdown. A stray space or comma breaks the parse silently (empty entries are skipped).
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| sigmas | SIGMAS | — | |
| select | STRING | mod 2 | — |
| chained | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| selection | SIGMAS | — |