From 80b6654d29b9dcc493d184cdba287a655e64da61 Mon Sep 17 00:00:00 2001
From: kohleman <kohleman>
Date: Thu, 1 Dec 2016 10:25:47 +0000
Subject: [PATCH] - regular samples need to be unique - Pools not as these
 should have the lane information (same pool on different lanes)

SVN: 37423
---
 .../Jython/create_QGF_Invoices_simplified.py  | 49 +++++++++----------
 1 file changed, 23 insertions(+), 26 deletions(-)

diff --git a/deep_sequencing_unit/source/Jython/create_QGF_Invoices_simplified.py b/deep_sequencing_unit/source/Jython/create_QGF_Invoices_simplified.py
index e3083417947..1cca5dd3f75 100644
--- a/deep_sequencing_unit/source/Jython/create_QGF_Invoices_simplified.py
+++ b/deep_sequencing_unit/source/Jython/create_QGF_Invoices_simplified.py
@@ -219,9 +219,11 @@ def write_samples(configMap, myRows, wb, sheet, setFont, sample, sampleValues, w
 
     if write_lane:
         rowN.createCell(singleSampleColumns.getNextColumn()).setCellValue(str(sampleValues['LANE']))
-        rowN.getCell(singleSampleColumns.getCurrentColumn()).setCellStyle(setFont(wb, configMap, 10))
+        rowN.getCell(singleSampleColumns.getCurrentColumn()).setCellStyle(setFont(wb, configMap, 10))   
+        rowN.createCell(singleSampleColumns.getNextColumn()).setCellValue(configMap['sampleCodePrefix'] + sample.split("_")[1])
+    else:
+        rowN.createCell(singleSampleColumns.getNextColumn()).setCellValue(configMap['sampleCodePrefix'] + sample)
     
-    rowN.createCell(singleSampleColumns.getNextColumn()).setCellValue(configMap['sampleCodePrefix'] + sample)
     rowN.getCell(singleSampleColumns.getCurrentColumn()).setCellStyle(setFont(wb, configMap, 10))
     for code, label in working_column_headers_dict.iteritems():
         if (code == 'BIOLOGICAL_SAMPLE_ARRIVED'):
@@ -313,29 +315,24 @@ def writeExcel(myoptions, configMap, service, piName, laneDict, sampleDict, piDi
     logger.debug(listofLanes)
        
     for lane in listofLanes:
-        accumulated_pi_dict = merge_two_dicts(accumulated_pi_dict, sampleDict[lane])
-     
-    # sort the dictionary by keys and taking the key as an integer
-    for sample in sorted(accumulated_pi_dict.iterkeys(), key=int):        
-        sampleValues = accumulated_pi_dict[sample]
-        logger.debug(sampleValues['PRINCIPAL_INVESTIGATOR_NAME'])
-        logger.debug(piName)
-        logger.debug(sample)
-        # if there is a shared lane do not mix them 
-        if (sanitizeString(sampleValues['PRINCIPAL_INVESTIGATOR_NAME']) != sanitizeString(piName)):
-            continue
-        
-        # Find the Pools:
-        try:
-            if sampleValues['BARCODE'] != 'NOINDEX':
-                regular_samples[sample] = sampleValues
-            else:
-                pool_samples[sample] = sampleValues
-        except:
-            if int(sampleValues['NCBI_ORGANISM_TAXONOMY']) != 10847:
-                pool_samples[sample] = sampleValues
-            else:
-                regular_samples[sample] = sampleValues
+        for sample_code in sampleDict[lane]:
+            sampleValues = sampleDict[lane][sample_code]
+
+            # if there is a shared lane do not mix them 
+            if (sanitizeString(sampleValues['PRINCIPAL_INVESTIGATOR_NAME']) != sanitizeString(piName)):
+                continue
+            
+            # Find the Pools:
+            try:
+                if sampleValues['BARCODE'] != 'NOINDEX':
+                    regular_samples[sample_code] = sampleValues
+                else:
+                    pool_samples[lane + "_" + sample_code] = sampleValues
+            except:
+                if int(sampleValues['NCBI_ORGANISM_TAXONOMY']) != 10847:
+                    pool_samples[lane + "_" + sample_code] = sampleValues
+                else:
+                    regular_samples[sample_code] = sampleValues
 
     logger.debug("Found {0} samples.".format(len(regular_samples)))
     logger.debug("Found {0} pools.".format(len(pool_samples)))
@@ -351,7 +348,7 @@ def writeExcel(myoptions, configMap, service, piName, laneDict, sampleDict, piDi
     logger.debug("check_empty_columns_dict: {0}".format(check_empty_columns_dict))
     
     write_sample_column_header(configMap, working_column_headers_dict, myRows, wb, sheet)
-    for reg_sample in regular_samples:     
+    for reg_sample in sorted(regular_samples):     
         value = write_samples(configMap, myRows, wb, sheet, setFont, reg_sample, regular_samples[reg_sample], working_column_headers_dict, lane)
   
     write_intermediate_section(configMap, flowCellProperties, myRows, wb, sheet)   
-- 
GitLab