October 24th 2006
To produce a standalone visualiser application that can display the job history of a CCP4i project selected by the user, and allow them to browse the information for each. The visualiser will also provide access to a limited set of tools to interact with the displayed jobs.
I have developed a standalone Tcl/Tk visualiser based on dotgraph to illustrate and explore some of the functionality that I think the prototype should have.
The prototype is in the Bioxhit_db CVS repository:
Bioxhit_db/dbccp4i/application/ccp4i_db_dotgraph.tcl
It needs dotgraph_tcl version 0.0.2 in order to work, this can be obtained via http://www.ccp4.ac.uk/pjb.html#ccp4_programs
To run this prototype do e.g.:
wish ccp4i_db_dotgraph.tcl ~/RCSB_WORK_2005/PROJECTS/MR_TUTORIAL
where ~/RCSB_WORK_2005/PROJECTS/MR_TUTORIAL is a CCP4i project directory.
![]() |
This is an illustration of how the main window looks for the dummy prototype. It displays the jobs in a CCP4i project with links indicating the flow of data (in the form of files) between jobs. The oldest jobs are at the top of the display and the newest are at the bottom. Navigation of the display is covered below, as are the different styles used to display the jobs. There is also a set of selection tools. |
Figure 1: screenshot of the prototype |
The prototype allows navigation of the view using x and y scrollbars, and by left-mouse click-and-drag on the canvas in order to move the view.
Other navigational tools could be introduced later on, for example a "Go to job" option could recentre the view on the selected job.
Jobs in the history will be displayed as nodes in a directed graph from dot. dot gives the option of displaying nodes with different colours and shapes, so we can display jobs with different styles based on their status and also the number of links:
Example | Description/explanation |
---|---|
![]() |
Example of a job with no previous jobs (so it is ellipse-shaped) and with STATUS FINISHED (so it is coloured green). |
![]() |
Example of a job with previous jobs (so it is rectangular) and with STATUS FINISHED (coloured green). |
![]() |
Example of a job with STATUS FAILED (so it is coloured red) and with no previous jobs. |
![]() |
Example of a job that has STATUS KILLED (so it is blue). |
![]() |
Example of a job that has STATUS RUNNING (so it is coloured yellow).been selected by the user inside |
![]() |
Example of a job that has STATUS REPORTED. Any job with a STATUS different to FINISHED, FAILED, RUNNING or KILLED appears with colour grey. |
![]() |
Example of a job that has been selected by the user inside the visualiser - it is coloured cyan regardless of its STATUS. |
In the prototype the nodes are not large enough to display a lot of information, so only the job number and the taskname are displayed.
In the prototype, when the mouse moves over a job node then the job number, taskname and title are displayed in a line of text at the bottom of the screen.
A later implementation should provide more detailed information about the job, for example the date, files, whether there is a notebook entry or harvest file and so on.
A left mouse click on a job is part of the selection behaviour described below.
A right mouse click on a job invokes a "context menu" that gives options for that particular job. In the prototype only the selection-based options are implemented.
This is not implemented in the prototype. Potentially this could be useful however there is a problem with clicking on lines linking jobs, in that the target is quite easy to miss with the mouse. So this will require more thought.
The prototype implements some basic selection tools:
In this prototype the selection can be used in the "Show" menu, which has the option to only show the selected jobs - this redraws the display with only the currenly selected jobs shown.
![]() |
![]() |
Figure 2: selecting jobs that follow on from a specified job | Figure 3: selecting jobs that lead up to a specified job |
These are the things that I think we should aim to do next before the end of the year:
We should also look at tightening up some of the usability aspects, like resizing of the window by the user (these are more to do with Tcl/Tk).
These ideas are longer term: