annotate rapsodyn/PrepareFastqLight.pl @ 29:7b8646f46010 draft

Uploaded
author mcharles
date Wed, 08 Oct 2014 09:06:53 -0400
parents e8e6b962c1f2
children 2b15c0cab0ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
1 #!/usr/bin/perl
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
2 #V1.0.1 added log, option parameters
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
3 use strict;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
4 use warnings;
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
5 use Getopt::Long;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
6
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
7 my $read1_file;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
8 my $read2_file;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
9 my $log_file;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
10 my $output1_file;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
11 my $output2_file;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
12
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
13 my $TYPE="sanger";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
14 my $MIN_LENGTH=30;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
15 my $MIN_QUALITY=30;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
16
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
17 my $VERBOSE = "OFF";
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
18
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
19 GetOptions (
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
20 "read1_file=s" => \$read1_file,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
21 "read2_file=s" => \$read2_file,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
22 "log_file=s" => \$log_file,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
23 "output1_file=s" => \$output1_file,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
24 "output2_file=s" => \$output2_file,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
25 "type=s" => \$TYPE,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
26 "min_length=i" => \$MIN_LENGTH,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
27 "min_quality=i" => \$MIN_QUALITY,
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
28 "verbose=s" => \$VERBOSE
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
29 ) or die("Error in command line arguments\n");
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
30
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
31
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
32 my $nb_read1=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
33 my $nb_base_read1=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
34 my $nb_read2=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
35 my $nb_base_read2=0;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
36
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
37 my $nb_read1_t=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
38 my $nb_base_read1_t=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
39 my $nb_read2_t=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
40 my $nb_base_read2_t=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
41
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
42 my $nb_base_current_t=0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
43
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
44
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
45 open(READ1, $read1_file) or die ("Can't open $read1_file\n");
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
46 open(READ2, $read2_file) or die ("Can't open $read2_file\n");
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
47 open(OUT1, ">$output1_file") or die ("Can't open $output1_file\n");
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
48 open(OUT2, ">$output2_file") or die ("Can't open $output2_file\n");
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
49
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
50 my $error1=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
51 my $error2=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
52 my $error3=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
53 my $error4=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
54 my $error5=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
55 my $error6=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
56 my $error7=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
57 my $error8=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
58 my $error9=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
59 my $error10=0;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
60
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
61 while (my $ligne1_r1 =<READ1>){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
62 my $ligne2_r1 =<READ1>;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
63 my $ligne3_r1 =<READ1>;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
64 my $ligne4_r1 =<READ1>;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
65 my $ligne1_r2 =<READ2>;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
66 my $ligne2_r2 =<READ2>;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
67 my $ligne3_r2 =<READ2>;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
68 my $ligne4_r2 =<READ2>;
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
69
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
70 $nb_read1++;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
71 $nb_read2++;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
72
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
73 #@ 1 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
74 if ((!$ligne1_r1)||(!$ligne2_r1)||(!$ligne3_r1)||(!$ligne4_r1)||(!$ligne1_r2)||(!$ligne2_r2)||(!$ligne3_r2)||(!$ligne4_r2)){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
75 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
76 print "Error in file format";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
77 if ($ligne1_r1){print $ligne1_r1;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
78 if ($ligne2_r1){print $ligne2_r1;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
79 if ($ligne3_r1){print $ligne3_r1;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
80 if ($ligne4_r1){print $ligne4_r1;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
81 if ($ligne1_r2){print $ligne1_r2;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
82 if ($ligne2_r2){print $ligne2_r2;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
83 if ($ligne3_r2){print $ligne3_r2;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
84 if ($ligne4_r2){print $ligne4_r2;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
85 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
86 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
87 $error1++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
88 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
89 elsif(($ligne1_r1 !~/^\@/)||($ligne1_r2 !~/^\@/)||($ligne3_r1 !~/^\+/)||($ligne3_r2 !~/^\+/)){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
90 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
91 print "Error in header : format\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
92 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
93 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
94 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
95 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
96 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
97 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
98 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
99 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
100 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
101 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
102 $error2++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
103 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
104 #@ 1 - 2 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
105 else {
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
106
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
107 my $length_seq1 = length($ligne2_r1);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
108 my $length_qual1 =length($ligne4_r1);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
109 my $seq1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
110 my $qual1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
111
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
112 my $length_seq2 = length($ligne2_r2);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
113 my $length_qual2 =length($ligne4_r2);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
114 my $seq2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
115 my $qual2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
116 my $header1="";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
117 my $header2="";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
118 my $repheader1="";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
119 my $repheader2="";
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
120
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
121
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
122 if ($ligne1_r1 =~/^\@(.*?)\#/){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
123 $header1 = $1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
124 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
125
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
126 if ($ligne3_r1 =~/^\+(.*?)\#/){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
127 $repheader1 = $1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
128 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
129
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
130 if ($ligne1_r2 =~/^\@(.*?)\#/){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
131 $header2 = $1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
132 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
133
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
134 if ($ligne3_r2 =~/^\+(.*?)\#/){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
135 $repheader2 = $1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
136 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
137 #@ 2 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
138
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
139 ### Verification de la coherence sequence /qualité @ 1 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
140 if (($TYPE eq "illumina")&&((!$header1)||(!$header2)||(!$repheader1)||(!$repheader2))){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
141 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
142 print "Error in header : empty\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
143 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
144 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
145 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
146 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
147 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
148 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
149 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
150 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
151 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
152 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
153 $error3++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
154 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
155 elsif (($TYPE eq "sanger")&&((!$header1)||(!$header2))){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
156 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
157 print "Error in header refgsd : empty\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
158 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
159 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
160 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
161 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
162 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
163 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
164 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
165 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
166 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
167 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
168 $error3++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
169 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
170 elsif (($TYPE eq "illumina")&&(($header1 ne $repheader1)||($header2 ne $repheader2)||($header1 ne $header2))){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
171 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
172 print "Error in header : different\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
173 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
174 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
175 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
176 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
177 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
178 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
179 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
180 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
181 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
182 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
183 $error4++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
184 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
185 elsif (($TYPE eq "sanger")&&($header1 ne $header2)){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
186 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
187 print "Error in header : different\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
188 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
189 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
190 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
191 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
192 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
193 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
194 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
195 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
196 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
197 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
198 $error4++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
199 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
200 elsif (($length_seq1 != $length_qual1)||($length_seq2 != $length_qual2)){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
201 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
202 print "Error in seq/qual length\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
203 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
204 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
205 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
206 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
207 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
208 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
209 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
210 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
211 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
212 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
213 $error5++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
214 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
215 #@ 1 - 2 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
216 else {
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
217 ### Parsing sequence & qualité
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
218 if ($ligne2_r1 =~ /^([ATGCNX]+)\s*$/i){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
219 $seq1 = $1;
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
220 $nb_base_read1 += length($seq1);
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
221 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
222 if ($ligne2_r2 =~ /^([ATGCNX]+)\s*$/i){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
223 $seq2 = $1;
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
224 $nb_base_read2 += length($seq2);
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
225 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
226 if ($ligne4_r1 =~ /^(.*)\s*$/i){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
227 $qual1 = $1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
228 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
229 if ($ligne4_r2 =~ /^(.*)\s*$/i){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
230 $qual2 = $1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
231 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
232 #@ 2 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
233 ### Verification du parsing et de la coherence sequence /qualité (n°2)
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
234 if ((!$seq1)||(!$seq2)||(!$qual1)||(!$qual2)){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
235 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
236 print "Error parsing seq / quality \n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
237 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
238 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
239 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
240 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
241 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
242 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
243 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
244 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
245 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
246 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
247 $error6++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
248 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
249 elsif ((length($seq1) != length($qual1))||(length($seq2) != length($qual2))){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
250 if ($VERBOSE eq "ON"){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
251 print "Error in seq/qual length after parsing\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
252 print $ligne1_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
253 print $ligne2_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
254 print $ligne3_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
255 print $ligne4_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
256 print $ligne1_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
257 print $ligne2_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
258 print $ligne3_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
259 print $ligne4_r2;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
260 print "\n";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
261 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
262 $error7++;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
263 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
264 #@ <1 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
265 else {
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
266 my $fastq_lines_r1="";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
267 my $fastq_lines_r2="";
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
268 my $nb_base_current_read1_t = 0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
269 my $nb_base_current_read2_t = 0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
270
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
271 $fastq_lines_r1 = &grooming_and_trimming($ligne1_r1,$seq1,$qual1);
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
272 $nb_base_current_read1_t = $nb_base_current_t;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
273 if ($fastq_lines_r1){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
274 $fastq_lines_r2 = &grooming_and_trimming($ligne1_r2,$seq2,$qual2);
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
275 $nb_base_current_read2_t = $nb_base_current_t;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
276 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
277 if ($fastq_lines_r2){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
278 print OUT1 $fastq_lines_r1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
279 print OUT2 $fastq_lines_r2;
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
280
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
281 $nb_read1_t++;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
282 $nb_read2_t++;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
283 $nb_base_read1_t += $nb_base_current_read1_t;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
284 $nb_base_read2_t += $nb_base_current_read2_t;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
285
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
286
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
287 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
288 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
289 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
290
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
291
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
292 #@ 7 sec
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
293 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
294 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
295
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
296 close (READ1);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
297 close (READ2);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
298 close (OUT1);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
299 close (OUT2);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
300
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
301 open (LF,">$log_file") or die("Can't open $log_file\n");
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
302 print LF "\n####\t Fastq preparation \n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
303 print LF "## Before preparation\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
304 print LF "#Read1 :\t$nb_read1\t#Base :\t$nb_base_read1\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
305 print LF "#Read2 :\t$nb_read2\t#Base :\t$nb_base_read2\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
306 print LF "## After preparation\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
307 print LF "#Read1 :\t$nb_read1_t\t#Base :\t$nb_base_read1_t\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
308 print LF "#Read2 :\t$nb_read2_t\t#Base :\t$nb_base_read2_t\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
309 close (LF);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
310
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
311
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
312 sub grooming_and_trimming{
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
313 my $header = shift;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
314 my $seq = shift;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
315 my $quality = shift;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
316 my $quality_converted="";
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
317 my $quality_ori=$quality;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
318
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
319 my $lengthseq = length($seq);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
320 my $startTrim = 0;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
321 my $stopTrim = length($quality)-1;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
322 my $startnoN = $startTrim;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
323 my $stopnoN = $stopTrim;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
324
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
325
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
326 my $chercheN = $seq;
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
327 my @bad_position_N;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
328 my @bad_position_Q;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
329 my $current_index = index($chercheN,"N");
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
330 my $abs_index = $current_index;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
331 while ($current_index >=0){
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
332 push (@bad_position_N,$abs_index);
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
333
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
334 if ($current_index<length($seq)){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
335 $chercheN = substr($chercheN,$current_index+1);
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
336 $current_index = index($chercheN,"N");
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
337 $abs_index = $current_index + $bad_position_N[$#bad_position_N]+1;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
338 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
339 else {
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
340 last;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
341 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
342 }
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
343
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
344 my @q = split(//,$quality);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
345 for (my $i=0;$i<=$#q;$i++){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
346 my $chr = $q[$i];
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
347 my $num = ord($q[$i]);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
348 if ($TYPE eq "illumina"){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
349 $num = $num - 31; # 31 comme la difference entre la plage sanger (33-> 93 / 0->60) et illumina (64->104 / 0->40)
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
350 $quality_converted .= chr($num);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
351 }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
352
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
353 if ($num < $MIN_QUALITY + 33){ #33 comme le départ de la plage sanger
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
354 push(@bad_position_Q,$i);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
355 }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
356 }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
357 if ($quality_converted){$quality = $quality_converted;}
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
358
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
359 my @bad_position = (@bad_position_N, @bad_position_Q);
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
360
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
361 if ($#bad_position>=0){
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
362 @bad_position = sort {$a <=> $b} @bad_position;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
363 my %coord=%{&extract_longer_string_coordinates_from_bad_position(0,$stopTrim,\@bad_position)};
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
364 $startTrim = $coord{"start"};
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
365 $stopTrim = $coord{"stop"};
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
366 #print "$startTrim .. $stopTrim\n";
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
367
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
368 }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
369 my $lengthTrim = $stopTrim - $startTrim +1;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
370
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
371 #if ($stats_length{$lengthTrim}){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
372 # $stats_length{$lengthTrim} = 1;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
373 #}
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
374 #else {
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
375 # $stats_length{$lengthTrim}++;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
376 #}
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
377 my $fastq_lines="";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
378
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
379 # if ($header =~ /GA8\-EAS671_0005\:3\:1\:1043\:4432/){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
380 # print "HEAD:\t$header";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
381 # print "SEQ:\n$seq\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
382 # print "$quality_ori\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
383 # print "$quality\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
384 # for (my $i=0;$i<=$#bad_position;$i++){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
385 # print $bad_position[$i]."(".$q[$bad_position[$i]]." : ".ord($q[$bad_position[$i]]).")"."\t";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
386 # }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
387 # print "\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
388 # print "$startTrim .. $stopTrim / $lengthTrim \n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
389 # print $fastq_lines;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
390 # print "\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
391 # }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
392
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
393 #for (my $i=$startTrim;$i<=$stopTrim;$i++){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
394 # if ($stats_quality{ord($q{$i])}){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
395 # $stats_quality{ord($q{$i])}=1;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
396 # }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
397 # else {
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
398 # $stats_quality{ord($q{$i])}++;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
399 # }
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
400 #}
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
401
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
402 if ($lengthTrim >= $MIN_LENGTH){
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
403 $fastq_lines .= $header;
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
404 my $new_seq = substr($seq,$startTrim,$lengthTrim);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
405 $nb_base_current_t = length($new_seq);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
406 $fastq_lines .= $new_seq."\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
407 $fastq_lines .= "+\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
408 my $new_q = substr($quality,$startTrim,$lengthTrim);
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
409 $fastq_lines .= $new_q."\n";
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
410 return $fastq_lines;
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
411
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
412 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
413 else {
29
7b8646f46010 Uploaded
mcharles
parents: 24
diff changeset
414 #print "Insufficient length after trimming\n";
24
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
415 return "";
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
416 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
417 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
418
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
419 sub extract_longer_string_coordinates_from_bad_position{
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
420 my $start=shift;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
421 my $stop =shift;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
422 my $refbad = shift;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
423 my @bad_position = @$refbad;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
424 my %coord;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
425
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
426 my $current_start = $start;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
427 my $current_stop = $bad_position[0]-1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
428 if ($current_stop < $start){$current_stop = $start;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
429
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
430
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
431 #debut -> premier N
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
432 my $current_length = $current_stop - $current_start +1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
433 my $test_length;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
434
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
435 #entre les N
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
436 for (my $i=1;$i<=$#bad_position;$i++){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
437 $test_length = $bad_position[$i]+1-$bad_position[$i-1]-1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
438 if ( $test_length > $current_length){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
439 $current_start = $bad_position[$i-1]+1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
440 $current_stop = $bad_position[$i]-1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
441 $current_length = $current_stop - $current_start +1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
442 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
443 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
444
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
445 #dernier N -> fin
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
446 $test_length = $stop-$bad_position[$#bad_position]+1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
447 if ( $test_length > $current_length){
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
448 $current_start = $bad_position[$#bad_position]+1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
449 if ($current_start > $stop){$current_start=$stop;}
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
450 $current_stop = $stop;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
451 }
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
452 $coord{"start"}=$current_start;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
453 $coord{"stop"}= $current_stop;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
454 $coord{"lenght"}=$current_stop-$current_start+1;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
455
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
456 return \%coord;
e8e6b962c1f2 Uploaded
mcharles
parents:
diff changeset
457 }