X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=htsworkflow%2Fpipelines%2Ftest%2Ftest_runfolder030.py;h=323d7da2008abd8290054c2e74d0460c02cb00a7;hb=d078bd2653d1d702d54a0ff12f91ef2bd85d8d0e;hp=6e97ec63eaca3b40574c4162b88a3f62df649915;hpb=b374e7c2d15aca12d5928e7335cbf609c9d7e3a7;p=htsworkflow.git diff --git a/htsworkflow/pipelines/test/test_runfolder030.py b/htsworkflow/pipelines/test/test_runfolder030.py index 6e97ec6..323d7da 100644 --- a/htsworkflow/pipelines/test/test_runfolder030.py +++ b/htsworkflow/pipelines/test/test_runfolder030.py @@ -4,17 +4,17 @@ from datetime import datetime, date import os import tempfile import shutil -import unittest +from unittest import TestCase from htsworkflow.pipelines import firecrest from htsworkflow.pipelines import bustard from htsworkflow.pipelines import gerald from htsworkflow.pipelines import runfolder -from htsworkflow.pipelines.runfolder import ElementTree +from htsworkflow.pipelines import ElementTree from htsworkflow.pipelines.test.simulate_runfolder import * - + def make_summary_htm(gerald_dir): summary_htm=""" @@ -627,7 +627,7 @@ def make_eland_results(gerald_dir): >HWI-EAS229_24_207BTAAXX:1:7:205:842 AAACAANNCTCCCAAACACGTAAACTGGAAAA U1 0 1 0 Lambda.fa 8796855 R DD 24T """ for i in range(1,9): - pathname = os.path.join(gerald_dir, + pathname = os.path.join(gerald_dir, 's_%d_eland_result.txt' % (i,)) f = open(pathname, 'w') f.write(eland_result) @@ -640,22 +640,23 @@ def make_runfolder(obj=None): # make a fake runfolder directory temp_dir = tempfile.mkdtemp(prefix='tmp_runfolder_') - runfolder_dir = os.path.join(temp_dir, + runfolder_dir = os.path.join(temp_dir, '080102_HWI-EAS229_0010_207BTAAXX') os.mkdir(runfolder_dir) data_dir = os.path.join(runfolder_dir, 'Data') os.mkdir(data_dir) - firecrest_dir = os.path.join(data_dir, + firecrest_dir = os.path.join(data_dir, 'C1-33_Firecrest1.8.28_12-04-2008_diane' ) os.mkdir(firecrest_dir) matrix_dir = os.path.join(firecrest_dir, 'Matrix') os.mkdir(matrix_dir) - make_matrix(matrix_dir) + matrix_filename = os.path.join(matrix_dir, 's_matrix.txt') + make_matrix(matrix_filename) - bustard_dir = os.path.join(firecrest_dir, + bustard_dir = os.path.join(firecrest_dir, 'Bustard1.8.28_12-04-2008_diane') os.mkdir(bustard_dir) make_phasing_params(bustard_dir) @@ -663,7 +664,7 @@ def make_runfolder(obj=None): gerald_dir = os.path.join(bustard_dir, 'GERALD_12-04-2008_diane') os.mkdir(gerald_dir) - make_gerald_config(gerald_dir) + make_gerald_config_026(gerald_dir) make_summary_htm(gerald_dir) make_eland_results(gerald_dir) @@ -675,9 +676,9 @@ def make_runfolder(obj=None): obj.matrix_dir = matrix_dir obj.bustard_dir = bustard_dir obj.gerald_dir = gerald_dir - - -class RunfolderTests(unittest.TestCase): + + +class RunfolderTests(TestCase): """ Test components of the runfolder processing code which includes firecrest, bustard, and gerald @@ -694,6 +695,7 @@ class RunfolderTests(unittest.TestCase): Construct a firecrest object """ f = firecrest.firecrest(self.firecrest_dir) + self.failUnlessEqual(f.software, 'Firecrest') self.failUnlessEqual(f.version, '1.8.28') self.failUnlessEqual(f.start, 1) self.failUnlessEqual(f.stop, 33) @@ -705,49 +707,52 @@ class RunfolderTests(unittest.TestCase): xml_str = ElementTree.tostring(xml) f2 = firecrest.Firecrest(xml=xml) - self.failUnlessEqual(f.version, f2.version) - self.failUnlessEqual(f.start, f2.start) - self.failUnlessEqual(f.stop, f2.stop) - self.failUnlessEqual(f.user, f2.user) - self.failUnlessEqual(f.date, f2.date) + self.failUnlessEqual(f.software, f2.software) + self.failUnlessEqual(f.version, f2.version) + self.failUnlessEqual(f.start, f2.start) + self.failUnlessEqual(f.stop, f2.stop) + self.failUnlessEqual(f.user, f2.user) + self.failUnlessEqual(f.date, f2.date) def test_bustard(self): """ construct a bustard object """ b = bustard.bustard(self.bustard_dir) + self.failUnlessEqual(b.software, 'Bustard') self.failUnlessEqual(b.version, '1.8.28') self.failUnlessEqual(b.date, date(2008,4,12)) self.failUnlessEqual(b.user, 'diane') self.failUnlessEqual(len(b.phasing), 8) self.failUnlessAlmostEqual(b.phasing[8].phasing, 0.0099) - + xml = b.get_elements() b2 = bustard.Bustard(xml=xml) - self.failUnlessEqual(b.version, b2.version) - self.failUnlessEqual(b.date, b2.date ) - self.failUnlessEqual(b.user, b2.user) + self.failUnlessEqual(b.software, b2.software) + self.failUnlessEqual(b.version, b2.version) + self.failUnlessEqual(b.date, b2.date ) + self.failUnlessEqual(b.user, b2.user) self.failUnlessEqual(len(b.phasing), len(b2.phasing)) for key in b.phasing.keys(): - self.failUnlessEqual(b.phasing[key].lane, + self.failUnlessEqual(b.phasing[key].lane, b2.phasing[key].lane) - self.failUnlessEqual(b.phasing[key].phasing, + self.failUnlessEqual(b.phasing[key].phasing, b2.phasing[key].phasing) - self.failUnlessEqual(b.phasing[key].prephasing, + self.failUnlessEqual(b.phasing[key].prephasing, b2.phasing[key].prephasing) def test_gerald(self): # need to update gerald and make tests for it - g = gerald.gerald(self.gerald_dir) + g = gerald.gerald(self.gerald_dir) - self.failUnlessEqual(g.version, - '@(#) Id: GERALD.pl,v 1.68.2.2 2007/06/13 11:08:49 km Exp') + self.failUnlessEqual(g.software, 'GERALD') + self.failUnlessEqual(g.version, '1.68.2.2') self.failUnlessEqual(g.date, datetime(2008,4,19,19,8,30)) self.failUnlessEqual(len(g.lanes), len(g.lanes.keys())) self.failUnlessEqual(len(g.lanes), len(g.lanes.items())) - - # list of genomes, matches what was defined up in + + # list of genomes, matches what was defined up in # make_gerald_config. # the first None is to offset the genomes list to be 1..9 # instead of pythons default 0..8 @@ -763,9 +768,9 @@ class RunfolderTests(unittest.TestCase): self.failUnlessEqual(cur_lane.use_bases, 'Y'*32) # test data extracted from summary file - clusters = [None, - (96483, 9074), (133738, 7938), - (152142, 10002), (15784, 2162), + clusters = [None, + (96483, 9074), (133738, 7938), + (152142, 10002), (15784, 2162), (119735, 8465), (152177, 8146), (84649, 7325), (54622, 4812),] @@ -805,20 +810,22 @@ class RunfolderTests(unittest.TestCase): g_eland = g.eland_results g2_eland = g2.eland_results - for lane in g_eland.keys(): - self.failUnlessEqual(g_eland[lane].reads, - g2_eland[lane].reads) - self.failUnlessEqual(len(g_eland[lane].mapped_reads), - len(g2_eland[lane].mapped_reads)) - for k in g_eland[lane].mapped_reads.keys(): - self.failUnlessEqual(g_eland[lane].mapped_reads[k], - g2_eland[lane].mapped_reads[k]) - - self.failUnlessEqual(len(g_eland[lane].match_codes), - len(g2_eland[lane].match_codes)) - for k in g_eland[lane].match_codes.keys(): - self.failUnlessEqual(g_eland[lane].match_codes[k], - g2_eland[lane].match_codes[k]) + for key in g_eland: + g_results = g_eland[key] + g2_results = g2_eland[key] + self.failUnlessEqual(g_results.reads, + g2_results.reads) + self.failUnlessEqual(len(g_results.mapped_reads), + len(g2_results.mapped_reads)) + for k in g_results.mapped_reads.keys(): + self.failUnlessEqual(g_results.mapped_reads[k], + g2_results.mapped_reads[k]) + + self.failUnlessEqual(len(g_results.match_codes), + len(g2_results.match_codes)) + for k in g_results.match_codes.keys(): + self.failUnlessEqual(g_results.match_codes[k], + g2_results.match_codes[k]) def test_eland(self): @@ -828,12 +835,12 @@ class RunfolderTests(unittest.TestCase): genome_maps = { 1:dm3_map, 2:dm3_map, 3:dm3_map, 4:dm3_map, 5:dm3_map, 6:dm3_map, 7:dm3_map, 8:dm3_map } eland = gerald.eland(self.gerald_dir, genome_maps=genome_maps) - - for i in range(1,9): - lane = eland[i] + + for key in eland: + lane = eland[key] self.failUnlessEqual(lane.reads, 4) self.failUnlessEqual(lane.sample_name, "s") - self.failUnlessEqual(lane.lane_id, i) + self.failUnlessEqual(lane.lane_id, key.lane) self.failUnlessEqual(len(lane.mapped_reads), 3) self.failUnlessEqual(lane.mapped_reads['Lambda.fa'], 1) self.failUnlessEqual(lane.mapped_reads['dm3/chr2L.fa'], 1) @@ -845,9 +852,9 @@ class RunfolderTests(unittest.TestCase): xml_str = ElementTree.tostring(xml) e2 = gerald.ELAND(xml=xml) - for i in range(1,9): - l1 = eland[i] - l2 = e2[i] + for key in eland: + l1 = eland[key] + l2 = e2[key] self.failUnlessEqual(l1.reads, l2.reads) self.failUnlessEqual(l1.sample_name, l2.sample_name) self.failUnlessEqual(l1.lane_id, l2.lane_id) @@ -860,36 +867,39 @@ class RunfolderTests(unittest.TestCase): self.failUnlessEqual(len(l1.match_codes), 9) self.failUnlessEqual(len(l1.match_codes), len(l2.match_codes)) for k in l1.match_codes.keys(): - self.failUnlessEqual(l1.match_codes[k], + self.failUnlessEqual(l1.match_codes[k], l2.match_codes[k]) def test_runfolder(self): runs = runfolder.get_runs(self.runfolder_dir) - + # do we get the flowcell id from the filename? self.failUnlessEqual(len(runs), 1) - self.failUnlessEqual(runs[0].name, 'run_207BTAAXX_2008-04-19.xml') + self.failUnlessEqual(runs[0].serialization_filename, 'run_207BTAAXX_2008-04-19.xml') # do we get the flowcell id from the FlowcellId.xml file make_flowcell_id(self.runfolder_dir, '207BTAAXY') runs = runfolder.get_runs(self.runfolder_dir) self.failUnlessEqual(len(runs), 1) - self.failUnlessEqual(runs[0].name, 'run_207BTAAXY_2008-04-19.xml') - + self.failUnlessEqual(runs[0].serialization_filename, 'run_207BTAAXY_2008-04-19.xml') + r1 = runs[0] xml = r1.get_elements() xml_str = ElementTree.tostring(xml) r2 = runfolder.PipelineRun(xml=xml) - self.failUnlessEqual(r1.name, r2.name) + self.failUnlessEqual(r1.serialization_filename, r2.serialization_filename) self.failIfEqual(r2.image_analysis, None) self.failIfEqual(r2.bustard, None) self.failIfEqual(r2.gerald, None) - + def suite(): - return unittest.makeSuite(RunfolderTests,'test') + from unittest import TestSuite, defaultTestLoader + suite = TestSuite() + suite.addTests(defaultTestLoader.loadTestsFromTestCase(RunfolderTests)) + return suite if __name__ == "__main__": - unittest.main(defaultTest="suite") - + from unittest import main + main(defaultTest="suite")