annotate ACF/lib/IonFiltration.pm @ 22:fff7de4f9fed draft

Uploaded
author melpetera
date Thu, 09 May 2019 08:17:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
1 #!usr/bin/perl
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
2 package IonFiltration;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
3
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
4 ### Perl modules
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
5 use strict;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
6 use warnings;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
7
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
8
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
9
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
10
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
11
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
12
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
13 ########################################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
14 ### Création of a hash containing all adduits and fragments possible ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
15 ########################################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
16
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
17
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
18 sub MassCollecting{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
19
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
20 my $mass_file = $_[0];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
21 my %hmass;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
22
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
23 open (F1, $mass_file);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
24
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
25 while(my $line = <F1>){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
26 chomp $line;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
27 my @tline = split(/[\t;]/, $line);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
28 if(defined($hmass{$tline[2]})){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
29 print "Il existe déjà une même différence de masse : $tline[2] !\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
30 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
31 $hmass{$tline[1]}{$tline[2]}=$tline[0];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
32 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
33
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
34 close F1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
35 # my $count=0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
36 # foreach my $k (keys %hmass){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
37 # $count++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
38 # }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
39
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
40 return %hmass;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
41
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
42
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
43 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
44
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
45
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
46
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
47
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
48
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
49
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
50
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
51 ########################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
52 ### Creation of a sif table + correlation filtration ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
53 ########################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
54
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
55
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
56 sub sifTableCreation{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
57
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
58 my $file = $_[0];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
59 my $output_sif = $_[1];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
60 my $opt = $_[2];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
61 my $rt_threshold = $_[3];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
62 my $mass_threshold = $_[4];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
63 my $correl_threshold = $_[5];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
64 my $dataMatrix = $_[6];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
65 my $output_tabular = $_[7];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
66 my $combined_DMVM = $_[8];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
67 my $repres_opt = $_[9];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
68 my $intensity_threshold = $_[10];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
69 my $intensity_pourc = $_[11];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
70 my $refhmass = $_[12];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
71
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
72
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
73
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
74
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
75 my %hheader_file;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
76 my %hduplicate;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
77
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
78 my %hcorrelgroup;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
79 my $groupct=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
80
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
81
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
82 my $linenb3=0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
83 my %hheader_line;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
84 my %hrtmz;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
85
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
86 open (F5, $combined_DMVM);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
87 while(my $line = <F5>){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
88 chomp $line;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
89 my @tline = split(/\t/, $line);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
90
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
91 if($linenb3 == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
92 for(my $i=0; $i<scalar(@tline);$i++){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
93 my $a = $tline[$i];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
94 $hheader_line{$a}=$i;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
95 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
96 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
97 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
98 if(defined($hheader_line{mzmed})){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
99 my $b = $tline[$hheader_line{mzmed}];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
100 $hrtmz{$tline[0]}{mz}=$b;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
101 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
102 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
103 my $b = $tline[$hheader_line{mz}];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
104 $hrtmz{$tline[0]}{mz}=$b;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
105 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
106 if(defined($hheader_line{rtmed})){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
107 my $d = $tline[$hheader_line{rtmed}];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
108 $hrtmz{$tline[0]}{rt}=$d;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
109 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
110 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
111 my $d = $tline[$hheader_line{rt}];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
112 $hrtmz{$tline[0]}{rt}=$d;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
113 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
114 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
115
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
116 $linenb3 ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
117 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
118 close F5;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
119
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
120
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
121 my $linenb=0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
122
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
123 open (F1, $file) or die "Impossible to open $file\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
124 open(F2, ">$output_sif") or die "Impossible to open $output_sif\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
125
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
126 while(my $line = <F1>){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
127 chomp $line;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
128 my @tline = split(/\t/, $line);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
129
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
130
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
131 ###############################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
132 ### Création of a sif table ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
133 ###############################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
134
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
135 if($linenb == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
136 for(my $i=0; $i<scalar(@tline);$i++){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
137 my $a = $tline[$i];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
138 $hheader_file{$i}=$a;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
139 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
140 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
141 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
142 for(my $i=1; $i<scalar(@tline);$i++){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
143 my $a=$tline[0];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
144 my $b=$hheader_file{$i};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
145 my $coef=$tline[$i];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
146
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
147
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
148 if($a eq $b){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
149 # print "This is a correlation between A ($a) and A ($b) !\n"
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
150 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
151 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
152
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
153
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
154 #########################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
155 ### Remove duplicates ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
156 #########################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
157
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
158 my $y = $a."/".$b;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
159 my $z = $b."/".$a;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
160
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
161 if((!(defined($hduplicate{$y}))) && (!(defined($hduplicate{$z})))){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
162
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
163 $hduplicate{$y}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
164
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
165 if($coef > $correl_threshold){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
166
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
167 print F2 "$a\t$coef\t$b\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
168
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
169 my $count=0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
170
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
171 ######################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
172 ### Analytic correlation filtrering follow options ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
173 ######################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
174
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
175
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
176
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
177 my $amass=$hrtmz{$a}{mz};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
178 my $atemp=$hrtmz{$a}{rt};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
179 my $bmass= $hrtmz{$b}{mz};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
180 my $btemp=$hrtmz{$b}{rt};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
181 my $diff = $amass-$bmass;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
182 $diff = abs($diff);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
183
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
184 ### Option 1: Don't take into acount mass information ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
185
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
186 if($opt == 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
187 my $btplus = $btemp + $rt_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
188 my $btmoins = $btemp - $rt_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
189 if(($btmoins <= $atemp) && ($atemp <= $btplus)){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
190 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
191
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
192 if((defined($hcorrelgroup{$k}{$a})) || (defined($hcorrelgroup{$k}{$b}))){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
193 $hcorrelgroup{$k}{$a}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
194 $hcorrelgroup{$k}{$b}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
195 $count++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
196 last;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
197 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
198 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
199 if($count == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
200 my $groupnb="group".$groupct;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
201 $hcorrelgroup{$groupnb}{$a}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
202 $hcorrelgroup{$groupnb}{$b}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
203 $groupct ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
204 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
205
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
206 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
207 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
208
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
209
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
210 ### Option 2: Check that all mass differences are include in a specific list taking into account RT information ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
211
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
212 elsif($opt == 2){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
213
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
214 my $print = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
215 foreach my $s (keys %{$refhmass}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
216 foreach my $r (keys %{$refhmass->{$s}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
217 my $rm = $r - $mass_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
218 my $rp = $r + $mass_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
219 if(($diff <= $rp) && ($diff >= $rm)){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
220 if($print == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
221 my $btplus = $btemp + $rt_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
222 my $btmoins = $btemp - $rt_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
223
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
224 if(($btmoins <= $atemp) && ($atemp <= $btplus)){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
225 # foreach my $s (keys %{%$refhmass{$r}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
226 # print F2 "$line\t$hmass{$r}{$s} : $s ($r)\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
227 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
228 if((defined($hcorrelgroup{$k}{$a})) || (defined($hcorrelgroup{$k}{$b}))){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
229 $hcorrelgroup{$k}{$a}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
230 $hcorrelgroup{$k}{$b}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
231 # $hcorrelgroup{$k}{frag}.="#".$s;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
232 $count++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
233 last;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
234 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
235 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
236 if($count == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
237 my $groupnb="group".$groupct;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
238 $hcorrelgroup{$groupnb}{$a}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
239 $hcorrelgroup{$groupnb}{$b}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
240 # $hcorrelgroup{$groupnb}{frag}.="#".$s;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
241 $groupct ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
242
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
243 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
244 $print = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
245 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
246
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
247 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
248 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
249 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
250 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
251 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
252
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
253
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
254 ### Option 3: Check that all mass differences are include in a specific list, ignoring RT information ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
255
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
256 elsif($opt == 3){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
257
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
258 my $print = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
259 foreach my $s (keys %{$refhmass}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
260 foreach my $r (keys %{$refhmass->{$s}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
261 my $rm = $r - $mass_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
262 my $rp = $r + $mass_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
263 if(($diff <= $rp) && ($diff >= $rm)){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
264 if($print == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
265
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
266 # foreach my $s (keys %{%$refhmass{$r}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
267 # print F2 "$line\t$hmass{$r}{$s} : $s ($r)\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
268 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
269 if((defined($hcorrelgroup{$k}{$a})) || (defined($hcorrelgroup{$k}{$b}))){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
270 $hcorrelgroup{$k}{$a}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
271 $hcorrelgroup{$k}{$b}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
272 # $hcorrelgroup{$k}{frag}.="#".$s;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
273 $count++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
274 last;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
275 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
276 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
277 if($count == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
278 my $groupnb="group".$groupct;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
279 $hcorrelgroup{$groupnb}{$a}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
280 $hcorrelgroup{$groupnb}{$b}=1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
281 # $hcorrelgroup{$groupnb}{frag}.="#".$s;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
282 $groupct ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
283 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
284 $print = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
285 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
286 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
287 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
288 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
289 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
290 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
291
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
292
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
293 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
294 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
295 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
296 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
297 $linenb ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
298 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
299 close F1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
300 close F2;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
301
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
302
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
303
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
304
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
305 #############################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
306 ### Join groups that have been subdivided ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
307 #############################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
308
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
309 my @tdelete;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
310
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
311 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
312 foreach my $i (keys %{$hcorrelgroup{$k}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
313 foreach my $v (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
314 my $count = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
315 if ($v ne $k){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
316 foreach my $w (keys %{$hcorrelgroup{$v}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
317 # if($w ne "frag"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
318 if($w eq $i){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
319 $count = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
320 push(@tdelete, $v);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
321 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
322 # }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
323 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
324 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
325 if($count == 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
326 foreach my $w (keys %{$hcorrelgroup{$v}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
327 $hcorrelgroup{$k}{$w}=$hcorrelgroup{$v}{$w};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
328 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
329 delete($hcorrelgroup{$v});
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
330 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
331 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
332 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
333 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
334
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
335 foreach my $t (@tdelete){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
336 delete($hcorrelgroup{$t});
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
337 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
338
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
339
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
340 ### Do it twice to see if it fix the problem of unmerge groups
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
341
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
342 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
343 foreach my $i (keys %{$hcorrelgroup{$k}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
344 foreach my $v (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
345 my $count = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
346 if ($v ne $k){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
347 foreach my $w (keys %{$hcorrelgroup{$v}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
348 # if($w ne "frag"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
349 if($w eq $i){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
350 $count = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
351 push(@tdelete, $v);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
352 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
353 # }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
354 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
355 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
356 if($count == 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
357 foreach my $w (keys %{$hcorrelgroup{$v}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
358 $hcorrelgroup{$k}{$w}=$hcorrelgroup{$v}{$w};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
359 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
360 delete($hcorrelgroup{$v});
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
361 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
362 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
363 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
364 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
365
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
366 foreach my $t (@tdelete){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
367 delete($hcorrelgroup{$t});
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
368 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
369
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
370
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
371
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
372 ##########################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
373 ### Addition of annotation information ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
374 ##########################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
375
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
376 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
377 foreach my $i (keys %{$hcorrelgroup{$k}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
378 foreach my $j (keys %{$hcorrelgroup{$k}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
379 my $count = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
380 if ($i ne $j){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
381
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
382 my $a = $hrtmz{$i}{mz};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
383 my $b = $hrtmz{$j}{mz};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
384
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
385 my $diff = $a - $b;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
386 my $sign;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
387 if($diff>0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
388 $sign="+";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
389 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
390 if($diff<0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
391 $sign="-";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
392 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
393 $diff = abs($diff);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
394
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
395 foreach my $z (keys %{$refhmass}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
396
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
397 foreach my $y (keys %{$refhmass->{$z}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
398 my $ym = $y - $mass_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
399 my $yp = $y + $mass_threshold;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
400
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
401
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
402 if(($diff <= $yp) && ($diff >= $ym)){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
403 my $diff_list = $diff - $y;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
404 $diff_list = abs($diff_list);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
405 $diff_list = sprintf ("%0.6f", $diff_list);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
406
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
407 if($hcorrelgroup{$k}{$i} eq 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
408 my $val = "#".$j."|".$sign."(".$z.")(".$diff_list.")|";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
409 $hcorrelgroup{$k}{$i}=$val;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
410 $count ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
411 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
412 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
413 if($count == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
414 my $val = "#".$j."|".$sign."(".$z.")(".$diff_list.")|";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
415 $hcorrelgroup{$k}{$i}.=$val;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
416 $count ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
417 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
418 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
419 my $val = $sign."(".$z.")(".$diff_list.")|";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
420 $hcorrelgroup{$k}{$i}.=$val;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
421 $count ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
422 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
423 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
424 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
425 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
426 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
427 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
428 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
429 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
430 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
431
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
432
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
433
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
434 ####################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
435 ### Choose the representative ion for each group ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
436 ####################################################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
437
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
438 my %hgrouprepres;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
439
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
440 open(F3, $dataMatrix);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
441
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
442 while (my $line = <F3>){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
443 chomp $line;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
444
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
445 my @tline = split (/\t/, $line);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
446
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
447
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
448
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
449 foreach my $k (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
450 foreach my $i (keys %{$hcorrelgroup{$k}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
451
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
452 if($tline[0] eq $i){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
453 $hgrouprepres{$k}{$i}{mass}=$hrtmz{$tline[0]}{mz};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
454
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
455 my $intensity;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
456 my $nbsubjects=0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
457 for(my $y=1;$y<scalar(@tline);$y++){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
458 $intensity += $tline[$y];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
459 $nbsubjects ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
460 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
461 my $meanintensity = $intensity/$nbsubjects;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
462 $hgrouprepres{$k}{$i}{intensity}=$meanintensity;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
463 $hgrouprepres{$k}{$i}{squaredmassint}=($hgrouprepres{$k}{$i}{mass}**2)/($hgrouprepres{$k}{$i}{intensity});
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
464 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
465 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
466 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
467 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
468 close F3;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
469
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
470 foreach my $z (keys %hgrouprepres){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
471 my $max_intensity = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
472 my $max_int_ion = "";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
473 my $max_mass = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
474 my $max_mass_ion = "";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
475 my $max_squared = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
476 my $max_squared_ion = "";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
477 foreach my $w (keys %{$hgrouprepres{$z}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
478 if($hgrouprepres{$z}{$w}{intensity} > $max_intensity){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
479 $max_intensity = $hgrouprepres{$z}{$w}{intensity};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
480 $max_int_ion = $w;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
481
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
482 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
483 if($hgrouprepres{$z}{$w}{mass} > $max_mass){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
484 $max_mass = $hgrouprepres{$z}{$w}{mass};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
485 $max_mass_ion = $w;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
486 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
487 if($hgrouprepres{$z}{$w}{squaredmassint} > $max_squared){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
488 $max_squared = $hgrouprepres{$z}{$w}{squaredmassint};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
489 $max_squared_ion = $w;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
490 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
491 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
492
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
493 my $max_int_max_mass_ion="";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
494
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
495 if($repres_opt eq "max_intensity_max_mass"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
496 my %hfirst;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
497 my $first=0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
498 foreach my $w (reverse sort {$hgrouprepres{$z}{$a}{intensity} <=> $hgrouprepres{$z}{$b}{intensity} } keys %{$hgrouprepres{$z}}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
499 $first ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
500 if ($first <= 3){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
501 $hfirst{$w} = $hgrouprepres{$z}{$w}{intensity};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
502 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
503 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
504
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
505 my $first_2 = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
506 my $intens_max = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
507 my $mass_max = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
508
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
509 foreach my $y (reverse sort {$hfirst{$a} <=> $hfirst{$b}} keys %hfirst){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
510
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
511
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
512
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
513 $first_2 ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
514 if($first_2 == 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
515 $intens_max = $hfirst{$y};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
516 if($intensity_threshold > $intens_max){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
517 $intensity_threshold = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
518 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
519 $max_int_max_mass_ion = $y;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
520 $mass_max = $hgrouprepres{$z}{$y}{mass};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
521 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
522 if($hgrouprepres{$z}{$y}{mass} > $mass_max){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
523 if($hfirst{$y}>$intensity_threshold){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
524 my $a = $intens_max * $intensity_pourc;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
525 if($hfirst{$y} > $a){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
526 $max_int_max_mass_ion = $y;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
527 $mass_max = $hgrouprepres{$z}{$y}{mass};
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
528 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
529 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
530 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
531
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
532 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
533 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
534
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
535
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
536 $hgrouprepres{$z}{max_int}=$max_int_ion;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
537 $hgrouprepres{$z}{max_mass}=$max_mass_ion;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
538 $hgrouprepres{$z}{max_squared}=$max_squared_ion;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
539 $hgrouprepres{$z}{max_int_max_mass}=$max_int_max_mass_ion;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
540
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
541 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
542
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
543
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
544 ######################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
545 ### Print result ! ###
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
546 ######################
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
547
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
548 open(F4, ">$output_tabular");
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
549 open(F5, $combined_DMVM);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
550
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
551 my $line_nb = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
552 my %hheader;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
553 while (my $line = <F5>){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
554 chomp $line;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
555
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
556
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
557 my @tline = split (/\t/, $line);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
558
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
559 if($line_nb == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
560 print F4 "$line\tACF_groups";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
561 if($opt == 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
562 if($repres_opt eq "intensity"){print F4 "\tintensity_repres\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
563 if($repres_opt eq "mass"){print F4 "\tmass_repres\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
564 if($repres_opt eq "mixt"){print F4 "\tmass2intens_repres\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
565 if($repres_opt eq "max_intensity_max_mass"){print F4 "\tmax_intensity_max_mass_repres\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
566
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
567 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
568 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
569 if($repres_opt eq "intensity"){print F4 "\tintensity_repres\tisotopes_adducts_fragments_[#id|annotation(delta_annotation)]\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
570 if($repres_opt eq "mass"){print F4 "\tmass_repres\tisotopes_adducts_fragments_[#id|annotation(delta_annotation)]\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
571 if($repres_opt eq "mixt"){print F4 "\tmass2intens_repres\tisotopes_adducts_fragments_[#id|annotation(delta_annotation)]\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
572 if($repres_opt eq "max_intensity_max_mass"){print F4 "\tmax_intensity_max_mass_repres\tisotopes_adducts_fragments_[#id|annotation(delta_annotation)]\tACF_filter\n"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
573 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
574
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
575
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
576 ### Creation of a header hash
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
577 for(my $i=0; $i<scalar(@tline);$i++){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
578 my $a = $tline[$i];
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
579 $hheader{$a}=$i;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
580 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
581 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
582
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
583 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
584 my $find = 0;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
585 foreach my $v (keys %hcorrelgroup){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
586 if(defined($hgrouprepres{$v}{$tline[0]})){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
587 print F4 "$line\t$v";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
588
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
589
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
590 if($repres_opt eq "intensity"){print F4 "\t$hgrouprepres{$v}{max_int}\t"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
591 if($repres_opt eq "mass"){print F4 "\t$hgrouprepres{$v}{max_mass}\t"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
592 if($repres_opt eq "mixt"){print F4 "\t$hgrouprepres{$v}{max_squared}\t"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
593 if($repres_opt eq "max_intensity_max_mass"){print F4 "\t$hgrouprepres{$v}{max_int_max_mass}\t"}
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
594
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
595
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
596 if($opt != 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
597 if(defined($hcorrelgroup{$v}{$tline[0]})){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
598 print F4 "$hcorrelgroup{$v}{$tline[0]}\t";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
599 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
600 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
601 print F4 "\t";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
602 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
603 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
604
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
605 if($repres_opt eq "intensity"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
606 if($tline[0] eq $hgrouprepres{$v}{max_int}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
607 print F4 "conserved\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
608 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
609 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
610 print F4 "deleted\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
611 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
612 $find = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
613 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
614 if($repres_opt eq "mass"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
615 if($tline[0] eq $hgrouprepres{$v}{max_mass}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
616 print F4 "conserved\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
617 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
618 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
619 print F4 "deleted\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
620 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
621 $find = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
622 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
623 if($repres_opt eq "mixt"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
624 if($tline[0] eq $hgrouprepres{$v}{max_squared}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
625 print F4 "conserved\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
626 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
627 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
628 print F4 "deleted\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
629 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
630 $find = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
631 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
632 if($repres_opt eq "max_intensity_max_mass"){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
633 if($tline[0] eq $hgrouprepres{$v}{max_int_max_mass}){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
634 print F4 "conserved\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
635 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
636 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
637 print F4 "deleted\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
638 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
639 $find = 1;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
640 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
641 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
642 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
643 if($find == 0){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
644 $groupct ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
645 my $group = "group".$groupct;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
646 if($opt != 1){
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
647 print F4 "$line\t$group\t-\t-\t-\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
648 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
649 else{
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
650 print F4 "$line\t$group\t-\t-\n";
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
651 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
652 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
653
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
654
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
655 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
656
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
657 $line_nb ++;
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
658 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
659
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
660
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
661 return ($output_sif, $output_tabular);
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
662 }
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
663
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
664
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
665
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
666
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
667
fff7de4f9fed Uploaded
melpetera
parents:
diff changeset
668 1;