ComfyUI Node

Select Sigmas

Pick exactly which timesteps each prediction runs on

By redhottensors·Created 3 years ago·Updated 2 years ago· 15
Select Sigmas
  • sigmas
  • selection
selectmod 2
chainedfalse

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, 210, 9, 8.
  • Ranges: [start]:[end], end exclusive, negative indices count from the end, either side can be empty. 3:67, 6, 5; 5: → the tail; :5 → the head; : → everything.
  • mod: mod N selects every Nth sigma. mod 29, 7, 5, 3, 1; mod 38, 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. select is a text field, not a dropdown. A stray space or comma breaks the parse silently (empty entries are skipped).
Categorysampling/custom_sampling/sigmas

Inputs (3)

NameTypeDefaultDescription
sigmasSIGMAS
selectSTRINGmod 2
chainedBOOLEANfalse

Outputs (1)

NameTypeDescription
selectionSIGMAS