annotate variant_effect_predictor/Bio/LiveSeq/Range.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Range.pm,v 1.7 2001/06/18 08:27:53 heikki Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # bioperl module for Bio::LiveSeq::Range
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Joseph Insana <insana@ebi.ac.uk> <jinsana@gmx.net>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Joseph Insana
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::LiveSeq::Range - Range abstract class for LiveSeq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 # documentation needed
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 This is used as parent for exon and intron classes.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 =head1 AUTHOR - Joseph A.L. Insana
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 Email: Insana@ebi.ac.uk, jinsana@gmx.net
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 Address:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 EMBL Outstation, European Bioinformatics Institute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 Wellcome Trust Genome Campus, Hinxton
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 Cambs. CB10 1SD, United Kingdom
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 package Bio::LiveSeq::Range;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 $VERSION=1.6;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 # Version history:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 # Mon Mar 20 22:21:44 GMT 2000 v 1.0 begun
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 # Tue Mar 21 00:50:05 GMT 2000 v 1.1 new() added
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 # Tue Mar 21 02:44:45 GMT 2000 v 1.2 private start(), more checks in new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 # Thu Mar 23 19:06:03 GMT 2000 v 1.3 follows() replaces is_downstream
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 # Wed Apr 12 16:35:12 BST 2000 v 1.4 added valid()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 # Mon Jun 26 15:25:14 BST 2000 v 1.44 ranges with start=end are now accepted / valid() removed because inherited now from SeqI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 # Tue Jun 27 14:06:06 BST 2000 v 1.5 croak changed to carp and return(-1) in new() function
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 # Wed Mar 28 16:47:36 BST 2001 v 1.6 carp -> warn,throw (coded methods in SeqI)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 use vars qw($VERSION @ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 use Bio::LiveSeq::SeqI 3.2; # uses SeqI, inherits from it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 @ISA=qw(Bio::LiveSeq::SeqI);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 Usage : $range1 = Bio::LiveSeq::Range->new(-seq => $obj_ref,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 -start => $beginlabel,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 -end => $endlabel, -strand => 1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 Function: generates a new Bio::LiveSeq::Range
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 Returns : reference to a new object of class Range
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 Errorcode -1
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 Args : two labels, an obj_ref and an integer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 strand 1=forward strand, strand -1=reverse strand
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 if strand not specified, it defaults to 1
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 the -seq argument must point to the underlying DNA LiveSeq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 my ($thing, %args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 my $class = ref($thing) || $thing;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 my ($obj,%range);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 my ($seq,$start,$end,$strand)=($args{-seq},$args{-start},$args{-end},$args{-strand});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 $obj = \%range;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 $obj = bless $obj, $class;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 unless ($seq->valid($start)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 $obj->warn("$class not initialised because start label not valid");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 return (-1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 unless ($seq->valid($end)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 $obj->warn("$class not initialised because end label not valid");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 return (-1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 unless (defined $strand) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 $strand = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 if (($strand != 1)&&($strand != -1)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 $obj->warn("$class not initialised because strand identifier not valid. Use 1 (forward strand) or -1 (reverse strand).");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 return (-1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 if ($start eq $end) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 $obj->warn("$class reports: start and end label are the same....");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 unless ($seq->follows($start,$end,$strand)==1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 $obj->warn("Fatal: end label $end doesn't follow start label $start for strand $strand!");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 return (-1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 #if ($strand == 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 # unless ($seq->is_downstream($start,$end)==1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 # croak "Fatal: end label not downstream of start label for forward strand!";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 # }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 #} else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 # unless ($seq->is_upstream($start,$end)==1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 # croak "Fatal: end label not upstream of start label for reverse strand!";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 # }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 #}
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 $obj->{'seq'}=$seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 $obj->{'start'}=$start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 $obj->{'end'}=$end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 $obj->{'strand'}=$strand;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 return $obj;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 =head2 valid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 Title : valid
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 Usage : $boolean = $obj->valid($label)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 Function: tests if a label exists AND is part of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 Returns : boolean
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 Args : label
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 1;