annotate readshifter.pl @ 1:243f75d0ed6e draft default tip

Uploaded. Includes new release 1.0.7 with fixed optional controls.
author messersc
date Thu, 19 Feb 2015 05:39:45 -0500
parents d42f4d78c85e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
1 ########################################################################
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
2 # JAMMv1.0.7rev1 is a peak finder for joint analysis of NGS replicates.
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
3 # Copyright (C) 2014-2015 Mahmoud Ibrahim
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
4 #
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
5 # This program is free software: you can redistribute it and/or modify
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
6 # it under the terms of the GNU General Public License as published by
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
7 # the Free Software Foundation, either version 3 of the License, or
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
8 # (at your option) any later version.
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
9 #
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
10 # This program is distributed in the hope that it will be useful,
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
13 # GNU General Public License for more details.
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
14 #
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
15 # You should have received a copy of the GNU General Public License
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
17 #
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
18 # Contact: mahmoud.ibrahim@mdc-berlin.de
243f75d0ed6e Uploaded.
messersc
parents: 0
diff changeset
19 ########################################################################
0
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
20
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
21
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
22
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
23 use feature qw(say);
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
24
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
25
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
26 # ==================
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
27 # Parsing Arguments
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
28 # ==================
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
29
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
30 #initialize to NULL
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
31 my $bed_file = NULL; #bed file
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
32 my $shift_size = NULL; #shift size
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
33 my $read_length = NULL; #read length
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
34
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
35 #Parse the arguments
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
36 $bed_file = $ARGV[0]; #bed file
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
37 $shift_size = $ARGV[1]; #shift size
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
38 $read_length = $ARGV[2]; #read length
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
39
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
40 #=======================> DONE!
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
41
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
42
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
43
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
44 # ========================================
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
45 # Parse the bed file and extend the reads
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
46 # ========================================
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
47
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
48 #open the file
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
49 open(DATA, $bed_file) || die("Can't open the bed file, probably you gave me the wrong path!");
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
50
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
51 #loop through the rest of the file line by line (To do: look for a faster way)
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
52 while (<DATA>) {
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
53 my ($start, $strand) = split(/\t/,$_,2);
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
54 $strand =~ s/\015?\012?$//;
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
55
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
56
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
57
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
58 #plus strand
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
59 if ($strand eq '+') {
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
60 #do nothing
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
61 }
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
62 #minus strand
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
63 elsif ($strand eq '-') {
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
64 $start = $start - $shift_size + $read_length; #difference between $start and $end should be equal to fragment length ($shift_size)
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
65 }
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
66 #bad format
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
67 else {
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
68 die("It appears the bed file is not formatted properly. Specifically, I expect to find either + or - in the second column, but I found something else!");
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
69 }
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
70 if ($start >= 0) {
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
71 #Now write the new line
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
72 say join "\t", $start, $strand;
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
73 }
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
74 }
d42f4d78c85e Uploaded
messersc
parents:
diff changeset
75 #=======================> DONE!