annotate tools/rdock/bin/ht_protocol_finder.pl @ 2:0faa03a92843 draft default tip

Uploaded
author dzesikah
date Fri, 26 Aug 2016 10:19:49 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
1 #!/usr/bin/perl -w
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
2
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
3 # Script that simulates the result of a high throughput protocol.
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
4
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
5 if (@ARGV < 4)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
6 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
7 print "Script that simulates the result of a high throughput protocol.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
8 print "1st) exhaustive docking of a small representative part of the\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
9 print " whole library.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
10 print "2nd) Store the result of sdreport -t over that exhaustive dock.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
11 print " in file <sdreport_file> that will be the input of this\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
12 print " script.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
13 print "3rd) ht_protocol_finder.pl <sdreport_file> <output_file> <thr1max>";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
14 print " <thr1min> <ns1> <ns2>\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
15 print " <ns1> and <ns2> are the number of steps in stage 1 and in\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
16 print " stage 2. If not present, the default values are 5 and 15\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
17 print " <thrmax> and <thrmin> setup the range of thresholds that will\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
18 print " be simulated in stage 1. The threshold of stage 2 depends\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
19 print " on the value of the threshold of stage 1.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
20 print " An input of -22 -24 will try protocols:\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
21 print " 5 -22 15 -27\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
22 print " 5 -22 15 -28\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
23 print " 5 -22 15 -29\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
24 print " 5 -23 15 -28\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
25 print " 5 -23 15 -29\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
26 print " 5 -23 15 -30\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
27 print " 5 -24 15 -29\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
28 print " 5 -24 15 -30\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
29 print " 5 -24 15 -31\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
30 print " Output of the program is a 7 column values. First column\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
31 print " represents the time. This is a percentage of the time it\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
32 print " would take to do the docking in exhaustive mode, i.e. \n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
33 print " docking each ligand 100 times. Anything\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
34 print " above 12 is too long.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
35 print " Second column is the first percentage. Percentage of\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
36 print " ligands that pass the first stage.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
37 print " Third column is the second percentage. Percentage of\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
38 print " ligands that pass the second stage.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
39 print " The four last columns represent the protocol.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
40 print " All the protocols tried are written at the end.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
41 print " The ones for which time is less than 12%, perc1 is\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
42 print " less than 30% and perc2 is less than 5% but bigger than 1%\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
43 print " will have a series of *** after, to indicate they are good choices\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
44 print " WARNING! This is a simulation based in a small set.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
45 print " The numbers are an indication, not factual values.\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
46 exit (0);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
47 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
48 open (IFILE, $ARGV[0]) || die "cannot open $ARGV[0] for reading: $!";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
49 open (OFILE, ">$ARGV[1]") || die "cannot open $ARGV[1] for writing: $!";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
50 <IFILE>; # read first line
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
51 $line = <IFILE>;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
52 $line =~ /\S+\s+(\S+)\s+\S+\s+(\S+)/;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
53 $prevname = $1;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
54 $inter = $2;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
55 push @tmp, $inter;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
56 $i = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
57 while ($line = <IFILE>)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
58 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
59 $line =~ /\S+\s+(\S+)\s+\S+\s+(\S+)/;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
60 $name = $1;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
61 $inter = $2;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
62 if ($name ne $prevname)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
63 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
64 $prevname = $name;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
65 push @inters, [ @tmp ];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
66 $runsperligand[$i++] = @tmp;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
67 $#tmp = -1;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
68 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
69 push @tmp, $inter;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
70 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
71 push @inters, [ @tmp ];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
72 $runsperligand[$i++] = @tmp;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
73 $totLigands = @inters;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
74 $ta = $ARGV[2];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
75 $tb = $ARGV[3];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
76 if (@ARGV > 4)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
77 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
78 $n1 = $ARGV[4];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
79 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
80 else
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
81 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
82 $n1 = 5;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
83 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
84 if (@ARGV > 5)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
85 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
86 $n2 = $ARGV[5];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
87 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
88 else
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
89 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
90 $n2 = 15;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
91 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
92 printf OFILE "Command line args:\n\t";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
93 foreach $arg (@ARGV)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
94 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
95 printf OFILE "%s\t", $arg;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
96 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
97 printf OFILE "\n\n TIME PERC1 PERC2 N1 THR1 N2 THR2\n";
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
98 for ($t1 = $ta ; $t1 >= $tb ; $t1--)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
99 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
100 $tc = $t1 - 5;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
101 for ($t2 = $tc ; $t2 >= ($tc - 2) ; $t2--)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
102 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
103 ($cref, $dref) =
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
104 getTables($t1, $t2);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
105 @ligBelowThr1 = @$cref;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
106 @ligBelowThr2 = @$dref;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
107 ($time,$p1,$p2) = simulation($n1,$t1,$n2,$t2);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
108 if (($time < 12.0) && ($p1 < 30.0) && ($p2 < 5.0) && ($p2 > 1.0))
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
109 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
110 printf OFILE "%6.3f, %6.3f, %6.3f, %4i, %4i, %4i, %4i ***\n",
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
111 $time, $p1, $p2, $n1,$t1,$n2,$t2;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
112 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
113 else
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
114 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
115 printf OFILE "%6.3f, %6.3f, %6.3f, %4i, %4i, %4i, %4i\n",
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
116 $time, $p1, $p2, $n1,$t1,$n2,$t2;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
117 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
118 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
119 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
120
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
121
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
122 sub simulation
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
123 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
124 my(@params);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
125 my(@lt0, @lt1);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
126 my($thr1, $thr2,$ns1,$ns2,$tottime,$totnumHits,$total,$totnruns);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
127 @params = @_;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
128 $ns1 = $params[0];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
129 $thr1 = $params[1];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
130 $ns2 = $params[2];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
131 $thr2 = $params[3];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
132 $ntrials = 100;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
133 $tottime = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
134 $totnumHitss1 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
135 $totnumHitss2 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
136 $total = $totLigands;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
137 $totnruns = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
138 for ($i = 0 ; $i < $ntrials ; $i++)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
139 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
140 $numHitss1 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
141 $numHitss2 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
142 $totnruns = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
143 for ($j = 0 ; $j < $totLigands ; $j++)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
144 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
145 ($passStage1, $nruns1) = stage($ns1, $ligBelowThr1[$j]);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
146 if ($passStage1)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
147 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
148 $numHitss1++;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
149 ($passStage2, $nruns2) = stage($ns2, $ligBelowThr2[$j]);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
150 if ($passStage2)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
151 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
152 $numHitss2++;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
153 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
154 $totnruns += $nruns2;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
155 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
156 $totnruns += $nruns1;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
157 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
158 $time = $totnruns / $total;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
159 $tottime += $time;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
160 $totnumHitss1 += $numHitss1;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
161 $totnumHitss2 += $numHitss2;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
162 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
163 $tottime /= $ntrials;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
164 $totnumHitss1 /= $ntrials;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
165 $totnumHitss2 /= $ntrials;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
166 $p1 = $totnumHitss1 * 100.0 / $totLigands;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
167 $p2 = $totnumHitss2 * 100.0 / $totLigands;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
168 return ($tottime, $p1, $p2);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
169 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
170
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
171 sub getTables
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
172 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
173 my(@params);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
174 my($totLigands, @lt1, @lt2);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
175 my($row,$inter, $belowThr1, $belowThr2);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
176 my($thr0, $thr1);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
177 @params = @_;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
178 $thr1 = $params[0];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
179 $thr2 = $params[1];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
180 $totLigands = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
181 $belowThr1 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
182 $belowThr2 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
183 $totLigands = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
184 for $i (0 .. $#inters)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
185 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
186 $row = $inters[$i];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
187 for $j (0 .. $#{$row})
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
188 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
189 $inter = $row->[$j];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
190 if ($inter <= $thr1)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
191 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
192 $belowThr1++;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
193 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
194 if ($inter <= $thr2)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
195 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
196 $belowThr2++;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
197 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
198 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
199 $lt1[$totLigands] =
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
200 $belowThr1 / $runsperligand[$i];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
201 $lt2[$totLigands] =
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
202 $belowThr2 / $runsperligand[$i];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
203 $totLigands++;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
204 $belowThr1 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
205 $belowThr2 = 0;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
206 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
207 return (\@lt1, \@lt2);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
208 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
209
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
210
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
211
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
212 sub stage
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
213 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
214 my($nruns, $p, $i, $r);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
215 $nruns = $_[0];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
216 $p = $_[1];
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
217 if ($nruns == 0)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
218 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
219 return (1, 0);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
220 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
221 for ($i = 0 ; $i < $nruns ; $i++)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
222 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
223 $r = rand;
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
224 if ($r < $p)
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
225 {
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
226 return (1, $i);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
227 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
228 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
229 return (0, $nruns);
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
230 }
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
231
0faa03a92843 Uploaded
dzesikah
parents:
diff changeset
232