Region and score plots

In addition to matrix-based plots, FAN-C provides a number of plots to plot genomic tracks alongside Hi-C data (although they can certainly also be used independently). The main plots in this category are

  • LinePlot, which plots (ideally continuous) scores associated with genomic regions as a line plot.
  • BarPlot, which plots genomic region scores as bars
  • GenomicVectorArrayPlot, which plots multiple scores associated with the same regions, such as insulation scores at different window sizes, as a heatmap
  • FeatureLayerPlot, which plots the location of features as blocks, grouped by user-specified attributes, such as the location TAD boundaries in different matrices
  • GenePlot, which, as the name suggests, can plot gene and transcript annotations, including exon-intron structures.

Line plot

LinePlot accepts a RegionBased object as input. These can be created very easily from any compatible genomic regions format, including BED, GFF/GTF, BigWig, Tabix, and more. So let’s load some BED files:

insulation_scores_1mb = fanc.load("architecture/domains/fanc_example_100kb.insulation_1mb.bed")
insulation_scores_2mb = fanc.load("architecture/domains/fanc_example_100kb.insulation_2mb.bed")
boundaries_1mb = fanc.load("architecture/domains/fanc_example_100kb.insulation_boundaries_1mb.bed")
boundaries_2mb = fanc.load("architecture/domains/fanc_example_100kb.insulation_boundaries_2mb.bed")

We can then use that directly as input:

hp = fancplot.LinePlot(insulation_scores_1mb)

By default, FAN-C fills the area between the X axis and the curve. We can disable that using fill=False:

hp = fancplot.LinePlot(insulation_scores_1mb, fill=False)

Instead of the step-wise style of the line, we can only connect points at each midpoint of the genomic regions:

hp = fancplot.LinePlot(insulation_scores_1mb, style='mid')

We can change the color of the line with colors. Other plot aspects affecting the line drawing, passed to the internal matplotlib ax.plot function, can be controlled through the plot_kwargs dictionary, as shown here for transparency:

hp = fancplot.LinePlot(insulation_scores_1mb, style='mid', colors='cyan',
                       plot_kwargs={'alpha': 0.5})

Finally, we can control the y axis limits with ylim (or you can use a custom axis.

hp = fancplot.LinePlot(insulation_scores_1mb, style='mid', colors='cyan',
                       plot_kwargs={'alpha': 0.5}, ylim=(-1, 1))

It is also possible to add multiple score tracks to the same LinePlot:

hp = fancplot.LinePlot((insulation_scores_1mb, insulation_scores_2mb),
                       style='mid', colors=('cyan', 'magenta'),
                       plot_kwargs={'alpha': 0.5}, ylim=(-1, 1),
                       labels=('1mb', '2mb'))

Bar plot

The BarPlot works in virtually the same way as the LinePlot:

hp = fancplot.BarPlot((insulation_scores_1mb, insulation_scores_2mb),
                      colors=('cyan', 'magenta'),
                      plot_kwargs={'alpha': 0.5}, ylim=(-1, 1),
                      labels=('1mb', '2mb'))

In addition, it also works very well for non-continuous data, such as shown here for domain boundaries in a larger interval:

hp = fancplot.BarPlot(boundaries_1mb, colors='cyan')

Score heatmaps

Layer plots

Gene plots