under construction
IGB uses the GenoViz SDK to draw data on the screen, and the GenoViz SDK's modified model-view-controller architecture should make it easy to present many diverse views of data to users. However, this built-in flexibility has been hard to exploit because of complexities in TierGlyph classes that render and represent data tracks in IGB.
In this document, we'll describe some of problems users confront when interacting with data tracks and offer some ideas for how these interactions could improve.
Scrolling
Most folks are pretty familiar with the idea of a document viewed through a window on a computer.
...
Panel |
---|
Tiers. An example of a tiered map. |
Current (targeted) Behavior
There seem to be some bugs at the moment, but this is how the vertical manipulations should be working now. The packing of the tiers seems to get messed up and the border manipulation seems to get in a state where the border can no longer be moved.
Zooming
The
...
Panel |
---|
Tiers Zoomed In Vertically. Here we have zoomed in a bit. |
Collapsing
A tier can be made to disappear by clicking the little grey - box on it's left. When it is gone the box will change to a + to let the user make it reappear.
Border Adjustment
Adjust a border between two tiers. Dragging a border up should shrink the tier above and expand the tier below. Dragging it down should expand the tier above and shrink the one below. All other tiers should remain unaffected. No scrolling is instigated.
Panel |
---|
Tier Border Change. The border between the top two tiers has been adjusted. |
Moving a Tier
A user can move a tier over others by grabbing it in the middle (not the border) with the mouse and dragging it vertically. When dropped the tier will take a new position in the stack of tiers and other tiers will be pushed down (or up) to accommodate the dropped tier's new position. All tiers retain their pre drag height. Scrolling is not instigated. Maybe it should be.
Panel |
---|
Moving a Tier. The central tier has been moved up and swapped with the one that was above it. |
Automatic Resizing
Future Possibilities
- Scrolling a Single Tier - An alternative to stretching a single tier to fit the vertical space might be to leave it at a fixed size and add a scroll bar when the height of the tier's display exceeds that allocated.
- Zooming a Single Tier Vertically - A single tier might be "zoomable" somehow. Note that this requires scrolling when zoomed in past the point where the entire tier can be seen at once.
- Expanding a Single Tier Vertically - Manipulating a border between two tier labels as above could have other behaviors.
- For a single tier being expanded or shrunk we could provide a way to toggle the shrink to fit behavior if the tier.
- Instead of shrinking one tier and expanding the other, one tier could be shrunk or expanded and all the other tiers retain their hight and just be moved up or down in the panel.
- Or one tier could be directly shrunk or expanded and all other tiers shrunk or expanded in response keeping the overall height of the containing scene fixed. Think of an accordeon pleat being manipulated and all the other pleats reacting by making or taking space with the ends of the accordeon remaining fixed.
Introduction
IGB uses the GenoViz SDK to draw data on the screen, and the GenoViz SDK's modified model-view-controller architecture should make it easy to present many diverse views of data to users. However, this built-in flexibility has been hard to exploit because of complexities in TierGlyph classes that render and represent data tracks in IGB.
In this document, we'll describe some of problems users confront when interacting with data tracks and offer some ideas for how these interactions could improve.
The Rubber Canvas
IGB implements a one-dimensional variant of animated, semantic zooming, in which objects and the data field appear to stretch or contract about a central line during zooming and objects show more detail as users zoom in for a closer look.
...
Horizontal zooming tends to work very well for users; they seem to instantly grasp how zooming focus works: Clicking a position in the display focuses zooming at that position and operating the horizontal slider zooms in or out. We've also implemented double-clicking to zoom in on a feature and click-drag across the coordinate axis to zoom in a region of interstinterest.
However, it has been harder to communicate the idea of how vertical zooming works, which, in IGB, is more like a vertical stretch rather than a zoom in the usual sense of the word. To stretch/zoom vertically, a user operates the vertical slide on the left side of the main display window. The user's most recent click focuses vertical stretch-zooming, but there is no horizontal zoom stripe to indicate zoom focus.
...
The vertical coordinate system in IGB does not have the same meaning as the horizontal coordinates system, which is closely wedded to the sequence data itself. This means that we have considerable freedom to augment vertical layout to convey more information and customize vertical zooming in ways that will help users explore data more effectively. Vertical placement is by category rather than by some sort of distance from an axis. The whole thing can be zoomed vertically as can any other Genoviz component. This will resize all the tiers except those marked as a fixed size.
Multi-track stretch
Currently, operating the vertical zoomer stretches each track by equal amounts during zoom. As a result, all Glyphs in the display are close the same height regardless of the level of zoom. This is good behavior in that it makes it easy for the user to control the display. Once a user understands how zoom-focusing works, he can click a Glyph and then drag the vertical zoomer up or down to cause the data scene to expand or contract around that central location.
Panel |
---|
Tiers Zoomed In Vertically. Here we have zoomed in a bit. |
Collapsing
A tier can be made to disappear by clicking the little grey - box on it's left. When it is gone the box will change to a + to let the user make it reappear.
Border Adjustment
Adjust a border between two tiers. Dragging a border up should shrink the tier above and expand the tier below. Dragging it down should expand the tier above and shrink the one below. All other tiers should remain unaffected. No scrolling is instigated.
Panel |
---|
Tier Border Change. The border between the top two tiers has been adjusted. |
Moving a Tier
A user can move a tier over others by grabbing it in the middle (not the border) with the mouse and dragging it vertically. When dropped the tier will take a new position in the stack of tiers and other tiers will be pushed down (or up) to accommodate the dropped tier's new position. All tiers retain their pre drag height. Scrolling is not instigated. Maybe it should be.
Panel |
---|
Moving a Tier. The central tier has been moved up and swapped with the one that was above it. |
Automatic Resizing
Future Possibilities
- Scrolling a Single Tier - An alternative to stretching a single tier to fit the vertical space might be to leave it at a fixed size and add a scroll bar when the height of the tier's display exceeds that allocated.
- Zooming a Single Tier Vertically - A single tier might be "zoomable" somehow. Note that this requires scrolling when zoomed in past the point where the entire tier can be seen at once.
- Expanding a Single Tier Vertically - Manipulating a border between two tier labels as above could have other behaviors.
- For a single tier being expanded or shrunk we could provide a way to toggle the shrink to fit behavior if the tier.
- Instead of shrinking one tier and expanding the other, one tier could be shrunk or expanded and all the other tiers retain their hight and just be moved up or down in the panel.
- Or one tier could be directly shrunk or expanded and all other tiers shrunk or expanded in response keeping the overall height of the containing scene fixed. Think of an accordeon pleat being manipulated and all the other pleats reacting by making or taking space with the ends of the accordeon remaining fixed.
Single-track
...
Stretch
However, sometimes it would be useful to be able to stretch-zoom tracks independently of each other, i.e., increase the relative height of one track while compressing the remaining tracks by equal amounts.
...