Author image Lincoln D. Stein
and 1 contributors


Bio::Das::Segment::Feature - A genomic annotation


  use Bio::Das;

  # contact a DAS server using the "elegans" data source
  my $das      = Bio::Das->new('' => 'elegans');

  # fetch a segment
  my $segment  = $das->segment(-ref=>'CHROMOSOME_I',-start=>10_000,-stop=>20_000);

  # get features from segment
  for my $feature ($segment->features) {
     my $id     = $feature->id;
     my $label  = $feature->label;
     my $type   = $feature->type;
     my $category  = $feature->category;
     my $refseq = $feature->refseq;
     my $reference = $feature->reference;
     my $start  = $feature->start;
     my $stop   = $feature->stop;
     my $score  = $feature->score;
     my $orientation = $feature->orientation;
     my $phase  = $feature->phase;
     my $link   = $feature->link;
     my $group  = $feature->group;
     my @subs   = $feature->sub_seqFeature;


A Bio::Das::Segment::Feature object contains information about a feature on the genome retrieve from a DAS server. Each feature -- also known as an "annotation" -- has a start and end position on the genome relative to a reference sequence, as well as a human-readable label, a feature type, a category, and other information. Some features may have subfeatures. The attributes of a feature are described at


Bio::Das::Segment::Feature objects are created by calling the features() method of a Bio::Das::Segment object created earlier. See Bio::Das::Segment for details.


The following methods provide access to the attributes of a feature. Most are implemented as read/write accessors: calling them without an argument returns the current value of the attribute. Calling the methods with an argument sets the attribute and returns its previous value.

$id = $feature->id([$newid])

Get or set the feature ID. This is an identifier for the feature, unique across the DAS server from which it was retrieved.

$label = $feature->label([$newlabel])

Get or set the label for the feature. This is an optional human-readable label that may be used to display the feature in text form. You may use the ID if label() returns undef.

$type = $feature->type([$newtype])

Get or set the type of the feature. This is a required attribute. The value returned is an object of type Bio::Das::Type, which contains information about the type of the annotation and the method used to derive it.

$segment = $feature->([$newsegment])

Get or set the Bio::Das::Segment from which this feature was derived.

$source = $feature->source

Get the Bio::Das object from which this feature was retrieved. This method is a front end to the associated segment's source() method, and is therefore read-only.

$refseq = $feature->refseq

Get the reference sequence on which this feature's coordinates are based. This method is a front end to the associated segment's refseq() method, and is therefore read-only.

$start = $feature->start([$newstart])

Get or set the starting position of the feature, in refseq coordinates.

$stop = $feature->stop([$newstop])

Get or set the stopping position of the feature, in refseq coordinates.

$isreference = $feature->stop([$newreference])

Get or set the value of the "reference" flag, which is true if the feature can be used as a sequence coordinate landmark.

$method = $feature->method

Return the ID of the method used to derive this feature. This is a front end to the feature type's method() method (redundancy intended) and is therefore read-only.

$category = $feature->category

Return the ID of the category in which this feature calls. This is a front end to the feature type's category() method and is therefore read-only.

$score = $feature->score([$newscore])

Get or set the score of this feature, a floating point number which might mean something in the right context.

$orientation = $feature->orientation([$neworientation])

Get or set the orientation of this feature relative to the genomic reference sequence. This is one of the values +1, 0 or -1.

$phase = $feature->phase([$newphase])

Get or set the phase of the feature (its position relative to a reading frame). The returned value can be 0, 1, 2 or undef if the phase is irrelevant to this feature type.

$group = $feature->group([$newgroup])

Get or set the group ID for the feature. Groups are used to group together logically-related features, such as the exons of a gene model.

$url = $feature->link([$newurl])

Get or set the URL that will return additional information about the feature.

Get or set the label that the DAS server recommends should be used for the link.

$note = $feature->note([$newnote])

Get or set the human-readable note associated with the feature.

$feature->each_tag_value() =item $feature->all_tags() =item $feature->add_tag_value() =item $feature->remove_tag() =item $feature->attributes()

The tag* methods work just like they do in Bio::SeqFeatureI. The attributes() method follows the conventions in Bio::DB::SeqFeature.

$target = $feature->target
($target,$start,$stop) = $feature->target

These three methods get or set the target that is optionally associated with alignments. In a scalar context, target() returns the ID of the target, while in an array context, the method returns a three-element list consisting of the target ID, and the start and end position of the alignment.

You may pass a three-element list to change the target and range.

$target_label = $feature->target_label([$newlabel])

This method returns an optional label assigned to the target.

$description = $feature->description

This method returns a human-readable description of the feature. It returns the value of note(), link_label() or target_label(), in that priority.

@segments = $feature->segments
@segments = $feature->sub_seqFeature

These methods are aliases. Both return an array of sub-parts of the feature in the form of Das::Sequence::Feature objects. Currently (March 2001) this is only implemented for grouped objects of type "similarity" and for transcripts (the union of introns and exons in a group).

Bio::SeqFeatureI METHODS

In addition to the methods listed above, Bio::Das::Segment::Feature implements all the methods required for the Bio::SeqFeatureI class.


 Title   : get_SeqFeatures
 Usage   : @feat = $feature->get_SeqFeatures([$method])
 Function: get subfeatures
 Returns : a list of Bio::DB::GFF::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.


 Title   : add_subfeature
 Usage   : $feature->add_subfeature($feature)
 Function: add a subfeature to the feature
 Returns : nothing
 Args    : a Bio::DB::GFF::Feature object
 Status  : Public

This method adds a new subfeature to the object. It is used internally by aggregators, but is available for public use as well.


 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.


 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().


 Title   : compound
 Usage   : $flag = $f->compound([$newflag])
 Function: get or set the compound flag
 Returns : a boolean
 Args    : a new flag (optional)
 Status  : Public

This method gets or sets a flag indicated that the feature is not a primary one from the DAS server, but the result of aggregation.


When used in a string context, Bio::Das::Segment::Feature objects invoke the toString() method. This returns the value of the feature's label, or invokes the inherited Bio::Das::Segment->toString() method if no label is available.


Lincoln Stein <>.

Copyright (c) 2001 Cold Spring Harbor Laboratory

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See DISCLAIMER.txt for disclaimers of warranty.


Bio::Das, Bio::Das::Type, Bio::Das::Segment, Bio::Das::Transcript, Bio::Das::Segment::GappedAlignment, Bio::RangeI

1 POD Error

The following errors were encountered while parsing the POD:

Around line 709:

You forgot a '=back' before '=head2'