annotate variant_effect_predictor/Bio/EnsEMBL/Variation/Utils/BaseVepPlugin.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::Variation::Utils::BaseVepPlugin
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 package FunkyPlugin;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 use base qw(Bio::EnsEMBL::Variation::Utils::BaseVepPlugin);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 sub feature_types {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 return ['Transcript'];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 sub get_header_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 return {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 FUNKY_PLUGIN => "Description of funky plugin"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 sub run {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 my ($self, $transcript_variation_allele) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 my $results = ... # do analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 return {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 FUNKY_PLUGIN => $results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 To make writing plugin modules for the VEP easier, get
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 your plugin to inherit from this class, override (at least)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 the feature_types, get_header_info and run methods to behave
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 according to the documentation below, and then run the VEP
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 with your plugin using the --plugin <module name> command
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 line option.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 package Bio::EnsEMBL::Variation::Utils::BaseVepPlugin;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Arg [1] : a VEP configuration hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 Arg [>1] : any parameters passed on the VEP command line, will be stored as a listref in $self->{params}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Description: Creates and returns a new instance of this plugin
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 Returntype : Bio::EnsEMBL::Variation::Utils::BaseVepPlugin instance (most likely a user-defined subclass)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 my ($class, $config, @params) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 # default to the current VEP version, and analysing VariationFeatures and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 # Transcripts (which we expect to be the most common usage, this means that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 # the run method will be called with a TranscriptVariationAllele as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 # first argument)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 return bless {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 version => '2.3',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 feature_types => ['Transcript'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 variant_feature_types => ['VariationFeature'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 config => $config,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 params => \@params,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 }, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 =head2 version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Arg [1] : (optional) a version number string in the form N.N.N
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Description: Get/set the version of this plugin. The version should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 match the version of the VEP that this plugin works with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 (at least in the major version number). This is used to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 detect compatibility between the VEP and plugins.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 sub version {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 my ($self, $version) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $self->{version} = $version if $version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 return $self->{version};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 =head2 config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Arg [1] : a VEP configuration hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Description: Get/set the VEP configuration hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Returntype : hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 sub config {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my ($self, $config) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $self->{config} = $config if $config;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 return $self->{config};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 =head2 params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Arg [1] : (optional) a listref of plugin parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Description: Get/set the parameters of this plugin, typically as passed on the VEP command line.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Returntype : listref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 sub params {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 my ($self, $params) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $self->{params} = $params if $params;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 return $self->{params} || [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 =head2 get_header_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Description: Return a hashref with any Extra column keys as keys and a description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 of the data as a value, this will be included in the VEP output file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 header to help explain the results of this plugin. Plugins that do
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 not want to include anything in the header should return undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 Returntype : hashref or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 sub get_header_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 =head2 variant_feature_types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Description: To indicate which types of variation features a plugin is interested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 in, plugins should return a listref of the types of variation feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 they can deal with. Currently this list should include one or more of:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 'VariationFeature' or 'StructuralVariationFeature'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Returntype : listref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 sub variant_feature_types {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my ($self, $types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 $self->{variant_feature_types} = $types if $types;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 return $self->{variant_feature_types};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 =head2 feature_types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Description: To indicate which types of genomic features a plugin is interested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 in, plugins should return a listref of the types of feature they can deal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 with. Currently this list should include one or more of: 'Transcript',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 'RegulatoryFeature' and 'MotifFeature'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Returntype : listref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 sub feature_types {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my ($self, $types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 $self->{feature_types} = $types if $types;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 return $self->{feature_types};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 sub _check_types {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my ($self, $type_type, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # if we're passed an object instead of a type string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 # get the type of reference and use that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 if (ref $type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $type = ref $type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 # $type_type will either be 'variant_feature' or 'feature'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 # so construct the method to call and the hash key to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 # store the cached results under
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 my $method = $type_type.'_types';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my $hash_key = $method.'_wanted';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 unless (defined $self->{$hash_key}->{$type}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 # cache the result so we don't have to loop each time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $self->{$hash_key}->{$type} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 for my $wanted (@{ $self->$method }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 # special case the intergenic class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 if ($wanted eq 'Intergenic') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 if ($wanted eq $type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->{$hash_key}->{$type} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 # we are fairly relaxed about how the user describes features, it can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 # be the fully qualified class name, or just the specific module name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 # (i.e. the text after the last '::') in which case we automatically
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 # fully qualify it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if ($wanted !~ /::/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 if ($type_type eq 'feature') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 if ($wanted eq 'RegulatoryFeature' || $wanted eq 'MotifFeature') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $wanted = "Bio::EnsEMBL::Funcgen::$wanted";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $wanted = "Bio::EnsEMBL::$wanted";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 elsif ($type_type eq 'variant_feature') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $wanted = "Bio::EnsEMBL::Variation::$wanted";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 if ($type->isa($wanted)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 $self->{$hash_key}->{$type} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 return $self->{$hash_key}->{$type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 =head2 check_feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Arg[1] : the feature type as a string (or a reference to an object of the desired type)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Description: Check if this plugin is interested in a particular feature type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 sub check_feature_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 my ($self, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 return $self->_check_types('feature', $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =head2 check_variant_feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Arg[1] : the variant feature type as a string (or a reference to an object of the desired type)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Description: Check if this plugin is interested in a particular variant feature type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 sub check_variant_feature_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my ($self, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 return $self->_check_types('variant_feature', $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 =head2 run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Arg[1] : An instance of a subclass of Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Arg[2] : A hashref containing all the data that will be printed on this line, keyed by column name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Description: Run this plugin, this is where most of the plugin logic should reside.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 When the VEP is about to finish one line of output (for a given variation-allele-feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 combination) it will call this method, passing it a relevant subclass of a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Bio::EnsEMBL::Variation::BaseVariationFeatureOverlapAllele object according to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 feature types it is interested in, as specified by the plugin's feature_types method:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 feature type argument type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 'Transcript' Bio::EnsEMBL::Variation::TranscriptVariationAllele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 'RegulatoryFeature' Bio::EnsEMBL::Variation::RegulatoryFeatureVariationAllele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 'MotifFeature' Bio::EnsEMBL::Variation::MotifFeatureVariationAllele
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 Once the plugin has done its analysis it should return the results as a hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 with a key for each type of data (which should match the keys described in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 get_header_info) and a corresponding value for this particular object, or an empty
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 hash (*not* undef) if this plugin does not produce any annotation for this object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 Any edata will then be included in the Extra column in the VEP output file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Please refer to the variation API documentation to see what methods are available
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 on each of the possible classes, bearing in mind that common functionality can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 found in the BaseVariationFeatureOverlapAllele superclass.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 If the plugin wants to filter this line out of the VEP output it can indicate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 this by returning undef rather than a hashref. Using this mechanism a plugin
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 can act as a filter on the VEP output to limit lines to particular events
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 of interest. If you are writing a plugin to act as filter, consider subclassing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Bio::EnsEMBL::Variation::Utils::BaseVepFilterPlugin, a subclass of this class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 which provides some convenient functionality for filter plugins.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Returntype : hashref or undef if the plugin wants to filter out this line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Status : Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 sub run {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 my ($self, $bvfoa, $line_hash) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 warn "VEP plugins should implement the 'run' method\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 return {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332