Add support for scanning for results in the IPAR directory.
[htsworkflow.git] / htsworkflow / pipelines / test / simulate_runfolder.py
1 """
2 Create simulated solexa/illumina runfolders for testing
3 """
4
5 import os
6
7
8 def make_ipar_dir(data_dir):
9     """
10     Construct an artificial ipar parameter file and directory
11     """
12     params = """<?xml version="1.0"?>
13 <ImageAnalysis>
14   <Run Name="IPAR_1.01">
15     <Software Name="IPAR" Version="2.01.192.0" />
16     <Cycles First="1" Last="37" Number="37" />
17     <RunParameters>
18       <ImagingReads Index="1">
19         <FirstCycle>1</FirstCycle>
20         <LastCycle>37</LastCycle>
21         <RunFolder>081021_HWI-EAS229_0063_30HKUAAXX</RunFolder>
22       </ImagingReads>
23       <Reads Index="1">
24         <FirstCycle>1</FirstCycle>
25         <LastCycle>37</LastCycle>
26         <RunFolder>081021_HWI-EAS229_0063_30HKUAAXX</RunFolder>
27       </Reads>
28       <Compression>gzip</Compression>
29       <CompressionSuffix>.p.gz</CompressionSuffix>
30       <Instrument>HWI-EAS229</Instrument>
31       <RunFolder>081021_HWI-EAS229_0063_30HKUAAXX</RunFolder>
32     </RunParameters>
33     <ImageParameters>
34       <AutoOffsetFlag>1</AutoOffsetFlag>
35       <Fwhm>2.7</Fwhm>
36       <RemappingDistance>1.5</RemappingDistance>
37       <Threshold>4</Threshold>
38     </ImageParameters>
39     <TileSelection>
40       <Lane Index="1">
41         <Sample>s</Sample>
42         <TileRange Max="100" Min="1" />
43       </Lane>
44       <Lane Index="2">
45         <Sample>s</Sample>
46         <TileRange Max="100" Min="1" />
47       </Lane>
48       <Lane Index="3">
49         <Sample>s</Sample>
50         <TileRange Max="100" Min="1" />
51       </Lane>
52       <Lane Index="4">
53         <Sample>s</Sample>
54         <TileRange Max="100" Min="1" />
55       </Lane>
56       <Lane Index="5">
57         <Sample>s</Sample>
58         <TileRange Max="100" Min="1" />
59       </Lane>
60       <Lane Index="6">
61         <Sample>s</Sample>
62         <TileRange Max="100" Min="1" />
63       </Lane>
64       <Lane Index="7">
65         <Sample>s</Sample>
66         <TileRange Max="100" Min="1" />
67       </Lane>
68       <Lane Index="8">
69         <Sample>s</Sample>
70         <TileRange Max="100" Min="1" />
71       </Lane>
72     </TileSelection>
73   </Run>
74 </ImageAnalysis>
75 """
76     f = open(os.path.join(data_dir, '.params'),'w')
77     f.write(params)
78     f.close()
79     ipar_dir = os.path.join(data_dir, 'IPAR_1.01')
80     if not os.path.exists(ipar_dir):
81       os.mkdir(ipar_dir)
82     return ipar_dir
83
84 def make_flowcell_id(runfolder_dir, flowcell_id=None):
85     if flowcell_id is None:
86         flowcell_id = '207BTAAXY'
87
88     config = """<?xml version="1.0"?>
89 <FlowcellId>
90   <Text>%s</Text>
91 </FlowcellId>""" % (flowcell_id,)
92     config_dir = os.path.join(runfolder_dir, 'Config')
93
94     if not os.path.exists(config_dir):
95         os.mkdir(config_dir)
96     pathname = os.path.join(config_dir, 'FlowcellId.xml')
97     f = open(pathname,'w')
98     f.write(config)
99     f.close()
100
101 def make_matrix(matrix_dir):
102     contents = """# Auto-generated frequency response matrix
103 > A
104 > C
105 > G
106 > T
107 0.77 0.15 -0.04 -0.04
108 0.76 1.02 -0.05 -0.06
109 -0.10 -0.10 1.17 -0.03
110 -0.13 -0.12 0.80 1.27
111 """
112     s_matrix = os.path.join(matrix_dir, 's_matrix.txt')
113     f = open(s_matrix, 'w')
114     f.write(contents)
115     f.close()
116
117 def make_phasing_params(bustard_dir):
118     for lane in range(1,9):
119         pathname = os.path.join(bustard_dir, 'params%d.xml' % (lane))
120         f = open(pathname, 'w')
121         f.write("""<Parameters>
122   <Phasing>0.009900</Phasing>
123   <Prephasing>0.003500</Prephasing>
124 </Parameters>
125 """)
126         f.close()
127
128 def make_gerald_config(gerald_dir):
129     config_xml = """<RunParameters>
130 <ChipWideRunParameters>
131   <ANALYSIS>default</ANALYSIS>
132   <BAD_LANES></BAD_LANES>
133   <BAD_TILES></BAD_TILES>
134   <CONTAM_DIR></CONTAM_DIR>
135   <CONTAM_FILE></CONTAM_FILE>
136   <ELAND_GENOME>Need_to_specify_ELAND_genome_directory</ELAND_GENOME>
137   <ELAND_MULTIPLE_INSTANCES>8</ELAND_MULTIPLE_INSTANCES>
138   <ELAND_REPEAT></ELAND_REPEAT>
139   <EMAIL_DOMAIN>domain.com</EMAIL_DOMAIN>
140   <EMAIL_LIST>diane</EMAIL_LIST>
141   <EMAIL_SERVER>localhost:25</EMAIL_SERVER>
142   <EXPT_DIR>/home/diane/gec/080416_HWI-EAS229_0024_207BTAAXX/Data/C1-33_Firecrest1.8.28_19-04-2008_diane/Bustard1.8.28_19-04-2008_diane</EXPT_DIR>
143   <EXPT_DIR_ROOT>/home/diane/gec</EXPT_DIR_ROOT>
144   <FORCE>1</FORCE>
145   <GENOME_DIR>/home/diane/proj/SolexaPipeline-0.2.2.6/Goat/../Gerald/../../Genomes</GENOME_DIR>
146   <GENOME_FILE>Need_to_specify_genome_file_name</GENOME_FILE>
147   <HAMSTER_FLAG>genome</HAMSTER_FLAG>
148   <OUT_DIR>/home/diane/gec/080416_HWI-EAS229_0024_207BTAAXX/Data/C1-33_Firecrest1.8.28_19-04-2008_diane/Bustard1.8.28_19-04-2008_diane/GERALD_19-04-2008_diane</OUT_DIR>
149   <POST_RUN_COMMAND></POST_RUN_COMMAND>
150   <PRB_FILE_SUFFIX>_prb.txt</PRB_FILE_SUFFIX>
151   <PURE_BASES>12</PURE_BASES>
152   <QF_PARAMS>'((CHASTITY&gt;=0.6))'</QF_PARAMS>
153   <QHG_FILE_SUFFIX>_qhg.txt</QHG_FILE_SUFFIX>
154   <QUALITY_FORMAT>--symbolic</QUALITY_FORMAT>
155   <READ_LENGTH>32</READ_LENGTH>
156   <SEQUENCE_FORMAT>--scarf</SEQUENCE_FORMAT>
157   <SEQ_FILE_SUFFIX>_seq.txt</SEQ_FILE_SUFFIX>
158   <SIG_FILE_SUFFIX_DEPHASED>_sig2.txt</SIG_FILE_SUFFIX_DEPHASED>
159   <SIG_FILE_SUFFIX_NOT_DEPHASED>_sig.txt</SIG_FILE_SUFFIX_NOT_DEPHASED>
160   <SOFTWARE_VERSION>@(#) Id: GERALD.pl,v 1.68.2.2 2007/06/13 11:08:49 km Exp</SOFTWARE_VERSION>
161   <TILE_REGEX>s_[1-8]_[0-9][0-9][0-9][0-9]</TILE_REGEX>
162   <TILE_ROOT>s</TILE_ROOT>
163   <TIME_STAMP>Sat Apr 19 19:08:30 2008</TIME_STAMP>
164   <TOOLS_DIR>/home/diane/proj/SolexaPipeline-0.2.2.6/Goat/../Gerald</TOOLS_DIR>
165   <USE_BASES>all</USE_BASES>
166   <WEB_DIR_ROOT>http://host.domain.com/yourshare/</WEB_DIR_ROOT>
167 </ChipWideRunParameters>
168 <LaneSpecificRunParameters>
169   <ANALYSIS>
170     <s_1>eland</s_1>
171     <s_2>eland</s_2>
172     <s_3>eland</s_3>
173     <s_4>eland</s_4>
174     <s_5>eland</s_5>
175     <s_6>eland</s_6>
176     <s_7>eland</s_7>
177     <s_8>eland</s_8>
178   </ANALYSIS>
179   <ELAND_GENOME>
180     <s_1>/g/dm3</s_1>
181     <s_2>/g/equcab1</s_2>
182     <s_3>/g/equcab1</s_3>
183     <s_4>/g/canfam2</s_4>
184     <s_5>/g/hg18</s_5>
185     <s_6>/g/hg18</s_6>
186     <s_7>/g/hg18</s_7>
187     <s_8>/g/hg18</s_8>
188   </ELAND_GENOME>
189   <READ_LENGTH>
190     <s_1>32</s_1>
191     <s_2>32</s_2>
192     <s_3>32</s_3>
193     <s_4>32</s_4>
194     <s_5>32</s_5>
195     <s_6>32</s_6>
196     <s_7>32</s_7>
197     <s_8>32</s_8>
198   </READ_LENGTH>
199   <USE_BASES>
200     <s_1>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_1>
201     <s_2>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_2>
202     <s_3>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_3>
203     <s_4>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_4>
204     <s_5>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_5>
205     <s_6>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_6>
206     <s_7>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_7>
207     <s_8>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</s_8>
208   </USE_BASES>
209 </LaneSpecificRunParameters>
210 </RunParameters>
211 """
212     pathname = os.path.join(gerald_dir, 'config.xml')
213     f = open(pathname,'w')
214     f.write(config_xml)
215     f.close()
216
217 def make_summary100_htm(gerald_dir):
218     summary_htm="""<!--RUN_TIME Wed Jul  2 06:47:44 2008 -->
219 <!--SOFTWARE_VERSION @(#) $Id: jerboa.pl,v 1.94 2007/12/04 09:59:07 rshaw Exp $-->
220 <html>
221 <body>
222
223 <a name="Top"><h2><title>080627_HWI-EAS229_0036_3055HAXX Summary</title></h2></a>
224 <h1>Summary Information For Experiment 080627_HWI-EAS229_0036_3055HAXX on Machine HWI-EAS229</h1>
225 <h2><br></br>Chip Summary<br></br></h2>
226 <table border="1" cellpadding="5">
227 <tr><td>Machine</td><td>HWI-EAS229</td></tr>
228 <tr><td>Run Folder</td><td>080627_HWI-EAS229_0036_3055HAXX</td></tr>
229 <tr><td>Chip ID</td><td>unknown</td></tr>
230 </table>
231 <h2><br></br>Chip Results Summary<br></br></h2>
232 <table border="1" cellpadding="5">
233 <tr>
234 <td>Clusters</td>
235 <td>Clusters (PF)</td>
236 <td>Yield (kbases)</td>
237 </tr>
238 <tr><td>80933224</td>
239 <td>43577803</td>
240 <td>1133022</td>
241 </tr>
242 </table>
243 <h2><br></br>Lane Parameter Summary<br></br></h2>
244 <table border="1" cellpadding="5">
245 <tr>
246 <td>Lane</td>
247 <td>Sample ID</td>
248 <td>Sample Target</td>
249 <td>Sample Type</td>
250 <td>Length</td>
251 <td>Filter</td>
252 <td>Num Tiles</td>
253 <td>Tiles</td>
254 </tr>
255 <tr>
256 <td>1</td>
257 <td>unknown</td>
258 <td>mm9</td>
259 <td>ELAND</td>
260 <td>26</td>
261 <td>'((CHASTITY>=0.6))'</td>
262 <td>100</td>
263 <td><a href="#Lane1">Lane 1</a></td>
264 </tr>
265 <tr>
266 <td>2</td>
267 <td>unknown</td>
268 <td>mm9</td>
269 <td>ELAND</td>
270 <td>26</td>
271 <td>'((CHASTITY>=0.6))'</td>
272 <td>100</td>
273 <td><a href="#Lane2">Lane 2</a></td>
274 </tr>
275 <tr>
276 <td>3</td>
277 <td>unknown</td>
278 <td>mm9</td>
279 <td>ELAND</td>
280 <td>26</td>
281 <td>'((CHASTITY>=0.6))'</td>
282 <td>100</td>
283 <td><a href="#Lane3">Lane 3</a></td>
284 </tr>
285 <tr>
286 <td>4</td>
287 <td>unknown</td>
288 <td>elegans170</td>
289 <td>ELAND</td>
290 <td>26</td>
291 <td>'((CHASTITY>=0.6))'</td>
292 <td>100</td>
293 <td><a href="#Lane4">Lane 4</a></td>
294 </tr>
295 <tr>
296 <td>5</td>
297 <td>unknown</td>
298 <td>elegans170</td>
299 <td>ELAND</td>
300 <td>26</td>
301 <td>'((CHASTITY>=0.6))'</td>
302 <td>100</td>
303 <td><a href="#Lane5">Lane 5</a></td>
304 </tr>
305 <tr>
306 <td>6</td>
307 <td>unknown</td>
308 <td>elegans170</td>
309 <td>ELAND</td>
310 <td>26</td>
311 <td>'((CHASTITY>=0.6))'</td>
312 <td>100</td>
313 <td><a href="#Lane6">Lane 6</a></td>
314 </tr>
315 <tr>
316 <td>7</td>
317 <td>unknown</td>
318 <td>elegans170</td>
319 <td>ELAND</td>
320 <td>26</td>
321 <td>'((CHASTITY>=0.6))'</td>
322 <td>100</td>
323 <td><a href="#Lane7">Lane 7</a></td>
324 </tr>
325 <tr>
326 <td>8</td>
327 <td>unknown</td>
328 <td>elegans170</td>
329 <td>ELAND</td>
330 <td>26</td>
331 <td>'((CHASTITY>=0.6))'</td>
332 <td>100</td>
333 <td><a href="#Lane8">Lane 8</a></td>
334 </tr>
335 </table>
336 <h2><br></br>Lane Results Summary<br></br></h2>
337 <table border="1" cellpadding="5">
338 <tr>
339 <td colspan="2">Lane Info</td>
340 <td colspan="8">Tile Mean +/- SD for Lane</td>
341 </tr>
342 <tr>
343 <td>Lane </td>
344 <td>Lane Yield (kbases) </td>
345 <td>Clusters (raw)</td>
346 <td>Clusters (PF) </td>
347 <td>1st Cycle Int (PF) </td>
348 <td>% intensity after 20 cycles (PF) </td>
349 <td>% PF Clusters </td>
350 <td>% Align (PF) </td>
351 <td>Alignment Score (PF) </td>
352 <td> % Error Rate (PF) </td>
353 </tr>
354 <tr>
355 <td>1</td>
356 <td>158046</td>
357 <td>96483 +/- 9074</td>
358 <td>60787 +/- 4240</td>
359 <td>329 +/- 35</td>
360 <td>101.88 +/- 6.03</td>
361 <td>63.21 +/- 3.29</td>
362 <td>70.33 +/- 0.24</td>
363 <td>9054.08 +/- 59.16</td>
364 <td>0.46 +/- 0.18</td>
365 </tr>
366 <tr>
367 <td>2</td>
368 <td>156564</td>
369 <td>133738 +/- 7938</td>
370 <td>60217 +/- 1926</td>
371 <td>444 +/- 39</td>
372 <td>92.62 +/- 7.58</td>
373 <td>45.20 +/- 3.31</td>
374 <td>51.98 +/- 0.74</td>
375 <td>6692.04 +/- 92.49</td>
376 <td>0.46 +/- 0.09</td>
377 </tr>
378 <tr>
379 <td>3</td>
380 <td>185818</td>
381 <td>152142 +/- 10002</td>
382 <td>71468 +/- 2827</td>
383 <td>366 +/- 36</td>
384 <td>91.53 +/- 8.66</td>
385 <td>47.19 +/- 3.80</td>
386 <td>82.24 +/- 0.44</td>
387 <td>10598.68 +/- 64.13</td>
388 <td>0.41 +/- 0.04</td>
389 </tr>
390 <tr>
391 <td>4</td>
392 <td>34953</td>
393 <td>15784 +/- 2162</td>
394 <td>13443 +/- 1728</td>
395 <td>328 +/- 40</td>
396 <td>97.53 +/- 9.87</td>
397 <td>85.29 +/- 1.91</td>
398 <td>80.02 +/- 0.53</td>
399 <td>10368.82 +/- 71.08</td>
400 <td>0.15 +/- 0.05</td>
401 </tr>
402 <tr>
403 <td>5</td>
404 <td>167936</td>
405 <td>119735 +/- 8465</td>
406 <td>64590 +/- 2529</td>
407 <td>417 +/- 37</td>
408 <td>88.69 +/- 14.79</td>
409 <td>54.10 +/- 2.59</td>
410 <td>76.95 +/- 0.32</td>
411 <td>9936.47 +/- 65.75</td>
412 <td>0.28 +/- 0.02</td>
413 </tr>
414 <tr>
415 <td>6</td>
416 <td>173463</td>
417 <td>152177 +/- 8146</td>
418 <td>66716 +/- 2493</td>
419 <td>372 +/- 39</td>
420 <td>87.06 +/- 9.86</td>
421 <td>43.98 +/- 3.12</td>
422 <td>78.80 +/- 0.43</td>
423 <td>10162.28 +/- 49.65</td>
424 <td>0.38 +/- 0.03</td>
425 </tr>
426 <tr>
427 <td>7</td>
428 <td>149287</td>
429 <td>84649 +/- 7325</td>
430 <td>57418 +/- 3617</td>
431 <td>295 +/- 28</td>
432 <td>89.40 +/- 8.23</td>
433 <td>67.97 +/- 1.82</td>
434 <td>33.38 +/- 0.25</td>
435 <td>4247.92 +/- 32.37</td>
436 <td>1.00 +/- 0.03</td>
437 </tr>
438 <tr>
439 <td>8</td>
440 <td>106953</td>
441 <td>54622 +/- 4812</td>
442 <td>41136 +/- 3309</td>
443 <td>284 +/- 37</td>
444 <td>90.21 +/- 9.10</td>
445 <td>75.39 +/- 2.27</td>
446 <td>48.33 +/- 0.29</td>
447 <td>6169.21 +/- 169.50</td>
448 <td>0.86 +/- 1.22</td>
449 </tr>
450 <tr><td colspan="13">Tile mean across chip</td></tr>
451 <tr>
452 <td>Av.</td>
453 <td></td>
454 <td>101166</td>
455 <td>54472</td>
456 <td>354</td>
457 <td>92.36</td>
458 <td>60.29</td>
459 <td>65.25</td>
460 <td>8403.69</td>
461 <td>0.50</td>
462 </tr>
463 </table>
464 <h2><br></br>Expanded Lane Summary<br></br></h2>
465 <table border="1" cellpadding="5">
466 <tr>
467
468 <tr><td colspan="2">Lane Info</td>
469 <td colspan="2">Phasing Info</td>
470 <td colspan="2">Raw Data (tile mean)</td>
471 <td colspan="7">Filtered Data (tile mean)</td></tr>
472 <td>Lane </td>
473 <td>Clusters (tile mean) (raw)</td>
474 <td>% Phasing </td>
475 <td>% Prephasing </td>
476 <td>% Error Rate (raw) </td>
477 <td> Equiv Perfect Clusters (raw) </td>
478 <td>% retained </td>
479 <td>Cycle 2-4 Av Int (PF) </td>
480 <td>Cycle 2-10 Av % Loss (PF) </td>
481 <td>Cycle 10-20 Av % Loss (PF) </td>
482 <td>% Align (PF) </td>
483 <td>% Error Rate (PF) </td>
484 <td> Equiv Perfect Clusters (PF) </td>
485 </tr>
486 <tr>
487 <td>1</td>
488 <td>96483</td>
489 <td>0.7700</td>
490 <td>0.3100</td>
491 <td>1.00</td>
492 <td>49676</td>
493 <td>63.21</td>
494 <td>317 +/- 32</td>
495 <td>0.13 +/- 0.44</td>
496 <td>-1.14 +/- 0.34</td>
497 <td>70.33</td>
498 <td>0.46</td>
499 <td>41758</td>
500 </tr>
501 <tr>
502 <td>2</td>
503 <td>133738</td>
504 <td>0.7700</td>
505 <td>0.3100</td>
506 <td>1.22</td>
507 <td>40467</td>
508 <td>45.20</td>
509 <td>415 +/- 33</td>
510 <td>0.29 +/- 0.40</td>
511 <td>-0.79 +/- 0.35</td>
512 <td>51.98</td>
513 <td>0.46</td>
514 <td>30615</td>
515 </tr>
516 <tr>
517 <td>3</td>
518 <td>152142</td>
519 <td>0.7700</td>
520 <td>0.3100</td>
521 <td>1.30</td>
522 <td>78588</td>
523 <td>47.19</td>
524 <td>344 +/- 26</td>
525 <td>0.68 +/- 0.51</td>
526 <td>-0.77 +/- 0.42</td>
527 <td>82.24</td>
528 <td>0.41</td>
529 <td>57552</td>
530 </tr>
531 <tr>
532 <td>4</td>
533 <td>15784</td>
534 <td>0.7700</td>
535 <td>0.3100</td>
536 <td>0.29</td>
537 <td>11095</td>
538 <td>85.29</td>
539 <td>306 +/- 34</td>
540 <td>0.20 +/- 0.69</td>
541 <td>-1.28 +/- 0.66</td>
542 <td>80.02</td>
543 <td>0.15</td>
544 <td>10671</td>
545 </tr>
546 <tr>
547 <td>5</td>
548 <td>119735</td>
549 <td>0.7700</td>
550 <td>0.3100</td>
551 <td>0.85</td>
552 <td>60335</td>
553 <td>54.10</td>
554 <td>380 +/- 32</td>
555 <td>0.34 +/- 0.49</td>
556 <td>-1.55 +/- 4.69</td>
557 <td>76.95</td>
558 <td>0.28</td>
559 <td>49015</td>
560 </tr>
561 <tr>
562 <td>6</td>
563 <td>152177</td>
564 <td>0.7700</td>
565 <td>0.3100</td>
566 <td>1.21</td>
567 <td>70905</td>
568 <td>43.98</td>
569 <td>333 +/- 27</td>
570 <td>0.57 +/- 0.50</td>
571 <td>-0.91 +/- 0.39</td>
572 <td>78.80</td>
573 <td>0.38</td>
574 <td>51663</td>
575 </tr>
576 <tr>
577 <td>7</td>
578 <td>84649</td>
579 <td>0.7700</td>
580 <td>0.3100</td>
581 <td>1.38</td>
582 <td>21069</td>
583 <td>67.97</td>
584 <td>272 +/- 20</td>
585 <td>1.15 +/- 0.52</td>
586 <td>-0.84 +/- 0.58</td>
587 <td>33.38</td>
588 <td>1.00</td>
589 <td>18265</td>
590 </tr>
591 <tr>
592 <td>8</td>
593 <td>54622</td>
594 <td>0.7700</td>
595 <td>0.3100</td>
596 <td>1.17</td>
597 <td>21335</td>
598 <td>75.39</td>
599 <td>262 +/- 31</td>
600 <td>1.10 +/- 0.59</td>
601 <td>-1.01 +/- 0.47</td>
602 <td>48.33</td>
603 <td>0.86</td>
604 <td>19104</td>
605 </tr>
606 </table>
607 <b><br></br>IVC Plots</b>
608 <p> <a href='IVC.htm' target="_blank"> IVC.htm
609  </a></p>
610 <b><br></br>All Intensity Plots</b>
611 <p> <a href='All.htm' target="_blank"> All.htm
612  </a></p>
613 <b><br></br>Error graphs: </b>
614 <p> <a href='Error.htm' target="_blank"> Error.htm
615  </a></p>
616 <td><a href="#Top">Back to top</a></td>
617 <a name="Lane1"><h2><br></br>Lane 1<br></br></h2></a>
618 <table border="1" cellpadding="5">
619 <tr>
620 <td>Lane </td>
621 <td>Tile </td>
622 <td>Clusters (raw)</td>
623 <td>Av 1st Cycle Int (PF) </td>
624 <td>Av % intensity after 20 cycles (PF) </td>
625 <td>% PF Clusters </td>
626 <td>% Align (PF) </td>
627 <td>Av Alignment Score (PF) </td>
628 <td>% Error Rate (PF) </td>
629 </tr>
630 <tr>
631 <td>1</td>
632 <td>0001</td>
633 <td>114972</td>
634 <td>326.48</td>
635 <td>94.39</td>
636 <td>57.44</td>
637 <td>70.2</td>
638 <td>9038.6</td>
639 <td>0.44</td>
640 </tr>
641 </table>
642 <td><a href="#Top">Back to top</a></td>
643 <a name="Lane2"><h2><br></br>Lane 2<br></br></h2></a>
644 <table border="1" cellpadding="5">
645 <tr>
646 <td>Lane </td>
647 <td>Tile </td>
648 <td>Clusters (raw)</td>
649 <td>Av 1st Cycle Int (PF) </td>
650 <td>Av % intensity after 20 cycles (PF) </td>
651 <td>% PF Clusters </td>
652 <td>% Align (PF) </td>
653 <td>Av Alignment Score (PF) </td>
654 <td>% Error Rate (PF) </td>
655 </tr>
656 <tr>
657 <td>2</td>
658 <td>0001</td>
659 <td>147793</td>
660 <td>448.12</td>
661 <td>83.68</td>
662 <td>38.57</td>
663 <td>53.7</td>
664 <td>6905.4</td>
665 <td>0.54</td>
666 </tr>
667 </table>
668 <td><a href="#Top">Back to top</a></td>
669 <a name="Lane3"><h2><br></br>Lane 3<br></br></h2></a>
670 <table border="1" cellpadding="5">
671 <tr>
672 <td>Lane </td>
673 <td>Tile </td>
674 <td>Clusters (raw)</td>
675 <td>Av 1st Cycle Int (PF) </td>
676 <td>Av % intensity after 20 cycles (PF) </td>
677 <td>% PF Clusters </td>
678 <td>% Align (PF) </td>
679 <td>Av Alignment Score (PF) </td>
680 <td>% Error Rate (PF) </td>
681 </tr>
682 <tr>
683 <td>3</td>
684 <td>0001</td>
685 <td>167904</td>
686 <td>374.05</td>
687 <td>86.91</td>
688 <td>40.36</td>
689 <td>81.3</td>
690 <td>10465.0</td>
691 <td>0.47</td>
692 </tr>
693 </table>
694 <td><a href="#Top">Back to top</a></td>
695 <a name="Lane4"><h2><br></br>Lane 4<br></br></h2></a>
696 <table border="1" cellpadding="5">
697 <tr>
698 <td>Lane </td>
699 <td>Tile </td>
700 <td>Clusters (raw)</td>
701 <td>Av 1st Cycle Int (PF) </td>
702 <td>Av % intensity after 20 cycles (PF) </td>
703 <td>% PF Clusters </td>
704 <td>% Align (PF) </td>
705 <td>Av Alignment Score (PF) </td>
706 <td>% Error Rate (PF) </td>
707 </tr>
708 <tr>
709 <td>4</td>
710 <td>0001</td>
711 <td>20308</td>
712 <td>276.85</td>
713 <td>92.87</td>
714 <td>84.26</td>
715 <td>80.4</td>
716 <td>10413.8</td>
717 <td>0.16</td>
718 </tr>
719 </table>
720 <td><a href="#Top">Back to top</a></td>
721 <a name="Lane5"><h2><br></br>Lane 5<br></br></h2></a>
722 <table border="1" cellpadding="5">
723 <tr>
724 <td>Lane </td>
725 <td>Tile </td>
726 <td>Clusters (raw)</td>
727 <td>Av 1st Cycle Int (PF) </td>
728 <td>Av % intensity after 20 cycles (PF) </td>
729 <td>% PF Clusters </td>
730 <td>% Align (PF) </td>
731 <td>Av Alignment Score (PF) </td>
732 <td>% Error Rate (PF) </td>
733 </tr>
734 </table>
735 <td><a href="#Top">Back to top</a></td>
736 <a name="Lane6"><h2><br></br>Lane 6<br></br></h2></a>
737 <table border="1" cellpadding="5">
738 <tr>
739 <td>Lane </td>
740 <td>Tile </td>
741 <td>Clusters (raw)</td>
742 <td>Av 1st Cycle Int (PF) </td>
743 <td>Av % intensity after 20 cycles (PF) </td>
744 <td>% PF Clusters </td>
745 <td>% Align (PF) </td>
746 <td>Av Alignment Score (PF) </td>
747 <td>% Error Rate (PF) </td>
748 </tr>
749 <tr>
750 <td>6</td>
751 <td>0001</td>
752 <td>166844</td>
753 <td>348.12</td>
754 <td>77.59</td>
755 <td>38.13</td>
756 <td>79.7</td>
757 <td>10264.4</td>
758 <td>0.44</td>
759 </tr>
760 </table>
761 <td><a href="#Top">Back to top</a></td>
762 <a name="Lane7"><h2><br></br>Lane 7<br></br></h2></a>
763 <table border="1" cellpadding="5">
764 <tr>
765 <td>Lane </td>
766 <td>Tile </td>
767 <td>Clusters (raw)</td>
768 <td>Av 1st Cycle Int (PF) </td>
769 <td>Av % intensity after 20 cycles (PF) </td>
770 <td>% PF Clusters </td>
771 <td>% Align (PF) </td>
772 <td>Av Alignment Score (PF) </td>
773 <td>% Error Rate (PF) </td>
774 </tr>
775 <tr>
776 <td>7</td>
777 <td>0001</td>
778 <td>98913</td>
779 <td>269.90</td>
780 <td>86.66</td>
781 <td>64.55</td>
782 <td>33.2</td>
783 <td>4217.5</td>
784 <td>1.02</td>
785 </tr>
786 </table>
787 <td><a href="#Top">Back to top</a></td>
788 <a name="Lane8"><h2><br></br>Lane 8<br></br></h2></a>
789 <table border="1" cellpadding="5">
790 <tr>
791 <td>Lane </td>
792 <td>Tile </td>
793 <td>Clusters (raw)</td>
794 <td>Av 1st Cycle Int (PF) </td>
795 <td>Av % intensity after 20 cycles (PF) </td>
796 <td>% PF Clusters </td>
797 <td>% Align (PF) </td>
798 <td>Av Alignment Score (PF) </td>
799 <td>% Error Rate (PF) </td>
800 </tr>
801 <tr>
802 <td>8</td>
803 <td>0001</td>
804 <td>64972</td>
805 <td>243.60</td>
806 <td>89.40</td>
807 <td>73.17</td>
808 <td>48.3</td>
809 <td>6182.8</td>
810 <td>0.71</td>
811 </tr>
812 </table>
813 <td><a href="#Top">Back to top</a></td>
814 </body>
815 </html>
816 """
817     pathname = os.path.join(gerald_dir, 'Summary.htm')
818     f = open(pathname, 'w')
819     f.write(summary_htm)
820     f.close()
821
822 def make_eland_results(gerald_dir):
823     eland_result = """>HWI-EAS229_24_207BTAAXX:1:7:599:759    ACATAGNCACAGACATAAACATAGACATAGAC U0      1       1       3       chrUextra.fa    28189829        R       D.
824 >HWI-EAS229_24_207BTAAXX:1:7:205:842    AAACAANNCTCCCAAACACGTAAACTGGAAAA  U1      0       1       0       chr2L.fa        8796855 R       DD      24T
825 >HWI-EAS229_24_207BTAAXX:1:7:776:582    AGCTCANCCGATCGAAAACCTCNCCAAGCAAT        NM      0       0       0
826 >HWI-EAS229_24_207BTAAXX:1:7:205:842    AAACAANNCTCCCAAACACGTAAACTGGAAAA        U1      0       1       0       Lambda.fa        8796855 R       DD      24T
827 """
828     for i in range(1,9):
829         pathname = os.path.join(gerald_dir,
830                                 's_%d_eland_result.txt' % (i,))
831         f = open(pathname, 'w')
832         f.write(eland_result)
833         f.close()