annotate windowmasker_to_bed.pl @ 1:1758bc8694e4 draft default tip

"planemo upload commit 6a9208ec123353417bc4c7f81c02e50c05d54e63-dirty"
author sanbi-uwc
date Sun, 19 Apr 2020 12:00:17 +0000
parents a1ae9babbfe1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
1 #!/usr/bin/env perl
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
2 use warnings;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
3 use strict;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
4
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
5 =head1 NAME
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
6
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
7 windowmasker_to_bed.pl - Convert WindowMasker output to BED format
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
8
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
9 =head1 SYNOPSIS
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
10
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
11 windowmasker_to_bed.pl < ${input.interval} > ${output.bed}
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
12
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
13 =head1 DESCRIPTION
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
14
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
15 This scripts converts the interval output from WindowMasker ustat
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
16 to bed 4 format.
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
17
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
18 =head1 VERSION
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
19
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
20 Last update: 2017-04-28
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
21
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
22 =cut
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
23
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
24
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
25 #====================
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
26 # Libraries
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
27 #====================
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
28 use Getopt::Long;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
29 use Pod::Usage;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
30 use Carp;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
31
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
32 sub main {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
33 parse_arguments();
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
34
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
35 my $chrom;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
36 my $idx = 0;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
37
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
38 while ( defined(my $line = <>) ) {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
39 next if ($line =~ /^\s*$/x);
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
40
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
41 if ($line =~ /^>(\S+)/x) {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
42 $chrom = $1;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
43
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
44 } elsif ($line =~ /(\d+)\s+\-\s+(\d+)/x) {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
45 # interval coordinates are 0-based
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
46 my $start = $1;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
47 my $end = $2 + 1;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
48 my $name = sprintf("wm_%d", $idx++);
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
49
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
50 print join("\t", $chrom, $start, $end, $name), "\n";
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
51
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
52 } else {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
53 croak("Invalid line: ${line}");
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
54 }
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
55 }
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
56
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
57 return;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
58 }
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
59
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
60 main();
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
61
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
62
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
63
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
64 #====================
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
65 # Parse command-line arguments
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
66 #====================
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
67 sub parse_arguments {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
68 my $help = 0;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
69
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
70 GetOptions('help|?' => \$help) or usage();
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
71
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
72 pod2usage({ verbose => 2 }) if ($help);
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
73
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
74 return;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
75 }
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
76
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
77 sub usage {
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
78 my $msg = shift;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
79
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
80 pod2usage({ verbose => 1, message => $msg || "" });
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
81 exit 1;
a1ae9babbfe1 "planemo upload commit 8e874182b67b9a313bbb4d947d8db040a6148c5d-dirty"
sanbi-uwc
parents:
diff changeset
82 }