Bio::EnsEMBL FeaturePair
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::FeaturePair - Stores sequence Features which are
themselves hits to other sequence features.
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::Feature
Bio::EnsEMBL::Utils::Argument qw ( rearrange )
Bio::EnsEMBL::Utils::Exception qw ( throw deprecate warning )
Inherit
Bio::EnsEMBL::Feature
Synopsis
    my $feat = Bio::EnsEMBL::FeaturePair->new(
-start => 132_231,
-end => 132_321,
-strand => -1,
-slice => $slice,
-hstart => 10,
-hend => 100,
-hstrand => 1,
-score => 100,
-percent_id => 92.0,
-hseqname => 'ALUSX10.1',
-analysis => $analysis
);
my $hit_start = $feat->hstart(); my $hit_end = $feat->hend(); my $hit_strand = $feat->hstrand(); my $analysis = $feat->analysis();
Description
A sequence feature object where the feature is itself a feature on
another sequence - e.g. a blast hit where residues 1-40 of a protein
sequence SW:HBA_HUMAN has hit to bases 100 - 220 on a genomic sequence
HS120G22. The genomic sequence coordinates are represented by the
start, end, strand attributes while the protein (hit) coordinates are
represented by the hstart, hend, hstrand attributes.
  $clone = $slice_adpator->fetch_by_region( 'clone', 'HS120G22' );
$fp = Bio::EnsEMBL::FeaturePair( -start => 100, -end => 220, -strand => 1, -slice => $clone, -hstart => 1, -hend => 40, -hstrand => 1, -percent_id => 92.0, -score => 100, -hseqname => 'SW:HBA_HUMAN', -species => 'Homo sapiens', -hspecies => 'Homo sapiens' );
Methods
coverageDescriptionCode
db_display_nameDescriptionCode
db_name
No description
Code
display_idDescriptionCode
external_db_idDescriptionCode
extra_data
No description
Code
feature1DescriptionCode
feature2DescriptionCode
gffstringDescriptionCode
group_idDescriptionCode
hcoverageDescriptionCode
hendDescriptionCode
hend_phaseDescriptionCode
hphaseDescriptionCode
hseq_region_endDescriptionCode
hseq_region_nameDescriptionCode
hseq_region_startDescriptionCode
hseq_region_strandDescriptionCode
hseqnameDescriptionCode
hsliceDescriptionCode
hspeciesDescriptionCode
hstartDescriptionCode
hstrandDescriptionCode
identical_matchesDescriptionCode
invertDescriptionCode
level_idDescriptionCode
newDescriptionCode
p_valueDescriptionCode
percent_idDescriptionCode
positive_matchesDescriptionCode
scoreDescriptionCode
set_featurepair_fieldsDescriptionCode
speciesDescriptionCode
type
No description
Code
validateDescriptionCode
validate_prot_featureDescriptionCode
Methods description
coveragecode    nextTop
  Arg [1]    : number (percentage) $coverage (optional)
Example : $cov = $fp->coverage();
Description: Getter/Setter for the % of the query covered by the feature
Returntype : string
Exceptions : none
Caller : general
Status : Stable
db_display_namecodeprevnextTop
  Arg [1]    : string  $db_display_name (optional)
Example : $ex_db_display_name = $fp->db_display_name();
Description: Getter/Setter for the db_display_name attribute
The preferred display name for the external database.
Returntype : string
Exceptions : none
Caller : general
Status : At Risk
display_idcodeprevnextTop
  Arg [1]    : none
Example : print $fp->display_id();
Description: This method returns a string that is considered to be
the 'display' identifier. For feature pairs this is the
hseqname if it is available otherwise it is an empty string.
Returntype : string
Exceptions : none
Caller : web drawing code
Status : Stable
external_db_idcodeprevnextTop
  Arg [1]    : int  $external_db_id (optional)
Example : $ex_db = $fp->external_db_id();
Description: Getter/Setter for the external_db_id taregt source database feature
Returntype : string
Exceptions : none
Caller : general
Status : At Risk
feature1codeprevnextTop
  Description: DEPRECATED use start(), end(), strand(), slice(), etc.
methods instead
feature2codeprevnextTop
  Description: DEPRECATED use hstart(), hend(), hstrand() etc.
methods instead
gffstringcodeprevnextTop
  Description: DEPRECATED do not use
group_idcodeprevnextTop
 
Arg [1] : int $group_id
Example : none
Description: get/set for attribute group_id
Returntype : int
Exceptions : none
Caller : general
Status : Stable
hcoveragecodeprevnextTop
  Arg [1]    : number (percentage) $hcoverage (optional)
Example : $hcov = $fp->hcoverage();
Description: Getter/Setter for the % of the target covered by the feature
Returntype : string
Exceptions : none
Caller : general
Status : Stable
hendcodeprevnextTop
  Arg [1]    : string $hend (optional)
Example : $hend = $fp->hend();
Description: Getter/Setter for the end coordinate on the hit sequence
Returntype : int
Exceptions : none
Caller : general
Status : Stable
hend_phasecodeprevnextTop
  Description: DEPRECATED do not use
hphasecodeprevnextTop
  Description: DEPRECATED do not use
hseq_region_endcodeprevnextTop
  Arg [1]    : none
Example : print $feature->hseq_region_end();
Description: Convenience method which returns the absolute end of this
feature on the hseq_region, as opposed to the relative (hslice)
position.
Returns undef if this feature is not on a hslice. Returntype : int or undef Exceptions : none Caller : general Status : Stable
hseq_region_namecodeprevnextTop
  Arg [1]    : none
Example : print $feature->hseq_region_name();
Description: Gets the name of the hseq_region which this feature is on.
Returns undef if this Feature is not on a hslice.
Returntype : string or undef
Exceptions : none
Caller : general
Status : Stable
hseq_region_startcodeprevnextTop
  Arg [1]    : none
Example : print $feature->hseq_region_start();
Description: Convenience method which returns the absolute start of this
feature on the hseq_region, as opposed to the relative (hslice)
position.
Returns undef if this feature is not on a hslice. Returntype : int or undef Exceptions : none Caller : general Status : Stable
hseq_region_strandcodeprevnextTop
  Arg [1]    : none
Example : print $feature->hseq_region_strand();
Description: Returns the strand of the hseq_region which this feature is on
(i.e. feature_strand * slice_strand)
Returns undef if this Feature is not on a hslice.
Returntype : 1,0,-1 or undef
Exceptions : none
Caller : general
Status : Stable
hseqnamecodeprevnextTop
  Arg [1]    : string $hseqname (optional)
Example : $hseqname = $fp->hseqname();
Description: Getter/Setter for the name of the hit sequence
Returntype : string
Exceptions : none
Caller : general
Status : Stable
hslicecodeprevnextTop
  Arg [1]    : (optional) Bio::EnsEMBL::Slice $slice
Example : $hseqname = $featurepair->hslice()->seq_region_name();
Description: Getter/Setter for the Slice that is associated with this
hit feature. The slice represents the underlying sequence that this
feature is on. Note that this method call is analagous to the
old SeqFeature methods contig(), entire_seq(), attach_seq(),
etc.
Returntype : Bio::EnsEMBL::Slice
Exceptions : thrown if an invalid argument is passed
Caller : general
Status : Stable
hspeciescodeprevnextTop
 Arg [1]    : string $genus_species_name (optional)
e.g. Homo_sapiens or Mus_musculus
Example : $hspecies = $fp->hspecies
Description: get/set on the species of feature2
Returntype : string
Execeptions: none
Caller : general
Status : Stable
hstartcodeprevnextTop
  Arg [1]    : string $hstart (optional)
Example : $hstart = $fp->hstart();
Description: Getter/Setter for the start coordinate on the hit sequence
Returntype : int
Exceptions : none
Caller : general
Status : Stable
hstrandcodeprevnextTop
  Arg [1]    : int $hstrand (optional)
Example : $hstrand = $fp->hstrand
Description: Getter/Setter for the orientation of the hit on the hit sequence
Returntype : 0,1,-1
Exceptions : thrown
Caller : general
Status : Stable
identical_matchescodeprevnextTop
 Arg [1]    : int $identical_matches (optional)
Example :
Description: get/set on the number of identical matches
Returntype : int
Execeptions: none
Caller : general
Status : Stable
invertcodeprevnextTop
  Arg [1]    : (optional) Bio::EnsEMBL::Slice $newslice
Example : $feature->invert();
Description: This method is used to swap the hit and query sides of this
feature in place. A new slice may optionally provided which
this feature will be placed on. If no slice is provided the
feature slice will be set to undef.
Returntype : none
Exceptions : none
Caller : pipeline (BlastMiniGenewise)
level_idcodeprevnextTop
 
Arg [1] : int $level_id
Example : none
Description: get/set for attribute level_id
Returntype : int
Exceptions : none
Caller : general
Status : Stable
newcodeprevnextTop
  Arg [HSTART]    : int - The start of the hit region (optional)
Arg [HEND] : int - The end of the hit region (optional)
Arg [HSTRAND] : (0,1,-1) - The strand of the hit region (optional)
Arg [PERCENT_ID]: float - The precentage identity of the hit (optional)
Arg [SCORE] : float - The score of the hit (optional)
Arg [HSEQNAME] : string - The name of the hit sequence (optional)
Arg [P_VALUE] : float - The pvalue or evalue (optional)
Arg [SPECIES] : string - The species the query sequence is from (optional)
Arg [HSPECIES] : string - The species the hit sequence is from (optional)
Arg [COVERAGE] : string - The % of the query that this feature pair covers
Arg [HCOVERAGE] : string - The % of the target this this feature pair covers
Arg [...] : Named superclass constructor args (Bio::EnsEMBL::Feature)
Example : $feat = Bio::EnsEMBL::FeaturePair->new(-start => 132_231,
-end => 132_321,
-strand => -1,
-slice => $slice,
-hstart => 10,
-hend => 100,
-hstrand => 1,
-score => 100,
-percent_id => 92.0,
-hseqname => 'ALUSX10.1',
-analysis => $analysis);
Description: Creates a new Bio::EnsEMBL::FeaturePair object
Returntype : Bio::EnsEMBL::FeaturePair
Exceptions : throw if start > end
throw if invalid strand is provided
Caller : general
Status : Stable
p_valuecodeprevnextTop
  Arg [1]    : float $p_value (optional)
Example : $eval = $fp->p_value
Description: Getter Setter for the evalue / pvalue of this feature
Returntype : float
Exceptions : none
Caller : general
Status : Stable
percent_idcodeprevnextTop
  Arg [1]    : float $percent_id (optional)
Example : $percent_id = $fp->percent_id();
Description: Getter/Setter for the percentage identity of this feature pair
Returntype : float
Exceptions : none
Caller : general
Status : Stable
positive_matchescodeprevnextTop
 Arg [1]    : int $positive_matches (optional)
Example :
Description: get/set on the number of positive matches
Returntype : int
Execeptions: none
Caller : general
Status : Stable
scorecodeprevnextTop
  Arg [1]    : float $score (optional)
Example : $score = $fp->score();
Description: Getter/Setter for the score of this feature pair
Returntype : float
Exceptions : none
Caller : general
Status : Stable
set_featurepair_fieldscodeprevnextTop
  Description: DEPRECATED do not use
speciescodeprevnextTop
 Arg [1]    : string $genus_species_name (optional)
e.g. Homo_sapiens or Mus_musculus
Example : $species = $fp->species();
Description: get/set on the species of feature1
Returntype : string
Execeptions: none
Caller : general
Status : Stable
validatecodeprevnextTop
  Description: DEPRECATED do not use
validate_prot_featurecodeprevnextTop
  Description: DEPRECATED do not use
Methods code
coveragedescriptionprevnextTop
sub coverage {
  my $self = shift;
  $self->{'coverage'} = shift if(@_);
  return $self->{'coverage'};
}
db_display_namedescriptionprevnextTop
sub db_display_name {
  my $self = shift;
  $self->{'db_display_name'} = shift if(@_);
  return $self->{'db_display_name'};
}
db_namedescriptionprevnextTop
sub db_name {
  my $self = shift;
  $self->{'dbname'} = shift if(@_);
  return $self->{'dbname'};
}
display_iddescriptionprevnextTop
sub display_id {
  my $self = shift;
  return $self->{'hseqname'} || '';
}
external_db_iddescriptionprevnextTop
sub external_db_id {
  my $self = shift;
  $self->{'external_db_id'} = shift if(@_);
  return $self->{'external_db_id'};
}
extra_datadescriptionprevnextTop
sub extra_data {
  my $self = shift;
  $self->{'extra_data'} = shift if(@_);
  return $self->{'extra_data'};
}
feature1descriptionprevnextTop
sub feature1 {
  my ($self,$arg) = @_;

  deprecate('Use start(), end(), strand(), slice(), etc. methods instead.');

  if($arg) {
    $self->start($arg->start());
    $self->end($arg->end());
    $self->strand($arg->strand());
    $self->score($arg->score());
    $self->percent_id($arg->percent_id());
    $self->analysis($arg->analysis);
    if($arg->contig){
      $self->slice($arg->contig);
    }
  }

  return $self;
}
feature2descriptionprevnextTop
sub feature2 {
  my ($self,$arg) = @_;

  deprecate('Use hstart(),hend(),hstrand(),hseqname() methods instead.');

  if (defined($arg)) {
    $self->hstart($arg->start());
    $self->hend($arg->end());
    $self->hstrand($arg->strand());
    $self->hseqname($arg->seqname());
    return $arg;
  }

  return new Bio::EnsEMBL::Feature(
		    -START      => $self->hstart(),
		    -END        => $self->hend(),
        -STRAND     => $self->hstrand(),
		    -SCORE      => $self->score(),
		    -PERCENT_ID => $self->percent_id(),
		    -ANALYSIS   => $self->analysis,
        -SEQNAME    => $self->hseqname());
}
gffstringdescriptionprevnextTop
sub gffstring {
    my ($self) = @_;

    deprecate('Do not use');

    my $str .= (defined $self->slice) ?  $self->slice->name()."\t":  "\t";
    $str .=  "\t"; #source tag
$str .= "\t"; #primary tag
$str .= (defined $self->start) ? $self->start."\t" : "\t"; $str .= (defined $self->end) ? $self->end."\t" : "\t"; $str .= (defined $self->score) ? $self->score."\t" : "\t"; $str .= (defined $self->strand) ? $self->strand."\t" : ".\t"; $str .= ".\t"; #phase
$str .= ".\t"; #end phase
my $hstrand = "+"; if (($self->hstrand)&&($self->hstrand == -1)) { $hstrand = "-"; } #Append a few FeaturePair specific things
$str .= (defined $self->hseqname) ? $self->hseqname."\t" : "\t"; $str .= (defined $self->hstart) ? $self->hstart."\t" : "\t"; $str .= (defined $self->hend) ? $self->hend."\t" : "\t"; $str .= (defined $self->hstrand) ? $hstrand."\t" : "\t"; $str .= (defined $self->hphase) ? $self->hphase."\t" : ".\t"; return $str;
}
group_iddescriptionprevnextTop
sub group_id {
   my ($self, $arg) = @_;
 
   if ( defined $arg ) {
      $self->{'group_id'} = $arg ;
   }
   return $self->{'group_id'};
}
hcoveragedescriptionprevnextTop
sub hcoverage {
  my $self = shift;
  $self->{'hcoverage'} = shift if(@_);
  return $self->{'hcoverage'};
}
henddescriptionprevnextTop
sub hend {
  my $self = shift;
  $self->{'hend'} = shift if(@_);
  return $self->{'hend'};
}
hend_phasedescriptionprevnextTop
sub hend_phase {
  my ($self, $value) = @_;

  deprecate('This method does nothing useful.');

  if (defined($value)) {
    $self->{_hend_phase} = $value;
  }
  return $self->{_hend_phase};
}
hphasedescriptionprevnextTop
sub hphase {
  my ($self, $value) = @_;

  deprecate('This method does nothing useful.');

  if (defined($value)) {
    $self->{_hphase} = $value;
  }

  return $self->{_hphase};
}
hseq_region_enddescriptionprevnextTop
sub hseq_region_end {
  my $self = shift;
  my $slice = $self->{'hslice'};

  return undef if(!$slice);

  if($slice->strand == 1) {
    return undef if(!defined($self->{'hend'}));
    return $slice->start() + $self->{'hend'} - 1;
  } else {
    return undef if(!defined($self->{'hstart'}));
    return $slice->end() - $self->{'hstart'} + 1;
  }
}
hseq_region_namedescriptionprevnextTop
sub hseq_region_name {
  my $self = shift;
  my $slice = $self->{'hslice'};

  return ($slice) ? $slice->seq_region_name() : undef;
}
hseq_region_startdescriptionprevnextTop
sub hseq_region_start {
  my $self = shift;
  my $slice = $self->{'hslice'};

  return undef if(!$slice);

  if($slice->strand == 1) {
    return undef if(!defined($self->{'hstart'}));
    return $slice->start() + $self->{'hstart'} - 1;
  } else {
    return undef if(!defined($self->{'hend'}));
    return $slice->end() - $self->{'hend'} + 1;
  }
}
hseq_region_stranddescriptionprevnextTop
sub hseq_region_strand {
  my $self = shift;
  my $slice = $self->{'hslice'};

  return ($slice) ? $slice->strand() * $self->{'hstrand'} : undef;
}
hseqnamedescriptionprevnextTop
sub hseqname {
  my $self = shift;
  $self->{'hseqname'} = shift if(@_);
  return $self->{hseqname};
}
hslicedescriptionprevnextTop
sub hslice {
  my $self = shift;

  if(@_) {
    my $sl = shift;
    if(defined($sl) && (!ref($sl) || !$sl->isa('Bio::EnsEMBL::Slice'))) {
      throw('slice argument must be a Bio::EnsEMBL::Slice');
    }

    $self->{'hslice'} = $sl;
  }

  return $self->{'hslice'};
}
hspeciesdescriptionprevnextTop
sub hspecies {
  my $self = shift;
  $self->{'hspecies'} = shift if(@_);
  return $self->{'hspecies'};
}
hstartdescriptionprevnextTop
sub hstart {
  my $self = shift;
  $self->{'hstart'} = shift if(@_);
  return $self->{'hstart'};
}
hstranddescriptionprevnextTop
sub hstrand {
  my $self = shift;

  if(@_) {
    my $hstrand = shift;
    if(defined($hstrand) && $hstrand != 1 && $hstrand != 0 && $hstrand != -1) {
      throw('hstrand must be one of (-1,0,1)');
    }
    $self->{'hstrand'} = $hstrand;
  }

  return $self->{'hstrand'};
}
identical_matchesdescriptionprevnextTop
sub identical_matches {
    my ($self,$arg) = @_;

    if (defined($arg)) {
        return $self->{'_identical_matches'} = $arg;
    } 
    return $self->{'_identical_matches'};
}
invertdescriptionprevnextTop
sub invert {
    my ($self,$slice) = @_;

    if (! defined $slice && defined $self->hslice) {
      $slice = $self->hslice;
    }

    my $hstart   = $self->{'hstart'};
    my $hend     = $self->{'hend'};
    my $hstrand  = $self->{'hstrand'};
    my $hspecies = $self->{'hspecies'};
    my $hseqname = $self->{'hseqname'};

    my $start   = $self->{'start'};
    my $end     = $self->{'end'};
    my $strand  = $self->{'strand'};
    my $species = $self->{'species'};
    my $seqname = $self->seqname();

    $self->{'start'} = $hstart;
    $self->{'end'}   = $hend;
    $self->{'strand'} = $hstrand;
    $self->{'species'} = $hspecies;
    $self->{'seqname'} = $hseqname if(defined($hseqname));

    $self->{'hstart'}   = $start;
    $self->{'hend'}     = $end;
    $self->{'hstrand'}  = $strand;
    $self->{'hseqname'} = $seqname;
    $self->{'hspecies'} = $species;

    $self->{'hslice'} = $self->slice;
    $self->{'slice'} = $slice;
}
level_iddescriptionprevnextTop
sub level_id {
   my ($self, $arg) = @_;
 
   if ( defined $arg ) {
      $self->{'level_id'} = $arg ;
   }
   return $self->{'level_id'};
}
newdescriptionprevnextTop
sub new {
  my $caller = shift;

  my $class = ref($caller) || $caller;

  my $self = $class->SUPER::new(@_);

  my ($hstart,$hend,$hstrand,$percent_id,$score, $species, $hspecies,
      $p_value, $hseqname, $f1,$f2, $coverage, $hcoverage, $group_id,$level_id, $external_db_id, $extra_data, $external_db_name, $external_display_db_name) =
    rearrange(['HSTART','HEND','HSTRAND','PERCENT_ID','SCORE','SPECIES',
               'HSPECIES', 'P_VALUE', 'HSEQNAME', 'FEATURE1','FEATURE2',
               'COVERAGE', 'HCOVERAGE', 'GROUP_ID','LEVEL_ID', 'EXTERNAL_DB_ID', 'EXTRA_DATA', 'DBNAME', 'DB_DISPLAY_NAME'], @_);

  if(defined($hstart) && defined($hend) && ($hend < $hstart)) {
    throw('HSTART must be less than or equal to HEND');
  }

  if(defined($hstrand) && $hstrand != 1 && $hstrand != -1 && $hstrand != 0) {
    throw('HSTRAND must be one of (0,1,-1)');
  }

  $self->{'hstart'}     = $hstart;
  $self->{'hend'}       = $hend;
  $self->{'hstrand'}    = $hstrand;
  $self->{'score'}      = $score;
  $self->{'percent_id'} = $percent_id;
  $self->{'species'}    = $species;
  $self->{'hspecies'}   = $hspecies;
  $self->{'hseqname'}   = $hseqname;
  $self->{'coverage'}   = $coverage;
  $self->{'hcoverage'}  = $hcoverage;
  $self->{'p_value'}    = $p_value;
  $self->{'group_id'}   = $group_id;
  $self->{'level_id'}   = $level_id;
  $self->{'external_db_id'} = $external_db_id;
  $self->{'extra_data'} = $extra_data;
  $self->{'dbname'} = $external_db_name;
  $self->{'db_display_name'} = $external_display_db_name;

  #
# Feature1 and Feature2 arg handling for backwards compatibility
#
if($f1) { deprecate("Using FEATURE1 arg to construct FeaturePairs" . " is deprecated.\nUse the args START,END,STRAND,SLICE instead"); #eval because we are not exactly sure what f1 arg will look like
eval { $self->{'start'} = $f1->start(); $self->{'end'} = $f1->end(); $self->{'strand'} = $f1->strand(); $self->{'slice'} = $f1->contig(); $self->{'analysis'} = $f1->analysis() if($f1->analysis()); }; } if($f2) { deprecate("Using FEATURE2 arg to construct FeaturePairs is deprecated" . "\nUse the args HSTART,HEND,HSTRAND,HSEQNAME instead"); #eval because we are not exactly sure what f2 arg will look like
eval { $self->{'hseqname'} = $f2->seqname(); $self->{'hstart'} = $f2->start(); $self->{'hend'} = $f2->end(); $self->{'hstrand'} = $f2->strand(); $self->{'analysis'} = $f2->analysis() if($f2->analysis()); }; } return $self;
}
p_valuedescriptionprevnextTop
sub p_value {
  my $self = shift;
  $self->{'p_value'} = shift if(@_);
  return $self->{'p_value'};
}
percent_iddescriptionprevnextTop
sub percent_id {
  my $self = shift;
  $self->{'percent_id'} = shift if(@_);
  return $self->{'percent_id'};
}
positive_matchesdescriptionprevnextTop
sub positive_matches {
    my ($self,$arg) = @_;

    if (defined($arg)) {
        return $self->{'_positive_matches'} = $arg;
    } 
    return $self->{'_positive_matches'};
}
scoredescriptionprevnextTop
sub score {
  my $self = shift;
  $self->{'score'} = shift if(@_);
  return $self->{'score'};
}
set_featurepair_fieldsdescriptionprevnextTop
sub set_featurepair_fields {
   my ($self, $start, $end, $strand, $score, $seqname, $hstart, $hend,
        $hstrand, $hseqname, $analysis, $e_value, $perc_id, 
        $phase, $end_phase) = @_;

   deprecate("Use individual Getter/Setters or Constructor arguments " .
             " instead.\nThere is no advantage to using this method.");

   throw('interface fault') if (@_ < 12 or @_ > 15);

   $self->start($start);
   $self->end($end);
   $self->strand($strand);
   $self->score($score);
   $self->seqname($seqname);
   $self->hstart($hstart);
   $self->hend($hend);
   $self->hstrand($hstrand);
   $self->hseqname($hseqname);
   $self->analysis($analysis);
   $self->p_value    ($e_value)   if (defined $e_value);
   $self->percent_id ($perc_id)   if (defined $perc_id);
   $self->phase      ($phase)     if (defined $phase);
   $self->end_phase  ($end_phase) if (defined $end_phase);
}
speciesdescriptionprevnextTop
sub species {
  my $self = shift;
  $self->{'species'} = shift if(@_);
  return $self->{'species'};
}
typedescriptionprevnextTop
sub type {
  my $self = shift;
  $self->{'extra_data'}->{'type'} = shift if(@_);
  if (exists $self->{'extra_data'}) {
      return $self->{'extra_data'}->{'type'};
  }
  return;
}

1;
}
validatedescriptionprevnextTop
sub validate {
  my ($self) = @_;

  deprecate('This method does nothing and should not be used.');
}
validate_prot_featuredescriptionprevnextTop
sub validate_prot_feature {
  my ($self) = @_;

  deprecate('This method does nothing and should not be used.');
}
General documentation
LICENSETop
  Copyright (c) 1999-2009 The European Bioinformatics Institute and
Genome Research Limited. All rights reserved.
This software is distributed under a modified Apache license. For license details, please see /info/about/code_licence.html
CONTACTTop
  Please email comments or questions to the public Ensembl
developers list at <ensembl-dev@ebi.ac.uk>.
Questions may also be sent to the Ensembl help desk at <helpdesk@ensembl.org>.
dbnameTop
  Arg [1]    : string  $external_db_name (optional)
Example : $ex_db_name = $fp->dbname();
Description: Getter/Setter for the external_db_name attribute, name of external database
Returntype : string
Exceptions : none
Caller : general
Status : At Risk
DEPRECATED METHODSTop