1
|
1 #!usr/bin/perl
|
|
2 package IonFiltration;
|
|
3
|
|
4 ### Perl modules
|
|
5 use strict;
|
|
6 use warnings;
|
|
7
|
|
8
|
|
9
|
|
10
|
|
11
|
|
12
|
|
13 ########################################################################
|
|
14 ### Création of a hash containing all adduits and fragments possible ###
|
|
15 ########################################################################
|
|
16
|
|
17
|
|
18 sub MassCollecting{
|
|
19
|
|
20 my $mass_file = $_[0];
|
|
21 my %hmass;
|
|
22
|
|
23 open (F1, $mass_file);
|
|
24
|
|
25 while(my $line = <F1>){
|
|
26 chomp $line;
|
|
27 my @tline = split(/[\t;]/, $line);
|
|
28 if(defined($hmass{$tline[2]})){
|
|
29 print "The mass difference already exists : $tline[2] !\n";
|
|
30 }
|
|
31 $hmass{$tline[1]}{$tline[2]}=$tline[0];
|
|
32 }
|
|
33
|
|
34 close F1;
|
|
35 return %hmass;
|
|
36
|
|
37 }
|
|
38
|
|
39
|
|
40
|
|
41
|
|
42
|
|
43
|
|
44
|
|
45 ########################################################
|
|
46 ### Creation of a sif table + correlation filtration ###
|
|
47 ########################################################
|
|
48
|
|
49
|
|
50 sub sifTableCreation{
|
|
51
|
|
52 my $file = $_[0];
|
|
53 my $output_sif = $_[1];
|
|
54 # my $opt = $_[2];
|
|
55 # my $rt_threshold = $_[3];
|
|
56 # my $mass_threshold = $_[4];
|
|
57 my $correl_threshold = $_[5];
|
|
58 # my $dataMatrix = $_[6];
|
|
59 # my $output_tabular = $_[7];
|
|
60 my $combined_DMVM = $_[8];
|
|
61 # my $repres_opt = $_[9];
|
|
62 # my $intensity_threshold = $_[10];
|
|
63 # my $intensity_pourc = $_[11];
|
|
64 # my $refhmass = $_[12];
|
|
65
|
|
66
|
|
67
|
|
68
|
|
69 my %hheader_file;
|
|
70 my %hduplicate;
|
|
71
|
|
72 my %hcorrelgroup;
|
|
73 my $groupct=1;
|
|
74
|
|
75
|
|
76 my $linenb3=0;
|
|
77 my %hheader_line;
|
|
78 my %hrtmz;
|
|
79
|
|
80 open (F5, $combined_DMVM);
|
|
81 while(my $line = <F5>){
|
|
82 chomp $line;
|
|
83 my @tline = split(/\t/, $line);
|
|
84
|
|
85 if($linenb3 == 0){
|
|
86 for(my $i=0; $i<scalar(@tline);$i++){
|
|
87 my $a = $tline[$i];
|
|
88 $hheader_line{$a}=$i;
|
|
89 }
|
|
90 }
|
|
91 else{
|
|
92 if(defined($hheader_line{mzmed})){
|
|
93 my $b = $tline[$hheader_line{mzmed}];
|
|
94 $hrtmz{$tline[0]}{mz}=$b;
|
|
95 }
|
|
96 else{
|
|
97 my $b = $tline[$hheader_line{mz}];
|
|
98 $hrtmz{$tline[0]}{mz}=$b;
|
|
99 }
|
|
100 if(defined($hheader_line{rtmed})){
|
|
101 my $d = $tline[$hheader_line{rtmed}];
|
|
102 $hrtmz{$tline[0]}{rt}=$d;
|
|
103 }
|
|
104 else{
|
|
105 my $d = $tline[$hheader_line{rt}];
|
|
106 $hrtmz{$tline[0]}{rt}=$d;
|
|
107 }
|
|
108 }
|
|
109
|
|
110 $linenb3 ++;
|
|
111 }
|
|
112 close F5;
|
|
113
|
|
114
|
|
115 my $linenb=0;
|
|
116
|
|
117 open (F1, $file) or die "Impossible to open $file\n";
|
|
118 open(F2, ">$output_sif") or die "Impossible to open $output_sif\n";
|
|
119
|
|
120
|
|
121 while(my $line = <F1>){
|
|
122 chomp $line;
|
|
123 my @tline = split(/\t/, $line);
|
|
124
|
|
125 ###############################
|
|
126 ### Création of a sif table ###
|
|
127 ###############################
|
|
128
|
|
129 if($linenb == 0){
|
|
130 for(my $i=0; $i<scalar(@tline);$i++){
|
|
131 my $a = $tline[$i];
|
|
132 $hheader_file{$i}=$a;
|
|
133 }
|
|
134 }
|
|
135 else{
|
|
136 for(my $i=1; $i<scalar(@tline);$i++){
|
|
137 my $a=$tline[0];
|
|
138 my $b=$hheader_file{$i};
|
|
139 my $coef=$tline[$i];
|
|
140
|
|
141 if($a eq $b){
|
|
142 # print "This is a correlation between A ($a) and A ($b) !\n"
|
|
143 }
|
|
144 else{
|
|
145
|
|
146 #########################
|
|
147 ### Remove duplicates ###
|
|
148 #########################
|
|
149
|
|
150 my $y = $a."/".$b;
|
|
151 my $z = $b."/".$a;
|
|
152
|
|
153 if((!(defined($hduplicate{$y}))) && (!(defined($hduplicate{$z})))){
|
|
154
|
|
155 $hduplicate{$y}=1;
|
|
156 # my $abcoef=abs($coef); # Only when you want to consider negative correlations
|
|
157
|
|
158 # if($abcoef > $correl_threshold){ # Only when you want to consider negative correlations
|
|
159 if($coef > $correl_threshold){
|
|
160
|
|
161 print F2 "$a\t$coef\t$b\n";
|
|
162
|
|
163 my $count=0;
|
|
164
|
|
165 }
|
|
166 }
|
|
167 }
|
|
168 }
|
|
169 }
|
|
170 $linenb ++;
|
|
171 }
|
|
172 close F1;
|
|
173 close F2;
|
|
174 return ($output_sif, %hrtmz);
|
|
175 }
|
|
176
|
|
177
|
|
178
|
|
179
|
|
180
|
|
181 1; |