Mercurial > repos > yating-l > windowmasker_2_5_0
view windowmasker_to_bed.pl @ 0:f80c9e6700ba draft default tip
planemo upload commit 91a780909d1eda07d17f6aebf7f08f0c024b6a25
author | yating-l |
---|---|
date | Tue, 16 May 2017 13:18:12 -0400 |
parents | |
children |
line wrap: on
line source
#!/usr/bin/env perl use warnings; use strict; =head1 NAME windowmasker_to_bed.pl - Convert WindowMasker output to BED format =head1 SYNOPSIS windowmasker_to_bed.pl < ${input.interval} > ${output.bed} =head1 DESCRIPTION This scripts converts the interval output from WindowMasker ustat to bed 4 format. =head1 VERSION Last update: 2017-04-28 =cut #==================== # Libraries #==================== use Getopt::Long; use Pod::Usage; use Carp; sub main { parse_arguments(); my $chrom; my $idx = 0; while ( defined(my $line = <>) ) { next if ($line =~ /^\s*$/x); if ($line =~ /^>(\S+)/x) { $chrom = $1; } elsif ($line =~ /(\d+)\s+\-\s+(\d+)/x) { # interval coordinates are 0-based my $start = $1; my $end = $2 + 1; my $name = sprintf("wm_%d", $idx++); print join("\t", $chrom, $start, $end, $name), "\n"; } else { croak("Invalid line: ${line}"); } } return; } main(); #==================== # Parse command-line arguments #==================== sub parse_arguments { my $help = 0; GetOptions('help|?' => \$help) or usage(); pod2usage({ verbose => 2 }) if ($help); return; } sub usage { my $msg = shift; pod2usage({ verbose => 1, message => $msg || "" }); exit 1; }