When performing differential expression analysis, should genes with low read counts be removed before or after normalization? I have RNA seq data which I've quantified using Kallisto.  I'd like to use tximport to transform the read count data into input for EdgeR, following the R code supplied in the tximport documentation:

cts &lt;- txi$counts
normMat &lt;- txi$length
normMat &lt;- normMat/exp(rowMeans(log(normMat)))
library(edgeR)
o &lt;- log(calcNormFactors(cts/normMat)) + log(colSums(cts/normMat))
y &lt;- DGEList(cts)
y$offset &lt;- t(t(log(normMat)) + o)
# y is now ready for estimate dispersion functions see edgeR User's Guide


I would ideally follow this up with EdgeR's exactTest.  However, I'd also like to remove genes with low read counts using code such as this:

filterCounts &lt;- function(counts) {
  cpms &lt;- cpm(counts)
  keep &lt;- rowSums(cpms &gt; 1) &gt;= 1
  counts[keep,]
}


The only issue is that I can't tell whether I should remove the genes with low read counts before or after I normality the counts while importing with tximport in the first code.  I'm thinking that it would be best to do this before, editing out the abundance, counts, and length rows of the txi data frame which correspond to lowly expressed genes, but I would like this to be confirmed before I proceed.
The more genes you have the more robust the scaling factor is (among the reason why one doesn't normalize to ERCC spike-ins without a compelling reason), so I suppose in theory it's better to filter after determining the scale factor. Having said that, I'd be surprised if the results changed much either way. Unless you end up filtering out a LOT of genes the scaling factors should be fairly robust to the change.