2 Create simulated solexa/illumina runfolders for testing
8 TEST_CODE_DIR = os.path.split(__file__)[0]
9 TESTDATA_DIR = os.path.join(TEST_CODE_DIR, 'testdata')
10 LANE_LIST = range(1,9)
11 TILE_LIST = range(1,101)
13 def make_firecrest_dir(data_dir, version="1.9.2", start=1, stop=37):
14 firecrest_dir = os.path.join(data_dir,
15 'C%d-%d_Firecrest%s_12-04-2008_diane' % (start, stop, version)
17 os.mkdir(firecrest_dir)
20 def make_ipar_dir(data_dir, version='1.01'):
22 Construct an artificial ipar parameter file and directory
24 ipar1_01_file = os.path.join(TESTDATA_DIR, 'IPAR1.01.params')
25 shutil.copy(ipar1_01_file, os.path.join(data_dir, '.params'))
27 ipar_dir = os.path.join(data_dir, 'IPAR_%s' % (version,))
28 if not os.path.exists(ipar_dir):
32 def make_flowcell_id(runfolder_dir, flowcell_id=None):
33 if flowcell_id is None:
34 flowcell_id = '207BTAAXY'
36 config = """<?xml version="1.0"?>
39 </FlowcellId>""" % (flowcell_id,)
40 config_dir = os.path.join(runfolder_dir, 'Config')
42 if not os.path.exists(config_dir):
44 pathname = os.path.join(config_dir, 'FlowcellId.xml')
45 f = open(pathname,'w')
49 def make_bustard_config132(image_dir):
50 source = os.path.join(TESTDATA_DIR, 'bustard-config132.xml')
51 destination = os.path.join(image_dir, 'config.xml')
52 shutil.copy(source, destination)
54 def make_rta_intensities_1460(data_dir, version='1.4.6.0'):
56 Construct an artificial RTA Intensities parameter file and directory
58 intensities_dir = os.path.join(data_dir, 'Intensities')
59 if not os.path.exists(intensities_dir):
60 os.mkdir(intensities_dir)
62 param_file = os.path.join(TESTDATA_DIR, 'rta_intensities_config.xml')
63 shutil.copy(param_file, os.path.join(intensities_dir, 'config.xml'))
65 return intensities_dir
67 def make_rta_basecalls_1460(intensities_dir):
69 Construct an artificial RTA Intensities parameter file and directory
71 basecalls_dir = os.path.join(intensities_dir, 'BaseCalls')
72 if not os.path.exists(basecalls_dir):
73 os.mkdir(basecalls_dir)
75 param_file = os.path.join(TESTDATA_DIR, 'rta_basecalls_config.xml')
76 shutil.copy(param_file, os.path.join(basecalls_dir, 'config.xml'))
80 def make_rta_intensities_1870(data_dir, version='1.8.70.0'):
82 Construct an artificial RTA Intensities parameter file and directory
84 intensities_dir = os.path.join(data_dir, 'Intensities')
85 if not os.path.exists(intensities_dir):
86 os.mkdir(intensities_dir)
88 param_file = os.path.join(TESTDATA_DIR, 'rta_intensities_config_1870.xml')
89 shutil.copy(param_file, os.path.join(intensities_dir, 'config.xml'))
91 return intensities_dir
93 def make_rta_basecalls_1870(intensities_dir):
95 Construct an artificial RTA Intensities parameter file and directory
97 basecalls_dir = os.path.join(intensities_dir, 'BaseCalls')
98 if not os.path.exists(basecalls_dir):
99 os.mkdir(basecalls_dir)
101 param_file = os.path.join(TESTDATA_DIR, 'rta_basecalls_config_1870.xml')
102 shutil.copy(param_file, os.path.join(basecalls_dir, 'config.xml'))
106 def make_qseqs(bustard_dir, in_temp=True):
108 Fill gerald directory with qseq files
110 # 42BRJ 8 1 0039 happened to be a better than usual tile, in that there
111 # was actually sequence at the start
112 source = os.path.join(TESTDATA_DIR, '42BRJAAXX_8_1_0039_qseq.txt')
113 destdir = bustard_dir
114 if not os.path.isdir(destdir):
117 for lane in LANE_LIST:
118 for tile in TILE_LIST:
119 destination = os.path.join(bustard_dir, 's_%d_1_%04d_qseq.txt' % (lane, tile))
120 shutil.copy(source, destination)
122 make_matrix_dir(bustard_dir)
123 make_phasing_dir(bustard_dir)
125 summary_source = os.path.join(TESTDATA_DIR, '42BRJAAXX_BustardSummary.xml')
126 summary_dest = os.path.join(bustard_dir, 'BustardSummary.xml')
127 shutil.copy(summary_source, summary_dest)
131 def make_scores(gerald_dir, in_temp=True):
133 Fill gerald directory with score temp files
134 will create the directory if it doesn't exist.
136 source = os.path.join(TESTDATA_DIR, 's_1_0001_score.txt')
139 destdir = os.path.join(destdir, 'Temp')
140 if not os.path.isdir(destdir):
143 for lane in LANE_LIST:
144 for tile in TILE_LIST:
145 destination = os.path.join(destdir, 's_%d_%04d_score.txt' % (lane, tile))
146 shutil.copy(source, destination)
150 def make_matrix_dir(bustard_dir):
152 Create several matrix files in <bustard_dir>/Matrix/
156 destdir = os.path.join(bustard_dir, 'Matrix')
157 if not os.path.isdir(destdir):
160 source = os.path.join(TESTDATA_DIR, '42BRJAAXX_8_02_matrix.txt')
161 for lane in LANE_LIST:
162 destination = os.path.join(destdir, 's_%d_02_matrix.txt' % ( lane, ))
163 shutil.copy(source, destination)
165 def make_matrix(matrix_filename):
166 contents = """# Auto-generated frequency response matrix
171 0.77 0.15 -0.04 -0.04
172 0.76 1.02 -0.05 -0.06
173 -0.10 -0.10 1.17 -0.03
174 -0.13 -0.12 0.80 1.27
176 f = open(matrix_filename, 'w')
180 def make_matrix_dir_rta160(bustard_dir):
182 Create several matrix files in <bustard_dir>/Matrix/
184 destdir = os.path.join(bustard_dir, 'Matrix')
185 if not os.path.isdir(destdir):
188 source = os.path.join(TESTDATA_DIR, '61MMFAAXX_4_1_matrix.txt')
189 lane_fragments = [ "_%d" % (l,) for l in LANE_LIST]
190 for fragment in lane_fragments:
191 destination = os.path.join(destdir, 's%s_1_matrix.txt' % ( fragment, ))
192 shutil.copy(source, destination)
194 def make_phasing_dir(bustard_dir):
196 Create several phasing files in <bustard_dir>/Phasing/
200 destdir = os.path.join(bustard_dir, 'Phasing')
201 if not os.path.isdir(destdir):
204 source = os.path.join(TESTDATA_DIR, '42BRJAAXX_8_01_phasing.xml')
205 for lane in LANE_LIST:
206 destination = os.path.join(destdir, 's_%d_01_phasing.xml' % ( lane, ))
207 shutil.copy(source, destination)
209 def make_phasing_params(bustard_dir):
210 for lane in LANE_LIST:
211 pathname = os.path.join(bustard_dir, 'params%d.xml' % (lane))
212 f = open(pathname, 'w')
213 f.write("""<Parameters>
214 <Phasing>0.009900</Phasing>
215 <Prephasing>0.003500</Prephasing>
220 def make_gerald_config_026(gerald_dir):
221 source = os.path.join(TESTDATA_DIR, 'gerald_config_0.2.6.xml')
222 destination = os.path.join(gerald_dir, 'config.xml')
223 shutil.copy(source, destination)
225 def make_gerald_config_100(gerald_dir):
226 source = os.path.join(TESTDATA_DIR, 'gerald_config_1.0.xml')
227 destination = os.path.join(gerald_dir, 'config.xml')
228 shutil.copy(source, destination)
230 def make_summary_htm_100(gerald_dir):
231 source = os.path.join(TESTDATA_DIR, 'Summary-pipeline100.htm')
232 destination = os.path.join(gerald_dir, 'Summary.htm')
233 shutil.copy(source, destination)
235 def make_summary_htm_110(gerald_dir):
236 source = os.path.join(TESTDATA_DIR, 'Summary-pipeline110.htm')
237 destination = os.path.join(gerald_dir, 'Summary.htm')
238 shutil.copy(source, destination)
240 def make_summary_paired_htm(gerald_dir):
241 source = os.path.join(TESTDATA_DIR, 'Summary-paired-pipeline110.htm')
242 destination = os.path.join(gerald_dir, 'Summary.htm')
243 shutil.copy(source, destination)
245 def make_summary_ipar130_htm(gerald_dir):
246 source = os.path.join(TESTDATA_DIR, 'Summary-ipar130.htm')
247 destination = os.path.join(gerald_dir, 'Summary.htm')
248 shutil.copy(source, destination)
250 def make_summary_rta160_xml(gerald_dir):
251 source = os.path.join(TESTDATA_DIR, 'Summary-rta160.xml')
252 destination = os.path.join(gerald_dir, 'Summary.xml')
253 shutil.copy(source, destination)
255 def make_eland_results(gerald_dir):
256 eland_result = """>HWI-EAS229_24_207BTAAXX:1:7:599:759 ACATAGNCACAGACATAAACATAGACATAGAC U0 1 1 3 chrUextra.fa 28189829 R D.
257 >HWI-EAS229_24_207BTAAXX:1:7:205:842 AAACAANNCTCCCAAACACGTAAACTGGAAAA U1 0 1 0 chr2L.fa 8796855 R DD 24T
258 >HWI-EAS229_24_207BTAAXX:1:7:776:582 AGCTCANCCGATCGAAAACCTCNCCAAGCAAT NM 0 0 0
259 >HWI-EAS229_24_207BTAAXX:1:7:205:842 AAACAANNCTCCCAAACACGTAAACTGGAAAA U1 0 1 0 Lambda.fa 8796855 R DD 24T
262 pathname = os.path.join(gerald_dir,
263 's_%d_eland_result.txt' % (i,))
264 f = open(pathname, 'w')
265 f.write(eland_result)
268 def make_eland_multi(gerald_dir, paired=False, lane_list=LANE_LIST):
269 eland_multi = [""">HWI-EAS229_60_30DP9AAXX:1:1:1221:788 AAGATATCTACGACGTGGTATGGCGGTGTCTGGTCGT NM
270 >HWI-EAS229_60_30DP9AAXX:1:1:931:747 AAAAAAGCAAATTTCATTCACATGTTCTGTGTTCATA 1:0:2 chr5.fa:55269838R0
271 >HWI-EAS229_60_30DP9AAXX:1:1:1121:379 AGAAGAGACATTAAGAGTTCCTGAAATTTATATCTGG 2:1:0 chr16.fa:46189180R1,chr7.fa:122968519R0,chr8.fa:48197174F0
272 >HWI-EAS229_60_30DP9AAXX:1:1:892:1155 ACATTCTCCTTTCCTTCTGAAGTTTTTACGATTCTTT 0:9:10 chr10.fa:114298201F1,chr12.fa:8125072F1,19500297F2,42341293R2,chr13.fa:27688155R2,95069772R1,chr15.fa:51016475F2,chr16.fa:27052155F2,chr1.fa:192426217R2,chr21.fa:23685310R2,chr2.fa:106680068F1,chr3.fa:185226695F2,chr4.fa:106626808R2,chr5.fa:14704894F1,43530779F1,126543189F2,chr6.fa:74284101F1,chr7.fa:22516603F1,chr9.fa:134886204R
273 >HWI-EAS229_60_30DP9AAXX:1:1:931:747 AAAAAAGCAAATTTCATTCACATGTTCTGTGTTCATA 1:0:0 spike.fa/sample1:55269838R0
274 >HWI-EAS229_60_30DP9AAXX:1:1:931:747 AAAAAAGCAAATTTCATTCACATGTTCTGTGTTCATA 1:0:0 spike.fa/sample2:55269838R0
275 """, """>HWI-EAS229_60_30DP9AAXX:1:1:1221:788 AAGATATCTACGACGTGGTATGGCGGTGTCTGGTCGT NM
276 >HWI-EAS229_60_30DP9AAXX:1:1:1221:788 NNNNNNNNNNNNNNGTGGTATGGCGGTGTCTGGTCGT QC
277 >HWI-EAS229_60_30DP9AAXX:1:1:931:747 AAAAAAGCAAATTTCATTCACATGTTCTGTGTTCATA 1:0:2 chr5.fa:55269838R0
278 >HWI-EAS229_60_30DP9AAXX:1:1:1121:379 AGAAGAGACATTAAGAGTTCCTGAAATTTATATCTGG 2:1:0 chr16.fa:46189180R1,chr7.fa:122968519R0,chr8.fa:48197174F0,chr7.fa:22516603F1,chr9.fa:134886204R
279 >HWI-EAS229_60_30DP9AAXX:1:1:892:1155 ACATTCTCCTTTCCTTCTGAAGTTTTTACGATTCTTT 0:9:10 chr10.fa:114298201F1,chr12.fa:8125072F1,19500297F2,42341293R2,chr13.fa:27688155R2,95069772R1,chr15.fa:51016475F2,chr16.fa:27052155F2,chr1.fa:192426217R2,chr21.fa:23685310R2,chr2.fa:106680068F1,chr3.fa:185226695F2,chr4.fa:106626808R2,chr5.fa:14704894F1,43530779F1,126543189F2,chr6.fa:74284101F1
280 >HWI-EAS229_60_30DP9AAXX:1:1:931:747 AAAAAAGCAAATTTCATTCACATGTTCTGTGTTCATA 1:0:0 spike.fa/sample1:55269838R0
281 >HWI-EAS229_60_30DP9AAXX:1:1:931:747 AAAAAAGCAAATTTCATTCACATGTTCTGTGTTCATA 1:0:0 spike.fa/sample2:55269838R0
286 pathname = os.path.join(gerald_dir,
287 's_%d_%d_eland_multi.txt' % (i,e))
288 f = open(pathname, 'w')
289 f.write(eland_multi[e-1])
293 pathname = os.path.join(gerald_dir,
294 's_%d_eland_multi.txt' % (i,))
295 f = open(pathname, 'w')
296 f.write(eland_multi[0])
299 def make_eland_export(gerald_dir, paired=False, lane_list=LANE_LIST):
300 source = os.path.join(TESTDATA_DIR, 'casava_1.7_export.txt')
303 destination = os.path.join(gerald_dir,
304 's_%d_export.txt' % (i,))
305 shutil.copy(source, destination)
308 def make_scarf(gerald_dir, lane_list=LANE_LIST):
309 seq = """HWI-EAS229_92_30VNBAAXX:1:1:0:161:NCAATTACACGACGCTAGCCCTAAAGCTATTTCGAGG:E[aaaabb^a\a_^^a[S`ba_WZUXaaaaaaUKPER
310 HWI-EAS229_92_30VNBAAXX:1:1:0:447:NAGATGCGCATTTGAAGTAGGAGCAAAAGATCAAGGT:EUabaab^baabaaaaaaaa^^Uaaaaa\aaaa__`a
311 HWI-EAS229_92_30VNBAAXX:1:1:0:1210:NATAGCCTCTATAGAAGCCACTATTATTTTTTTCTTA:EUa`]`baaaaa^XQU^a`S``S_`J_aaaaaabb^V
312 HWI-EAS229_92_30VNBAAXX:1:1:0:1867:NTGGAGCAGATATAAAAACAGATGGTGACGTTGAAGT:E[^UaaaUaba^aaa^aa^XV\baaLaLaaaaQVXV^
313 HWI-EAS229_92_30VNBAAXX:1:1:0:1898:NAGCTCGTGTCGTGAGATGTTAGGTTAAGTCCTGCAA:EK_aaaaaaaaaaaUZaaZaXM[aaaXSM\aaZ]URE
316 pathname = os.path.join(gerald_dir, 's_%d_sequence.txt' %(l,))
317 f = open(pathname,'w')
321 def make_fastq(gerald_dir, lane_list=LANE_LIST):
322 seq = """@HWI-EAS229:1:2:182:712#0/1
323 AAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAA
324 +HWI-EAS229:1:2:182:712#0/1
325 \bab_bbaabbababbaaa]]D]bb_baabbab\baa
326 @HWI-EAS229:1:2:198:621#0/1
327 CCCCCCCCCCCCCCCCCCCCCNCCCCCCCCCCCCCCC
328 +HWI-EAS229:1:2:198:621#0/1
329 [aaaaaaa`_`aaaaaaa[`ZDZaaaaaaaaaaaaaa
330 @HWI-EAS229:1:2:209:1321#0/1
331 AAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAA
332 +HWI-EAS229:1:2:209:1321#0/1
333 _bbbbbaaababaabbbbab]D]aaaaaaaaaaaaaa
336 pathname = os.path.join(gerald_dir, 's_%d_sequence.txt' %(l,))
337 f = open(pathname,'w')