Need startup suggestions for writing a MSA viewer GUI in python

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
 
J

Joel Hedlund

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
 
C

Chris Mellon

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

This will probably be a major, but not humongous project. wxPython,
pyGTk, and pyQt all have the architecture and basics you'll need, it
will probably be about the same amount of work to create in all of
them. Pick the one that best suites your licensing and platform needs.
 
N

Neil Cerutti

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.

PyQT does come with an impressive plethora of demos.
 
J

Joel Hedlund

This will probably be a major, but not humongous project. wxPython,
pyGTk, and pyQt all have the architecture and basics you'll need, it
will probably be about the same amount of work to create in all of
them. Pick the one that best suites your licensing and platform needs.

Thanks for the suggestions. Now I'll start my reading up.

Cheers!
/Joel
 
I

Istvan Albert

Joel said:
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.

UI design requires a different skillset than programming. It can be a
very frustrating and thankless task as well. It is incomparably easier
to see the flaws in existing interfaces than correcting them (or even
creating the said interface). Make sure to start with something simple,
and learn that way.

I would also recommend that you implement something novel, there are
many existing MSA viewers and it won't be easy to improve on them. Do
something that adds new value and people will be willing to expend
effort to use it.

i.
 
J

Joel Hedlund

UI design requires a different skillset than programming. It can be a
very frustrating and thankless task as well. It is incomparably easier
to see the flaws in existing interfaces than correcting them (or even
creating the said interface). Make sure to start with something simple,
and learn that way.

I would also recommend that you implement something novel, there are
many existing MSA viewers and it won't be easy to improve on them. Do
something that adds new value and people will be willing to expend
effort to use it.

That's true for any software. And for any aspect of life, come to think
about it.

/Joel
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,040
Latest member
papereejit

Latest Threads

Top