[Bioperl-l] Re: problems with Bio::Tools::GFF
Jason Stajich
jason at cgt.duhs.duke.edu
Mon Nov 3 15:47:13 EST 2003
On Mon, 3 Nov 2003, Scott Cain wrote:
> On Mon, 2003-11-03 at 14:13, Jason Stajich wrote:
> > Feel free to fix it to spec Scott.
>
> Will do--I mentioned it because I am always concerned that I am
> misinterpreting the spec; if I codify my misinterpretations, that would
> kind of shoot the idea of standard out the window.
Well given that I just found the published spec online
http://song.sourceforge.net/gff3.shtml
I had been basing things off of Lincoln's earlier emails so I really
didn't pay much attention to all of that.
I am a bit wary of splitting on space wrt the last column but so we'll
have to cook up some test cases to make sure it goes through okay.
> >
> > Note that I have also made no attempt to parse/write the Gap or Alignment
> > stuff in any sort of special way - I basically made it so it supports what
> > GFF2 currently looks like only in GFF3 flavor. Perhaps it makes sense to
> > do all of that work on Chris's Unflattner though rather than in
> > Tools::GFF. A SeqFeature::Tools::Flattner is probably in order as well to
> > turn HSPs and other paired sequences into GFF3 Alignments.
>
> I'm not sure it's necessary to move to Unflattener. Since the format is
> fairly simple, it is only really necessary to split the information in
> the groups column to tag value pairs and let the user decide what to do
> with the information. The only thing that I am somewhat at a loss to
> deal with is cigar line info, but I don't think that is being parse by
> Bio::DB::GFF yet either.
One day I could imagine us building Gene/Transcript objects from the GFF3.
Actually I was thinking we'd need a Flattner to turn the Gene object back
into flattened features. Likewise with HSP objects and alignments. I
can't produce CIGAR lines currently from HSPs - I'm still a little
confused about how to construct them but it means I need to read the spec
a little more probably.
> >
> > As for the seq stuff - will likely need a Bio::SeqIO::gff3 for that.
> >
> Ouch--I was afraid you were going to suggest that. I suppose if we make
> it a read-only module, I guess that should be ok. The thought of making
> it write makes my head hurt.
For writing multiple sequences, could be pretty ugly. Either some
caching OR a special write_seq which takes an arrayref. Maybe not a SeqIO
after all.... unless GFF3 lets a new set start with
# gff-version 3
so you could interleave them?
# gff-version 3
...
##FASTA
>oneseq.1
CAGT
# gff-version 3
...
## FASTA
>oneseq.2
GATC
For reading sequences next_seq will have to parse in the entire GFF file
at once and next_seq will have to iterate through an internal array I
guess. Not that hard I hope...
>
> > Anyone is welcome to add these changes - I don't think I'll be able to
> > make many contributions until December so it would be best if someone else
> > took it on.
> >
> > -jason
> >
> > On Mon, 3 Nov 2003, Scott Cain wrote:
> >
> > > Hi Jason and Lincoln,
> > >
> > > I have a few concerns with Bio::Tools::GFF. The first is with the method
> > > _from_gff3_string, which does a split on \t to separate columns. I
> > > think the GFF3 spec says it can be space delimited, so that should
> > > probably be \s+. Additionally, to split the groups column, it uses
> > > \s*;\s*, but I think that spaces have to be escaped, therefore, it
> > > should only split on ; and spaces would indicate a problem (especially
> > > if one splits on spaces as indicated above).
> > >
> > > Finally, it doesn't provide a method of accessing the sequence that is
> > > optionally at the bottom of the file. I am not exactly sure how to
> > > implement that (or I would), but I suspect it will have to be handled in
> > > the next_feature method. Of course, the problem with handling it there
> > > is that it is not a feature.
> > >
> > > Scott
> > >
> > >
> >
> > --
> > Jason Stajich
> > Duke University
> > jason at cgt.mc.duke.edu
>
--
Jason Stajich
Duke University
jason at cgt.mc.duke.edu
More information about the Bioperl-l
mailing list