Style Configuration for Graph Items

Refer also to Density Plots for a implementation details and some sample pictures.

Types of graph supported by ZMap

Historically ZMap has supported only histogram type graphs and thee have been used eg for Phast_cons data. This consists of widely variable sized features with different scores depending on the level of conservation and the size fo the regions.

More recently coverage (density) plots have been implemented and these are available as histograms, heatmaps, and line (wiggle) plots. The density plot code can also display original style histograms and it is intended to phase out the orginal code.

In the short term the orginal code can be used by using the same style definition as before and adding the option 'foo=true'.

New style configuration options

These should all appear in a graph mode style definition.

graph-mode=heatmap | line | histogram
chooses the graph type. Heatmaps vary between the fill colour (min-score) and the border (max-score) and can change from blue to red if you like. White is good as zero as it blends into the column background nicely. Wiggle plots get joined up if there are gaps between features.

graph-density-show_zero=true
Not implemented.

graph-density=true
enables re-binning of data depending on zoom level, which allows the efficient display of large amounts of coverage data. For example if you have 300k of sequence and 40bp bins then that's 7500 features. At min zoom you can see max 1000. Re-binning combines several bins into one and takes the maximum score of the source bins as the one displayed. Clicking on the bin selects that source feature. Note that currently it is assumed that all score values are positive.

graph-density-fixed=true
selects whether or not to use fixed size bins. Nominally fixed size bins are all integer numbers of pixels deep and are all the same size (eg by dividing the column's display into fixed size rows, and pro-rating source bins that overlap two display ones), but is certain circumstances this may differ, especially at high zoom. If a source bin is bigger than the nominal display bin size then the display bin will expand. Normally small source bins are combined into one display bin with a minimum size, but if short bins preceed a large bin this may result in a display bin smaller than expected, as illustrated here:
TBD: a piccy

graph-density-min-bin=4
sets the minimum bin size for display in pixels. The default (4) is the smallest histogram bin that can be easily clicked on (subjectively, for me). Line plots look better with a relatively wide bin despite the fact that this looses detail. Histograms are usually displayed as coloured boxes with an outline and a size of less than 3 pixels means no fill colour will be visible. Heatmaps work best out of the three type with high resolution but it's not clear that a bin size of less than 2 is any use - the point of coverage displays is to highlight where the data is, and users can zoom in quite quickly.

graph-scale=log
If selected then source data (score) is converted to a log value. If the source data is already log scale do not select this!

graph-density-stagger=12
offsets a column of graph data by the specified number of pixels. This is intended to allow several graphs to be combined into one column (eg a series of heatmaps showing differential expression - set stagger to be 1 greater the the column width. It's possible to stagger wiggle plots by less, but at low zoom you will get some overlap, and if you do it may be wise to colour code the graphs. Each graph column is ordered by ZMap's column configuration eg:
[columns]
coverage=liver;heart;brain;kidney
will stagger the data in that order. Using the option instead of displaying each graph in its own column allows all the be displayed or hidden in a single operation.

default-bump-mode=style
(not restricted to graph mode styles). If selected column bump will redisplay the column using an alternate style.

bump-style=line
sets the alternate style to be used for bumping.

An example: (compact) heatmap style bumping to overlapping wiggle

Laurens' original request was for histograms but when shown the cubans prefered wiggle, but it's easy to change.
[heatmap]
width=8
colours=normal fill white; normal border black
#max-mag=1000.000000
graph-baseline=0.000000
max-score=1000.000000
mode=graph
min-score=0.000000
graph-mode=heatmap
graph-density=true
graph-density-fixed=true
graph-density-min-bin=2
graph-density-stagger=9
graph-scale=log
bump-style=line
default-bump-mode=style

[line]
width=40.000000
colours=normal border blue
graph-baseline=0.000000
max-score=1000.000000
mode=graph
min-score=0.000000
graph-mode=line
graph-density=true
graph-density-fixed=true
graph-density-min-bin=4
graph-density-stagger=20
graph-scale=log
and in ZMap config:
[columns]
coverage= liver; heart; brain

[featureset-style]
liver = heatmap
heart = heatmap
brain = heatmap

Supporting old graph styles with new code

The following two styles are equivalent but the second should display more effciently at low zoom. If the first is used and foo not specified then it displays all the features as overlapping as for traditonal ZMap, but uses new code.
[histogram]			# old style
width=60.000000
colours=normal fill Green1 ; normal border Green3
graph-baseline=0.000000
max-score=1000.000000
mode=graph
min-score=0.000000
graph-mode=histogram
bump-fixed=true
foo=true			# true for old code; false for new
[histogram]			# new style
width=60.000000
colours=normal fill Green1 ; normal border Green3
graph-baseline=0.000000
max-score=1000.000000
mode=graph
min-score=0.000000
graph-mode=histogram
graph-density=true
graph-density-fixed=false
graph-density-min-bin=1
bump-fixed=true

Select and highlight

Traditionally clicking on a feature will display some information in the Zmap status bar and highlight the feature (if it's big enough to see the highlight). Highlight has been implemented for histograms but not for heatmaps or lines. Select (and status information) work for all three types but for composite bins the feature with the highest score is chosen. If graphs (eg wiggle plots) are displayed overlapped then it's not always possible to select the feature you want - select operates on a column wide box not the line segment.