denali is a tool for visualizing scalar functions defined on trees, graphs, and point clouds as mountainous terrains. Denali helps you discover trends in complex and high dimensional data.
Get Denali

Denali is open source, under the BSD license. Get the source code from GitHub.

A set of examples are available, as well as a python package of utilites, pydenali.

Denali is developed by Justin Eldridge, and is joint work with faculty Mikhail Belkin and Yusu Wang at The Ohio State University. See the tech report here.

What does it do?

Many sources of data — from complex networks to probability distributions — can be represented or summarized by tree-like structures. These trees, however, are often complicated and difficult to visualize. Moreover, it is often the case that one not only wants to visualize the tree-like structure of his or her data, but also a scalar attribute on top of it. Traditional methods, such as simply plotting the tree as a graph in the plane, offer limited opportunities to do so.

Denali is a tool for visualizing trees as landscape metaphors — mountain-like surfaces which intuitively represent both the structure of complicated trees and scalar attributes defined on their nodes. To learn more about landscape metaphors, see the tutorial.

For example, suppose we visualize a hierarchical discussion on an online forum consisting of nearly 1000 comments. If we visualize the tree using the traditional approach, what we obtain is hard to visually parse. For example, graphviz produces the visualization below. Enlarging a section of the image (left) shows that the result can be complex and difficult to understand, even locally. If the entire tree is visualized with graphviz, the resulting image, shown at the same resolution as the cropped version below, is over 20 inches wide. In contrast, denali (right) is able to show the entire tree with clarity.

Denali not only presents the complicated tree structure in an easy-to-interpret form, but also allows the user to manipulate, zoom, simplify, and query the landscape interactively.

Can denali be used for your application? Denali can be used to visualize such diverse structures as probability densities, complex networks, and protein conformational spaces. At the basic level, though, Denali requires its input to be in the form of a scalar tree — a tree whose nodes are associated with scalar values. Included with denali are tools to help you extract such scalar trees from common sources of data, such as scalar functions defined on point clouds. You can also extract tree-like structure using a method you provide, and use denali to visualize the result.

The figure below shows the conceptual "pipeline" you'll follow when using denali:

The extraction step is crucial: it is where the input data is transformed into something that can be visualized with denali. Included alongside denali is ctree, a tool for extracting contour trees from functions defined on graphs and point clouds. With it, you can visualize data from many different sources. Several important applications are shown in the table below:

Scalar tree None Hierarchical clusterings of point clouds, internet comment threads
Scalar function on a graph or point cloud Contour tree Probability densities, cost functions, parameter spaces
Data on a tree-like manifold Contour tree with geodesic distance Mouse cytometry data

For more concrete examples of using denali, see the gallery.

Denali can be used to visualize data from many difference domains, and its powerful callback system allows the user to tailor its behavior to his or her own data. Included in the download are several demos and proofs-of-concept, such as:
You can access denali's documentation either offline (it is in the doc subfolder of your download), or online, here: If you've found a bug in Denali, let us know by adding an issue on our issue tracker.