[Biojava-l] FramedFeature interface

Matthew Pocock mrp@sanger.ac.uk
Thu, 13 Sep 2001 14:58:33 +0100


Schreiber, Mark wrote:

 > Hi -
 >
 > Below is a work up for a possible FramedFeature interface
 >
 > Any comments?



Hi Mark,

This is my take on the issues. Don't let me stop you from writing code 
and trying things out. After all, I rarely use frame information. I may 
be missing the point somewhere along the line.

I'm fairly convinced that the strand and reading-frame of an exon are 
orthogonal properties, and should not be co-encoded with something like 
+/- [0..2]. My nose tells me that the reading frame is actualy a 
propperty of the alignment between a transcript and a protein. This 
property is then passed though several co-ordinate transforms to project 
it down onto the genome, by which time it has become this hideous number 
that is differently defined by almost every standard known to man. Of 
course, we may be attempting to infer the protein, or the exact extent 
of the exon which makes all of this more muddy than necisary. Classical 
frames are very brital to simple edits like moving the start or end of 
an exon. Three of the options I see are as follows:

1) Frame can be added to it's own interface (re FramedFeature)
   + we can just slot it in
   - we will need a clear definition of how to interpret this frame
   - it may not play well for multiple-inheritance with things like exon

2) Frame can be added to the features that appear to need it e.g. Exon
   + minimal change to APIs
   - if Frame is applicable to several different types, we can't
     easily re-use the frame concept

3) Frame is moved into the HomologyFeature interface as an indication
    of how the alignment between the different sequences (e.g. DNA vs
    Protein) can be re-constructed.
   + more robust to minor co-ordinate changes e.g. moving the start of
     an exon
   + appears to model the information more cleanly
   + can be generalised to other features with intrinsic frames, not
     necisarily in the range 0-2 e.g. micro-satelite repeats
   - a break with tradition
   - the API must be explained realy clearly

Does any of this tally with other peoples thoughts?

M