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

new(str = nil)

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

parse(str)

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

to_s()

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]