Bio::SeqFeature FeaturePair
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Summary
Bio::SeqFeature::FeaturePair - hold pair feature information e.g. blast hits
Package variables
No package variables defined.
Included modules
Bio::SeqFeature::Generic
Bio::SeqFeatureI
Inherit
Bio::SeqFeature::Generic
Synopsis
    my $feat  = new Bio::SeqFeature::FeaturePair(-feature1 => $f1,
						 -feature2 => $f2,
					      );

    # Bio::SeqFeatureI methods can be used

    my $start = $feat->start;
    my $end   = $feat->end;

    # Bio::FeaturePair methods can be used
    my $hstart = $feat->hstart;
    my $hend   = $feat->hend;

   my $feature1 = $feat->feature1;  # returns feature1 object
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 used to create one
sequence feature $f1 and the protein coordinates are used to create
feature $f2. A FeaturePair object can then be made
    my $fp = new Bio::SeqFeature::FeaturePair(-feature1 => $f1,   # genomic
					      -feature2 => $f2,   # protein
					      );
This object can be used as a standard Bio::SeqFeatureI in which case
    my $gstart = $fp->start  # returns start coord on feature1 - genomic seq.
    my $gend   = $fp->end    # returns end coord on feature1.
In general standard Bio::SeqFeatureI method calls return information
in feature1.
Data in the feature 2 object are generally obtained using the standard
methods prefixed by h (for hit!)
    my $pstart = $fp->hstart # returns start coord on feature2 = protein seq.
    my $pend   = $fp->hend   # returns end coord on feature2.
If you wish to swap feature1 and feature2 around :
    $feat->invert
so...
    $feat->start # etc. returns data in $feature2 object
No sub_SeqFeatures or tags can be stored in this object directly. Any
features or tags are expected to be stored in the contained objects
feature1, and feature2.
Methods
new
No description
Code
feature1DescriptionCode
feature2DescriptionCode
startDescriptionCode
endDescriptionCode
strandDescriptionCode
locationDescriptionCode
scoreDescriptionCode
frameDescriptionCode
primary_tagDescriptionCode
source_tagDescriptionCode
seqnameDescriptionCode
hseqnameDescriptionCode
hstartDescriptionCode
hendDescriptionCode
hstrandDescriptionCode
hscoreDescriptionCode
hframeDescriptionCode
hprimary_tagDescriptionCode
hsource_tagDescriptionCode
invertDescriptionCode
Methods description
feature1code    nextTop
 Title   : feature1
 Usage   : $f = $featpair->feature1
           $featpair->feature1($feature)
 Function: Get/set for the query feature
 Returns : Bio::SeqFeatureI
 Args    : Bio::SeqFeatureI
feature2codeprevnextTop
 Title   : feature2
 Usage   : $f = $featpair->feature2
           $featpair->feature2($feature)
 Function: Get/set for the hit feature
 Returns : Bio::SeqFeatureI
 Args    : Bio::SeqFeatureI
startcodeprevnextTop
 Title   : start
 Usage   : $start = $featpair->start
           $featpair->start(20)
 Function: Get/set on the start coordinate of feature1
 Returns : integer
 Args    : [optional] beginning of feature
endcodeprevnextTop
 Title   : end
 Usage   : $end = $featpair->end
           $featpair->end($end)
 Function: get/set on the end coordinate of feature1
 Returns : integer
 Args    : [optional] ending point of feature
strandcodeprevnextTop
 Title   : strand
 Usage   : $strand = $feat->strand()
           $feat->strand($strand)
 Function: get/set on strand information, being 1,-1 or 0
 Returns : -1,1 or 0
 Args    : [optional] strand information to set
locationcodeprevnextTop
 Title   : location
 Usage   : $location = $featpair->location
           $featpair->location($location)
 Function: Get/set location object (using feature1)
 Returns : Bio::LocationI object
 Args    : [optional] LocationI to store
scorecodeprevnextTop
 Title   : score
 Usage   : $score = $feat->score()
           $feat->score($score)
 Function: get/set on score information
 Returns : float
 Args    : none if get, the new value if set
framecodeprevnextTop
 Title   : frame
 Usage   : $frame = $feat->frame()
           $feat->frame($frame)
 Function: get/set on frame information
 Returns : 0,1,2
 Args    : none if get, the new value if set
primary_tagcodeprevnextTop
 Title   : primary_tag
 Usage   : $ptag = $featpair->primary_tag
 Function: get/set on the primary_tag of feature1
 Returns : 0,1,2
 Args    : none if get, the new value if set
source_tagcodeprevnextTop
 Title   : source_tag
 Usage   : $tag = $feat->source_tag()
           $feat->source_tag('genscan');
 Function: Returns the source tag for a feature,
           eg, 'genscan' 
 Returns : a string 
 Args    : none
seqnamecodeprevnextTop
 Title   : seqname
 Usage   : $obj->seq_id($newval)
 Function: There are many cases when you make a feature that you
           do know the sequence name, but do not know its actual
           sequence. This is an attribute such that you can store 
           the seqname.

           This attribute should *not* be used in GFF dumping, as
           that should come from the collection in which the seq
           feature was found.
 Returns : value of seqname
 Args    : newvalue (optional)
hseqnamecodeprevnextTop
 Title   : hseqname
 Usage   : $featpair->hseqname($newval)
 Function: Get/set method for the name of
           feature2.
 Returns : value of $feature2->seq_id
 Args    : newvalue (optional)
hstartcodeprevnextTop
 Title   : hstart
 Usage   : $start = $featpair->hstart
           $featpair->hstart(20)
 Function: Get/set on the start coordinate of feature2
 Returns : integer
 Args    : none
hendcodeprevnextTop
 Title   : hend
 Usage   : $end = $featpair->hend
           $featpair->hend($end)
 Function: get/set on the end coordinate of feature2
 Returns : integer
 Args    : none
hstrandcodeprevnextTop
 Title   : hstrand
 Usage   : $strand = $feat->strand()
           $feat->strand($strand)
 Function: get/set on strand information, being 1,-1 or 0
 Returns : -1,1 or 0
 Args    : none
hscorecodeprevnextTop
 Title   : hscore
 Usage   : $score = $feat->score()
           $feat->score($score)
 Function: get/set on score information
 Returns : float
 Args    : none if get, the new value if set
hframecodeprevnextTop
 Title   : hframe
 Usage   : $frame = $feat->frame()
           $feat->frame($frame)
 Function: get/set on frame information
 Returns : 0,1,2
 Args    : none if get, the new value if set
hprimary_tagcodeprevnextTop
 Title   : hprimary_tag
 Usage   : $ptag = $featpair->hprimary_tag
 Function: Get/set on the primary_tag of feature2
 Returns : 0,1,2
 Args    : none if get, the new value if set
hsource_tagcodeprevnextTop
 Title   : hsource_tag
 Usage   : $tag = $feat->hsource_tag()
           $feat->source_tag('genscan');
 Function: Returns the source tag for a feature,
           eg, 'genscan' 
 Returns : a string 
 Args    : none
invertcodeprevnextTop
 Title   : invert
 Usage   : $tag = $feat->invert
 Function: Swaps feature1 and feature2 around
 Returns : Nothing
 Args    : none
Methods code
newdescriptionprevnextTop
sub new {
    my ($class, @args) = @_;
    my $self = $class->SUPER::new(@args);
    
    my ($feature1,$feature2) = 
	$self->_rearrange([qw(FEATURE1
			      FEATURE2
			      )],@args);
    
    # Store the features in the object
$feature1 && $self->feature1($feature1); $feature2 && $self->feature2($feature2); return $self;
}
feature1descriptionprevnextTop
sub feature1 {
    my ($self,$arg) = @_;    
    if ( defined($arg) || !defined $self->{'feature1'} ) {
	$arg = new Bio::SeqFeature::Generic() unless( defined $arg);
	$self->throw("Argument [$arg] must be a Bio::SeqFeatureI") 
	    unless (ref($arg) && $arg->isa("Bio::SeqFeatureI"));
	$self->{'feature1'} = $arg;
    }
    return $self->{'feature1'};
}
feature2descriptionprevnextTop
sub feature2 {
    my ($self,$arg) = @_;

    if ( defined($arg) || ! defined $self->{'feature2'}) {
	$arg = new Bio::SeqFeature::Generic unless( defined $arg);
	$self->throw("Argument [$arg] must be a Bio::SeqFeatureI") 
	    unless (ref($arg) && $arg->isa("Bio::SeqFeatureI"));
	$self->{'feature2'} = $arg;
    }
    return $self->{'feature2'};
}
startdescriptionprevnextTop
sub start {
    my ($self,$value) = @_;    
    return $self->feature1->start($value);
}
enddescriptionprevnextTop
sub end {
    my ($self,$value) = @_;    
    return $self->feature1->end($value);
}
stranddescriptionprevnextTop
sub strand {
    my ($self,$arg) = @_;
    return $self->feature1->strand($arg);
}
locationdescriptionprevnextTop
sub location {
    my ($self,$value) = @_;    
    return $self->feature1->location($value);
}
scoredescriptionprevnextTop
sub score {
    my ($self,$arg) = @_;
    return $self->feature1->score($arg);
}
framedescriptionprevnextTop
sub frame {
    my ($self,$arg) = @_;
    return $self->feature1->frame($arg);
}
primary_tagdescriptionprevnextTop
sub primary_tag {
    my ($self,$arg) = @_;
    return $self->feature1->primary_tag($arg);
}
source_tagdescriptionprevnextTop
sub source_tag {
    my ($self,$arg) = @_;
    return $self->feature1->source_tag($arg);
}
seqnamedescriptionprevnextTop
sub seqname {
    my ($self,$arg) = @_;
    return $self->feature1->seq_id($arg);
}
hseqnamedescriptionprevnextTop
sub hseqname {
    my ($self,$arg) = @_;
    return $self->feature2->seq_id($arg);
}
hstartdescriptionprevnextTop
sub hstart {
    my ($self,$value) = @_;
    return $self->feature2->start($value);
}
henddescriptionprevnextTop
sub hend {
    my ($self,$value) = @_;
    return $self->feature2->end($value);
}
hstranddescriptionprevnextTop
sub hstrand {
    my ($self,$arg) = @_;
    return $self->feature2->strand($arg);
}
hscoredescriptionprevnextTop
sub hscore {
    my ($self,$arg) = @_;
    return $self->feature2->score($arg);
}
hframedescriptionprevnextTop
sub hframe {
    my ($self,$arg) = @_;
    return $self->feature2->frame($arg);
}
hprimary_tagdescriptionprevnextTop
sub hprimary_tag {
    my ($self,$arg) = @_;
    return $self->feature2->primary_tag($arg);
}
hsource_tagdescriptionprevnextTop
sub hsource_tag {
    my ($self,$arg) = @_;
    return $self->feature2->source_tag($arg);
}
invertdescriptionprevnextTop
sub invert {
    my ($self) = @_;

    my $tmp = $self->feature1;
    
    $self->feature1($self->feature2);
    $self->feature2($tmp);
    return undef;
}
General documentation
CONTACTTop
Ewan Birney <birney@sanger.ac.uk>
APPENDIXTop
The rest of the documentation details each of the object
methods. Internal methods are usually preceded with a _