annotate lib/feature_finder.pl @ 3:17ce4f3bffa2 default tip

Uploaded
author jesse-erdmann
date Tue, 24 Jan 2012 18:33:41 -0500
parents 1437a2df99c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
1 #!/project/bioperl/perl-5.10.1-sles11/bin/perl -w
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
2 #
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
3 #------------------------------------------------------------------------------
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
4 # University of Minnesota
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
5 # Copyright 2010, Regents of the University of Minnesota
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
6 #------------------------------------------------------------------------------
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
7 # Author:
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
8 #
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
9 # Jesse Erdmann
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
10 #
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
11 # POD documentation
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
12 #------------------------------------------------------------------------------
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
13 =pod BEGIN
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
14
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
15 =head1 NAME
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
16
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
17 feature_finder.pl - find features nearest to another set of features within a given window.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
18
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
19 =head1 SYNOPSIS
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
20
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
21 feature_finder.pl [-help] [-intervals interval_file] [-icol interval_column_config]
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
22 [-features feature_file] [-fcol feature_column_config]
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
23 [-results ALL|CLOSEST] [-direction BOTH|EITHER|UPSTREAM|DOWNSTREAM]
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
24 [-window win_size] [-output output_file] [-html html_output_file]
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
25 [-db db_name] [-cturl custom_track_url] [-include_capture]
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
26 [-promoter PROMOTER_BP]
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
27
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
28 =head1 OPTIONS
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
29
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
30 =over 6
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
31
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
32 =item B<-help>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
33
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
34 Print a usage summary
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
35
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
36 =item B<-intervals interval_file>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
37
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
38 Specify the file containing the intervals to find the nearest features for,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
39 default settings require a BED compatible file
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
40
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
41 =item B<-features feature_file>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
42
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
43 Specify the file containing the features that will be mapped against, default
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
44 setting require a BED compatible file
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
45
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
46 =item B<-results ALL|CLOSEST>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
47
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
48 The type of results to be reported. ALL will return all features within the
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
49 specified window size from each interval in the file including any overlapping
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
50 features. CLOSEST will return the closest feature within the window include
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
51 overlapping features. The special case ENCOMPASSING FEATURE AND
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
52 INTERNAL FEATURE override the closest distance. The first encountered
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
53 ENCOMPASSING FEATURE will be returned in CLOSEST mode. If no ENCOMPASSING
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
54 FEATURES exist, the first encountered INTERNAL FEATURE will be returned. If
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
55 neither exists, the closest distance is used. The closest distance is determined
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
56 by the shortest distance between either end of the interval and the feature
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
57 (e.g. start-start, start-end, end-start, end-end).
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
58
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
59 The distance may also be ENCOMPASSING FEATURE or INTERNAL FEATURE. An
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
60 encompassing feature is one which starts before an interval and ends
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
61 after the interval. An internal feature is opposite where the feature
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
62 is entirely within the interval.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
63
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
64 DEFAULT:ALL
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
65
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
66 =item B<-direction BOTH|EITHER|UPSTREAM|DOWNSTREAM>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
67
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
68 Direction is only used when CLOSEST is specified as the result type. BOTH
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
69 will return both the closest upstream and downstream feature in the window.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
70 EITHER will return the closest regardless of whether it is upstream or
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
71 downstream. DOWNSTREAM will return the closest feature with a midpoint to
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
72 the right of midpoint of a + strand interval or the left of a - strand
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
73 interval. UPSTREAM is just the opposite.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
74
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
75 DEFAULT:BOTH
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
76
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
77 =item B<-window win_size>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
78
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
79 Window size is the number of base pairs that will be considered upstream
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
80 and downstream of an interval in which to find features. This also affects
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
81 the performance of indexing and searching. Minimal testing suggests
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
82 50000 bp to be roughly the optimal size, at least for Mus Musculus mm9/ncbim37.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
83
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
84 MINIMUM:2500 DEFAULT:2500
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
85
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
86 =item B<-output output_file>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
87
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
88 The file to report results to. The output format is a tab delimited file
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
89 starting with the original line from the interval file followed by a list
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
90 of matching features. Features are reported in the form of their name
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
91 followed by the distance away in bp ascending from shortest distance to
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
92 longest. e.g:
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
93
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
94 MY_INTERVAL_INFO ENS000001(20 bp distant) ENS000002 (350 bp distant) ...
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
95
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
96 The distance may also be ENCOMPASSING FEATURE or INTERNAL FEATURE. An
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
97 encompassing feature is one which starts before an interval and ends
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
98 after the interval. An internal feature is opposite where the feature
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
99 is entirely within the interval.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
100
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
101 DEFAULT:OFF
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
102
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
103 =item B<-include_capture>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
104
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
105 Including capture information adds three columns to the output from
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
106 feature_finder. These are the start and end location to capture all
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
107 features found within the given window and the total distance in bp
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
108 required to capture the entire set.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
109
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
110 =item B<-promoter PROMOTOR_BP>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
111
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
112 The start and end of the capture region will be modified to include
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
113 the specified amount of the promoter region depending on the orientation
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
114 of the feature. '+' strand features modify the start position while '-'
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
115 strand features modify the end position.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
116
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
117 DEFAULT:0
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
118
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
119 =item B<-icols interval_chrom_column:start:end:label:strand>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
120
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
121 If the interval file is not in BED format, but still tab delimited -icols
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
122 can be used to specify which columns in the file contain specific
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
123 information. Column numbering begins with 1.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
124
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
125 DEFAULT:1:2:3:4:6
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
126
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
127 =item B<-fcols feature_chrom_column:start:end:label:strand>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
128
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
129 If the interval file is not in BED format, but still tab delimited -fcols
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
130 can be used to specify which columns in the file contain specific
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
131 information. Column numbering begins with 1.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
132
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
133 DEFAULT:1:2:3:4:6
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
134
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
135 =item B<-html>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
136
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
137 The output will be an HTML file with links to the features in the and
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
138 the interval at the UCSC browser.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
139
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
140 =item B<-db db_name>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
141
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
142 Set the database for the organism to be used in the UCSC genome browser.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
143 Only used if an HTML output is specified.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
144
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
145 DEFAULT:mm9
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
146
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
147 =item B<-cturl custom_track_url>
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
148
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
149 Define the URL to be used by the UCSC Genome Browser to load the custom
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
150 tracks for display purposes. If left blank the URLs will show the windows
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
151 defined by the input intervals, however the intervals themselves will not
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
152 appear. Only used if an HTML output is specified.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
153
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
154 =back
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
155
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
156 =head1 BUGS
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
157
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
158 =head1 REFERENCES
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
159
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
160 =head1 VERSION
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
161
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
162 0.1
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
163
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
164 =cut
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
165
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
166 #### END of POD documentation.
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
167 #-----------------------------------------------------------------------------
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
168
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
169 use strict;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
170 use Getopt::Long;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
171 use Pod::Usage;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
172 use List::Util qw[min max];
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
173
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
174 my $path = $0;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
175 $path =~ s/\/\w*\.pl$//g;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
176 require "$path/feature_finder_methods.pl";
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
177
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
178 my $intervals;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
179 my $features;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
180 my $req_res_type = "All"; # "Closest"
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
181 my $direction = "Both"; # "Upstream", "Downstream", "Both", "Either"
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
182 my $out;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
183 my $window = 2500;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
184 my %feature_hash;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
185 my $help_flag;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
186 my $interval_cols = "1:2:3:4:6";
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
187 my $feature_cols = "1:2:3:4:6";
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
188 my $html;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
189 my $db = "mm9";
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
190 my $cturl;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
191 my $debug = 0;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
192 my $include_capture = 0;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
193 my $promoter = 0;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
194
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
195 my %options = (
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
196 "direction|d=s" => \$direction,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
197 "intervals|i=s" => \$intervals,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
198 "features|f=s" => \$features,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
199 "results|r=s" => \$req_res_type,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
200 "output|o=s" => \$out,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
201 "window|w=s" => \$window,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
202 "icols=s" => \$interval_cols,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
203 "fcols=s" => \$feature_cols,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
204 "help|h" => \$help_flag,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
205 "html" => \$html,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
206 "db=s" => \$db,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
207 "cturl=s" => \$cturl,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
208 "include_capture|ic" => \$include_capture,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
209 "promoter|p=i" => \$promoter,
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
210 "debug" => \$debug
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
211 );
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
212
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
213 GetOptions(%options) or pod2usage(2);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
214 pod2usage(1) if $help_flag;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
215
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
216 pod2usage({ message => "The window specified with -window must be at least 2500.\n", exitval => 2}) if ($window < 2500);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
217 #pod2usage({ message => "Result type specified with -result must be either $all or $close.\n", exitval => 2}) if (uc $req_res_type ne $all && uc $req_res_type ne $close);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
218 pod2usage({ message => "Direction sepecified with -direction must be one of BOTH, EITHER, UPSTREAM or DOWNSTREAM.\n", exitval => 2}) if (uc $direction ne "BOTH" && uc $direction ne "EITHER" && uc $direction ne "UPSTREAM" && uc $direction ne "DOWNSTREAM");
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
219
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
220 my @icols = split(":", $interval_cols);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
221 pod2usage({ message => "Must specify 5 columns with -icol, chrom:start:end:label:strand.\n", exitval => 2}) if ($#icols != 4);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
222 my $ichrom = $icols[0]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
223 my $istart = $icols[1]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
224 my $iend = $icols[2]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
225 my $ilabel = $icols[3]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
226 my $istrand = $icols[4]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
227
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
228 my @fcols = split(":", $feature_cols);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
229 pod2usage({ message => "Must specify 5 columns with -fcol, chrom:start:end:label:strand.\n", exitval => 2}) if ($#fcols != 4);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
230 my $fchrom = $fcols[0]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
231 my $fstart = $fcols[1]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
232 my $fend = $fcols[2]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
233 my $flabel = $fcols[3]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
234 my $fstrand = $fcols[4]-1;
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
235
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
236
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
237 my $feature_hash_ref = &feature_index(\$features, \$window, \$fchrom, \$fstart, \$fend, \$debug);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
238 &process_intervals(\$intervals, \$out, $feature_hash_ref, \$req_res_type, \$direction, \$window, \$html, \$cturl, \$db, \$interval_cols, \$feature_cols, \$debug, \$display_distance, \$include_capture, \$promoter);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
239 exit(0);
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
240
1437a2df99c0 Uploaded
jesse-erdmann
parents:
diff changeset
241