Mercurial > repos > melpetera > acorf
comparison ACF/lib/IonFiltration.pm @ 0:d03fcbeb0a77 draft
Uploaded
author | melpetera |
---|---|
date | Fri, 18 Oct 2019 04:59:51 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d03fcbeb0a77 |
---|---|
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; |