Merge branch 'django1.4' of mus.cacr.caltech.edu:htsworkflow into django1.4
authorDiane Trout <diane@caltech.edu>
Tue, 8 Jan 2013 01:51:28 +0000 (17:51 -0800)
committerDiane Trout <diane@caltech.edu>
Tue, 8 Jan 2013 01:51:28 +0000 (17:51 -0800)
I fixed one of the time-stamp formats on both development machines.

Conflicts:
htsworkflow/pipelines/gerald.py

htsworkflow/pipelines/gerald.py
htsworkflow/pipelines/runfolder.py
htsworkflow/pipelines/test/simulate_runfolder.py
htsworkflow/pipelines/test/test_runfolder_rta1_12.py
htsworkflow/pipelines/test/test_runfolder_utils.py [new file with mode: 0644]
htsworkflow/pipelines/test/testdata/1_12/basecall_stats/All.htm [new file with mode: 0644]
htsworkflow/pipelines/test/testdata/1_12/basecall_stats/Demultiplex_Stats.htm [new file with mode: 0644]
htsworkflow/pipelines/test/testdata/1_12/basecall_stats/IVC.htm [new file with mode: 0644]

index 75d7d2e514485503b0cca1a612a969ddc6e156e0..db687ea34e11f77f0255df8cd76f8eca1f87c8df 100644 (file)
@@ -177,7 +177,7 @@ class CASAVA(Alignment):
         if self.tree is None:
             return
         if len(self.tree.xpath('TIME_STAMP')) == 0:
-            time_stamp = self.date.strftime("%a %b %d %H:%M:%S %Y")
+            time_stamp = self.date.strftime('%a %b %d %H:%M:%S %Y')
             time_element = ElementTree.Element('TIME_STAMP')
             time_element.text = time_stamp
             self.tree.append(time_element)
index 18a38e0ab1848cb128d987178c7c5ff4fc70e5d3..a3b745717ca6e958b2ee0b579563c3b6e2024db5 100644 (file)
@@ -201,60 +201,6 @@ def get_runs(runfolder, flowcell_id=None):
     from htsworkflow.pipelines import bustard
     from htsworkflow.pipelines import gerald
 
-    def scan_post_image_analysis(runs, runfolder, datadir, image_analysis,
-                                 pathname):
-        added = build_aligned_runs(image_analysis, runs, datadir, runfolder)
-        # If we're a multiplexed run, don't look for older run type.
-        if added > 0:
-            return
-
-        LOGGER.info("Looking for bustard directories in %s" % (pathname,))
-        bustard_dirs = glob(os.path.join(pathname, "Bustard*"))
-        # RTA BaseCalls looks enough like Bustard.
-        bustard_dirs.extend(glob(os.path.join(pathname, "BaseCalls")))
-        for bustard_pathname in bustard_dirs:
-            LOGGER.info("Found bustard directory %s" % (bustard_pathname,))
-            b = bustard.bustard(bustard_pathname)
-            build_gerald_runs(runs, b, image_analysis, bustard_pathname, datadir, pathname, runfolder)
-
-
-    def build_gerald_runs(runs, b, image_analysis, bustard_pathname, datadir, pathname, runfolder):
-        start = len(runs)
-        gerald_glob = os.path.join(bustard_pathname, 'GERALD*')
-        LOGGER.info("Looking for gerald directories in %s" % (pathname,))
-        for gerald_pathname in glob(gerald_glob):
-            LOGGER.info("Found gerald directory %s" % (gerald_pathname,))
-            try:
-                g = gerald.gerald(gerald_pathname)
-                p = PipelineRun(runfolder, flowcell_id)
-                p.datadir = datadir
-                p.image_analysis = image_analysis
-                p.bustard = b
-                p.gerald = g
-                runs.append(p)
-            except IOError, e:
-                LOGGER.error("Ignoring " + str(e))
-        return len(runs) - start
-
-
-    def build_aligned_runs(image_analysis, runs, datadir, runfolder):
-        start = len(runs)
-        aligned_glob = os.path.join(runfolder, 'Aligned*')
-        for aligned in glob(aligned_glob):
-            LOGGER.info("Found aligned directory %s" % (aligned,))
-            try:
-                g = gerald.gerald(aligned)
-                p = PipelineRun(runfolder, flowcell_id)
-                bustard_pathname = os.path.join(runfolder, g.runfolder_name)
-
-                p.datadir = datadir
-                p.image_analysis = image_analysis
-                p.bustard = bustard.bustard(bustard_pathname)
-                p.gerald = g
-                runs.append(p)
-            except IOError, e:
-                LOGGER.error("Ignoring " + str(e))
-        return len(runs) - start
     datadir = os.path.join(runfolder, 'Data')
 
     LOGGER.info('Searching for runs in ' + datadir)
@@ -269,7 +215,7 @@ def get_runs(runfolder, flowcell_id=None):
             )
         else:
             scan_post_image_analysis(
-                runs, runfolder, datadir, image_analysis, firecrest_pathname
+                runs, runfolder, datadir, image_analysis, firecrest_pathname, flowcell_id
             )
     # scan for IPAR directories
     ipar_dirs = glob(os.path.join(datadir, "IPAR_*"))
@@ -284,11 +230,111 @@ def get_runs(runfolder, flowcell_id=None):
             )
         else:
             scan_post_image_analysis(
-                runs, runfolder, datadir, image_analysis, ipar_pathname
+                runs, runfolder, datadir, image_analysis, ipar_pathname, flowcell_id
             )
 
     return runs
 
+def scan_post_image_analysis(runs, runfolder, datadir, image_analysis,
+                             pathname, flowcell_id):
+    added = build_hiseq_runs(image_analysis, runs, datadir, runfolder, flowcell_id)
+    # If we're a multiplexed run, don't look for older run type.
+    if added > 0:
+        return
+
+    LOGGER.info("Looking for bustard directories in %s" % (pathname,))
+    bustard_dirs = glob(os.path.join(pathname, "Bustard*"))
+    # RTA BaseCalls looks enough like Bustard.
+    bustard_dirs.extend(glob(os.path.join(pathname, "BaseCalls")))
+    for bustard_pathname in bustard_dirs:
+        LOGGER.info("Found bustard directory %s" % (bustard_pathname,))
+        b = bustard.bustard(bustard_pathname)
+        build_gerald_runs(runs, b, image_analysis, bustard_pathname, datadir, pathname,
+                          runfolder, flowcell_id)
+
+
+def build_gerald_runs(runs, b, image_analysis, bustard_pathname, datadir, pathname, runfolder,
+                      flowcell_id):
+    start = len(runs)
+    gerald_glob = os.path.join(bustard_pathname, 'GERALD*')
+    LOGGER.info("Looking for gerald directories in %s" % (pathname,))
+    for gerald_pathname in glob(gerald_glob):
+        LOGGER.info("Found gerald directory %s" % (gerald_pathname,))
+        try:
+            g = gerald.gerald(gerald_pathname)
+            p = PipelineRun(runfolder, flowcell_id)
+            p.datadir = datadir
+            p.image_analysis = image_analysis
+            p.bustard = b
+            p.gerald = g
+            runs.append(p)
+        except IOError, e:
+            LOGGER.error("Ignoring " + str(e))
+    return len(runs) - start
+
+
+def build_hiseq_runs(image_analysis, runs, datadir, runfolder, flowcell_id):
+    start = len(runs)
+    aligned_glob = os.path.join(runfolder, 'Aligned*')
+    unaligned_glob = os.path.join(runfolder, 'Unaligned*')
+
+    aligned_paths = glob(aligned_glob)
+    unaligned_paths = glob(unaligned_glob)
+
+    matched_paths = hiseq_match_aligned_unaligned(aligned_paths, unaligned_paths)
+    LOGGER.debug("Matched HiSeq analysis: %s", str(matched_paths))
+
+    for aligned, unaligned in matched_paths:
+        if unaligned is None:
+            LOGGER.warn("Aligned directory %s without matching unalinged, skipping", aligned)
+            continue
+
+        g = gerald.gerald(aligned)
+        print "scan for aligned then remove them from unaligned list"
+        try:
+            p = PipelineRun(runfolder, flowcell_id)
+            p.datadir = datadir
+            p.image_analysis = image_analysis
+            p.bustard = bustard.bustard(unaligned)
+            if aligned:
+                p.gerald = gerald.gerald(aligned)
+            runs.append(p)
+        except IOError, e:
+            LOGGER.error("Ignoring " + str(e))
+    return len(runs) - start
+
+def hiseq_match_aligned_unaligned(aligned, unaligned):
+    """Match aligned and unaligned folders from seperate lists
+    """
+    unaligned_suffix_re = re.compile('Unaligned(?P<suffix>[\w]*)')
+
+    aligned_by_suffix = build_dir_dict_by_suffix('Aligned', aligned)
+    unaligned_by_suffix = build_dir_dict_by_suffix('Unaligned', unaligned)
+
+    keys = set(aligned_by_suffix.keys()).union(set(unaligned_by_suffix.keys()))
+
+    matches = []
+    for key in keys:
+        a = aligned_by_suffix.get(key)
+        u = unaligned_by_suffix.get(key)
+        matches.append((a, u))
+    return matches
+
+def build_dir_dict_by_suffix(prefix, dirnames):
+    """Build a dictionary indexed by suffix of last directory name.
+
+    It assumes a constant prefix
+    """
+    regex = re.compile('%s(?P<suffix>[\w]*)' % (prefix,))
+
+    by_suffix = {}
+    for absname in dirnames:
+        basename = os.path.basename(absname)
+        match = regex.match(basename)
+        if match:
+            by_suffix[match.group('suffix')] = absname
+    return by_suffix
+
 def get_specific_run(gerald_dir):
     """
     Given a gerald directory, construct a PipelineRun out of its parents
index afa2edfe003736605761cdb459c5ba875240ae68..759a13ee37f2f463771ac2429e64e9be49873031 100644 (file)
@@ -100,6 +100,17 @@ def make_unaligned_config_1_12(unaligned_dir):
     ]
     for src, dest in demultiplex_pairs:
         shutil.copy(src, dest)
+        
+def make_unaligned_status_1_12(unaligned_dir, flowcell_id):
+    basecall_status = ['All.htm', 'Demultiplex_Stats.htm', 'IVC.htm']
+    test_data_root = os.path.join(TESTDATA_DIR, '1_12', 'basecall_stats')
+    basecall_stats = os.path.join(unaligned_dir, 
+                                  'Basecall_Stats_{0}'.format(flowcell_id))
+    os.mkdir(basecall_stats)
+    for filename in basecall_status:
+        source = os.path.join(test_data_root, filename)
+        destination = os.path.join(basecall_stats, filename)
+        shutil.copy(source, destination)
 
 def make_rta_intensities_1460(data_dir, version='1.4.6.0'):
     """
index 6933157d5691917bb9bf7a1ff7be3993535b2453..2a64b4fe4d1487a51b1a72be8926bacdf59919c8 100644 (file)
@@ -46,6 +46,7 @@ def make_runfolder(obj=None):
     os.mkdir(unaligned_dir)
     make_unaligned_fastqs_1_12(unaligned_dir, flowcell_id)
     make_unaligned_config_1_12(unaligned_dir)
+    make_unaligned_status_1_12(unaligned_dir, flowcell_id)
 
     aligned_dir = os.path.join(runfolder_dir, "Aligned")
     os.mkdir(aligned_dir)
diff --git a/htsworkflow/pipelines/test/test_runfolder_utils.py b/htsworkflow/pipelines/test/test_runfolder_utils.py
new file mode 100644 (file)
index 0000000..59ee418
--- /dev/null
@@ -0,0 +1,36 @@
+from unittest2 import TestCase, TestSuite, defaultTestLoader
+
+from htsworkflow.pipelines import runfolder
+class TestRunfolderUtilities(TestCase):
+    """Some functions can be tested independently of the runfolder version.
+    """
+    def test_match_aligned_unaligned_abspath(self):
+        aligned = ['/a/b/c/Aligned', '/a/b/c/Aligned1234', '/a/b/c/Aligned_3mm']
+        unaligned = ['/a/b/c/Unaligned', '/a/b/c/Unaligned_3mm', '/a/b/c/Unaligned_6index']
+
+        matches = set(runfolder.hiseq_match_aligned_unaligned(aligned, unaligned))
+        self.assertEqual(len(matches), 4)
+        self.assertTrue(('/a/b/c/Aligned', '/a/b/c/Unaligned') in matches )
+        self.assertTrue(('/a/b/c/Aligned1234', None) in matches )
+        self.assertTrue(('/a/b/c/Aligned_3mm', '/a/b/c/Unaligned_3mm') in matches )
+        self.assertTrue((None, '/a/b/c/Unaligned_6index') in matches )
+
+    def test_match_aligned_unaligned_relpath(self):
+        aligned = ['./Aligned', './Aligned1234', './Aligned_3mm']
+        unaligned = ['./Unaligned', './Unaligned_3mm', './Unaligned_6index']
+
+        matches = set(runfolder.hiseq_match_aligned_unaligned(aligned, unaligned))
+        self.assertEqual(len(matches), 4)
+        self.assertTrue(('./Aligned', './Unaligned') in matches )
+        self.assertTrue(('./Aligned1234', None) in matches )
+        self.assertTrue(('./Aligned_3mm', './Unaligned_3mm') in matches )
+        self.assertTrue((None, './Unaligned_6index') in matches )
+
+def suite():
+    suite = TestSuite()
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(RunfolderTests))
+    return suite
+
+if __name__ == "__main__":
+    from unittest2 import main
+    main(defaultTest="suite")
diff --git a/htsworkflow/pipelines/test/testdata/1_12/basecall_stats/All.htm b/htsworkflow/pipelines/test/testdata/1_12/basecall_stats/All.htm
new file mode 100644 (file)
index 0000000..3e3efa6
--- /dev/null
@@ -0,0 +1,496 @@
+<html>
+<head>
+<!--RUN_TIME 2012-04-11 13:12:39-->
+<!--SOFTWARE_VERSION CASAVA-1.8.2-->
+</head>
+<title>120406_SN787_0114_AD0PMDACXX All</title><h1 align="center">120406_SN787_0114_AD0PMDACXX All</h1>
+<body>
+<a href="All.htm">Full output (Warning: may overload your browser!)</a><br><br>
+<table border="1" cellpadding="5"><tr><td><b>Tile</b></td>
+<td><b>Lane 1</b></td>
+<td><b>Lane 2</b></td>
+<td><b>Lane 3</b></td>
+</tr>
+<tr><td><b>1101</b></td>
+<td><a href="Plots/s_1_1101_all.png">Plots/s_1_1101_all.png</a></td>
+<td><a href="Plots/s_2_1101_all.png">Plots/s_2_1101_all.png</a></td>
+<td><a href="Plots/s_3_1101_all.png">Plots/s_3_1101_all.png</a></td>
+</tr>
+<tr><td><b>1102</b></td>
+<td><a href="Plots/s_1_1102_all.png">Plots/s_1_1102_all.png</a></td>
+<td><a href="Plots/s_2_1102_all.png">Plots/s_2_1102_all.png</a></td>
+<td><a href="Plots/s_3_1102_all.png">Plots/s_3_1102_all.png</a></td>
+</tr>
+<tr><td><b>1103</b></td>
+<td><a href="Plots/s_1_1103_all.png">Plots/s_1_1103_all.png</a></td>
+<td><a href="Plots/s_2_1103_all.png">Plots/s_2_1103_all.png</a></td>
+<td><a href="Plots/s_3_1103_all.png">Plots/s_3_1103_all.png</a></td>
+</tr>
+<tr><td><b>1104</b></td>
+<td><a href="Plots/s_1_1104_all.png">Plots/s_1_1104_all.png</a></td>
+<td><a href="Plots/s_2_1104_all.png">Plots/s_2_1104_all.png</a></td>
+<td><a href="Plots/s_3_1104_all.png">Plots/s_3_1104_all.png</a></td>
+</tr>
+<tr><td><b>1105</b></td>
+<td><a href="Plots/s_1_1105_all.png"> <img height=84 width=84 src="Plots/s_1_1105_all.png"></a></td>
+<td><a href="Plots/s_2_1105_all.png"> <img height=84 width=84 src="Plots/s_2_1105_all.png"></a></td>
+<td><a href="Plots/s_3_1105_all.png"> <img height=84 width=84 src="Plots/s_3_1105_all.png"></a></td>
+</tr>
+<tr><td><b>1106</b></td>
+<td><a href="Plots/s_1_1106_all.png">Plots/s_1_1106_all.png</a></td>
+<td><a href="Plots/s_2_1106_all.png">Plots/s_2_1106_all.png</a></td>
+<td><a href="Plots/s_3_1106_all.png">Plots/s_3_1106_all.png</a></td>
+</tr>
+<tr><td><b>1107</b></td>
+<td><a href="Plots/s_1_1107_all.png">Plots/s_1_1107_all.png</a></td>
+<td><a href="Plots/s_2_1107_all.png">Plots/s_2_1107_all.png</a></td>
+<td><a href="Plots/s_3_1107_all.png">Plots/s_3_1107_all.png</a></td>
+</tr>
+<tr><td><b>1108</b></td>
+<td><a href="Plots/s_1_1108_all.png">Plots/s_1_1108_all.png</a></td>
+<td><a href="Plots/s_2_1108_all.png">Plots/s_2_1108_all.png</a></td>
+<td><a href="Plots/s_3_1108_all.png">Plots/s_3_1108_all.png</a></td>
+</tr>
+<tr><td><b>1109</b></td>
+<td><a href="Plots/s_1_1109_all.png">Plots/s_1_1109_all.png</a></td>
+<td><a href="Plots/s_2_1109_all.png">Plots/s_2_1109_all.png</a></td>
+<td><a href="Plots/s_3_1109_all.png">Plots/s_3_1109_all.png</a></td>
+</tr>
+<tr><td><b>1110</b></td>
+<td><a href="Plots/s_1_1110_all.png"> <img height=84 width=84 src="Plots/s_1_1110_all.png"></a></td>
+<td><a href="Plots/s_2_1110_all.png"> <img height=84 width=84 src="Plots/s_2_1110_all.png"></a></td>
+<td><a href="Plots/s_3_1110_all.png"> <img height=84 width=84 src="Plots/s_3_1110_all.png"></a></td>
+</tr>
+<tr><td><b>1111</b></td>
+<td><a href="Plots/s_1_1111_all.png">Plots/s_1_1111_all.png</a></td>
+<td><a href="Plots/s_2_1111_all.png">Plots/s_2_1111_all.png</a></td>
+<td><a href="Plots/s_3_1111_all.png">Plots/s_3_1111_all.png</a></td>
+</tr>
+<tr><td><b>1112</b></td>
+<td><a href="Plots/s_1_1112_all.png">Plots/s_1_1112_all.png</a></td>
+<td><a href="Plots/s_2_1112_all.png">Plots/s_2_1112_all.png</a></td>
+<td><a href="Plots/s_3_1112_all.png">Plots/s_3_1112_all.png</a></td>
+</tr>
+<tr><td><b>1113</b></td>
+<td><a href="Plots/s_1_1113_all.png">Plots/s_1_1113_all.png</a></td>
+<td><a href="Plots/s_2_1113_all.png">Plots/s_2_1113_all.png</a></td>
+<td><a href="Plots/s_3_1113_all.png">Plots/s_3_1113_all.png</a></td>
+</tr>
+<tr><td><b>1114</b></td>
+<td><a href="Plots/s_1_1114_all.png">Plots/s_1_1114_all.png</a></td>
+<td><a href="Plots/s_2_1114_all.png">Plots/s_2_1114_all.png</a></td>
+<td><a href="Plots/s_3_1114_all.png">Plots/s_3_1114_all.png</a></td>
+</tr>
+<tr><td><b>1115</b></td>
+<td><a href="Plots/s_1_1115_all.png"> <img height=84 width=84 src="Plots/s_1_1115_all.png"></a></td>
+<td><a href="Plots/s_2_1115_all.png"> <img height=84 width=84 src="Plots/s_2_1115_all.png"></a></td>
+<td><a href="Plots/s_3_1115_all.png"> <img height=84 width=84 src="Plots/s_3_1115_all.png"></a></td>
+</tr>
+<tr><td><b>1116</b></td>
+<td><a href="Plots/s_1_1116_all.png">Plots/s_1_1116_all.png</a></td>
+<td><a href="Plots/s_2_1116_all.png">Plots/s_2_1116_all.png</a></td>
+<td><a href="Plots/s_3_1116_all.png">Plots/s_3_1116_all.png</a></td>
+</tr>
+<tr><td><b>1201</b></td>
+<td><a href="Plots/s_1_1201_all.png">Plots/s_1_1201_all.png</a></td>
+<td><a href="Plots/s_2_1201_all.png">Plots/s_2_1201_all.png</a></td>
+<td><a href="Plots/s_3_1201_all.png">Plots/s_3_1201_all.png</a></td>
+</tr>
+<tr><td><b>1202</b></td>
+<td><a href="Plots/s_1_1202_all.png">Plots/s_1_1202_all.png</a></td>
+<td><a href="Plots/s_2_1202_all.png">Plots/s_2_1202_all.png</a></td>
+<td><a href="Plots/s_3_1202_all.png">Plots/s_3_1202_all.png</a></td>
+</tr>
+<tr><td><b>1203</b></td>
+<td><a href="Plots/s_1_1203_all.png">Plots/s_1_1203_all.png</a></td>
+<td><a href="Plots/s_2_1203_all.png">Plots/s_2_1203_all.png</a></td>
+<td><a href="Plots/s_3_1203_all.png">Plots/s_3_1203_all.png</a></td>
+</tr>
+<tr><td><b>1204</b></td>
+<td><a href="Plots/s_1_1204_all.png"> <img height=84 width=84 src="Plots/s_1_1204_all.png"></a></td>
+<td><a href="Plots/s_2_1204_all.png"> <img height=84 width=84 src="Plots/s_2_1204_all.png"></a></td>
+<td><a href="Plots/s_3_1204_all.png"> <img height=84 width=84 src="Plots/s_3_1204_all.png"></a></td>
+</tr>
+<tr><td><b>1205</b></td>
+<td><a href="Plots/s_1_1205_all.png">Plots/s_1_1205_all.png</a></td>
+<td><a href="Plots/s_2_1205_all.png">Plots/s_2_1205_all.png</a></td>
+<td><a href="Plots/s_3_1205_all.png">Plots/s_3_1205_all.png</a></td>
+</tr>
+<tr><td><b>1206</b></td>
+<td><a href="Plots/s_1_1206_all.png">Plots/s_1_1206_all.png</a></td>
+<td><a href="Plots/s_2_1206_all.png">Plots/s_2_1206_all.png</a></td>
+<td><a href="Plots/s_3_1206_all.png">Plots/s_3_1206_all.png</a></td>
+</tr>
+<tr><td><b>1207</b></td>
+<td><a href="Plots/s_1_1207_all.png">Plots/s_1_1207_all.png</a></td>
+<td><a href="Plots/s_2_1207_all.png">Plots/s_2_1207_all.png</a></td>
+<td><a href="Plots/s_3_1207_all.png">Plots/s_3_1207_all.png</a></td>
+</tr>
+<tr><td><b>1208</b></td>
+<td><a href="Plots/s_1_1208_all.png">Plots/s_1_1208_all.png</a></td>
+<td><a href="Plots/s_2_1208_all.png">Plots/s_2_1208_all.png</a></td>
+<td><a href="Plots/s_3_1208_all.png">Plots/s_3_1208_all.png</a></td>
+</tr>
+<tr><td><b>1209</b></td>
+<td><a href="Plots/s_1_1209_all.png"> <img height=84 width=84 src="Plots/s_1_1209_all.png"></a></td>
+<td><a href="Plots/s_2_1209_all.png"> <img height=84 width=84 src="Plots/s_2_1209_all.png"></a></td>
+<td><a href="Plots/s_3_1209_all.png"> <img height=84 width=84 src="Plots/s_3_1209_all.png"></a></td>
+</tr>
+<tr><td><b>1210</b></td>
+<td><a href="Plots/s_1_1210_all.png">Plots/s_1_1210_all.png</a></td>
+<td><a href="Plots/s_2_1210_all.png">Plots/s_2_1210_all.png</a></td>
+<td><a href="Plots/s_3_1210_all.png">Plots/s_3_1210_all.png</a></td>
+</tr>
+<tr><td><b>1211</b></td>
+<td><a href="Plots/s_1_1211_all.png">Plots/s_1_1211_all.png</a></td>
+<td><a href="Plots/s_2_1211_all.png">Plots/s_2_1211_all.png</a></td>
+<td><a href="Plots/s_3_1211_all.png">Plots/s_3_1211_all.png</a></td>
+</tr>
+<tr><td><b>1212</b></td>
+<td><a href="Plots/s_1_1212_all.png">Plots/s_1_1212_all.png</a></td>
+<td><a href="Plots/s_2_1212_all.png">Plots/s_2_1212_all.png</a></td>
+<td><a href="Plots/s_3_1212_all.png">Plots/s_3_1212_all.png</a></td>
+</tr>
+<tr><td><b>1213</b></td>
+<td><a href="Plots/s_1_1213_all.png">Plots/s_1_1213_all.png</a></td>
+<td><a href="Plots/s_2_1213_all.png">Plots/s_2_1213_all.png</a></td>
+<td><a href="Plots/s_3_1213_all.png">Plots/s_3_1213_all.png</a></td>
+</tr>
+<tr><td><b>1214</b></td>
+<td><a href="Plots/s_1_1214_all.png"> <img height=84 width=84 src="Plots/s_1_1214_all.png"></a></td>
+<td><a href="Plots/s_2_1214_all.png"> <img height=84 width=84 src="Plots/s_2_1214_all.png"></a></td>
+<td><a href="Plots/s_3_1214_all.png"> <img height=84 width=84 src="Plots/s_3_1214_all.png"></a></td>
+</tr>
+<tr><td><b>1215</b></td>
+<td><a href="Plots/s_1_1215_all.png">Plots/s_1_1215_all.png</a></td>
+<td><a href="Plots/s_2_1215_all.png">Plots/s_2_1215_all.png</a></td>
+<td><a href="Plots/s_3_1215_all.png">Plots/s_3_1215_all.png</a></td>
+</tr>
+<tr><td><b>1216</b></td>
+<td><a href="Plots/s_1_1216_all.png">Plots/s_1_1216_all.png</a></td>
+<td><a href="Plots/s_2_1216_all.png">Plots/s_2_1216_all.png</a></td>
+<td><a href="Plots/s_3_1216_all.png">Plots/s_3_1216_all.png</a></td>
+</tr>
+<tr><td><b>1301</b></td>
+<td><a href="Plots/s_1_1301_all.png">Plots/s_1_1301_all.png</a></td>
+<td><a href="Plots/s_2_1301_all.png">Plots/s_2_1301_all.png</a></td>
+<td><a href="Plots/s_3_1301_all.png">Plots/s_3_1301_all.png</a></td>
+</tr>
+<tr><td><b>1302</b></td>
+<td><a href="Plots/s_1_1302_all.png">Plots/s_1_1302_all.png</a></td>
+<td><a href="Plots/s_2_1302_all.png">Plots/s_2_1302_all.png</a></td>
+<td><a href="Plots/s_3_1302_all.png">Plots/s_3_1302_all.png</a></td>
+</tr>
+<tr><td><b>1303</b></td>
+<td><a href="Plots/s_1_1303_all.png"> <img height=84 width=84 src="Plots/s_1_1303_all.png"></a></td>
+<td><a href="Plots/s_2_1303_all.png"> <img height=84 width=84 src="Plots/s_2_1303_all.png"></a></td>
+<td><a href="Plots/s_3_1303_all.png"> <img height=84 width=84 src="Plots/s_3_1303_all.png"></a></td>
+</tr>
+<tr><td><b>1304</b></td>
+<td><a href="Plots/s_1_1304_all.png">Plots/s_1_1304_all.png</a></td>
+<td><a href="Plots/s_2_1304_all.png">Plots/s_2_1304_all.png</a></td>
+<td><a href="Plots/s_3_1304_all.png">Plots/s_3_1304_all.png</a></td>
+</tr>
+<tr><td><b>1305</b></td>
+<td><a href="Plots/s_1_1305_all.png">Plots/s_1_1305_all.png</a></td>
+<td><a href="Plots/s_2_1305_all.png">Plots/s_2_1305_all.png</a></td>
+<td><a href="Plots/s_3_1305_all.png">Plots/s_3_1305_all.png</a></td>
+</tr>
+<tr><td><b>1306</b></td>
+<td><a href="Plots/s_1_1306_all.png">Plots/s_1_1306_all.png</a></td>
+<td><a href="Plots/s_2_1306_all.png">Plots/s_2_1306_all.png</a></td>
+<td><a href="Plots/s_3_1306_all.png">Plots/s_3_1306_all.png</a></td>
+</tr>
+<tr><td><b>1307</b></td>
+<td><a href="Plots/s_1_1307_all.png">Plots/s_1_1307_all.png</a></td>
+<td><a href="Plots/s_2_1307_all.png">Plots/s_2_1307_all.png</a></td>
+<td><a href="Plots/s_3_1307_all.png">Plots/s_3_1307_all.png</a></td>
+</tr>
+<tr><td><b>1308</b></td>
+<td><a href="Plots/s_1_1308_all.png"> <img height=84 width=84 src="Plots/s_1_1308_all.png"></a></td>
+<td><a href="Plots/s_2_1308_all.png"> <img height=84 width=84 src="Plots/s_2_1308_all.png"></a></td>
+<td><a href="Plots/s_3_1308_all.png"> <img height=84 width=84 src="Plots/s_3_1308_all.png"></a></td>
+</tr>
+<tr><td><b>1309</b></td>
+<td><a href="Plots/s_1_1309_all.png">Plots/s_1_1309_all.png</a></td>
+<td><a href="Plots/s_2_1309_all.png">Plots/s_2_1309_all.png</a></td>
+<td><a href="Plots/s_3_1309_all.png">Plots/s_3_1309_all.png</a></td>
+</tr>
+<tr><td><b>1310</b></td>
+<td><a href="Plots/s_1_1310_all.png">Plots/s_1_1310_all.png</a></td>
+<td><a href="Plots/s_2_1310_all.png">Plots/s_2_1310_all.png</a></td>
+<td><a href="Plots/s_3_1310_all.png">Plots/s_3_1310_all.png</a></td>
+</tr>
+<tr><td><b>1311</b></td>
+<td><a href="Plots/s_1_1311_all.png">Plots/s_1_1311_all.png</a></td>
+<td><a href="Plots/s_2_1311_all.png">Plots/s_2_1311_all.png</a></td>
+<td><a href="Plots/s_3_1311_all.png">Plots/s_3_1311_all.png</a></td>
+</tr>
+<tr><td><b>1312</b></td>
+<td><a href="Plots/s_1_1312_all.png">Plots/s_1_1312_all.png</a></td>
+<td><a href="Plots/s_2_1312_all.png">Plots/s_2_1312_all.png</a></td>
+<td><a href="Plots/s_3_1312_all.png">Plots/s_3_1312_all.png</a></td>
+</tr>
+<tr><td><b>1313</b></td>
+<td><a href="Plots/s_1_1313_all.png"> <img height=84 width=84 src="Plots/s_1_1313_all.png"></a></td>
+<td><a href="Plots/s_2_1313_all.png"> <img height=84 width=84 src="Plots/s_2_1313_all.png"></a></td>
+<td><a href="Plots/s_3_1313_all.png"> <img height=84 width=84 src="Plots/s_3_1313_all.png"></a></td>
+</tr>
+<tr><td><b>1314</b></td>
+<td><a href="Plots/s_1_1314_all.png">Plots/s_1_1314_all.png</a></td>
+<td><a href="Plots/s_2_1314_all.png">Plots/s_2_1314_all.png</a></td>
+<td><a href="Plots/s_3_1314_all.png">Plots/s_3_1314_all.png</a></td>
+</tr>
+<tr><td><b>1315</b></td>
+<td><a href="Plots/s_1_1315_all.png">Plots/s_1_1315_all.png</a></td>
+<td><a href="Plots/s_2_1315_all.png">Plots/s_2_1315_all.png</a></td>
+<td><a href="Plots/s_3_1315_all.png">Plots/s_3_1315_all.png</a></td>
+</tr>
+<tr><td><b>1316</b></td>
+<td><a href="Plots/s_1_1316_all.png">Plots/s_1_1316_all.png</a></td>
+<td><a href="Plots/s_2_1316_all.png">Plots/s_2_1316_all.png</a></td>
+<td><a href="Plots/s_3_1316_all.png">Plots/s_3_1316_all.png</a></td>
+</tr>
+<tr><td><b>2101</b></td>
+<td><a href="Plots/s_1_2101_all.png">Plots/s_1_2101_all.png</a></td>
+<td><a href="Plots/s_2_2101_all.png">Plots/s_2_2101_all.png</a></td>
+<td><a href="Plots/s_3_2101_all.png">Plots/s_3_2101_all.png</a></td>
+</tr>
+<tr><td><b>2102</b></td>
+<td><a href="Plots/s_1_2102_all.png"> <img height=84 width=84 src="Plots/s_1_2102_all.png"></a></td>
+<td><a href="Plots/s_2_2102_all.png"> <img height=84 width=84 src="Plots/s_2_2102_all.png"></a></td>
+<td><a href="Plots/s_3_2102_all.png"> <img height=84 width=84 src="Plots/s_3_2102_all.png"></a></td>
+</tr>
+<tr><td><b>2103</b></td>
+<td><a href="Plots/s_1_2103_all.png">Plots/s_1_2103_all.png</a></td>
+<td><a href="Plots/s_2_2103_all.png">Plots/s_2_2103_all.png</a></td>
+<td><a href="Plots/s_3_2103_all.png">Plots/s_3_2103_all.png</a></td>
+</tr>
+<tr><td><b>2104</b></td>
+<td><a href="Plots/s_1_2104_all.png">Plots/s_1_2104_all.png</a></td>
+<td><a href="Plots/s_2_2104_all.png">Plots/s_2_2104_all.png</a></td>
+<td><a href="Plots/s_3_2104_all.png">Plots/s_3_2104_all.png</a></td>
+</tr>
+<tr><td><b>2105</b></td>
+<td><a href="Plots/s_1_2105_all.png">Plots/s_1_2105_all.png</a></td>
+<td><a href="Plots/s_2_2105_all.png">Plots/s_2_2105_all.png</a></td>
+<td><a href="Plots/s_3_2105_all.png">Plots/s_3_2105_all.png</a></td>
+</tr>
+<tr><td><b>2106</b></td>
+<td><a href="Plots/s_1_2106_all.png">Plots/s_1_2106_all.png</a></td>
+<td><a href="Plots/s_2_2106_all.png">Plots/s_2_2106_all.png</a></td>
+<td><a href="Plots/s_3_2106_all.png">Plots/s_3_2106_all.png</a></td>
+</tr>
+<tr><td><b>2107</b></td>
+<td><a href="Plots/s_1_2107_all.png"> <img height=84 width=84 src="Plots/s_1_2107_all.png"></a></td>
+<td><a href="Plots/s_2_2107_all.png"> <img height=84 width=84 src="Plots/s_2_2107_all.png"></a></td>
+<td><a href="Plots/s_3_2107_all.png"> <img height=84 width=84 src="Plots/s_3_2107_all.png"></a></td>
+</tr>
+<tr><td><b>2108</b></td>
+<td><a href="Plots/s_1_2108_all.png">Plots/s_1_2108_all.png</a></td>
+<td><a href="Plots/s_2_2108_all.png">Plots/s_2_2108_all.png</a></td>
+<td><a href="Plots/s_3_2108_all.png">Plots/s_3_2108_all.png</a></td>
+</tr>
+<tr><td><b>2109</b></td>
+<td><a href="Plots/s_1_2109_all.png">Plots/s_1_2109_all.png</a></td>
+<td><a href="Plots/s_2_2109_all.png">Plots/s_2_2109_all.png</a></td>
+<td><a href="Plots/s_3_2109_all.png">Plots/s_3_2109_all.png</a></td>
+</tr>
+<tr><td><b>2110</b></td>
+<td><a href="Plots/s_1_2110_all.png">Plots/s_1_2110_all.png</a></td>
+<td><a href="Plots/s_2_2110_all.png">Plots/s_2_2110_all.png</a></td>
+<td><a href="Plots/s_3_2110_all.png">Plots/s_3_2110_all.png</a></td>
+</tr>
+<tr><td><b>2111</b></td>
+<td><a href="Plots/s_1_2111_all.png">Plots/s_1_2111_all.png</a></td>
+<td><a href="Plots/s_2_2111_all.png">Plots/s_2_2111_all.png</a></td>
+<td><a href="Plots/s_3_2111_all.png">Plots/s_3_2111_all.png</a></td>
+</tr>
+<tr><td><b>2112</b></td>
+<td><a href="Plots/s_1_2112_all.png"> <img height=84 width=84 src="Plots/s_1_2112_all.png"></a></td>
+<td><a href="Plots/s_2_2112_all.png"> <img height=84 width=84 src="Plots/s_2_2112_all.png"></a></td>
+<td><a href="Plots/s_3_2112_all.png"> <img height=84 width=84 src="Plots/s_3_2112_all.png"></a></td>
+</tr>
+<tr><td><b>2113</b></td>
+<td><a href="Plots/s_1_2113_all.png">Plots/s_1_2113_all.png</a></td>
+<td><a href="Plots/s_2_2113_all.png">Plots/s_2_2113_all.png</a></td>
+<td><a href="Plots/s_3_2113_all.png">Plots/s_3_2113_all.png</a></td>
+</tr>
+<tr><td><b>2114</b></td>
+<td><a href="Plots/s_1_2114_all.png">Plots/s_1_2114_all.png</a></td>
+<td><a href="Plots/s_2_2114_all.png">Plots/s_2_2114_all.png</a></td>
+<td><a href="Plots/s_3_2114_all.png">Plots/s_3_2114_all.png</a></td>
+</tr>
+<tr><td><b>2115</b></td>
+<td><a href="Plots/s_1_2115_all.png">Plots/s_1_2115_all.png</a></td>
+<td><a href="Plots/s_2_2115_all.png">Plots/s_2_2115_all.png</a></td>
+<td><a href="Plots/s_3_2115_all.png">Plots/s_3_2115_all.png</a></td>
+</tr>
+<tr><td><b>2116</b></td>
+<td><a href="Plots/s_1_2116_all.png">Plots/s_1_2116_all.png</a></td>
+<td><a href="Plots/s_2_2116_all.png">Plots/s_2_2116_all.png</a></td>
+<td><a href="Plots/s_3_2116_all.png">Plots/s_3_2116_all.png</a></td>
+</tr>
+<tr><td><b>2201</b></td>
+<td><a href="Plots/s_1_2201_all.png"> <img height=84 width=84 src="Plots/s_1_2201_all.png"></a></td>
+<td><a href="Plots/s_2_2201_all.png"> <img height=84 width=84 src="Plots/s_2_2201_all.png"></a></td>
+<td><a href="Plots/s_3_2201_all.png"> <img height=84 width=84 src="Plots/s_3_2201_all.png"></a></td>
+</tr>
+<tr><td><b>2202</b></td>
+<td><a href="Plots/s_1_2202_all.png">Plots/s_1_2202_all.png</a></td>
+<td><a href="Plots/s_2_2202_all.png">Plots/s_2_2202_all.png</a></td>
+<td><a href="Plots/s_3_2202_all.png">Plots/s_3_2202_all.png</a></td>
+</tr>
+<tr><td><b>2203</b></td>
+<td><a href="Plots/s_1_2203_all.png">Plots/s_1_2203_all.png</a></td>
+<td><a href="Plots/s_2_2203_all.png">Plots/s_2_2203_all.png</a></td>
+<td><a href="Plots/s_3_2203_all.png">Plots/s_3_2203_all.png</a></td>
+</tr>
+<tr><td><b>2204</b></td>
+<td><a href="Plots/s_1_2204_all.png">Plots/s_1_2204_all.png</a></td>
+<td><a href="Plots/s_2_2204_all.png">Plots/s_2_2204_all.png</a></td>
+<td><a href="Plots/s_3_2204_all.png">Plots/s_3_2204_all.png</a></td>
+</tr>
+<tr><td><b>2205</b></td>
+<td><a href="Plots/s_1_2205_all.png">Plots/s_1_2205_all.png</a></td>
+<td><a href="Plots/s_2_2205_all.png">Plots/s_2_2205_all.png</a></td>
+<td><a href="Plots/s_3_2205_all.png">Plots/s_3_2205_all.png</a></td>
+</tr>
+<tr><td><b>2206</b></td>
+<td><a href="Plots/s_1_2206_all.png"> <img height=84 width=84 src="Plots/s_1_2206_all.png"></a></td>
+<td><a href="Plots/s_2_2206_all.png"> <img height=84 width=84 src="Plots/s_2_2206_all.png"></a></td>
+<td><a href="Plots/s_3_2206_all.png"> <img height=84 width=84 src="Plots/s_3_2206_all.png"></a></td>
+</tr>
+<tr><td><b>2207</b></td>
+<td><a href="Plots/s_1_2207_all.png">Plots/s_1_2207_all.png</a></td>
+<td><a href="Plots/s_2_2207_all.png">Plots/s_2_2207_all.png</a></td>
+<td><a href="Plots/s_3_2207_all.png">Plots/s_3_2207_all.png</a></td>
+</tr>
+<tr><td><b>2208</b></td>
+<td><a href="Plots/s_1_2208_all.png">Plots/s_1_2208_all.png</a></td>
+<td><a href="Plots/s_2_2208_all.png">Plots/s_2_2208_all.png</a></td>
+<td><a href="Plots/s_3_2208_all.png">Plots/s_3_2208_all.png</a></td>
+</tr>
+<tr><td><b>2209</b></td>
+<td><a href="Plots/s_1_2209_all.png">Plots/s_1_2209_all.png</a></td>
+<td><a href="Plots/s_2_2209_all.png">Plots/s_2_2209_all.png</a></td>
+<td><a href="Plots/s_3_2209_all.png">Plots/s_3_2209_all.png</a></td>
+</tr>
+<tr><td><b>2210</b></td>
+<td><a href="Plots/s_1_2210_all.png">Plots/s_1_2210_all.png</a></td>
+<td><a href="Plots/s_2_2210_all.png">Plots/s_2_2210_all.png</a></td>
+<td><a href="Plots/s_3_2210_all.png">Plots/s_3_2210_all.png</a></td>
+</tr>
+<tr><td><b>2211</b></td>
+<td><a href="Plots/s_1_2211_all.png"> <img height=84 width=84 src="Plots/s_1_2211_all.png"></a></td>
+<td><a href="Plots/s_2_2211_all.png"> <img height=84 width=84 src="Plots/s_2_2211_all.png"></a></td>
+<td><a href="Plots/s_3_2211_all.png"> <img height=84 width=84 src="Plots/s_3_2211_all.png"></a></td>
+</tr>
+<tr><td><b>2212</b></td>
+<td><a href="Plots/s_1_2212_all.png">Plots/s_1_2212_all.png</a></td>
+<td><a href="Plots/s_2_2212_all.png">Plots/s_2_2212_all.png</a></td>
+<td><a href="Plots/s_3_2212_all.png">Plots/s_3_2212_all.png</a></td>
+</tr>
+<tr><td><b>2213</b></td>
+<td><a href="Plots/s_1_2213_all.png">Plots/s_1_2213_all.png</a></td>
+<td><a href="Plots/s_2_2213_all.png">Plots/s_2_2213_all.png</a></td>
+<td><a href="Plots/s_3_2213_all.png">Plots/s_3_2213_all.png</a></td>
+</tr>
+<tr><td><b>2214</b></td>
+<td><a href="Plots/s_1_2214_all.png">Plots/s_1_2214_all.png</a></td>
+<td><a href="Plots/s_2_2214_all.png">Plots/s_2_2214_all.png</a></td>
+<td><a href="Plots/s_3_2214_all.png">Plots/s_3_2214_all.png</a></td>
+</tr>
+<tr><td><b>2215</b></td>
+<td><a href="Plots/s_1_2215_all.png">Plots/s_1_2215_all.png</a></td>
+<td><a href="Plots/s_2_2215_all.png">Plots/s_2_2215_all.png</a></td>
+<td><a href="Plots/s_3_2215_all.png">Plots/s_3_2215_all.png</a></td>
+</tr>
+<tr><td><b>2216</b></td>
+<td><a href="Plots/s_1_2216_all.png"> <img height=84 width=84 src="Plots/s_1_2216_all.png"></a></td>
+<td><a href="Plots/s_2_2216_all.png"> <img height=84 width=84 src="Plots/s_2_2216_all.png"></a></td>
+<td><a href="Plots/s_3_2216_all.png"> <img height=84 width=84 src="Plots/s_3_2216_all.png"></a></td>
+</tr>
+<tr><td><b>2301</b></td>
+<td><a href="Plots/s_1_2301_all.png">Plots/s_1_2301_all.png</a></td>
+<td><a href="Plots/s_2_2301_all.png">Plots/s_2_2301_all.png</a></td>
+<td><a href="Plots/s_3_2301_all.png">Plots/s_3_2301_all.png</a></td>
+</tr>
+<tr><td><b>2302</b></td>
+<td><a href="Plots/s_1_2302_all.png">Plots/s_1_2302_all.png</a></td>
+<td><a href="Plots/s_2_2302_all.png">Plots/s_2_2302_all.png</a></td>
+<td><a href="Plots/s_3_2302_all.png">Plots/s_3_2302_all.png</a></td>
+</tr>
+<tr><td><b>2303</b></td>
+<td><a href="Plots/s_1_2303_all.png">Plots/s_1_2303_all.png</a></td>
+<td><a href="Plots/s_2_2303_all.png">Plots/s_2_2303_all.png</a></td>
+<td><a href="Plots/s_3_2303_all.png">Plots/s_3_2303_all.png</a></td>
+</tr>
+<tr><td><b>2304</b></td>
+<td><a href="Plots/s_1_2304_all.png">Plots/s_1_2304_all.png</a></td>
+<td><a href="Plots/s_2_2304_all.png">Plots/s_2_2304_all.png</a></td>
+<td><a href="Plots/s_3_2304_all.png">Plots/s_3_2304_all.png</a></td>
+</tr>
+<tr><td><b>2305</b></td>
+<td><a href="Plots/s_1_2305_all.png"> <img height=84 width=84 src="Plots/s_1_2305_all.png"></a></td>
+<td><a href="Plots/s_2_2305_all.png"> <img height=84 width=84 src="Plots/s_2_2305_all.png"></a></td>
+<td><a href="Plots/s_3_2305_all.png"> <img height=84 width=84 src="Plots/s_3_2305_all.png"></a></td>
+</tr>
+<tr><td><b>2306</b></td>
+<td><a href="Plots/s_1_2306_all.png">Plots/s_1_2306_all.png</a></td>
+<td><a href="Plots/s_2_2306_all.png">Plots/s_2_2306_all.png</a></td>
+<td><a href="Plots/s_3_2306_all.png">Plots/s_3_2306_all.png</a></td>
+</tr>
+<tr><td><b>2307</b></td>
+<td><a href="Plots/s_1_2307_all.png">Plots/s_1_2307_all.png</a></td>
+<td><a href="Plots/s_2_2307_all.png">Plots/s_2_2307_all.png</a></td>
+<td><a href="Plots/s_3_2307_all.png">Plots/s_3_2307_all.png</a></td>
+</tr>
+<tr><td><b>2308</b></td>
+<td><a href="Plots/s_1_2308_all.png">Plots/s_1_2308_all.png</a></td>
+<td><a href="Plots/s_2_2308_all.png">Plots/s_2_2308_all.png</a></td>
+<td><a href="Plots/s_3_2308_all.png">Plots/s_3_2308_all.png</a></td>
+</tr>
+<tr><td><b>2309</b></td>
+<td><a href="Plots/s_1_2309_all.png">Plots/s_1_2309_all.png</a></td>
+<td><a href="Plots/s_2_2309_all.png">Plots/s_2_2309_all.png</a></td>
+<td><a href="Plots/s_3_2309_all.png">Plots/s_3_2309_all.png</a></td>
+</tr>
+<tr><td><b>2310</b></td>
+<td><a href="Plots/s_1_2310_all.png"> <img height=84 width=84 src="Plots/s_1_2310_all.png"></a></td>
+<td><a href="Plots/s_2_2310_all.png"> <img height=84 width=84 src="Plots/s_2_2310_all.png"></a></td>
+<td><a href="Plots/s_3_2310_all.png"> <img height=84 width=84 src="Plots/s_3_2310_all.png"></a></td>
+</tr>
+<tr><td><b>2311</b></td>
+<td><a href="Plots/s_1_2311_all.png">Plots/s_1_2311_all.png</a></td>
+<td><a href="Plots/s_2_2311_all.png">Plots/s_2_2311_all.png</a></td>
+<td><a href="Plots/s_3_2311_all.png">Plots/s_3_2311_all.png</a></td>
+</tr>
+<tr><td><b>2312</b></td>
+<td><a href="Plots/s_1_2312_all.png">Plots/s_1_2312_all.png</a></td>
+<td><a href="Plots/s_2_2312_all.png">Plots/s_2_2312_all.png</a></td>
+<td><a href="Plots/s_3_2312_all.png">Plots/s_3_2312_all.png</a></td>
+</tr>
+<tr><td><b>2313</b></td>
+<td><a href="Plots/s_1_2313_all.png">Plots/s_1_2313_all.png</a></td>
+<td><a href="Plots/s_2_2313_all.png">Plots/s_2_2313_all.png</a></td>
+<td><a href="Plots/s_3_2313_all.png">Plots/s_3_2313_all.png</a></td>
+</tr>
+<tr><td><b>2314</b></td>
+<td><a href="Plots/s_1_2314_all.png">Plots/s_1_2314_all.png</a></td>
+<td><a href="Plots/s_2_2314_all.png">Plots/s_2_2314_all.png</a></td>
+<td><a href="Plots/s_3_2314_all.png">Plots/s_3_2314_all.png</a></td>
+</tr>
+<tr><td><b>2315</b></td>
+<td><a href="Plots/s_1_2315_all.png"> <img height=84 width=84 src="Plots/s_1_2315_all.png"></a></td>
+<td><a href="Plots/s_2_2315_all.png"> <img height=84 width=84 src="Plots/s_2_2315_all.png"></a></td>
+<td><a href="Plots/s_3_2315_all.png"> <img height=84 width=84 src="Plots/s_3_2315_all.png"></a></td>
+</tr>
+<tr><td><b>2316</b></td>
+<td><a href="Plots/s_1_2316_all.png">Plots/s_1_2316_all.png</a></td>
+<td><a href="Plots/s_2_2316_all.png">Plots/s_2_2316_all.png</a></td>
+<td><a href="Plots/s_3_2316_all.png">Plots/s_3_2316_all.png</a></td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/htsworkflow/pipelines/test/testdata/1_12/basecall_stats/Demultiplex_Stats.htm b/htsworkflow/pipelines/test/testdata/1_12/basecall_stats/Demultiplex_Stats.htm
new file mode 100644 (file)
index 0000000..fc98d6e
--- /dev/null
@@ -0,0 +1,517 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html xmlns:casava="http://www.illumina.com/casava/alignment" xmlns:str="http://exslt.org/strings">
+<link rel="stylesheet" href="css/Reports.css" type="text/css">
+<body>
+<h1>Flowcell: D0PMDACXX</h1>
+<h2>Barcode lane statistics</h2>
+<div ID="ScrollableTableHeaderDiv"><table width="100%">
+<col width="4%">
+<col width="5%">
+<col width="19%">
+<col width="8%">
+<col width="7%">
+<col width="5%">
+<col width="12%">
+<col width="7%">
+<col width="4%">
+<col width="5%">
+<col width="4%">
+<col width="5%">
+<col width="6%">
+<col width="5%">
+<col>
+<tr>
+<th>Lane</th>
+<th>Sample ID</th>
+<th>Sample Ref</th>
+<th>Index</th>
+<th>Description</th>
+<th>Control</th>
+<th>Project</th>
+<th>Yield (Mbases)</th>
+<th>% PF</th>
+<th># Reads</th>
+<th>% of raw clusters per lane</th>
+<th>% Perfect Index Reads</th>
+<th>% One Mismatch Reads (Index)</th>
+<th>% of &gt;= Q30 Bases (PF)</th>
+<th>Mean Quality Score (PF)</th>
+</tr>
+</table></div>
+<div ID="ScrollableTableBodyDiv"><table width="100%">
+<col width="4%">
+<col width="5%">
+<col width="19%">
+<col width="8%">
+<col width="7%">
+<col width="5%">
+<col width="12%">
+<col width="7%">
+<col width="4%">
+<col width="5%">
+<col width="4%">
+<col width="5%">
+<col width="6%">
+<col width="5%">
+<col>
+<tr>
+<td>1</td>
+<td>12812</td>
+<td>Mus_musculus</td>
+<td>TAAGGCGA</td>
+<td>ES 10pg Nxt 701 503</td>
+<td>N</td>
+<td>12812</td>
+<td>1,682</td>
+<td>97.13</td>
+<td>17,320,100</td>
+<td>15.05</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.59</td>
+<td>36.23</td>
+</tr>
+<tr>
+<td>1</td>
+<td>12813</td>
+<td>Mus_musculus</td>
+<td>CGTACTAG</td>
+<td>ES 10pg Nxt 702 504</td>
+<td>N</td>
+<td>12813</td>
+<td>2,340</td>
+<td>97.66</td>
+<td>23,962,119</td>
+<td>20.82</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.53</td>
+<td>36.16</td>
+</tr>
+<tr>
+<td>1</td>
+<td>12814</td>
+<td>Mus_musculus</td>
+<td>AGGCAGAA</td>
+<td>ES 10pg Nxt 703 503</td>
+<td>N</td>
+<td>12814</td>
+<td>1,612</td>
+<td>97.48</td>
+<td>16,542,272</td>
+<td>14.37</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.76</td>
+<td>36.28</td>
+</tr>
+<tr>
+<td>1</td>
+<td>12815</td>
+<td>Mus_musculus</td>
+<td>TCCTGAGC</td>
+<td>ST 1-1 Nxt 704 504</td>
+<td>N</td>
+<td>12815</td>
+<td>1,984</td>
+<td>97.52</td>
+<td>20,342,058</td>
+<td>17.67</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>92.70</td>
+<td>35.86</td>
+</tr>
+<tr>
+<td>1</td>
+<td>12816</td>
+<td>Mus_musculus</td>
+<td>GGACTCCT</td>
+<td>ES 1-1 Nxt 705 503</td>
+<td>N</td>
+<td>12816</td>
+<td>1,358</td>
+<td>96.17</td>
+<td>14,116,368</td>
+<td>12.27</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>92.44</td>
+<td>35.87</td>
+</tr>
+<tr>
+<td>1</td>
+<td>12817</td>
+<td>Mus_musculus</td>
+<td>TAGGCATG</td>
+<td>ES 1-2 Nxt 706 504</td>
+<td>N</td>
+<td>12817</td>
+<td>1,820</td>
+<td>97.45</td>
+<td>18,681,381</td>
+<td>16.23</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.84</td>
+<td>36.31</td>
+</tr>
+<tr>
+<td>1</td>
+<td>lane1</td>
+<td>unknown</td>
+<td>Undetermined</td>
+<td>Clusters with unmatched barcodes for lane 1</td>
+<td>N</td>
+<td>Undetermined_indices</td>
+<td>272</td>
+<td>65.77</td>
+<td>4,129,350</td>
+<td>3.59</td>
+<td>0.00</td>
+<td>0.00</td>
+<td>89.42</td>
+<td>35.01</td>
+</tr>
+<tr>
+<td>2</td>
+<td>12754</td>
+<td>Mus_musculus</td>
+<td>AGGCAGAA</td>
+<td>Illumina index_N703_N502_Paired ends_LCMD250_Mm_CastaneusXC57Bl_Purkinje</td>
+<td>N</td>
+<td>12754</td>
+<td>1,585</td>
+<td>97.00</td>
+<td>16,340,810</td>
+<td>12.35</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.91</td>
+<td>36.35</td>
+</tr>
+<tr>
+<td>2</td>
+<td>12818</td>
+<td>Homo_sapiens</td>
+<td>CGTACTAG</td>
+<td>Illumina index_N702_N501_Paired ends_GM12878_200_singlecell</td>
+<td>N</td>
+<td>12818</td>
+<td>1,593</td>
+<td>92.36</td>
+<td>17,246,981</td>
+<td>13.03</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>87.55</td>
+<td>34.39</td>
+</tr>
+<tr>
+<td>2</td>
+<td>12820</td>
+<td>Homo_sapiens</td>
+<td>TAGGCATG</td>
+<td>Illumina index_N706_N503_Paired ends_GM12878_208_singlecell</td>
+<td>N</td>
+<td>12820</td>
+<td>2,209</td>
+<td>96.54</td>
+<td>22,878,845</td>
+<td>17.29</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.75</td>
+<td>36.26</td>
+</tr>
+<tr>
+<td>2</td>
+<td>12821</td>
+<td>Homo_sapiens</td>
+<td>TAAGGCGA</td>
+<td>Illumina index_N701_N501_Paired ends_GM12878_poolsplit_5_singlecell</td>
+<td>N</td>
+<td>12821</td>
+<td>1,935</td>
+<td>93.00</td>
+<td>20,809,512</td>
+<td>15.73</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>88.88</td>
+<td>34.63</td>
+</tr>
+<tr>
+<td>2</td>
+<td>12822</td>
+<td>Homo_sapiens</td>
+<td>TCCTGAGC</td>
+<td>Illumina index_N704_N503_Paired ends_GM12878_poolsplit_6_singlecell</td>
+<td>N</td>
+<td>12822</td>
+<td>2,985</td>
+<td>96.49</td>
+<td>30,936,670</td>
+<td>23.38</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>92.68</td>
+<td>35.77</td>
+</tr>
+<tr>
+<td>2</td>
+<td>lane2</td>
+<td>unknown</td>
+<td>Undetermined</td>
+<td>Clusters with unmatched barcodes for lane 2</td>
+<td>N</td>
+<td>Undetermined_indices</td>
+<td>479</td>
+<td>19.87</td>
+<td>24,108,302</td>
+<td>18.22</td>
+<td>0.00</td>
+<td>0.00</td>
+<td>81.00</td>
+<td>32.24</td>
+</tr>
+<tr>
+<td>3</td>
+<td>12744</td>
+<td>Mus_musculus</td>
+<td>TAAGGCGA</td>
+<td>Illumina index_N701_N504_Paired ends_LCMD240_Mm_CastaneusXC57Bl_Purkinje</td>
+<td>N</td>
+<td>12744</td>
+<td>1,875</td>
+<td>96.88</td>
+<td>19,349,616</td>
+<td>15.49</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>94.05</td>
+<td>36.49</td>
+</tr>
+<tr>
+<td>3</td>
+<td>12749</td>
+<td>Mus_musculus</td>
+<td>TCCTGAGC</td>
+<td>Illumina index_N704_N502_Paired ends_LCMD245_Mm_CastaneusXC57Bl_Purkinje</td>
+<td>N</td>
+<td>12749</td>
+<td>1,732</td>
+<td>96.89</td>
+<td>17,878,210</td>
+<td>14.31</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.98</td>
+<td>36.43</td>
+</tr>
+<tr>
+<td>3</td>
+<td>12819</td>
+<td>Homo_sapiens</td>
+<td>GGACTCCT</td>
+<td>Illumina index_N705_N502_Paired ends_GM12878_205_singlecell</td>
+<td>N</td>
+<td>12819</td>
+<td>1,977</td>
+<td>96.65</td>
+<td>20,460,064</td>
+<td>16.38</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>94.19</td>
+<td>36.48</td>
+</tr>
+<tr>
+<td>3</td>
+<td>12823</td>
+<td>Homo_sapiens</td>
+<td>CGTACTAG</td>
+<td>Illumina index_N702_N502_Paired ends_GM12878_poolsplit_7_singlecell</td>
+<td>N</td>
+<td>12823</td>
+<td>1,969</td>
+<td>96.67</td>
+<td>20,364,123</td>
+<td>16.30</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.29</td>
+<td>36.16</td>
+</tr>
+<tr>
+<td>3</td>
+<td>12824</td>
+<td>Homo_sapiens</td>
+<td>AGGCAGAA</td>
+<td>Illumina index_N703_N504_Paired ends_GM12878_poolsplit_8_singlecell</td>
+<td>N</td>
+<td>12824</td>
+<td>2,245</td>
+<td>96.94</td>
+<td>23,159,466</td>
+<td>18.54</td>
+<td>100.00</td>
+<td>0.00</td>
+<td>93.36</td>
+<td>36.14</td>
+</tr>
+<tr>
+<td>3</td>
+<td>lane3</td>
+<td>unknown</td>
+<td>Undetermined</td>
+<td>Clusters with unmatched barcodes for lane 3</td>
+<td>N</td>
+<td>Undetermined_indices</td>
+<td>1,912</td>
+<td>80.60</td>
+<td>23,724,897</td>
+<td>18.99</td>
+<td>0.00</td>
+<td>0.00</td>
+<td>82.49</td>
+<td>32.94</td>
+</tr>
+</table></div>
+<p></p>
+<h2>Sample information</h2>
+<div ID="ScrollableTableHeaderDiv"><table width="100%">
+<col width="10%">
+<col width="10%">
+<col width="7%">
+<col>
+<tr>
+<th>Sample<p></p>ID</th>
+<th>Recipe</th>
+<th>Operator</th>
+<th>Directory</th>
+</tr>
+</table></div>
+<div ID="ScrollableTableBodyDiv"><table width="100%">
+<col width="10%">
+<col width="10%">
+<col width="7%">
+<col>
+<tr>
+<td>12812</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12812/Sample_12812</td>
+</tr>
+<tr>
+<td>12813</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12813/Sample_12813</td>
+</tr>
+<tr>
+<td>12814</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12814/Sample_12814</td>
+</tr>
+<tr>
+<td>12815</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12815/Sample_12815</td>
+</tr>
+<tr>
+<td>12816</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12816/Sample_12816</td>
+</tr>
+<tr>
+<td>12817</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12817/Sample_12817</td>
+</tr>
+<tr>
+<td>lane1</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Undetermined_indices/Sample_lane1</td>
+</tr>
+<tr>
+<td>12754</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12754/Sample_12754</td>
+</tr>
+<tr>
+<td>12818</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12818/Sample_12818</td>
+</tr>
+<tr>
+<td>12820</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12820/Sample_12820</td>
+</tr>
+<tr>
+<td>12821</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12821/Sample_12821</td>
+</tr>
+<tr>
+<td>12822</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12822/Sample_12822</td>
+</tr>
+<tr>
+<td>lane2</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Undetermined_indices/Sample_lane2</td>
+</tr>
+<tr>
+<td>12744</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12744/Sample_12744</td>
+</tr>
+<tr>
+<td>12749</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12749/Sample_12749</td>
+</tr>
+<tr>
+<td>12819</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12819/Sample_12819</td>
+</tr>
+<tr>
+<td>12823</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12823/Sample_12823</td>
+</tr>
+<tr>
+<td>12824</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Project_12824/Sample_12824</td>
+</tr>
+<tr>
+<td>lane3</td>
+<td>SR_indexing</td>
+<td>Lorian</td>
+<td>/mmjggl/jenner/rotifer/120406_SN787_0114_AD0PMDACXX/Unaligned_8ntIndex/Undetermined_indices/Sample_lane3</td>
+</tr>
+</table></div>
+<p>CASAVA-1.8.2</p>
+</body>
+</html>
diff --git a/htsworkflow/pipelines/test/testdata/1_12/basecall_stats/IVC.htm b/htsworkflow/pipelines/test/testdata/1_12/basecall_stats/IVC.htm
new file mode 100644 (file)
index 0000000..3ffbe47
--- /dev/null
@@ -0,0 +1,9 @@
+<html><head>
+<!--RUN_TIME 2012-04-11 13:12:39-->
+<!--SOFTWARE_VERSION -->
+</head><body>
+<title>120406_SN787_0114_AD0PMDACXX IVC</title><h1 align="center">120406_SN787_0114_AD0PMDACXX Intensity Plots<br><br> </h1><table border="1" cellpadding="5"><tr><td><b>Lane</b></td><td><b>All</b></td><td><b>Called</b></td><td><b>% Base Calls</b></td><td><b>% All</b></td><td><b>% Called</b></td></tr>
+<tr><td><b>1</b></td><td><a href="Plots/s_1_all.png"> <img height=84 width=126 src="Plots/s_1_all.png"></a></td><td><a href="Plots/s_1_call.png"> <img height=84 width=126 src="Plots/s_1_call.png"></a></td><td><a href="Plots/s_1_percent_base.png"> <img height=84 width=126 src="Plots/s_1_percent_base.png"></a></td><td><a href="Plots/s_1_percent_all.png"> <img height=84 width=126 src="Plots/s_1_percent_all.png"></a></td><td><a href="Plots/s_1_percent_call.png"> <img height=84 width=126 src="Plots/s_1_percent_call.png"></a></td></tr>
+<tr><td><b>2</b></td><td><a href="Plots/s_2_all.png"> <img height=84 width=126 src="Plots/s_2_all.png"></a></td><td><a href="Plots/s_2_call.png"> <img height=84 width=126 src="Plots/s_2_call.png"></a></td><td><a href="Plots/s_2_percent_base.png"> <img height=84 width=126 src="Plots/s_2_percent_base.png"></a></td><td><a href="Plots/s_2_percent_all.png"> <img height=84 width=126 src="Plots/s_2_percent_all.png"></a></td><td><a href="Plots/s_2_percent_call.png"> <img height=84 width=126 src="Plots/s_2_percent_call.png"></a></td></tr>
+<tr><td><b>3</b></td><td><a href="Plots/s_3_all.png"> <img height=84 width=126 src="Plots/s_3_all.png"></a></td><td><a href="Plots/s_3_call.png"> <img height=84 width=126 src="Plots/s_3_call.png"></a></td><td><a href="Plots/s_3_percent_base.png"> <img height=84 width=126 src="Plots/s_3_percent_base.png"></a></td><td><a href="Plots/s_3_percent_all.png"> <img height=84 width=126 src="Plots/s_3_percent_all.png"></a></td><td><a href="Plots/s_3_percent_call.png"> <img height=84 width=126 src="Plots/s_3_percent_call.png"></a></td></tr>
+</table></body></html>