comparison variant_effect_predictor/Bio/EnsEMBL/FeaturePair.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1f6dce3d34e0
1 =head1 LICENSE
2
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
4 Genome Research Limited. All rights reserved.
5
6 This software is distributed under a modified Apache license.
7 For license details, please see
8
9 http://www.ensembl.org/info/about/code_licence.html
10
11 =head1 CONTACT
12
13 Please email comments or questions to the public Ensembl
14 developers list at <dev@ensembl.org>.
15
16 Questions may also be sent to the Ensembl help desk at
17 <helpdesk@ensembl.org>.
18
19 =cut
20
21 =head1 NAME
22
23 Bio::EnsEMBL::FeaturePair - Stores sequence Features which are
24 themselves hits to other sequence features.
25
26 =head1 SYNOPSIS
27
28 my $feat = Bio::EnsEMBL::FeaturePair->new(
29 -start => 132_231,
30 -end => 132_321,
31 -strand => -1,
32 -slice => $slice,
33 -hstart => 10,
34 -hend => 100,
35 -hstrand => 1,
36 -score => 100,
37 -percent_id => 92.0,
38 -hseqname => 'ALUSX10.1',
39 -analysis => $analysis
40 );
41
42 my $hit_start = $feat->hstart();
43 my $hit_end = $feat->hend();
44 my $hit_strand = $feat->hstrand();
45 my $analysis = $feat->analysis();
46
47 =head1 DESCRIPTION
48
49 A sequence feature object where the feature is itself a feature on
50 another sequence - e.g. a blast hit where residues 1-40 of a protein
51 sequence SW:HBA_HUMAN has hit to bases 100 - 220 on a genomic sequence
52 HS120G22. The genomic sequence coordinates are represented by the
53 start, end, strand attributes while the protein (hit) coordinates are
54 represented by the hstart, hend, hstrand attributes.
55
56 $clone = $slice_adpator->fetch_by_region( 'clone', 'HS120G22' );
57
58 $fp = Bio::EnsEMBL::FeaturePair(
59 -start => 100,
60 -end => 220,
61 -strand => 1,
62 -slice => $clone,
63 -hstart => 1,
64 -hend => 40,
65 -hstrand => 1,
66 -percent_id => 92.0,
67 -score => 100,
68 -hseqname => 'SW:HBA_HUMAN',
69 -species => 'Homo sapiens',
70 -hspecies => 'Homo sapiens'
71 );
72
73 =head1 METHODS
74
75 =cut
76
77 package Bio::EnsEMBL::FeaturePair;
78
79 use vars qw(@ISA);
80 use strict;
81
82 use Bio::EnsEMBL::Feature;
83 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
84 use Bio::EnsEMBL::Utils::Exception qw(throw deprecate warning);
85
86 @ISA = qw(Bio::EnsEMBL::Feature);
87
88
89
90 =head2 new
91
92 Arg [HSTART] : int - The start of the hit region (optional)
93 Arg [HEND] : int - The end of the hit region (optional)
94 Arg [HSTRAND] : (0,1,-1) - The strand of the hit region (optional)
95 Arg [PERCENT_ID]: float - The precentage identity of the hit (optional)
96 Arg [SCORE] : float - The score of the hit (optional)
97 Arg [HSEQNAME] : string - The name of the hit sequence (optional)
98 Arg [P_VALUE] : float - The pvalue or evalue (optional)
99 Arg [SPECIES] : string - The species the query sequence is from (optional)
100 Arg [HSPECIES] : string - The species the hit sequence is from (optional)
101 Arg [COVERAGE] : string - The % of the query that this feature pair covers
102 Arg [HCOVERAGE] : string - The % of the target this this feature pair covers
103 Arg [...] : Named superclass constructor args (Bio::EnsEMBL::Feature)
104 Example : $feat = Bio::EnsEMBL::FeaturePair->new(-start => 132_231,
105 -end => 132_321,
106 -strand => -1,
107 -slice => $slice,
108 -hstart => 10,
109 -hend => 100,
110 -hstrand => 1,
111 -score => 100,
112 -percent_id => 92.0,
113 -hseqname => 'ALUSX10.1',
114 -analysis => $analysis);
115 Description: Creates a new Bio::EnsEMBL::FeaturePair object
116 Returntype : Bio::EnsEMBL::FeaturePair
117 Exceptions : throw if start > end
118 throw if invalid strand is provided
119 Caller : general
120 Status : Stable
121
122 =cut
123
124 sub new {
125 my $caller = shift;
126
127 my $class = ref($caller) || $caller;
128
129 my $self = $class->SUPER::new(@_);
130
131 my ($hstart,$hend,$hstrand,$percent_id,$score, $species, $hspecies,
132 $p_value, $hseqname, $f1,$f2, $coverage, $hcoverage, $group_id,$level_id, $external_db_id, $extra_data, $external_db_name, $external_display_db_name) =
133 rearrange(['HSTART','HEND','HSTRAND','PERCENT_ID','SCORE','SPECIES',
134 'HSPECIES', 'P_VALUE', 'HSEQNAME', 'FEATURE1','FEATURE2',
135 'COVERAGE', 'HCOVERAGE', 'GROUP_ID','LEVEL_ID', 'EXTERNAL_DB_ID', 'EXTRA_DATA', 'DBNAME', 'DB_DISPLAY_NAME'], @_);
136
137 if(defined($hstart) && defined($hend) && ($hend < $hstart)) {
138 throw('HSTART must be less than or equal to HEND');
139 }
140
141 if(defined($hstrand) && $hstrand != 1 && $hstrand != -1 && $hstrand != 0) {
142 throw('HSTRAND must be one of (0,1,-1)');
143 }
144
145 $self->{'hstart'} = $hstart;
146 $self->{'hend'} = $hend;
147 $self->{'hstrand'} = $hstrand;
148 $self->{'score'} = $score;
149 $self->{'percent_id'} = $percent_id;
150 $self->{'species'} = $species;
151 $self->{'hspecies'} = $hspecies;
152 $self->{'hseqname'} = $hseqname;
153 $self->{'coverage'} = $coverage;
154 $self->{'hcoverage'} = $hcoverage;
155 $self->{'p_value'} = $p_value;
156 $self->{'group_id'} = $group_id;
157 $self->{'level_id'} = $level_id;
158 $self->{'external_db_id'} = $external_db_id;
159 $self->{'extra_data'} = $extra_data;
160 $self->{'dbname'} = $external_db_name;
161 $self->{'db_display_name'} = $external_display_db_name;
162
163 #
164 # Feature1 and Feature2 arg handling for backwards compatibility
165 #
166 if($f1) {
167 deprecate("Using FEATURE1 arg to construct FeaturePairs" .
168 " is deprecated.\nUse the args START,END,STRAND,SLICE instead");
169
170 #eval because we are not exactly sure what f1 arg will look like
171 eval {
172 $self->{'start'} = $f1->start();
173 $self->{'end'} = $f1->end();
174 $self->{'strand'} = $f1->strand();
175 $self->{'slice'} = $f1->contig();
176 $self->{'analysis'} = $f1->analysis() if($f1->analysis());
177 };
178 }
179
180 if($f2) {
181 deprecate("Using FEATURE2 arg to construct FeaturePairs is deprecated" .
182 "\nUse the args HSTART,HEND,HSTRAND,HSEQNAME instead");
183
184 #eval because we are not exactly sure what f2 arg will look like
185 eval {
186 $self->{'hseqname'} = $f2->seqname();
187 $self->{'hstart'} = $f2->start();
188 $self->{'hend'} = $f2->end();
189 $self->{'hstrand'} = $f2->strand();
190 $self->{'analysis'} = $f2->analysis() if($f2->analysis());
191 };
192 }
193
194 return $self;
195 }
196
197
198
199 =head2 hseqname
200
201 Arg [1] : string $hseqname (optional)
202 Example : $hseqname = $fp->hseqname();
203 Description: Getter/Setter for the name of the hit sequence
204 Returntype : string
205 Exceptions : none
206 Caller : general
207 Status : Stable
208
209 =cut
210
211 sub hseqname {
212 my $self = shift;
213 $self->{'hseqname'} = shift if(@_);
214 return $self->{hseqname};
215 }
216
217
218
219 =head2 hstart
220
221 Arg [1] : string $hstart (optional)
222 Example : $hstart = $fp->hstart();
223 Description: Getter/Setter for the start coordinate on the hit sequence
224 Returntype : int
225 Exceptions : none
226 Caller : general
227 Status : Stable
228
229 =cut
230
231 sub hstart{
232 my $self = shift;
233 $self->{'hstart'} = shift if(@_);
234 return $self->{'hstart'};
235 }
236
237
238 =head2 hend
239
240 Arg [1] : string $hend (optional)
241 Example : $hend = $fp->hend();
242 Description: Getter/Setter for the end coordinate on the hit sequence
243 Returntype : int
244 Exceptions : none
245 Caller : general
246 Status : Stable
247
248 =cut
249
250 sub hend{
251 my $self = shift;
252 $self->{'hend'} = shift if(@_);
253 return $self->{'hend'};
254 }
255
256
257
258 =head2 hstrand
259
260 Arg [1] : int $hstrand (optional)
261 Example : $hstrand = $fp->hstrand
262 Description: Getter/Setter for the orientation of the hit on the hit sequence
263 Returntype : 0,1,-1
264 Exceptions : thrown
265 Caller : general
266 Status : Stable
267
268 =cut
269
270 sub hstrand{
271 my $self = shift;
272
273 if(@_) {
274 my $hstrand = shift;
275 if(defined($hstrand) && $hstrand != 1 && $hstrand != 0 && $hstrand != -1) {
276 throw('hstrand must be one of (-1,0,1)');
277 }
278 $self->{'hstrand'} = $hstrand;
279 }
280
281 return $self->{'hstrand'};
282 }
283
284 =head2 hslice
285
286 Arg [1] : (optional) Bio::EnsEMBL::Slice $slice
287 Example : $hseqname = $featurepair->hslice()->seq_region_name();
288 Description: Getter/Setter for the Slice that is associated with this
289 hit feature. The slice represents the underlying sequence that this
290 feature is on. Note that this method call is analagous to the
291 old SeqFeature methods contig(), entire_seq(), attach_seq(),
292 etc.
293 Returntype : Bio::EnsEMBL::Slice
294 Exceptions : thrown if an invalid argument is passed
295 Caller : general
296 Status : Stable
297
298 =cut
299
300 sub hslice {
301 my $self = shift;
302
303 if(@_) {
304 my $sl = shift;
305 if(defined($sl) && (!ref($sl) || !($sl->isa('Bio::EnsEMBL::Slice') ) )) {
306 throw('slice argument must be a Bio::EnsEMBL::Slice');
307 }
308
309 $self->{'hslice'} = $sl;
310 }
311
312 return $self->{'hslice'};
313 }
314
315 =head2 hseq_region_name
316
317 Arg [1] : none
318 Example : print $feature->hseq_region_name();
319 Description: Gets the name of the hseq_region which this feature is on.
320 Returns undef if this Feature is not on a hslice.
321 Returntype : string or undef
322 Exceptions : none
323 Caller : general
324 Status : Stable
325
326 =cut
327
328 sub hseq_region_name {
329 my $self = shift;
330 my $slice = $self->{'hslice'};
331
332 return ($slice) ? $slice->seq_region_name() : undef;
333 }
334
335
336 =head2 hseq_region_strand
337
338 Arg [1] : none
339 Example : print $feature->hseq_region_strand();
340 Description: Returns the strand of the hseq_region which this feature is on
341 (i.e. feature_strand * slice_strand)
342 Returns undef if this Feature is not on a hslice.
343 Returntype : 1,0,-1 or undef
344 Exceptions : none
345 Caller : general
346 Status : Stable
347
348 =cut
349
350
351 sub hseq_region_strand {
352 my $self = shift;
353 my $slice = $self->{'hslice'};
354
355 return ($slice) ? $slice->strand() * $self->{'hstrand'} : undef;
356 }
357
358 =head2 hseq_region_start
359
360 Arg [1] : none
361 Example : print $feature->hseq_region_start();
362 Description: Convenience method which returns the absolute start of this
363 feature on the hseq_region, as opposed to the relative (hslice)
364 position.
365
366 Returns undef if this feature is not on a hslice.
367 Returntype : int or undef
368 Exceptions : none
369 Caller : general
370 Status : Stable
371
372 =cut
373
374 sub hseq_region_start {
375 my $self = shift;
376 my $slice = $self->{'hslice'};
377
378 return undef if(!$slice);
379
380 if($slice->strand == 1) {
381 return undef if(!defined($self->{'hstart'}));
382 return $slice->start() + $self->{'hstart'} - 1;
383 } else {
384 return undef if(!defined($self->{'hend'}));
385 return $slice->end() - $self->{'hend'} + 1;
386 }
387 }
388
389
390 =head2 hseq_region_end
391
392 Arg [1] : none
393 Example : print $feature->hseq_region_end();
394 Description: Convenience method which returns the absolute end of this
395 feature on the hseq_region, as opposed to the relative (hslice)
396 position.
397
398 Returns undef if this feature is not on a hslice.
399 Returntype : int or undef
400 Exceptions : none
401 Caller : general
402 Status : Stable
403
404 =cut
405
406 sub hseq_region_end {
407 my $self = shift;
408 my $slice = $self->{'hslice'};
409
410 return undef if(!$slice);
411
412 if($slice->strand == 1) {
413 return undef if(!defined($self->{'hend'}));
414 return $slice->start() + $self->{'hend'} - 1;
415 } else {
416 return undef if(!defined($self->{'hstart'}));
417 return $slice->end() - $self->{'hstart'} + 1;
418 }
419 }
420
421 =head2 score
422
423 Arg [1] : float $score (optional)
424 Example : $score = $fp->score();
425 Description: Getter/Setter for the score of this feature pair
426 Returntype : float
427 Exceptions : none
428 Caller : general
429 Status : Stable
430
431 =cut
432
433 sub score{
434 my $self = shift;
435 $self->{'score'} = shift if(@_);
436 return $self->{'score'};
437 }
438
439
440
441 =head2 percent_id
442
443 Arg [1] : float $percent_id (optional)
444 Example : $percent_id = $fp->percent_id();
445 Description: Getter/Setter for the percentage identity of this feature pair
446 Returntype : float
447 Exceptions : none
448 Caller : general
449 Status : Stable
450
451 =cut
452
453 sub percent_id {
454 my $self = shift;
455 $self->{'percent_id'} = shift if(@_);
456 return $self->{'percent_id'};
457 }
458
459
460
461 =head2 species
462
463 Arg [1] : string $genus_species_name (optional)
464 e.g. Homo_sapiens or Mus_musculus
465 Example : $species = $fp->species();
466 Description: get/set on the species of feature1
467 Returntype : string
468 Execeptions: none
469 Caller : general
470 Status : Stable
471
472 =cut
473
474 sub species{
475 my $self = shift;
476 $self->{'species'} = shift if(@_);
477 return $self->{'species'};
478 }
479
480
481 =head2 hspecies
482
483 Arg [1] : string $genus_species_name (optional)
484 e.g. Homo_sapiens or Mus_musculus
485 Example : $hspecies = $fp->hspecies
486 Description: get/set on the species of feature2
487 Returntype : string
488 Execeptions: none
489 Caller : general
490 Status : Stable
491
492 =cut
493
494 sub hspecies{
495 my $self = shift;
496 $self->{'hspecies'} = shift if(@_);
497 return $self->{'hspecies'};
498 }
499
500
501 =head2 coverage
502
503 Arg [1] : number (percentage) $coverage (optional)
504 Example : $cov = $fp->coverage();
505 Description: Getter/Setter for the % of the query covered by the feature
506 Returntype : string
507 Exceptions : none
508 Caller : general
509 Status : Stable
510
511 =cut
512
513 sub coverage {
514 my $self = shift;
515 $self->{'coverage'} = shift if(@_);
516 return $self->{'coverage'};
517 }
518
519
520 =head2 hcoverage
521
522 Arg [1] : number (percentage) $hcoverage (optional)
523 Example : $hcov = $fp->hcoverage();
524 Description: Getter/Setter for the % of the target covered by the feature
525 Returntype : string
526 Exceptions : none
527 Caller : general
528 Status : Stable
529
530 =cut
531
532 sub hcoverage {
533 my $self = shift;
534 $self->{'hcoverage'} = shift if(@_);
535 return $self->{'hcoverage'};
536 }
537
538 =head2 external_db_id
539
540 Arg [1] : int $external_db_id (optional)
541 Example : $ex_db = $fp->external_db_id();
542 Description: Getter/Setter for the external_db_id taregt source database feature
543 Returntype : string
544 Exceptions : none
545 Caller : general
546 Status : At Risk
547
548 =cut
549
550 sub external_db_id {
551 my $self = shift;
552 $self->{'external_db_id'} = shift if(@_);
553 return $self->{'external_db_id'};
554 }
555
556
557 =head2 db_name
558
559 Arg [1] : string $external_db_name (optional)
560 Example : $ex_db_name = $fp->dbname();
561 Description: Getter/Setter for the external_db_name attribute, name of external database
562 Returntype : string
563 Exceptions : none
564 Caller : general
565 Status : At Risk
566
567 =cut
568
569 sub db_name {
570 my $self = shift;
571 $self->{'dbname'} = shift if(@_);
572 return $self->{'dbname'};
573 }
574
575 =head2 db_display_name
576
577 Arg [1] : string $db_display_name (optional)
578 Example : $ex_db_display_name = $fp->db_display_name();
579 Description: Getter/Setter for the db_display_name attribute
580 The preferred display name for the external database.
581 Returntype : string
582 Exceptions : none
583 Caller : general
584 Status : At Risk
585
586 =cut
587
588 sub db_display_name {
589 my $self = shift;
590 $self->{'db_display_name'} = shift if(@_);
591 return $self->{'db_display_name'};
592 }
593
594
595
596 =head2 p_value
597
598 Arg [1] : float $p_value (optional)
599 Example : $eval = $fp->p_value
600 Description: Getter Setter for the evalue / pvalue of this feature
601 Returntype : float
602 Exceptions : none
603 Caller : general
604 Status : Stable
605
606 =cut
607
608 sub p_value{
609 my $self = shift;
610 $self->{'p_value'} = shift if(@_);
611 return $self->{'p_value'};
612 }
613
614
615
616 =head2 display_id
617
618 Arg [1] : none
619 Example : print $fp->display_id();
620 Description: This method returns a string that is considered to be
621 the 'display' identifier. For feature pairs this is the
622 hseqname if it is available otherwise it is an empty string.
623 Returntype : string
624 Exceptions : none
625 Caller : web drawing code
626 Status : Stable
627
628 =cut
629
630 sub display_id {
631 my $self = shift;
632 return $self->{'hseqname'} || '';
633 }
634
635
636 =head2 identical_matches
637
638 Arg [1] : int $identical_matches (optional)
639 Example :
640 Description: get/set on the number of identical matches
641 Returntype : int
642 Execeptions: none
643 Caller : general
644 Status : Stable
645
646 =cut
647
648 sub identical_matches{
649 my ($self,$arg) = @_;
650
651 if (defined($arg)) {
652 return $self->{'_identical_matches'} = $arg;
653 }
654 return $self->{'_identical_matches'};
655 }
656
657 =head2 positive_matches
658
659 Arg [1] : int $positive_matches (optional)
660 Example :
661 Description: get/set on the number of positive matches
662 Returntype : int
663 Execeptions: none
664 Caller : general
665 Status : Stable
666
667 =cut
668
669 sub positive_matches{
670 my ($self,$arg) = @_;
671
672 if (defined($arg)) {
673 return $self->{'_positive_matches'} = $arg;
674 }
675 return $self->{'_positive_matches'};
676 }
677
678 =head2 group_id
679
680 Arg [1] : int $group_id
681 Example : none
682 Description: get/set for attribute group_id
683 Returntype : int
684 Exceptions : none
685 Caller : general
686 Status : Stable
687
688 =cut
689
690 sub group_id {
691 my ($self, $arg) = @_;
692
693 if ( defined $arg ) {
694 $self->{'group_id'} = $arg ;
695 }
696 return $self->{'group_id'};
697 }
698
699 =head2 level_id
700
701 Arg [1] : int $level_id
702 Example : none
703 Description: get/set for attribute level_id
704 Returntype : int
705 Exceptions : none
706 Caller : general
707 Status : Stable
708
709 =cut
710
711 sub level_id {
712 my ($self, $arg) = @_;
713
714 if ( defined $arg ) {
715 $self->{'level_id'} = $arg ;
716 }
717 return $self->{'level_id'};
718 }
719
720
721
722
723
724
725 =head1 DEPRECATED METHODS
726
727 =cut
728
729
730 =head2 feature1
731
732 Description: DEPRECATED use start(), end(), strand(), slice(), etc.
733 methods instead
734
735 =cut
736
737 sub feature1 {
738 my ($self,$arg) = @_;
739
740 deprecate('Use start(), end(), strand(), slice(), etc. methods instead.');
741
742 if($arg) {
743 $self->start($arg->start());
744 $self->end($arg->end());
745 $self->strand($arg->strand());
746 $self->score($arg->score());
747 $self->percent_id($arg->percent_id());
748 $self->analysis($arg->analysis);
749 if($arg->contig){
750 $self->slice($arg->contig);
751 }
752 }
753
754 return $self;
755 }
756
757 =head2 feature2
758
759 Description: DEPRECATED use hstart(), hend(), hstrand() etc.
760 methods instead
761
762 =cut
763
764 sub feature2 {
765 my ($self,$arg) = @_;
766
767 deprecate('Use hstart(),hend(),hstrand(),hseqname() methods instead.');
768
769 if (defined($arg)) {
770 $self->hstart($arg->start());
771 $self->hend($arg->end());
772 $self->hstrand($arg->strand());
773 $self->hseqname($arg->seqname());
774 return $arg;
775 }
776
777 return new Bio::EnsEMBL::Feature(
778 -START => $self->hstart(),
779 -END => $self->hend(),
780 -STRAND => $self->hstrand(),
781 -SCORE => $self->score(),
782 -PERCENT_ID => $self->percent_id(),
783 -ANALYSIS => $self->analysis,
784 -SEQNAME => $self->hseqname());
785 }
786
787
788
789
790 =head2 invert
791
792 Arg [1] : (optional) Bio::EnsEMBL::Slice $newslice
793 Example : $feature->invert();
794 Description: This method is used to swap the hit and query sides of this
795 feature in place. A new slice may optionally provided which
796 this feature will be placed on. If no slice is provided the
797 feature slice will be set to undef.
798 Returntype : none
799 Exceptions : none
800 Caller : pipeline (BlastMiniGenewise)
801
802 =cut
803
804 sub invert {
805 my ($self,$slice) = @_;
806
807 if (! defined $slice && defined $self->hslice) {
808 $slice = $self->hslice;
809 }
810
811 my $hstart = $self->{'hstart'};
812 my $hend = $self->{'hend'};
813 my $hstrand = $self->{'hstrand'};
814 my $hspecies = $self->{'hspecies'};
815 my $hseqname = $self->{'hseqname'};
816
817 my $start = $self->{'start'};
818 my $end = $self->{'end'};
819 my $strand = $self->{'strand'};
820 my $species = $self->{'species'};
821 my $seqname = $self->seqname();
822
823 $self->{'start'} = $hstart;
824 $self->{'end'} = $hend;
825 $self->{'strand'} = $hstrand;
826 $self->{'species'} = $hspecies;
827 $self->{'seqname'} = $hseqname if(defined($hseqname));
828
829 $self->{'hstart'} = $start;
830 $self->{'hend'} = $end;
831 $self->{'hstrand'} = $strand;
832 $self->{'hseqname'} = $seqname;
833 $self->{'hspecies'} = $species;
834
835 $self->{'hslice'} = $self->slice;
836 $self->{'slice'} = $slice;
837 }
838
839
840
841 =head2 validate
842
843 Description: DEPRECATED do not use
844
845 =cut
846
847 sub validate {
848 my ($self) = @_;
849
850 deprecate('This method does nothing and should not be used.');
851 }
852
853 =head2 validate_prot_feature
854
855 Description: DEPRECATED do not use
856
857 =cut
858
859 sub validate_prot_feature{
860 my ($self) = @_;
861
862 deprecate('This method does nothing and should not be used.');
863 }
864
865
866 =head2 set_featurepair_fields
867
868 Description: DEPRECATED do not use
869
870 =cut
871
872 sub set_featurepair_fields {
873 my ($self, $start, $end, $strand, $score, $seqname, $hstart, $hend,
874 $hstrand, $hseqname, $analysis, $e_value, $perc_id,
875 $phase, $end_phase) = @_;
876
877 deprecate("Use individual Getter/Setters or Constructor arguments " .
878 " instead.\nThere is no advantage to using this method.");
879
880 throw('interface fault') if (@_ < 12 or @_ > 15);
881
882 $self->start($start);
883 $self->end($end);
884 $self->strand($strand);
885 $self->score($score);
886 $self->seqname($seqname);
887 $self->hstart($hstart);
888 $self->hend($hend);
889 $self->hstrand($hstrand);
890 $self->hseqname($hseqname);
891 $self->analysis($analysis);
892 $self->p_value ($e_value) if (defined $e_value);
893 $self->percent_id ($perc_id) if (defined $perc_id);
894 $self->phase ($phase) if (defined $phase);
895 $self->end_phase ($end_phase) if (defined $end_phase);
896 }
897
898
899 =head2 gffstring
900
901 Description: DEPRECATED do not use
902
903 =cut
904
905 sub gffstring {
906 my ($self) = @_;
907
908 deprecate('Do not use');
909
910 my $str .= (defined $self->slice) ? $self->slice->name()."\t": "\t";
911 $str .= "\t"; #source tag
912 $str .= "\t"; #primary tag
913 $str .= (defined $self->start) ? $self->start."\t" : "\t";
914 $str .= (defined $self->end) ? $self->end."\t" : "\t";
915 $str .= (defined $self->score) ? $self->score."\t" : "\t";
916 $str .= (defined $self->strand) ? $self->strand."\t" : ".\t";
917 $str .= ".\t"; #phase
918 $str .= ".\t"; #end phase
919
920 my $hstrand = "+";
921
922 if (($self->hstrand)&&($self->hstrand == -1)) {
923 $hstrand = "-";
924 }
925
926 #Append a few FeaturePair specific things
927 $str .= (defined $self->hseqname) ? $self->hseqname."\t" : "\t";
928 $str .= (defined $self->hstart) ? $self->hstart."\t" : "\t";
929 $str .= (defined $self->hend) ? $self->hend."\t" : "\t";
930 $str .= (defined $self->hstrand) ? $hstrand."\t" : "\t";
931 $str .= (defined $self->hphase) ? $self->hphase."\t" : ".\t";
932
933 return $str;
934 }
935
936
937
938
939 =head2 hphase
940
941 Description: DEPRECATED do not use
942
943 =cut
944
945 sub hphase {
946 my ($self, $value) = @_;
947
948 deprecate('This method does nothing useful.');
949
950 if (defined($value)) {
951 $self->{_hphase} = $value;
952 }
953
954 return $self->{_hphase};
955 }
956
957
958 =head2 hend_phase
959
960 Description: DEPRECATED do not use
961
962 =cut
963
964 sub hend_phase {
965 my ($self, $value) = @_;
966
967 deprecate('This method does nothing useful.');
968
969 if (defined($value)) {
970 $self->{_hend_phase} = $value;
971 }
972 return $self->{_hend_phase};
973 }
974
975 sub extra_data {
976 my $self = shift;
977 $self->{'extra_data'} = shift if(@_);
978 return $self->{'extra_data'};
979 }
980
981 sub type {
982 my $self = shift;
983 $self->{'extra_data'}->{'type'} = shift if(@_);
984 if (exists $self->{'extra_data'}) {
985 return $self->{'extra_data'}->{'type'};
986 }
987 return;
988 }
989
990 1;