Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/EnsEMBL/Map/Qtl.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/EnsEMBL/Map/Qtl.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,340 @@ +=head1 LICENSE + + Copyright (c) 1999-2012 The European Bioinformatics Institute and + Genome Research Limited. All rights reserved. + + This software is distributed under a modified Apache license. + For license details, please see + + http://www.ensembl.org/info/about/code_licence.html + +=head1 CONTACT + + Please email comments or questions to the public Ensembl + developers list at <dev@ensembl.org>. + + Questions may also be sent to the Ensembl help desk at + <helpdesk@ensembl.org>. + +=cut + +=head1 NAME + +Bio::EnsEMBL::Map::Qtl + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +Represents a Qtl in the EnsEMBL database. A quantitative trait locus is +defined by three markers, two flanking and one peak (optional) marker. +Its a region (or more often a group of regions) which is likely to +affect the phenotype (trait) described in this Qtl. + +=head1 METHODS + +=cut + +package Bio::EnsEMBL::Map::Qtl; + +use strict; +use vars qw(@ISA); + +use Bio::EnsEMBL::Storable; +use Bio::EnsEMBL::Utils::Exception qw(throw deprecate); + +@ISA = qw(Bio::EnsEMBL::Storable); + + + +=head2 new + + Arg [1] : int $dbID + Arg [2] : Bio::EnsEMBL::Map::DBSQL::QtlAdaptor $adaptor + Arg [3] : Bio::EnsEMBL::Map::Marker $flank_marker_1 + Arg [4] : Bio::EnsEMBL::Map::Marker $peak_marker + Arg [5] : Bio::EnsEMBL::Map::Marker $flank_marker_2 + Arg [6] : string $trait + Arg [7] : float $lod_score + Arg [8] : hashref $synonyms + A hashref with source keys and identifier values + Example : none + Description: Creates a new Qtl object. Usually done by Adaptor + Returntype : Bio::EnsEMBL::Map::Qtl + Exceptions : none + Caller : general, DBSQL::QtlAdaptor, DBSQL::QtlFeatureAdaptor + Status : stable + +=cut + +sub new { + my ( $class, $dbID, $adaptor, $flank_marker_1, $peak_marker, + $flank_marker_2, $trait, $lod_score, + $synonyms ) = @_; + + $class = ref( $class ) ||$class; + my $self = bless( { + 'dbID' => $dbID, + 'flank_marker_1' => $flank_marker_1, + 'flank_marker_2' => $flank_marker_2, + 'peak_marker' => $peak_marker, + 'trait' => $trait, + 'lod_score' => $lod_score, + 'synonyms' => $synonyms + }, $class ); + $self->adaptor($adaptor); + return $self; +} + + +=head2 add_synonym + + Arg [1] : string $source + The source of the synonym + Arg [2] : string $identifier + The identifier from this source + Example : $qtl->add_synonym('rat genome database', '65516'); + Description: Adds a synonym to this qtl + Returntype : none + Exceptions : thrown if arguments are not provided + Caller : general + Status : stable + +=cut + +sub add_synonym { + my $self = shift; + my $source = shift; + my $identifier = shift; + + unless($source && $identifier) { + throw('Source and identifier arguments are required'); + } + + $self->{'synonyms'}->{$source} = $identifier; +} + + +=head2 get_synonyms + + Arg [1] : none + Example : + foreach my $source ($keys %{$qtl->get_synonyms}) { + print $source . ':'. $qtl->get_synonyms->{$source}; + } + Description: Returns a hashref of synonyms keyed on their source name + Returntype : hashref of synonyms keyed on their source name + Exceptions : none + Caller : general + Status : stable + +=cut + +sub get_synonyms { + my $self = shift; + + return $self->{'synonyms'} || {}; +} + + + +=head2 trait + + Arg [1] : string $trait + Phenotype of this Qtl + Example : none + Description: Getter/Setter for the trait attribute + Returntype : string + Exceptions : none + Caller : general + Status : stable + +=cut + +sub trait { + my $self = shift; + + if(@_) { + $self->{'trait'} = shift; + } + + return $self->{'trait'}; +} + + +=head2 lod_score + + Arg [1] : float $lod_score + A score for the Qtl + Example : none + Description: Getter/Setter for attribute lod_score + Returntype : float + Exceptions : none + Caller : general + Status : stable + +=cut + +sub lod_score { + my $self = shift; + + if(@_) { + $self->{'lod_score'} = shift; + } + + return $self->{'lod_score'}; +} + + +=head2 peak_marker + + Arg [1] : Bio::EnsEMBL::Map::Marker $peak_marker + an optional Marker which has the peak probablitity + for this traits occurence + Example : none + Description: Getter/Setter for attribute peak_marker + Returntype : Bio::EnsEMBL::Map::Marker + Exceptions : none + Caller : general + Status : stable + +=cut + +sub peak_marker { + my $self = shift; + + if(@_) { + $self->{'peak_marker'} = shift; + } + + return $self->{'peak_marker'}; +} + + +=head2 flank_marker_1 + + Arg [1] : Bio::EnsEMBL::Map::Marker $flank_marker_1 + One flanking marker of the interest region, the two flanking + markers define the region + Example : none + Description: Getter/Setter attribute flanking_marker_1 + Returntype : Bio::EnsEMBL::Map::Marker + Exceptions : none + Caller : general + Status : stable + +=cut + +sub flank_marker_1 { + my $self = shift; + + if(@_) { + $self->{'flank_marker_1'} = shift; + } + + return $self->{'flank_marker_1'}; +} + + + +=head2 flank_marker_2 + + Arg [1] : Bio::EnsEMBL::Map::Marker $flank_marker_2 + One flanking marker of the interest region, the two flanking + markers define the region + Example : none + Description: Getter/Setter attribute flanking_marker_2 + Returntype : Bio::EnsEMBL::Map::Marker + Exceptions : none + Caller : general + Status : stable + +=cut + + +sub flank_marker_2 { + my $self = shift; + + if(@_) { + $self->{'flank_marker_2'} = shift; + } + + return $self->{'flank_marker_2'}; +} + + + +=head2 get_QtlFeatures + + Args : none + Example : none + Description: return the qtl feature which is associated with this + Qtl. It comes in chromosomal slice coordinates. There can + only be one. + Returntype : Bio::EnsEMBL::Map::QtlFeature + Exceptions : only works with adaptored Qtls + Caller : general + Status : stable + +=cut + +sub get_QtlFeature { + my $self = shift; + + my $adaptor = $self->adaptor(); + return undef unless $adaptor; + my $result = $adaptor->db()->get_QtlFeatureAdaptor()-> + fetch_all_by_Qtl( $self ); + + if( @$result ) { + return $result->[0]; + } else { + return; + } +} + + + + + +=head2 source_database + +This method is deprecated. Use get_synonyms or add_synonym instead. + +=cut + +sub source_database { + my $self = shift; + + deprecate('Use get_synonyms or add_synonym instead'); + + my $syns = $self->get_synonyms; + my ($source) = keys %$syns; + + return $source || ''; +} + + +=head2 source_primary_id + +This method is deprecated. Use get_synonyms or add_synonym instead. + +=cut + +sub source_primary_id { + my $self = shift; + + deprecate('Use get_synonyms or add_synonym instead'); + + my $syns = $self->get_synonyms; + my ($source) = keys %$syns; + + if($source) { + return $syns->{$source}; + } + + return ''; +} + + +1;