2 from unittest2 import TestCase
3 from StringIO import StringIO
5 from simulate_runfolder import TESTDATA_DIR
6 from htsworkflow.pipelines.runfolder import load_pipeline_run_xml
8 from htsworkflow.pipelines.eland import SampleKey
11 class testLoadRunXML(TestCase):
12 def _check_run_xml(self, run_xml_name, results, eland_results=8):
13 run_xml_path = os.path.join(TESTDATA_DIR, run_xml_name)
14 run = load_pipeline_run_xml(run_xml_path)
16 self.failUnlessEqual(run.image_analysis.start, results['cycle_start'])
17 self.failUnlessEqual(run.image_analysis.stop, results['cycle_stop'])
19 query = SampleKey(read=1)
20 eland_summary_by_lane = run.gerald.eland_results.find_keys(query)
21 self.failUnlessEqual(len(list(eland_summary_by_lane)), eland_results)
23 runfolder_name = results['runfolder_name']
24 self.failUnlessEqual(run.runfolder_name, runfolder_name)
25 self.failUnlessEqual(run.gerald.runfolder_name, runfolder_name)
27 for (end, lane), lane_results in results['lane_results'].items():
28 for name, test_value in lane_results.items():
29 xml_value = getattr(run.gerald.summary[end][lane], name)
31 self.failUnlessEqual(xml_value, test_value,
32 "%s[%s][%s]: %s %s != %s" % (run_xml_name, end, lane, name, xml_value, test_value))
34 def testVersion0(self):
35 run_xml_name = 'run_FC12150_2007-09-27.xml'
36 results = {'runfolder_name': '070924_USI-EAS44_0022_FC12150',
42 'average_alignment_score': (12116.63, 596.07),
43 'average_first_cycle_intensity': (500,36),
44 'cluster': (31261, 6010),
45 'cluster_pass_filter': None,
46 'percent_error_rate': (2.07, 0.38),
47 'percent_intensity_after_20_cycles': (74.74, 3.78),
48 'percent_pass_filter_align': None,
49 'percent_pass_filter_clusters': (27.38, 7.31),
53 self._check_run_xml(run_xml_name, results, eland_results=0)
55 def testVersion1(self):
57 run_xml_name = 'run_207B2AAXX_2008-04-12.xml'
58 results = {'runfolder_name': '080408_HWI-EAS229_0023_207B2AAXX',
65 self._check_run_xml(run_xml_name, results, eland_results=8)
67 def testVersion2(self):
68 run_xml_name = 'run_62DJMAAXX_2011-01-09.xml'
69 results = {'runfolder_name': '101229_ILLUMINA-EC5D15_00026_62DJMAAXX',
75 'average_alignment_score': (171.98, 1.4),
76 'average_first_cycle_intensity': (381, 5),
77 'cluster': (443170, 10241),
78 'cluster_pass_filter': (362709, 8335),
79 'percent_error_rate': (4.13, 0.14),
80 'percent_intensity_after_20_cycles': (85.89, 3.26),
81 'percent_pass_filter_align': (79.73, 0.23),
82 'percent_pass_filter_clusters': (81.85, 0.8),
85 'average_alignment_score': None,
86 'average_first_cycle_intensity': (362, 4),
87 'cluster': (310619, 15946),
88 'cluster_pass_filter': (277584, 13858),
89 'percent_error_rate': None,
90 'percent_intensity_after_20_cycles': (90.35, 1.12),
91 'percent_pass_filter_align': None,
92 'percent_pass_filter_clusters': (89.37, 0.25),
96 self._check_run_xml(run_xml_name, results, eland_results=8)
100 from unittest2 import TestSuite, defaultTestLoader
102 suite.addTests(defaultTestLoader.loadTestsFromTestCase(testLoadRunXML))
106 if __name__ == "__main__":
107 from unittest2 import main
108 main(defaultTest="suite")