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;