The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DAS::GUS::Segment::Feature -- a relative segment identified by a feature type

SYNOPSIS

See DAS::GUS.

DESCRIPTION

DAS::GUS::Segment::Feature is a stretch of sequence that corresponding to a single annotation in a GUS database.

It inherits from Bio::SeqFeatureI and so has the familiar start(), stop(), primary_tag() and location() methods (it implements Bio::LocationI too)

API

The remainder of this document describes the public and private methods implemented by this module.

AUTHOR

Name: Haiming Wang Email: hwang@uga.edu

new

        Title   : new
        Usage   : $f = DAS::GUS::Segment::Feature->new(@args);
        Function: create a new feature object
        Returns : new DAS::GUS::Segment::Feature object
        Args    : see below
        Status  : Internal

This method is called by DAS::GUS::Segment to create a new feature using information obtained from the GUS database.

The 12 arguments are positional:

        $factory        a DAS::GUS adaptor object
        $parent         the parent feature object (if it exists)
        $srcseq         the source sequence
        $start          start of this feature
        $stop           stop of this feature
        $type           this feature's type (gene, arm, exon, etc)
        $score          the feature's score
        $strand         this feature's strand (relative to the source sequence,
                                which has its own strandness!)
        $phase          this feature's phase (often with respect to the previous
                                feature in a group of related features)
        $group          this feature's group information ??
        $atts           feature's attributes in $tag=$value format, use ? as delimiter
        $uniquename this feature's internal unique database name ??
        $feature_id     the feature's feature_id

This is called when creating a feature from scratch. It does not have an inherited coordinate system.

feature_id

        Title   : feature_id
        Usage   : $obj->feature_id($newval)
        Function: holds feature_id
        Returns : value of feature_id (a scalar)
        Args    : on set, new value (a scalar or undef, optional)

group

        Title   : group
        Usage   : $group = $f->group([$new_group]);
        Function: Returns a feature name -- this is here to maintain backward
                          compatibility with GFF and gbrowse.
        Returns : value of group (a scalar)
        Args    : 

srcfeature_id

        Title   : srcfeature_id
        Usage   : $obj->srcfeature_id($newval)
        Function:
        Returns : value of srcfeature_id (a scalar)
        Args    :

strand

        Title   : strand
        Usage   : $obj->strand()
        Function: Returns the strand of the feature. Unlike the other methods,
                          the strand cannont be changed once the object is 
                          createed (due to coordinate considerations).
        Returns : -1, 0 or 1 ???
        Args    :

SeqFeatureI methods

DAS::GUS::Segment::Feature implements the Bio::SeqFeatureI interface. Methods described below, Bio::SeqFeatureI for more details.

attach_seq()

        Title   : attach_seq
        Usage   : $sf->attch_seq($seq)
        Function: Attaches a Bio::Seq object to this feature. This Bio::Seq
                          object is for the *entire* sequence: ie from 1 to 10000
        Returns : TURE on success
        Args    : a Bio::PrimarySeqI compliant object

display_name()

        Title   : display_name
        Function: aliased to uniquename() for Bio::SeqFeatureI compatibility

entire_seq()

        Title   : entire_seq
        Usage   : $whole_seq = $sf->entire_seq()
        Function: gives the entire sequence that this seqfeature is attached to
        Returns : a Bio::PrimarySeqI compliant object, or undef is there is no
                          sequence attached
        Args    : none

get_all_tags()

        Title   : get_all_tags
        Function: aliased to all_tags() for Bio::SeqFeatureI compatibility

get_SeqFeatures()

        Title   : get_SeqFeatures
        Function: aliased to sub_SeqFeature() for Bio::SeqFeatureI compatibility

get_tag_values()

        Title   : get_tag_values
        Usage   :
        Function:
        Returns :
        Args    :

get_tagset_values()

        Title   : get_tagset_values
        Usage   :
        Function:
        Returns :
        Args    :

gff_string()

        Title   : gff_string
        Usage   : $string = $feature->gff_string
        Function: return GFF3 representation of feature
        Returns : a string
        Args    : none
        Status  : Public

has_tag()

        Title   : has_tag
        Usage   :
        Function:
        Returns :
        Args    :

primary_tag()

        Title   : primary_tag
        Usage   :
        Function: aliased to type() for Bio::SeqFeatureI compatibility
        Returns :
        Args    :

seq_id()

        Title   : seq_id
        Usage   : $obj->seq_id($newval)
        Function:
        Returns : value of seq_id (a scalar)
        Args    :

source_tag()

        Title   : source_tag
        Usage   :
        Function: aliased to source() for Bio::SeqFeatureI compatibility
        Returns :
        Args    :

other get/setters

abs_strand()

        Title   : abs_strand
        Usage   : $obj->abs_strand($newval)
        Function: aliased to strand() for backward compatibility
        Returns :
        Args    :

class()

        Title   : class 
        Usage   :
        Function: aliased to type() for backward compatibility
        Returns :
        Args    :

db_id()

        Title   : db_id
        Usage   :
        Function: aliased to uniquename() for backward compatibility
        Returns :
        Args    :

factory()

        Title   : factory
        Usage   : $obj->factory($newval)
        Function: 
        Returns : value of factory (a scalar)
        Args    :

id()

        Title   : id
        Usage   :
        Function:
        Returns :
        Args    :

info()

        Title   : info
        Usage   :
        Function:
        Returns :
        Args    :

length()

        Title   : length
        Usage   : $obj->length()
        Function: convenience for end - start + 1
        Returns : length of feature in basepairs
        Args    : none

method()

        Title   : method
        Usage   :
        Function:
        Returns :
        Args    :

name

        Title   : name
        Usage   :
        Function:
        Returns :
        Args    :

parent()

        Title   : parent
        Usage   : $obj->parent($newval)
        Function:
        Returns :
        Args    :

score()

        Title   : score
        Usage   : $obj->score($newval)
        Function:
        Returns :
        Args    :

Other methods

all_tags()

        Title   : all_tags
        Usage   :
        Function:
        Returns :
        Args    :

source()

        Title   : source
        Usage   : $source = $f->source([$newsource])
        Function: get or set the feature source
        Returns : a string
        Args    : a new source (optional)
        Status  : Public

segments()

        Title   : segments
        Function: aliased to sub_SeqFeature() for compatibility

subfeatures

        Title   : subfeatures
        Usage   : $obj->subfeatures($newval)
        Function: returns a list of subfeatures
        Returns : value of subfeatures (a scalar)

sub_SeqFeature()

        Title   : sub_SeqFeature
        Usage   : @feat = $feature->sub_SeqFeature([$type])
        Function: get subfeatures
        Returns : a list of DAS::GUS::Segment::Feature objects
        Args    : a feature method (optional)
        Status  : Public

This method returns a list of any subfeatures that belong to the main feature. For those features that contain heterogeneous subfeatures, you can retrieve a subset of the subfeatures by providing a method name to filter on.

This method may also be called as segments() or get_SeqFeatures().

add_subfeature()

        Title   : add_subfeature
        Usage   : $feature->add_subfeature($feature)
        Function: This method adds a new subfeature to the object.
                          It is used internally by aggreagators, but is
                          available for public use as well.
        Returns : nothing
        Args    : a DAS::GUS::Segment::Feature object
        Status  : Public

location()

        Title   : location
        Usage   : my $location = $seqfeature->location()
        Function: returns a location object suitable for identifying location
                          of feature on sequence or parent feature
        Returns : Bio::LocationI object
        Args    : none

clone()

        Title   : clone
        Usage   : $feature = $f->clone
        Function: make a copy of the feature
                          This method returns a copy of the feature.
        Returns : a new DAS::GUS::Segment::Feature object
        Args    : none
        Status  : Public

sub_types()

        Title   : sub_types
        Usage   : @methods = $feature->sub_types
        Function: get methods of all sub_seqfeatures
        Returns : a list of method name
        Args    : none
        Status  : Public

For those features that contain subfeatures, this method will return a unique list of method names of thoese subfeatures, suitable for use with sub_SeqFeature()

Autogenerated Methods

        Title   : AUTOLOAD
        Usage   : @subfeat = $feature->Method
        Function: Return subfeatures using autogenerated methods
        Returns : a list of DAS::GUS::Segment::Feature objects
        Args    : none
        Status  : Public

Any method that begins with an initial capital letter will be passed to AUTOLOAD and treated as a call to sub_SeqFeature with the method name used as the method argument. For instance, this call:

        @exons = $feature->Exon;

is equivalent to this call:

        @exons = $feature->sub_SeqFeature('exon');

adjust_bounds()

 Title   : adjust_bounds
 Usage   : $feature->adjust_bounds
 Function: adjust the bounds of a feature
 Returns : ($start,$stop,$strand)
 Args    : none
 Status  : Public

This method adjusts the boundaries of the feature to enclose all its subfeatures. It returns the new start, stop and strand of the enclosing feature.

sort_features()

 Title   : sort_features
 Usage   : $feature->sort_features
 Function: sort features
 Returns : nothing
 Args    : none
 Status  : Public

This method sorts subfeatures in ascending order by their start position. For reverse strand features, it sorts subfeatures in descending order. After this is called sub_SeqFeature will return the features in order.

This method is called internally by merged_segments().

asString()

 Title   : asString
 Usage   : $string = $feature->asString
 Function: return human-readabled representation of feature
 Returns : a string
 Args    : none
 Status  : Public

This method returns a human-readable representation of the feature and is called by the overloaded "" operator.

attributes

  Title   : attributes
  Usage   : @attributes = $feature->attributes($name)
  Function: get the "attributes" on a particular feature
  Returns : an array of string
  Args    : feature ID
  Status  : Public

Two attributes have special meaning: "Note" is for backward compatibility and is used for unstructured text remarks. "Alias" is considered as a synonym for the feature name.

  @gene_names = $feature->attributes('Gene');
  @aliases    = $feature->attributes('Alias');

If no name is provided, then attributes() returns a flattened hash, of attributes=>value pairs. This lets you do:

  %attributes = $db->attributes;

notes

 Title   : notes
 Usage   : @notes = $feature->notes
 Function: get the "notes" on a particular feature
 Returns : an array of string
 Args    : feature ID
 Status  : Public

aliases

 Title   : aliases
 Usage   : @aliases = $feature->aliaes
 Function: get the "aliases" on a particular feature
 Returns : an array of string
 Args    : feature ID
 Status  : Public

This method will return a list of attributes of type 'Alias'.