annotate ACF/Analytic_correlation_filtration.pl @ 0:cfe4b819911b draft

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