Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/EnsEMBL/DensityFeature.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::DensityFeature - A feature representing a density, or | |
| 24 precentage coverage etc. in a given region. | |
| 25 | |
| 26 =head1 SYNOPSIS | |
| 27 | |
| 28 use Bio::EnsEMBL::DensityFeature; | |
| 29 | |
| 30 $feature = Bio::EnsEMBL::DensityFeature->new( | |
| 31 -seq_region => $region, | |
| 32 -start => 1, | |
| 33 -end => 1e6, | |
| 34 -density_type => $dt, | |
| 35 -density_value => 98.5 | |
| 36 ); | |
| 37 | |
| 38 =head1 DESCRIPTION | |
| 39 | |
| 40 A density feature represents a count, density, or percentage coverage, | |
| 41 etc. for a given region. | |
| 42 | |
| 43 This module is part of the Ensembl project http://www.ensembl.org | |
| 44 | |
| 45 =head1 METHODS | |
| 46 | |
| 47 =cut | |
| 48 | |
| 49 | |
| 50 use strict; | |
| 51 use warnings; | |
| 52 | |
| 53 package Bio::EnsEMBL::DensityFeature; | |
| 54 | |
| 55 use Bio::EnsEMBL::Feature; | |
| 56 use Bio::EnsEMBL::Utils::Argument qw(rearrange); | |
| 57 use Bio::EnsEMBL::Utils::Exception qw(throw); | |
| 58 use Bio::EnsEMBL::DensityType; | |
| 59 | |
| 60 use vars qw(@ISA); | |
| 61 | |
| 62 @ISA = qw(Bio::EnsEMBL::Feature); | |
| 63 | |
| 64 | |
| 65 =head2 new | |
| 66 | |
| 67 Arg [SEQ_REGION] : the sequence over which the density was calculated. | |
| 68 | |
| 69 Arg [START] : start point on the seq at which density was calulated. | |
| 70 | |
| 71 Arg [END] : end point on the seq at which density was calulated. | |
| 72 | |
| 73 Arg [DENSITY_TYPE] : the type of density calculated. | |
| 74 | |
| 75 Arg [DENSITY_VALUE] : the density. | |
| 76 | |
| 77 Arg [...] : Named arguments passed to superclass | |
| 78 Example : $feature = Bio::EnsEMBL::DensityFeature->new | |
| 79 (-seq_region => $region, | |
| 80 -start => 1, | |
| 81 -end => 1e6, | |
| 82 -density_type => $dt, | |
| 83 -density_value => 98.5) | |
| 84 | |
| 85 Description: Creates a new density feature. | |
| 86 Returntype : Bio::EnsEMBL::DensityFeature | |
| 87 Exceptions : throw if invalid density value type is provided | |
| 88 Caller : general | |
| 89 Status : Stable | |
| 90 | |
| 91 =cut | |
| 92 | |
| 93 sub new { | |
| 94 my $caller = shift; | |
| 95 | |
| 96 #allow constructor to be called as class or object method | |
| 97 my $class = ref($caller) || $caller; | |
| 98 | |
| 99 my $self = $class->SUPER::new(@_); | |
| 100 | |
| 101 my($seq_region, $start, $end, $dt, $dv) = | |
| 102 rearrange(['SEQ_REGION', 'START', 'END', 'DENSITY_TYPE', 'DENSITY_VALUE'], | |
| 103 @_); | |
| 104 | |
| 105 throw("Density value must be >= 0.") if($dv < 0); | |
| 106 | |
| 107 if(!defined($dt)){ | |
| 108 throw("Density Type is NOT optional."); | |
| 109 } | |
| 110 | |
| 111 $self->{'density_type'} = $dt; | |
| 112 $self->{'density_value'} = $dv; | |
| 113 | |
| 114 $self->{'slice'} = $seq_region; | |
| 115 $self->{'start'} = $start; | |
| 116 $self->{'end'} = $end; | |
| 117 | |
| 118 | |
| 119 return $self; | |
| 120 } | |
| 121 | |
| 122 | |
| 123 =head2 new_fast | |
| 124 | |
| 125 Arg [...] : none | |
| 126 Example : $feature = Bio::EnsEMBL::DensityFeature->new_fast(); | |
| 127 Description: Creates a new density feature. | |
| 128 Returntype : Bio::EnsEMBL::DensityFeature | |
| 129 Exceptions : none | |
| 130 Caller : general | |
| 131 Status : Stable | |
| 132 | |
| 133 =cut | |
| 134 | |
| 135 sub new_fast{ | |
| 136 my $caller = shift; | |
| 137 | |
| 138 #allow constructor to be called as class or object method | |
| 139 my $class = ref($caller) || $caller; | |
| 140 | |
| 141 my $self = $class->SUPER::new(@_); | |
| 142 | |
| 143 return $self; | |
| 144 } | |
| 145 | |
| 146 | |
| 147 =head2 strand | |
| 148 | |
| 149 Arg [1] : none | |
| 150 Example : $strand = $df->strand(); | |
| 151 Description: Getter fot the strand attribute. Density features always have | |
| 152 strand 0 and this attribute is not settable. | |
| 153 Returntype : int (always 0) | |
| 154 Exceptions : warning if an attempt is made to set the strand | |
| 155 Caller : general | |
| 156 Status : Stable | |
| 157 | |
| 158 =cut | |
| 159 | |
| 160 sub strand { | |
| 161 my $self = shift; | |
| 162 warning("DensityFeature strand is not settable") if(@_); | |
| 163 return 0; | |
| 164 } | |
| 165 | |
| 166 | |
| 167 | |
| 168 =head2 density_value | |
| 169 | |
| 170 Arg [1] : (optional) float $density_value | |
| 171 Example : $dv = $density_feature->density_value(); | |
| 172 Description: Getter/Setter for the density value of this DensityFeature. | |
| 173 The density value may be a count, a percentage, or a coverage | |
| 174 of a feature type in the area defined by this feature. | |
| 175 Returntype : float | |
| 176 Exceptions : throw if a negative density value is provided | |
| 177 Caller : general | |
| 178 Status : Stable | |
| 179 | |
| 180 =cut | |
| 181 | |
| 182 sub density_value { | |
| 183 my $self = shift; | |
| 184 | |
| 185 if(@_) { | |
| 186 my $density_value = shift; | |
| 187 throw("Density value must be >= 0.") if($density_value < 0); | |
| 188 $self->{'density_value'} = $density_value; | |
| 189 } | |
| 190 | |
| 191 return $self->{'density_value'}; | |
| 192 } | |
| 193 | |
| 194 | |
| 195 | |
| 196 =head2 analysis | |
| 197 | |
| 198 Arg [1] : (optional) Bio::EnsEMBL::Analysis $analysis | |
| 199 New value for the analysis of the attached DensityType | |
| 200 Example : print $df->analysis()->logic_name(); | |
| 201 Description: Overridden superclass analysis method, to chain to analysis | |
| 202 method on attached DensityType. | |
| 203 Returntype : Bio::EnsEMBL::Analysis | |
| 204 Exceptions : none | |
| 205 Caller : general | |
| 206 Status : Stable | |
| 207 | |
| 208 =cut | |
| 209 | |
| 210 sub analysis { | |
| 211 my $self = shift; | |
| 212 | |
| 213 my $dt = $self->density_type(); | |
| 214 | |
| 215 return undef if(!$dt); | |
| 216 | |
| 217 return $dt->analysis(@_); | |
| 218 } | |
| 219 | |
| 220 | |
| 221 | |
| 222 =head2 density_type | |
| 223 | |
| 224 Arg [1] : string $newval (optional) | |
| 225 The new value to set the density_value_type attribute to | |
| 226 Example : $density_value_type = $obj->density_value_type() | |
| 227 Description: Getter/Setter for the density_value_type attribute | |
| 228 Returntype : Bio::EnsEMBL::DensityType | |
| 229 Exceptions : if object passed is not of type DensityType | |
| 230 Caller : general | |
| 231 Status : Stable | |
| 232 | |
| 233 =cut | |
| 234 | |
| 235 sub density_type{ | |
| 236 my $self = shift; | |
| 237 if(@_) { | |
| 238 my $type = shift; | |
| 239 if( !ref $type || !$type->isa("Bio::EnsEMBL::DensityType")){ | |
| 240 throw("object passed must be an ensembl DensityType ". | |
| 241 "not a [".ref($type)."]"); | |
| 242 } | |
| 243 else{ | |
| 244 $self->{'density_type'}=$type; | |
| 245 } | |
| 246 } | |
| 247 return $self->{'density_type'}; | |
| 248 } | |
| 249 | |
| 250 | |
| 251 ###BG######## | |
| 252 | |
| 253 =head2 scaledvalue | |
| 254 | |
| 255 Title : scaledvalue | |
| 256 Usage : $obj->scaledvalue($newval) | |
| 257 Function: | |
| 258 Returns : scalar - object's scaled value | |
| 259 Args : newvalue (optional) | |
| 260 Status : Stable | |
| 261 | |
| 262 =cut | |
| 263 | |
| 264 sub scaledvalue{ | |
| 265 my $obj = shift; | |
| 266 if( @_ ) { | |
| 267 my $scaledvalue = shift; | |
| 268 $obj->{'scaledvalue'} = $scaledvalue; | |
| 269 } | |
| 270 return $obj->{'scaledvalue'}; | |
| 271 } | |
| 272 | |
| 273 | |
| 274 | |
| 275 =head2 url | |
| 276 | |
| 277 Title : url | |
| 278 Usage : $obj->url($newval) | |
| 279 Function: | |
| 280 Returns : String containing this object's url | |
| 281 Args : newvalue (optional) | |
| 282 Status : Stable | |
| 283 | |
| 284 | |
| 285 =cut | |
| 286 | |
| 287 sub url{ | |
| 288 my $obj = shift; | |
| 289 if( @_ ) { | |
| 290 my $url = shift; | |
| 291 $obj->{'url'} = $url; | |
| 292 } | |
| 293 return $obj->{'url'}; | |
| 294 | |
| 295 } | |
| 296 | |
| 297 | |
| 298 1; | |
| 299 | |
| 300 | |
| 301 |
