annotate geneAnnotation.pl @ 7:83d4899403b0 draft default tip

Uploaded
author jbrayet
date Tue, 05 Jan 2016 07:22:47 -0500
parents 674d50b9ff42
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1 #!/usr/bin/perl -w
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
2 #outputs statistics for all genes in the list
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
3
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
4 #different boundaries
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
5 #no motif p-value for binding sites
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
6 #read directly No-resp/Up/down category
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
7
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
8 #all isoforms from the file with genes
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
9
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
10 #RNApolII sites on junctions
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
11
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
12 #has Histone Modification Mode: covering TSS and overlaping genes
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
13
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
14 use strict;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
15 use POSIX;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
16
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
17 my $usage = qq{
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
18 $0
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
19
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
20 -----------------------------
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
21 mandatory parameters:
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
22
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
23 -g filename file with all genes
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
24 -tf filename file with sites of TF1
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
25
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
26
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
27 -----------------------------
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
28 optional parameters:
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
29 -k36 filename file with sites of K36me3
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
30 -rp filename file with sites of RNApolII
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
31 -i filename file with a table where to add colomnes
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
32 -add values which colomns to add
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
33
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
34 -o filename output filename (defaut "genes.output.txt")
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
35 -v verbose mode
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
36 -mir filename file with positions of miRNA
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
37 -k9 filename ile with sites of K9me3
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
38
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
39 -c_rp value cutoff for -rp
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
40 -c_k9 value cutoff for -k9
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
41 -c_k36 value cutoff for -k36
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
42
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
43 -selG filename selected genes (up-down-regulated)
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
44 -fluo filename file with fluorescence
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
45 -gc filename file with gc-islands
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
46
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
47 -long for each gene take the longest isoform
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
48 -HMmode 1/0 for histone modification type H3K27me3: look for overlap with TSS or gene body (default 0)
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
49
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
50 };
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
51
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
52 if(scalar(@ARGV) == 0){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
53 print $usage;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
54 exit(0);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
55 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
56
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
57 ## mandatory arguments
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
58
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
59 my $RNApolFilename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
60 my $H3K36Me3polFilename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
61 my $H3K9Me3polFilename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
62 my $TF1Filename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
63 my $TF2Filename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
64 my $GenesFilename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
65 my $MirFilename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
66 my $TF1FilenameALL = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
67 my $TF2FilenameALL = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
68 my $SelectedGenesFilename = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
69 my $fluoFile = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
70 my $initialTable = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
71 my $colomnesToAdd = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
72
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
73 my $enhLeft = -30000;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
74 my $longEnhLeft = -60000;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
75 my $enhRight = -1500;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
76 my $immediateDownstream = 2000;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
77 my $K9dist = 5000;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
78 my $kb5 = 5000;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
79 my $INFINITY = 10000000000;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
80 my $jonctionSize = 50;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
81 ## optional arguments
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
82 my $outname = "genes.output.txt";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
83 my $verbose = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
84 my $GCislands = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
85
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
86 my $longest = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
87
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
88 #my $cutoff_tf1 = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
89 #my $cutoff_tf2 = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
90 my $cutoff_tf1All = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
91 my $cutoff_tf2All = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
92 my $cutoff_rp = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
93 my $cutoff_k9 = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
94 my $cutoff_k36 = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
95 my $ifTFcoord = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
96
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
97 my $ifHMmode = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
98
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
99 ## parse command line arguments
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
100
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
101 while(scalar(@ARGV) > 0){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
102 my $this_arg = shift @ARGV;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
103 if ( $this_arg eq '-h') {print "$usage\n"; exit; }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
104
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
105 elsif ( $this_arg eq '-selG') {$SelectedGenesFilename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
106
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
107 elsif ( $this_arg eq '-g') {$GenesFilename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
108 elsif ( $this_arg eq '-rp') {$RNApolFilename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
109 elsif ( $this_arg eq '-k36') {$H3K36Me3polFilename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
110 elsif ( $this_arg eq '-k9') {$H3K9Me3polFilename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
111
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
112 elsif ( $this_arg eq '-tf') {$TF1Filename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
113
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
114 elsif ( $this_arg eq '-v') {$verbose = 1;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
115
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
116 elsif ( $this_arg eq '-long') {$longest = 1;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
117
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
118
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
119 elsif ( $this_arg eq '-o') {$outname = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
120 elsif ( $this_arg eq '-mir') {$MirFilename = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
121
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
122 elsif ( $this_arg eq '-c_rp') {$cutoff_rp = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
123 elsif ( $this_arg eq '-c_k9') {$cutoff_k9 = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
124 elsif ( $this_arg eq '-c_k36') {$cutoff_k36 = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
125
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
126 elsif ( $this_arg eq '-fluo') {$fluoFile = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
127 elsif ( $this_arg eq '-gc') {$GCislands = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
128
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
129 elsif ( $this_arg eq '-i') {$initialTable = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
130 elsif ( $this_arg eq '-add') {$colomnesToAdd = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
131
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
132 elsif ( $this_arg eq '-lp') {$enhRight = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
133 elsif ( $this_arg eq '-rightp') {$immediateDownstream = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
134 elsif ( $this_arg eq '-enh') {$enhLeft = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
135 elsif ( $this_arg eq '-dg') {$kb5 = shift @ARGV;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
136 elsif ( $this_arg eq '-HMmode') {$ifHMmode = shift @ARGV; if ($ifHMmode eq "no" || $ifHMmode eq "0") {$ifHMmode = 0;} else {$ifHMmode=1;}}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
137
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
138
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
139
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
140 elsif ( $this_arg =~ m/^-/ ) { print "unknown flag: $this_arg\n";}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
141 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
142
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
143
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
144 if ( $GenesFilename eq "" ){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
145 die "you should specify a file with genes \n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
146 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
147 if(( $RNApolFilename eq "")&&($H3K36Me3polFilename eq "")&&($TF1Filename eq "")&&($H3K9Me3polFilename eq "")){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
148 die "you should specify at least one file with peaks\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
149 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
150
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
151
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
152 #-----------read selected genes----------------
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
153 my %selectedGenes;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
154 my %selectedGenesFoldChange;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
155 if ( $SelectedGenesFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
156 open (FILE, "<$SelectedGenesFilename ") or die "Cannot open file $SelectedGenesFilename !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
157 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
158 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
159 my @a = split/\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
160 $selectedGenes{$a[1]} = $a[3];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
161 $selectedGenesFoldChange{$a[1]} = $a[2];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
162 #print "gene:$a[1],reg:$selectedGenes{$a[1]},FC:$selectedGenesFoldChange{$a[1]}\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
163 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
164
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
165 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
166 print "\t\t$SelectedGenesFilename is read!\n" if ($verbose);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
167 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
168
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
169 #-----------read genes with fluorescence---------
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
170 my %fluoGenes;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
171 if ( $fluoFile ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
172 open (FILE, "<$fluoFile ") or die "Cannot open file $fluoFile !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
173 my $gene = "";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
174 my $med = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
175 my %h;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
176 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
177 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
178 my @a = split/\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
179
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
180 next if (scalar(@a)<5);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
181 next if ($a[0] eq "probesets");
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
182 next unless ($a[0] =~m/\S/);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
183 next unless ($a[4] =~m/\S/);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
184 if ($gene ne "" && $gene ne $a[2]) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
185 #calcMed
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
186 $med = med(keys %h);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
187 $fluoGenes{$gene} = $med;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
188 $med=0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
189 delete @h{keys %h};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
190 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
191 #$h{$a[4]} = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
192 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
193 $gene = $a[2];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
194 $h{$a[4]} = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
195 #print "keys ", scalar(keys %h),"\t",keys %h,"\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
196 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
197 if ($gene ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
198 $med = med(keys %h);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
199 $fluoGenes{$gene} = $med;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
200 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
201 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
202 print "\t\t$fluoFile is read!\n" if ($verbose);;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
203 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
204 #-----------read GC-islands----------------
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
205 my %GCislands;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
206 if ($GCislands ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
207 open (FILE, "<$GCislands ") or die "Cannot open file $GCislands !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
208
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
209 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
210 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
211 my @a = split/\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
212 #bin chrom chromStart chromEnd name length cpgNum gcNum perCpg perGc obsExp
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
213 #107 chr1 36568608 36569851 CpG: 128 1243 128 766 20.6 61.6 1.09
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
214 my $chr = $a[1];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
215 my $start = $a[2];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
216 my $end = $a[3];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
217 $GCislands{$chr}->{$start}=$end;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
218 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
219 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
220 if ($verbose) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
221 print "$GCislands is read\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
222 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
223 } elsif ($verbose) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
224 print "you did not specify a file with GC-islands\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
225 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
226
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
227 #-----------read genes----------------
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
228
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
229 my %genes;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
230
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
231 my $count = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
232
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
233 open (GENES, "<$GenesFilename") or die "Cannot open file $GenesFilename!!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
234 <GENES>;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
235 while (<GENES>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
236 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
237 if (/(chr.*)\s([+-])\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\S+)\s(\S+)\s\S+\s(\S+)/){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
238 my $name = $10;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
239 my $chr = $1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
240 my $strand = $2;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
241 if ($strand eq '+') {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
242 $strand = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
243 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
244 else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
245 $strand = -1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
246 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
247 my $leftPos = $3;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
248 my $rightPos = $4;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
249 my $cdsStart= $5;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
250 my $cdsEnd= $6;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
251 my $exonCount= $7;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
252 my $exonStarts= $8;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
253 my $exonEnds= $9;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
254 my $ID = "$name\t$chr:$leftPos-$rightPos\t$count";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
255 my $foldChange = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
256 my $reg = "NA";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
257 my $fluo = "NA";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
258 if ( $SelectedGenesFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
259 #print "$name\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
260 if (exists($selectedGenes{$name})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
261 $reg = $selectedGenes{$name};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
262 $foldChange = $selectedGenesFoldChange{$name};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
263 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
264 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
265 if ( $fluoFile ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
266 if (exists($fluoGenes{$name})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
267 $fluo = $fluoGenes{$name};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
268 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
269 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
270 unless (exists($genes{$chr})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
271 my %h;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
272 $genes{$chr} = \%h;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
273 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
274
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
275 my $RNAlength = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
276 my $skip = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
277
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
278 #print "$ID\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
279 if($longest) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
280 $RNAlength = getRNAlength($exonStarts,$exonEnds);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
281 for my $IDgene (keys %{$genes{$chr}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
282 my $nameGene= (split('\t', $IDgene))[0];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
283 if ($nameGene eq $name && $RNAlength > $genes{$chr}->{$IDgene}{'RNAlength'}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
284 #print "found longer isofome: $ID longer than $IDgene\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
285 # print "$RNAlength > ".$genes{$chr}->{$IDgene}{'RNAlength'}."\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
286
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
287 $ID=$IDgene;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
288 } elsif ($nameGene eq $name && $RNAlength <= $genes{$chr}->{$IDgene}{'RNAlength'}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
289 #print "found shorter isofome: $ID shorted than $IDgene\nwill skip it\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
290 #print "$RNAlength <= ".$genes{$chr}->{$IDgene}{'RNAlength'}."\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
291 $skip = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
292 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
293 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
294 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
295
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
296
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
297 unless ($skip) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
298
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
299 unless (exists($genes{$chr}->{$ID})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
300 my %h1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
301 $genes{$chr}->{$ID} = \%h1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
302 $count++;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
303 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
304
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
305 $genes{$chr}->{$ID}{'name'} = $name ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
306 $genes{$chr}->{$ID}{'left'} = $leftPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
307 $genes{$chr}->{$ID}{'right'} = $rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
308 $genes{$chr}->{$ID}{'cdsStart'} = $cdsStart;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
309 $genes{$chr}->{$ID}{'cdsEnd'} = $cdsEnd;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
310 $genes{$chr}->{$ID}{'strand'} = $strand;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
311 $genes{$chr}->{$ID}{'exonCount'} = $exonCount;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
312 $genes{$chr}->{$ID}{'exonStarts'} = $exonStarts;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
313 $genes{$chr}->{$ID}{'exonEnds'} = $exonEnds;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
314 $genes{$chr}->{$ID}{'TSS'} = ($strand == 1) ? $leftPos :$rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
315 $genes{$chr}->{$ID}{'TE'} = ($strand == -1) ? $leftPos :$rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
316 $genes{$chr}->{$ID}{'reg'} = $reg;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
317 $genes{$chr}->{$ID}{'foldChange'} = $foldChange;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
318 $genes{$chr}->{$ID}{'length'} = abs ($leftPos-$rightPos);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
319 $genes{$chr}->{$ID}{'RNAlength'} = $RNAlength ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
320
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
321 $genes{$chr}->{$ID}{'fluo'} = $fluo;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
322
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
323 $genes{$chr}->{$ID}{'RNApolScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
324 $genes{$chr}->{$ID}{'RNApolDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
325 $genes{$chr}->{$ID}{'RNApol_junctionScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
326 $genes{$chr}->{$ID}{'RNApol_junctionDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
327
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
328 $genes{$chr}->{$ID}{'K36score'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
329 $genes{$chr}->{$ID}{'K9promScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
330 $genes{$chr}->{$ID}{'K9promDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
331 $genes{$chr}->{$ID}{'K9largeScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
332 $genes{$chr}->{$ID}{'K9largeDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
333 $genes{$chr}->{$ID}{'TFpromScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
334 $genes{$chr}->{$ID}{'TFpromDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
335 $genes{$chr}->{$ID}{'TFenhScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
336 $genes{$chr}->{$ID}{'TFenhDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
337 $genes{$chr}->{$ID}{'TFintraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
338 $genes{$chr}->{$ID}{'TFintraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
339 $genes{$chr}->{$ID}{'TFallScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
340 $genes{$chr}->{$ID}{'TFallDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
341
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
342
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
343 $genes{$chr}->{$ID}{'TFFirstIntronAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
344 $genes{$chr}->{$ID}{'TFFirstIntronAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
345 $genes{$chr}->{$ID}{'TFFirstIntronScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
346 $genes{$chr}->{$ID}{'TFFirstIntronDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
347 $genes{$chr}->{$ID}{'TFintraMinusFirstIntronScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
348 $genes{$chr}->{$ID}{'TFintraMinusFirstIntronDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
349 $genes{$chr}->{$ID}{'TFImmDownScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
350 $genes{$chr}->{$ID}{'TFImmDownDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
351 $genes{$chr}->{$ID}{'TFpromSimpleScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
352 $genes{$chr}->{$ID}{'TFpromSimpleDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
353 $genes{$chr}->{$ID}{'TFenh60kbScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
354 $genes{$chr}->{$ID}{'TFenh60kbDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
355
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
356 $genes{$chr}->{$ID}{'TF_FirstExonScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
357 $genes{$chr}->{$ID}{'TF_FirstExonDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
358 $genes{$chr}->{$ID}{'TF_junctionScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
359 $genes{$chr}->{$ID}{'TF_junctionDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
360
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
361 $genes{$chr}->{$ID}{'TF_junctionAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
362 $genes{$chr}->{$ID}{'TF_junctionAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
363 $genes{$chr}->{$ID}{'TF_FirstExonAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
364 $genes{$chr}->{$ID}{'TF_FirstExonAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
365
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
366 $genes{$chr}->{$ID}{'TF_OtherExonsScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
367 $genes{$chr}->{$ID}{'TF_OtherExonsDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
368 $genes{$chr}->{$ID}{'TF_OtherExonsAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
369 $genes{$chr}->{$ID}{'TF_OtherExonsAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
370
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
371
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
372 $genes{$chr}->{$ID}{'TF_OtherIntronsScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
373 $genes{$chr}->{$ID}{'TF_OtherIntronsDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
374 $genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
375 $genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
376
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
377 $genes{$chr}->{$ID}{'TF5kbDownScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
378 $genes{$chr}->{$ID}{'TF5kbDownDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
379 $genes{$chr}->{$ID}{'K9enhScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
380 $genes{$chr}->{$ID}{'K9enhDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
381
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
382 $genes{$chr}->{$ID}{'K27TSS_Score'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
383 $genes{$chr}->{$ID}{'K27TSS_Dist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
384 $genes{$chr}->{$ID}{'K27GeneB_Score'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
385 $genes{$chr}->{$ID}{'K27GeneB_Dist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
386
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
387 ($genes{$chr}->{$ID}{'firstIntronStart'},$genes{$chr}->{$ID}{'firstIntronEnd'}) = getFirstIntron ($exonCount,$exonStarts,$exonEnds,$strand);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
388 ($genes{$chr}->{$ID}{'firstExonStart'},$genes{$chr}->{$ID}{'firstExonEnd'}) = getFirstExon ($exonCount,$exonStarts,$exonEnds,$strand);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
389
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
390 $genes{$chr}->{$ID}{'exonCount'} = $exonCount;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
391 $genes{$chr}->{$ID}{'exonStarts'} = $exonStarts;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
392 $genes{$chr}->{$ID}{'exonEnds'} = $exonEnds;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
393
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
394
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
395 $genes{$chr}->{$ID}{'GCisland'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
396 if ($GCislands ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
397 $genes{$chr}->{$ID}{'GCisland'} = checkIfGC ($genes{$chr}->{$ID}{'TSS'},$strand,2000,$GCislands{$chr});
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
398 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
399 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
400 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
401 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
402
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
403 print "Total genes (including isoforms) : $count\n" ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
404 close GENES;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
405 print "\t\t$GenesFilename is read!\n" if ($verbose);;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
406 #for my $gName (sort keys %{$genes{'chr18'}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
407
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
408 # print "$gName\t$genes{'chr18'}->{$gName}{'TSS'}\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
409 #}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
410
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
411 #-----------read file with sites miRNA, store as genes-----
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
412
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
413 if ( $MirFilename eq ""){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
414 print "you did not specify file with miRNA\n" if ($verbose);;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
415 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
416 else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
417 $count = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
418 open (MIR, "<$MirFilename ") or die "Cannot open file $MirFilename !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
419 #chr1 20669090 20669163 mmu-mir-206 960 +
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
420 while (<MIR>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
421 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
422 my ($name, $chr, $leftPos, $rightPos, $strand );
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
423 #1 . miRNA 20669091 20669163 . + . ACC="MI0000249"; ID="mmu-mir-206";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
424 if (/([0-9XYM]+)\s.\smiRNA\s(\d+)\s(\d+)\s.\s([+-])\s.\sACC=.*ID=\"(.*)\"/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
425 $name = $5;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
426 $chr = $1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
427 $leftPos = $2;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
428 $rightPos = $3;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
429 $strand = $4;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
430 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
431 elsif (/(.*)\s(\d+)\s(\d+)\s(.*)\s(.*)\s(.*)/){
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
432 $name = $4;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
433 $chr = $1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
434 $leftPos = $2;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
435 $rightPos = $3;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
436 $strand = $6;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
437 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
438 next;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
439 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
440
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
441 unless ($chr =~ m/chr/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
442 $chr = "chr".$chr;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
443 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
444 my $ID = "$name\t$chr:$leftPos-$rightPos\t$count";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
445
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
446 if ($strand eq '+') {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
447 $strand = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
448 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
449 else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
450 $strand = -1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
451 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
452
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
453 unless (exists($genes{$chr})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
454 my %h;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
455 $genes{$chr} = \%h;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
456 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
457 unless (exists($genes{$chr}->{$ID})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
458 my %h1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
459 $genes{$chr}->{$ID} = \%h1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
460 $count++;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
461 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
462 $genes{$chr}->{$ID}{'name'} = $name ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
463 $genes{$chr}->{$ID}{'left'} = $leftPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
464 $genes{$chr}->{$ID}{'right'} = $rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
465 $genes{$chr}->{$ID}{'cdsStart'} = $leftPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
466 $genes{$chr}->{$ID}{'cdsEnd'} = $rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
467 $genes{$chr}->{$ID}{'strand'} = $strand;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
468 $genes{$chr}->{$ID}{'length'} = abs ($leftPos-$rightPos);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
469 $genes{$chr}->{$ID}{'exonCount'} = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
470 $genes{$chr}->{$ID}{'exonStarts'} = $leftPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
471 $genes{$chr}->{$ID}{'exonEnds'} = $rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
472 $genes{$chr}->{$ID}{'TSS'} = ($strand == 1) ? $leftPos :$rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
473 $genes{$chr}->{$ID}{'TE'} = ($strand == -1) ? $leftPos :$rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
474 $genes{$chr}->{$ID}{'reg'} = "miRNA";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
475 $genes{$chr}->{$ID}{'foldChange'} = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
476
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
477 $genes{$chr}->{$ID}{'fluo'} = "N/A";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
478
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
479
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
480 $genes{$chr}->{$ID}{'RNApolScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
481 $genes{$chr}->{$ID}{'RNApolDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
482 $genes{$chr}->{$ID}{'RNApol_junctionScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
483 $genes{$chr}->{$ID}{'RNApol_junctionDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
484 $genes{$chr}->{$ID}{'K36score'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
485 $genes{$chr}->{$ID}{'K9promScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
486 $genes{$chr}->{$ID}{'K9promDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
487 $genes{$chr}->{$ID}{'K9largeScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
488 $genes{$chr}->{$ID}{'K9largeDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
489 $genes{$chr}->{$ID}{'TFpromScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
490 $genes{$chr}->{$ID}{'TFpromDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
491 $genes{$chr}->{$ID}{'TFenhScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
492 $genes{$chr}->{$ID}{'TFenhDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
493 $genes{$chr}->{$ID}{'TFintraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
494 $genes{$chr}->{$ID}{'TFintraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
495 $genes{$chr}->{$ID}{'TFallScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
496 $genes{$chr}->{$ID}{'TFallDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
497
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
498 $genes{$chr}->{$ID}{'TFFirstIntronAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
499 $genes{$chr}->{$ID}{'TFFirstIntronAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
500 $genes{$chr}->{$ID}{'TFFirstIntronScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
501 $genes{$chr}->{$ID}{'TFFirstIntronDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
502 $genes{$chr}->{$ID}{'TFintraMinusFirstIntronScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
503 $genes{$chr}->{$ID}{'TFintraMinusFirstIntronDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
504 $genes{$chr}->{$ID}{'TFImmDownScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
505 $genes{$chr}->{$ID}{'TFImmDownDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
506 $genes{$chr}->{$ID}{'TFpromSimpleScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
507 $genes{$chr}->{$ID}{'TFpromSimpleDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
508
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
509 $genes{$chr}->{$ID}{'TF_FirstExonScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
510 $genes{$chr}->{$ID}{'TF_FirstExonDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
511 $genes{$chr}->{$ID}{'TF_OtherExonsScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
512 $genes{$chr}->{$ID}{'TF_OtherExonsDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
513 $genes{$chr}->{$ID}{'TF_OtherExonsAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
514 $genes{$chr}->{$ID}{'TF_OtherExonsAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
515 $genes{$chr}->{$ID}{'TF_junctionScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
516 $genes{$chr}->{$ID}{'TF_junctionDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
517 $genes{$chr}->{$ID}{'TF_OtherIntronsScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
518 $genes{$chr}->{$ID}{'TF_OtherIntronsDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
519 $genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
520 $genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
521
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
522 $genes{$chr}->{$ID}{'TF_junctionAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
523 $genes{$chr}->{$ID}{'TF_junctionAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
524 $genes{$chr}->{$ID}{'TF_FirstExonAndIntraScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
525 $genes{$chr}->{$ID}{'TF_FirstExonAndIntraDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
526
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
527 $genes{$chr}->{$ID}{'TFenh60kbScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
528 $genes{$chr}->{$ID}{'TFenh60kbDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
529
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
530 $genes{$chr}->{$ID}{'TF5kbDownScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
531 $genes{$chr}->{$ID}{'TF5kbDownDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
532 $genes{$chr}->{$ID}{'K9enhScore'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
533 $genes{$chr}->{$ID}{'K9enhDist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
534
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
535 $genes{$chr}->{$ID}{'K27TSS_Score'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
536 $genes{$chr}->{$ID}{'K27TSS_Dist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
537 $genes{$chr}->{$ID}{'K27GeneB_Score'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
538 $genes{$chr}->{$ID}{'K27GeneB_Dist'} = $INFINITY;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
539
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
540 ($genes{$chr}->{$ID}{'firstIntronStart'},$genes{$chr}->{$ID}{'firstIntronEnd'}) = (0,0);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
541 ($genes{$chr}->{$ID}{'firstExonStart'},$genes{$chr}->{$ID}{'firstExonEnd'}) = (0,0);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
542
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
543 $genes{$chr}->{$ID}{'GCisland'} = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
544
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
545 $genes{$chr}->{$ID}{'exonCount'} = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
546 $genes{$chr}->{$ID}{'exonStarts'} = $leftPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
547 $genes{$chr}->{$ID}{'exonEnds'} = $rightPos ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
548
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
549
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
550 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
551
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
552
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
553 close MIR;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
554 print "\t\t$MirFilename is read!\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
555 print "$count miRNA\n" if ($verbose);;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
556 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
557
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
558 #-----------read file with sites of TF1-----
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
559 my $numberOfAllSites = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
560
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
561 if ($TF1Filename eq "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
562 print "No file with peaks of TF1!\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
563 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
564 open (FILE, "<$TF1Filename ") or die "Cannot open file $TF1Filename !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
565 $_ = <FILE>;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
566 my $correction = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
567 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
568 if ( $a[1] =~ m/chr/ ) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
569 $correction = 1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
570 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
571
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
572 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
573 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
574
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
575 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
576
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
577 my $chr = $a[0+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
578 my $firstPos = $a[1+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
579 my $LastPos = $a[2+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
580
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
581 my $maxPos = int(($firstPos+$LastPos)/2);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
582 if (scalar(@a)>(3+$correction)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
583 $maxPos = $a[3+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
584 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
585 if ($maxPos=~/\D/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
586 $maxPos = int(($firstPos+$LastPos)/2);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
587 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
588 my $score = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
589 if (scalar(@a)>(4+$correction)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
590 $score = $a[4+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
591 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
592 for my $ID (keys %{$genes{$chr}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
593
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
594 my $distTSS = ($maxPos - $genes{$chr}->{$ID}{'TSS'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
595 my $distTE = ($maxPos - $genes{$chr}->{$ID}{'TE'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
596
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
597 my $hmDist;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
598 my $hmCorDist = -1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
599 if ($ifHMmode) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
600 if ($genes{$chr}->{$ID}{'strand'}==1) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
601 if ($LastPos <= $genes{$chr}->{$ID}{'TSS'}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
602 $hmDist = $LastPos-$genes{$chr}->{$ID}{'TSS'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
603 } elsif ($firstPos >= $genes{$chr}->{$ID}{'TSS'}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
604 $hmDist = $firstPos - $genes{$chr}->{$ID}{'TSS'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
605 } else {$hmDist = 0;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
606
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
607 if ($hmDist >= 0 && $genes{$chr}->{$ID}{'TE'} >= $firstPos) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
608 $hmCorDist = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
609 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
610
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
611 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
612
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
613 if ($LastPos <= $genes{$chr}->{$ID}{'TSS'}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
614 $hmDist = $genes{$chr}->{$ID}{'TSS'}- $LastPos;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
615 } elsif ($firstPos >= $genes{$chr}->{$ID}{'TSS'}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
616 $hmDist = $genes{$chr}->{$ID}{'TSS'}-$firstPos;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
617 } else {$hmDist = 0;}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
618
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
619 if ($hmDist >= 0 && $genes{$chr}->{$ID}{'TE'} <= $LastPos) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
620 $hmCorDist = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
621 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
622 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
623
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
624
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
625 if (($hmDist>= $enhRight)&&($hmDist<=$immediateDownstream)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
626 if ($genes{$chr}->{$ID}{'K27TSS_Score'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
627 $genes{$chr}->{$ID}{'K27TSS_Score'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
628 $genes{$chr}->{$ID}{'K27TSS_Dist'} = $hmDist;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
629 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
630 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
631
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
632 if ($hmDist>$immediateDownstream && $hmCorDist == 0) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
633 if ($genes{$chr}->{$ID}{'K27GeneB_Score'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
634 $genes{$chr}->{$ID}{'K27GeneB_Score'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
635 $genes{$chr}->{$ID}{'K27GeneB_Dist'} = $hmDist;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
636 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
637 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
638
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
639 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
640
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
641
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
642
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
643 if (($distTSS>= $enhLeft)&&($distTSS<$enhRight)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
644 if ($genes{$chr}->{$ID}{'TFenhScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
645 $genes{$chr}->{$ID}{'TFenhScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
646 $genes{$chr}->{$ID}{'TFenhDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
647 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
648 } elsif (($distTSS>= $enhRight)&&($distTSS<=$immediateDownstream)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
649 if ($genes{$chr}->{$ID}{'TFpromScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
650 $genes{$chr}->{$ID}{'TFpromScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
651 $genes{$chr}->{$ID}{'TFpromDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
652 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
653 } elsif (($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
654 if ($genes{$chr}->{$ID}{'TFintraScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
655 $genes{$chr}->{$ID}{'TFintraScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
656 $genes{$chr}->{$ID}{'TFintraDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
657 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
658 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
659 if (($distTSS>= $enhLeft)&&($distTE<=$kb5)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
660 if ($genes{$chr}->{$ID}{'TFallScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
661 $genes{$chr}->{$ID}{'TFallScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
662 $genes{$chr}->{$ID}{'TFallDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
663 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
664 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
665
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
666 if (($distTSS>= 0)&&($distTSS<=$immediateDownstream)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
667 if ($genes{$chr}->{$ID}{'TFImmDownScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
668 $genes{$chr}->{$ID}{'TFImmDownScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
669 $genes{$chr}->{$ID}{'TFImmDownDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
670 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
671 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
672 if (($distTSS<= 0)&&($distTSS>=$enhRight)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
673 if ($genes{$chr}->{$ID}{'TFpromSimpleScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
674 $genes{$chr}->{$ID}{'TFpromSimpleScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
675 $genes{$chr}->{$ID}{'TFpromSimpleDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
676 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
677 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
678
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
679 my ($firstIntronStart,$firstIntronEnd)=($genes{$chr}->{$ID}{'firstIntronStart'},$genes{$chr}->{$ID}{'firstIntronEnd'});
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
680 ($firstIntronStart,$firstIntronEnd)= ($firstIntronEnd,$firstIntronStart) if ($firstIntronStart>$firstIntronEnd) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
681
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
682 my ($firstExonStart,$firstExonEnd) = ($genes{$chr}->{$ID}{'firstExonStart'},$genes{$chr}->{$ID}{'firstExonEnd'}) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
683 ($firstExonStart,$firstExonEnd)= ($firstExonEnd,$firstExonStart) if ($firstExonStart>$firstExonEnd) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
684
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
685 if ($maxPos>=$firstIntronStart && $maxPos <= $firstIntronEnd) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
686 if ($genes{$chr}->{$ID}{'TFFirstIntronScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
687 $genes{$chr}->{$ID}{'TFFirstIntronScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
688 $genes{$chr}->{$ID}{'TFFirstIntronDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
689 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
690
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
691 if (($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
692 if ($genes{$chr}->{$ID}{'TFFirstIntronAndIntraScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
693 $genes{$chr}->{$ID}{'TFFirstIntronAndIntraScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
694 $genes{$chr}->{$ID}{'TFFirstIntronAndIntraDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
695 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
696 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
697 } elsif (($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
698 if ($genes{$chr}->{$ID}{'TFintraMinusFirstIntronScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
699 $genes{$chr}->{$ID}{'TFintraMinusFirstIntronScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
700 $genes{$chr}->{$ID}{'TFintraMinusFirstIntronDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
701 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
702 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
703 if (($distTSS>= $longEnhLeft)&&($distTSS<$enhRight)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
704 if ($genes{$chr}->{$ID}{'TFenh60kbScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
705 $genes{$chr}->{$ID}{'TFenh60kbScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
706 $genes{$chr}->{$ID}{'TFenh60kbDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
707 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
708 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
709 if (($distTE>=0)&&($distTE<=$kb5)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
710 if ($genes{$chr}->{$ID}{'TF5kbDownScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
711 $genes{$chr}->{$ID}{'TF5kbDownScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
712 $genes{$chr}->{$ID}{'TF5kbDownDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
713 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
714 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
715 if ($distTSS>=0 && $distTE<=0) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
716 my $typeIntra = &getTypeIntra($genes{$chr}->{$ID},$maxPos);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
717 if ($typeIntra eq "f_exon") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
718 if ($genes{$chr}->{$ID}{'TF_FirstExonScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
719 $genes{$chr}->{$ID}{'TF_FirstExonScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
720 $genes{$chr}->{$ID}{'TF_FirstExonDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
721 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
722
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
723 if ($genes{$chr}->{$ID}{'TF_FirstExonAndIntraScore'}<$score && ($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
724 $genes{$chr}->{$ID}{'TF_FirstExonAndIntraScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
725 $genes{$chr}->{$ID}{'TF_FirstExonAndIntraDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
726 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
727
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
728 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
729 if ($typeIntra eq "exon") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
730 if ($genes{$chr}->{$ID}{'TF_OtherExonsScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
731 $genes{$chr}->{$ID}{'TF_OtherExonsScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
732 $genes{$chr}->{$ID}{'TF_OtherExonsDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
733 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
734
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
735 if (($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
736 if ($genes{$chr}->{$ID}{'TF_OtherExonsAndIntraScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
737 $genes{$chr}->{$ID}{'TF_OtherExonsAndIntraScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
738 $genes{$chr}->{$ID}{'TF_OtherExonsAndIntraDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
739 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
740 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
741
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
742 } elsif ($typeIntra eq "intron") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
743 if ($genes{$chr}->{$ID}{'TF_OtherIntronsScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
744 $genes{$chr}->{$ID}{'TF_OtherIntronsScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
745 $genes{$chr}->{$ID}{'TF_OtherIntronsDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
746 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
747
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
748 if (($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
749 if ($genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
750 $genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
751 $genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
752 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
753 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
754 } elsif ($typeIntra eq "jonction") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
755 if ($genes{$chr}->{$ID}{'TF_junctionScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
756 $genes{$chr}->{$ID}{'TF_junctionScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
757 $genes{$chr}->{$ID}{'TF_junctionDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
758 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
759
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
760 if ($genes{$chr}->{$ID}{'TF_junctionAndIntraScore'}<$score && ($distTSS >= $immediateDownstream)&&($distTE<=0)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
761 $genes{$chr}->{$ID}{'TF_junctionAndIntraScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
762 $genes{$chr}->{$ID}{'TF_junctionAndIntraDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
763 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
764
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
765 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
766
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
767 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
768 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
769
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
770
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
771 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
772 $numberOfAllSites++;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
773 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
774
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
775 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
776 print "\t$TF1Filename is read!\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
777 print "$numberOfAllSites sites\n" ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
778 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
779
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
780 #-----------read file with sites RNApolII-----
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
781 $numberOfAllSites = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
782
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
783 if ($RNApolFilename eq "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
784 print "No file with peaks of RNA pol II!\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
785 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
786 open (FILE, "<$RNApolFilename ") or die "Cannot open file $RNApolFilename !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
787 $_ = <FILE>;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
788 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
789 my $correction = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
790
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
791 if ($a[0]=~m/chr/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
792 $correction = -1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
793 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
794 #seek (FILE, 0, 0);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
795 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
796 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
797
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
798 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
799
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
800 my $chr = $a[1+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
801 my $firstPos = $a[2+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
802 my $LastPos = $a[3+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
803 my $maxPos = $a[4+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
804 my $score = $a[5+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
805 #print "$numberOfAllSites: $score\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
806 next if ($score < $cutoff_rp);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
807
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
808 for my $ID (keys %{$genes{$chr}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
809
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
810 my $distTSS = ($maxPos - $genes{$chr}->{$ID}{'TSS'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
811 my $distTE = ($maxPos - $genes{$chr}->{$ID}{'TE'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
812
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
813 if (($distTSS>= $enhRight)&&($distTSS<=$immediateDownstream)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
814 if ($genes{$chr}->{$ID}{'RNApolScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
815 $genes{$chr}->{$ID}{'RNApolScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
816 $genes{$chr}->{$ID}{'RNApolDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
817 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
818 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
819 if ($distTSS>=0 && $distTE<=0) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
820 my $typeIntra = &getTypeIntra($genes{$chr}->{$ID},$maxPos);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
821 if ($typeIntra eq "jonction") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
822 if ($genes{$chr}->{$ID}{'RNApol_junctionScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
823 $genes{$chr}->{$ID}{'RNApol_junctionScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
824 $genes{$chr}->{$ID}{'RNApol_junctionDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
825 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
826 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
827 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
828 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
829
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
830 $numberOfAllSites++;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
831 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
832 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
833 print "\t$RNApolFilename is read!\n$numberOfAllSites sites\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
834
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
835 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
836
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
837 #-----------read file with sites K36me3-----
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
838 $numberOfAllSites = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
839 my @K36Score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
840
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
841 if ($H3K36Me3polFilename eq "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
842 print "No file with peaks of H3K36me3!\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
843 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
844 open (FILE, "<$H3K36Me3polFilename ") or die "Cannot open file $H3K36Me3polFilename !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
845
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
846 $_ = <FILE>;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
847 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
848 my $correction = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
849
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
850 if ($a[0]=~m/chr/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
851 $correction = -1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
852 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
853
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
854 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
855 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
856
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
857 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
858
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
859 my $chr = $a[1+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
860 my $firstPos = $a[2+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
861 my $lastPos = $a[3+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
862 my $maxPos = int(($firstPos+$lastPos)/2);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
863 if (scalar(@a)>(4+$correction)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
864 $maxPos = $a[4+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
865 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
866 if ($maxPos =~ m/\D/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
867 $maxPos = int(($firstPos+$lastPos)/2);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
868 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
869 my $score = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
870 if (scalar(@a)>(5+$correction)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
871 $score = $a[5+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
872 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
873 for my $ID (keys %{$genes{$chr}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
874
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
875 my $distTSS = ($maxPos - $genes{$chr}->{$ID}{'TSS'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
876 my $distTE = ($maxPos - $genes{$chr}->{$ID}{'TE'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
877
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
878 my $scoreToadd = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
879
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
880 if (($firstPos>=$genes{$chr}->{$ID}{'left'})&&($lastPos<=$genes{$chr}->{$ID}{'right'})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
881 $scoreToadd = $score/2.*($lastPos-$firstPos+1)/($genes{$chr}->{$ID}{'right'}-$genes{$chr}->{$ID}{'left'}+1);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
882 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
883 if (($firstPos>=$genes{$chr}->{$ID}{'left'})&&($firstPos<$genes{$chr}->{$ID}{'right'})&&($lastPos>$genes{$chr}->{$ID}{'right'})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
884 $scoreToadd = $score/2.*($genes{$chr}->{$ID}{'right'}-$firstPos+1)/($genes{$chr}->{$ID}{'right'}-$genes{$chr}->{$ID}{'left'}+1);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
885 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
886 if (($firstPos<$genes{$chr}->{$ID}{'left'})&&($lastPos>$genes{$chr}->{$ID}{'left'})&&($lastPos<=$genes{$chr}->{$ID}{'right'})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
887 $scoreToadd = $score/2.*($lastPos-$genes{$chr}->{$ID}{'left'}+1)/($genes{$chr}->{$ID}{'right'}-$genes{$chr}->{$ID}{'left'}+1);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
888 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
889 if (($firstPos<$genes{$chr}->{$ID}{'left'})&&($lastPos>$genes{$chr}->{$ID}{'right'})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
890 my $scoreToadd = $score/2.*($lastPos-$firstPos+1);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
891 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
892 $genes{$chr}->{$ID}{'K36score'} += $scoreToadd;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
893 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
894 $numberOfAllSites++;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
895 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
896 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
897 print "\t$H3K36Me3polFilename is read!\n$numberOfAllSites sites\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
898 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
899
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
900 #-----------read file with sites H3K9me3-----
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
901 $numberOfAllSites = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
902
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
903
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
904 if ($H3K9Me3polFilename eq "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
905 print "No file with peaks of H3K9me3!\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
906 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
907 open (FILE, "<$H3K9Me3polFilename ") or die "Cannot open file $H3K9Me3polFilename !!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
908
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
909 $_ = <FILE>;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
910 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
911 my $correction = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
912
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
913 if ($a[0]=~m/chr/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
914 $correction = -1;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
915 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
916
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
917 while (<FILE>) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
918 s/\R//g;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
919 my @a = split /\t/;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
920 my $chr = $a[1+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
921 my $firstPos = $a[2+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
922 my $LastPos = $a[3+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
923 my $maxPos = $a[4+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
924 my $score = $a[5+$correction];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
925
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
926 next if ($score < $cutoff_k9);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
927
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
928 for my $ID (keys %{$genes{$chr}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
929
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
930 my $distTSS = ($maxPos - $genes{$chr}->{$ID}{'TSS'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
931 my $distTE = ($maxPos - $genes{$chr}->{$ID}{'TE'})*$genes{$chr}->{$ID}{'strand'};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
932
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
933 if (($distTSS>= $enhRight)&&($distTSS<=$immediateDownstream)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
934 if ($genes{$chr}->{$ID}{'K9promScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
935 $genes{$chr}->{$ID}{'K9promScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
936 $genes{$chr}->{$ID}{'K9promDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
937 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
938 } elsif (($distTSS >= -$K9dist)&&($distTSS<=$K9dist)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
939 if ($genes{$chr}->{$ID}{'K9largeScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
940 $genes{$chr}->{$ID}{'K9largeScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
941 $genes{$chr}->{$ID}{'K9largeDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
942 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
943 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
944 if (($distTSS>= $enhLeft)&&($distTSS<$enhRight)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
945 if ($genes{$chr}->{$ID}{'K9enhScore'}<$score) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
946 $genes{$chr}->{$ID}{'K9enhScore'}=$score;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
947 $genes{$chr}->{$ID}{'K9enhDist'} = $distTSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
948 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
949 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
950 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
951 $numberOfAllSites++;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
952 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
953 close FILE;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
954 print "\t$H3K9Me3polFilename is read!\n$numberOfAllSites sites\n" if ($verbose) ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
955 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
956
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
957 #-----------output all-----
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
958 #unless($initialTable eq "") {}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
959
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
960
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
961 open (OUT , ">$outname") or die "Cannot open file $outname!!!!: $!";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
962
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
963 print OUT "name\tchr\tstart\tend\tstrand\tReg\tfoldChange\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
964
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
965 if ($GCislands ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
966 print OUT "GC-island\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
967 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
968
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
969 if ( $fluoFile ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
970 print OUT "fluorescence\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
971 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
972
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
973 if ($RNApolFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
974 print OUT "RNApolII_score\tRNApolII_distTSS\tRNApol_junctionScore\tRNApol_junctionDist\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
975 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
976 if ($H3K36Me3polFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
977 print OUT "H3K36me3_score\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
978 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
979 if ($H3K9Me3polFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
980 print OUT "H3K9me3_score_prom\tH3K9me3_distTSS_prom\tH3K9me3_score_large\tH3K9me3_distTSS_large\tH3K9me3_score_enh\tH3K9me3_distTSS_enh\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
981 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
982 if ($TF1Filename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
983 print OUT "TF_score_Gene\tTF_distTSS_Gene\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
984 print OUT "TF_score_Promoter\tTF_distTSS_Promoter\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
985 print OUT "TF_score_ImmDown\tTF_distTSS_ImmDown\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
986 print OUT "TF_score_PromoterORImmDown\tTF_distTSS_PromoterORImmDown\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
987 print OUT "TF_score_Enhancer\tTF_distTSS_Enhancer\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
988 print OUT "TF_score_Intragenic\tTF_distTSS_Intragenic\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
989 print OUT "TF_score_GeneDownstream\tTF_distTSS_GeneDownstream\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
990 print OUT "TF_score_FirstExon\tTF_distTSS_FirstExon\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
991 print OUT "TF_score_FisrtIntron\tTF_distTSS_FisrtIntron\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
992 print OUT "TF_score_FirstExonAND>$immediateDownstream\tTF_distTSS_FirstExonAND>$immediateDownstream\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
993 print OUT "TF_score_FisrtIntronAND>$immediateDownstream\tTF_distTSS_FisrtIntronAND>$immediateDownstream\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
994 #print OUT "TF_score_IntraMinusFisrtIntron\tTF_distTSS_IntraMinusFisrtIntron\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
995
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
996 #print OUT "TF_score_enh60kb\tTF_distTSS_enh60kb\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
997
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
998 print OUT "TF_score_Exons2,3,4,etc\tTF_distTSS_Exons2,3,4,etc\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
999 print OUT "TF_score_Exons2,3,4,etcAND>$immediateDownstream\tTF_distTSS_Exons2,3,4,etcAND>$immediateDownstream\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1000
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1001 print OUT "TF_score_Introns2,3,4,etc\tTF_distTSS_Introns2,3,4,etc\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1002 print OUT "TF_score_Introns2,3,4,etcAND>$immediateDownstream\tTF_distTSS_Introns2,3,4,etcAND>$immediateDownstream\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1003
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1004 print OUT "TF_score_EIjunction\tTF_distTSS_EIjunction\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1005 print OUT "TF_score_EIjunctionAND>$immediateDownstream\tTF_distTSS_EIjunctionAND>$immediateDownstream";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1006
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1007 if ($ifHMmode) {print OUT "\tK27TSS_Score\tK27TSS_Dist\tK27GeneB_Score\tK27GeneB_Dist"}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1008 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1009
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1010 print OUT "\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1011
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1012 for my $chr (keys %genes) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1013 for my $ID (keys %{$genes{$chr}}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1014 print OUT "$genes{$chr}->{$ID}{'name'}\t$chr\t$genes{$chr}->{$ID}{'left'}\t$genes{$chr}->{$ID}{'right'}\t$genes{$chr}->{$ID}{'strand'}\t$genes{$chr}->{$ID}{'reg'}\t$genes{$chr}->{$ID}{'foldChange'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1015
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1016 if ($GCislands ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1017 print OUT "$genes{$chr}->{$ID}{'GCisland'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1018 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1019
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1020 if ( $fluoFile ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1021 print OUT "$genes{$chr}->{$ID}{'fluo'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1022 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1023
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1024 if ($RNApolFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1025 print OUT "$genes{$chr}->{$ID}{'RNApolScore'}\t$genes{$chr}->{$ID}{'RNApolDist'}\t$genes{$chr}->{$ID}{'RNApol_junctionScore'}\t$genes{$chr}->{$ID}{'RNApol_junctionDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1026 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1027 if ($H3K36Me3polFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1028 print OUT "$genes{$chr}->{$ID}{'K36score'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1029 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1030 if ($H3K9Me3polFilename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1031 print OUT "$genes{$chr}->{$ID}{'K9promScore'}\t$genes{$chr}->{$ID}{'K9promDist'}\t$genes{$chr}->{$ID}{'K9largeScore'}\t$genes{$chr}->{$ID}{'K9largeDist'}\t$genes{$chr}->{$ID}{'K9enhScore'}\t$genes{$chr}->{$ID}{'K9enhDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1032 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1033 if ($TF1Filename ne "") {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1034 print OUT "$genes{$chr}->{$ID}{'TFallScore'}\t$genes{$chr}->{$ID}{'TFallDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1035 print OUT "$genes{$chr}->{$ID}{'TFpromSimpleScore'}\t$genes{$chr}->{$ID}{'TFpromSimpleDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1036 print OUT "$genes{$chr}->{$ID}{'TFImmDownScore'}\t$genes{$chr}->{$ID}{'TFImmDownDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1037 print OUT "$genes{$chr}->{$ID}{'TFpromScore'}\t$genes{$chr}->{$ID}{'TFpromDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1038 print OUT "$genes{$chr}->{$ID}{'TFenhScore'}\t$genes{$chr}->{$ID}{'TFenhDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1039 print OUT "$genes{$chr}->{$ID}{'TFintraScore'}\t$genes{$chr}->{$ID}{'TFintraDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1040 print OUT "$genes{$chr}->{$ID}{'TF5kbDownScore'}\t$genes{$chr}->{$ID}{'TF5kbDownDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1041 print OUT "$genes{$chr}->{$ID}{'TF_FirstExonScore'}\t$genes{$chr}->{$ID}{'TF_FirstExonDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1042 print OUT "$genes{$chr}->{$ID}{'TF_FirstExonAndIntraScore'}\t$genes{$chr}->{$ID}{'TF_FirstExonAndIntraDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1043 print OUT "$genes{$chr}->{$ID}{'TFFirstIntronScore'}\t$genes{$chr}->{$ID}{'TFFirstIntronDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1044 print OUT "$genes{$chr}->{$ID}{'TFFirstIntronAndIntraScore'}\t$genes{$chr}->{$ID}{'TFFirstIntronAndIntraDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1045 #print OUT "$genes{$chr}->{$ID}{'TFintraMinusFirstIntronScore'}\t$genes{$chr}->{$ID}{'TFintraMinusFirstIntronDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1046
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1047 #print OUT "$genes{$chr}->{$ID}{'TFenh60kbScore'}\t$genes{$chr}->{$ID}{'TFenh60kbDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1048
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1049 print OUT "$genes{$chr}->{$ID}{'TF_OtherExonsScore'}\t$genes{$chr}->{$ID}{'TF_OtherExonsDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1050 print OUT "$genes{$chr}->{$ID}{'TF_OtherExonsAndIntraScore'}\t$genes{$chr}->{$ID}{'TF_OtherExonsAndIntraDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1051
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1052 print OUT "$genes{$chr}->{$ID}{'TF_OtherIntronsScore'}\t$genes{$chr}->{$ID}{'TF_OtherIntronsDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1053 print OUT "$genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraScore'}\t$genes{$chr}->{$ID}{'TF_OtherIntronsAndIntraDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1054
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1055 print OUT "$genes{$chr}->{$ID}{'TF_junctionScore'}\t$genes{$chr}->{$ID}{'TF_junctionDist'}\t";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1056 print OUT "$genes{$chr}->{$ID}{'TF_junctionAndIntraScore'}\t$genes{$chr}->{$ID}{'TF_junctionAndIntraDist'}";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1057
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1058 if ($ifHMmode) {print OUT "\t$genes{$chr}->{$ID}{'K27TSS_Score'}\t$genes{$chr}->{$ID}{'K27TSS_Dist'}\t$genes{$chr}->{$ID}{'K27GeneB_Score'}\t$genes{$chr}->{$ID}{'K27GeneB_Dist'}"}
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1059
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1060 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1061 print OUT "\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1062 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1063 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1064
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1065 close OUT;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1066
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1067 ###################################
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1068 sub med {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1069 my @arr = @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1070 my $med = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1071 @arr = sort {$a <=> $b} @arr;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1072 if ((scalar(@arr)/2) =~ m/[\.\,]5/) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1073 return $arr[floor(scalar(@arr)/2)];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1074 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1075 return ($arr[scalar(@arr)/2]+$arr[scalar(@arr)/2-1])/2;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1076 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1077 $med;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1078 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1079
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1080 sub checkIfGC {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1081 my ($TSS,$strand,$dist,$GCislandsChr)=@_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1082 my $ifGC = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1083 my $leftProm=$TSS-$dist;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1084 my $rightProm = $TSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1085 if ($strand== -1) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1086 my $leftProm=$TSS;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1087 my $rightProm = $TSS+$dist;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1088 } #print "$leftProm\t"; print "$rightProm\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1089 for my $leftGC (keys %{$GCislandsChr}) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1090 my $rightGC = $GCislandsChr->{$leftGC};
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1091 if ($leftGC>=$leftProm&&$leftGC<=$rightProm || $rightGC>=$leftProm&&$rightGC<=$rightProm) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1092 return "GC-island";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1093 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1094 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1095 return $ifGC ;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1096 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1097
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1098 sub getFirstIntron {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1099 my ($exonCount,$exonStarts,$exonEnds,$strand) = @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1100 my ($left,$right);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1101 if ($exonCount == 1) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1102 return (0,0);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1103 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1104 if ($strand == 1) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1105 $left = (split ",", $exonEnds)[0];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1106 $right = (split (",", $exonStarts))[1];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1107 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1108 $left = (split (",", $exonEnds))[$exonCount-2];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1109 $right = (split (",", $exonStarts))[$exonCount-1];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1110 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1111 ($left,$right);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1112 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1113
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1114 sub getFirstExon {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1115 my ($exonCount,$exonStarts,$exonEnds,$strand) = @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1116 my ($left,$right);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1117 if ($exonCount == 1) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1118 return (0,0);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1119 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1120 if ($strand == 1) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1121 $left = (split ",", $exonStarts)[0];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1122 $right = (split (",", $exonEnds))[0]-$jonctionSize;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1123 } else {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1124 $left = (split (",", $exonStarts))[$exonCount-1]+$jonctionSize;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1125 $right = (split (",", $exonEnds))[$exonCount-1];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1126 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1127 ($left,$right);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1128 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1129
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1130
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1131 sub getIntronExon {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1132 my ($pos,$exonCount,$exonStarts,$exonEnds,$strand) = @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1133 my (@left,@right);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1134 @left = (split ",", $exonStarts);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1135 @right = (split (",", $exonEnds));
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1136
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1137 for (my $i = 0; $i<$exonCount;$i++) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1138 #print "$left[$i] <= $pos ? $pos <= $right[$i]\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1139 if (($left[$i]+$jonctionSize < $pos) && ($pos < $right[$i]-$jonctionSize)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1140 #print "URA!\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1141 return "exon";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1142 } elsif (($i+1<$exonCount)&&($right[$i]+$jonctionSize < $pos) && ($pos < $left[$i+1]-$jonctionSize)) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1143 return "intron";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1144 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1145 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1146 return "jonction";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1147 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1148
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1149
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1150 sub getTypeIntra {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1151
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1152 my ($geneEntry, $pos) = @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1153 my $type;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1154
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1155 if (($pos >= $geneEntry->{'firstIntronStart'})&&($pos <=$geneEntry->{'firstIntronEnd'})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1156 return "f_intron";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1157 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1158 if (($pos >= $geneEntry->{'firstExonStart'})&&($pos <=$geneEntry->{'firstExonEnd'})) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1159 return "f_exon";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1160 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1161 $type = getIntronExon ($pos, $geneEntry->{'exonCount'},$geneEntry->{'exonStarts'},$geneEntry->{'exonEnds'},$geneEntry->{'strand'});
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1162 return $type;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1163 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1164
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1165 sub getRNAlength {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1166 my ($exonStarts,$exonEnds) = @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1167 my (@left,@right);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1168 @left = (split ",", $exonStarts);
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1169 @right = (split (",", $exonEnds));
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1170 my $length = 0;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1171 for (my $i = 0; $i<scalar(@right);$i++) {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1172 $length+=$right[$i]-$left[$i];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1173 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1174 #print STDERR "length = $length\n";
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1175 return $length;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1176 }
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1177
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1178 sub min {
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1179 my @a = sort {$a <=> $b} @_;
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1180 $a[0];
674d50b9ff42 Uploaded
jbrayet
parents:
diff changeset
1181 }