annotate variant_effect_predictor/Bio/LiveSeq/Gene.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Gene.pm,v 1.13 2001/06/18 08:27:53 heikki Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # bioperl module for Bio::LiveSeq::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Joseph Insana <insana@ebi.ac.uk> <jinsana@gmx.net>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Joseph Insana
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::LiveSeq::Gene - Range abstract class for LiveSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 # documentation needed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 This is used as storage for all object references concerning a particular gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 AUTHOR - Joseph A.L. Insana
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 Email: Insana@ebi.ac.uk, jinsana@gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Address:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 EMBL Outstation, European Bioinformatics Institute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 Wellcome Trust Genome Campus, Hinxton
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 Cambs. CB10 1SD, United Kingdom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 package Bio::LiveSeq::Gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $VERSION=2.3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # Version history:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 # Tue Apr 4 15:22:41 BST 2000 v 1.0 begun
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 # Tue Apr 4 16:19:27 BST 2000 v 1.1 completed new()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 # Tue Apr 4 19:15:41 BST 2000 v 1.2 tested. Working. Simple methods created.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 # Wed Apr 5 01:26:58 BST 2000 v 1.21 multiplicity, featuresnum() created
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 # Wed Apr 5 02:16:01 BST 2000 v 1.22 added upbound and downbound attributes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 # Fri Apr 7 02:03:39 BST 2000 v 1.3 added printfeaturesnum and _set_Gene_in_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 # Fri Apr 7 02:53:05 BST 2000 v 2.0 added maxtranscript object creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 # Wed Jun 28 18:38:45 BST 2000 v 2.1 chaged croak to carp + return(-1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 # Wed Jul 12 15:19:26 BST 2000 v 2.11 ->strand call protected by if(ref(transcript))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 # Tue Jan 30 14:15:42 EST 2001 v 2.2 delete_Obj added, to flush circular references
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 # Wed Apr 4 13:29:59 BST 2001 v 2.3 LiveSeq-wide warn and verbose added
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 use Carp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 use vars qw($VERSION @ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 use Bio::LiveSeq::Prim_Transcript 1.0; # needed to create maxtranscript obj
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 #use Bio::LiveSeq::SeqI 2.11; # uses SeqI, inherits from it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 #@ISA=qw(Bio::LiveSeq::SeqI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Usage : $gene = Bio::LiveSeq::Gene->new(-name => "name",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 -features => $hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 -upbound => $min
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 -downbound => $max);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 Function: generates a new Bio::LiveSeq::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 Returns : reference to a new object of class Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 Errorcode -1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 Args : one string and one hashreference containing all features defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 for the Gene and the references to the LiveSeq objects for those
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 features.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 Two labels for defining boundaries of the gene. Usually the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 boundaries will reflect max span of transcript, exon... features,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 while the DNA sequence will be created with some flanking regions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 (e.g. with the EMBL_SRS::gene2liveseq routine).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 If these two labels are not given, they will default to the start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 and end of the DNA object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Note : the format of the hash has to be like
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 DNA => reference to LiveSeq::DNA object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Transcripts => reference to array of transcripts objrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Transclations => reference to array of transcripts objrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Exons => ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Introns => ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Prim_Transcripts => ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Repeat_Units => ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Repeat_Regions => ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Only DNA and Transcripts are mandatory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my ($thing, %args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $class = ref($thing) || $thing;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my ($i,$self,%gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my ($name,$inputfeatures,$upbound,$downbound)=($args{-name},$args{-features},$args{-upbound},$args{-downbound});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 unless (ref($inputfeatures) eq "HASH") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 carp "$class not initialised because features hash not given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my %features=%{$inputfeatures}; # this is done to make our own hash&ref, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my $features=\%features; # the ones input'ed, that could get destroyed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 my $DNA=$features->{'DNA'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 unless (ref($DNA) eq "Bio::LiveSeq::DNA") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 carp "$class not initialised because DNA feature not found";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my ($minstart,$maxend);# used to calculate Gene->maxtranscript from Exon, Transcript (CDS) and Prim_Transcript features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my ($start,$end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 my @Transcripts=@{$features->{'Transcripts'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 unless (ref($Transcripts[0]) eq "Bio::LiveSeq::Transcript") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $self->warn("$class not initialised: first Transcript not a LiveSeq object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $strand=$Transcripts[0]->strand; # for maxtranscript consistency check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 for $i (@Transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 unless ((ref($i) eq "Bio::LiveSeq::Transcript")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $self->warn("$class not initialised because of problems in Transcripts feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 unless($minstart) { $minstart=$start; } # initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 unless($maxend) { $maxend=$end; } # initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 if ($i->strand != $strand) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $self->warn("$class not initialised because exon-CDS-prim_transcript features do not share the same strand!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 if (($strand == 1)&&($start < $minstart)||($strand == -1)&&($start > $minstart)) { $minstart=$start; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 if (($strand == 1)&&($end > $maxend)||($strand == -1)&&($end < $maxend)) { $maxend=$end; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 my @Translations; my @Introns; my @Repeat_Units; my @Repeat_Regions;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 my @Prim_Transcripts; my @Exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 if (defined($features->{'Translations'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 @Translations=@{$features->{'Translations'}}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 if (defined($features->{'Exons'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 @Exons=@{$features->{'Exons'}}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 if (defined($features->{'Introns'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 @Introns=@{$features->{'Introns'}}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 if (defined($features->{'Repeat_Units'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 @Repeat_Units=@{$features->{'Repeat_Units'}}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 if (defined($features->{'Repeat_Regions'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 @Repeat_Regions=@{$features->{'Repeat_Regions'}}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 if (defined($features->{'Prim_Transcripts'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 @Prim_Transcripts=@{$features->{'Prim_Transcripts'}}; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 if (@Translations) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 for $i (@Translations) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 unless ((ref($i) eq "Bio::LiveSeq::Translation")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $self->warn("$class not initialised because of problems in Translations feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 if (@Exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 for $i (@Exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 unless ((ref($i) eq "Bio::LiveSeq::Exon")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $self->warn("$class not initialised because of problems in Exons feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 if ($i->strand != $strand) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $self->warn("$class not initialised because exon-CDS-prim_transcript features do not share the same strand!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 if (($strand == 1)&&($start < $minstart)||($strand == -1)&&($start > $minstart)) { $minstart=$start; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 if (($strand == 1)&&($end > $maxend)||($strand == -1)&&($end < $maxend)) { $maxend=$end; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 if (@Introns) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 for $i (@Introns) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 unless ((ref($i) eq "Bio::LiveSeq::Intron")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $self->warn("$class not initialised because of problems in Introns feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 if (@Repeat_Units) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 for $i (@Repeat_Units) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 unless ((ref($i) eq "Bio::LiveSeq::Repeat_Unit")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $self->warn("$class not initialised because of problems in Repeat_Units feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 if (@Repeat_Regions) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 for $i (@Repeat_Regions) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 unless ((ref($i) eq "Bio::LiveSeq::Repeat_Region")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $self->warn("$class not initialised because of problems in Repeat_Regions feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 if (@Prim_Transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 for $i (@Prim_Transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 ($start,$end)=($i->start,$i->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 unless ((ref($i) eq "Bio::LiveSeq::Prim_Transcript")&&($DNA->valid($start))&&($DNA->valid($end))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $self->warn("$class not initialised because of problems in Prim_Transcripts feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 if ($i->strand != $strand) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $self->warn("$class not initialised because exon-CDS-prim_transcript features do not share the same strand!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 if (($strand == 1)&&($start < $minstart)||($strand == -1)&&($start > $minstart)) { $minstart=$start; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 if (($strand == 1)&&($end > $maxend)||($strand == -1)&&($end < $maxend)) { $maxend=$end; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 # create an array containing all obj references for all Gene Features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 # useful for _set_Gene_in_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 my @allfeatures;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 push (@allfeatures,$DNA,@Transcripts,@Translations,@Exons,@Introns,@Repeat_Units,@Repeat_Regions,@Prim_Transcripts);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 # create hash holding numbers for Gene Features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my %multiplicity;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 my $key; my @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 foreach $key (keys(%features)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 unless ($key eq "DNA") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 @array=@{$features{$key}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 $multiplicity{$key}=scalar(@array);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $multiplicity{DNA}=1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 # create maxtranscript object. It's a Prim_Transcript with start as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 # minimum start and end as the maximum end.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 # usually these start and end will be the same as the gene->upbound and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 # gene->downbound, but maybe there could be cases when this will be false
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 # (e.g. with repeat_units just before the prim_transcript or first exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 # but still labelled with the same /gene qualifier)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 my $maxtranscript=Bio::LiveSeq::Prim_Transcript->new(-start => $minstart, -end => $maxend, -strand => $strand, -seq => $DNA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 # check the upbound downbound parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 if (defined($upbound)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 unless ($DNA->valid($upbound)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $self->warn("$class not initialised because upbound label not valid");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $upbound=$DNA->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 if (defined($downbound)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 unless ($DNA->valid($downbound)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $self->warn("$class not initialised because downbound label not valid");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 return (-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 $downbound=$DNA->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 %gene = (name => $name, features => $features,multiplicity => \%multiplicity,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 upbound => $upbound, downbound => $downbound, allfeatures => \@allfeatures, maxtranscript => $maxtranscript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 $self = \%gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $self = bless $self, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 _set_Gene_in_all($self,@allfeatures);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 # this sets the "gene" objref in all the objects "belonging" to the Gene,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 # i.e. in all its Features.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 sub _set_Gene_in_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 my $Gene=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 my $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 foreach $self (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $self->gene($Gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 # you can get or set the name of the gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 sub name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $self->{'name'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 unless (exists $self->{'name'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 return "unknown";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 return $self->{'name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 # gets the features hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 sub features {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 return ($self->{'features'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 sub get_DNA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 return ($self->{'features'}->{'DNA'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 sub get_Transcripts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 return ($self->{'features'}->{'Transcripts'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 sub get_Translations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 return ($self->{'features'}->{'Translations'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 sub get_Prim_Transcripts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 return ($self->{'features'}->{'Prim_Transcripts'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 sub get_Repeat_Units {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 return ($self->{'features'}->{'Repeat_Units'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 sub get_Repeat_Regions {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 return ($self->{'features'}->{'Repeat_Regions'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 sub get_Introns {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 return ($self->{'features'}->{'Introns'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 sub get_Exons {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 return ($self->{'features'}->{'Exons'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 sub featuresnum {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 return ($self->{'multiplicity'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 sub upbound {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 return ($self->{'upbound'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 sub downbound {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 return ($self->{'downbound'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 sub printfeaturesnum {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 my ($key,$value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 my %hash=%{$self->featuresnum};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 foreach $key (keys(%hash)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 $value=$hash{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 print "\t$key => $value\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 sub maxtranscript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 return ($self->{'maxtranscript'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 sub delete_Obj {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 my @values= values %{$self};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 my @keys= keys %{$self};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 foreach my $key ( @keys ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 delete $self->{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 foreach my $value ( @values ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 if (index(ref($value),"LiveSeq") != -1) { # object case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 # delete $self->{$value};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 $value->delete_Obj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 } elsif (index(ref($value),"ARRAY") != -1) { # array case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my @array=@{$value};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 my $element;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 foreach $element (@array) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $element->delete_Obj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 } elsif (index(ref($value),"HASH") != -1) { # object case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 my %hash=%{$value};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 my $element;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 foreach $element (%hash) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 $element->delete_Obj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 return(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 =head2 verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Title : verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 Usage : $self->verbose(0)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 Function: Sets verbose level for how ->warn behaves
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 -1 = silent: no warning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 0 = reduced: minimal warnings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 1 = default: all warnings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 2 = extended: all warnings + stack trace dump
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 3 = paranoid: a warning becomes a throw and the program dies
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Note: a quick way to set all LiveSeq objects at the same verbosity
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 level is to change the DNA level object, since they all look to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 that one if their verbosity_level attribute is not set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 But the method offers fine tuning possibility by changing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 verbose level of each object in a different way.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 So for example, after $loader= and $gene= have been retrieved
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 by a program, the command $gene->verbose(0); would
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 set the default verbosity level to 0 for all objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Returns : the current verbosity level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Args : -1,0,1,2 or 3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 sub verbose {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 my $value = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 return $self->{'features'}->{'DNA'}->verbose($value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 sub warn {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 my $self=shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 my $value = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 return $self->{'features'}->{'DNA'}->warn($value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 1;