By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,199 Members | 1,209 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,199 IT Pros & Developers. It's quick & easy.

Need startup suggestions for writing a MSA viewer GUI in python

P: n/a
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
Jan 10 '07 #1
Share this Question
Share on Google+
6 Replies


P: n/a
On 1/10/07, Joel Hedlund <jo**********@gmail.comwrote:
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.
Jan 10 '07 #2

P: n/a
hg
Joel Hedlund wrote:
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
Jan 10 '07 #3

P: n/a
On 2007-01-10, hg <hg@nospam.orgwrote:
Joel Hedlund wrote:
>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.
PyQT does come with an impressive plethora of demos.

--
Neil Cerutti
The concert held in Fellowship Hall was a great success. Special thanks are
due to the minister's daughter, who labored the whole evening at the piano,
which as usual fell upon her. --Church Bulletin Blooper
Jan 10 '07 #4

P: n/a
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
Jan 11 '07 #5

P: n/a

Joel Hedlund wrote:
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.

Jan 11 '07 #6

P: n/a
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
Jan 11 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.