Cookbook

Denali can be used to visualize many different sources of data, but it requires that its input be in the form of a scalar tree. Denali includes tools to extract tree-like structure from your data so that it can be visualized as a landscape metaphor.

This document describes several ways to combine these tools to perform several common analyses.

Scalar function on a tree

If your function is defined on a tree, then you may not need to do anything extra to visualize it with denali. Simply provide your input as a .tree file (see the specification or the tutorial for more information).

Scalar function on a graph

If your function is defined on a graph, you'll need to extract tree-like structure from the graph. One way to do this is to compute the contour tree of the graph. The included ctree tool will do this: simply provide the vertex values and edges of your graph to ctree, and it will output the contour tree in a file denali can read.

Scalar function on a point cloud

If your function is defined on a point cloud, you'll need to extract tree-like structure. One way to do this is with a contour tree. The included ctree tool and pydenali's contour tree utilities can help do this. For more information, see the Visualizing function on point clouds section of the tutorial.

Visualize and interactively sample a probability distribution

Suppose you have many samples from a probability distribution in the form of points with associated probabilities. You can visualize the distribution as any other scalar function defined on a point cloud: by first building a nearest-neighbor graph, then building the contour tree. See the Visualize a scalar function on a point cloud section above for more.

Denali's callback system can be used to interactively resample the probability distribution. Simply write a tree callback to do the following:

  1. Resample points around the selection.
  2. Recompute the neighbor graph.
  3. Pass the recomputed neighbors and new vertices into ctree.
  4. Print the computed tree to STDOUT.

Included in examples/pdf is a callback which does just this for a simple mixture of Gaussians.

Previous: Examples | Next: Related Work