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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#!/usr/bin/env perl
use strict;
use warnings;
use Carp;
use Getopt::Long qw(:config no_ignore_case bundling pass_through);
my $usage = <<_EOUSAGE_;
##############################################################################################################
#
# Required:
#
# --sam <string> sam-formatted file
#
# Optional:
#
# --max_insert_size <int> maximum insert size (default: 500) : used for pair coverage and jaccard
# --min_insert_size <int> minimum insert size (default: 100) : used for jaccard
#
# --jaccard_win_length|-W <int> default: 100 (requires --jaccard)
#
# --pseudocounts <int> default: 1
# -e write extended format, including 'single' and 'both' raw counts
#
##############################################################################################################
_EOUSAGE_
;
my $help_flag;
# required
my $sam_file;
# optional
my $max_insert_size = 500;
my $min_insert_size = 100;
my $jaccard_win_length = 100;
my $pseudocounts = 1;
my $extended_flag = 0;
&GetOptions ( 'h' => \$help_flag,
# required
'sam=s' => \$sam_file,
# optional
'max_insert_size=i' => \$max_insert_size,
'min_insert_size=i' => \$min_insert_size,
'jaccard_win_length|W=i' => \$jaccard_win_length,
'pseudocounts=i' => \$pseudocounts,
'e' => \$extended_flag,
);
if ($help_flag) {
die $usage;
}
unless ($sam_file) {
die $usage;
}
if (@ARGV) {
die $usage;
}
my $util_dir = "/usr/lib/trinityrnaseq/util/support_scripts";
main: {
## generate the paired coverage info:
my $cmd = "$util_dir/SAM_to_frag_coords.pl --sam $sam_file "
. "--max_insert_size $max_insert_size "
. "--min_insert_size $min_insert_size "; ## writes file: $sam_file.frag_coords
&process_cmd($cmd) unless (-s "$sam_file.frag_coords");
## compute jaccard coeff info for pair-support
$cmd = "$util_dir/ordered_fragment_coords_to_jaccard.pl --lend_sorted_frags $sam_file.frag_coords -W $jaccard_win_length "
. " --pseudocounts $pseudocounts ";
if ($extended_flag) {
$cmd .= " -e ";
}
&process_cmd($cmd);
exit(0);
}
####
sub process_cmd {
my ($cmd) = @_;
print STDERR "CMD: $cmd\n";
my $ret = system($cmd);
if ($ret) {
die "Error, cmd: $cmd died with ret $ret";
}
return;
}
|