annotate variant_effect_predictor/Bio/DB/GFF/Util/Rearrange.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
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 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Bio::DB::GFF::Util::Rearrange - rearrange utility
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 use Bio::DB::GFF::Util::Rearrange 'rearrange';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 my ($arg1,$arg2,$arg3,$others) = rearrange(['ARG1','ARG2','ARG3'],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 This is a different version of the _rearrange() method from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 Bio::Root::Root. It runs as a function call, rather than as a method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 call, and it handles unidentified parameters slightly differently.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 It exports a single function call:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =over 4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =item @rearranged_args = rearrange(\@parameter_names,@parameters);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 The first argument is an array reference containing list of parameter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 names in the desired order. The second and subsequent arguments are a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 list of parameters in the format:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 (-arg1=>$arg1,-arg2=>$arg2,-arg3=>$arg3...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 The function calls returns the parameter values in the order in which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 they were specified in @parameter_names. Any parameters that were not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 found in @parameter_names are returned in the form of a hash reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 in which the keys are the uppercased forms of the parameter names, and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 the values are the parameter values.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 =head1 BUGS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 None known yet.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 L<Bio::DB::GFF>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 Lincoln Stein E<lt>lstein@cshl.orgE<gt>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 Copyright (c) 2001 Cold Spring Harbor Laboratory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 This library is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 package Bio::DB::GFF::Util::Rearrange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 require Exporter;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 @ISA = 'Exporter';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 @EXPORT_OK = qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 @EXPORT = qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 # default export
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 sub rearrange {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 my($order,@param) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 return unless @param;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 my %param;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 if (ref $param[0] eq 'HASH') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 %param = %{$param[0]};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 return @param unless (defined($param[0]) && substr($param[0],0,1) eq '-');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 my $i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 for ($i=0;$i<@param;$i+=2) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 $param[$i]=~s/^\-//; # get rid of initial - if present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 $param[$i]=~tr/a-z/A-Z/; # parameters are upper case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 %param = @param; # convert into associative array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 my(@return_array);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 local($^W) = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my($key)='';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 foreach $key (@$order) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my($value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 if (ref($key) eq 'ARRAY') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 foreach (@$key) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 last if defined($value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 $value = $param{$_};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 delete $param{$_};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 $value = $param{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 delete $param{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 push(@return_array,$value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 push (@return_array,\%param) if %param;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 return @return_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 1;