From c47988636dc4fbe2ed771b6f754baa77dae41749 Mon Sep 17 00:00:00 2001
From: mattminder <myfiles@Mattus-MacBook-Pro.local>
Date: Sun, 17 May 2020 11:15:11 +0200
Subject: [PATCH] Extract the disappeared cells as well

---
 GUI_main.py     | 14 +++++++-------
 misc/Extract.py |  2 ++
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/GUI_main.py b/GUI_main.py
index 90ae286..5726983 100644
--- a/GUI_main.py
+++ b/GUI_main.py
@@ -506,15 +506,15 @@ class App(QMainWindow):
         dlg = extr.Extract(image, mask, self.reader.channel_names)
         dlg.exec()
         if dlg.exit_code == 1: # Fluorescence
-            self.ExtractFluo(dlg.cells, dlg.outfile, dlg.file_list)
+            self.ExtractFluo(dlg.cells, dlg.desel_cells, dlg.outfile, dlg.file_list)
         elif dlg.exit_code == 2: # Mask
-            self.ExtractMask(dlg.cells, dlg.outfile)
+            self.ExtractMask(dlg.desel_cells, dlg.outfile)
             
         self.Enable(self.button_extractfluorescence)
         self.ClearStatusBar()
 
 
-    def ExtractMask(self, cell_list, outfile):
+    def ExtractMask(self, desel_cells, outfile):
         """Extract the mask to the specified tiff file. Only take cells 
         specified by the cell_list"""
         
@@ -530,15 +530,14 @@ class App(QMainWindow):
                 continue
             
             mask = self.reader.LoadMask(time_index, self.FOVindex)
-            all_cells = np.unique(mask)
-            for cell in set(all_cells)-set(cell_list):
+            for cell in desel_cells:
                 mask[mask==cell] = 0
             mask_list.append(mask)
             
         imageio.mimwrite(outfile, np.array(mask_list, dtype=np.uint16))
                         
 
-    def ExtractFluo(self, cells_to_use, csv_filename, channel_list):
+    def ExtractFluo(self, sel_cells, desel_cells, csv_filename, channel_list):
         """This is the function that takes as argument the filepath to the xls
         file and writes in the file.
         It iterates over the different channels (or the sheets of the file,
@@ -601,7 +600,7 @@ class App(QMainWindow):
                     if val == 0:
                         continue
                     # disregard cells not in cell_list
-                    if not (val in cells_to_use):
+                    if (val in desel_cells):
                         continue
                     
                     # Calculate stats
@@ -609,6 +608,7 @@ class App(QMainWindow):
                     stats['Time'] = time_index
                     stats['Channel'] = channel
                     stats['Cell'] = val
+                    stats['Disappeared'] = not (val in sel_cells)
                     cell_list.append(stats)
         
         # Use Pandas to write csv
diff --git a/misc/Extract.py b/misc/Extract.py
index 66c48b7..dedcbf0 100644
--- a/misc/Extract.py
+++ b/misc/Extract.py
@@ -139,6 +139,7 @@ class Extract(QDialog):
         
         self.exit_code = 1
         self.cells = self.pc.sellist
+        self.desel_cells = set(np.unique(self.pc.mask)) - set(self.cells)
         self.close()
 
     def do_cancel(self):
@@ -157,6 +158,7 @@ class Extract(QDialog):
 
         self.exit_code = 2
         self.cells = self.pc.sellist
+        self.desel_cells = set(np.unique(self.pc.mask)) - set(self.cells)
         self.close()
                 
     def do_sel_mult(self):
-- 
GitLab