Matrix and score comparisons

FAN-C provides a central utility named fanc compare to compare Hi-C matrices and measures derived from them between two conditions, such as different cell types, treatments, etc.

usage: fanc compare [-h] [-c COMPARISON] [-o OUTPUT_FORMAT] [-S] [-l]
                    [--log-matrix] [-Z] [-I] [-e] [-u] [-tmp]
                    input input output

Positional Arguments

input Input matrix (e.g. Hic) files.
output Output ComparisonMatrix file.

Named Arguments

-c, --comparison
 Type of comparison. Default: fold-change, other options are: difference
-o, --output-format
 Output format for region-based comparisons. Only relevant when using BED, GFF, or another region-based format as input.
-S, --no-scale Do not scale input matrices to the same number of valid pairs
-l, --log Log2-convert comparison values (AFTER the comparison)
--log-matrix Log2-convert matrices (BEFORE the comparison)
-Z, --ignore-zero
 Do not consider pixels where one matrix entry is zero
-I, --ignore-infinite
 Do not consider pixels where the comparison yields “inf”
-e, --observed-expected
 O/E transform matrix values before comparison. Only has an effect on matrix comparisons.
-u, --uncorrected
 Compare uncorrected matrices. Only has an effect on matrix comparisons.
-tmp, --work-in-tmp
 Work in temporary directory

Compare matrices

When you provide fanc compare with two matrix files (e.g. Hic), these need to have the same binning (more specifically, they must have identical regions). The comparison is then done on a per-pixel basis. By default, the fold-change between pixels in the two matrices is calculated, but you can also calculate the difference using -c difference (you can also use “fc” and “diff” as short-hand).

The output is a FAN-C matrix object (that can be used like a Hic object in most cases) where entries are the fold-change (or difference) of pixels in both matrices. The comparison is matrix1/matrix2 (or matrix1 - matrix2). For fold-change comparisons, it might be useful to log-transform pixel values using -l. Also, if pixel entries are zero in one matrix, the fold-change could return NaN values. You can simply ignore comparisons where one or both pixels are zero using -Z. Or you can ignore infinite values resulting from a comparison using -I.

For a fair comparison, matrix entries are scaled to the total number of valid pairs on each chromosome. This corrects for different coverage of the two matrices. If you have chosen a normalisation that takes care of this directly, you can save some computation time by specifying -S to omit the calculation of a scaling factor.

Compare scores

You can also use fanc compare to compare scores in any compatible region-based file, such as BED, GFF, BigWig, or any region-based FAN-C output (e.g. insulation scores). By default, the output will be a FAN-C RegionsTable object, but you can change this behavior using the -o option, which you can use to output BED, GFF, or BigWig files.

Compare multi-score files

The output of fanc insulation and fanc directionality for multiple window sizes is a FAN-C multi-score file, which contains the insulation/directionality scores for multiple windows sizes at once. You can directly compare all scores against each other by providing two multi-score files as input to fanc compare - every window size will be compared independently and the comparisons output in yet another multi-score file.