From 17d3ece01fd3d424bfd8877e6a37358c6cabc832 Mon Sep 17 00:00:00 2001 From: florian-huber Date: Thu, 6 Oct 2022 22:19:48 +0200 Subject: [PATCH] naming updates to work with matchms --- sparsestack/StackedSparseArray.py | 12 ++++++++---- sparsestack/utils.py | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sparsestack/StackedSparseArray.py b/sparsestack/StackedSparseArray.py index 4e8034b..a09e909 100644 --- a/sparsestack/StackedSparseArray.py +++ b/sparsestack/StackedSparseArray.py @@ -387,7 +387,7 @@ def to_array(self, name=None): return array array = np.zeros((self.__n_row, self.__n_col), dtype=self.data.dtype) - array[self.row, self.col] = self.data + array[self.row, self.col] = self.data.reshape(-1) return array def to_coo(self, name): @@ -396,11 +396,15 @@ def to_coo(self, name): def update_structed_array_names(input_array: np.ndarray, name: str): - if len(input_array.dtype) > 1: # if structured array + if input_array.dtype.names is None: # no structured array + return np.array(input_array, dtype=[(name, input_array.dtype)]) + if (name == "") or name is None: + dtype_new = np.dtype({'names': [f"{x}" for x in input_array.dtype.names], + 'formats': [x[0] for x in input_array.dtype.fields.values()]}) + else: dtype_new = np.dtype({'names': [f"{name}_{x}" for x in input_array.dtype.names], 'formats': [x[0] for x in input_array.dtype.fields.values()]}) - return input_array.astype(dtype_new) - return np.array(input_array, dtype=[(name, input_array.dtype)]) + return input_array.astype(dtype_new) def _unpack_index(index): diff --git a/sparsestack/utils.py b/sparsestack/utils.py index 7ad8984..0ac8640 100644 --- a/sparsestack/utils.py +++ b/sparsestack/utils.py @@ -71,6 +71,8 @@ def set_and_fill_new_array(data1, data2, name, new_dtype = [(dname, d[0]) for dname, d in data1.dtype.fields.items()] if data2.dtype.names is None: new_dtype += [(name, data2.dtype)] + elif (name == "") or name is None: + new_dtype += [(f"{dname}", d[0]) for dname, d in data2.dtype.fields.items()] else: new_dtype += [(f"{name}_{dname}", d[0]) for dname, d in data2.dtype.fields.items()] data_join = np.zeros(shape=(length), dtype=new_dtype)