File Coverage

blib/lib/Bio/Tools/Run/BEDTools/Config.pm
Criterion Covered Total %
statement 18 18 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod n/a
total 24 24 100.0


line stmt bran cond sub pod time code
1             # $Id: Config.pm kortsch $
2             #
3             # BioPerl module for Bio::Tools::Run::BEDTools::Config
4             #
5             # Please direct questions and support issues to
6             #
7             # Cared for by Dan Kortschak
8             #
9             # Copyright Dan Kortschak
10             #
11             # You may distribute this module under the same terms as perl itself
12              
13             # POD documentation - main docs before the code
14              
15             =head1 NAME
16              
17             Bio::Tools::Run::BEDTools::Config - Configuration data for bowtie commands
18              
19             =head1 SYNOPSIS
20              
21             Used internally by L.
22              
23             =head1 DESCRIPTION
24              
25             This package exports information describing BEDTools commands, parameters,
26             switches, and input and output filetypes for individual BEDTools commands.
27              
28             =head1 FEEDBACK
29              
30             =head2 Mailing Lists
31              
32             User feedback is an integral part of the evolution of this and other
33             Bioperl modules. Send your comments and suggestions preferably to
34             the Bioperl mailing list. Your participation is much appreciated.
35              
36             bioperl-l@bioperl.org - General discussion
37             http://bioperl.org/wiki/Mailing_lists - About the mailing lists
38              
39             =head2 Support
40              
41             Please direct usage questions or support issues to the mailing list:
42              
43             L
44              
45             rather than to the module maintainer directly. Many experienced and
46             reponsive experts will be able look at the problem and quickly
47             address it. Please include a thorough description of the problem
48             with code and data examples if at all possible.
49              
50             =head2 Reporting Bugs
51              
52             Report bugs to the Bioperl bug tracking system to help us keep track
53             of the bugs and their resolution. Bug reports can be submitted via
54             the web:
55              
56             http://redmine.open-bio.org/projects/bioperl/
57              
58             =head1 AUTHOR - Dan Kortschak
59              
60             Email dan.kortschak adelaide.edu.au
61              
62             =head1 CONTRIBUTORS
63              
64             Additional contributors names and emails here
65              
66             =head1 APPENDIX
67              
68             The rest of the documentation details each of the object methods.
69             Internal methods are usually preceded with a _
70              
71             =cut
72              
73             # Let the code begin...
74              
75              
76             package Bio::Tools::Run::BEDTools::Config;
77 1     1   3 use strict;
  1         1  
  1         23  
78 1     1   3 use warnings;
  1         1  
  1         32  
79 1     1   5 no warnings qw(qw);
  1         2  
  1         41  
80 1     1   432 use Bio::Root::Root;
  1         19365  
  1         15  
81 1     1   29 use Exporter;
  1         2  
  1         45  
82 1     1   5 use base qw(Bio::Root::Root);
  1         1  
  1         645  
83              
84             our (@ISA, @EXPORT, @EXPORT_OK);
85             push @ISA, 'Exporter';
86             @EXPORT = qw(
87             @program_commands
88             %command_executables
89             %format_lookup
90             %command_prefixes
91             %composite_commands
92             @program_params
93             @program_switches
94             %param_translation
95             %command_files
96             %accepted_types
97             );
98              
99             @EXPORT_OK = qw();
100              
101              
102              
103             our @program_commands = qw(
104             annotate fasta_from_bed overlap
105             bam_to_bed genome_coverage pair_to_pair
106             bed_to_bam graph_union pair_to_bed
107             bed_to_IGV group_by shuffle
108             b12_to_b6 intersect slop
109             closest links sort
110             complement mask_fasta_from_bed subtract
111             coverage merge window
112             );
113              
114              
115             our %command_executables = (
116             'annotate' => 'annotateBed',
117             'bam_to_bed' => 'bamToBed',
118             'bed_to_bam' => 'bedToBam',
119             'bed_to_IGV' => 'bedToIgv',
120             'b12_to_b6' => 'bed12ToBed6',
121             'fasta_from_bed' => 'fastaFromBed',
122             'mask_fasta_from_bed' => 'maskFastaFromBed',
123             'shuffle' => 'shuffleBed',
124             'window' => 'windowBed',
125             'closest' => 'closestBed',
126             'genome_coverage' => 'genomeCoverageBed',
127             'merge' => 'mergeBed',
128             'slop' => 'slopBed',
129             'complement' => 'complementBed',
130             'intersect' => 'intersectBed',
131             'pair_to_bed' => 'pairToBed',
132             'sort' => 'sortBed',
133             'coverage' => 'coverageBed',
134             'links' => 'linksBed',
135             'pair_to_pair' => 'pairToPair',
136             'subtract' => 'subtractBed',
137             'overlap' => 'overlap',
138             'group_by' => 'groupBy',
139             'graph_union' => 'unionBedGraphs'
140             );
141              
142             our %format_lookup = (
143             'annotate' => 'bed',
144             'bam_to_bed' => 'bed',
145             'bed_to_bam' => 'bam',
146             'bed_to_IGV' => 'igv',
147             'b12_to_b6' => 'bed',
148             'closest' => 'bedpe',
149             'complement' => 'bed',
150             'coverage' => 'bed',
151             'fasta_from_bed' => 'fasta',
152             'genome_coverage' => 'tab',
153             'graph_union' => 'bg',
154             'group_by' => 'bed',
155             'intersect' => 'bed|bam',
156             'links' => 'html',
157             'mask_fasta_from_bed' => 'fasta',
158             'merge' => 'bed',
159             'overlap' => 'bed',
160             'pair_to_bed' => 'bedpe|bam',
161             'pair_to_pair' => 'bedpe',
162             'slop' => 'bed',
163             'shuffle' => 'bed',
164             'sort' => 'bed',
165             'subtract' => 'bed',
166             'window' => 'bedpe'
167             );
168              
169              
170             # composite commands: pseudo-commands that run a
171             # sequence of commands
172             # composite command prefix => list of prefixes of commands this
173             # composite command runs
174             #
175              
176             our %composite_commands = (
177             );
178              
179             # prefixes only for commands that take params/switches...
180             our %command_prefixes = (
181             'annotate' => 'ann',
182             'bam_to_bed' => 'ate',
183             'bed_to_bam' => 'eta',
184             'bed_to_IGV' => 'eti',
185             'b12_to_b6' => '126',
186             'fasta_from_bed' => 'ffb',
187             'mask_fasta_from_bed' => 'mfb',
188             'shuffle' => 'shb',
189             'window' => 'wib',
190             'closest' => 'clb',
191             'genome_coverage' => 'gcb',
192             'merge' => 'meb',
193             'slop' => 'slb',
194             'complement' => 'cob',
195             'intersect' => 'inb',
196             'pair_to_bed' => 'ptb',
197             'sort' => 'sob',
198             'coverage' => 'cvb',
199             'links' => 'lib',
200             'pair_to_pair' => 'ptp',
201             'subtract' => 'sub',
202             'overlap' => 'ove',
203             'group_by' => 'grp',
204             'graph_union' => 'ubg'
205             );
206              
207             our @program_params = qw(
208             command
209            
210             ate|tag
211             ate|color
212            
213             eta|quality
214            
215             eti|path
216             eti|session
217             eti|sort
218             eti|slop
219             eti|image
220            
221             shb|exclude
222             shb|seed
223            
224             wib|window_size
225             wib|left_window_size
226             wib|right_window_size
227            
228             clb|ties_policy
229            
230             gcb|max_depth
231             gcb|strand
232            
233             meb|max_distance
234            
235             slb|add_bidirectional
236             slb|add_to_left
237             slb|add_to_right
238            
239             inb|minimum_overlap
240            
241             ptb|minimum_overlap
242             ptb|type
243            
244             ptp|minimum_overlap
245             ptp|type
246             ptp|slop
247            
248             sub|minimum_overlap
249            
250             lib|basename
251             lib|organism
252             lib|genome_build
253            
254             ove|columns
255            
256             grp|group
257             grp|columns
258             grp|operations
259            
260             ubg|names
261             ubg|filler
262             );
263              
264             our @program_switches = qw(
265             ann|names
266             ann|count
267             ann|both
268             ann|strandedness
269            
270             ate|write_bedpe
271             ate|use_edit_distance
272             ate|bam12
273             ate|split
274             ate|use_edit_distance
275             ate|cigar
276            
277             eta|uncompressed
278             eta|bed12
279            
280             eti|collapse
281             eti|name
282            
283             ffb|use_bed_name
284             ffb|output_tab_format
285             ffb|strandedness
286            
287             gcb|bedgraph
288             gcb|bedgraph_all
289             gcb|split
290            
291             mfb|soft_mask
292            
293             shb|keep_chromosome
294            
295             wib|define_by_strand
296             wib|same_strand
297             wib|report_once_only
298             wib|report_hits
299             wib|invert
300            
301             clb|strandedness
302             clb|report_distance
303            
304             gcb|report_pos_depth
305            
306             meb|strandedness
307             meb|report_n_merged
308             meb|report_names_merged
309            
310             slb|define_by_strand
311            
312             inb|write_bed
313             inb|write_entry_1
314             inb|write_entry_2
315             inb|report_once_only
316             inb|report_n_hits
317             inb|invert_match
318             inb|reciprocal
319             inb|strandedness
320             inb|write_overlap
321             inb|write_overlap_all
322             inb|split
323            
324             ptb|write_bedpe
325             ptb|strandedness
326             ptb|use_edit_distance
327             ptb|write_uncompressed
328            
329             sob|size_asc
330             sob|size_desc
331             sob|chr_size_asc
332             sob|chr_size_desc
333             sob|chr_score_asc
334             sob|chr_score_desc
335            
336             cvb|strandedness
337             cvb|histogram
338             cvb|depth
339             cvb|split
340            
341             ptp|ignore_strand
342             ptp|slop_strandedness
343             ptp|no_self_hits
344            
345             sub|strandedness
346            
347             ubg|header
348             ubg|empty
349             );
350              
351             our %param_translation = (
352             'ann|names' => 'names',
353             'ann|counts' => 'counts',
354             'ann|both' => 'both',
355             'ann|strandedness' => 's',
356            
357             'ate|write_bedpe' => 'bedpe',
358             'ate|use_edit_distance' => 'ed',
359             'ate|bam12' => 'bam12',
360             'ate|split' => 'split',
361             'ate|use_edit_distance' => 'ed',
362             'ate|tag' => 'tag',
363             'ate|color' => 'color',
364             'ate|cigar' => 'cigar',
365            
366             'eta|quality' => 'maqp',
367             'eta|uncompressed' => 'ubam',
368             'eta|bed12' => 'bed12',
369            
370             'eti|path' => 'path',
371             'eti|session' => 'sess',
372             'eti|sort' => 'sort',
373             'eti|collapse' => 'clps',
374             'eti|name' => 'name',
375             'eti|slop' => 'slop',
376             'eti|image' => 'img',
377            
378             'ffb|use_bed_name' => 'names',
379             'ffb|output_tab_format' => 'tab',
380             'ffb|strandedness' => 's',
381            
382             'mfb|soft_mask' => 'soft',
383            
384             'shb|keep_chromosome' => 'chrom',
385             'shb|exclude' => 'excl',
386             'shb|seed' => 'seed',
387            
388             'wib|define_by_strand' => 'sw',
389             'wib|same_strand' => 'sm',
390             'wib|report_once_only' => 'u',
391             'wib|report_hits' => 'c',
392             'wib|invert' => 'v',
393             'wib|window_size' => 'w',
394             'wib|left_window_size' => 'l',
395             'wib|right_window_size' => 'r',
396            
397             'clb|strandedness' => 's',
398             'clb|report_distance' => 'd',
399             'clb|ties_policy' => 't',
400            
401             'gcb|report_pos_depth' => 'd',
402             'gcb|max_depth' => 'max',
403             'gcb|bedgraph' => 'bg',
404             'gcb|bedgraph_all' => 'bga',
405             'gcb|split' => 'split',
406             'gcb|strand' => 'strand',
407            
408             'meb|strandedness' => 's',
409             'meb|report_n_merged' => 'n',
410             'meb|report_names_merged' => 'nms',
411             'meb|max_distance' => 'd',
412            
413             'slb|define_by_strand' => 's',
414             'slb|add_bidirectional' => 'b',
415             'slb|add_to_left' => 'l',
416             'slb|add_to_right' => 'r',
417            
418             'inb|write_bed' => 'bed',
419             'inb|write_entry_1' => 'wa',
420             'inb|write_entry_2' => 'wb',
421             'inb|write_overlap' => 'wo',
422             'inb|write_overlap_all' => 'woa',
423             'inb|report_once_only' => 'u',
424             'inb|report_n_hits' => 'c',
425             'inb|invert_match' => 'v',
426             'inb|reciprocal' => 'r',
427             'inb|strandedness' => 's',
428             'inb|minimum_overlap' => 'f',
429             'inb|split' => 'split',
430            
431             'ptb|write_bedpe' => 'bedpe',
432             'ptb|strandedness' => 's',
433             'ptb|minimum_overlap' => 'f',
434             'ptb|type' => 'type',
435             'ptb|use_edit_distance' => 'ed',
436             'ptb|write_uncompressed' => 'ubam',
437            
438             'sob|size_asc' => 'sizeA',
439             'sob|size_desc' => 'sizeD',
440             'sob|chr_size_asc' => 'chrThenSizeA',
441             'sob|chr_size_desc' => 'chrThenSizeD',
442             'sob|chr_score_asc' => 'chrThenScoreA',
443             'sob|chr_score_desc' => 'chrThenScoreD',
444            
445             'cvb|strandedness' => 's',
446             'cvb|histogram' => 'hist',
447             'cvb|depth' => 'd',
448             'cvb|split' => 'split',
449            
450             'ptp|ignore_strand' => 'is',
451             'ptp|slop_strandedness' => 'ss',
452             'ptp|minimum_overlap' => 'f',
453             'ptp|type' => 'type',
454             'ptp|slop' => 'slop',
455             'ptp|no_self_hits' => 'rdn',
456            
457             'sub|strandedness' => 's',
458             'sub|minimum_overlap' => 'f',
459              
460             'lib|basename' => 'base',
461             'lib|organism' => 'org',
462             'lib|genome_build' => 'db',
463            
464             'ove|columns' => 'cols',
465            
466             'grp|group' => 'grp',
467             'grp|columns' => 'opCols',
468             'grp|operations' => 'ops',
469            
470             'ubg|header' => 'header',
471             'ubg|names' => 'names',
472             'ubg|empty' => 'empty',
473             'ubg|filler' => 'filler'
474             );
475              
476             #
477             # the order in the arrayrefs is the order required
478             # on the command line
479             #
480             # the strings in the arrayrefs (less special chars)
481             # become the keys for named parameters to run_bowtie
482             #
483             # special chars:
484             #
485             # '#' implies optional
486             # '*' implies variable number of this type
487             # <|> implies stdin/stdout redirect
488             #
489              
490             our %command_files = (
491             'annotate' => [qw( -i|bgv -files|*ann >#out )],
492             'bam_to_bed' => [qw( -i|bam >#out )],
493             'bed_to_bam' => [qw( -i|bgv -g|genome >#out )],
494             'bed_to_IGV' => [qw( -i|bgv >#out )],
495             'b12_to_b6' => [qw( -i|bed >#out )],
496             'fasta_from_bed' => [qw( -fi|seq -bed|bgv -fo|#out )],
497             'mask_fasta_from_bed' => [qw( -fi|seq -bed|bgv -fo|#out )],
498             'shuffle' => [qw( -i|bgv -g|genome >#out )],
499             'window' => [qw( -a|bgv1 -b|bgv2 >#out )],
500             'closest' => [qw( -a|bgv1 -b|bgv2 >#out )],
501             'genome_coverage' => [qw( -i|bed -g|genome >#out )],
502             'merge' => [qw( -i|bgv >#out )],
503             'slop' => [qw( -i|bgv -g|genome >#out )],
504             'complement' => [qw( -i|bgv -g|genome >#out )],
505             'intersect' => [qw( -a|#bgv1 -abam|#bam -b|bgv2 >#out )], # (bgv1|bam) required
506             'pair_to_bed' => [qw( -a|#bedpe -abam|#bam -b|bgv >#out )], # (bedpe|bam) required
507             'sort' => [qw( -i|bgv >#out )],
508             'coverage' => [qw( -a|bgv1 -b|bgv2 >#out )],
509             'links' => [qw( -i|bgv >#out )],
510             'pair_to_pair' => [qw( -a|bedpe1 -b|bedpe2 >#out )],
511             'subtract' => [qw( -a|bgv1 -b|bgv2 >#out )],
512             'group_by' => [qw( -i|bed >#out )],
513             'graph_union' => [qw( -i|*bg -g|#genome >#out )],
514             'overlap' => [qw( -i|bed >#out )]
515             );
516              
517             our %accepted_types = (
518             'ann' => [qw( tab vcf gff )], # BEDTools now has multiple accepted input formats: bed/gff/vcf
519             'bam' => [qw()], # we need a test for this
520             'bed' => [qw( tab )],
521             'bgv' => [qw( tab vcf gff )], # BEDTools now has multiple accepted input formats: bed/gff/vcf
522             'bgv1' => [qw( tab vcf gff )], # BEDTools now has multiple accepted input formats: bed/gff/vcf
523             'bgv2' => [qw( tab vcf gff )], # BEDTools now has multiple accepted input formats: bed/gff/vcf
524             'bedpe' => [qw( tab )],
525             'bedpe1' => [qw( tab )],
526             'bedpe2' => [qw( tab )],
527             'seq' => [qw( fasta )],
528             'genome' => [qw( tab )],
529             'bg' => [qw( tab )]
530             );
531              
532             1;