Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/EnsEMBL/Variation/Pipeline/TranscriptEffect.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/Variation/Pipeline/TranscriptEffect.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,96 @@ +=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 + +package Bio::EnsEMBL::Variation::Pipeline::TranscriptEffect; + +use strict; +use warnings; + +use Bio::EnsEMBL::Variation::TranscriptVariation; +use Bio::EnsEMBL::Variation::Utils::VariationEffect qw(MAX_DISTANCE_FROM_TRANSCRIPT); + +use base qw(Bio::EnsEMBL::Variation::Pipeline::BaseVariationProcess); + +my $DEBUG = 0; + +sub run { + my $self = shift; + + my $transcript_id = $self->required_param('transcript_stable_id'); + + my $disambiguate_sn_alleles = + $self->param('disambiguate_single_nucleotide_alleles'); + + my $variations_to_include; + + if (my $vars = $self->param('variations_to_include')) { + # turn the list of variation names into a hash to speed up checking + $variations_to_include = { map { $_ => 1 } @$vars }; + } + + my $core_dba = $self->get_species_adaptor('core'); + my $var_dba = $self->get_species_adaptor('variation'); + + my $ta = $core_dba->get_TranscriptAdaptor; + my $sa = $core_dba->get_SliceAdaptor; + + my $tva = $var_dba->get_TranscriptVariationAdaptor; + + my $transcript = $ta->fetch_by_stable_id($transcript_id) + or die "failed to fetch transcript for stable id: $transcript_id"; + + # we need to include failed variations + + $tva->db->include_failed_variations(1); + + my $slice = $sa->fetch_by_transcript_stable_id( + $transcript->stable_id, + MAX_DISTANCE_FROM_TRANSCRIPT + ) or die "failed to get slice around transcript: ".$transcript->stable_id; + + for my $vf ( @{ $slice->get_all_VariationFeatures }, + @{ $slice->get_all_somatic_VariationFeatures } ) { + + if (defined $variations_to_include) { + next unless $variations_to_include->{$vf->variation_name}; + } + + my $tv = Bio::EnsEMBL::Variation::TranscriptVariation->new( + -transcript => $transcript, + -variation_feature => $vf, + -adaptor => $tva, + -disambiguate_single_nucleotide_alleles => $disambiguate_sn_alleles, + ); + + # if the variation has no effect on the transcript $tv will be undef + + if ($tv && ( scalar(@{ $tv->consequence_type }) > 0) ) { + $tva->store($tv); + } + } + + return; +} + +sub write_output { + my $self = shift; +} + +1;