<p>I strongly suggest that you not try to come up with your own package for this when things like <code>CSAW</code> already exist in bioconductor and provide a number of useful normalization options.</p>

<p>For visualization purposes, I think it's best to simply take the log2 ratio (e.g., using <code>bamCompare</code> from deepTools) or alternatively normalize by total coverage (possibly excluding blacklist regions, if applicable for your organism).</p>

CC BY-SA 4.0
2018-06-29T04:45:56.823Z
package ‘csaw’ is not available (for R version 3.4.3)
I was not very precise. I am evaluating transcription initiation.I am not interested in detecting peaks. I am comparing regions around the TSSs. So far I have been simply normalizing through a spike-in dna from pombe into cerevisiae (my model organism). Any other alternative available before I try to re-invent the wheel?
aerijman
CC BY-SA 4.0
2018-06-29T06:48:37.190Z
It's a [bioconductor package](https://bioconductor.org/packages/release/bioc/html/csaw.html), so follow the appropriate installation instructions. This is also appropriate for your situation.
Devon Ryan
CC BY-SA 4.0
2018-06-20T11:34:04.730Z
2018-06-20T11:34:04.730Z
Devon Ryan
<p>If you want to compare conditions (or strains), I don't see why you need Input at all (unless you want to define intervals).</p>

<p>It isn't clear from you question (and subsequent comment) on what you want to achieve, but I can see 2 possible scenarios:</p>

<ol>
<li><p><strong>You already have predefined intervals to test on</strong></p>

<p>In your case (Pol2-ChIP), this might be for example gene promoters.
You could compare the Pol2-ChiP libraries directly using standard test for count data as established for RNA-Seq (i.e. edgeR, baySeq etc) in which the intervals are genes (as opposed to promoters or so). No need for input in this scenario, all you need are ChIP libraries for both conditions (don't forget to do replicates).</p></li>
<li><p><strong>You don't have predefined intervals</strong></p>

<p>You could defined them through <strong>peak calling</strong>, in this case you'd in fact need input. A nice approach for this is described in <a href="http://dx.doi.org/10.1186/gb-2012-13-10-r98" rel="nofollow noreferrer">Diaz et al</a> and implemented in <a href="https://github.com/deeptools/deepTools/wiki/Normalizations" rel="nofollow noreferrer">deeptools</a>. It poses an elegant method to separate the IP signal from background input, which is probably what you want I suppose. Having defined peaks, you could do scenario 1) using them as intervals.</p></li>
</ol>

CC BY-SA 4.0
2018-06-22T23:31:06.640Z
Case 1 is my scenario, nevertheless.
I have been normalizing the samples with spiked-in foreign dna but I am trying to find out if the inputs make a better job.
I do use limma for downstream analysis, but I try to find the best way to standardize obtaining counts from reads, minimizing the noise.
aerijman
CC BY-SA 4.0
2018-06-21T14:26:49.100Z
2018-06-21T14:26:49.100Z
Sebastian Müller
<p>If I subtract input counts from ChIP counts (for every gene, since I have one peak per gene) I get negative values for most genes. This makes sense to me, because (as can be seen in the figure) input and IP have same sequencing depth but IP is very biased towards few genes with lots of counts.</p>

<p><img src="https://i.sstatic.net/ZY8Fp.jpg" alt="https://cdn.sstatic.net/Sites/stackoverflow/img/error-lolcat-problemz.jpg"></p>

<p>Elsevier was informed that the business model which they offered does not meet the demands. How should I implement input normalization?</p>

<p>P.S. The subtraction idea is from <a href="https://support.bioconductor.org/p/84539/" rel="nofollow noreferrer">Bioconductor</a> </p>

CC BY-SA 4.0
2018-06-19T18:37:18.923Z
What is your goal?
Devon Ryan
CC BY-SA 4.0
2018-06-19T18:49:51.897Z
My goal is to compare RNA-polII ChIP experiments between different stress conditions and different strains
aerijman
CC BY-SA 4.0
2018-06-27T03:03:34.513Z
I think if you can clarify your question you will be more likely to get the help you need.
Bioathlete
<bioconductor><normalization><chip-seq>
Input normalization in ChIP-seq
# Input normalization in ChIP-seq

(Asked by: username_0 on 2018-06-19)

If I subtract input counts from ChIP counts (for every gene, since I have one peak per gene) I get negative values for most genes. This makes sense to me, because (as can be seen in the figure) input and IP have same sequencing depth but IP is very biased towards few genes with lots of counts.

![https://cdn.sstatic.net/Sites/stackoverflow/img/error-lolcat-problemz.jpg](https://i.sstatic.net/ZY8Fp.jpg)

Elsevier was informed that the business model which they offered does not meet the demands. How should I implement input normalization?

P.S. The subtraction idea is from [Bioconductor](https://support.bioconductor.org/p/84539/)

**Tags:** bioconductor, normalization, chip-seq
> **Comments:**
> **username_1**: What is your goal?  
> **username_0**: My goal is to compare RNA-polII ChIP experiments between different stress conditions and different strains  
> **username_2**: I think if you can clarify your question you will be more likely to get the help you need.  

---

## 2 answers

### Answer by username_1 on 2018-06-20. Score: 4

I strongly suggest that you not try to come up with your own package for this when things like `CSAW` already exist in bioconductor and provide a number of useful normalization options.

For visualization purposes, I think it's best to simply take the log2 ratio (e.g., using `bamCompare` from deepTools) or alternatively normalize by total coverage (possibly excluding blacklist regions, if applicable for your organism).

> **Comments:**
> **username_0**: package ‘csaw’ is not available (for R version 3.4.3) I was not very precise. I am evaluating transcription initiation.I am not interested in detecting peaks. I am comparing regions around the TSSs. So far I have been simply normalizing through a spike-in dna from pombe into cerevisiae (my model organism). Any other alternative available before I try to re-invent the wheel?  
> **username_1**: It's a [bioconductor package](https://bioconductor.org/packages/release/bioc/html/csaw.html), so follow the appropriate installation instructions. This is also appropriate for your situation.  

---

### Answer by username_3 on 2018-06-21. Score: 1

If you want to compare conditions (or strains), I don't see why you need Input at all (unless you want to define intervals).

It isn't clear from you question (and subsequent comment) on what you want to achieve, but I can see 2 possible scenarios:

1. **You already have predefined intervals to test on**

   In your case (Pol2-ChIP), this might be for example gene promoters.
   You could compare the Pol2-ChiP libraries directly using standard test for count data as established for RNA-Seq (i.e. edgeR, baySeq etc) in which the intervals are genes (as opposed to promoters or so). No need for input in this scenario, all you need are ChIP libraries for both conditions (don't forget to do replicates).
2. **You don't have predefined intervals**

   You could defined them through **peak calling**, in this case you'd in fact need input. A nice approach for this is described in [Diaz et al](http://dx.doi.org/10.1186/gb-2012-13-10-r98) and implemented in [deeptools](https://github.com/deeptools/deepTools/wiki/Normalizations). It poses an elegant method to separate the IP signal from background input, which is probably what you want I suppose. Having defined peaks, you could do scenario 1) using them as intervals.

> **Comments:**
> **username_0**: Case 1 is my scenario, nevertheless. I have been normalizing the samples with spiked-in foreign dna but I am trying to find out if the inputs make a better job. I do use limma for downstream analysis, but I try to find the best way to standardize obtaining counts from reads, minimizing the noise.  

---

