Class Bio::GFF::GFF3
In: lib/bio/db/gff.rb
Parent: GFF

DESCRIPTION

Represents version 3 of GFF specification. For more information on version GFF3, see song.sourceforge.net/gff3.shtml

Methods

new   parse   to_s  

Included Modules

Escape

Classes and Modules

Module Bio::GFF::GFF3::Escape
Class Bio::GFF::GFF3::Record
Class Bio::GFF::GFF3::RecordBoundary
Class Bio::GFF::GFF3::SequenceRegion

Constants

VERSION = 3
MetaData = GFF2::MetaData   stores GFF3 MetaData

Attributes

gff_version  [R]  GFF3 version string (String or nil). nil means "3".
metadata  [RW]  Metadata (except "#sequence-region", "#gff-version", "###"). Must be an array of Bio::GFF::GFF3::MetaData objects.
sequence_regions  [RW]  Metadata of "#sequence-region". Must be an array of Bio::GFF::GFF3::SequenceRegion objects.
sequences  [RW]  Sequences bundled within GFF3. Must be an array of Bio::Sequence objects.

Public Class methods

Creates a Bio::GFF::GFF3 object by building a collection of Bio::GFF::GFF3::Record (and metadata) objects.


Arguments:

  • str: string in GFF format
Returns:Bio::GFF object

[Source]

     # File lib/bio/db/gff.rb, line 874
874:       def initialize(str = nil)
875:         @gff_version = nil
876:         @records = []
877:         @sequence_regions = []
878:         @metadata = []
879:         @sequences = []
880:         @in_fasta = false
881:         parse(str) if str
882:       end

Public Instance methods

Parses a GFF3 entries, and concatenated the parsed data.

Note that after "#FASTA" line is given, only fasta-formatted text is accepted.


Arguments:

  • str: string in GFF format
Returns:self

[Source]

     # File lib/bio/db/gff.rb, line 908
908:       def parse(str)
909:         # if already after the ##FASTA line, parses fasta format and return
910:         if @in_fasta then
911:           parse_fasta(str)
912:           return self
913:         end
914: 
915:         if str.respond_to?(:gets) then
916:           # str is a IO-like object
917:           fst = nil
918:         else
919:           # str is a String
920:           gff, sep, fst = str.split(/^(\>|##FASTA.*)/n, 2)
921:           fst = sep + fst if sep == '>' and fst
922:           str = gff
923:         end
924: 
925:         # parses GFF lines
926:         str.each_line do |line|
927:           if /^\#\#([^\s]+)/ =~ line then
928:             parse_metadata($1, line)
929:             parse_fasta(str) if @in_fasta
930:           elsif /^\>/ =~ line then
931:             @in_fasta = true
932:             parse_fasta(str, line)
933:           else
934:             @records << GFF3::Record.new(line)
935:           end
936:         end
937: 
938:         # parses fasta format when str is a String and fasta data exists
939:         if fst then
940:           @in_fasta = true
941:           parse_fasta(fst)
942:         end
943: 
944:         self
945:       end

string representation of whole entry.

[Source]

     # File lib/bio/db/gff.rb, line 963
963:       def to_s
964:         ver = @gff_version || VERSION.to_s
965:         if @sequences.size > 0 then
966:           seqs = "##FASTA\n" +
967:             @sequences.collect { |s| s.to_fasta(s.entry_id, 70) }.join('')
968:         else
969:           seqs = ''
970:         end
971: 
972:         ([ "##gff-version #{escape(ver)}\n" ] +
973:          @metadata.collect { |m| m.to_s } +
974:          @sequence_regions.collect { |m| m.to_s } +
975:          @records.collect{ |r| r.to_s }).join('') + seqs
976:       end

[Validate]