Archive Ensembl HomeArchive Ensembl Home
ConstrainedElement.pm
Go to the documentation of this file.
00001 =head1 LICENSE
00002 
00003   Copyright (c) 1999-2012 The European Bioinformatics Institute and
00004   Genome Research Limited.  All rights reserved.
00005 
00006   This software is distributed under a modified Apache license.
00007   For license details, please see
00008 
00009     http://www.ensembl.org/info/about/code_licence.html
00010 
00011 =head1 CONTACT
00012 
00013   Please email comments or questions to the public Ensembl
00014   developers list at <dev@ensembl.org>.
00015 
00016   Questions may also be sent to the Ensembl help desk at
00017   <helpdesk@ensembl.org>.
00018 
00019 =head1 NAME
00020 
00021 Bio::EnsEMBL::Compara::ConstrainedElement - constrained element data produced by Gerp
00022 
00023 =head1 SYNOPSIS
00024   
00025   use Bio::EnsEMBL::Compara::ConstrainedElement;
00026   
00027   my $constrained_element = new Bio::EnsEMBL::Compara::ConstrainedElement(
00028           -adaptor => $constrained_element_adaptor,
00029           -method_link_species_set_id => $method_link_species_set_id,
00030       -reference_dnafrag_id => $dnafrag_id,
00031           -score => 56.2,
00032           -p_value => '1.203e-6',
00033           -alignment_segments => [ [$dnafrag1_id, $start, $end, $genome_db_id, $dnafrag1_name ], [$dnafrag2_id, ... ], ... ],
00034       -taxonomic_level => "eutherian mammals",
00035       );
00036 
00037 GET / SET VALUES
00038   $constrained_element->adaptor($constrained_element_adaptor);
00039   $constrained_element->dbID($constrained_element_id);
00040   $constrained_element->method_link_species_set_id($method_link_species_set_id);
00041   $constrained_element->score(56.2);
00042   $constrained_element->p_value('5.62e-9');
00043   $constrained_element->taxonomic_level("eutherian mammals");
00044   $constrained_element->alignment_segments([ [$dnafrag_id, $start, $end, $genome_db_id, $dnafrag_name ], ... ]);
00045   $constrained_element->slice($slice);
00046   $constrained_element->start($constrained_element_start - $slice_start + 1);
00047   $constrained_element->end($constrained_element_end - $slice_start + 1);
00048   $constrained_element->seq_region_start($self->slice->start + $self->{'start'} - 1);
00049   $constrained_element->seq_region_end($self->slice->start + $self->{'end'} - 1);
00050   $constrained_element->strand($strand);
00051   $constrained_element->reference_dnafrag_id($dnafrag_id);
00052 
00053 =head1 OBJECT ATTRIBUTES
00054 
00055 =over
00056 
00057 =item dbID
00058 
00059 corresponds to constrained_element.constrained_element_id
00060 
00061 =item adaptor
00062 
00063 Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor object to access DB
00064 
00065 =item method_link_species_set_id
00066 
00067 corresponds to method_link_species_set.method_link_species_set_id (external ref.)
00068 
00069 =item score
00070 
00071 corresponds to constrained_element.score
00072 
00073 =item p_value
00074 
00075 corresponds to constrained_element.p_value
00076 
00077 =item taxonomic_level 
00078 
00079 corresponds to constrained_element.taxonoic_level
00080 
00081 =item slice
00082 
00083 corresponds to a Bio::EnsEMBL::Slice 
00084 
00085 =item start
00086 
00087 corresponds to a constrained_element.dnafrag_start (in slice coordinates)
00088 
00089 =item end
00090 
00091 corresponds to a constrained_element.dnafrag_end (in slice coordinates)
00092 
00093 =item seq_region_start
00094 
00095 corresponds to a constrained_element.dnafrag_start (in genomic (absolute) coordinates)
00096 
00097 =item seq_region_end
00098 
00099 corresponds to a constrained_element.dnafrag_end (in genomic (absolute) coordinates)
00100 
00101 =item strand
00102 
00103 corresponds to a constrained_element.strand
00104 
00105 =item $alignment_segments
00106 
00107 listref of listrefs (each of which contain 5 strings (dnafrag.dnafrag_id, constrained_element.dnafrag_start, 
00108 constrained_element.dnafrag_end, constrained_element.strand, genome_db.genome_db_id, dnafrag.dnafrag_name) 
00109    [ [ $dnafrag_id, $start, $end, $genome_db_id, $dnafrag_name ], .. ]
00110 Each inner listref contains information about one of the species sequences which make up the constarained 
00111 element block from the alignment. 
00112 
00113 =back
00114 
00115 =head1 APPENDIX
00116 
00117 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
00118 
00119 =cut
00120 
00121 
00122 # Let the code begin...
00123 
00124 
00125 package Bio::EnsEMBL::Compara::ConstrainedElement;
00126 use strict;
00127 
00128 # Object preamble
00129 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
00130 use Bio::EnsEMBL::Utils::Exception qw(throw warning info deprecate verbose);
00131 use Bio::EnsEMBL::Compara::DnaFrag;
00132 use Bio::SimpleAlign;
00133 use Data::Dumper;
00134 
00135 
00136 =head2 new (CONSTRUCTOR)
00137 
00138   Arg [-dbID] : int $dbID (the database ID for 
00139         the constrained element block for this object)
00140   Arg [-ADAPTOR]
00141               : (opt.) Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor $adaptor
00142                 (the adaptor for connecting to the database)
00143   Arg [-METHOD_LINK_SPECIES_SET_ID]
00144               : int $mlss_id (the database internal ID for the $mlss)
00145   Arg [-SCORE]
00146               : float $score (the score of this alignment)
00147   Arg [-ALIGNMENT_SEGMENTS]
00148               : (opt.) listref of listrefs which each contain 5 values 
00149         [ [ $dnafrag_id, $dnafrag_start, $dnafrag_end, $genome_db_id, $dnafrag_name ], ... ]
00150         corresponding to the all the species in the constrained element block.
00151   Arg [-P_VALUE]
00152               : (opt.) string $p_value (the p_value of this constrained element)
00153   Arg [-TAXONOMIC_LEVEL]
00154               : (opt.) string $taxonomic_level (the taxonomic level of the alignments from which the 
00155         constrained element was derived)
00156   Arg [-SLICE]
00157          : (opt.) Bio::EnsEMBL::Slice object
00158   Arg [-START]
00159          : (opt.) int ($dnafrag_start - Bio::EnsEMBL::Slice->start + 1).
00160   Arg [-END]
00161          : (opt.) int ($dnafrag_end - Bio::EnsEMBL::Slice->start + 1).
00162   Arg [-STRAND]
00163          : (opt.) int (the strand from the genomic_align).
00164   Arg [-REFERENCE_DNAFRAG_ID]
00165          : (opt.) int $dnafrag_id of the slice or dnafrag 
00166 
00167   Example    : my $constrained_element =
00168                    new Bio::EnsEMBL::Compara::ConstrainedElement(
00169                -dbID => $constrained_element_id,
00170                        -adaptor => $adaptor,
00171                        -method_link_species_set_id => $method_link_species_set_id,
00172                        -score => 28.2,
00173                        -alignment_segments => [ [ $dnafrag_id, $dnafrag_start, $dnafrag_end, $genome_db_id, $dnafrag_name ], .. ], 
00174                                     #danfarg_[start|end|id] from constrained_element table
00175                        -p_value => '5.023e-6',
00176                        -taxonomic_level => "eutherian mammals",
00177                -slice => $slice_obj,
00178                -start => ( $dnafrag_start - $slice_obj->start + 1),
00179                -end => ( $dnafrag_end - $slice_obj->start + 1),
00180                -strand => $strand,
00181                -reference_dnafrag_id => $dnafrag_id,
00182                    );
00183   Description: Creates a new ConstrainedElement object
00184   Returntype : Bio::EnsEMBL::Compara::DBSQL::ConstrainedElement
00185   Exceptions : none
00186   Caller     : general
00187 
00188 =cut
00189 
00190 sub new {
00191   my($class, @args) = @_;
00192   
00193   my $self = {};
00194   bless $self,$class;
00195     
00196   my ($adaptor, $dbID, $alignment_segments, 
00197     $method_link_species_set_id, $score, $p_value, 
00198     $taxonomic_level, $slice, $start, $end, $strand, $reference_dnafrag_id) = 
00199     rearrange([qw(
00200         ADAPTOR DBID ALIGNMENT_SEGMENTS 
00201   METHOD_LINK_SPECIES_SET_ID SCORE P_VALUE TAXONOMIC_LEVEL
00202   SLICE START END STRAND REFERENCE_DNAFRAG_ID 
00203     )],
00204             @args);
00205 
00206   $self->adaptor($adaptor) if (defined ($adaptor));
00207   $self->dbID($dbID) 
00208     if (defined ($dbID));
00209   $self->method_link_species_set_id($method_link_species_set_id)
00210       if (defined ($method_link_species_set_id));
00211   $self->alignment_segments($alignment_segments) 
00212       if (defined ($alignment_segments));
00213   $self->score($score) if (defined ($score));
00214   $self->p_value($p_value) if (defined ($p_value));
00215   $self->taxonomic_level($taxonomic_level)
00216       if (defined($taxonomic_level));
00217   $self->slice($slice) if (defined ($slice));
00218   $self->start($start) if (defined ($start));
00219   $self->end($end) if (defined ($end));
00220   $self->strand($strand) if (defined ($strand));
00221   $self->reference_dnafrag_id($reference_dnafrag_id)
00222       if (defined($reference_dnafrag_id));
00223   return $self;
00224 }
00225 
00226 sub new_fast {
00227   my $class = shift;
00228   my $hashref = shift;
00229 
00230   return bless $hashref, $class;
00231 }
00232 
00233 =head2 adaptor
00234 
00235   Arg [1]    : Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor
00236   Example    : my $cons_ele_adaptor = $constrained_element->adaptor();
00237   Example    : $cons_ele_adaptor->adaptor($cons_ele_adaptor);
00238   Description: Getter/Setter for the adaptor this object uses for database
00239                interaction.
00240   Returntype : Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor object
00241   Exceptions : thrown if $adaptor is not a
00242                Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor object
00243   Caller     : general
00244 
00245 =cut
00246 
00247 sub adaptor {
00248   my ($self, $adaptor) = @_;
00249 
00250   if (defined($adaptor)) {
00251     throw("$adaptor is not a Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor object")
00252         unless ($adaptor->isa("Bio::EnsEMBL::Compara::DBSQL::ConstrainedElementAdaptor"));
00253     $self->{'adaptor'} = $adaptor;
00254   }
00255 
00256   return $self->{'adaptor'};
00257 }
00258 
00259 =head2 dbID
00260 
00261   Arg [1]    : integer $dbID
00262   Example    : my $dbID = $constrained_element->dbID();
00263   Example    : $constrained_element->dbID(2);
00264   Description: Getter/Setter for the attribute dbID 
00265   Returntype : integer
00266   Exceptions : returns undef if no ref.dbID
00267   Caller     : general
00268 
00269 =cut
00270 
00271 sub dbID {
00272   my ($self, $dbID) = @_;
00273 
00274   if (defined($dbID)) {
00275     $self->{'dbID'} = $dbID;
00276   }
00277 
00278   return $self->{'dbID'};
00279 }
00280 
00281 
00282 =head2 p_value 
00283 
00284   Arg [1]    : float $p_value
00285   Example    : my $p_value = $constrained_element->p_value();
00286   Example    : $constrained_element->p_value('5.35242e-105');
00287   Description: Getter/Setter for the attribute p_value
00288   Returntype : float 
00289   Exceptions : returns undef if no ref.p_value
00290   Caller     : general
00291 
00292 =cut
00293 
00294 sub p_value {
00295   my ($self, $p_value) = @_;
00296 
00297   if (defined($p_value)) {
00298     $self->{'p_value'} = $p_value;
00299   }
00300 
00301   return $self->{'p_value'};
00302 }
00303 
00304 =head2 taxonomic_level 
00305 
00306   Arg [1]    : string $taxonomic_level
00307   Example    : my $taxonomic_level = $constrained_element->taxonomic_level();
00308   Example    : $constrained_element->taxonomic_level("eutherian mammals");
00309   Description: Getter/Setter for the attribute taxonomic_level 
00310   Returntype : string
00311   Exceptions : returns undef if no ref.taxonomic_level
00312   Caller     : general
00313 
00314 =cut
00315 
00316 sub taxonomic_level {
00317   my ($self, $taxonomic_level) = @_;
00318 
00319   if (defined($taxonomic_level)) {
00320     $self->{'taxonomic_level'} = $taxonomic_level;
00321   } 
00322   return $self->{'taxonomic_level'};
00323 }
00324 
00325 =head2 score
00326 
00327   Arg [1]    : float $score
00328   Example    : my $score = $constrained_element->score();
00329   Example    : $constrained_element->score(16.8);
00330   Description: Getter/Setter for the attribute score 
00331   Returntype : float
00332   Exceptions : returns undef if no ref.score
00333   Caller     : general
00334 
00335 =cut
00336 
00337 sub score {
00338   my ($self, $score) = @_;
00339 
00340   if (defined($score)) {
00341     $self->{'score'} = $score;
00342   } 
00343   return $self->{'score'};
00344 }
00345 
00346 =head2 method_link_species_set_id
00347 
00348   Arg [1]    : integer $method_link_species_set_id
00349   Example    : $method_link_species_set_id = $constrained_element->method_link_species_set_id;
00350   Example    : $constrained_element->method_link_species_set_id(3);
00351   Description: Getter/Setter for the attribute method_link_species_set_id.
00352   Returntype : integer
00353   Exceptions : returns undef if no ref.method_link_species_set_id
00354   Caller     : object::methodname
00355 
00356 =cut
00357 
00358 sub method_link_species_set_id {
00359   my ($self, $method_link_species_set_id) = @_;
00360 
00361   if (defined($method_link_species_set_id)) {
00362     $self->{'method_link_species_set_id'} = $method_link_species_set_id;
00363   } 
00364 
00365   return $self->{'method_link_species_set_id'};
00366 }
00367 
00368 =head2 alignment_segments
00369  
00370   Arg [1]    : listref $alignment_segments [ [ $dnafrag_id, $start, $end, $genome_db_id, $dnafrag_name ], .. ]
00371   Example    : my $alignment_segments = $constrained_element->alignment_segments();
00372                $constrained_element->alignment_segments($alignment_segments);
00373   Description: Getter/Setter for the attribute alignment_segments 
00374   Returntype : listref  
00375   Exceptions : returns undef if no ref.alignment_segments
00376   Caller     : general
00377 
00378 =cut
00379 
00380 sub alignment_segments {
00381   my ($self, $alignment_segments) = @_;
00382 
00383   if (defined($alignment_segments)) {
00384     $self->{'alignment_segments'} = $alignment_segments;
00385   } 
00386 
00387   return $self->{'alignment_segments'};
00388 }
00389 
00390 
00391 =head2 slice
00392 
00393   Arg [1]    : Bio::EnsEMBL::Slice $slice
00394   Example    : $slice = $constrained_element->slice;
00395   Example    : $constrained_element->slice($slice);
00396   Description: Getter/Setter for the attribute slice.
00397   Returntype : Bio::EnsEMBL::Slice object
00398   Exceptions : returns undef if no ref.slice
00399   Caller     : object::methodname
00400 
00401 =cut
00402 
00403 sub slice {
00404   my ($self, $slice) = @_;
00405 
00406   if (defined($slice)) {
00407     $self->{'slice'} = $slice;
00408   } 
00409 
00410   return $self->{'slice'};
00411 }
00412 
00413 =head2 start
00414 
00415   Arg [1]    : (optional) int $start
00416   Example    : $start = $constrained_element->start;
00417   Example    : $constrained_element->start($start);
00418   Description: Getter/Setter for the attribute start.
00419   Returntype : int
00420   Exceptions : returns undef if no ref.start
00421   Caller     : object::methodname
00422 
00423 =cut
00424 
00425 sub start {
00426   my ($self, $start) = @_;
00427 
00428   if (defined($start)) {
00429     $self->{'start'} = $start;
00430   }
00431 
00432   return $self->{'start'};
00433 }
00434 
00435 =head2 end
00436 
00437   Arg [1]    : (optional) int $end
00438   Example    : $end = $constrained_element->end;
00439   Example    : $constrained_element->end($end);
00440   Description: Getter/Setter for the attribute end relative to the begining of the slice.
00441   Returntype : int
00442   Exceptions : returns undef if no ref.end
00443   Caller     : object::methodname
00444 
00445 =cut
00446 
00447 sub end {
00448   my ($self, $end) = @_;
00449 
00450   if (defined($end)) {
00451     $self->{'end'} = $end;
00452   }
00453 
00454   return $self->{'end'};
00455 }
00456 
00457 
00458 =head2 seq_region_start
00459 
00460   Arg [1]    : (optional) int $seq_region_start
00461   Example    : $seq_region_start = $constrained_element->seq_region_start;
00462   Example    : $constrained_element->seq_region_start($seq_region_start);
00463   Description: Getter/Setter for the attribute start relative to the begining of the dnafrag (genomic coords).
00464   Returntype : int
00465   Exceptions : returns undef if no ref.seq_region_start
00466   Caller     : object::methodname
00467 
00468 =cut
00469 sub seq_region_start {
00470     my ($self, $seq_region_start) = @_;
00471     
00472     if(defined($seq_region_start)) {
00473         $self->{'seq_region_start'} = $seq_region_start;
00474     } else {
00475         $self->{'seq_region_start'} = $self->slice->start + $self->{'start'} - 1;
00476     }
00477     return $self->{'seq_region_start'};
00478 }
00479 
00480 
00481 =head2 seq_region_end
00482 
00483   Arg [1]    : (optional) int $seq_region_end
00484   Example    : $seq_region_end = $constrained_element->seq_region_end
00485   Example    : $constrained_element->seq_region_end($seq_region_end);
00486   Description: Getter/Setter for the attribute end relative to the begining of the dnafrag (genomic coords).
00487   Returntype : int
00488   Exceptions : returns undef if no ref.seq_region_end
00489   Caller     : object::methodname
00490 
00491 =cut
00492 sub seq_region_end {
00493     my ($self, $seq_region_end) = @_;
00494     
00495     if(defined($seq_region_end)) {
00496         $self->{'seq_region_end'} = $seq_region_end;
00497     } else {
00498         $self->{'seq_region_end'} = $self->slice->start + $self->{'end'} - 1;
00499     }
00500     return $self->{'seq_region_end'};
00501 }
00502 
00503 
00504 
00505 =head2 strand
00506 
00507   Arg [1]    : (optional) int $stand$
00508   Example    : $end = $constrained_element->strand;
00509   Example    : $constrained_element->end($strand);
00510   Description: Getter/Setter for the attribute genomic_align strand.
00511   Returntype : int
00512   Exceptions : returns undef if no ref.strand
00513   Caller     : object::methodname
00514 
00515 =cut
00516 
00517 sub strand {
00518   my ($self, $strand) = @_;
00519 
00520   if (defined($strand)) {
00521     $self->{'strand'} = $strand;
00522   }
00523 
00524   return $self->{'strand'};
00525 }
00526 
00527 =head2 reference_dnafrag_id
00528 
00529   Arg [1]    : (optional) int $reference_dnafrag_id
00530   Example    : $dnafrag_id = $constrained_element->reference_dnafrag_id;
00531   Example    : $constrained_element->reference_dnafrag_id($dnafrag_id);
00532   Description: Getter/Setter for the attribute end.
00533   Returntype : int
00534   Exceptions : returns undef if no ref.reference_dnafrag_id 
00535   Caller     : object::methodname
00536 
00537 =cut
00538 
00539 sub reference_dnafrag_id {
00540   my ($self, $reference_dnafrag_id) = @_;
00541 
00542   if (defined($reference_dnafrag_id)) {
00543     $self->{'reference_dnafrag_id'} = $reference_dnafrag_id;
00544   }
00545 
00546   return $self->{'reference_dnafrag_id'};
00547 }
00548 
00549 =head2 get_SimpleAlign
00550 
00551   Arg [1]    : The method_link_species_set_object of the original alignment from 
00552         which the constrained elements were generated
00553   Example    : my $out = Bio::AlignIO->newFh(-fh=>\*STDOUT, -format=> "clustalw");
00554            my $cons = $ce_adaptor->fetch_all_by_MethodLinkSpeciesSet_Slice($mlss, $slice);
00555                foreach my $constrained_element(@{ $cons }) {
00556             my $simple_align = $constrained_element->get_SimpleAlign($orig_mlss, "uc");
00557             print $out $simple_align;
00558            }
00559   Description: Rebuilds the constrained element alignment
00560   Returntype : Bio::SimpleAlign object
00561   Exceptions : throw if Arg-1 is not a Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object
00562   Caller     : object::methodname
00563 
00564 =cut
00565 
00566 sub get_SimpleAlign {
00567     my ($self, $orig_mlss, @flags) = @_;
00568 
00569         if (defined($orig_mlss)) {
00570                 throw("$orig_mlss is not a Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object")  
00571                 unless ($orig_mlss->isa("Bio::EnsEMBL::Compara::MethodLinkSpeciesSet"));
00572         } else {
00573                 throw("undefined Bio::EnsEMBL::Compara::MethodLinkSpeciesSet object");
00574         }
00575 
00576     # setting the flags
00577     my $skip_empty_GenomicAligns = 1;
00578     my $uc = 0;
00579     my $translated = 0;
00580 
00581     for my $flag ( @flags ) {
00582         $uc = 1 if ($flag =~ /^uc$/i);
00583         $translated = 1 if ($flag =~ /^translated$/i);
00584     }       
00585 
00586     my $genomic_align_block_adaptor = $self->adaptor->db->get_GenomicAlignBlock;
00587     $self->start(1) if $self->start <= 0;
00588     my $gabs = $genomic_align_block_adaptor->fetch_all_by_MethodLinkSpeciesSet_Slice(
00589         $orig_mlss, $self->slice->sub_Slice($self->start, $self->end, $self->slice->strand));
00590 
00591     my $sa = Bio::SimpleAlign->new();
00592 
00593     warn "should be only one genomic_align_block associated with each constrained element\n" if @$gabs > 1;
00594 
00595     my $this_genomic_align_block = $gabs->[0];
00596     my $bio07 = 0; 
00597     if(!$sa->can('add_seq')) {
00598         $bio07 = 1; 
00599     }
00600     my $reference_genomic_align = $this_genomic_align_block->reference_genomic_align();
00601 
00602     my $restricted_gab = $this_genomic_align_block->restrict_between_reference_positions(
00603         ($self->slice->start + $self->start - 1),
00604         ($self->slice->start + $self->end - 1),
00605         $reference_genomic_align,
00606         $skip_empty_GenomicAligns);
00607     print "dbID: ", $this_genomic_align_block->dbID, ". "; 
00608     foreach my $genomic_align( @{ $restricted_gab->get_all_GenomicAligns } ) {
00609         my $alignSeq = $genomic_align->aligned_sequence;
00610         my $loc_seq = Bio::LocatableSeq->new(
00611             -SEQ    => $uc ? uc $alignSeq : lc $alignSeq,
00612             -START  => $genomic_align->dnafrag_start,
00613             -END    => $genomic_align->dnafrag_end,
00614             -ID     => $genomic_align->dnafrag->genome_db->name . "/" . $genomic_align->dnafrag->name,
00615             -STRAND => $genomic_align->dnafrag_strand);
00616 
00617         if($bio07) { 
00618             $sa->addSeq($loc_seq); 
00619         }else{ 
00620             $sa->add_seq($loc_seq); 
00621         }               
00622     }
00623     return $sa;
00624 }
00625 
00626 =head2 summary_as_hash
00627 
00628   Example       : $constrained_summary = $constrained_element->summary_as_hash();
00629   Description   : Retrieves a textual summary of this ConstrainedElement object.
00630                   Sadly not descended from Feature, so certain attributes must be explicitly requested
00631   Returns       : hashref of descriptive strings
00632 
00633 =cut
00634 
00635 sub summary_as_hash {
00636   my $self = shift;
00637   my $summary_ref;
00638   $summary_ref->{'ID'} = $self->dbID;
00639   $summary_ref->{'start'} = $self->seq_region_start;
00640   $summary_ref->{'end'} = $self->seq_region_end;
00641   $summary_ref->{'strand'} = $self->strand;
00642   $summary_ref->{'seq_region_name'} = $self->slice->seq_region_name;
00643   $summary_ref->{'score'} = $self->score;
00644   return $summary_ref;
00645 }
00646 
00647 1;