annotate ACF/lib/IonFiltration.pm @ 3:573520b2e3b0 draft default tip

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