H
hg
Joel said:Hi!
I've been thinking about writing a good multiple sequence alignment
(MSA) viewer in python. Sort of like ClustalX, only with better zoom and
pan tools. I've been using python in my work for a couple of years, but
this is my first shot at making a GUI so I'd very much appreciate some
ideas from you people to get me going in the right direction. Despite my
GUI n00b-ness I need to get it good and usable with an intuitive look
and feel.
What do you think I should do? What packages should I use?
For you non-bioinformatic guys out there, an MSA is basically a big
matrix (~1000 cols x ~100 rows) of letters, where each row represents a
biological sequence (gene, protein, etc...). Each sequence has an ID
that is usually shorter than 40 characters (typically, 8-12). Usually,
msa visualizers color the letters and their backgrouds according to
chemical properties.
I want the look and feel to be pretty much like a modern midi sequencer
(like cubase, nuendo, reason etc...). This means the GUI should have
least three panes; one to the left to hold the IDs, one in the bottom to
hold graphs and plots (e.g: user configurable tracks), and the main one
that holds the actual MSA and occupies most of the space. The left and
bottom panes should be resizable and foldable.
I would like to be able to zoom and pan x and y axes independently to
view different portions of the MSA, and the left and bottom panes should
follow the main pane. I would also like to be able to use drag'n'drop on
IDs for reordering sequences, and possibly also on the MSA itself to
shift sequences left and right. Furthermore, I would like to be able to
select sequences and positions (individually, in ranges or sparsely). I
would like to have a context sensitive menu on the right mouse button,
possibly with submenus. Finally, I'd like to be able to export printable
figures (eps?) of regions and whole MSAs.
I'm thinking all three panes may have to be rendered using some sort of
scalable graphics because of the coloring and since I'd like to be able
to zoom freely. I'll also need to draw graphs and plots for the tracks.
Is pygame good for this, or is there a better way of doing it?
I want my viewer to behave and look like any other program, so I'm
thinking maybe I should use some standard GUI toolkit instead, say PyQT
or PyGTK? Would they still allow me to render the MSA nicely?
Does this seem like a humongous project?
Thanks for taking the time!
/Joel Hedlund
I do not know if PyGtk and PyQT have demos, but wxPython does and includes
PyPlot: an easy way to look at the basic features.
hg