From 1ff2a5a527917a77c1ff42db4acc63d5101d4be9 Mon Sep 17 00:00:00 2001
From: Harry Carey <harry.carey95@gmail.com>
Date: Wed, 13 Mar 2024 12:01:40 +0100
Subject: [PATCH] fixed several issues

---
 PyNutil/__init__.py                 |  2 +-
 PyNutil/coordinate_extraction.py    | 29 ++++++++++++++++++-----------
 PyNutil/counting_and_load.py        |  3 ---
 PyNutil/load_workflow.py            |  3 ---
 PyNutil/main.py                     | 19 ++++++++++---------
 PyNutil/metadata/__init__.py        |  2 +-
 PyNutil/metadata/metadata_loader.py |  1 -
 PyNutil/propagation.py              |  3 ++-
 PyNutil/read_and_write.py           |  1 -
 PyNutil/visualign_deformations.py   |  1 -
 10 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/PyNutil/__init__.py b/PyNutil/__init__.py
index d06a307..5fa21b9 100644
--- a/PyNutil/__init__.py
+++ b/PyNutil/__init__.py
@@ -1 +1 @@
-from .main import PyNutil
+from .main import PyNutil
\ No newline at end of file
diff --git a/PyNutil/coordinate_extraction.py b/PyNutil/coordinate_extraction.py
index 157bdc6..3b9eddb 100644
--- a/PyNutil/coordinate_extraction.py
+++ b/PyNutil/coordinate_extraction.py
@@ -1,11 +1,9 @@
 import numpy as np
 import pandas as pd
-import json
 from .read_and_write import load_visualign_json
-from .counting_and_load import label_points, flat_to_dataframe
+from .counting_and_load import flat_to_dataframe
 from .visualign_deformations import triangulate, transform_vec
 from glob import glob
-from tqdm import tqdm
 import cv2
 from skimage import measure
 import threading
@@ -210,12 +208,23 @@ def folder_to_atlas_space(
     [t.join() for t in threads]
     # Flatten points_list
 
-    points_len = [len(points) if points is not None else 0 for points in points_list]
+    points_len = [
+        len(points) if None not in points else 0 for points in points_list
+        ]
     centroids_len = [
-        len(centroids) if centroids is not None else 0 for centroids in centroids_list
-    ]
-    points = np.concatenate(points_list)
-    centroids = np.concatenate(centroids_list)
+             len(centroids) if None not in centroids else 0 for centroids in centroids_list
+         ]
+    points_list = [points for points in points_list if None not in points]
+    centroids_list = [centroids for centroids in centroids_list if None not in centroids]
+    if len(points_list) == 0:
+        points = np.array([])
+    else:
+        points = np.concatenate(points_list)
+    if len(centroids_list) == 0:
+        centroids = np.array([])
+    else:
+        centroids = np.concatenate(centroids_list)
+
 
     return (
         np.array(points),
@@ -346,9 +355,7 @@ def segmentation_to_atlas_space(
         else:
             centroids = np.array([])
 
-    print(
-        f"Finished and points len is: {len(points)} and centroids len is: {len(centroids)}"
-    )
+
     points_list[index] = np.array(points)
     centroids_list[index] = np.array(centroids)
     region_areas_list[index] = region_areas
diff --git a/PyNutil/counting_and_load.py b/PyNutil/counting_and_load.py
index 9da941f..760e057 100644
--- a/PyNutil/counting_and_load.py
+++ b/PyNutil/counting_and_load.py
@@ -1,9 +1,6 @@
 import numpy as np
 import pandas as pd
 import struct
-import matplotlib.pyplot as plt
-import os
-import nrrd
 import cv2
 from .generate_target_slice import generate_target_slice
 
diff --git a/PyNutil/load_workflow.py b/PyNutil/load_workflow.py
index 9675196..72ba0c3 100644
--- a/PyNutil/load_workflow.py
+++ b/PyNutil/load_workflow.py
@@ -1,10 +1,7 @@
 """Create workflow for calculating load based on atlas maps and segmentations"""
 
-import struct
-import matplotlib.pyplot as plt
 import pandas as pd
 import cv2
-import numpy as np
 
 # from read_and_write import flat_to_array, label_to_array
 from counting_and_load import flat_to_dataframe
diff --git a/PyNutil/main.py b/PyNutil/main.py
index 44ac2d4..a64249a 100644
--- a/PyNutil/main.py
+++ b/PyNutil/main.py
@@ -161,7 +161,7 @@ class PyNutil:
             raise ValueError(
                 f"method {method} not recognised, valid methods are: per_pixel, per_object, or all"
             )
-        print("extracting coordinates")
+        print("extracting coordinates with method:", method)
         (
             pixel_points,
             centroids,
@@ -188,6 +188,7 @@ class PyNutil:
         self.centroids_len = centroids_len
         self.segmentation_filenames = segmentation_filenames
         self.region_areas_list = region_areas_list
+        self.method = method
 
     def quantify_coordinates(self):
         """Quantifies the pixel coordinates by region.
@@ -205,11 +206,11 @@ class PyNutil:
         print("quantifying coordinates")
         labeled_points_centroids = None
         labeled_points = None
-        if hasattr(self, "centroids"):
+        if self.method == "per_object" or self.method == "all":
             labeled_points_centroids = label_points(
                 self.centroids, self.atlas_volume, scale_factor=1
             )
-        if hasattr(self, "pixel_points"):
+        if self.method == "per_pixel" or self.method == "all":
             labeled_points = label_points(
                 self.pixel_points, self.atlas_volume, scale_factor=1
             )
@@ -224,9 +225,9 @@ class PyNutil:
         for pl, cl, ra in zip(
             self.points_len, self.centroids_len, self.region_areas_list
         ):
-            if hasattr(self, "centroids"):
+            if self.method == "per_object" or self.method == "all":
                 current_centroids = labeled_points_centroids[prev_cl : prev_cl + cl]
-            if hasattr(self, "pixel_points"):
+            if self.method == "per_pixel" or self.method == "all":
                 current_points = labeled_points[prev_pl : prev_pl + pl]
             current_df = pixel_count_per_region(
                 current_points, current_centroids, self.atlas_labels
@@ -341,14 +342,14 @@ class PyNutil:
                 na_rep="",
                 index=False,
             )
-            if hasattr(self, "pixel_points"):
+            if self.method == "per_pixel" or self.method == "all":
                 write_points_to_meshview(
                     self.pixel_points[prev_pl : pl + prev_pl],
                     self.labeled_points[prev_pl : pl + prev_pl],
                     f"{output_folder}/per_section_meshview/{split_fn}_pixels.json",
                     self.atlas_labels,
                 )
-            if hasattr(self, "centroids"):
+            if self.method == "per_object" or self.method == "all":
                 write_points_to_meshview(
                     self.centroids[prev_cl : cl + prev_cl],
                     self.labeled_points_centroids[prev_cl : cl + prev_cl],
@@ -358,14 +359,14 @@ class PyNutil:
             prev_cl += cl
             prev_pl += pl
 
-        if hasattr(self, "pixel_points"):
+        if self.method == "per_pixel" or self.method == "all":
             write_points_to_meshview(
                 self.pixel_points,
                 self.labeled_points,
                 f"{output_folder}/whole_series_meshview/pixels_meshview.json",
                 self.atlas_labels,
             )
-        if hasattr(self, "centroids"):
+        if self.method == "per_object" or self.method == "all":
             write_points_to_meshview(
                 self.centroids,
                 self.labeled_points_centroids,
diff --git a/PyNutil/metadata/__init__.py b/PyNutil/metadata/__init__.py
index b6e690f..b974282 100644
--- a/PyNutil/metadata/__init__.py
+++ b/PyNutil/metadata/__init__.py
@@ -1 +1 @@
-from . import *
+from . import *
\ No newline at end of file
diff --git a/PyNutil/metadata/metadata_loader.py b/PyNutil/metadata/metadata_loader.py
index ae3361f..2763d55 100644
--- a/PyNutil/metadata/metadata_loader.py
+++ b/PyNutil/metadata/metadata_loader.py
@@ -1,6 +1,5 @@
 import json
 from pathlib import Path
-import os
 
 
 def load_config() -> dict:
diff --git a/PyNutil/propagation.py b/PyNutil/propagation.py
index 1f3b643..d0ae3a6 100644
--- a/PyNutil/propagation.py
+++ b/PyNutil/propagation.py
@@ -2,6 +2,7 @@ import math, re
 
 
 def propagate(arr):
+    arr = arr.copy()
     for slice in arr:
         if "nr" not in slice:
             slice["nr"] = int(re.search(r"_s(\d+)", slice["filename"]).group(1))
@@ -12,7 +13,7 @@ def propagate(arr):
     count = 0
     for slice in arr:
         if "anchoring" in slice:
-            a = slice["anchoring"].copy()
+            a = slice["anchoring"]
             for i in range(3):
                 a[i] += (a[i + 3] + a[i + 6]) / 2
             a.extend(
diff --git a/PyNutil/read_and_write.py b/PyNutil/read_and_write.py
index 8be7f08..160e302 100644
--- a/PyNutil/read_and_write.py
+++ b/PyNutil/read_and_write.py
@@ -2,7 +2,6 @@ import json
 import numpy as np
 import struct
 import pandas as pd
-import matplotlib.pyplot as plt
 import os
 import nrrd
 import re
diff --git a/PyNutil/visualign_deformations.py b/PyNutil/visualign_deformations.py
index 2caef65..75f9fa2 100644
--- a/PyNutil/visualign_deformations.py
+++ b/PyNutil/visualign_deformations.py
@@ -1,6 +1,5 @@
 """This code was written by Gergely Csucs and Rembrandt Bakker"""
 import numpy as np
-from scipy.spatial import Delaunay
 
 
 def triangulate(w, h, markers):
-- 
GitLab