# hicCorrectMatrix¶

This function provides 2 balancing methods which can be applied on a raw matrix.

I. KR: It balances a matrix using a fast balancing algorithm introduced by Knight and Ruiz (2012).

II. ICE: Iterative correction of a Hi-C matrix (see Imakaev et al. 2012 Nature Methods for details). For this method to work correctly, bins with zero reads assigned to them should be removed as they cannot be corrected. Also, bins with low number of reads should be removed, otherwise, during the correction step, the counts associated with those bins will be amplified (usually, zero and low coverage bins tend to contain repetitive regions). Bins with extremely high number of reads can also be removed from the correction as they may represent copy number variations.

To aid in the identification of bins with low and high read coverage, the histogram of the number of reads can be plotted together with the Median Absolute Deviation (MAD).

It is recommended to run hicCorrectMatrix as follows:

$ hicCorrectMatrix diagnostic_plot –matrix hic_matrix.h5 -o plot_file.png

Then, after revising the plot and deciding on the threshold values:

$ hicCorrectMatrix correct –correctionMethod ICE –matrix hic_matrix.h5 –filterThreshold <lower threshold> <upper threshold> -o corrected_matrix

For a more in-depth review of how to determine the threshold values, please visit: http://hicexplorer.readthedocs.io/en/latest/content/example_usage.html#correction-of-hi-c-matrix

We recommend to compute first the normalization (with hicNormalize) and correct the data (with hicCorrectMatrix) in a second step.

```
usage: hicCorrectMatrix [-h] [--version] ...
```

## Named Arguments¶

`--version`show program’s version number and exit

## Options¶

Possible choices: diagnostic_plot, correct

To get detailed help on each of the options:

$ hicCorrectMatrix diagnostic_plot -h

$ hicCorrectMatrix correct -h

## Sub-commands:¶

### diagnostic_plot¶

- Plots a histogram of the coverage per bin together with the
modified z-score based on the median absolute deviation method

(see Boris Iglewicz and David Hoaglin 1993, Volume 16: How to Detect and Handle Outliers The ASQC Basic References in Quality Control: Statistical Techniques, Edward F. Mykytka, Ph.D., Editor).

```
hicCorrectMatrix diagnostic_plot --matrix hic_matrix.h5 -o file.png
```

#### Required arguments¶

`--matrix, -m`Name of the Hi-C matrix to correct in .h5 format.

`--plotName, -o`File name to save the diagnostic plot.

#### Optional arguments¶

`--chromosomes`List of chromosomes to be included in the iterative correction. The order of the given chromosomes will be then kept for the resulting corrected matrix.

`--xMax`Max value for the x-axis in counts per bin.

`--perchr`Compute histogram per chromosome. For samples from cells with uneven number of chromosomes and/or translocations it is advisable to check the histograms per chromosome to find the most conservative filterThreshold.

Default: False

`--verbose`Print processing status.

Default: False

### correct¶

Run Knight-Ruiz matrix balancing algorithm (KR) or the iterative matrix correction (ICE) .

```
hicCorrectMatrix correct --matrix hic_matrix.h5 --filterThreshold -1.2 5 (Only if ICE)-out corrected_matrix.h5
```

#### Required arguments¶

`--matrix, -m`Name of the Hi-C matrix to correct in .h5 format.

`--outFileName, -o`File name to save the resulting matrix. The output is a .h5 file.

#### Optional arguments¶

`--correctionMethod`Method to be used for matrix correction. It can be set to KR or ICE.

Default: “KR”

`--filterThreshold, -t`Removes bins of low or large coverage. Usually these bins do not contain valid Hi-C data or represent regions that accumulate reads and thus must be discarded. Use hicCorrectMatrix diagnostic_plot to identify the modified z-value thresholds. A lower and upper threshold are required separated by space, e.g. –filterThreshold -1.5 5. Applied only for ICE!

`--iterNum, -n`Number of iterations to compute.only for ICE!

Default: 500

`--inflationCutoff`Value corresponding to the maximum number of times a bin can be scaled up during the iterative correction. For example, an inflation cutoff of 3 will filter out all bins that were expanded 3 times or more during the iterative correctionself.Only for ICE!

`--transCutoff, -transcut`Clip high counts in the top -transcut trans regions (i.e. between chromosomes). A usual value is 0.05. Only for ICE!

`--sequencedCountCutoff`Each bin receives a value indicating the fraction that is covered by reads. A cutoff of 0.5 will discard all those bins that have less than half of the bin covered. Only for ICE!

`--chromosomes`List of chromosomes to be included in the iterative correction. The order of the given chromosomes will be then kept for the resulting corrected matrix

`--skipDiagonal, -s`If set, diagonal counts are not included. Only for ICE!

Default: False

`--perchr`Normalize each chromosome separately. This is useful for samples from cells with uneven number of chromosomes and/or translocations.

Default: False

`--verbose`Print processing status.

Default: False

`--version`show program’s version number and exit

With HiCExplorer version 3.0 we offer an additional Hi-C interaction matrix correction algorithm: Knight-Ruiz.

```
$ hicCorrectMatrix correct --matrix matrix.cool --correctionMethod KR --chromosomes chrUextra chr3LHet --outFileName corrected_KR.cool
```

The iterative correction can be used via:

```
$ hicCorrectMatrix correct --matrix matrix.cool --correctionMethod ICE --chromosomes chrUextra chr3LHet --iterNum 500 --outFileName corrected_ICE.cool --filterThreshold -1.5 5.0
```

HiCExplorer version 3.1 changes the way data is transferred from Python to C++ for the KR correction algorithm. With these changes the following runtime and peak memory usage on Rao 2014 GM12878 primary + replicate data is possible:

KR on 25kb: 165 GB, 1:08 h

ICE on 25kb: 224 GB, 3:10 h

KR on 10kb: 228 GB, 1:42 h

ICE on 10kb: 323 GB, 4:51 h

KR on 1kb: 454 GB, 16:50 h

ICE on 1kb: >600 GB, > 2.5 d (we interrupted the computation and strongly recommend to use KR on this resolution)

For HiCExplorer versions <= 3.0 KR performs as follows:

KR on 25kb: 159 GB, 57:11 min

KR on 10kb: >980 GB, – (out of memory on 1TB node, we do not have access to a node with more memory on our cluster)