text: user292: The results obtained by running the results command from DESeq2 contain a "baseMean" column, which I assume is the mean across samples of the normalized counts for a given gene.
  How can I access the normalized counts proper?
  I tried the following (continuing with the example used here):
  > dds <- DESeqDataSetFromMatrix(countData = counts_data, colData = col_data, design = ~ geno_treat)
  > dds <- DESeq(dds)
  estimating size factors
  estimating dispersions
  gene-wise dispersion estimates
  mean-dispersion relationship
  final dispersion estimates
  fitting model and testing
  > res <- results(dds, contrast=c("geno_treat", "prg1_HS30", "prg1_RT"))
  
  Here is what I have for the first gene:
  > res["WBGene00000001",]$baseMean
  [1] 181.7862
  > mean(assays(dds)$mu["WBGene00000001",])
  [1] 231.4634
  > mean(assays(dds)$counts["WBGene00000001",])
  [1] 232.0833
  
  assays(dds)$counts corresponds to the raw counts. assays(dds)$mu seems to be a transformation of these counts approximately preserving their mean, but this mean is very different from the "baseMean" value, so these are likely not the normalized values.
  
  user29: It depends what you mean by “normalised”. As Devon said, the normalized = TRUE argument to the count function gives you normalised counts. However, these are “only” library-size normalised (i.e. divided by the sizeFactors(dds)).
  However, as the vignette explains, downstream processing generally requires more advanced normalisation, to account for the heteroscedasticity of the counts. This is often done by simply logging the counts but this has obvious drawbacks (most trivially, what do we do with 0 counts? A workaround is to add a pseudocount but that’s problematic too).
  DESeq2 offers two different methods to perform a more rigorous analysis:
  
  rlog — a regularised log, and
  vst — a variance stabilising transformation.
  
  You’d generally use either of these for downstream analysis, not count(dds, normalized = TRUE).
  
  user77: The normalized counts themselves can be accessed with counts(dds, normalized=T).
  Now as to what the baseMean actually means, that will depend upon whether an "expanded model matrix" is in use or not. Given your previous question, we can see that geno_treat has a bunch of levels, which means that expanded models are not in use. In such cases, the baseMean should be the mean of the base factor in geno_treat.
  
original_text: 292: <p>The results obtained by running the <code>results</code> command from DESeq2 contain a "baseMean" column, which I assume is the mean across samples of the normalized counts for a given gene.</p>
  
  <p><strong>How can I access the normalized counts proper?</strong></p>
  
  <p>I tried the following (continuing with the example used <a href="https://bioinformatics.stackexchange.com/a/192/292">here</a>):</p>
  
  <pre><code>&gt; dds &lt;- DESeqDataSetFromMatrix(countData = counts_data, colData = col_data, design = ~ geno_treat)
  &gt; dds &lt;- DESeq(dds)
  estimating size factors
  estimating dispersions
  gene-wise dispersion estimates
  mean-dispersion relationship
  final dispersion estimates
  fitting model and testing
  &gt; res &lt;- results(dds, contrast=c("geno_treat", "prg1_HS30", "prg1_RT"))
  </code></pre>
  
  <p>Here is what I have for the first gene:</p>
  
  <pre><code>&gt; res["WBGene00000001",]$baseMean
  [1] 181.7862
  &gt; mean(assays(dds)$mu["WBGene00000001",])
  [1] 231.4634
  &gt; mean(assays(dds)$counts["WBGene00000001",])
  [1] 232.0833
  </code></pre>
  
  <p><code>assays(dds)$counts</code> corresponds to the raw counts. <code>assays(dds)$mu</code> seems to be a transformation of these counts approximately preserving their mean, but this mean is very different from the "baseMean" value, so these are likely not the normalized values.</p>
   29: <p>It depends what you mean by “normalised”. As Devon said, the <code>normalized = TRUE</code> argument to the <code>count</code> function gives you normalised counts. However, these are “only” library-size normalised (i.e. divided by the <code>sizeFactors(dds)</code>).</p>
  
  <p>However, <a href="https://www.bioconductor.org/packages/devel/bioc/vignettes/DESeq2/inst/doc/DESeq2.html#data-transformations-and-visualization" rel="noreferrer">as the vignette explains</a>, downstream processing generally requires more advanced normalisation, to account for the <a href="https://en.wikipedia.org/wiki/Heteroscedasticity" rel="noreferrer">heteroscedasticity</a> of the counts. This is often done by simply <code>log</code>ging the counts but this has obvious drawbacks (most trivially, what do we do with 0 counts? A workaround is to add a pseudocount but that’s problematic too).</p>
  
  <p>DESeq2 offers two different methods to perform a more rigorous analysis:</p>
  
  <ul>
  <li><code>rlog</code> — a <em>regularised log</em>, and</li>
  <li><code>vst</code> — a <em>variance stabilising transformation</em>.</li>
  </ul>
  
  <p>You’d generally use either of these for downstream analysis, not <code>count(dds, normalized = TRUE)</code>.</p>
   77: <p>The normalized counts themselves can be accessed with <code>counts(dds, normalized=T)</code>.</p>
  
  <p>Now as to what the baseMean actually means, that will depend upon whether an "expanded model matrix" is in use or not. Given your previous question, we can see that <code>geno_treat</code> has a bunch of levels, which means that expanded models are not in use. In such cases, the baseMean should be the mean of the base factor in <code>geno_treat</code>.</p>
  