1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#!/usr/bin/env perl
use strict;
use warnings;
my $usage = "usage: $0 file.frag_coords (LEND|REND)\n\n";
my $file = $ARGV[0] or die $usage;
my $end = $ARGV[1] or die $usage;
unless ($end eq "LEND" || $end eq "REND") {
die $usage;
}
main: {
my @histogram;
my $curr_scaffold = "";
open (my $fh, $file) or die $usage;
while (<$fh>) {
chomp;
my ($scaff, $read, $lend, $rend) = split(/\t/);
if ($curr_scaffold ne $scaff) {
&write_wig($curr_scaffold, \@histogram) if @histogram;
# re-init
$curr_scaffold = $scaff;
@histogram = ();
}
my $pos = ($end eq "LEND") ? $lend : $rend;
$histogram[$pos]++;
}
close $fh;
if (@histogram) {
&write_wig($curr_scaffold, \@histogram);
}
exit(0);
}
####
sub write_wig {
my ($scaffold, $histogram_aref) = @_;
print "variableStep chrom=$scaffold\n";
for (my $i = 1; $i <= $#$histogram_aref; $i++) {
my $val = $histogram_aref->[$i];
if (defined $val) {
print join("\t", $i, $val) . "\n";
}
}
return;
}
|