Need startup suggestions for writing a MSA viewer GUI in python

Joel Hedlund joel.hedlund at gmail.com
Wed Jan 10 10:01:06 EST 2007


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



More information about the Python-list mailing list