Mercurial > repos > dvanzessen > vep_emc
diff dir_plugins/TSSDistance.pm @ 3:49397129aec0 draft
Uploaded
| author | dvanzessen |
|---|---|
| date | Mon, 15 Jul 2019 05:20:39 -0400 |
| parents | e545d0a25ffe |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dir_plugins/TSSDistance.pm Mon Jul 15 05:20:39 2019 -0400 @@ -0,0 +1,85 @@ +=head1 LICENSE + +Copyright [1999-2015] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute +Copyright [2016-2018] EMBL-European Bioinformatics Institute + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +=head1 CONTACT + + Ensembl <http://www.ensembl.org/info/about/contact/index.html> + +=cut + +=head1 NAME + + TSSDistance + +=head1 SYNOPSIS + + mv TSSDistance.pm ~/.vep/Plugins + ./vep -i variations.vcf --plugin CCDSFilter + +=head1 DESCRIPTION + + A VEP plugin that calculates the distance from the transcription + start site for upstream variants. + +=cut + +package TSSDistance; + +use Bio::EnsEMBL::Variation::Utils::BaseVepPlugin; + +use base qw(Bio::EnsEMBL::Variation::Utils::BaseVepPlugin); + +sub get_header_info { + return { + TSSDistance => "Distance from the transcription start site" + }; +} + +sub feature_types { + return ['Transcript']; +} + +sub variant_feature_types { + return ['BaseVariationFeature']; +} + +sub run { + my ($self, $tva) = @_; + + my $t = $tva->transcript; + my $vf = $tva->base_variation_feature; + + my $dist; + + if ($t->strand == 1) { + $dist = $t->start - $vf->end; + } + else { + $dist = $vf->start - $t->end; + } + + if ($dist > 0) { + return { + TSSDistance => $dist, + } + } + else { + return {}; + } +} + +1;
