We need to update this significantly to handle BAM data as requested by users and also we need to improve the existing interface. Specifically:
list columns that are already loaded and show status information (eg as Otterlace: red/green/yellow/black for loaded status). Note that in ZMap we have the extra complication of the marked region and also it is possible to configure data from several sources into one column.
group columns rather than display alphabetically - groups appear in a left hand pane and when selected their columns appear in a right hand pane. It is thought we could sensibly have about a dozen groups for current configurations.
select all etc apply to groups not the whole dataset.
remove the separate lists of columns for show/hide per strand and operate both together. Allow Reverse to be hidden en masse.
Load and display columns: reformatting the dialog
It would seem natural to be able to request and show/hide columns from the same GTK pane although this will give a more cluttered display.
Here's a sample layout for the normal columns. (NOTE that this is just an example, we expect to have RNAseq tabs as well and many more columns; there will also be several buttons at the bottom to operate on all columns and to apply the requests).
The combo boxes show status for each column and can be used to enter requests.
Buttons will are provided to operate on all columns in the group. Note that 'request failed' will have to know about the previous request ie if it was from the mark or not. Options can be selected for several groups and actioned with the Apply button. Revert will set the current group back to its current status (cancel any requests in the group) and Revert All will reset all groups.
Special Columns
3FT is not a loadable column and will not appear but instead will be controlled by the 3-Frame menu button.
DNA will be handled as a normal column; it is possible request this (and is normally done on startup).
Show Translation in ZMap is controlled via the column's right click menu.
It is probably possible to configure these columns into a suitable column group and show them with the loaded status widget disabled, probably triggering this by not finding a server config for the featureset in the column.
Some notes about 'columns'
Historically ZMap has provided a 'Columns' dialog which has been used to request data and also control the display. Requesting a column related to ACEDB which assigns one or more featuresets to a column - the ZMap user cannot request a simgle featuetset in a column that contains more than one. Otterlace by contrast provides a 'load columns' dialog that deals with 'filters' which can contain one or more featuresets and these do not correspond directly to display columns. Some examples illustrate the combinations in use:
ZMap can request a column called 'Predicted Transcripts' which contains the featuresets Augustus and Genscan. Otterlace allows the users to request the featuresets but not the column.
The column 'Repeats' contains 3 featuresets that can be requested from Otterlace as RepeatMasker plus one more that can be requested from Otterlace as TRF.
Featuresets from one filter cannot be assigned to different columns.
An Otterlace filter can be described as corresponding to an analysis of some kind.
To replace the existing ZMap and Otterlace load column dialogs with one new one we need to provide requests using otterlace filters and control display by column. The otterlace configuration lists filters which somehow result in the required featuresets being requested. Each filter defined defaults to providing a single featureset of the same name which should be displayed in a column of the same name, but this can be set differently if necessary. There may be a requirement to hide/show individual featuresets within a column eg solexa introns can be split into 1dpf, 2dpf etc.
As a solution we will adopt the following policy:
initially filters that map to another column will not appear on the dialog (this replicates the existing ZXmap dialog)
If this proves not acceptable then the filters will also be included but will not have a display button: the users should use the display column entry instead. The column and filter will appear together on the dialog.
Running grep over otter_config reveals that the only columns implicated are predicted transcripts, Predicted Regulatory Features, repeats and the solexa 1dpf etc columns. However ENCODE data comes in repetitions which are currently requested together and we may wish to control this more closely.
Request these two pages in firefox to see the current otterlace config.
Displayed and loaded column status should change to reflect ZMap's state:
loaded status should change as data arrives
show/hide column via the mouse should update the dialog
For load from mark it may be acceptable have the option always enabled and only action the request if the mark is set.
It will also be easier to always provide options to request data and only action them if data is not yet loaded.
ZMap should remember previous selections on restarting a session
Currently Otterlace maintains session state and can continue to start ZMap with the appropriate columns to load. ZMap should default to load the same columns on a session restart and this can be saves in a separate SQLite database (to ensure that static databases remain static).
Default selection and column groups
Column groups (eg EST) conatin a number of columns some of which are considered 'core' depending on the sequence viewed. It is necessary to privode a 'Default' button to select all the 'core' columns.
Operation WRT multiple windows and views
Existing code supports a separate Columns dialog for each window (NOTE: a window is a single pane in a ZMap X window. Normally a view corresponds to the whole X window but it is possible to have multiple views in a single X window).
The dialog is created by clicking on the columns button in the toolbar, and is created for the current focussed window. This is necessary to allow column display to be turned on/off for the selected pane. Load columns operates on the feature context and when data completes loading it is displayed in all the windows in the relevant view (each view has its own feature context).
To avoid creating extra work this will not be changed for the first implementation, as we expect users to only use one dialog at a time, and extra ones can be creeted/ destroyed quite easily.
Some old notes
I think this was partly abandoned due to the intricacies of GTK. SeqBitmap was removed but display options are as before.