Nodes/Skoogeer-Noise/Latent Channel Stats Preview
ComfyUI Node

Latent Channel Stats Preview

See what your latent's channels are actually doing

By ttulttul·Created 9 months ago·Updated 3 months ago· 14
Latent Channel Stats Preview
  • latent
  • image
channel_limit16
height256

Latent Channel Stats Preview is the diagnostic node in the Skoogeer-Noise pack: it renders a bar chart of each channel's mean and standard deviation straight from a latent tensor. Nothing gets decoded, nothing gets sampled - you point it at a latent and get a picture of its channel statistics. It's the closest thing the pack has to a "show me what's under the hood" button.

Why would a beginner want this? Because the moment you start touching latents - channel transforms, frequency splits, noise injection - you're flying blind without it. A channel whose std collapsed to near zero is a dead channel. A channel whose mean drifted far from the rest is about to produce artifacts when the VAE decodes. This node makes those failures visible before you waste a sample.

How it works

It computes the mean and standard deviation of every channel in the latent's samples tensor, then draws both as a bar chart. channel_limit (default 16) caps how many channels you see - SD/SDXL latents have 4 channels, Flux has 16, so 16 is a sensible default. height (default 256) just sets the output image height; the layout adjusts itself.

Two inputs, one output:

  • latent - whatever you're curious about.
  • channel_limit / height - cosmetic and display controls.
  • image (IMAGE) - the rendered chart, which you wire into a preview node like PreviewImage.

The node is marked dynamic (IS_CHANGED returns NaN), so ComfyUI refreshes the preview reliably instead of caching a stale chart - handy when you're tweaking a transform and want the stats to update on every run.

Where it earns its keep

The pack's README explicitly recommends pairing it with the channel transforms: run LatentChannelStatsPreview before and after a Latent Channel Nonlinear Transform (or the linear one, or a frequency split) and compare the charts. You'll instantly see which channels moved, whether any died, and whether match_stats did its job of keeping the distribution in range. It's also the fastest way to sanity-check that a LatentChannelMatch actually transferred the reference's statistics - the whole point of that node is a visible shift in these very numbers.

Installing it

Part of the Skoogeer-Noise pack. ComfyUI Manager: search "Skoogeer-Noise", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise
# restart ComfyUI

Standard deps only (torch, numpy, einops, pyyaml) - nothing to download.

Gotchas

  • It's a diagnostic, not an output. You still need a preview node on the image output to actually see the chart.
  • Don't mistake the chart for a decoded image. This shows statistics, not content. It can't tell you what the image looks like - only that a channel is healthy or not.
  • Flux.2 latents are patchified (128-channel, 2x2). channel_limit caps at 64, so you won't see all of them at once; if you need the full picture, unpatchify first with the pack's Unpatchify Flux.2 Latent.
  • If the chart looks like a wall of noise, that's often exactly the info you needed - the latent is disorganized and the decode will be too.
Categorylatent/debug

Inputs (3)

NameTypeDefaultDescription
latentLATENT
channel_limitoptINT161–64
heightoptINT25672–1024

Outputs (1)

NameTypeDescription
imageIMAGE