<p>This was addressed by the Seurat developers <a href="https://github.com/satijalab/seurat/issues/668" rel="noreferrer">here</a>:</p>

<blockquote>
  <p>if you have TPM counts, I suggest you don't use
  Seurat::NormalizeData(), since TPM counts are already normalized for
  sequencing depth and transcript/gene length. Note that
  Seurat::NormalizeData() normalizes the data for sequencing depth, and
  then transforms it to log space. If you have TPM data, you can simply
  manually log transform the gene expression matrix in the object@data
  slot before scaling the data.</p>
</blockquote>

<p>And <a href="https://github.com/satijalab/seurat/issues/481" rel="noreferrer">here</a>:</p>

<blockquote>
  <p>If you want to run your own normalization function, please place the
  data in log scale before placing it into object@data</p>
</blockquote>

<p>And <a href="https://github.com/satijalab/seurat/issues/171" rel="noreferrer">here</a>:</p>

<blockquote>
  <p>If you're supplying already normalized values to CreateSeuratObject,
  you should skip the normalization step. You will likely see a warning
  when you run ScaleData (which is checking whether you normalized using
  Seurat). You can ignore this or turn it off by setting check.for.norm
  to FALSE.</p>
</blockquote>

<p>This is a lot of quotes, but I found them all to be helpful in different ways.</p>

CC BY-SA 4.0
2018-09-26T01:11:30.560Z
2018-09-26T01:11:30.560Z
burger
<p>I know that in <code>Seurat</code> we have the function <code>CreateSeuratObject</code> from which the analysis starts, but it accepts raw count matrix according to the documentation. I have only the already normalized count matrix, so is there a way to work with <code>Seurat</code> using normalized data? I would try maybe to feed in the normalized data instead of raw to <code>CreateSeuratObject</code>, but I do not know what <code>Seurat</code> is doing behind the scenes, whether it is a good idea. Besides, <code>Seurat</code> provides by default only one <code>log</code> - normalization method, but I may want to normalize the data by myself with various methods and only then start the analysis with <code>Seurat</code> - that is the other reason why I want to find a way to start from normalized data.</p>

<r><seurat>
Seurat with normalized count matrix?
# Seurat with normalized count matrix?

(Asked by: username_0 on 2018-09-24)

I know that in `Seurat` we have the function `CreateSeuratObject` from which the analysis starts, but it accepts raw count matrix according to the documentation. I have only the already normalized count matrix, so is there a way to work with `Seurat` using normalized data? I would try maybe to feed in the normalized data instead of raw to `CreateSeuratObject`, but I do not know what `Seurat` is doing behind the scenes, whether it is a good idea. Besides, `Seurat` provides by default only one `log` - normalization method, but I may want to normalize the data by myself with various methods and only then start the analysis with `Seurat` - that is the other reason why I want to find a way to start from normalized data.

**Tags:** r, seurat

---

## 1 answers

### Answer by username_1 on 2018-09-26. Score: 6 | Accepted answer

This was addressed by the Seurat developers [here](https://github.com/satijalab/seurat/issues/668):

> if you have TPM counts, I suggest you don't use
> Seurat::NormalizeData(), since TPM counts are already normalized for
> sequencing depth and transcript/gene length. Note that
> Seurat::NormalizeData() normalizes the data for sequencing depth, and
> then transforms it to log space. If you have TPM data, you can simply
> manually log transform the gene expression matrix in the object@data
> slot before scaling the data.

And [here](https://github.com/satijalab/seurat/issues/481):

> If you want to run your own normalization function, please place the
> data in log scale before placing it into object@data

And [here](https://github.com/satijalab/seurat/issues/171):

> If you're supplying already normalized values to CreateSeuratObject,
> you should skip the normalization step. You will likely see a warning
> when you run ScaleData (which is checking whether you normalized using
> Seurat). You can ignore this or turn it off by setting check.for.norm
> to FALSE.

This is a lot of quotes, but I found them all to be helpful in different ways.


---

