Far from an expert opinion here; however, I do noise reduction as a very first step on luminance and Ha data. Then the first step after color combination / BN / CC. Then deconvolution if the image calls for it. I usually eliminate the first 1 layer with ATWT, then depending on the image, perform a masked stretched followed by HT, or just HT. After that, TGV works wonders for me. I typically set TGV to its defaults, check local support, set iterations to 250 without convergence, then 99% of the effort is tuning edge protection. I tweak it until I find that point where the noise is just barely kind of pixelated looking, then increase edge protects a bit or bump up the strength. This works well for me. Would love to hear about alternative approaches. Btw, I find TGV in the linear state to be not nearly as "easy" to get right.