Source code for braindynamics_starprotocol.network.sort

import numpy as np
import operator

[docs] def sort_distribution(data:np.ndarray)->tuple: """Function that performs extensive sort (sorting rows based on column values) of 2D data. Args: data (np.ndarray): Input 2D array of shape: <nr_elements>, <nr_bins>. Returns: tuple: Two arrays of sorted indices of rows from first-to-last and last-to first columns. """ data_len, bin_nr = data.shape act_data = data[0:data_len:] indexed_data = np.zeros((data_len, bin_nr + 1)) # store indices in last column for i in range(len(act_data)): indexed_data[i] = np.append(act_data[i], i) # sort based on values sorted_data = np.array(sorted(indexed_data, key=operator.itemgetter(*range(bin_nr)), reverse=True)) # sorting first-to-last column inv_sorted_data = np.array(sorted(indexed_data, key=operator.itemgetter(*range(bin_nr-1,-1,-1)), reverse=True)) # sorting last-to-first column # return sorted indices only return sorted_data[:, bin_nr].astype(int), inv_sorted_data[:, bin_nr].astype(int)